Browse Source

fix:bug修改

wuguojie 1 năm trước cách đây
mục cha
commit
073a6cb922

+ 2 - 1
src/api/modules/lottery.ts

@@ -46,7 +46,8 @@ const lotteryApi = (axiosInstance: ApiInstance) => ({
   updateActivity: (data: AddActivity) => axiosInstance.post('/activity/updateActivity', data),
   deleteActivity: (data: { id: string }) => axiosInstance.post('/activity/deleteActivity', data),
   endActivity: (data: { id: string }) => axiosInstance.post('/activity/endActivity', data),
-  getActivityRecord: (data: GetActivityRecord) => axiosInstance.post('/activity/getActivityRecord', data)
+  getActivityRecord: (data: GetActivityRecord) => axiosInstance.post('/activity/getActivityRecord', data),
+  exportActivityRecord: (data: string[]) => axiosInstance.post('/activity/exportActivityRecord', data)
 })
 
 export default lotteryApi

+ 38 - 1
src/views/marketingManagement/record.vue

@@ -50,12 +50,14 @@
       </el-row>
     </el-form>
     <p>
-      <el-button type="primary">导出数据</el-button>
+      <el-button type="primary" @click="exportData">导出数据</el-button>
     </p>
     <el-table
       :data="tableData"
       height="580"
       style="width: 100%"
+      row-key="id"
+      @selection-change="handleChange"
     >
       <el-table-column type="selection" width="55"></el-table-column>
       <el-table-column prop="name" label="业务员" ></el-table-column>
@@ -144,6 +146,41 @@ const reset = () => {
   initData()
 }
 
+let selectList = ref([])
+
+const handleChange = (row) => {
+  selectList.value = []
+  if(row.length>0) {
+    row.forEach(item => {
+      selectList.value.push(item.id)
+    })
+  }
+}
+
+const exportData = () => {
+  api.lotteryApi.exportActivityRecord(selectList.value).then(res => {
+    if(res.code == 200) {
+      const el = document.createElement('a');
+      el.style.display = 'none';
+      el.setAttribute('target', '_blank');
+      el.setAttribute('download', '抽奖记录。xlsx');
+      el.href = res.data;
+      document.body.appendChild(el);
+      el.click();
+      document.body.removeChild(el);
+      ElMessage({
+        message: '导出成功',
+        type: 'success'
+      })
+    } else {
+      ElMessage({
+        message: res.msg,
+        type: 'warning'
+      })
+    }
+  })
+}
+
 onMounted(() => {
   initData();
 })

+ 4 - 4
src/views/operationManagement/modules/addCard.vue

@@ -9,14 +9,14 @@
           <el-option v-for="item in bankOption" :key="item.id" :value="item.id" :label="item.label"></el-option>
         </el-select>
       </el-form-item>
-      <el-form-item prop="card" label="银行卡号">
+      <el-form-item prop="bankCardNumber" label="银行卡号">
         <el-input v-model="bankForm.bankCardNumber" :disabled="bankForm.isRead"></el-input>
       </el-form-item>
       <el-form-item prop="bankName" label="开户行">
         <el-input v-model="bankForm.bankAddress" :disabled="bankForm.isRead"></el-input>
       </el-form-item>
       <el-form-item prop="photo" label="照片" class="upload-btn">
-        <el-upload :auto-upload="false" v-if="!bankForm.imageUrl" :show-file-list="false" accept=".png, .jpg, .jpeg" @change="uploadImage">
+        <el-upload :auto-upload="false" v-if="!bankForm.isRead" :show-file-list="false" accept=".png, .jpg, .jpeg" @change="uploadImage">
           <el-button size="large" icon="Plus" />
         </el-upload>
         <div class="image-view" v-else>
@@ -29,7 +29,7 @@
           </div>
         </div>
       </el-form-item>
-      <div style="display: flex; justify-content: flex-end">
+      <div style="display: flex; justify-content: flex-end" v-if="!bankForm.isRead">
         <el-button @click="onSubmit(BankRef, 0)">取消</el-button>
         <el-button type="primary" @click="onSubmit(BankRef, 1)">确定</el-button>
       </div>
@@ -79,7 +79,7 @@ const bankRules = {
     { required: true, message: '请填写姓名', trigger: 'blur' }
   ],
   bankName: [
-    { required: true, message: '请选择银行', trigger: 'change' }
+    { required: true, message: '请填写开户行', trigger: 'blur' }
   ],
   bankCardNumber: [
     { required: true, message: '请填写银行卡号', trigger: 'blur' },

+ 118 - 90
src/views/operationManagement/modules/addOperation.vue

@@ -52,7 +52,7 @@
               <el-col :span="10">
                 <el-form-item prop="organization" label="所属机构">
                   <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-cascader v-else style="width: 100%" v-model="operationForm.organization" placeholder="请选择所属机构" :options="deptOption" :props="optionProps" @change="deptIdChange"></el-cascader>
                 </el-form-item>
               </el-col>
               <el-col :span="10">
@@ -129,7 +129,10 @@
       <el-descriptions title="资料附件">
         <el-descriptions-item>
           <template #default>
-            <el-form-item prop="IDCardFront" label="身份证(人像面)" label-width="150">
+            <el-form-item prop="IDCardFront" label-width="150">
+              <template #label>
+                <span style="color: #f56c6c">*</span>身份证(人像面)
+              </template>
               <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>
@@ -145,7 +148,10 @@
                 </div>
               </div>
             </el-form-item>
-            <el-form-item prop="IDCardBack" label="身份证(国徽面)" label-width="150">
+            <el-form-item prop="IDCardBack" label-width="150">
+              <template #label>
+                <span style="color: #f56c6c">*</span>身份证(国徽面)
+              </template>
               <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>
@@ -451,6 +457,7 @@
 import { ref, reactive, defineEmits, onMounted } from 'vue'
 import type { AddOperation } from '@/api/modules/operation.ts'
 import type { FormRules, FormInstance } from "element-plus";
+import { Plus } from '@element-plus/icons-vue'
 import api from "@/api";
 import { ElMessage } from "element-plus";
 
@@ -566,12 +573,12 @@ const operationRules = ref<FormRules>({
   referrerNumber: [
     { required: true, trigger: "blur", message: "请填写推荐人工号" }
   ],
-  IDCardFront: [
-    { required: true, trigger: "change", message: "请上传身份(人像面)" }
-  ],
-  IDCardBack: [
-    { required: true, trigger: "change", message: "请上传身份(国徽面)" }
-  ],
+  // IDCardFront: [
+  //   { required: true, trigger: "change", message: "请上传身份(人像面)" }
+  // ],
+  // IDCardBack: [
+  //   { required: true, trigger: "change", message: "请上传身份(国徽面)" }
+  // ],
   bankCardId: [
     {
       pattern: /^([1-9]{1})(\d{15}|\d{16}|\d{18})$/,
@@ -636,6 +643,7 @@ const initEditData = (id) => {
     api.operationApi.operationDetail(id).then(res => {
       if(res?.code == 200) {
         let formData = res.data
+        initTeamData(formData?.typeAttr==='5'?'1':formData?.typeAttr==='8'?'2':formData?.typeAttr==='7'?'3':'')
         operationForm.value = formData
         operationForm.value.organization = formData.deptName
         operationForm.value.deptId = formData.deptId
@@ -913,75 +921,82 @@ const onSubmit = async (OperationFormRef: FormInstance, type: number) => {
   if(type) {
     await OperationFormRef.validate((valid, error) => {
       if(valid) {
-        let formData = {...operationForm.value}
-        // formData.organization = operationForm.value.organization[operationForm.value.organization.length - 1]
-        formData.systemCode = localStorage.getItem('login_system')?localStorage.getItem('login_system'):''
-        formData.province = operationForm.value.address?operationForm.value.address[0]:''
-        formData.city = operationForm.value.address?operationForm.value.address[1]?operationForm.value.address[1]:'':''
-        formData.district = operationForm.value.address?operationForm.value.address[2]?operationForm.value.address[2]:'':''
-        if(editId.value) {
-          api.operationApi.updateOperation(formData).then(res => {
-            if(res.code == 200) {
-              ElMessage({
-                message: res.msg,
-                type: 'success'
-              })
-              emits('closeDialog', '确定')
-            } else {
-              ElMessage({
-                message: res.msg,
-                type: 'error'
-              })
-            }
-            IDCardFrontName.value = ''
-            IDCardFront.value = ''
-            IDCardBackName.value = ''
-            IDCardBack.value = ''
-            certificationName.value = ''
-            certification.value = ''
-            contractName.value = ''
-            contract.value = ''
-            applicantName.value = ''
-            applicant.value = ''
-            decidePayName.value = ''
-            decidePay.value = ''
-            dimissionName.value = ''
-            dimission.value = ''
-            recordShow.value = false
-            OperationFormRef.resetFields()
-            emits('closeDialog', '取消')
-          })
+        if(IDCardFront.value&&IDCardBack.value) {
+          let formData = {...operationForm.value}
+          // formData.organization = operationForm.value.organization[operationForm.value.organization.length - 1]
+          formData.systemCode = localStorage.getItem('login_system')?localStorage.getItem('login_system'):''
+          formData.province = operationForm.value.address?operationForm.value.address[0]:''
+          formData.city = operationForm.value.address?operationForm.value.address[1]?operationForm.value.address[1]:'':''
+          formData.district = operationForm.value.address?operationForm.value.address[2]?operationForm.value.address[2]:'':''
+          if(editId.value) {
+            api.operationApi.updateOperation(formData).then(res => {
+              if(res.code == 200) {
+                ElMessage({
+                  message: res.msg,
+                  type: 'success'
+                })
+                emits('closeDialog', '确定')
+              } else {
+                ElMessage({
+                  message: res.msg,
+                  type: 'error'
+                })
+              }
+              IDCardFrontName.value = ''
+              IDCardFront.value = ''
+              IDCardBackName.value = ''
+              IDCardBack.value = ''
+              certificationName.value = ''
+              certification.value = ''
+              contractName.value = ''
+              contract.value = ''
+              applicantName.value = ''
+              applicant.value = ''
+              decidePayName.value = ''
+              decidePay.value = ''
+              dimissionName.value = ''
+              dimission.value = ''
+              recordShow.value = false
+              OperationFormRef.resetFields()
+              emits('closeDialog', '取消')
+            })
+          } else {
+            api.operationApi.addOperation(formData).then(res => {
+              if(res.code == 200) {
+                ElMessage({
+                  message: res.msg,
+                  type: 'success'
+                })
+                emits('closeDialog', '确定')
+              } else {
+                ElMessage({
+                  message: res.msg,
+                  type: 'error'
+                })
+              }
+              IDCardFrontName.value = ''
+              IDCardFront.value = ''
+              IDCardBackName.value = ''
+              IDCardBack.value = ''
+              certificationName.value = ''
+              certification.value = ''
+              contractName.value = ''
+              contract.value = ''
+              applicantName.value = ''
+              applicant.value = ''
+              decidePayName.value = ''
+              decidePay.value = ''
+              dimissionName.value = ''
+              dimission.value = ''
+              recordShow.value = false
+              OperationFormRef.resetFields()
+              emits('closeDialog', '取消')
+            })
+          }
         } else {
-          api.operationApi.addOperation(formData).then(res => {
-            if(res.code == 200) {
-              ElMessage({
-                message: res.msg,
-                type: 'success'
-              })
-              emits('closeDialog', '确定')
-            } else {
-              ElMessage({
-                message: res.msg,
-                type: 'error'
-              })
-            }
-            IDCardFrontName.value = ''
-            IDCardFront.value = ''
-            IDCardBackName.value = ''
-            IDCardBack.value = ''
-            certificationName.value = ''
-            certification.value = ''
-            contractName.value = ''
-            contract.value = ''
-            applicantName.value = ''
-            applicant.value = ''
-            decidePayName.value = ''
-            decidePay.value = ''
-            dimissionName.value = ''
-            dimission.value = ''
-            recordShow.value = false
-            OperationFormRef.resetFields()
-            emits('closeDialog', '取消')
+          ElMessage({
+            message: '请上传必传附件!',
+            type: 'warning'
           })
         }
       } else {
@@ -1029,7 +1044,7 @@ const initInfo = () => {
   健康状况        health_status
   学历        educational
 * */
-  let infoList = ['gender', 'nation', 'marriage', 'political_status', 'health_status', 'educational']
+  let infoList = ['gender', 'nation', 'marriage', 'political_status', 'health_status', 'educational', 'team']
   infoList.forEach((item: string, index: number) => {
     api.commonApi.personInfo(item).then((res) => {
       if(res?.code == 200) {
@@ -1057,6 +1072,21 @@ const getArea = () => {
 }
 
 // 团队数据
+const initTeamData = async (e) => {
+  const { code, data, msg } = await api.teamApi.teamList({
+    attribute: e,
+    param: ''
+  })
+  if(code == 200) {
+    teamList.value = data
+  } else {
+    ElMessage({
+      message: msg,
+      type: 'warning'
+    })
+  }
+}
+
 let teamList = ref([])
 const typeAttrChange = async (e) => {
   operationForm.value.organization = ''
@@ -1065,22 +1095,13 @@ const typeAttrChange = async (e) => {
   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'
-      })
-    }
+    initTeamData(e==='5'?'1':e==='8'?'2':e==='7'?'3':'')
   } else {
     institutionList();
   }
 }
+
+// 团队切换
 const deptChange = (e) => {
   const obj = teamList.value.find(item => item.id == e)
   operationForm.value.organization = obj.deptName
@@ -1088,6 +1109,13 @@ const deptChange = (e) => {
   getUser(obj.deptId)
   getRecommend(obj.deptId)
 }
+// 机构切换
+const deptIdChange = (e) => {
+  if(e) {
+    getUser(e[e.length - 1])
+    getRecommend(e[e.length - 1])
+  }
+}
 
 // 初始化银行数据
 let bankOption = ref([])

+ 24 - 4
src/views/operationManagement/operation.vue

@@ -14,7 +14,7 @@
         </el-col>
         <el-col :span="8">
           <el-form-item label="归属机构" class="formItem">
-            <el-cascader clearable style="width: 100%" :options="options" :props="cascaderProps" @change="organizationChange"  />
+            <el-cascader clearable v-model="form.deptId" style="width: 100%" :options="options" :props="cascaderProps" @change="organizationChange"  />
           </el-form-item>
         </el-col>
         <el-col :span="8">
@@ -257,6 +257,7 @@ const init = () => {
   api.operationApi.operationList({
     pages: currentPage.value,
     size: pageSize.value,
+    isMember: 2,
     ...form.value
   }).then(res => {
     if(res?.code == 200) {
@@ -290,6 +291,25 @@ const operationDel = (id: string[]) => {
     }
   })
 }
+const operationDelList = (id: string[]) => {
+  api.operationApi.operationDelete({
+    ids:id,
+    getAll: 0
+  }).then(res => {
+    if(res?.code == 200) {
+      ElMessage({
+        message: res.msg,
+        type: 'success'
+      })
+      init()
+    } else {
+      ElMessage({
+        message: res.msg,
+        type: 'warning'
+      })
+    }
+  })
+}
 // 启用/禁用
 const operationIsEnable = (data: OperationIsEnable) => {
   api.operationApi.operationIsEnable(data).then(res => {
@@ -383,8 +403,8 @@ const dropdownCommand = (e) => {
       }).then(( action ) => {
         if(action === 'confirm') {
           let ids = []
-          if(selectedList.value.length>0) {
-            selectedList.value.forEach(item => {
+          if(tableData.value.length>0) {
+            tableData.value.forEach(item => {
               ids.push(item.id)
             })
           } else {
@@ -396,7 +416,7 @@ const dropdownCommand = (e) => {
               return
             }
           }
-          operationDel(ids)
+          operationDelList(ids)
         }
       }).catch(( action ) => {
 

+ 1 - 1
src/views/operationManagement/operationDetail.vue

@@ -39,7 +39,7 @@
         <el-descriptions-item label="工号:">{{ dataDetail?.userId }}</el-descriptions-item>
         <el-descriptions-item label="所属机构:">{{ dataDetail?.deptName }}</el-descriptions-item>
         <el-descriptions-item label="状态:">{{  dataDetail?.status == '0'?'待认证': dataDetail?.status == '1'?'已认证': dataDetail?.status == '2'?'待提交资料': dataDetail?.status == '3'?'已入职':'' }}</el-descriptions-item>
-        <el-descriptions-item label="类型:">{{  dataDetail?.typeAttr == '0'?'个代': dataDetail?.typeAttr == '1'?'渠道': dataDetail?.typeAttr == '2'?'团队': dataDetail?.typeAttr == '3'?'电销组': '' }}</el-descriptions-item>
+        <el-descriptions-item label="类型:">{{  dataDetail?.typeAttr == '6'?'个代': dataDetail?.typeAttr == '8'?'渠道': dataDetail?.typeAttr == '5'?'团队': dataDetail?.typeAttr == '7'?'电销组': '' }}</el-descriptions-item>
         <el-descriptions-item label="所属团队:">{{ dataDetail?.organizationName }}</el-descriptions-item>
         <el-descriptions-item label="创建人:">{{ dataDetail?.updateBy }}</el-descriptions-item>
         <el-descriptions-item label="创建时间:">{{ dataDetail?.updateTime }}</el-descriptions-item>