Explorar el Código

feat:“冰淇淋SI320添加远程制作功能,优化首页其他选择单日统计功能”

soobin hace 1 año
padre
commit
f6010a3728

BIN
src/assets/accountOperation/relationAdmin.png


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

@@ -811,6 +811,7 @@
     "withdrawalData": "Withdrawal data",
     "region": "region",
     "accountNumber": "account number",
+    "relationAdmin": "Associate superior",
     "subscriptionAdministrator": "Subscription administrator",
     "fullNameLabel": "full name",
     "fullNamePlaceholder": "Please enter your name",
@@ -976,6 +977,7 @@
     "orderRefund": "Order refund",
     "systemOffline": "System offline",
     "labelMan": "Label management",
+    "relationAdmin": "Associate superior",
     "apkMan": "Apk management",
     "merchantMan": "Merchant management",
     "accountOperation": "Account operation",
@@ -1321,6 +1323,7 @@
     "mailbox": "Email",
     "mailboxPlace": "Please enter your email address",
     "associateParent": "Associate Parent",
+    "superiorAccount": "Superior Account",
     "associateParentPlace": "Please enter the related superior",
     "commonOperations": "Common Operations",
     "taskMessage": "Task Message",
@@ -1371,6 +1374,10 @@
       "machinePlace": "Please select the machine list"
     }
   },
+  "relationAdmin": {
+    "title": "关联上级"
+  },
+  
   "kSelectPop": {
     "cancel": "cancel",
     "confirm": "confirm",
@@ -1439,7 +1446,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",

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

@@ -815,6 +815,7 @@
     "withdrawalData": "提现资料",
     "region": "地区",
     "accountNumber": "账号",
+    "relationAdmin": "关联上级",
     "subscriptionAdministrator": "开通管理员",
     "fullNameLabel": "姓名",
     "fullNamePlaceholder": "请输入姓名",
@@ -986,6 +987,7 @@
     "orderRefund": "订单退款",
     "systemOffline": "系统脱机",
     "labelMan": "标签管理",
+    "relationAdmin": "关联上级",
     "apkMan": "apk管理",
     "merchantMan": "商户管理",
     "accountOperation": "账户操作",
@@ -1340,6 +1342,7 @@
     "mailbox": "邮箱",
     "mailboxPlace": "请输入邮箱",
     "associateParent": "关联上级",
+    "superiorAccount": "上级账号",
     "associateParentPlace": "请输入关联上级",
     "commonOperations": "常用操作",
     "taskMessage": "任务消息",
@@ -1390,6 +1393,9 @@
       "machinePlace": "请选择机器列表"
     }
   },
+  "relationAdmin": {
+    "title": "关联上级"
+  },
   "kSelectPop": {
     "cancel": "取消",
     "confirm": "确定",
@@ -1458,7 +1464,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;
       }
     };
 

+ 23 - 3
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') }]" />
@@ -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,

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

@@ -0,0 +1,65 @@
+<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 clearable
+                    :rules="[{ required: true, message: '请填写账号名' }]" />
+                <van-field v-model="managerId" name="系统id" label="系统id" placeholder="系统id" required clearable
+                    :rules="[{ required: true, message: '请填写系统id' }]" />
+                <van-field v-model="relationUsername" name="关联账号" label="关联账号" placeholder="关联上级账号名称(选填)" clearable/>
+            </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 () => {
+            if (!relationUsername.value) {
+                relationUsername.value = '';
+            }
+            // 提交表单
+            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 });
     // 初始化页面获取列表

+ 38 - 20
src/views/user.vue

@@ -24,6 +24,7 @@
           </div>
         </div>
         <div class="userInfoBox">
+          
           <!-- 地区 -->
           <div v-if="isInland && user.type != '0'">
             <div v-if="!areaShow" class="userInfo l-flex-between">
@@ -52,48 +53,56 @@
               <van-icon name="edit" class="editIcon" @click="editClk(4)" />
             </div>
           </div>
-          <!-- 手机号 -->
+          <!-- 邮箱 -->
           <div v-if="user.type != '0'">
-            <div v-if="!phoneNumberShow" class="userInfo l-flex-between">
-              <span class="userInfoLeft">{{ $t("user.phoneNumber") }}: </span>
+            <div v-if="!mailboxShow" class="userInfo l-flex-between">
+              <span class="userInfoLeft">{{ $t("user.mailbox") }}: </span>
               <div>
-                <van-field class="relationClass" v-model="cofficentForm.phone" :placeholder="$t('user.phoneNumberPlace')">
+                <van-field class="relationClass" v-model="cofficentForm.mailBox" :placeholder="$t('user.mailboxPlace')">
                   <template #button>
-                    <van-button type="primary" @click="mailboxChg(cofficentForm.phone, 3)">{{ $t("user.confirmLog") }}
+                    <van-button type="primary" @click="mailboxChg(cofficentForm.mailBox, 2)">{{ $t("user.confirmLog") }}
                     </van-button>
                   </template>
                 </van-field>
               </div>
-              <van-icon name="edit" class="editIcon" @click="editClk(3)" />
+              <van-icon name="edit" class="editIcon" @click="editClk(2)" />
             </div>
             <div v-else class="userInfo l-flex-between">
-              <span class="userInfoLeft">{{ $t("user.phoneNumber") }}: </span>
-              <span>{{ accountDetail.phone }}</span>
-              <van-icon name="edit" class="editIcon" @click="editClk(3)" />
+              <span class="userInfoLeft">{{ $t("user.mailbox") }}: </span>
+              <span>{{ accountDetail.email }}</span>
+              <van-icon name="edit" class="editIcon" @click="editClk(2)" />
             </div>
           </div>
-          <!-- 邮箱 -->
+          <!-- 上级账号 -->
+          <div v-if="isInland && user.type == '2'">
+            <div v-if="haveRelation" class="userInfo l-flex-between">
+              <span class="userInfoLeft">{{ $t("user.superiorAccount") }}: </span>
+              <span>{{ relationAdminName }}</span>
+            </div>
+          </div>
+          <!-- 手机号码 -->
           <div v-if="user.type != '0'">
-            <div v-if="!mailboxShow" class="userInfo l-flex-between">
-              <span class="userInfoLeft">{{ $t("user.mailbox") }}: </span>
+            <div v-if="!phoneNumberShow" class="userInfo l-flex-between">
+              <span class="userInfoLeft">{{ $t("user.phoneNumber") }}: </span>
               <div>
-                <van-field class="relationClass" v-model="cofficentForm.mailBox" :placeholder="$t('user.mailboxPlace')">
+                <van-field class="relationClass" v-model="cofficentForm.phone" :placeholder="$t('user.phoneNumberPlace')">
                   <template #button>
-                    <van-button type="primary" @click="mailboxChg(cofficentForm.mailBox, 2)">{{ $t("user.confirmLog") }}
+                    <van-button type="primary" @click="mailboxChg(cofficentForm.phone, 3)">{{ $t("user.confirmLog") }}
                     </van-button>
                   </template>
                 </van-field>
               </div>
-              <van-icon name="edit" class="editIcon" @click="editClk(2)" />
+              <van-icon name="edit" class="editIcon" @click="editClk(3)" />
             </div>
             <div v-else class="userInfo l-flex-between">
-              <span class="userInfoLeft">{{ $t("user.mailbox") }}: </span>
-              <span>{{ accountDetail.email }}</span>
-              <van-icon name="edit" class="editIcon" @click="editClk(2)" />
+              <span class="userInfoLeft">{{ $t("user.phoneNumber") }}: </span>
+              <span>{{ accountDetail.phone }}</span>
+              <van-icon name="edit" class="editIcon" @click="editClk(3)" />
             </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 +122,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">
@@ -668,6 +677,13 @@ export default {
     // 是否内陆或海外
     const isInland = ref(true);
     const isAbroad = ref(false);
+    // 是否有上级账号
+    const haveRelation = ref(false);
+    const haveRelationCheck = () => {
+      if (user.relationAdminId !== null) {
+        haveRelation.value = true;
+      }
+    }
     // const checkIsAbroad = async () => {
     //   try {
     //     const { data } = await getIfForeign(user.id);
@@ -700,6 +716,7 @@ export default {
     onMounted(() => {
       checkInWechat();
       checkIsAbroad();
+      haveRelationCheck();
     })
     // 获取回显的值
     const getAreaName = (e) => {
@@ -731,6 +748,7 @@ export default {
       isInWeChat,
       getAreaName,
       isAbroad,
+      haveRelation,
       checkIsAbroad,
       isInland,
       symbolShow,