Bladeren bron

fix:对接接口

wuguojie 1 jaar geleden
bovenliggende
commit
6639459a15

+ 3 - 1
src/api/index.ts

@@ -10,6 +10,7 @@ import userApi from './modules/user'
 import roleApi from './modules/role'
 import institutionApi from './modules/institution'
 import areaApi from "./modules/area"
+import operationApi from './modules/operation.ts'
 
 const axiosInstance:ApiInstance = axios.create({
   baseURL: (import.meta.env.DEV && import.meta.env.VITE_OPEN_PROXY === 'true') ? '/proxy/' : import.meta.env.VITE_APP_API_BASEURL,
@@ -90,6 +91,7 @@ const api = {
   userApi: userApi(axiosInstance),
   roleApi: roleApi(axiosInstance),
   institutionApi:institutionApi(axiosInstance),
-  areaApi:areaApi(axiosInstance)
+  areaApi:areaApi(axiosInstance),
+  operationApi: operationApi(axiosInstance)
 }
 export default api

+ 70 - 0
src/api/modules/operation.ts

@@ -0,0 +1,70 @@
+import { ApiInstance } from '../type'
+import {LocationQueryValue} from "vue-router";
+
+// 新增
+export interface AddOperation {
+  typeAttr: string,
+  deptId: string,
+  username: string,
+  mobile: string,
+  identity: string,
+  identityTimeStart: string,
+  identityTimeEnd: string,
+  leaderId: string,
+  referrerId: string,
+
+  sex?: string,
+  birthday?: string,
+  nations?: string,
+  koseki?: string,
+  maritalStatus?: string,
+  politicsStatus?: string,
+  health?: string,
+  province?: string,
+  city?: string,
+  district?: string,
+  liveAddress?: string,
+  postalCode?: string,
+  education?: string,
+  graduationTime?: string,
+  school?: string,
+  isComputer?: string,
+  emergencyContactName?: string,
+  emergencyContactTel?: string,
+  salary?: string,
+  salaryLevel?: string,
+  bankCardId?: string,
+  bankName?: string
+
+}
+// 列表
+export interface OperationSearch {
+  pages: number,
+  size: number,
+  salesman?: string
+  deptId?: string,
+  typeAttr?: string,
+  deptName?: string,
+  status?: number,
+  isEnable?: number,
+  leaderId?: string
+}
+// 启用/禁用
+export interface OperationIsEnable {
+  id: string[],
+  isEnable: number
+}
+export interface OperationEdit extends AddOperation {
+  id: string
+}
+// 业务员管理相关接口
+const operationApi = (axiosInstance: ApiInstance) => ({
+  addOperation: (data: AddOperation) => axiosInstance.post('/userInfo/add', data), // 新赠
+  operationList: (data: OperationSearch) => axiosInstance.post('/userInfo/getUserInfoList', data), // 列表
+  operationDelete: (data: string[]) => axiosInstance.post('/userInfo/delete', data), // 删除
+  operationIsEnable: (data: OperationIsEnable) => axiosInstance.post('/userInfo/isEnable', data), // 启用/禁用
+  operationDetail: (data: string | null | LocationQueryValue[] | undefined) => axiosInstance.get(`/userInfo/getUserInfo?id=${data}`), // 详情
+  operationEdit: (data: OperationEdit) => axiosInstance.post('/userInfo/update', data), // 编辑
+})
+
+export default operationApi

+ 0 - 21
src/components/LoginForm/index.vue

@@ -40,19 +40,11 @@ const form = ref({
   captcha: "",
   system: "PLATFORM",
   captchaId: 0,
-<<<<<<< HEAD
   systemCode: "",
 });
-const rules = ref<FormRules>({
-  userName: [{ required: true, trigger: "blur", message: "请输入用户名" }],
-  systemCode: [{ required: true, trigger: "blur", message: "请输入租户编码" }],
-=======
-  system: "",
-});
 const rules = ref<FormRules>({
   userName: [{ required: true, trigger: "blur", message: "请输入用户名" }],
   system: [{ required: true, trigger: "blur", message: "请输入租户编码" }],
->>>>>>> origin/liuheng
   passWord: [
     { required: true, trigger: "blur", message: "请输入密码" },
     { min: 6, max: 18, trigger: "blur", message: "密码长度为6到18位" },
@@ -94,17 +86,10 @@ function handleLogin() {
         .then(() => {
           if (remember) {
             localStorage.setItem("login_account", form.value.userName);
-<<<<<<< HEAD
-          } else {
-            localStorage.removeItem("login_account");
-          }
-=======
-
           } else {
             localStorage.removeItem("login_account");
           }
           localStorage.setItem("login_system", form.value.system);
->>>>>>> origin/liuheng
           emits("onLogin", form.value.userName);
         })
         .finally(() => {
@@ -181,15 +166,9 @@ function handleLogin() {
         <div class="tag"></div>
       </div>
       <div>
-<<<<<<< HEAD
-        <ElFormItem prop="systemCode">
-          <ElInput
-            v-model="form.systemCode"
-=======
         <ElFormItem prop="system">
           <ElInput
             v-model="form.system"
->>>>>>> origin/liuheng
             placeholder="输入租户编码"
             type="text"
             tabindex="1"

+ 25 - 0
src/views/operationManagement/modules/addCard.vue

@@ -18,12 +18,21 @@
       <el-form-item prop="photo" label="照片">
         <ImageUpload action="#" :ext="['png','jpg','jpeg']" :size="5"></ImageUpload>
       </el-form-item>
+      <div style="display: flex; justify-content: flex-end">
+        <el-button @click="onSubmit(0)">取消</el-button>
+        <el-button type="primary" @click="onSubmit(BankRef, 1)">确定</el-button>
+      </div>
     </el-form>
   </div>
 </template>
 
 <script setup lang="ts">
 import { ref } from 'vue'
+import {ElMessage, FormInstance} from 'element-plus'
+
+const BankRef = ref<FormInstance>()
+
+const emits = defineEmits(['closeDialog'])
 
 let bankForm = ref({
   name: '',
@@ -43,6 +52,22 @@ const bankRules = {
     { required: true, message: '请填写开户行', trigger: 'blur' }
   ],
 }
+const onSubmit = async (BankRef:FormInstance, type: number) => {
+  if(!BankRef) {
+    emits('closeDialog', false)
+    return
+  }
+  await BankRef.validate((valid) => {
+    if(valid) {
+
+    } else {
+      ElMessage({
+        message: '请正确填写相关信息!',
+        type: 'warning'
+      })
+    }
+  })
+}
 
 </script>
 

+ 173 - 48
src/views/operationManagement/modules/addOperation.vue

@@ -11,15 +11,15 @@
           <template #default>
             <el-row :gutter="20">
               <el-col :span="10">
-                <el-form-item prop="type" label="业务员类型">
-                  <el-select v-model="operationForm" placeholder="请选择业务员类型">
+                <el-form-item prop="typeAttr" label="业务员类型">
+                  <el-select v-model="operationForm.typeAttr" placeholder="请选择业务员类型">
                     <el-option key="1" value="类型1"></el-option>
                   </el-select>
                 </el-form-item>
               </el-col>
               <el-col :span="10">
-                <el-form-item prop="team" label="所属团队">
-                  <el-select v-model="operationForm" placeholder="请选择所属团队">
+                <el-form-item prop="deptId" label="所属团队">
+                  <el-select v-model="operationForm.deptId" placeholder="请选择所属团队">
                     <el-option key="1" value="团队1"></el-option>
                   </el-select>
                 </el-form-item>
@@ -27,47 +27,49 @@
             </el-row>
             <el-row :gutter="20">
               <el-col :span="10">
-                <el-form-item prop="name" label="姓名">
-                  <el-input v-model="operationForm" placeholder="请填写姓名"></el-input>
+                <el-form-item prop="username" label="姓名">
+                  <el-input v-model="operationForm.username" placeholder="请填写姓名"></el-input>
                 </el-form-item>
               </el-col>
               <el-col :span="10">
-                <el-form-item prop="telephone" label="手机号">
-                  <el-input v-model="operationForm" placeholder="请填写手机号"></el-input>
+                <el-form-item prop="mobile" label="手机号">
+                  <el-input 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-select v-model="operationForm" placeholder="请选择所属机构">
+                  <el-select v-model="operationForm.organization" placeholder="请选择所属机构">
                     <el-option key="1" value="机构1"></el-option>
                   </el-select>
                 </el-form-item>
               </el-col>
               <el-col :span="10">
-                <el-form-item prop="number" label="证件号">
-                  <el-input v-model="operationForm" placeholder="请填写证件号"></el-input>
+                <el-form-item prop="identity" label="证件号">
+                  <el-input v-model="operationForm.identity" placeholder="请填写证件号"></el-input>
                 </el-form-item>
               </el-col>
             </el-row>
             <el-row :gutter="20">
               <el-col :span="10">
-                <el-form-item prop="startTime" label="证件有效期始">
+                <el-form-item prop="identityTimeStart" label="证件有效期始">
                   <el-date-picker
-                    v-model="operationForm"
+                    v-model="operationForm.identityTimeStart"
                     type="date"
                     placeholder="请选择"
+                    format="YYYY-MM-DD"
                     style="width: 100%"
                   />
                 </el-form-item>
               </el-col>
               <el-col :span="10">
-                <el-form-item prop="endTime" label="证件有效期止">
+                <el-form-item prop="identityTimeEnd" label="证件有效期止">
                   <el-date-picker
-                    v-model="operationForm"
+                    v-model="operationForm.identityTimeEnd"
                     type="date"
                     placeholder="请选择"
+                    format="YYYY-MM-DD"
                     style="width: 100%"
                   />
                 </el-form-item>
@@ -81,25 +83,29 @@
           <template #default>
             <el-row :gutter="20">
               <el-col :span="10">
-                <el-form-item prop="name" label="管理人">
-                  <el-input v-model="operationForm" placeholder="请填写管理人"></el-input>
+                <el-form-item prop="leaderId" label="管理人">
+                  <el-select v-model="operationForm.leaderId" placeholder="请选择管理人">
+                    <el-option key="1" value="机构1"></el-option>
+                  </el-select>
                 </el-form-item>
               </el-col>
               <el-col :span="10">
-                <el-form-item prop="telephone" label="管理人工号">
-                  <el-input v-model="operationForm" placeholder="请填写管理人工号"></el-input>
+                <el-form-item prop="leaderNumber" label="管理人工号">
+                  <el-input v-model="operationForm.leaderNumber" placeholder="请填写管理人工号"></el-input>
                 </el-form-item>
               </el-col>
             </el-row>
             <el-row :gutter="20">
               <el-col :span="10">
-                <el-form-item prop="name" label="推荐人">
-                  <el-input v-model="operationForm" placeholder="请填写推荐人"></el-input>
+                <el-form-item prop="referrerId" label="推荐人">
+                  <el-select v-model="operationForm.referrerId" placeholder="请选择推荐人">
+                    <el-option key="1" value="机构1"></el-option>
+                  </el-select>
                 </el-form-item>
               </el-col>
               <el-col :span="10">
-                <el-form-item prop="telephone" label="推荐人工号">
-                  <el-input v-model="operationForm" placeholder="请填写推荐人工号"></el-input>
+                <el-form-item prop="referrerNumber" label="推荐人工号">
+                  <el-input v-model="operationForm.referrerNumber" placeholder="请填写推荐人工号"></el-input>
                 </el-form-item>
               </el-col>
             </el-row>
@@ -170,7 +176,7 @@
             <el-row :gutter="20">
               <el-col :span="10">
                 <el-form-item prop="sex" label="性别">
-                  <el-select v-model="operationForm" placeholder="请选择性别">
+                  <el-select v-model="operationForm.sex" placeholder="请选择性别">
                     <el-option key="1" value="类型1"></el-option>
                   </el-select>
                 </el-form-item>
@@ -178,9 +184,10 @@
               <el-col :span="10">
                 <el-form-item prop="born" label="出生日期">
                   <el-date-picker
-                    v-model="operationForm"
+                    v-model="operationForm.birthday"
                     type="date"
                     placeholder="请选择"
+                    format="YYYY-MM-DD"
                     style="width: 100%"
                   />
                 </el-form-item>
@@ -189,28 +196,28 @@
             <el-row :gutter="20">
               <el-col :span="10">
                 <el-form-item prop="type" label="民族">
-                  <el-select v-model="operationForm" placeholder="请选择业务员类型">
+                  <el-select v-model="operationForm.nations" placeholder="请选择业务员类型">
                     <el-option key="1" value="类型1"></el-option>
                   </el-select>
                 </el-form-item>
               </el-col>
               <el-col :span="10">
                 <el-form-item prop="team" label="户籍">
-                  <el-input v-model="operationForm" placeholder="请填写户籍"></el-input>
+                  <el-input v-model="operationForm.koseki" placeholder="请填写户籍"></el-input>
                 </el-form-item>
               </el-col>
             </el-row>
             <el-row :gutter="20">
               <el-col :span="10">
                 <el-form-item prop="type" label="婚姻状况">
-                  <el-select v-model="operationForm" placeholder="请选择婚姻状况">
+                  <el-select v-model="operationForm.maritalStatus" placeholder="请选择婚姻状况">
                     <el-option key="1" value="类型1"></el-option>
                   </el-select>
                 </el-form-item>
               </el-col>
               <el-col :span="10">
                 <el-form-item prop="team" label="政治面貌">
-                  <el-select v-model="operationForm" placeholder="请选择政治面貌">
+                  <el-select v-model="operationForm.politicsStatus" placeholder="请选择政治面貌">
                     <el-option key="1" value="团队1"></el-option>
                   </el-select>
                 </el-form-item>
@@ -219,14 +226,14 @@
             <el-row :gutter="20">
               <el-col :span="10">
                 <el-form-item prop="type" label="健康状况">
-                  <el-select v-model="operationForm" placeholder="请选择健康状况">
+                  <el-select v-model="operationForm.health" placeholder="请选择健康状况">
                     <el-option key="1" value="类型1"></el-option>
                   </el-select>
                 </el-form-item>
               </el-col>
               <el-col :span="10">
                 <el-form-item prop="team" label="居住地区">
-                  <el-select v-model="operationForm" placeholder="请选择居住地区">
+                  <el-select v-model="operationForm.address" placeholder="请选择居住地区">
                     <el-option key="1" value="团队1"></el-option>
                   </el-select>
                 </el-form-item>
@@ -235,12 +242,12 @@
             <el-row :gutter="20">
               <el-col :span="10">
                 <el-form-item prop="team" label="详细地址">
-                  <el-input v-model="operationForm" placeholder="请填写详细地址"></el-input>
+                  <el-input v-model="operationForm.liveAddress" placeholder="请填写详细地址"></el-input>
                 </el-form-item>
               </el-col>
               <el-col :span="10">
                 <el-form-item prop="team" label="邮政编码">
-                  <el-input v-model="operationForm" placeholder="请填写邮政编码"></el-input>
+                  <el-input v-model="operationForm.postalCode" placeholder="请填写邮政编码"></el-input>
                 </el-form-item>
               </el-col>
             </el-row>
@@ -253,7 +260,7 @@
             <el-row :gutter="20">
               <el-col :span="10">
                 <el-form-item prop="sex" label="学历">
-                  <el-select v-model="operationForm" placeholder="请选择学历">
+                  <el-select v-model="operationForm.education" placeholder="请选择学历">
                     <el-option key="1" value="类型1"></el-option>
                   </el-select>
                 </el-form-item>
@@ -261,9 +268,10 @@
               <el-col :span="10">
                 <el-form-item prop="born" label="毕业时间">
                   <el-date-picker
-                    v-model="operationForm"
+                    v-model="operationForm.graduationTime"
                     type="date"
                     placeholder="请选择"
+                    format="YYYY-MM-DD"
                     style="width: 100%"
                   />
                 </el-form-item>
@@ -272,13 +280,14 @@
             <el-row :gutter="20">
               <el-col :span="10">
                 <el-form-item prop="type" label="毕业院校">
-                  <el-input v-model="operationForm" placeholder="请填写毕业院校"></el-input>
+                  <el-input v-model="operationForm.school" placeholder="请填写毕业院校"></el-input>
                 </el-form-item>
               </el-col>
               <el-col :span="10">
                 <el-form-item prop="team" label="是否计算机专业">
-                  <el-select v-model="operationForm" placeholder="请选择是否计算机专业">
-                    <el-option key="1" value="类型1"></el-option>
+                  <el-select v-model="operationForm.isComputer" placeholder="请选择是否计算机专业">
+                    <el-option key="是" value="是"></el-option>
+                    <el-option key="否" value="否"></el-option>
                   </el-select>
                 </el-form-item>
               </el-col>
@@ -292,12 +301,12 @@
             <el-row :gutter="20">
               <el-col :span="10">
                 <el-form-item prop="team" label="姓名">
-                  <el-input v-model="operationForm" placeholder="请填写姓名"></el-input>
+                  <el-input v-model="operationForm.emergencyContactName" placeholder="请填写姓名"></el-input>
                 </el-form-item>
               </el-col>
               <el-col :span="10">
                 <el-form-item prop="team" label="手机号">
-                  <el-input v-model="operationForm" placeholder="请填写手机号"></el-input>
+                  <el-input v-model="operationForm.emergencyContactTel" placeholder="请填写手机号"></el-input>
                 </el-form-item>
               </el-col>
             </el-row>
@@ -310,24 +319,24 @@
             <el-row :gutter="20">
               <el-col :span="10">
                 <el-form-item prop="team" label="工资">
-                  <el-input v-model="operationForm" placeholder="请填写工资"></el-input>
+                  <el-input v-model="operationForm.salary" placeholder="请填写工资"></el-input>
                 </el-form-item>
               </el-col>
               <el-col :span="10">
                 <el-form-item prop="team" label="工资等级">
-                  <el-input v-model="operationForm" placeholder="请填写工资等级"></el-input>
+                  <el-input v-model="operationForm.salaryLevel" placeholder="请填写工资等级"></el-input>
                 </el-form-item>
               </el-col>
             </el-row>
             <el-row :gutter="20">
               <el-col :span="10">
                 <el-form-item prop="team" label="银行卡号">
-                  <el-input v-model="operationForm" placeholder="请填写银行卡号"></el-input>
+                  <el-input v-model="operationForm.bankCardId" placeholder="请填写银行卡号"></el-input>
                 </el-form-item>
               </el-col>
               <el-col :span="10">
                 <el-form-item prop="team" label="开户行">
-                  <el-input v-model="operationForm" placeholder="请填写开户行"></el-input>
+                  <el-input v-model="operationForm.bankName" placeholder="请填写开户行"></el-input>
                 </el-form-item>
               </el-col>
             </el-row>
@@ -405,6 +414,10 @@
           </template>
         </el-descriptions-item>
       </el-descriptions>
+      <div style="display: flex; justify-content: flex-end">
+        <el-button @click="onSubmit(0)">取消</el-button>
+        <el-button type="primary" @click="onSubmit(OperationFormRef, 1)">确定</el-button>
+      </div>
     </el-form>
     <div class="image-view" v-if="imageShow" @click="imageShow = false">
       <img :src="imageUrl" />
@@ -413,15 +426,108 @@
 </template>
 
 <script setup lang="ts">
-import { ref } from 'vue'
+import { ref, defineEmits } from 'vue'
+import type { AddOperation } from '@/api/modules/operation.ts'
+import type { FormRules, FormInstance } from "element-plus";
+import api from "@/api";
+import {ElMessage} from "element-plus";
+
+interface OperationFormProps extends AddOperation {
+  organization: string
+  leaderNumber: string,
+  referrerNumber: string,
+  address?: string[]
+}
+
+let emits = defineEmits(['closeDialog'])
 
+const OperationFormRef = ref<FormInstance>()
 // 添加/编辑业务员表单
-let operationForm = ref({
+let operationForm = ref<OperationFormProps>({
+  typeAttr: '',
+  deptId: '',
+  username: '',
+  mobile: '',
+  identity: '',
+  identityTimeStart: '',
+  identityTimeEnd: '',
+  leaderId: '',
+  leaderNumber: '',
+  referrerId: '',
+  referrerNumber: '',
 
+  sex: '',
+  birthday: '',
+  nations: '',
+  koseki: '',
+  maritalStatus: '',
+  politicsStatus: '',
+  health: '',
+  province: '',
+  city: '',
+  district: '',
+  address: [],
+  liveAddress: '',
+  postalCode: '',
+  education: '',
+  graduationTime: '',
+  school: '',
+  isComputer: '',
+  emergencyContactName: '',
+  emergencyContactTel: '',
+  salary: '',
+  salaryLevel: '',
+  bankCardId: '',
+  bankName: ''
 })
 // 添加/编辑业务员表单校验
-let operationRules = ref({
-
+const operationRules = ref<FormRules>({
+  typeAttr: [
+    { required: true, trigger: "change", message: "请选择业务员类型" }
+  ],
+  deptId: [
+    { required: true, trigger: "change", message: "请选择所属团队" }
+  ],
+  username: [
+    { required: true, trigger: "blur", message: "请填写姓名" }
+  ],
+  mobile: [
+    { required: true, trigger: "blur", message: "请填写手机号" },
+    {
+      pattern: /^1[34578][0-9]{9}$/,
+      message: '请填写正确的手机号',
+      trigger: 'blur'
+    }
+  ],
+  organization: [
+    { required: true, trigger: "change", message: "请选择所属机构" }
+  ],
+  identity: [
+    { required: true, trigger: "blur", message: "请填写证件号" },
+    {
+      pattern: /^[1-9]\d{5}(19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9X]$/,
+      message: '请填写正确的身份证号',
+      trigger: 'blur'
+    }
+  ],
+  identityTimeStart: [
+    { required: true, trigger: "change", message: "请选择证件有效期始" }
+  ],
+  identityTimeEnd: [
+    { required: true, trigger: "change", message: "请选择证件有效期止" }
+  ],
+  leaderId: [
+    { required: true, trigger: "change", message: "请选择管理人" }
+  ],
+  leaderNumber: [
+    { required: true, trigger: "blur", message: "请填写管理人工号" }
+  ],
+  referrerId: [
+    { required: true, trigger: "change", message: "请选择推荐人" }
+  ],
+  referrerNumber: [
+    { required: true, trigger: "blur", message: "请填写推荐人工号" }
+  ],
 })
 // 身份证人像面
 let IDCardFrontName = ref('')
@@ -517,6 +623,25 @@ const imageView = (type) => {
       break;
   }
 }
+
+const onSubmit = async (OperationFormRef: FormInstance, type: number) => {
+  if(!OperationFormRef) {
+    emits('closeDialog', false)
+    return
+  }
+  await OperationFormRef.validate((valid) => {
+    if(valid) {
+      api.operationApi.addOperation(operationForm.value).then(res => {
+        console.log(123, res)
+      })
+    } else {
+      ElMessage({
+        message: '请正确填写相关信息!',
+        type: 'warning'
+      })
+    }
+  })
+}
 </script>
 
 <style scoped lang="scss">

+ 213 - 76
src/views/operationManagement/operation.vue

@@ -9,17 +9,17 @@
       <el-row :gutter="20">
         <el-col :span="8">
           <el-form-item label="业务员" class="formItem">
-            <el-input v-model="form.operation" placeholder="输入姓名、手机号、工号查找"></el-input>
+            <el-input v-model="form.salesman" placeholder="输入姓名、手机号、工号查找"></el-input>
           </el-form-item>
         </el-col>
         <el-col :span="8">
           <el-form-item label="归属机构" class="formItem">
-            <el-cascader style="width: 100%" v-model="form.organization" :options="options" />
+            <el-cascader style="width: 100%" :options="options" @change="organizationChange" />
           </el-form-item>
         </el-col>
         <el-col :span="8">
           <el-form-item label="类型" class="formItem">
-            <el-select v-model="form.type">
+            <el-select v-model="form.typeAttr">
               <el-option key="1" value="type1"></el-option>
               <el-option key="2" value="type2"></el-option>
               <el-option key="3" value="type3"></el-option>
@@ -30,12 +30,12 @@
       <el-row :gutter="20">
         <el-col :span="8">
           <el-form-item label="所属" class="formItem">
-            <el-input v-model="form.belong" placeholder="渠道、团队、电销组名称查找"></el-input>
+            <el-input v-model="form.deptName" placeholder="渠道、团队、电销组名称查找"></el-input>
           </el-form-item>
         </el-col>
         <el-col :span="8">
           <el-form-item label="人员状态" class="formItem">
-            <el-select v-model="form.staffState">
+            <el-select v-model="form.status">
               <el-option key="1" value="type1"></el-option>
               <el-option key="2" value="type2"></el-option>
               <el-option key="3" value="type3"></el-option>
@@ -44,10 +44,9 @@
         </el-col>
         <el-col :span="8">
           <el-form-item label="账号状态" class="formItem">
-            <el-select v-model="form.accountState">
-              <el-option key="1" value="type1"></el-option>
-              <el-option key="2" value="type2"></el-option>
-              <el-option key="3" value="type3"></el-option>
+            <el-select v-model="form.isEnable">
+              <el-option key="0" value="禁用"></el-option>
+              <el-option key="1" value="启用"></el-option>
             </el-select>
           </el-form-item>
         </el-col>
@@ -55,7 +54,7 @@
       <el-row :gutter="20">
         <el-col :span="8">
           <el-form-item label="管理人" class="formItem">
-            <el-input v-model="form.person" placeholder="管理人姓名、工号"></el-input>
+            <el-input v-model="form.leaderId" placeholder="管理人姓名、工号"></el-input>
           </el-form-item>
         </el-col>
         <el-col :span="8">
@@ -66,8 +65,8 @@
     </el-form>
     <el-row :gutter="20" style="margin: 20px 0" flex>
       <el-col :span="3" style="display: flex">
-        <el-checkbox @change="selectAll"></el-checkbox>&nbsp;
-        <el-select class="select-all" placeholder="全选" v-model="selectType" style="width: 120px">
+        <el-checkbox @change="selectAll" v-model="selectAllValue"></el-checkbox>&nbsp;
+        <el-select class="select-all" placeholder="全选" v-model="selectType" style="width: 120px" @change="selectTypeChange">
           <el-option key="all" value="选中所有数据"></el-option>
           <el-option key="cur" value="选中本页数据"></el-option>
         </el-select>
@@ -91,21 +90,23 @@
     </el-row>
     <el-table
       :data="tableData"
+      ref="operationListRef"
       height="460"
+      @selection-change="handleSelectionChange"
     >
       <el-table-column type="selection" width="55"></el-table-column>
-      <el-table-column label="姓名" prop="name" width="80"></el-table-column>
-      <el-table-column label="手机号" prop="" width="150"></el-table-column>
-      <el-table-column label="工号" prop="" width="200"></el-table-column>
-      <el-table-column label="类型" prop="" width="100"></el-table-column>
-      <el-table-column label="归属" prop="" width="200"></el-table-column>
-      <el-table-column label="所属机构" prop="" width="200"></el-table-column>
-      <el-table-column label="人员状态" prop="" width="150"></el-table-column>
-      <el-table-column label="账号状态" prop="" width="150"></el-table-column>
-      <el-table-column label="管理人" prop="" width="150"></el-table-column>
-      <el-table-column label="管理人工号" prop="" width="200"></el-table-column>
-      <el-table-column label="推荐人" prop="" width="150"></el-table-column>
-      <el-table-column label="推荐人工号" prop="" width="200"></el-table-column>
+      <el-table-column label="姓名" prop="username" width="80"></el-table-column>
+      <el-table-column label="手机号" prop="mobile" width="150"></el-table-column>
+      <el-table-column label="工号" prop="userId" width="200"></el-table-column>
+      <el-table-column label="类型" prop="typeAttr" width="100"></el-table-column>
+      <el-table-column label="归属" prop="deptName" width="200"></el-table-column>
+      <el-table-column label="所属机构" prop="deptName" width="200"></el-table-column>
+      <el-table-column label="人员状态" prop="status" width="150"></el-table-column>
+      <el-table-column label="账号状态" prop="isEnable" width="150"></el-table-column>
+      <el-table-column label="管理人" prop="leaderName" width="150"></el-table-column>
+      <el-table-column label="管理人工号" prop="leaderId" width="200"></el-table-column>
+      <el-table-column label="推荐人" prop="referrerName" width="150"></el-table-column>
+      <el-table-column label="推荐人工号" prop="referrerId" width="200"></el-table-column>
       <el-table-column fixed="right" label="操作" width="120">
         <template #default="scope">
           <div style="display: flex; align-items: center; justify-content: space-between">
@@ -133,7 +134,7 @@
         v-model:page-size="pageSize"
         :page-sizes="[10, 20, 30, 40]"
         layout="total, sizes, prev, pager, next, jumper"
-        :total="400"
+        :total="total"
         @size-change="handleSizeChange"
         @current-change="handleCurrentChange"
       />
@@ -143,26 +144,14 @@
       :title="title"
       width="1000"
     >
-      <addOperation></addOperation>
-      <template #footer>
-        <div>
-          <el-button plain @click="() => { dialogShow = false }">取消</el-button>
-          <el-button type="primary">确定</el-button>
-        </div>
-      </template>
+      <addOperation @closeDialog="closeAddOperation"></addOperation>
     </el-dialog>
     <el-dialog
       v-model="bankCardDialogShow"
       title="添加银行卡"
       width="500"
     >
-      <addCard></addCard>
-      <template #footer>
-        <div>
-          <el-button plain @click="() => { bankCardDialogShow = false }">取消</el-button>
-          <el-button type="primary">确定</el-button>
-        </div>
-      </template>
+      <addCard @closeDialog="closeAddBankCard"></addCard>
     </el-dialog>
     <el-dialog
       v-model="allocationShow"
@@ -180,20 +169,44 @@ import { useRouter } from 'vue-router'
 import addOperation from './modules/addOperation.vue'
 import addCard from './modules/addCard.vue'
 import allocation from './modules/allocation.vue'
-import { ElMessageBox, ElMessage } from 'element-plus'
+import type { OperationSearch, OperationIsEnable } from '@/api/modules/operation.ts'
+import api from "@/api";
+import {ElMessageBox, ElMessage, TableInstance} from 'element-plus'
+import type { TabBarInstance } from 'element-plus'
 import Allocation from "@/views/operationManagement/modules/allocation.vue";
 
 let muRouter = useRouter()
 
+const operationListRef = ref<TableInstance>()
+
+interface TableDataProps {
+  username: string,
+  mobile: string,
+  id: string,
+  typeAttr: string,
+  deptName: string,
+  userId: string,
+  status: number,
+  isEnable: number,
+  leaderName: string,
+  leaderId: string,
+  referrerName: string,
+  referrerId: string
+}
+
+const organizationChange = (e) => {
+  console.log(123, e)
+}
+
 // 查询条件
-let form = ref({
-  operation: '',
-  organization: [],
-  type: '',
-  belong: '',
-  staffState: '',
-  accountState: '',
-  person: ''
+let form = ref<OperationSearch>({
+  salesman: '',
+  deptId: '',
+  typeAttr: '',
+  deptName: '',
+  status: '',
+  isEnable: '',
+  leaderId: ''
 })
 let options = [
   {
@@ -227,30 +240,105 @@ let options = [
 ]
 // 获取列表数据
 const init = () => {
-
+  api.operationApi.operationList({
+    pages: currentPage.value,
+    size: pageSize.value,
+    ...form.value
+  }).then(res => {
+    if(res?.code == 200) {
+      tableData.value = res.data.records
+      total.value = res.data.total
+    } else {
+      ElMessage({
+        message: res?.msg,
+        type: 'error'
+      })
+    }
+  })
+}
+// 删除
+const operationDel = (id: string[]) => {
+  api.operationApi.operationDelete({ id: id }).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 => {
+    if(res?.code == 200) {
+      ElMessage({
+        message: res.msg,
+        type: 'success'
+      })
+      init()
+    } else {
+      ElMessage({
+        message: res.msg,
+        type: 'warning'
+      })
+    }
+  })
 }
 // 搜索
 const search = () => {
-
+  init();
 }
 // 重置
 const reset = () => {
   form.value = {
-    operation: '',
-    organization: [],
-    type: '',
-    belong: '',
-    staffState: '',
-    accountState: '',
-    person: ''
+    salesman: '',
+    deptId: '',
+    typeAttr: '',
+    deptName: '',
+    status: '',
+    isEnable: '',
+    leaderId: ''
   }
+  currentPage.value = 1
+  pageSize.value = 10
+  init()
 }
+// 全选的类型
+let selectType = ref('')
+// 外部全选是否勾选
+let selectAllValue = ref(false)
 // 外部的全选
-const selectAll = () => {
+const selectAll = (type: boolean) => {
+  console.log(1111, type)
+  if(type) {
+    if(selectType.value) {
+      tableData.value.forEach((item: TableDataProps) => {
+        operationListRef.value!.toggleRowSelection(item, true)
+      })
+    }
+  } else {
+    tableData.value.forEach((item: TableDataProps) => {
+      operationListRef.value!.toggleRowSelection(item, false)
+    })
+    selectType.value = ''
+  }
+}
+// 表格组件中的勾选
+const handleSelectionChange = (row: TableDataProps) => {
 
 }
-// 全选的类型
-let selectType = ref('')
+// 全选类型改变
+const selectTypeChange = (type) => {
+  selectAllValue.value = true
+  tableData.value.forEach((item: TableDataProps) => {
+    operationListRef.value!.toggleRowSelection(item, true)
+  })
+}
 // 批量管理
 const dropdownCommand = (e) => {
   switch (e) {
@@ -263,7 +351,7 @@ const dropdownCommand = (e) => {
         confirmButtonText: '确定',
         cancelButtonText: '取消',
       }).then(( action ) => {
-
+        init()
       }).catch(( action ) => {
 
       })
@@ -277,15 +365,23 @@ const dropdownCommand = (e) => {
         confirmButtonText: '确定',
         cancelButtonText: '取消',
       }).then(( action ) => {
-
+        init()
       }).catch(( action ) => {
 
       })
       break;
     case '启用':
-      ElMessage({
-        message: '启用成功!',
-        type: 'success',
+      ElMessageBox({
+        title: '启用业务员',
+        message: '确定要启用该业务员吗?',
+        type: 'warning',
+        showCancelButton: true,
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+      }).then(( action ) => {
+        init()
+      }).catch(( action ) => {
+
       })
       break;
     case '分配管理人':
@@ -294,28 +390,33 @@ const dropdownCommand = (e) => {
   }
 }
 // 列表数据
-let tableData = ref([
-  {
-    name: 1
-  }
-])
+let tableData = ref<TableDataProps[]>([])
+
 // 分页数据
 // 页码
 let currentPage = ref(1)
 // 单页数量
 let pageSize = ref(10)
+// 总数
+let total = ref(0)
 // 单页数量变化
 const handleSizeChange = (size) => {
   pageSize.value = size
+  init()
 }
 // 页码变化
 const handleCurrentChange = (page) => {
   currentPage.value = page
+  init()
 }
+
 // 详情
 const showDetail = (scope) => {
   muRouter.push({
-    path: '/operationDetail'
+    path: '/operationDetail',
+    query: {
+      id: scope.row.id
+    }
   })
 }
 
@@ -338,7 +439,11 @@ const tableDataCommand = (scope, e) => {
         confirmButtonText: '确定',
         cancelButtonText: '取消',
       }).then(( action ) => {
-
+        if(action === 'confirm') {
+          let ids = [scope.row.id]
+          console.log(123123, ids)
+          operationDel(ids)
+        }
       }).catch(( action ) => {
 
       })
@@ -352,15 +457,35 @@ const tableDataCommand = (scope, e) => {
         confirmButtonText: '确定',
         cancelButtonText: '取消',
       }).then(( action ) => {
-
+        if(action === 'confirm') {
+          let data = {
+            id: [scope.row.id],
+            isEnable: 0
+          }
+          operationIsEnable(data)
+        }
       }).catch(( action ) => {
 
       })
       break;
     case '启用':
-      ElMessage({
-        message: '启用成功!',
-        type: 'success',
+      ElMessageBox({
+        title: '启用业务员',
+        message: '确定要启用该业务员吗?',
+        type: 'warning',
+        showCancelButton: true,
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+      }).then(( action ) => {
+        if(action === 'confirm'){
+          let data = {
+            id: [scope.row.id],
+            isEnable: 1
+          }
+          operationIsEnable(data)
+        }
+      }).catch(( action ) => {
+
       })
       break;
     case '添加银行卡':
@@ -378,12 +503,24 @@ const addNumber = () => {
 }
 // 添加/编辑业务员弹框
 let dialogShow = ref(false)
+// 关闭新增弹框
+const closeAddOperation = (bool: boolean) => {
+  dialogShow.value = bool
+}
+// 关闭添加银行卡弹框
+const closeAddBankCard = (bool: boolean) => {
+  bankCardDialogShow.value = bool
+}
 // 添加/编辑业务员弹框标题
 let title = ref('添加')
 
 // 分配管理人
 let allocationShow = ref(false)
 
+onMounted(() => {
+  init()
+})
+
 </script>
 
 <style scoped lang="scss">

+ 27 - 24
src/views/operationManagement/operationDetail.vue

@@ -15,8 +15,8 @@
         <template #title>
           <el-row :gutter="20" flex justify="space-between">
             <el-col :span="12" style="display: flex; align-items: center;">
-              <span class="firstName">w</span>
-              <span class="allName">姓名</span>
+              <span class="firstName">{{ dataDetail.username?dataDetail.username:'' }}</span>
+              <span class="allName">{{ dataDetail.username?dataDetail.username:'--' }}</span>
             </el-col>
             <el-col :span="12" style="display: flex; justify-content: flex-end">
               <el-button plain @click="checkPass">审核通过</el-button>
@@ -137,25 +137,6 @@
       width="1000"
     >
       <addOperation></addOperation>
-      <template #footer>
-        <div>
-          <el-button plain @click="() => { dialogShow = false }">取消</el-button>
-          <el-button type="primary">确定</el-button>
-        </div>
-      </template>
-    </el-dialog>
-    <el-dialog
-      v-model="bankCardDialogShow"
-      title="添加银行卡"
-      width="500"
-    >
-      <addCard></addCard>
-      <template #footer>
-        <div>
-          <el-button plain @click="() => { bankCardDialogShow = false }">取消</el-button>
-          <el-button type="primary">确定</el-button>
-        </div>
-      </template>
     </el-dialog>
     <el-dialog
       v-model="allocationShow"
@@ -174,6 +155,10 @@ import addCard from './modules/addCard.vue'
 import allocation from './modules/allocation.vue'
 import {ElMessage, ElMessageBox} from 'element-plus'
 import Allocation from "@/views/operationManagement/modules/allocation.vue";
+import { useRoute } from 'vue-router'
+import api from '@/api'
+
+const myRoute = useRoute()
 
 // 更多
 const handleCommand = (e) => {
@@ -221,9 +206,7 @@ const handleCommand = (e) => {
 let allocationShow = ref(false)
 
 // 银行卡列表数据
-let tableData = ref([
-  {name: 1}
-])
+let tableData = ref([])
 
 // Tabs切换
 let activeName = ref('msg')
@@ -264,6 +247,26 @@ const editDetail = () => {
   dialogShow.value = true
 }
 
+// 详情
+let dataDetail = ref({})
+const initDetail = () => {
+  let id = myRoute.query?.id
+  api.operationApi.operationDetail(id).then(res => {
+    console.log(123, res)
+    if(res?.code == 200) {
+      dataDetail.value = res.data.data
+    } else {
+      ElMessage({
+        message: res.msg,
+        type: 'warning'
+      })
+    }
+  })
+}
+
+onMounted(() => {
+  initDetail()
+})
 
 </script>