user.vue 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840
  1. <template>
  2. <div class="userPage flex-col">
  3. <div class="userPageBox">
  4. <s-header :name="sys ? sys.title : $t('user.personalCenter')" :noback="true" :isFixed="false"></s-header>
  5. <div class="userBaseBox">
  6. <div class="baseRow flex-row justify-between">
  7. <div class="group2 flex-col"></div>
  8. <span class="baseText">{{ $t("user.essentialInformation") }}</span>
  9. </div>
  10. <div class="userMessage flex-row justify-between">
  11. <div class="userId">
  12. <p class="userText">{{ accountDetail.managerId }}</p>
  13. <p class="userText">{{ $t("user.systemId") }}</p>
  14. </div>
  15. <div class="userLine"></div>
  16. <div class="userId">
  17. <p class="userText">{{ accountDetail.username }}</p>
  18. <p class="userText">{{ $t("user.myAccount") }}</p>
  19. </div>
  20. <div class="userLine"></div>
  21. <div class="userId">
  22. <p class="userText">{{ accountDetail.name }}</p>
  23. <p class="userText">{{ $t("user.myName") }}</p>
  24. </div>
  25. </div>
  26. <div class="userInfoBox">
  27. <!-- 地区 -->
  28. <div v-if="isInland && user.type != '0'">
  29. <div v-if="!areaShow" class="userInfo l-flex-between">
  30. <span class="userInfoLeft">{{ $t("user.region") }}: </span>
  31. <div class="cust_vantBorder">
  32. <div class="filedInpPad">
  33. <van-field @click-input="fieldValueInpClk" readonly clearable v-model="fieldValue"
  34. :placeholder="$t('user.regionPlace')">
  35. <template #right-icon>
  36. <div class="l-flex-RC">
  37. <van-icon v-if="fieldValue" @click="
  38. fieldValue = '';
  39. accountDetail.areaId = '';
  40. " class="o-mr-6" name="clear" />
  41. <van-icon @click="fieldValueInpClk" name="arrow-down" />
  42. </div>
  43. </template>
  44. </van-field>
  45. </div>
  46. </div>
  47. <van-icon name="edit" class="editIcon" @click="editClk(4)" />
  48. </div>
  49. <div v-else class="userInfo l-flex-between">
  50. <span class="userInfoLeft">{{ $t("user.region") }}: </span>
  51. <span>{{ fieldValue }}</span>
  52. <van-icon name="edit" class="editIcon" @click="editClk(4)" />
  53. </div>
  54. </div>
  55. <!-- 邮箱 -->
  56. <div v-if="user.type != '0'">
  57. <div v-if="!mailboxShow" class="userInfo l-flex-between">
  58. <span class="userInfoLeft">{{ $t("user.mailbox") }}: </span>
  59. <div>
  60. <van-field class="relationClass" v-model="cofficentForm.mailBox" :placeholder="$t('user.mailboxPlace')">
  61. <template #button>
  62. <van-button type="primary" @click="mailboxChg(cofficentForm.mailBox, 2)">{{ $t("user.confirmLog") }}
  63. </van-button>
  64. </template>
  65. </van-field>
  66. </div>
  67. <van-icon name="edit" class="editIcon" @click="editClk(2)" />
  68. </div>
  69. <div v-else class="userInfo l-flex-between">
  70. <span class="userInfoLeft">{{ $t("user.mailbox") }}: </span>
  71. <span>{{ accountDetail.email }}</span>
  72. <van-icon name="edit" class="editIcon" @click="editClk(2)" />
  73. </div>
  74. </div>
  75. <!-- 上级账号 -->
  76. <div v-if="isInland && user.type == '2'">
  77. <div v-if="haveRelation" class="userInfo l-flex-between">
  78. <span class="userInfoLeft">{{ $t("user.superiorAccount") }}: </span>
  79. <span>{{ relationAdminName }}</span>
  80. </div>
  81. </div>
  82. <!-- 手机号码 -->
  83. <div v-if="user.type != '0'">
  84. <div v-if="!phoneNumberShow" class="userInfo l-flex-between">
  85. <span class="userInfoLeft">{{ $t("user.phoneNumber") }}: </span>
  86. <div>
  87. <van-field class="relationClass" v-model="cofficentForm.phone"
  88. :placeholder="$t('user.phoneNumberPlace')">
  89. <template #button>
  90. <van-button type="primary" @click="mailboxChg(cofficentForm.phone, 3)">{{ $t("user.confirmLog") }}
  91. </van-button>
  92. </template>
  93. </van-field>
  94. </div>
  95. <van-icon name="edit" class="editIcon" @click="editClk(3)" />
  96. </div>
  97. <div v-else class="userInfo l-flex-between">
  98. <span class="userInfoLeft">{{ $t("user.phoneNumber") }}: </span>
  99. <span>{{ accountDetail.phone }}</span>
  100. <van-icon name="edit" class="editIcon" @click="editClk(3)" />
  101. </div>
  102. </div>
  103. <!-- 关联上级 -->
  104. <!-- <div v-if="isInland && user.type == '2'">
  105. <div v-if="!relationType" class="userInfo l-flex-between">
  106. <span class="userInfoLeft">{{ $t("user.associateParent") }}: </span>
  107. <div >
  108. <van-field class="relationClass" v-model="cofficentForm.associateParent"
  109. :placeholder="$t('user.associateParentPlace')">
  110. <template #button>
  111. <van-button type="primary" @click="mailboxChg(cofficentForm.associateParent, 1)">{{
  112. $t("user.confirmLog") }}
  113. </van-button>
  114. </template>
  115. </van-field>
  116. </div>
  117. <van-icon name="edit" class="editIcon" @click="editClk(1)" />
  118. </div>
  119. <div v-else class="userInfo l-flex-between">
  120. <span class="userInfoLeft">{{ $t("user.associateParent") }}: </span>
  121. <span>{{ relationAdminName }}</span>
  122. <van-icon name="edit" class="editIcon" @click="editClk(1)" />
  123. </div>
  124. </div> -->
  125. <!-- 自定义货币符号 -->
  126. <div v-if="!symbolShow" class="userInfo l-flex-between">
  127. <span class="userInfoLeft">{{ $t("user.currencySymbol") }}: </span>
  128. <div>
  129. <van-field class="relationClass" v-model="cofficentForm.currencySymbol"
  130. :placeholder="$t('user.currencySymbolPlace')">
  131. <template #button>
  132. <van-button type="primary" @click="mailboxChg(cofficentForm.currencySymbol, 5)">{{
  133. $t("user.confirmLog") }}
  134. </van-button>
  135. </template>
  136. </van-field>
  137. </div>
  138. <van-icon name="edit" class="editIcon" @click="editClk(5)" />
  139. </div>
  140. <div v-else class="userInfo l-flex-between">
  141. <span class="userInfoLeft">{{ $t("user.currencySymbol") }}: </span>
  142. <span>{{ accountDetail.currencySymbol }}</span>
  143. <van-icon name="edit" class="editIcon" @click="editClk(5)" />
  144. </div>
  145. <div v-if="user.type == '0'">
  146. <div v-if="!diyPasswordShow" class="userInfo l-flex-between">
  147. <span class="userInfoLeft">{{ $t("user.diyPassword") }}: </span>
  148. <div>
  149. <van-field class="relationClass" v-model="diyPassword" :placeholder="$t('user.diyPasswordPlace')">
  150. <template #button>
  151. <van-button type="primary" @click="mailboxChg(diyPassword, 6)">{{
  152. $t("user.confirmLog") }}
  153. </van-button>
  154. </template>
  155. </van-field>
  156. </div>
  157. <van-icon name="edit" class="editIcon" @click="editClk(6)" />
  158. </div>
  159. <div v-else class="userInfo l-flex-between">
  160. <span class="userInfoLeft">{{ $t("user.diyPassword") }}: </span>
  161. <!-- <span>{{ accountDetail.currencySymbol }}</span> -->
  162. <van-icon name="edit" class="editIcon" @click="editClk(6)" />
  163. </div>
  164. </div>
  165. <!-- 切换支付平台 -->
  166. <div v-if="chaSzPayShow" class="userInfo l-flex-between">
  167. <span class="userInfoLeft">{{ $t("user.szPayType") }}: </span>
  168. <div class="cust_vantBorder o-pl-15">
  169. <van-switch :model-value="sunzeePay" active-color="#0090fa" inactive-color="#30c25c" size="21px"
  170. @update:model-value="changeSunzeePay" />
  171. </div>
  172. <span class="o-pl-50">{{ $t("user.currentChoose") }}: {{ sunzeePay ? "汇付" : "汇聚" }}</span>
  173. </div>
  174. <div v-if="chaScPayShow" class="userInfo l-flex-between">
  175. <span class="userInfoLeft">{{ $t("user.scPayType") }}: </span>
  176. <div class="cust_vantBorder o-pl-15">
  177. <van-switch :model-value="sevencloudPay" active-color="#0090fa" inactive-color="#30c25c" size="21px"
  178. @update:model-value="changeSevenCloudPay" />
  179. </div>
  180. <span class="o-pl-50">{{ $t("user.currentChoose") }}: {{ sevencloudPay ? "汇付" : "汇聚" }}</span>
  181. </div>
  182. </div>
  183. </div>
  184. <div class="lineBox"></div>
  185. <div class="commonOperBox">
  186. <!-- 常用操作 -->
  187. <div class="baseRow flex-row justify-between">
  188. <div class="group2 flex-col"></div>
  189. <span class="baseText">{{ $t("user.commonOperations") }}</span>
  190. </div>
  191. <div class="operListBox">
  192. <!-- 任务消息 -->
  193. <div v-if="roleCheck()" class="taskListRow flex-col" @click="pushPageList('/taskMessage')">
  194. <div class="taskIcon taskMessageIcon"></div>
  195. <div class="taskRight">
  196. <div class="taskTitle">{{ $t("user.taskMessage") }}</div>
  197. </div>
  198. </div>
  199. <!-- 提现帐号 -->
  200. <div v-if="isInland && user.type != '0'" class="taskListRow flex-col" @click="pushPageList('/settlement')">
  201. <div class="taskIcon joinPayMchIcon"></div>
  202. <div class="taskRight">
  203. <div class="taskTitle">{{ $t("user.settlementAccount") }}</div>
  204. </div>
  205. </div>
  206. <!-- 提现帐号 -->
  207. <!-- <div v-if="isInland" class="taskListRow flex-col" @click="pushPageList('/joinpayMch')">
  208. <div class="taskIcon joinPayMchIcon"></div>
  209. <div class="taskRight">
  210. <div class="taskTitle">{{ $t("user.withdrawalAccountNo") }}</div>
  211. </div>
  212. </div> -->
  213. <!-- Airwallex 钱包 -->
  214. <!-- <div v-if="isAbroad && user.companyType != '1'" class="taskListRow flex-col"
  215. @click="pushPageList('/airwallex')">
  216. <div class="taskIcon airwallexIcon"></div>
  217. <div class="taskRight">
  218. <div class="taskTitle">{{ $t("user.airwallex") }}</div>
  219. </div>
  220. </div> -->
  221. <!-- 公告编辑 -->
  222. <div v-if="user.type == '0'" class="taskListRow flex-col" @click="pushPageList('/announcement')">
  223. <div class="taskIcon announcementIcon"></div>
  224. <div class="taskRight">
  225. <div class="taskTitle">
  226. {{ $t("user.announcement") }}
  227. </div>
  228. </div>
  229. </div>
  230. <!-- <div class="taskListRow flex-col" @click="pushPageList('/shandeMch')">
  231. <div class="taskIcon shandeMchIcon"></div>
  232. <div class="taskRight">
  233. <div class="taskTitle">
  234. {{ $t("user.standbyWithdrawalAccountNo") }}
  235. </div>
  236. </div>
  237. </div>-->
  238. <!-- 绑定微信 -->
  239. <div v-if="isInWeChat" class="taskListRow flex-col" @click="pushPageList('/bindWechat')">
  240. <!-- <div class="taskListRow flex-col" @click="pushPageList('/bindWechat')">-->
  241. <div class="taskIcon bindWechatIcon"></div>
  242. <div class="taskRight">
  243. <div class="taskTitle">
  244. {{ $t("user.bindWechat") }}
  245. </div>
  246. </div>
  247. </div>
  248. <!-- 定位修改 -->
  249. <div v-if="user.type <= '1'" class="taskListRow flex-col" @click="pushPageList('/modifyLoc')">
  250. <!-- <div class="taskListRow flex-col" @click="pushPageList('/modifyLoc')"> -->
  251. <div class="taskIcon modifyLocIcon"></div>
  252. <div class="taskRight">
  253. <div class="taskTitle">
  254. {{ $t("user.modifyLoc") }}
  255. </div>
  256. </div>
  257. </div>
  258. <!-- 数据同步 -->
  259. <div v-if="user.type == '0'" class="taskListRow flex-col" @click="pushPageList('/syncOldData')">
  260. <!-- <div class="taskListRow flex-col" @click="pushPageList('/syncOldData')"> -->
  261. <div class="taskIcon syncOldDataIcon"></div>
  262. <div class="taskRight">
  263. <div class="taskTitle">
  264. {{ $t("user.syncOldData") }}
  265. </div>
  266. </div>
  267. </div>
  268. <!-- 修改密码 -->
  269. <div class="taskListRow flex-col" @click="pushPageList('/changepassword')">
  270. <div class="taskIcon changePasswordIcon"></div>
  271. <div class="taskRight">
  272. <div class="taskTitle">{{ $t("user.changePassword") }}</div>
  273. </div>
  274. </div>
  275. <!-- 意见反馈 -->
  276. <div v-if="user.type > 1" class="taskListRow flex-col" @click="pushPageList('/feedback')">
  277. <!-- <div v-if="user.id == 31 || user.id == 34" class="taskListRow flex-col" @click="pushPageList('/feedback')"> -->
  278. <div class="taskIcon feedbackIcon"></div>
  279. <div class="taskRight">
  280. <div class="taskTitle">{{ $t("user.feedback") }}</div>
  281. </div>
  282. </div>
  283. <!-- 自动充值 -->
  284. <!-- <div v-if="isInland" class="taskListRow flex-col" @click="operUnipay()">
  285. <div class="taskIcon selfPayIcon"></div>
  286. <div class="taskRight">
  287. <div class="taskTitle">{{ $t("user.selfRecharging") }}</div>
  288. </div>
  289. </div> -->
  290. <div class="taskListRow flex-col" @click="onperExitSys()">
  291. <div class="taskIcon loginOutIcon"></div>
  292. <div class="taskRight">
  293. <div class="taskTitle">{{ $t("user.logOut") }}</div>
  294. </div>
  295. </div>
  296. </div>
  297. </div>
  298. </div>
  299. <!-- <nav-bar></nav-bar> -->
  300. <!-- 退出登录弹窗 -->
  301. <kDialog :dialogTitle="$t('user.logOutTips')" :cancelBtnTxt="$t('user.cancelLog')"
  302. :confirmBtnTxt="$t('user.confirmLog')" ref="kDialogRef" :dialogContent="$t('user.logOutContent')"
  303. @confirmclk="confirmClk">
  304. </kDialog>
  305. <!-- 地区弹窗 -->
  306. <kCascader @getareaname="getAreaName" :selectId="accountDetail.areaId" @areapopfinish="areaPopFinish"
  307. ref="kCascaderRef"></kCascader>
  308. </div>
  309. </template>
  310. <script>
  311. // 导入地区弹窗
  312. import kCascader from "@/components/commom/kCascader/index.vue";
  313. // 导入接口
  314. import { getAdmin } from "@/service/merchantManage";
  315. import { updateAdmin } from "@/service/merchantManage";
  316. // 引入弹窗
  317. import kDialog from "@/components/commom/kDialog/index.vue";
  318. import { onMounted, reactive, ref } from "vue";
  319. import sHeader from "@/components/SimpleHeader";
  320. // import navBar from "@/components/NavBar";
  321. import {
  322. getLoginUser,
  323. $M_EmailAvailable,
  324. $M_PhoneTest,
  325. } from "@/common/js/utils";
  326. import { useRouter } from "vue-router";
  327. import { tAdminGetRelation, updatePayPlatform, updateDIYPassword } from "@/service/user";
  328. // import { tAdminGetRelation, tAdminSetRelationAdmin, updatePayPlatform } from "@/service/user";
  329. import { showFailToast, showToast, showSuccessToast, showConfirmDialog } from 'vant';
  330. import { useI18n } from "vue-i18n";
  331. import { styleUrl } from "../common/js/utils";
  332. export default {
  333. components: { sHeader, kDialog, kCascader },
  334. setup() {
  335. // 引入语言
  336. const { t } = useI18n();
  337. // 账户信息
  338. const accountDetail = ref({});
  339. // 控制地区显示隐藏
  340. const areaShow = ref(true);
  341. // 控制手机显示隐藏
  342. const phoneNumberShow = ref(true);
  343. // 控制邮箱显示隐藏
  344. const mailboxShow = ref(true);
  345. // 控制货币显示隐藏 货币符号,默认“¥”
  346. const symbolShow = ref(true);
  347. // 控制DIY使用密码显示隐藏
  348. const diyPasswordShow = ref(true);
  349. // 控制切换支付平台按钮显示隐藏
  350. const chaSzPayShow = ref(false);
  351. const chaScPayShow = ref(false);
  352. const diyPassword = ref("");
  353. const sunzeePay = ref(false);
  354. const sevencloudPay = ref(false);
  355. const user = getLoginUser();
  356. const router = useRouter();
  357. const relationAdminName = ref("");
  358. const relationType = ref(true);
  359. const sys = ref(null);
  360. // 修改的个人信息
  361. const cofficentForm = reactive({
  362. associateParent: relationAdminName.value,
  363. mailBox: accountDetail.value.email,
  364. phone: accountDetail.value.phone,
  365. area: "",
  366. currencySymbol: accountDetail.value.currencySymbol,
  367. });
  368. //
  369. const params = reactive({
  370. id: '', // 用户ID
  371. payPlatform: '', //支付平台
  372. });
  373. // 点击修改图标
  374. const editClk = (idx) => {
  375. switch (idx) {
  376. case 1:
  377. cofficentForm.associateParent = relationAdminName.value;
  378. relationType.value = !relationType.value;
  379. mailboxShow.value = true;
  380. phoneNumberShow.value = true;
  381. areaShow.value = true;
  382. symbolShow.value = true;
  383. diyPasswordShow.value = true;
  384. break;
  385. case 2:
  386. cofficentForm.mailBox = accountDetail.value.email;
  387. relationType.value = true;
  388. mailboxShow.value = !mailboxShow.value;
  389. phoneNumberShow.value = true;
  390. areaShow.value = true;
  391. symbolShow.value = true;
  392. diyPasswordShow.value = true;
  393. break;
  394. case 3:
  395. cofficentForm.phone = accountDetail.value.phone;
  396. relationType.value = true;
  397. mailboxShow.value = true;
  398. phoneNumberShow.value = !phoneNumberShow.value;
  399. areaShow.value = true;
  400. symbolShow.value = true;
  401. diyPasswordShow.value = true;
  402. break;
  403. case 4:
  404. cofficentForm.area = accountDetail.value.area;
  405. relationType.value = true;
  406. mailboxShow.value = true;
  407. phoneNumberShow.value = true;
  408. areaShow.value = !areaShow.value;
  409. symbolShow.value = true;
  410. diyPasswordShow.value = true;
  411. break;
  412. case 5:
  413. cofficentForm.currencySymbol = accountDetail.value.currencySymbol;
  414. relationType.value = true;
  415. mailboxShow.value = true;
  416. phoneNumberShow.value = true;
  417. areaShow.value = true;
  418. symbolShow.value = !symbolShow.value;
  419. diyPasswordShow.value = true;
  420. break;
  421. case 6:
  422. cofficentForm.currencySymbol = accountDetail.value.currencySymbol;
  423. relationType.value = true;
  424. mailboxShow.value = true;
  425. phoneNumberShow.value = true;
  426. areaShow.value = true;
  427. symbolShow.value = true;
  428. diyPasswordShow.value = !diyPasswordShow.value;
  429. break;
  430. }
  431. };
  432. // 点击邮箱的确定按钮
  433. const mailboxChg = async (e, idx) => {
  434. switch (idx) {
  435. // case 1:
  436. // if (!e) {
  437. // showToast(t("user.associateParentPlace"));
  438. // } else {
  439. // const { data } = await tAdminSetRelationAdmin({
  440. // adminId: user.id,
  441. // username: e,
  442. // });
  443. // relationType.value = true;
  444. // if (data.code === "00000") {
  445. // showToast(data.message);
  446. // setTimeout(() => {
  447. // gettAdminGetRelation();
  448. // }, 500);
  449. // }
  450. // }
  451. // break;
  452. case 2:
  453. if (!e) {
  454. showToast(t("user.mailboxPlace"));
  455. } else if (!$M_EmailAvailable(e)) {
  456. showToast(t("user.corrEmailPlace"));
  457. } else {
  458. const params = {
  459. id: user.id,
  460. email: e,
  461. };
  462. const { data } = await updateAdmin(params);
  463. mailboxShow.value = true;
  464. if (data.code === "00000") {
  465. showToast(data.message);
  466. setTimeout(() => {
  467. getAcccountDetail();
  468. }, 500);
  469. }
  470. }
  471. break;
  472. case 3:
  473. if (!e) {
  474. showToast(t("user.phoneNumberPlace"));
  475. } else if (!$M_PhoneTest(e)) {
  476. showToast(t("user.corrPhonePlace"));
  477. } else {
  478. const params = {
  479. id: user.id,
  480. phone: e,
  481. };
  482. const { data } = await updateAdmin(params);
  483. phoneNumberShow.value = true;
  484. if (data.code === "00000") {
  485. showToast(data.message);
  486. setTimeout(() => {
  487. getAcccountDetail();
  488. }, 500);
  489. }
  490. }
  491. break;
  492. case 5:
  493. if (!e) {
  494. showToast(t("user.currencySymbolPlace"));
  495. } else {
  496. const params = {
  497. id: user.id,
  498. currencySymbol: e,
  499. };
  500. const { data } = await updateAdmin(params);
  501. symbolShow.value = true;
  502. if (data.code === "00000") {
  503. showToast(data.message);
  504. // 更新本地存储缓存中的currencySymbol的值
  505. user.currencySymbol = e; // 将新的currencySymbol的值赋值给user
  506. localStorage.setItem("loginUser", JSON.stringify(user));
  507. setTimeout(() => {
  508. getAcccountDetail();
  509. }, 1000);
  510. }
  511. }
  512. break;
  513. case 6:
  514. if (!e) {
  515. showToast(t("user.diyPasswordPlace"));
  516. } else {
  517. const params = {
  518. diyPassword: e,
  519. };
  520. const { data } = await updateDIYPassword(params);
  521. diyPasswordShow.value = true;
  522. if (data.code === "00000") {
  523. showToast(t("user.changeSuccess"));
  524. setTimeout(() => {
  525. getAcccountDetail();
  526. }, 1000);
  527. }
  528. }
  529. break;
  530. }
  531. };
  532. // 获取账户详情
  533. const getAcccountDetail = () => {
  534. getAdmin({ id: user.id }).then((res) => {
  535. accountDetail.value = res.data.data;
  536. // 查询地址回显
  537. kCascaderRef.value.init(accountDetail.value.areaId);
  538. });
  539. };
  540. // 获取申泽支付平台
  541. const getSunzeeDetail = () => {
  542. getAdmin({ id: 2738 }).then((res) => {
  543. // sunzeePay.value = res.data.data.payPlatform;
  544. if (res.data.data.payPlatform == '1') {
  545. sunzeePay.value = true;
  546. }
  547. console.log("sunzeePay", sunzeePay.value)
  548. });
  549. };
  550. // 获取七云支付平台
  551. const getSevenCloudDetail = () => {
  552. getAdmin({ id: 2739 }).then((res) => {
  553. // sevencloudPay.value = res.data.data.payPlatform;
  554. if (res.data.data.payPlatform == '1') {
  555. sevencloudPay.value = true;
  556. }
  557. console.log("sevencloudPay", sevencloudPay.value)
  558. });
  559. };
  560. // 退出登录弹窗
  561. const kDialogRef = ref(null);
  562. // 点击右侧按钮
  563. const confirmClk = () => {
  564. // 获取缓存的语言
  565. const savedCredentials = localStorage.getItem('savedCredentials');
  566. const curLang = localStorage.getItem("curLang");
  567. // 清空缓存
  568. localStorage.clear();
  569. localStorage.setItem("curLang", curLang);
  570. if (savedCredentials) {
  571. localStorage.setItem('savedCredentials', savedCredentials);
  572. }
  573. if (sys.value) {
  574. setTimeout(() => {
  575. router.push({
  576. path: "login",
  577. query: { relation_admin_id: sys.value.relationAdminId },
  578. });
  579. }, 200);
  580. } else {
  581. setTimeout(() => {
  582. router.push({ path: "login" });
  583. }, 200);
  584. }
  585. };
  586. //切换申泽支付平台
  587. const changeSunzeePay = (value) => {
  588. showConfirmDialog({
  589. title: t('user.tips'),
  590. message: t('user.changeTips'),
  591. }).then(() => {
  592. // checked.value = newValue;
  593. console.log(value);
  594. params.id = 2738;
  595. if (value) {
  596. params.payPlatform = '1';
  597. } else {
  598. params.payPlatform = '0';
  599. }
  600. const { data } = updatePayPlatform(params);
  601. if (data.code) {
  602. showSuccessToast(t('user.changeSuccess'));
  603. sunzeePay.value = value;
  604. } else {
  605. showFailToast(data.message);
  606. }
  607. }).catch((error) => {
  608. console.error(error);
  609. })
  610. }
  611. //切换七云支付平台
  612. const changeSevenCloudPay = (value) => {
  613. showConfirmDialog({
  614. title: t('user.tips'),
  615. message: t('user.changeTips'),
  616. }).then(() => {
  617. // checked.value = newValue;
  618. console.log(value);
  619. params.id = 2739;
  620. if (value) {
  621. params.payPlatform = '1';
  622. } else {
  623. params.payPlatform = '0';
  624. }
  625. const { data } = updatePayPlatform(params);
  626. if (data.code) {
  627. showSuccessToast(t('user.changeSuccess'));
  628. sunzeePay.value = value;
  629. } else {
  630. showFailToast(data.message);
  631. }
  632. }).catch((error) => {
  633. console.error(error);
  634. })
  635. }
  636. // 初始化页面获取列表
  637. onMounted(async () => {
  638. // 加载样式
  639. styleUrl('user');
  640. if (localStorage.getItem("loginSys")) {
  641. const loginSysString = localStorage.getItem("loginSys");
  642. sys.value = JSON.parse(loginSysString);
  643. }
  644. // 获取关联上级
  645. gettAdminGetRelation();
  646. // 获取账户
  647. getAcccountDetail();
  648. if (user.id == 1) {
  649. chaSzPayShow.value = true;
  650. chaScPayShow.value = true;
  651. getSunzeeDetail();
  652. getSevenCloudDetail();
  653. }
  654. // else if (user.id == 2738) {
  655. // chaSzPayShow.value = true;
  656. // getSunzeeDetail();
  657. // } else if (user.id == 2739) {
  658. // chaScPayShow.value = true;
  659. // getSevenCloudDetail();
  660. // }
  661. });
  662. const gettAdminGetRelation = async () => {
  663. const { data } = await tAdminGetRelation({
  664. relationAdminId: user.relationAdminId,
  665. });
  666. if (typeof data === "string") {
  667. relationAdminName.value = data;
  668. }
  669. };
  670. const operUnipay = () => {
  671. router.push({ path: "uniPay" });
  672. };
  673. const onperExitSys = () => {
  674. kDialogRef.value.openDialog();
  675. };
  676. const pushPageList = (url) => {
  677. router.push({ path: url });
  678. };
  679. const roleCheck = () => {
  680. if (user.isAdmined) {
  681. return true;
  682. } else {
  683. const menuList = user.menuCodeList.filter((item) => item === "M6");
  684. return menuList.length > 0;
  685. }
  686. };
  687. // 地区弹窗
  688. const fieldValue = ref("");
  689. const kCascaderRef = ref(null);
  690. // 点击地区输入框
  691. const fieldValueInpClk = () => {
  692. kCascaderRef.value.openPop();
  693. };
  694. // 选择地区完成
  695. const areaPopFinish = async (e) => {
  696. console.log("e", e);
  697. fieldValue.value = e.selectName;
  698. accountDetail.value.areaId = e.selectId;
  699. const params = {
  700. id: user.id,
  701. areaId: e.selectId,
  702. };
  703. const { data } = await updateAdmin(params);
  704. areaShow.value = true;
  705. if (data.code === "00000") {
  706. showToast(data.message);
  707. setTimeout(() => {
  708. getAcccountDetail();
  709. }, 500);
  710. }
  711. };
  712. const isInWeChat = ref(false);
  713. const checkInWechat = () => {
  714. const ua = window.navigator.userAgent.toLowerCase();
  715. // 如果是在微信中打开
  716. if (/MicroMessenger/i.test(ua)) {
  717. isInWeChat.value = true;
  718. }
  719. };
  720. // 是否内陆或海外
  721. const isInland = ref(true);
  722. const isAbroad = ref(false);
  723. // 是否有上级账号
  724. const haveRelation = ref(false);
  725. const haveRelationCheck = () => {
  726. if (user.relationAdminId !== null) {
  727. haveRelation.value = true;
  728. }
  729. }
  730. // const checkIsAbroad = async () => {
  731. // try {
  732. // const { data } = await getIfForeign(user.id);
  733. // console.log("isAbroad >>> ", data);
  734. // if (data.data === '1') {
  735. // // TODO: 这里先把isAbroad设置为fasle,等开发完成再改成true;
  736. // isAbroad.value = false;
  737. // isInland.value = false;
  738. // }
  739. // } catch (error) {
  740. // console.error(error);
  741. // }
  742. // };
  743. const checkIsAbroad = async () => {
  744. try {
  745. const userInfo = localStorage.getItem("loginUser");
  746. const userIfForeign = JSON.parse(userInfo);
  747. // console.log("用户的海内外信息" + userIfForeign.ifForeign);
  748. // console.log("看下user是什么***" + user.menuCodeList);
  749. if (userIfForeign.ifForeign === '1') {
  750. isAbroad.value = true;
  751. isInland.value = false;
  752. }
  753. } catch (error) {
  754. console.error(error);
  755. }
  756. };
  757. onMounted(() => {
  758. checkInWechat();
  759. checkIsAbroad();
  760. haveRelationCheck();
  761. })
  762. // 获取回显的值
  763. const getAreaName = (e) => {
  764. fieldValue.value = e;
  765. };
  766. return {
  767. user,
  768. operUnipay,
  769. onperExitSys,
  770. relationAdminName,
  771. relationType,
  772. pushPageList,
  773. roleCheck,
  774. sys,
  775. kDialogRef,
  776. confirmClk,
  777. mailboxShow,
  778. mailboxChg,
  779. phoneNumberShow,
  780. editClk,
  781. cofficentForm,
  782. params,
  783. areaShow,
  784. accountDetail,
  785. fieldValue,
  786. kCascaderRef,
  787. fieldValueInpClk,
  788. areaPopFinish,
  789. isInWeChat,
  790. getAreaName,
  791. isAbroad,
  792. haveRelation,
  793. checkIsAbroad,
  794. isInland,
  795. symbolShow,
  796. chaSzPayShow,
  797. chaScPayShow,
  798. diyPasswordShow,
  799. diyPassword,
  800. sunzeePay,
  801. sevencloudPay,
  802. changeSunzeePay,
  803. changeSevenCloudPay,
  804. };
  805. }
  806. };
  807. </script>
  808. <style lang="less" scoped>
  809. @import "../common/style/mixin";
  810. @import "../styles/user/index";
  811. </style>