Jelajahi Sumber

feat: 关联上级

Ritchie 1 tahun lalu
induk
melakukan
427f61edbf

TEMPAT SAMPAH
src/assets/accountOperation/relationAdmin.png


+ 8 - 1
src/assets/language/en.json

@@ -807,6 +807,7 @@
     "withdrawalData": "Withdrawal data",
     "region": "region",
     "accountNumber": "account number",
+    "relationAdmin": "Associate superior",
     "subscriptionAdministrator": "Subscription administrator",
     "fullNameLabel": "full name",
     "fullNamePlaceholder": "Please enter your name",
@@ -972,6 +973,7 @@
     "orderRefund": "Order refund",
     "systemOffline": "System offline",
     "labelMan": "Label management",
+    "relationAdmin": "Associate superior",
     "apkMan": "Apk management",
     "merchantMan": "Merchant management",
     "accountOperation": "Account operation",
@@ -1367,6 +1369,10 @@
       "machinePlace": "Please select the machine list"
     }
   },
+  "relationAdmin": {
+    "title": "关联上级"
+  },
+  
   "kSelectPop": {
     "cancel": "cancel",
     "confirm": "confirm",
@@ -1435,7 +1441,8 @@
     "withdrawalAccountNo": "Standby withdrawal account No",
     "standbyWithdrawalAccountNo": "Standby withdrawal account No",
     "merchantManagement": "Merchant management",
-    "labelMan": "Label management"
+    "labelMan": "Label management",
+    "relationAdmin":  "Associate superior"
   },
   "announcement": {
     "header": "Editorial notice",

+ 7 - 1
src/assets/language/zh.json

@@ -811,6 +811,7 @@
     "withdrawalData": "提现资料",
     "region": "地区",
     "accountNumber": "账号",
+    "relationAdmin": "关联上级",
     "subscriptionAdministrator": "开通管理员",
     "fullNameLabel": "姓名",
     "fullNamePlaceholder": "请输入姓名",
@@ -982,6 +983,7 @@
     "orderRefund": "订单退款",
     "systemOffline": "系统脱机",
     "labelMan": "标签管理",
+    "relationAdmin": "关联上级",
     "apkMan": "apk管理",
     "merchantMan": "商户管理",
     "accountOperation": "账户操作",
@@ -1386,6 +1388,9 @@
       "machinePlace": "请选择机器列表"
     }
   },
+  "relationAdmin": {
+    "title": "关联上级"
+  },
   "kSelectPop": {
     "cancel": "取消",
     "confirm": "确定",
@@ -1454,7 +1459,8 @@
     "withdrawalAccountNo": "提现账号",
     "standbyWithdrawalAccountNo": "备用提现账号",
     "merchantManagement": "商户管理",
-    "labelMan": "标签管理"
+    "labelMan": "标签管理",
+    "relationAdmin": "关联上级"
   },
   "wechat": {
     "headerName": "绑定微信"

+ 1 - 0
src/common/js/utils.js

@@ -34,6 +34,7 @@ export const $M_Menus = {
   // "M18":t("role.labelMan"),//标签管理
   "M19": t("role.apkMan"),//apk管理
   // "M20":t("role.merchantMan"),//商户管理
+  // "M21": t("role.relationAdmin"),//关联上级
 }
 // 判断值是否是数字 true:数值型的,false:非数值型
 export const $M_IsNaN = (num) => {

+ 7 - 0
src/router/index.js

@@ -434,6 +434,13 @@ const router = createRouter({
       component: () => import("@/views/labelMan/index"),
       meta: { index: 1 },
     },
+    // 关联上级
+    {
+      path: "/relationAdmin",
+      name: "relationAdmin",
+      component: () => import("@/views/relationAdmin/index"),
+      meta: { index: 1 },
+    },
     // 标签管理-新增
     {
       path: "/labelManAdd",

+ 4 - 0
src/service/merchantManage/index.js

@@ -18,6 +18,10 @@ export function getAdminList(params) {
 export function getAdmin(params) {
   return axios.get(`/SZWL-SERVER/tAdmin/getAdmin?${stringToUrl(params)}`);
 }
+// 获取获取上级账号
+export function getRelation(params) {
+  return axios.get(`/SZWL-SERVER/tAdmin/getRelation?${stringToUrl(params)}`);
+}
 // 获取账户基本详情-提现信息
 export function getAdminMch(params) {
   return axios.get(`/SZWL-SERVER/tJoinpayMch/getMch?${stringToUrl(params)}`);

+ 10 - 0
src/service/relationAdmin/index.js

@@ -0,0 +1,10 @@
+import axios from "@/utils/axios";
+// import { stringToUrl } from '@/common/js/utils';
+
+export function setRelationAdmin(username, managerId, relationUsername) {
+  return axios.post(`/SZWL-SERVER/tAdmin/setRelationAdminId`, {
+    username,
+    managerId,
+    relationUsername,
+  });
+}

+ 12 - 0
src/styles/accountOperation/index.less

@@ -70,6 +70,18 @@
           right: 0.2rem;
           top: 0.4rem;
         }
+
+        &.relationAdminIcon::after {
+          content: '';
+          position: absolute;
+          background: #fff url('../../assets/accountOperation/relationAdmin.png') top center no-repeat;
+          background-size: 100%;
+          width: 0.53rem;
+          height: 0.6rem;
+          right: 0.2rem;
+          top: 0.4rem;
+        }
+
       }
 
       .taskRight {

+ 13 - 0
src/views/accountOperation/index.vue

@@ -3,12 +3,14 @@
   <div class="taskMessagePage flex-col">
     <s-header :name="$t('accountOperation.title')" :noback="false"></s-header>
     <div class="taskMessageBox flex-col">
+      <!-- 账户权限 -->
       <div class="taskListRow flex-col" @click="pushPageList('/accountPer')">
         <div class="taskIcon deviceIcon"></div>
         <div class="taskRight">
           <div class="taskTitle">{{ $t('accountOperation.accountAuthority') }}</div>
         </div>
       </div>
+      <!-- 分销设置 -->
       <div v-if="user.ifForeign != '1'" class="taskListRow flex-col" @click="pushPageList('/distributionSet')">
         <div class="taskIcon retailIcon"></div>
         <div class="taskRight">
@@ -27,18 +29,29 @@
 	      <div class="taskTitle">{{$t('accountOperation.standbyWithdrawalAccountNo')}}</div>
 	    </div>
 	  </div> -->
+    <!-- 关联账户 -->
+    <div v-if="user.type <= '1'" class="taskListRow flex-col" @click="pushPageList('/relationAdmin')">
+        <div class="taskIcon relationAdminIcon"></div>
+        <div class="taskRight">
+          <div class="taskTitle">{{ $t('accountOperation.relationAdmin') }}</div>
+        </div>
+      </div>
+    <!-- 商户管理 -->
       <div class="taskListRow flex-col" @click="pushPageList('/merchantManage')">
         <div class="taskIcon merIcon"></div>
         <div class="taskRight">
           <div class="taskTitle">{{ $t('accountOperation.merchantManagement') }}</div>
         </div>
       </div>
+      <!-- 标签管理 -->
       <div class="taskListRow flex-col" @click="pushPageList('/labelMan')">
         <div class="taskIcon labelIcon"></div>
         <div class="taskRight">
           <div class="taskTitle">{{ $t('accountOperation.labelMan') }}</div>
         </div>
       </div>
+
+
     </div>
   </div>
 </template>

+ 2 - 2
src/views/fife/index.vue

@@ -127,8 +127,8 @@ export default {
                 country: country.value,
                 location: location.value
             }
-            console.log("username >>> ", username.value);
-            console.log("locationCheck", locationCheck);
+            // console.log("username >>> ", username.value);
+            // console.log("locationCheck >>> ", locationCheck);
             const { data } = await inputLocInfo(locationCheck);
 
             if (data.code === "00000") {

+ 3 - 0
src/views/home/index.vue

@@ -566,6 +566,9 @@ export default {
         case "M20":
           router.push({ path: "/merchantManage" });
           break;
+        // case "M21":
+        //   router.push({ path: "/relationAdmin" });
+        //   break;
       }
     };
 

+ 24 - 4
src/views/merchantManage/set.vue

@@ -13,8 +13,7 @@
                 $t('merchantManage.withdrawalData') }}</span>
             </div>
             <!-- <div class="section2 flex-col"></div> -->
-            <img class="img1" referrerpolicy="no-referrer"
-              src="../../assets/line.png" />
+            <img class="img1" referrerpolicy="no-referrer" src="../../assets/line.png" />
           </div>
           <div v-if="tabType === '0'">
             <!-- <div class="wrap2 l-flex-RC">
@@ -32,6 +31,13 @@
                   <span> {{ adminObj.username }}</span>
                 </div>
               </div>
+              <div class="van-cell van-field">
+                <div class="van-cell__title van-field__label"><span>{{ $t('merchantManage.relationAdmin') }}</span>
+                </div>
+                <div class="van-field__value o-pt-8" style="text-align: left;">
+                  <span> {{ relationObj.username }}</span>
+                </div>
+              </div>
               <van-field v-model="adminObj.name" name="password" :label="$t('merchantManage.fullNameLabel')"
                 :placeholder="$t('merchantManage.fullNamePlaceholder')"
                 :rules="[{ required: true, message: $t('merchantManage.fullNamePlaceholder') }]" />
@@ -135,7 +141,7 @@
 <script>
 import { onMounted, ref } from "vue";
 import sHeader from "@/components/SimpleHeader";
-import { getAdmin, getAdminMch, updateAdmin, getHuifuMch } from "@/service/merchantManage";
+import { getAdmin, getRelation, getAdminMch, updateAdmin, getHuifuMch } from "@/service/merchantManage";
 import { showFailToast, showSuccessToast } from "vant";
 import { useRoute } from "vue-router";
 import { getLoginUser, styleUrl } from "@/common/js/utils";
@@ -152,6 +158,7 @@ export default {
     const route = useRoute();
     const merchantId = ref('');
     const adminObj = ref({});
+    const relationObj = ref({});
     const adminMchObj = ref({});
     const huifuMchObj = ref({});
     const ifForeign = ref('0');
@@ -162,7 +169,7 @@ export default {
       styleUrl('merchantManage');
       merchantId.value = route.query.merchantId;
       getAdminFun();
-      console.log(ifForeign.value);
+      getRelationFun();
       getAdminMchFun();
       getHuifuMchFun();
 
@@ -184,6 +191,18 @@ export default {
       // else { showFailToast(data.message); }
       // console.log('getAdminFun', data);
     };
+    const getRelationFun = async () => {
+      console.log('adminId', merchantId.value);
+      const { data } = await getRelation({ adminId: merchantId.value });
+      console.log("relationObj.value", relationObj.value);
+      console.log("relationObj.value.username", relationObj.value.username);
+      if (data.code === "00000") {
+        if (data.data != null) {
+          relationObj.value = data.data;
+          relationObj.value.username = data.data.username;
+        }
+      }
+    }
     const getAdminMchFun = async () => {
       const { data } = await getAdminMch({ id: merchantId.value });
       if (data.code === "00000") {
@@ -264,6 +283,7 @@ export default {
       tabType,
       adminType,
       adminObj,
+      relationObj,
       adminMchObj,
       huifuMchObj,
       onSubmit,

+ 62 - 0
src/views/relationAdmin/index.vue

@@ -0,0 +1,62 @@
+<template>
+    <div class="relationAdmin" style="background-color:#ebedf0">
+        <s-header :name="'关联上级'" :noback="false"></s-header>
+        <br>
+        <van-form @submit="onSubmit">
+            <van-cell-group inset>
+                <!-- 需要填 username 和 上级 relationUsername,如果上级 relationUsername 为空,就是无上级 -->
+                <van-field v-model="username" name="账号名称" label="账号名称" placeholder="账号名称" required
+                    :rules="[{ required: true, message: '请填写账号名' }]" />
+                <van-field v-model="managerId" name="系统id" label="系统id" placeholder="系统id" required
+                    :rules="[{ required: true, message: '请填写系统id' }]" />
+                <van-field v-model="relationUsername" name="关联账号名称" label="关联账号名称" placeholder="关联上级账号名称" />
+            </van-cell-group>
+            <br>
+            <div style="margin: 16px; display: flex; justify-content: center; align-items: center;">
+                <van-button round class="custom-button" type="primary" size="small" native-type="submit" block>
+                    提交
+                </van-button>
+            </div>
+        </van-form>
+    </div>
+</template>
+<script>
+import sHeader from "../../components/SimpleHeader";
+import { showFailToast, showToast } from "vant";
+import { setRelationAdmin } from "../../service/relationAdmin/index";
+import { ref } from "vue";
+
+
+export default {
+    components: { sHeader },
+    setup: function () {
+        const usernameCheck = ref({});
+        const username = ref('');
+        const managerId = ref('');
+        const relationUsername = ref('');
+        const onSubmit = async () => {
+            // 提交表单
+            const { data } = await setRelationAdmin(username.value, managerId.value, relationUsername.value);
+            
+            if (data.code === "00000") {
+                showToast(data.data);
+            } else {
+                showFailToast(data.message);
+            }
+        }
+
+        return {
+            onSubmit,
+            username,
+            managerId,
+            relationUsername,
+            usernameCheck
+        }
+    }
+}
+</script>
+<style>
+.custom-button {
+    width: 120px;
+}
+</style>

+ 1 - 0
src/views/role/index.vue

@@ -111,6 +111,7 @@ export default {
       { label: t('role.labelMan'), value: 'M18' }, //标签管理
       { label: t('role.apkMan'), value: 'M19' } //apk管理
       // { label: t('role.merchantMan'), value: 'M20' } //商户管理
+      // { label: t('role.relationAdmin'), value: 'M21' } //关联上级
     ];
     let searchParams = reactive({ adminId: user.id });
     // 初始化页面获取列表

+ 2 - 2
src/views/user.vue

@@ -93,7 +93,7 @@
             </div>
           </div>
           <!-- 关联上级 -->
-          <div v-if="isInland && user.type == '2'">
+          <!-- <div v-if="isInland && user.type == '2'">
             <div v-if="!relationType" class="userInfo l-flex-between">
               <span class="userInfoLeft">{{ $t("user.associateParent") }}: </span>
               <div >
@@ -113,7 +113,7 @@
               <span>{{ relationAdminName }}</span>
               <van-icon name="edit" class="editIcon" @click="editClk(1)" />
             </div>
-          </div>
+          </div> -->
 
           <!-- 自定义货币符号 -->
           <div v-if="!symbolShow" class="userInfo l-flex-between">