wuguojie 1 год назад
Родитель
Сommit
c1d2ba89be

+ 5 - 1
src/api/modules/operation.ts

@@ -74,6 +74,10 @@ export interface OperationIsEnable {
 export interface OperationEdit extends AddOperation {
   id: string
 }
+export interface GetUser {
+  id: string,
+  typeAttr?: number
+}
 // 业务员管理相关接口
 const operationApi = (axiosInstance: ApiInstance) => ({
   addOperation: (data: AddOperation) => axiosInstance.post('/userInfo/add', data), // 新赠
@@ -90,7 +94,7 @@ const operationApi = (axiosInstance: ApiInstance) => ({
     leaderId: string,
     getAll: number
   }) => axiosInstance.post('/userInfo/batchLeader', data), // 设置负责人
-  getUser: () => axiosInstance.post('/userInfo/getUser', { typeAttr: 2 }), // 获取管理人/推荐人
+  getUser: (data: GetUser) => axiosInstance.post('/userInfo/getUser', data), // 获取管理人/推荐人
   addBankCard: (data: AddBankCard) => axiosInstance.post('/userInfo/addBankCard', data), // 添加银行卡
   salesmanAuthSuccess: (data: { userInfoId: string }) => axiosInstance.post('/userInfo/salesmanAuthSuccess', data), // 审核通过
   salesmanAuthFailed: (data: {

+ 7 - 1
src/views/operationManagement/channel.vue

@@ -17,7 +17,7 @@
             </el-dropdown>
           </div>
         </div>
-        <el-button class="add-btn" icon="plus" @click="addTeamShow = true">添加团队</el-button>
+        <el-button class="add-btn" icon="plus" @click="addTeamDraw">添加团队</el-button>
       </el-col>
       <el-col :span="20">
         <el-row :gutter="20">
@@ -275,6 +275,12 @@ const treeNodeCommend = (item, e) => {
       break;
   }
 }
+const addTeamDraw = () => {
+  addTeamShow.value = true
+  nextTick(() => {
+    AddTeamRef.value.teamForm.attribute = 2
+  })
+}
 const closeAddTeamDialog = (type) => {
   addTeamShow.value = false
   initTeam()

+ 107 - 27
src/views/operationManagement/modules/addOperation.vue

@@ -12,12 +12,12 @@
             <el-row :gutter="20">
               <el-col :span="10">
                 <el-form-item prop="typeAttr" label="业务员类型">
-                  <el-select v-model="operationForm.typeAttr" placeholder="请选择业务员类型">
-                    <el-option key="1" value="0" label="个代"></el-option>
-                    <el-option key="2" value="1" label="渠道"></el-option>
-                    <el-option key="3" value="2" label="团队"></el-option>
-                    <el-option key="4" value="3" label="电销组"></el-option>
-<!--                    <el-option key="1" value="1" label="前线人员"></el-option>
+                  <el-select v-model="operationForm.typeAttr" placeholder="请选择业务员类型" @change="typeAttrChange">
+                    <el-option key="1" value="6" label="个代"></el-option>
+                    <el-option key="2" value="8" label="渠道"></el-option>
+                    <el-option key="3" value="5" label="团队"></el-option>
+                    <el-option key="4" value="7" label="电销组"></el-option>
+                    <!--<el-option key="1" value="1" label="前线人员"></el-option>
                     <el-option key="2" value="2" label="后线人员"></el-option>
                     <el-option key="3" value="3" label="合伙人"></el-option>
                     <el-option key="4" value="4" label="工作室管理员"></el-option>
@@ -29,7 +29,7 @@
                 </el-form-item>
               </el-col>
               <el-col :span="10">
-                <el-form-item prop="deptId" label="所属团队">
+                <el-form-item prop="deptId" label="所属团队" v-if="operationForm.typeAttr!='6'">
                   <el-select v-model="operationForm.organizationId" placeholder="请选择所属团队" @change="deptChange">
                     <el-option v-for="item in teamList" :key="item.id" :value="item.id" :label="item.name"></el-option>
                   </el-select>
@@ -39,20 +39,20 @@
             <el-row :gutter="20">
               <el-col :span="10">
                 <el-form-item prop="name" label="姓名">
-                  <el-input v-model="operationForm.name" placeholder="请填写姓名"></el-input>
+                  <el-input v-model="operationForm.name" placeholder="请填写姓名" maxlength="20"></el-input>
                 </el-form-item>
               </el-col>
               <el-col :span="10">
                 <el-form-item prop="mobile" label="手机号">
-                  <el-input v-model="operationForm.mobile" placeholder="请填写手机号"></el-input>
+                  <el-input type="number" oninput="if(value.length>11)value=value.slice(0,11)" v-model="operationForm.mobile" placeholder="请填写手机号"></el-input>
                 </el-form-item>
               </el-col>
             </el-row>
             <el-row :gutter="20">
               <el-col :span="10">
                 <el-form-item prop="organization" label="所属机构">
-                  <el-input disabled v-model="operationForm.organization"></el-input>
-<!--                  <el-cascader style="width: 100%" v-model="operationForm.organization" placeholder="请选择所属机构" :options="option" :props="cascaderProps"></el-cascader>-->
+                  <el-input v-if="operationForm.typeAttr!='6'" disabled v-model="operationForm.organization"></el-input>
+                  <el-cascader v-else style="width: 100%" v-model="operationForm.organization" placeholder="请选择所属机构" :options="deptOption" :props="optionProps"></el-cascader>
                 </el-form-item>
               </el-col>
               <el-col :span="10">
@@ -70,6 +70,7 @@
                     placeholder="请选择"
                     format="YYYY-MM-DD"
                     value-format="YYYY-MM-DD"
+                    :disabled-date="disabledDateStart"
                     style="width: 100%"
                   />
                 </el-form-item>
@@ -82,6 +83,7 @@
                     placeholder="请选择"
                     format="YYYY-MM-DD"
                     value-format="YYYY-MM-DD"
+                    :disabled-date="disabledDateEnd"
                     style="width: 100%"
                   />
                 </el-form-item>
@@ -111,7 +113,7 @@
               <el-col :span="10">
                 <el-form-item prop="referrerId" label="推荐人">
                   <el-select v-model="operationForm.referrerId" filterable placeholder="请选择推荐人" @change="(e) => {operationForm.referrerNumber = e}">
-                    <el-option v-for="(item, index) in userList" :key="item.id" :value="item.id" :label="item.name"></el-option>
+                    <el-option v-for="(item, index) in recommendList" :key="item.id" :value="item.id" :label="item.name"></el-option>
                   </el-select>
                 </el-form-item>
               </el-col>
@@ -127,7 +129,7 @@
       <el-descriptions title="资料附件">
         <el-descriptions-item>
           <template #default>
-            <el-form-item prop="" label="身份证(人像面)" label-width="150">
+            <el-form-item prop="IDCardFront" label="身份证(人像面)" label-width="150">
               <el-upload action="" v-if="!IDCardFront" :auto-upload="false" :show-file-list="false" accept=".png, .jpg, .jpeg" @change="uploadImage($event, 1)">
                 <el-button link type="primary">上传</el-button>
               </el-upload>
@@ -143,7 +145,7 @@
                 </div>
               </div>
             </el-form-item>
-            <el-form-item prop="" label="身份证(国徽面)" label-width="150">
+            <el-form-item prop="IDCardBack" label="身份证(国徽面)" label-width="150">
               <el-upload v-if="!IDCardBack" :auto-upload="false"  :show-file-list="false" accept=".png, .jpg, .jpeg" @change="uploadImage($event, 2)">
                 <el-button link type="primary">上传</el-button>
               </el-upload>
@@ -530,7 +532,7 @@ const operationRules = ref<FormRules>({
   mobile: [
     { required: true, trigger: "blur", message: "请填写手机号" },
     {
-      pattern: /^1[345678][0-9]{9}$/,
+      pattern: /^1[0-9]{10}$/,
       message: '请填写正确的手机号',
       trigger: 'blur'
     }
@@ -553,17 +555,23 @@ const operationRules = ref<FormRules>({
     { required: true, trigger: "change", message: "请选择证件有效期止" }
   ],
   leaderId: [
-    { required: true, trigger: "change", message: "请选择管理人" }
+    { required: true, trigger: "blur", message: "请选择管理人" }
   ],
   leaderNumber: [
     { required: true, trigger: "blur", message: "请填写管理人工号" }
   ],
   referrerId: [
-    { required: true, trigger: "change", message: "请选择推荐人" }
+    { required: true, trigger: "blur", message: "请选择推荐人" }
   ],
   referrerNumber: [
     { required: true, trigger: "blur", message: "请填写推荐人工号" }
   ],
+  IDCardFront: [
+    { required: true, trigger: "change", message: "请上传身份(人像面)" }
+  ],
+  IDCardBack: [
+    { required: true, trigger: "change", message: "请上传身份(国徽面)" }
+  ],
   bankCardId: [
     {
       pattern: /^([1-9]{1})(\d{15}|\d{16}|\d{18})$/,
@@ -611,6 +619,14 @@ let dimission = ref('')
 let imageShow = ref(false)
 let imageUrl = ref('')
 
+// 限制证件日期
+const disabledDateStart = (time: Date) => {
+  return time.getTime() > new Date()
+}
+const disabledDateEnd = (time: Date) => {
+  return time.getTime() < new Date(operationForm.value.identityTimeStart)
+}
+
 // 编辑时初始化数据
 // 编辑的id
 let editId = ref('')
@@ -678,6 +694,7 @@ const initEditData = (id) => {
         }
         operationForm.value.address = address
         getUser(operationForm.value.deptId)
+        getRecommend(operationForm.value.deptId)
       } else {
         ElMessage({
           message: res.msg,
@@ -855,8 +872,11 @@ const deleteImage = (type) => {
 }
 // 管理人/推荐人
 let userList = ref([])
+let recommendList = ref([])
 const getUser = (id) => {
-  api.operationApi.getUser(id).then(res => {
+  api.operationApi.getUser({
+    id: id
+  }).then(res => {
     if(res?.code == 200) {
       userList.value = res.data
     } else {
@@ -867,6 +887,21 @@ const getUser = (id) => {
     }
   })
 }
+const getRecommend = (id) => {
+  api.operationApi.getUser({
+    id: id,
+    typeAttr: 2
+  }).then(res => {
+    if(res?.code == 200) {
+      recommendList.value = res.data
+    } else {
+      ElMessage({
+        message: res.msg,
+        type: 'warning'
+      })
+    }
+  })
+}
 // 确定
 const onSubmit = async (OperationFormRef: FormInstance, type: number) => {
   if(!OperationFormRef) {
@@ -1023,15 +1058,27 @@ const getArea = () => {
 
 // 团队数据
 let teamList = ref([])
-const getTeamList = async () => {
-  const { code, data, msg } = await api.teamApi.teamList({})
-  if(code == 200) {
-    teamList.value = data
-  } else {
-    ElMessage({
-      message: msg,
-      type: 'warning'
+const typeAttrChange = async (e) => {
+  operationForm.value.organization = ''
+  operationForm.value.leaderId = ''
+  operationForm.value.leaderNumber = ''
+  operationForm.value.referrerId = ''
+  operationForm.value.referrerNumber = ''
+  if(e != '6') {
+    const { code, data, msg } = await api.teamApi.teamList({
+      attribute: e,
+      param: ''
     })
+    if(code == 200) {
+      teamList.value = data
+    } else {
+      ElMessage({
+        message: msg,
+        type: 'warning'
+      })
+    }
+  } else {
+    institutionList();
   }
 }
 const deptChange = (e) => {
@@ -1039,6 +1086,7 @@ const deptChange = (e) => {
   operationForm.value.organization = obj.deptName
   operationForm.value.deptId = obj.deptId
   getUser(obj.deptId)
+  getRecommend(obj.deptId)
 }
 
 // 初始化银行数据
@@ -1056,10 +1104,30 @@ const initBankCard = () => {
   })
 }
 
+let deptOption = ref([])
+const optionProps = {
+  value: 'id',
+  label: 'name',
+  children: 'children',
+  checkStrictly: true,
+}
+// 获取机构数据
+const institutionList = () => {
+  api.institutionApi.institutionList({ name: '', system: '' }).then(res => {
+    if(res?.code == 200) {
+      deptOption.value = res.data
+    } else {
+      ElMessage({
+        message: res.msg,
+        type: 'warning'
+      })
+    }
+  })
+}
+
 onMounted(() => {
   initInfo()
   getArea()
-  getTeamList()
   initBankCard()
 })
 
@@ -1117,4 +1185,16 @@ defineExpose({
     border-radius: 5px;
   }
 }
+:deep(.el-input__inner[type=number]::-webkit-outer-spin-button) {
+  -webkit-appearance: none;
+  margin: 0;
+}
+:deep(.el-input__inner[type=number]::-webkit-inner-spin-button) {
+  -webkit-appearance: none;
+  margin: 0;
+}
+:deep(.el-input__inner[type=number]) {
+  -moz-appearance: textfield;
+}
+
 </style>

+ 5 - 2
src/views/operationManagement/modules/addTeam.vue

@@ -108,7 +108,9 @@ const deptIdChange = (e) => {
 // 管理人
 let userList = ref([])
 const getUser = (id) => {
-  api.operationApi.getUser(id).then(res => {
+  api.operationApi.getUser({
+    id: id
+  }).then(res => {
     if(res?.code == 200) {
       userList.value = res.data
     } else {
@@ -191,7 +193,8 @@ onMounted(() => {
 })
 
 defineExpose({
-  initEdit
+  initEdit,
+  teamForm
 })
 
 </script>

+ 5 - 5
src/views/operationManagement/operation.vue

@@ -20,10 +20,10 @@
         <el-col :span="8">
           <el-form-item label="类型" class="formItem">
             <el-select clearable v-model="form.typeAttr">
-              <el-option key="1" value="0" label="个代"></el-option>
-              <el-option key="2" value="1" label="渠道"></el-option>
-              <el-option key="3" value="2" label="团队"></el-option>
-              <el-option key="4" value="3" label="电销组"></el-option>
+              <el-option key="1" value="6" label="个代"></el-option>
+              <el-option key="2" value="8" label="渠道"></el-option>
+              <el-option key="3" value="5" label="团队"></el-option>
+              <el-option key="4" value="7" label="电销组"></el-option>
 <!--              <el-option key="1" value="1" label="前线人员"></el-option>
               <el-option key="2" value="2" label="后线人员"></el-option>
               <el-option key="3" value="3" label="合伙人"></el-option>
@@ -110,7 +110,7 @@
       <el-table-column label="工号" prop="userId" width="200"></el-table-column>
       <el-table-column label="类型" prop="typeAttr" width="100">
         <template #default="scope">
-          {{ scope.row.typeAttr == '0'?'个代':scope.row.typeAttr == '1'?'渠道':scope.row.typeAttr == '2'?'团队':scope.row.typeAttr == '3'?'电销组': '' }}
+          {{ scope.row.typeAttr == '6'?'个代':scope.row.typeAttr == '8'?'渠道':scope.row.typeAttr == '5'?'团队':scope.row.typeAttr == '7'?'电销组': '' }}
         </template>
       </el-table-column>
       <el-table-column label="归属" prop="organizationName" width="200"></el-table-column>

+ 7 - 1
src/views/operationManagement/team.vue

@@ -17,7 +17,7 @@
             </el-dropdown>
           </div>
         </div>
-        <el-button class="add-btn" icon="plus" @click="addTeamShow = true">添加团队</el-button>
+        <el-button class="add-btn" icon="plus" @click="addTeamDraw">添加团队</el-button>
       </el-col>
       <el-col :span="20">
         <el-row :gutter="20">
@@ -275,6 +275,12 @@ const treeNodeCommend = (item, e) => {
       break;
   }
 }
+const addTeamDraw = () => {
+  addTeamShow.value = true
+  nextTick(() => {
+    AddTeamRef.value.teamForm.attribute = 1
+  })
+}
 const closeAddTeamDialog = (type) => {
   addTeamShow.value = false
   initTeam()

+ 7 - 1
src/views/operationManagement/telemarketing.vue

@@ -17,7 +17,7 @@
             </el-dropdown>
           </div>
         </div>
-        <el-button class="add-btn" icon="plus" @click="addTeamShow = true">添加团队</el-button>
+        <el-button class="add-btn" icon="plus" @click="addTeamDraw">添加团队</el-button>
       </el-col>
       <el-col :span="20">
         <el-row :gutter="20">
@@ -275,6 +275,12 @@ const treeNodeCommend = (item, e) => {
       break;
   }
 }
+const addTeamDraw = () => {
+  addTeamShow.value = true
+  nextTick(() => {
+    AddTeamRef.value.teamForm.attribute = 3
+  })
+}
 const closeAddTeamDialog = (type) => {
   addTeamShow.value = false
   initTeam()