Browse Source

Merge remote-tracking branch 'origin/wuguojie' into dev

wuguojie 1 year ago
parent
commit
9a1d0e50c7
35 changed files with 1246 additions and 575 deletions
  1. 6 0
      .idea/inspectionProfiles/Project_Default.xml
  2. 4 0
      .idea/watcherTasks.xml
  3. 6 0
      src/api/index.ts
  4. 5 6
      src/api/modules/operation.ts
  5. 2 1
      src/api/modules/project.ts
  6. 2 2
      src/api/modules/role.ts
  7. 9 7
      src/api/modules/user.ts
  8. BIN
      src/assets/images/btn-bg.png
  9. BIN
      src/assets/images/close.png
  10. BIN
      src/assets/images/image.png
  11. BIN
      src/assets/images/word.png
  12. 37 0
      src/assets/styles/common/style.scss
  13. 20 10
      src/components/ImgCropper/index.vue
  14. 9 7
      src/components/Table/index.vue
  15. 70 22
      src/layouts/components/DrivingType/index.vue
  16. 1 0
      src/layouts/components/InsuranceType/index.vue
  17. 75 0
      src/layouts/components/JYXDetail/index.vue
  18. 8 6
      src/router/modules/quoteConfig.ts
  19. 15 11
      src/store/modules/user.ts
  20. 45 11
      src/views/contentManagement/advertisement.vue
  21. 7 4
      src/views/contentManagement/message.vue
  22. 45 23
      src/views/contentManagement/modules/addAdvertisement.vue
  23. 44 28
      src/views/contentManagement/modules/addMessage.vue
  24. 7 6
      src/views/marketingManagement/configurate.vue
  25. 250 46
      src/views/operationManagement/modules/addOperation.vue
  26. 32 24
      src/views/operationManagement/operation.vue
  27. 58 33
      src/views/operationManagement/operationDetail.vue
  28. 13 13
      src/views/personnel/institutionManage.vue
  29. 36 38
      src/views/personnel/memberManagement.vue
  30. 142 40
      src/views/personnel/modules/addOperation.vue
  31. 3 3
      src/views/personnel/modules/editInstitution.vue
  32. 225 191
      src/views/personnel/roleManagement.vue
  33. 1 1
      src/views/quoteConfig/project/index.vue
  34. 58 31
      src/views/quoteConfig/project/modules/projectAdd.vue
  35. 11 11
      src/views/representative/detail.vue

+ 6 - 0
.idea/inspectionProfiles/Project_Default.xml

@@ -0,0 +1,6 @@
+<component name="InspectionProjectProfileManager">
+  <profile version="1.0">
+    <option name="myName" value="Project Default" />
+    <inspection_tool class="Stylelint" enabled="true" level="ERROR" enabled_by_default="true" />
+  </profile>
+</component>

+ 4 - 0
.idea/watcherTasks.xml

@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectTasksOptions" suppressed-tasks="Sass" />
+</project>

+ 6 - 0
src/api/index.ts

@@ -4,6 +4,7 @@ import { ApiInstance } from './type'
 import axios from 'axios'
 // import qs from 'qs'
 import Message from 'vue-m-message'
+import { ElMessage } from 'element-plus'
 // 导入 API 模块
 import appApi from './modules/app'
 import userApi from './modules/user'
@@ -77,6 +78,11 @@ axiosInstance.interceptors.response.use(
           duration: 2000,
         })
         useUserStore().logout()
+      } else if(response.data.code === 400) {
+        ElMessage({
+          message: `${response.data.msg}!!!`,
+          type: 'error',
+        })
       }
     }
     return Promise.resolve(response.data)

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

@@ -41,20 +41,19 @@ export interface AddOperation {
   contract?: string,
   applicant?: string,
   salaryTable?: string,
-  leaveTable?: string
+  leaveTable?: string,
 }
 // 列表
 export interface OperationSearch {
-  pages: number,
-  size: number,
   salesman?: string,
   organizationName?: string,
   deptId?: string,
   typeAttr?: string,
   deptName?: string,
-  status?: number,
+  status?: string,
   isEnable?: string,
-  leaderId?: string
+  leaderId?: string,
+  [key: string]: any
 }
 // 银行卡
 export interface AddBankCard {
@@ -79,7 +78,7 @@ export interface GetUser {
 }
 // 业务员管理相关接口
 const operationApi = (axiosInstance: ApiInstance) => ({
-  addOperation: (data: AddOperation) => axiosInstance.post('/userInfo/add', data), // 新赠
+  addOperation: (data: any) => axiosInstance.post('/userInfo/add', data), // 新赠
   updateOperation: (data: any) => axiosInstance.post('/userInfo/update', data), //编辑
   operationList: (data: OperationSearch) => axiosInstance.post('/userInfo/getUserInfoList', data), // 列表
   operationDelete: (data: {

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

@@ -22,7 +22,8 @@ const projectApi = (axiosInstance: ApiInstance) => ({
     productId: string,
     schemeType: string
   }) => axiosInstance.get(`/scheme/getSchemeByCompany?companyId=${data.companyId}&productId=${data.productId}&schemeType=${data.schemeType}`), // 新增时如果有方案获取对应方案
-  getCompanyList:() => axiosInstance.get('/scheme/getCompanyList')
+  getCompanyList:() => axiosInstance.get('/scheme/getCompanyList'), // 保司list
+  getById: (data: string) => axiosInstance.get(`/jyxConfig/getById?id=${data}`), // 驾意险详情
 })
 
 export default projectApi

+ 2 - 2
src/api/modules/role.ts

@@ -1,7 +1,7 @@
 import { ApiInstance } from '../type'
 interface roleData {
   name: string;
-  desc: string;
+  remark: string;
   system: string,
   permsId: number[],
   perms: string[],
@@ -11,7 +11,7 @@ const roleApi = (axiosInstance: ApiInstance) => ({
   roleAdd: (data: any) => axiosInstance.post('userRole/roleAdd', data, {}),
 
   //角色列表
-  roleList:(data: roleData) => axiosInstance.post('userRole/roleList', data, {}),
+  roleList:(data: any) => axiosInstance.post('userRole/roleList', data, {}),
 
   //查询角色信息
   roleInfo:(params: any) => axiosInstance.get('userRole/roleGet', {params}),

+ 9 - 7
src/api/modules/user.ts

@@ -1,4 +1,5 @@
 import { ApiInstance } from '../type'
+import { LocationQueryValue } from "vue-router";
 interface LoginData {
   userName: string
   passWord: string
@@ -311,14 +312,14 @@ const userApi = (axiosInstance: ApiInstance) => ({
   AllMemberList: (data: SysRoleVo) => axiosInstance.post('/userInfo/getUser', data, { }),
 
   //成员详情
-  getUserInfo: (params: Request) => axiosInstance.get('/userInfo/getUserInfo', {params}),
+  getUserInfo: (params: { id: string | LocationQueryValue[] }) => axiosInstance.get('/userInfo/getUserInfo', {params}),
 
   //编辑成员
   updateUserInfo: (data: SysRoleVo) => axiosInstance.post('/userInfo/update', data, { }),
 
   //获取是否可以资源转移信息
-  getTransferInfo: (params: Request) => axiosInstance.get('/userInfo/getTransferInfo', {params}),
-  
+  getTransferInfo: (params: { id: string }) => axiosInstance.get('/userInfo/getTransferInfo', {params}),
+
   //资源转移
   transfer: (data: Request) => axiosInstance.post('/userInfo/transfer', data, { }),
 
@@ -333,10 +334,11 @@ const userApi = (axiosInstance: ApiInstance) => ({
 
   //离职
   userQuitApply: (data: {userId:string}) => axiosInstance.post('/userInfo/userQuitApply', data, { }),
-  
-  
-  
-  
+
+  // 获取当前登录用户的信息
+  getCurUserInfo: () => axiosInstance.get('/auth/getUserInfo')
+
+
 })
 
 export default userApi

BIN
src/assets/images/btn-bg.png


BIN
src/assets/images/close.png


BIN
src/assets/images/image.png


BIN
src/assets/images/word.png


+ 37 - 0
src/assets/styles/common/style.scss

@@ -0,0 +1,37 @@
+.m-r-8 {
+  margin-right: 8px;
+}
+.p-w-12 {
+  padding: 0 0 0 12px;
+}
+.bg-F9 {
+  background: #F9F9F9;
+}
+.pad-24{
+  padding: 2px 24px;
+}
+.bg-white{
+  background-color: #ffffff;
+}
+/*
+按钮样式
+is-plain
+*/
+.radius-2px{
+  border-radius: 2px;
+}
+.width-100{
+  width: 100%;
+}
+/*
+布局样式
+*/
+.col-108 {
+  width: 108px;
+}
+.col-210 {
+  width: 210px;
+}
+.col-33 {
+  width: 33%;
+}

+ 20 - 10
src/components/ImgCropper/index.vue

@@ -3,11 +3,12 @@ import 'vue-cropper/dist/index.css'
 import { VueCropper } from 'vue-cropper'
 import {ref,defineEmits} from "vue"
 import api from '@/api'
+import {ElMessage} from "element-plus";
 
 interface Props{
   imgUrl: string;
   imgName:string;
-  
+
 }
 const props = withDefaults(defineProps<Props>(),{
   imgUrl:'',
@@ -17,7 +18,7 @@ const props = withDefaults(defineProps<Props>(),{
 const emit = defineEmits(['uploadImg']);
 const cropper = ref<InstanceType<typeof VueCropper>>()
 const inputRef = ref<HTMLInputElement>()
-  
+
 const loading = ref<boolean>(false)
 const isReady = ref<boolean>(false)
 // vue-cropper的基本配置
@@ -61,7 +62,7 @@ const realTime = () => {
 }
 // 初始化
 const imgLoad = (msg: string) => {
-  
+
   if (msg === 'success') {
     isReady.value = true
   }
@@ -108,7 +109,7 @@ const rotateRight = () => {
 const imgUpload = () => {
   //获取截图的blob数据
   // console.log(cropper.value)
-  
+
   // console.log(cropper.value.scaleImg)
 
   cropper.value.getCropBlob(async (data: File) => {
@@ -116,18 +117,27 @@ const imgUpload = () => {
     const files = new File([data],img.value?.name || props.imgName,{
       type:data.type
     }); // 声明formData数据类型
- 
-   
+
+
     formData.append('file',files)
     // console.log(img.value.size)
     // console.log(data)
     // params.append("file", );
-  
+
     api.areaApi.fileUpload(formData).then((res: any) => {
-      
+
         if (res.code === 200) {
           // console.log(res)
+          ElMessage({
+            message: '上传成功',
+            type: 'success'
+          })
           emit("uploadImg", res.data);
+        } else {
+          ElMessage({
+            message: res.msg,
+            type: 'warning'
+          })
         }
     });
     // 上传到服务器
@@ -143,7 +153,7 @@ const selectClick = () => {
     <div class="w-[800px] h-[300px]">
       <div class="w-[800px] h-[300px] flex items-center justify-between">
         <!-- 给组件固定宽高 -->
-        <div class="h-[300px] w-[510px]" style="display: 300px; width: 500px">
+        <div class="h-[300px] w-[510px]" style="width: 500px">
           <VueCropper
             ref="cropper"
             :img="option.img"
@@ -205,4 +215,4 @@ const selectClick = () => {
     </div>
   </div>
 </template>
-<style scoped lang="scss"></style>
+<style scoped lang="scss"></style>

+ 9 - 7
src/components/Table/index.vue

@@ -11,6 +11,7 @@
         style="width: 100%"
         row-key="id"
         :tree-props="props.treeProps"
+        :height="props.height"
         @selection-change="selectChange"
         @select-all="selectAllChange"
       >
@@ -39,13 +40,13 @@
             <slot name="search" :slotData="column"></slot>
           </template>
           <template #default="scope">
-            
-          
-              
+
+
+
               <component v-if="column.formatter" :is="column.formatter(scope.row, column, scope.row[column.prop], scope.$index)" class="routerlick" />
               <span v-else>{{ scope.row[column.prop] }}</span>
-            
-            
+
+
           </template>
         </el-table-column>
         <el-table-column label="操作" v-if="showOperation">
@@ -108,7 +109,8 @@ interface Props{
   showSelect: boolean;
   showIndex: boolean;
   showOperation:boolean;
-  treeProps:{}
+  treeProps:{},
+  height?: string | number,
 }
 const props = withDefaults(defineProps<Props>(),{
   showOperation:true,
@@ -203,7 +205,7 @@ const selectChange = (value: any[]) => {
   :deep(.cell) {
     display: flex;
     align-items: center;
-    justify-content: center;
+    justify-content: flex-start;
   }
   .table-title-btn {
     margin-bottom: 20px;

+ 70 - 22
src/layouts/components/DrivingType/index.vue

@@ -11,12 +11,24 @@
           <el-checkbox style="display: block;" v-for="JYX in JYXList" :key="JYX.id" :value="JYX.id" :label="JYX.productName"></el-checkbox>
         </el-checkbox-group>-->
         <div class="insuranceLeft">
-          <div class="insuranceItem" v-for="(item, index) in handleSearchName" @click="handleType(item, index)">
+<!--          <div class="insuranceItem" v-for="(item, index) in handleSearchName" @click="handleType(item, index)">
           <span class="checkIcon" :class="{ 'active': item.checked }">
             <el-icon><Select /></el-icon>
           </span>
             <span>{{ item.productName }}</span>
-          </div>
+          </div>-->
+          <el-tree
+            ref="treeRef"
+            :data="JYXList"
+            :props="defaultProps"
+            show-checkbox
+            node-key="id"
+            @check="handleCheckChange"
+            :check-strictly="true"
+            :default-expand-all="true"
+            :default-checked-keys="selectedKeys"
+            :filter-node-method="handleSearchName"
+          ></el-tree>
         </div>
       </el-col>
       <el-divider direction="vertical" style="height: 100%;"></el-divider>
@@ -42,19 +54,52 @@
 
 <script setup lang="ts">
 
-const emits = defineEmits(['close'])
-
 // 查找
 import api from "@/api";
-import {ElMessage} from "element-plus";
+import { ElMessage } from "element-plus";
+import type { ElTree } from 'element-plus'
+
+const treeRef = ref<InstanceType<typeof ElTree>>()
+
+const emits = defineEmits(['close'])
 
 let searchName = ref('')
-const handleSearchName = computed(() => {
-  return JYXList.value.filter(a => a.productName.includes(searchName.value))
+
+watch(searchName, (val) => {
+  treeRef.value!.filter(val)
 })
+// const handleSearchName = computed(() => {
+//   return JYXList.value.filter(a => a.productName.includes(searchName.value))
+// })
+const handleSearchName = (value: string, data: any) => {
+  if (!value) return true
+  return data.productName.includes(value)
+}
+
+// 默认勾选的数据
+let selectedKeys = ref([])
 
 // 驾意险
 let JYXList = ref([])
+const defaultProps = {
+  children: 'children',
+  label: 'productName',
+}
+const handleCheckChange = (data, row) => {
+  if(row.checkedNodes.length > 0) {
+    let list1 = row.checkedNodes.filter(a => a.parentId == '0')
+    let list2 = row.checkedNodes.filter(a => a.parentId != '0')
+    if(list1.length > 0) {
+      let list3 = list1.filter(a => list2.some(b => b.parentId == a.id))
+      selectedList.value = row.checkedNodes.filter(a => !list3.some(b => b.id == a.id))
+    } else {
+      selectedList.value = list2
+    }
+    selectedList.value .forEach(item => {
+      item.drivingIntentionId = item.id
+    })
+  }
+}
 // const initJYX = () => {
 //   api.projectApi.jyxList({
 //     company: '173881173559933834'
@@ -89,11 +134,13 @@ const handleType = (item, index) => {
 // 删除
 const handleDel = (item, index) => {
   selectedList.value.splice(index, 1)
-  JYXList.value?.forEach(sub => {
-    if(sub.id === item.id) {
-      sub.checked = false
-    }
-  })
+  selectedKeys.value = selectedList.value.map(a => a.drivingIntentionId)
+  treeRef.value!.setCheckedKeys(selectedKeys.value, true)
+  // JYXList.value?.forEach(sub => {
+  //   if(sub.id === item.id) {
+  //     sub.checked = false
+  //   }
+  // })
 }
 
 // 编辑
@@ -112,19 +159,20 @@ const initEditData = (data, index) => {
         res.data.forEach(item => {
           item.checked = false
           item.drivingIntentionId = item.id
-          item.id = ''
         })
       }
       JYXList.value = res.data
       if(data && data.length > 0) {
-        data.forEach(item => {
-          item.checked = true
-        })
-        JYXList.value = res.data.map(a => {
-          let obj = data.find(b => b.drivingIntentionId === a.drivingIntentionId)
-          return obj || a
-        })
-        selectedList.value = JYXList.value.filter(a => a.checked)
+        // data.forEach(item => {
+        //   item.checked = true
+        // })
+        // JYXList.value = res.data.map(a => {
+        //   let obj = data.find(b => b.drivingIntentionId === a.drivingIntentionId)
+        //   return obj || a
+        // })
+        // selectedList.value = JYXList.value.filter(a => a.checked)
+        selectedList.value = JSON.parse(JSON.stringify(data))
+        selectedKeys.value = selectedList.value.map(a => a.drivingIntentionId)
       }
     } else {
       ElMessage({
@@ -145,7 +193,7 @@ const handleCancel = () => {
 // 保存
 const handleConfirm = () => {
   emits('close', {
-    list: JYXList.value,
+    list: selectedList.value,
     index: editIndex.value
   })
 }

+ 1 - 0
src/layouts/components/InsuranceType/index.vue

@@ -121,6 +121,7 @@ const handleConfirm = () => {
 // 修改数据
 let editIndex = ref(0)
 const initEditData = (data, index, type) => {
+  console.log(1111, data)
   editIndex.value = index
   insuranceType.value = type
   api.projectApi.getBusinessInsurance().then(res => {

+ 75 - 0
src/layouts/components/JYXDetail/index.vue

@@ -0,0 +1,75 @@
+<template>
+  <div>
+    <el-row :gutter="20">
+      <el-col class="m-top-10" :span="12">
+        产品类型:{{ detailData?.productType=='1'?'主险':detailData?.productType=='2'?'附加险':'--' }}
+      </el-col>
+      <el-col class="m-top-10" :span="12">
+        上级产品:--
+      </el-col>
+      <el-col class="m-top-10" :span="12">
+        产品名称:{{ detailData?.productName?detailData?.productName:'--' }}
+      </el-col>
+      <el-col class="m-top-10" :span="12">
+        产品别名:{{ detailData?.alias?detailData?.alias:'--' }}
+      </el-col>
+      <el-col class="m-top-10" :span="12">
+        保险公司:{{ detailData?.companyName?detailData?.companyName:'--' }}
+      </el-col>
+      <el-col class="m-top-10" :span="12">
+        价格设置:{{ detailData?.premiumSetting=='1'?'统一价格':detailData?.premiumSetting=='2'?'座位数价格':'--' }}
+      </el-col>
+      <el-col class="m-top-10" :span="12" v-if="detailData?.premiumSetting=='1'">
+        总保额:{{ detailData?.coverage?`${detailData?.coverage}万`:'--' }}
+      </el-col>
+      <el-col class="m-top-10" :span="12" v-if="detailData?.premiumSetting=='1'">
+        总保费:{{ detailData?.premium?detailData?.premium:'--' }}
+      </el-col>
+      <el-divider></el-divider>
+      <el-col :span="4"  v-if="detailData?.premiumSetting=='2'">座位数:</el-col>
+      <el-col :span="20" v-if="detailData?.premiumSetting=='2'">
+        <el-row :gutter="20">
+          <el-col :span="12" v-for="item in detailData?.blameList">
+            {{ item.seats }}座 | {{ item.coverage }}万 | {{ item.premium }}元
+          </el-col>
+        </el-row>
+      </el-col>
+      <el-col class="m-top-10" :span="4">保障范围:</el-col>
+      <el-col class="m-top-10" :span="20">
+        <el-table
+          :data="detailData?.blameList"
+        >
+          <el-table-column prop="blame" label="保障范围"></el-table-column>
+          <el-table-column prop="blameCoverage" label="保额"></el-table-column>
+          <el-table-column prop="blamePremium" label="保费"></el-table-column>
+        </el-table>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script setup lang="ts">
+import api from "@/api";
+import {ElMessage} from "element-plus";
+
+let detailData = ref(undefined)
+let initData = (id) => {
+  api.projectApi.getById(id).then(res => {
+    if(res.code == 200) {
+      detailData.value = res.data
+    } else {
+      ElMessage({
+        message: res.msg,
+        type: 'warning'
+      })
+    }
+  })
+}
+defineExpose({
+  initData
+})
+</script>
+
+<style scoped lang="scss">
+
+</style>

+ 8 - 6
src/router/modules/quoteConfig.ts

@@ -25,7 +25,7 @@ const routes: RouteRecordRaw = {
           component: () => import('@/views/quoteConfig/agreement/agreementAdd.vue'),
           meta: {
             title: '协议添加',
-            menu:false,
+            menu: false,
             activeMenu: '/quoteConfig/agreement/agreementIndex',
           },
         },
@@ -35,7 +35,7 @@ const routes: RouteRecordRaw = {
           component: () => import('@/views/quoteConfig/agreement/agreementCopy.vue'),
           meta: {
             title: '复制协议',
-            menu:false,
+            menu: false,
             activeMenu: '/quoteConfig/agreement/agreementIndex',
           },
         },
@@ -61,6 +61,7 @@ const routes: RouteRecordRaw = {
         // auth:['role.add','role.view','role.delete','role.edit']
       },
     },
+
     {
       path: 'insuranceCompanyAccount',
       name: 'InsuranceCompanyAccount',
@@ -76,12 +77,13 @@ const routes: RouteRecordRaw = {
           component: () => import('@/views/quoteConfig/insuranceCompanyAccount/modules/insuranceAccountAdd.vue'),
           meta: {
             title: '保司账号',
-            menu:false,
-            auth: []
+            menu: false,
+            // auth: []
           },
         }
       ]
     },
+
     {
       path: 'project',
       name: 'Project',
@@ -97,8 +99,8 @@ const routes: RouteRecordRaw = {
           component: () => import('@/views/quoteConfig/project/modules/projectAdd.vue'),
           meta: {
             title: '方案管理',
-            menu:false,
-            auth: []
+            menu: false,
+            // auth: []
           },
         }
       ]

+ 15 - 11
src/store/modules/user.ts

@@ -18,6 +18,7 @@ const useUserStore = defineStore(
     const avatar = ref(localStorage.avatar ?? '')
     const permissions = ref<string[]>([])
     const staticRouter=ref<string[]>([])
+    let userInfo = ref({})
     const isLogin = computed(() => {
       if (token.value) {
         return true
@@ -32,20 +33,23 @@ const useUserStore = defineStore(
       system: string
       captchaId: number
     }) {
-        const res = await api.userApi.login(data)
-        
-        localStorage.setItem('userName', data.userName)
-        localStorage.setItem('token', res.data)
-        userName.value = data.userName
-        token.value = res.data
-        avatar.value = 'https://fantastic-admin.hurui.me/logo.png'
+      const res = await api.userApi.login(data)
+
+      localStorage.setItem('userName', data.userName)
+      localStorage.setItem('token', res.data)
+      userName.value = data.userName
+      token.value = res.data
+      avatar.value = 'https://fantastic-admin.hurui.me/logo.png'
+      const result = await api.userApi.getCurUserInfo()
+      localStorage.setItem('userDeptId', result.data.deptId)
+      userInfo.value = result.data
     }
     //获取运营交付菜单
     async function getMenu(codeItem) {
         const res = await api.menuApi.getTenantConfig({...codeItem})
-        
-      
-    
+
+
+
        if(res.code===200){
         // staticRouter.value=JSON.parse(res.data.sysConfig)
         localStorage.setItem("menu",res.data.sysConfig)
@@ -96,7 +100,7 @@ const useUserStore = defineStore(
       getPermissions,
       editPassword,
       getMenu,
-      
+      userInfo
     }
   },
 )

+ 45 - 11
src/views/contentManagement/advertisement.vue

@@ -4,16 +4,16 @@
       <el-form label-position="left" label-width="auto">
         <el-row :gutter="24">
           <el-col :span="6">
-            <el-form-item label="成员信息">
+            <el-form-item label="发布信息">
               <el-input
                 v-model="form.searchValue"
-                placeholder="输入成员信息查找"
+                placeholder="输入标题查找"
                 :prefix-icon="Search"
               />
             </el-form-item>
           </el-col>
           <el-col :span="6">
-            <el-form-item label="归属机构">
+            <el-form-item label="发布机构">
               <el-cascader
                 clearable
                 style="width: 100%"
@@ -50,10 +50,9 @@
             <!-- <el-button type="primary" @click="add(ruleFormRef)">
               <el-icon><Plus /></el-icon>添加机构</el-button
             > -->
-            <el-button
-              @click="router.push({ path: '/content/advertisement/advertisementEdit' })"
-              ><el-icon><Position /></el-icon>发布新的广告图</el-button
-            >
+            <el-button @click="handleAdd">
+              <el-icon><Position /></el-icon>发布新的广告图
+            </el-button>
           </div>
         </template>
         <template v-slot:operation="scope">
@@ -86,6 +85,15 @@
       >
       </Table>
     </el-dialog>
+    <el-dialog
+      v-model="imageShow"
+      title="图片查看"
+      width="500"
+    >
+      <div class="image-box">
+        <img :src="imageUrl"/>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
@@ -140,6 +148,9 @@ const tableProps = ref({
   children: "children",
   checkStrictly: true,
 });
+// 图片查看
+let imageShow = ref(false)
+let imageUrl = ref('')
 const typeformatter = (row: any, column: any, cellValue: any) => {
   return () =>
     h("div", null, [
@@ -148,7 +159,7 @@ const typeformatter = (row: any, column: any, cellValue: any) => {
         {
           onClick: () =>
             router.push({
-              path: "/content/message/messageEdit",
+              path: "/content/advertisement/advertisementEdit",
               query: {
                 id: row.id,
               },
@@ -168,7 +179,10 @@ const columns = [
   { prop: "name", label: "发布消息", formatter: typeformatter, width: 500 },
   { prop: "deptName", label: "广告图",
     formatter: (row: any, column: any, cellValue: any) => {
-      return () => h("img", {src:row.previewUrl}, );
+      return () => h("img", {src:row.previewUrl, onClick: () => {
+          imageShow.value = true
+          imageUrl.value = row.previewUrl
+        }}, );
     },
    },
 
@@ -225,7 +239,7 @@ const contentId = ref("");
 
 const pageInfo = {
   pageNum: 1,
-  pageSize: 10,
+  pageSize: 5,
   sizes: [10, 20, 30, 40, 50],
   total: 0,
   show: true,
@@ -238,6 +252,15 @@ const userPageInfo = {
   total: 0,
   show: true,
 };
+// 新增
+const handleAdd = () => {
+  router.push({
+    path: '/content/advertisement/advertisementEdit',
+    query: {
+      total: pageInfo.total
+    }
+  })
+}
 //分页列表功能
 const getList = (item: PageInfo) => {
   pageInfo.pageNum = item.pageNum;
@@ -274,6 +297,8 @@ const getContentList = () => {
     .posterQuery({
       ...form,
       ...pageInfo,
+      pages: pageInfo.pageNum,
+      size: pageInfo.pageSize
     })
     .then((res: any) => {
       if (res.code === 200) {
@@ -294,7 +319,6 @@ function editor(item: any) {
 }
 
 function del(item: any) {
-  
   ElMessageBox.confirm("确认要删除当前数据吗?", "提示", {
     confirmButtonText: "确认",
     cancelButtonText: "取消",
@@ -316,6 +340,9 @@ function del(item: any) {
 
 const reset = (item: any) => {
   // ElMessage({})
+  form.searchValue = ''
+  form.sendDeptId = ''
+  getContentList()
 };
 
 onMounted(() => {
@@ -385,6 +412,13 @@ onMounted(() => {
     box-sizing: border-box;
   }
 }
+
+.image-box{
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+
 :deep(.el-dropdown-link) {
   cursor: pointer;
   color: var(--el-color-primary);

+ 7 - 4
src/views/contentManagement/message.vue

@@ -4,16 +4,16 @@
       <el-form label-position="left" label-width="auto">
         <el-row :gutter="24">
           <el-col :span="6">
-            <el-form-item label="成员信息">
+            <el-form-item label="消息内容">
               <el-input
                 v-model="form.searchValue"
-                placeholder="输入成员信息查找"
+                placeholder="输入消息标题,内容"
                 :prefix-icon="Search"
               />
             </el-form-item>
           </el-col>
           <el-col :span="6">
-            <el-form-item label="归属机构">
+            <el-form-item label="发布机构">
               <el-cascader
                 clearable
                 style="width: 100%"
@@ -37,7 +37,7 @@
         :tableData="tableData"
         :columns="columns"
         :showIndex="false"
-        :showSelect="true"
+        :showSelect="false"
         :showOperation="true"
         :pageInfo="pageInfo"
         @getList="getList"
@@ -326,6 +326,9 @@ function del(item: any) {
 
 const reset = (item: any) => {
   // ElMessage({})
+  form.searchValue = ''
+  form.sendDeptId = ''
+  getContentList()
 };
 
 onMounted(() => {

+ 45 - 23
src/views/contentManagement/modules/addAdvertisement.vue

@@ -33,7 +33,7 @@
       </el-row>
       <el-row :gutter="24">
         <el-col :span="9">
-          <el-form-item label="URL" prop="">
+          <el-form-item label="URL" prop="url">
             <el-input v-model="ruleForm.url" clearable style="width: 400px" />
           </el-form-item>
         </el-col>
@@ -45,7 +45,6 @@
             </el-radio-group>
           </el-form-item>
         </el-col>
-        
       </el-row>
 
       <el-form-item label="广告图" prop="image">
@@ -77,17 +76,17 @@
 
 <script setup lang="ts">
 import { ref, reactive, onMounted } from "vue";
-import {ElMessage} from "element-plus"
+import {ElMessage, ElMessageBox} from "element-plus"
 import type { ComponentSize, FormInstance, FormRules, } from "element-plus";
 import api from "@/api";
 import router from "@/router";
-import { useRoute } from "vue-router";
-
+import { useRoute, useRouter } from "vue-router";
 
+const myRouter = useRouter()
 
 
 function uploadImg(file:any){
- 
+
   ruleForm.image=file.id
 }
 
@@ -115,7 +114,7 @@ onMounted(() => {
   // console.log(route)
   if(route.query?.id){
     api.advertisementApi.getById({id:route.query?.id}).then(res=>{
-      
+
       if(res.code===200){
         ruleForm.title=res.data.title
         ruleForm.orgId=res.data.orgId
@@ -127,6 +126,8 @@ onMounted(() => {
         imgName.value=res.data.uploadFiles.fileName
       }
     })
+  } else {
+    ruleForm.orgId = localStorage.getItem('userDeptId')
   }
 });
 
@@ -154,6 +155,13 @@ const rules = reactive<FormRules<RuleForm>>({
       trigger: "change",
     },
   ],
+  url: [
+    {
+      pattern: /^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/,
+      message: '请填写正确的URL地址',
+      trigger: 'change'
+    }
+  ],
   image: [
     {
       required: true,
@@ -177,7 +185,7 @@ function deptChange(e:any){
 }
 
 const submitForm = async (formEl: FormInstance | undefined) => {
- 
+
   if (!formEl) return;
   await formEl.validate((valid, fields) => {
     if (valid) {
@@ -193,25 +201,39 @@ const submitForm = async (formEl: FormInstance | undefined) => {
           }
         })
       }else{
-        api.advertisementApi.posterAdd({
-          ...ruleForm,
-          orgId:orgId.value
-        }).then(res=>{
-          if(res.code===200){
-            ElMessage.success(res.msg)
-            router.back()
-          }
-        })
+        if(route.query?.total&&route.query?.total >=5) {
+          ElMessageBox({
+            title: '温馨提示',
+            message: '当前已有5条广告图,添加时会将时间排序最晚的数据进行替换,是否继续保存?',
+            type: 'warning',
+            showCancelButton: true,
+            confirmButtonText: '继续保存',
+            cancelButtonText: '取消',
+          }).then((action) => {
+            if(action === 'confirm') {
+              api.advertisementApi.posterAdd({
+                ...ruleForm,
+                orgId:orgId.value
+              }).then(res=>{
+                if(res.code===200){
+                  ElMessage.success(res.msg)
+                  router.back()
+                }
+              })
+            }
+          })
+        }
       }
-
-      
-    } 
+    }
   });
 };
 
 const resetForm = (formEl: FormInstance | undefined) => {
   if (!formEl) return;
   formEl.resetFields();
+  myRouter.push({
+    path: '/content/advertisement'
+  })
 };
 
 //机构列表
@@ -228,11 +250,11 @@ function getID(json:any, id:string) {
     //核心:利用arry.forEach(function(currentValue),index,arr)遍历数组
     json.forEach(function(item:any) {
     //if用来判断外层,else if用来判断里层,调用递归函数的有2个判断条件在“有goods属性并且不为空”情况下才调用
-    
+
         if (item.id == id) {
-     
+
           return  o = item;
-          
+
         } else if (item.children && item.children.length > 0) {
             o = getID(item.children, id)//递归
         }

+ 44 - 28
src/views/contentManagement/modules/addMessage.vue

@@ -77,15 +77,16 @@ import {ElMessage} from "element-plus"
 import type { ComponentSize, FormInstance, FormRules, } from "element-plus";
 import api from "@/api";
 import router from "@/router";
-import { useRoute } from "vue-router";
+import { useRoute, useRouter } from "vue-router";
+import useUserStore from "@/store/modules/user.ts";
 
 interface RuleForm {
   title: string;
   sendDeptId: string;
   sendDeptName: string;
   content: string;
-  isChildren: string;
-  isForce: string;
+  isChildren: string | number;
+  isForce: string | number;
 }
 const tableProps = ref({
   value: "id",
@@ -94,12 +95,13 @@ const tableProps = ref({
   checkStrictly: true,
 });
 const route=useRoute()
+const myRouter = useRouter()
 onMounted(() => {
   getInstitutionList(); //机构列表
-  console.log(route)
+  // const userInfo = useUserStore()
   if(route.query?.id){
     api.contentApi.noticeGet({id:route.query?.id}).then(res=>{
-      
+
       if(res.code===200){
         ruleForm.title=res.data.title
         ruleForm.sendDeptId=res.data.sendDeptId
@@ -108,9 +110,11 @@ onMounted(() => {
         ruleForm.sendDeptName=res.data.sendDeptName
         ruleForm.isForce=res.data.isForce
         ruleForm.content=res.data.content
-        
+
       }
     })
+  } else {
+    ruleForm.sendDeptId = localStorage.getItem('userDeptId')
   }
 });
 
@@ -120,8 +124,8 @@ const ruleForm = reactive<RuleForm>({
   title: "",
   sendDeptId: "",
   sendDeptName: "",
-  isChildren: "",
-  isForce: "",
+  isChildren: 0,
+  isForce: 0,
   content: "",
 });
 
@@ -151,16 +155,14 @@ const sendDeptId=ref('')
 function deptChange(e:any){
   if(e){
     sendDeptId.value=e[e.length-1]
-
-    ruleForm.sendDeptName=getID(institutionList.value,sendDeptId.value).name
-    // console.log(getID(institutionList.value,sendDeptId.value))
+    ruleForm.sendDeptName=getID(institutionList.value,e[e.length-1]).name
   }else{
     sendDeptId.value=''
   }
 }
 
 const submitForm = async (formEl: FormInstance | undefined) => {
- 
+
   if (!formEl) return;
   await formEl.validate((valid, fields) => {
     if (valid) {
@@ -187,14 +189,17 @@ const submitForm = async (formEl: FormInstance | undefined) => {
         })
       }
 
-      
-    } 
+
+    }
   });
 };
 
 const resetForm = (formEl: FormInstance | undefined) => {
-  if (!formEl) return;
-  formEl.resetFields();
+  // if (!formEl) return;
+  // formEl.resetFields();
+  myRouter.push({
+    path: '/content/message'
+  })
 };
 
 //机构列表
@@ -209,18 +214,26 @@ function getID(json:any, id:string) {
     var o = {}; //专门用来保存筛选后的数组
     //定义一个函数getID(json,id),形参json用来接受传入的数组,形参id用来接受id号
     //核心:利用arry.forEach(function(currentValue),index,arr)遍历数组
-    json.forEach(function(item:any) {
-    //if用来判断外层,else if用来判断里层,调用递归函数的有2个判断条件在“有goods属性并且不为空”情况下才调用
-    
-        if (item.id == id) {
-     
-          return  o = item;
-          
-        } else if (item.children && item.children.length > 0) {
-            o = getID(item.children, id)//递归
-        }
-    });
-    return o; //全部遍历完之后返回对象o
+    // json.forEach(function(item:any) {
+    //   console.log(123, item)
+    // //if用来判断外层,else if用来判断里层,调用递归函数的有2个判断条件在“有goods属性并且不为空”情况下才调用
+    //     if (item.id == id) {
+    //       o = item
+    //       return o;
+    //     } else if (item.children && item.children.length > 0) {
+    //       o = getID(item.children, id)//递归
+    //     }
+    // });
+    // return o; //全部遍历完之后返回对象o
+  for (let i=0; i<json.length-1; i++) {
+    if(json[i].id === id) {
+      o = json[i]
+      break
+    } else if(json[i].children && json[i].children.length > 0) {
+      getID(json[i].children, id)
+    }
+  }
+  return o;
 }
 </script>
 <style lang="scss" scoped>
@@ -232,4 +245,7 @@ function getID(json:any, id:string) {
   padding: 15px;
   box-sizing: border-box;
 }
+:deep(.el-form-item.is-error .el-input__validateIcon) {
+  display: none;
+}
 </style>

+ 7 - 6
src/views/marketingManagement/configurate.vue

@@ -103,7 +103,7 @@
             </el-descriptions-item>
           </el-descriptions>
           <div class="btns">
-            <el-button plain @click="cancelFirst">取消</el-button>
+            <el-button plain @click="cancelFirst(BasicFormRef)">取消</el-button>
             <el-button type="primary" @click="confirmFirst(BasicFormRef)">下一步</el-button>
           </div>
         </el-col>
@@ -285,7 +285,8 @@ let option = ref([])
 const cascaderProps = {
   value: 'id',
   label: 'name',
-  children: 'children'
+  children: 'children',
+  checkStrictly: true,
 }
 const institutionList = () => {
   api.institutionApi.institutionList({ name: '', system: '' }).then(res => {
@@ -301,8 +302,10 @@ const institutionList = () => {
 }
 
 // 第一步取消
-const cancelFirst = () => {
-
+const cancelFirst = (BasicFormRef: FormInstance) => {
+  router.push({
+    path: '/marketingManagement/lottery'
+  })
 }
 const confirmFirst = async (BasicFormRef: FormInstance) => {
   if(!BasicFormRef) {
@@ -511,8 +514,6 @@ const deleteDeptData = (scope) => {
       checkedDeptIds.value = [...brr]
       basicForm.value.deptIds = [...checkedDeptIds.value]
       deptData.value = [...checkedDeptData.value]
-      console.log(123, basicForm.value.deptIds)
-      console.log(456, deptData.value)
     }
   }).catch(( action ) => {
 

+ 250 - 46
src/views/operationManagement/modules/addOperation.vue

@@ -99,7 +99,7 @@
               <el-col :span="10">
                 <el-form-item prop="leaderId" label="管理人">
                   <el-select v-model="operationForm.leaderId" filterable placeholder="请选择管理人" @change="(e) => {operationForm.leaderNumber = 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>
@@ -113,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 recommendList" :key="item.id" :value="item.id" :label="item.name"></el-option>
+                    <el-option v-for="(item, index) in userList" :key="item.id" :value="item.id" :label="item.name"></el-option>
                   </el-select>
                 </el-form-item>
               </el-col>
@@ -134,10 +134,25 @@
                 <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-button link type="primary" icon="Upload">上传</el-button>
               </el-upload>
               <div class="fileInfo" v-else>
-                <div class="fileName">{{ IDCardFrontName }}</div>
+                <div class="file-box">
+                  <div class="btn-top">
+                    <img class="image-close" @click="deleteImage(1)" src="@/assets/images/close.png" />
+<!--                    <el-icon class="btn-icon"><Delete /></el-icon>-->
+                  </div>
+                  <img class="file-img" :src="IDCardFront" />
+                  <div class="btn-bottom">
+                    <el-upload class="width-50" :show-file-list="false" :auto-upload="false" accept=".png, .jpg, .jpeg" @change="uploadImage($event, 1)" style="display: flex; align-items: center; justify-content: center; color: white">
+                      <el-icon><Upload /></el-icon>重新上传
+                    </el-upload>
+                    <div class="width-50" style="display: flex; align-items: center; justify-content: center; color: white; cursor:pointer;" @click="downloadImage(1)">
+                      <el-icon><Download /></el-icon>下载资料
+                    </div>
+                  </div>
+                </div>
+<!--                <div class="fileName">{{ IDCardFrontName }}</div>
                 <div class="fileBtn">
                   <el-upload :show-file-list="false" :auto-upload="false" accept=".png, .jpg, .jpeg" @change="uploadImage($event, 1)" style="display: flex; align-items: center">
                     <el-icon class="btn-icon"><Upload /></el-icon>
@@ -145,7 +160,7 @@
                   <el-icon class="btn-icon" @click="imageView(1)"><View /></el-icon>
                   <el-icon class="btn-icon" @click="downloadImage(1)"><Download /></el-icon>
                   <el-icon class="btn-icon" @click="deleteImage(1)"><Delete /></el-icon>
-                </div>
+                </div>-->
               </div>
             </el-form-item>
             <el-form-item prop="IDCardBack" label-width="150">
@@ -153,10 +168,25 @@
                 <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-button link type="primary" icon="Upload">上传</el-button>
               </el-upload>
               <div class="fileInfo" v-else>
-                <div class="fileName">{{ IDCardBackName }}</div>
+                <div class="file-box">
+                  <div class="btn-top">
+                    <img class="image-close" @click="deleteImage(2)" src="@/assets/images/close.png" />
+                    <!--                    <el-icon class="btn-icon"><Delete /></el-icon>-->
+                  </div>
+                  <img class="file-img" :src="IDCardBack" />
+                  <div class="btn-bottom">
+                    <el-upload class="width-50" :show-file-list="false" :auto-upload="false" accept=".png, .jpg, .jpeg" @change="uploadImage($event, 2)" style="display: flex; align-items: center; justify-content: center; color: white">
+                      <el-icon><Upload /></el-icon>重新上传
+                    </el-upload>
+                    <div class="width-50" style="display: flex; align-items: center; justify-content: center; color: white; cursor:pointer;" @click="downloadImage(2)">
+                      <el-icon><Download /></el-icon>下载资料
+                    </div>
+                  </div>
+                </div>
+<!--                <div class="fileName">{{ IDCardBackName }}</div>
                 <div class="fileBtn">
                   <el-upload :auto-upload="false" :show-file-list="false" accept=".png, .jpg, .jpeg" @change="uploadImage($event, 2)" style="display: flex; align-items: center">
                     <el-icon class="btn-icon"><Upload /></el-icon>
@@ -164,15 +194,30 @@
                   <el-icon class="btn-icon" @click="imageView(2)"><View /></el-icon>
                   <el-icon class="btn-icon" @click="downloadImage(2)"><Download /></el-icon>
                   <el-icon class="btn-icon" @click="deleteImage(2)"><Delete /></el-icon>
-                </div>
+                </div>-->
               </div>
             </el-form-item>
             <el-form-item prop="" label="展业资格证" label-width="150">
               <el-upload :auto-upload="false" v-if="!certification"  :show-file-list="false" accept=".png, .jpg, .jpeg" @change="uploadImage($event, 3)">
-                <el-button link type="primary">上传</el-button>
+                <el-button link type="primary" icon="Upload">上传</el-button>
               </el-upload>
               <div class="fileInfo" v-else>
-                <div class="fileName">{{ certificationName }}</div>
+                <div class="file-box">
+                  <div class="btn-top">
+                    <img class="image-close" @click="deleteImage(3)" src="@/assets/images/close.png" />
+                    <!--                    <el-icon class="btn-icon"><Delete /></el-icon>-->
+                  </div>
+                  <img class="file-img" :src="certification" />
+                  <div class="btn-bottom">
+                    <el-upload class="width-50" :show-file-list="false" :auto-upload="false" accept=".png, .jpg, .jpeg" @change="uploadImage($event, 3)" style="display: flex; align-items: center; justify-content: center; color: white">
+                      <el-icon><Upload /></el-icon>重新上传
+                    </el-upload>
+                    <div class="width-50" style="display: flex; align-items: center; justify-content: center; color: white; cursor:pointer;" @click="downloadImage(3)">
+                      <el-icon><Download /></el-icon>下载资料
+                    </div>
+                  </div>
+                </div>
+<!--                <div class="fileName">{{ certificationName }}</div>
                 <div class="fileBtn">
                   <el-upload :auto-upload="false" :show-file-list="false" accept=".png, .jpg, .jpeg" @change="uploadImage($event, 3)" style="display: flex; align-items: center">
                     <el-icon class="btn-icon"><Upload /></el-icon>
@@ -180,7 +225,7 @@
                   <el-icon class="btn-icon" @click="imageView(3)"><View /></el-icon>
                   <el-icon class="btn-icon" @click="downloadImage(3)"><Download /></el-icon>
                   <el-icon class="btn-icon" @click="deleteImage(3)"><Delete /></el-icon>
-                </div>
+                </div>-->
               </div>
             </el-form-item>
           </template>
@@ -376,13 +421,14 @@
         <el-descriptions-item>
           <template #default>
             <el-form-item prop="" label="劳动合同" label-width="150">
-              <el-upload v-if="!contract" :auto-upload="false" :show-file-list="false" accept=".png, .jpg, .jpeg" @change="uploadImage($event, 4)">
-                <el-button link type="primary">上传</el-button>
+              <el-upload v-if="!contract" :auto-upload="false" :show-file-list="false" accept=".png, .jpg, .jpeg, .pdf, .doc, .docx" @change="uploadImage($event, 4)">
+                <el-button link type="primary" icon="Upload">上传</el-button>
               </el-upload>
               <div class="fileInfo" v-else>
+                <img style="width: 40px; height: 40px" :src="contractName.includes('.png') || contractName.includes('.jpg') || contractName.includes('.jpeg')?image:contractName.includes('.pdf')?pdf:contractName.includes('.doc') || contractName.includes('.docx')?word:''" />
                 <div class="fileName">{{ contractName }}</div>
                 <div class="fileBtn">
-                  <el-upload :auto-upload="false" :show-file-list="false" accept=".png, .jpg, .jpeg" @change="uploadImage($event, 4)" style="display: flex; align-items: center">
+                  <el-upload :auto-upload="false" :show-file-list="false" accept=".png, .jpg, .jpeg, .pdf, .doc, .docx" @change="uploadImage($event, 4)" style="display: flex; align-items: center">
                     <el-icon class="btn-icon"><Upload /></el-icon>
                   </el-upload>
                   <el-icon class="btn-icon" @click="imageView(4)"><View /></el-icon>
@@ -392,13 +438,14 @@
               </div>
             </el-form-item>
             <el-form-item prop="" label="应聘表" label-width="150">
-              <el-upload v-if="!applicant" :auto-upload="false" :show-file-list="false" accept=".png, .jpg, .jpeg" @change="uploadImage($event, 5)">
-                <el-button link type="primary">上传</el-button>
+              <el-upload v-if="!applicant" :auto-upload="false" :show-file-list="false" accept=".png, .jpg, .jpeg, .pdf, .doc, .docx" @change="uploadImage($event, 5)">
+                <el-button link type="primary" icon="Upload">上传</el-button>
               </el-upload>
               <div class="fileInfo" v-else>
+                <img style="width: 40px; height: 40px" :src="applicantName.includes('.png') || applicantName.includes('.jpg') || applicantName.includes('.jpeg')?image:applicantName.includes('.pdf')?pdf:applicantName.includes('.doc') || applicantName.includes('.docx')?word:''" />
                 <div class="fileName">{{ applicantName }}</div>
                 <div class="fileBtn">
-                  <el-upload :auto-upload="false"  :show-file-list="false" accept=".png, .jpg, .jpeg" @change="uploadImage($event, 5)" style="display: flex; align-items: center">
+                  <el-upload :auto-upload="false"  :show-file-list="false" accept=".png, .jpg, .jpeg, .pdf, .doc, .docx" @change="uploadImage($event, 5)" style="display: flex; align-items: center">
                     <el-icon class="btn-icon"><Upload /></el-icon>
                   </el-upload>
                   <el-icon class="btn-icon" @click="imageView(5)"><View /></el-icon>
@@ -408,13 +455,14 @@
               </div>
             </el-form-item>
             <el-form-item prop="" label="定薪表" label-width="150">
-              <el-upload :auto-upload="false" v-if="!decidePay"  :show-file-list="false" accept=".png, .jpg, .jpeg" @change="uploadImage($event, 6)">
-                <el-button link type="primary">上传</el-button>
+              <el-upload :auto-upload="false" v-if="!decidePay"  :show-file-list="false" accept=".png, .jpg, .jpeg, .pdf, .doc, .docx" @change="uploadImage($event, 6)">
+                <el-button link type="primary" icon="Upload">上传</el-button>
               </el-upload>
               <div class="fileInfo" v-else>
+                <img style="width: 40px; height: 40px" :src="decidePayName.includes('.png') || decidePayName.includes('.jpg') || decidePayName.includes('.jpeg')?image:decidePayName.includes('.pdf')?pdf:decidePayName.includes('.doc') || decidePayName.includes('.docx')?word:''" />
                 <div class="fileName">{{ decidePayName }}</div>
                 <div class="fileBtn">
-                  <el-upload :auto-upload="false"  :show-file-list="false" accept=".png, .jpg, .jpeg" @change="uploadImage($event, 6)" style="display: flex; align-items: center">
+                  <el-upload :auto-upload="false"  :show-file-list="false" accept=".png, .jpg, .jpeg, .pdf, .doc, .docx" @change="uploadImage($event, 6)" style="display: flex; align-items: center">
                     <el-icon class="btn-icon"><Upload /></el-icon>
                   </el-upload>
                   <el-icon class="btn-icon" @click="imageView(6)"><View /></el-icon>
@@ -424,13 +472,14 @@
               </div>
             </el-form-item>
             <el-form-item prop="" label="离职表" label-width="150">
-              <el-upload :auto-upload="false" v-if="!dimission"  :show-file-list="false" accept=".png, .jpg, .jpeg" @change="uploadImage($event, 7)">
-                <el-button link type="primary">上传</el-button>
+              <el-upload :auto-upload="false" v-if="!dimission"  :show-file-list="false" accept=".png, .jpg, .jpeg, .pdf, .doc, .docx" @change="uploadImage($event, 7)">
+                <el-button link type="primary" icon="Upload">上传</el-button>
               </el-upload>
               <div class="fileInfo" v-else>
+                <img style="width: 40px; height: 40px" :src="dimissionName.includes('.png') || dimissionName.includes('.jpg') || dimissionName.includes('.jpeg')?image:dimissionName.includes('.pdf')?pdf:dimissionName.includes('.doc') || dimissionName.includes('.docx')?word:''" />
                 <div class="fileName">{{ dimissionName }}</div>
                 <div class="fileBtn">
-                  <el-upload :auto-upload="false"  :show-file-list="false" accept=".png, .jpg, .jpeg" @change="uploadImage($event, 7)" style="display: flex; align-items: center">
+                  <el-upload :auto-upload="false"  :show-file-list="false" accept=".png, .jpg, .jpeg, .pdf, .doc, .docx" @change="uploadImage($event, 7)" style="display: flex; align-items: center">
                     <el-icon class="btn-icon"><Upload /></el-icon>
                   </el-upload>
                   <el-icon class="btn-icon" @click="imageView(7)"><View /></el-icon>
@@ -447,9 +496,21 @@
         <el-button type="primary" @click="onSubmit(OperationFormRef, 1)">确定</el-button>
       </div>
     </el-form>
-    <div class="image-view" v-if="imageShow" @click="imageShow = false">
+<!--    <div class="image-view" v-if="imageShow" @click="imageShow = false">
       <img :src="imageUrl" />
-    </div>
+    </div>-->
+    <el-dialog
+      title="图片预览"
+      v-model="imageShow"
+    >
+      <img class="image-view" :src="imageUrl" />
+    </el-dialog>
+    <el-dialog
+      title="文件预览"
+      v-model="fileShow"
+    >
+      <div ref="pdfViewer" class="pdf-container"></div>
+    </el-dialog>
   </div>
 </template>
 
@@ -461,6 +522,12 @@ import { Plus } from '@element-plus/icons-vue'
 import api from "@/api";
 import { ElMessage } from "element-plus";
 
+import image from '@/assets/images/image.png'
+import word from '@/assets/images/word.png'
+import pdf from '@/assets/images/pdf.png'
+
+const pdfViewer = ref(null)
+
 interface OperationFormProps extends AddOperation {
   organization: string
   organizationId: string,
@@ -626,6 +693,7 @@ let dimission = ref('')
 // 图片预览地址
 let imageShow = ref(false)
 let imageUrl = ref('')
+let fileShow = ref(false)
 
 // 限制证件日期
 const disabledDateStart = (time: Date) => {
@@ -714,6 +782,67 @@ const initEditData = (id, ids) => {
   }
 }
 
+// 新增数据初始化
+const initAddData = () => {
+  operationForm.value = {
+    typeAttr: '',
+    deptId: '',
+    name: '',
+    mobile: '',
+    identity: '',
+    identityTimeStart: '',
+    identityTimeEnd: '',
+    leaderId: '',
+    referrerId: '',
+    sex: '',
+    birthday: '',
+    nations: '',
+    koseki: '',
+    maritalStatus: '',
+    politicsStatus: '',
+    health: '',
+    province: '',
+    city: '',
+    district: '',
+    liveAddress: '',
+    postalCode: '',
+    education: '',
+    graduationTime: '',
+    school: '',
+    isComputer: '',
+    emergencyContactName: '',
+    emergencyContactTel: '',
+    salary: '',
+    salaryLevel: '',
+    bankCardId: '',
+    bankName: '',
+    sfz1: '',
+    sfz2: '',
+    qualification: '',
+    contract: '',
+    applicant: '',
+    salaryTable: '',
+    leaveTable: '',
+    organizationId: '',
+    organization: '',
+    leaderNumber: '',
+    referrerNumber: '',
+    address: [],
+  }
+  IDCardFrontName.value = ''
+  IDCardFront.value = ''
+  IDCardBackName.value = ''
+  IDCardBack.value = ''
+  certificationName.value = ''
+  certification.value = ''
+  contractName.value = ''
+  contract.value = ''
+  applicantName.value = ''
+  applicant.value = ''
+  decidePayName.value = ''
+  decidePay.value = ''
+}
+
 // 上传接口
 let postUrl = ref(`${import.meta.env.VITE_APP_API_BASEURL}/file/upload`)
 // 上传图片
@@ -775,34 +904,77 @@ let recordShow = ref(false)
 
 // 图片预览
 const imageView = (type) => {
-  imageShow.value = true
   switch (type) {
     case 1:
+      imageShow.value = true
       imageUrl.value = IDCardFront.value
       break;
     case 2:
+      imageShow.value = true
       imageUrl.value = IDCardBack.value
       break;
     case 3:
+      imageShow.value = true
       imageUrl.value = certification.value
       break;
     case 4:
       imageUrl.value = contract.value
+      nextTick(() => {
+        // loadPdf(contract.value)
+        if(contract.value.includes('.pdf')) {
+          window.open(contract.value, '_blank')
+        } else if(contract.value.includes('.doc') || contract.value.includes('.docx')) {
+
+        } else if(contract.value.includes('.jpg') || contract.value.includes('.jpeg') || contract.value.includes('.png')) {
+          imageShow.value = true
+        }
+      })
       break;
     case 5:
       imageUrl.value = applicant.value
+      nextTick(() => {
+        // loadPdf(applicant.value)
+        if(applicant.value.includes('.pdf')) {
+          window.open(applicant.value, '_blank')
+        } else if(applicant.value.includes('.doc') || applicant.value.includes('.docx')) {
+
+        } else if(applicant.value.includes('.jpg') || applicant.value.includes('.jpeg') || applicant.value.includes('.png')) {
+          imageShow.value = true
+        }
+      })
       break;
     case 6:
       imageUrl.value = decidePay.value
+      nextTick(() => {
+        // loadPdf(decidePay.value)
+        if(decidePay.value.includes('.pdf')) {
+          window.open(decidePay.value, '_blank')
+        } else if(decidePay.value.includes('.doc') || decidePay.value.includes('.docx')) {
+
+        } else if(decidePay.value.includes('.jpg') || decidePay.value.includes('.jpeg') || decidePay.value.includes('.png')) {
+          imageShow.value = true
+        }
+      })
       break;
     case 7:
       imageUrl.value = dimission.value
+      nextTick(() => {
+        // loadPdf(dimission.value)
+        if(dimission.value.includes('.pdf')) {
+          window.open(dimission.value, '_blank')
+        } else if(dimission.value.includes('.doc') || dimission.value.includes('.docx')) {
+
+        } else if(dimission.value.includes('.jpg') || dimission.value.includes('.jpeg') || dimission.value.includes('.png')) {
+          imageShow.value = true
+        }
+      })
       break;
   }
 }
 
 // 图片下载
 const download = (url, name) => {
+  alert(1)
   let image = new Image();
   // 解决跨域 Canvas 污染问题
   image.setAttribute("crossOrigin", "anonymous");
@@ -1156,6 +1328,7 @@ const institutionList = () => {
   })
 }
 
+
 onMounted(() => {
   initInfo()
   getArea()
@@ -1164,7 +1337,8 @@ onMounted(() => {
 
 defineExpose({
   initEditData,
-  operationForm
+  operationForm,
+  initAddData
 })
 
 
@@ -1175,12 +1349,12 @@ defineExpose({
   display: flex;
   align-items: center;
   justify-content: flex-start;
-  padding: 2px 20px;
+  //padding: 2px 20px;
   border-radius: 5px;
   margin: 0 10px;
-  &:hover{
-    background: #ccc;
-  }
+  //&:hover{
+  //  background: #ccc;
+  //}
   .fileName{
     width: 200px;
     overflow: hidden;
@@ -1199,23 +1373,53 @@ defineExpose({
       }
     }
   }
+
+  .file-box{
+    position: relative;
+    .btn-top{
+      width: 100%;
+      display: flex;
+      align-items: center;
+      justify-content: flex-end;
+      position: absolute;
+      top: 0;
+      left: 0;
+      .image-close{
+        display: block;
+        width: 12px;
+        height: 12px;
+      }
+    }
+    .file-img{
+      display: block;
+      width: 208px;
+      height: 130px;
+      border-radius: 5px;
+    }
+    .btn-bottom{
+      position: absolute;
+      left: 0;
+      bottom: 0;
+      z-index: 1000;
+      display: flex;
+      align-items: center;
+      height: 24px;
+      width: 100%;
+      background: url("@/assets/images/btn-bg.png") no-repeat;
+      background-size: 100% 100%;
+      .width-50{
+        width: 50%;
+      }
+    }
+  }
+
 }
 .image-view{
-  position: absolute;
-  top: 0;
-  left: 0;
-  width: 100%;
-  height: 100%;
-  background: rgba(0,0,0,.6);
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  z-index: 9999;
-  img{
-    width: 800px;
-    height: 800px;
-    border-radius: 5px;
-  }
+  display: block;
+  width: 400px;
+  height: 260px;
+  border-radius: 5px;
+  margin: 0 auto;
 }
 :deep(.el-input__inner[type=number]::-webkit-outer-spin-button) {
   -webkit-appearance: none;

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

@@ -1,10 +1,10 @@
 <template>
-  <div class="operation">
+  <div class="operation pad-24">
     <el-form
       class="operationForm"
       ref="OperationRef"
       :model="form"
-      label-width="auto"
+      label-width="70"
     >
       <el-row :gutter="20">
         <el-col :span="8">
@@ -67,26 +67,28 @@
             <el-input clearable v-model="form.leaderId" placeholder="管理人姓名、工号"></el-input>
           </el-form-item>
         </el-col>
-        <el-col :span="8">
-          <el-button type="primary" @click="search()">查询</el-button>
-          <el-button type="primary" plain @click="reset()">重置</el-button>
+        <el-col :span="16" class="span-justify">
+          <el-button class="radius-2px" type="primary" @click="search()">查询</el-button>
+          <el-button class="radius-2px" plain @click="reset()">重置</el-button>
         </el-col>
       </el-row>
     </el-form>
-    <el-row :gutter="20" style="margin: 20px 0" flex>
-      <el-col :span="3" style="display: flex">
-        <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="all" label="选中所有数据"></el-option>
+    <el-row :gutter="8" style="margin: 20px 0" flex>
+      <span class="flex col-210 m-r-8 bg-F9">
+        <el-checkbox class="p-w-12" @change="selectAll" v-model="selectAllValue"></el-checkbox>&nbsp;
+        <el-select class="select-all width-100" placeholder="全选" v-model="selectType" @change="selectTypeChange">
+          <el-option key="all" value="all" :label="`选中所有数据${total}条`"></el-option>
           <el-option key="cur" value="cur" label="选中本页数据"></el-option>
         </el-select>
-      </el-col>
-      <el-col :span="2">
-        <el-button type="primary" icon="plus" @click="addNumber">添加成员</el-button>
-      </el-col>
-      <el-col :span="2">
-        <el-dropdown trigger="click" placement="bottom" @command="dropdownCommand">
-          <el-button>批量管理</el-button>
+      </span>
+      <div class="col-108 m-r-8">
+        <el-button class="radius-2px width-100" type="primary" icon="plus" @click="addNumber">添加成员</el-button>
+      </div>
+      <span class="col-108 m-r-8">
+        <el-dropdown class="width-100" trigger="click" placement="bottom" @command="dropdownCommand">
+          <el-button class="radius-2px width-100">
+            批量管理&nbsp;&nbsp;<el-icon><ArrowDown /></el-icon>
+          </el-button>
           <template #dropdown>
             <el-dropdown-menu>
               <el-dropdown-item command="启用">启用</el-dropdown-item>
@@ -96,12 +98,12 @@
             </el-dropdown-menu>
           </template>
         </el-dropdown>
-      </el-col>
+      </span>
     </el-row>
     <el-table
       :data="tableData"
       ref="operationListRef"
-      height="460"
+      height="536"
       @selection-change="handleSelectionChange"
     >
       <el-table-column type="selection" width="55"></el-table-column>
@@ -150,7 +152,7 @@
         </template>
       </el-table-column>
     </el-table>
-    <div style="display: flex; justify-content: center; margin-top: 15px">
+    <div style="display: flex; justify-content: flex-end; margin-top: 15px">
       <el-pagination
         v-model:current-page="currentPage"
         v-model:page-size="pageSize"
@@ -374,7 +376,7 @@ const selectAll = (type: boolean) => {
   }
 }
 // 表格组件中的勾选
-const handleSelectionChange = (row: TableDataProps) => {
+const handleSelectionChange = (row: any) => {
   selectedList.value = row
 }
 // 全选类型改变
@@ -640,6 +642,9 @@ const tableDataCommand = (scope, e) => {
 const addNumber = () => {
   dialogShow.value = true
   title.value = '添加'
+  nextTick(() => {
+    AddOperationRef.value.initAddData()
+  })
 }
 // 添加/编辑业务员弹框
 let dialogShow = ref(false)
@@ -671,13 +676,16 @@ onMounted(() => {
 </script>
 
 <style scoped lang="scss">
+@use "@/assets/styles/common/style.scss";
 .operation{
   margin: 0 20px;
+  background: white;
   .operationForm{
     margin: 20px 0;
-  }
-  .formItem{
-    width: 350px;
+    .span-justify{
+      display: flex;
+      justify-content: flex-end;
+    }
   }
   :deep(.select-all .el-select__wrapper){
     box-shadow: none;

+ 58 - 33
src/views/operationManagement/operationDetail.vue

@@ -19,11 +19,11 @@
               <span class="allName">{{ dataDetail?.name }}</span>
             </el-col>
             <el-col :span="12" style="display: flex; justify-content: flex-end">
-              <el-button plain @click="checkPass" v-if="dataDetail?.status == 0 ||dataDetail?.status == 1 ||dataDetail?.status == 2 ||dataDetail?.status == 3 ">审核通过</el-button>
-              <el-button plain @click="checkNotPass" v-if="dataDetail?.status != 5&&dataDetail?.status != 6&&dataDetail?.status != 7&&dataDetail?.status != 8">审核不通过</el-button>
-              <el-button plain @click="editDetail">编辑</el-button>&nbsp;
+              <el-button class="bg-white" style="border-radius: 2px" plain type="primary" @click="checkPass" v-if="dataDetail?.status == 0 ||dataDetail?.status == 1 ||dataDetail?.status == 2 ||dataDetail?.status == 3 ">审核通过</el-button>
+              <el-button class="bg-white" style="border-radius: 2px" plain type="primary" @click="checkNotPass" v-if="dataDetail?.status != 5&&dataDetail?.status != 6&&dataDetail?.status != 7&&dataDetail?.status != 8">审核不通过</el-button>
+              <el-button class="bg-white" style="border-radius: 2px" plain type="primary" @click="editDetail">编辑</el-button>&nbsp;
               <el-dropdown trigger="click" @command="handleCommand">
-                <el-button plain>更多</el-button>
+                <el-button class="bg-white" style="border-radius: 2px" plain type="primary">更多</el-button>
                 <template #dropdown>
                   <el-dropdown-menu>
                     <el-dropdown-item command="启用">启用</el-dropdown-item>
@@ -36,29 +36,45 @@
             </el-col>
           </el-row>
         </template>
-        <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 == '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>
+        <el-descriptions-item label="工号:" width="33%">{{ dataDetail?.userId }}</el-descriptions-item>
+        <el-descriptions-item label="所属机构:" width="33%">{{ dataDetail?.deptName }}</el-descriptions-item>
+        <el-descriptions-item label="状态:" width="33%">{{  dataDetail?.status == '0'?'待认证': dataDetail?.status == '1'?'已认证': dataDetail?.status == '2'?'待提交资料': dataDetail?.status == '3'?'已入职':'' }}</el-descriptions-item>
+        <el-descriptions-item label="类型:" width="33%">{{  dataDetail?.typeAttr == '6'?'个代': dataDetail?.typeAttr == '8'?'渠道': dataDetail?.typeAttr == '5'?'团队': dataDetail?.typeAttr == '7'?'电销组': '' }}</el-descriptions-item>
+        <el-descriptions-item label="所属团队:" width="33%">{{ dataDetail?.organizationName }}</el-descriptions-item>
+        <el-descriptions-item label="创建人:" width="33%">{{ dataDetail?.updateBy }}</el-descriptions-item>
+        <el-descriptions-item label="创建时间:" width="33%">{{ dataDetail?.updateTime }}</el-descriptions-item>
       </el-descriptions>
+    </div>
+    <div class="message">
       <el-tabs v-model="activeName" class="demo-tabs" @tab-click="(tab) => { activeName = tab }">
-        <el-tab-pane label="基本信息" name="msg">
+        <el-tab-pane label="基本信息" name="msg" style="padding: 0 24px">
           <div class="other">
             <el-descriptions title="个人信息">
-              <el-descriptions-item label="姓名:">{{ dataDetail?.name }}</el-descriptions-item>
-              <el-descriptions-item label="手机号:">{{ dataDetail?.mobile }}</el-descriptions-item>
-              <el-descriptions-item label="证件号:">{{ dataDetail?.identity }}</el-descriptions-item>
-              <el-descriptions-item label="证件有效期始:">{{ dataDetail?.identityTimeStart }}</el-descriptions-item>
-              <el-descriptions-item label="证件有效期止:">{{ dataDetail?.identityTimeEnd }}</el-descriptions-item>
+              <el-descriptions-item label="姓名:" width="33%">{{ dataDetail?.name }}</el-descriptions-item>
+              <el-descriptions-item label="手机号:" width="33%">{{ dataDetail?.mobile }}</el-descriptions-item>
+              <el-descriptions-item label="证件号:" width="33%">{{ dataDetail?.identity }}</el-descriptions-item>
+              <el-descriptions-item label="证件有效期始:" width="33%">{{ dataDetail?.identityTimeStart }}</el-descriptions-item>
+              <el-descriptions-item label="证件有效期止:" width="33%">{{ dataDetail?.identityTimeEnd }}</el-descriptions-item>
             </el-descriptions>
             <el-descriptions title="其他信息">
-              <el-descriptions-item label="管理人:">{{ dataDetail?.leaderName }}</el-descriptions-item>
-              <el-descriptions-item label="管理人工号:">{{ dataDetail?.leaderId }}</el-descriptions-item>
-              <el-descriptions-item label="推荐人:">{{ dataDetail?.referrerName }}</el-descriptions-item>
-              <el-descriptions-item label="推荐人工号:">{{ dataDetail?.referrerId }}</el-descriptions-item>
+              <el-descriptions-item>
+                <template #default>
+                  <el-row :gutter="20">
+                    <el-col :span="12" class="mb-5">
+                      管理人:{{ dataDetail?.leaderName }}
+                    </el-col>
+                    <el-col :span="12" class="mb-5">
+                      管理人工号:{{ dataDetail?.leaderId }}
+                    </el-col>
+                    <el-col :span="12" class="mb-5">
+                      推荐人:{{ dataDetail?.referrerName }}
+                    </el-col>
+                    <el-col :span="12" class="mb-5">
+                      推荐人工号:{{ dataDetail?.referrerId }}
+                    </el-col>
+                  </el-row>
+                </template>
+              </el-descriptions-item>
             </el-descriptions>
             <el-descriptions title="银行卡信息">
               <el-descriptions-item>
@@ -98,10 +114,10 @@
                 </template>
               </el-descriptions-item>
             </el-descriptions>
-            <el-button icon="plus" style="margin-left: 20px" @click="addBankCard">添加银行卡</el-button>
+            <el-button class="bg-white" plain type="primary" icon="plus" style="width: 100%; border-radius: 2px" @click="addBankCard">添加银行卡</el-button>
           </div>
         </el-tab-pane>
-        <el-tab-pane label="资料附件" name="file">
+        <el-tab-pane label="资料附件" name="file" style="padding: 0 24px">
           <div class="other">
             <el-descriptions title="资料附件">
               <el-descriptions-item>
@@ -487,34 +503,35 @@ onMounted(() => {
 <style scoped lang="scss">
 .detail{
   margin: 0 10px;
+  height: calc(100vh - 120px);
+  background-color: white;
   .state{
-    border: 1px solid rgba(255,0,0,.3);
+    border: 1px solid #FF4545;
     border-radius: 10px;
     padding: 10px 20px;
-    background: #FFEFEE;
+    background: #FFF4F4;
     display: flex;
     margin: 5px 0;
+    font-weight: 400;
+    color: #333333;
     h3{
-      font-weight: 500;
+      font-size: 16px;
       margin: 0 0 10px;
       color: rgba(0,0,0,.64);
     }
     p{
+      font-size: 14px;
       margin: 10px 0;
-      color: #888;
     }
   }
   .info{
     background: white;
-    padding: 5px 10px;
-    margin: 5px 0;
+    padding: 24px;
+    margin: 10px 0;
     border-radius: 10px;
     :deep(.el-descriptions__title) {
       width: 100%;
     }
-    :deep(.el-descriptions__body) {
-      padding-left: 60px;
-    }
     :deep(.el-tabs__nav-wrap) {
       padding: 0 25px;
     }
@@ -531,7 +548,6 @@ onMounted(() => {
       color: white;
       font-size: 18px;
       margin-right: 10px;
-      margin-left: 20px;
     }
     .allName{
       font-size: 14px;
@@ -585,6 +601,12 @@ onMounted(() => {
       }
     }
   }
+  .message{
+    background: white;
+    :deep(.el-tabs__nav-scroll) {
+      padding: 24px 0 0 24px;
+    }
+  }
   .image-box{
     display: flex;
     align-content: center;
@@ -594,5 +616,8 @@ onMounted(() => {
       height: 200px;
     }
   }
+  :deep(.el-table th.el-table__cell) {
+    background-color: #F7F7F9;
+  }
 }
 </style>

+ 13 - 13
src/views/personnel/institutionManage.vue

@@ -82,8 +82,8 @@
       </Table>
     </div>
 
-    
-    <setDept 
+
+    <setDept
     :dialogVisible="deptDialogVisible"
       :dept-list="tableData"
       :dept-ids="deptIdList"
@@ -124,7 +124,7 @@ const defaultProps = {
 const deptDialogVisible=ref(false)
 const deptIdList=ref([])
 function setDeptUser(item:any){
-  
+
   deptIdList.value=[item.id]
   deptDialogVisible.value=true
 }
@@ -138,7 +138,7 @@ function manySetDeptUser(){
   }else{
     ElMessage.warning("请选择机构后,再进行设置负责人")
   }
- 
+
 }
 
 function confirmCharge(){
@@ -261,19 +261,19 @@ const getList = (item: PageInfo) => {
 const checkTableIdList=ref([])
 //表格选择事件
 function selectAllChange(list:any){
- 
+
   checkTableIdList.value=list
 }
 
 function selectChange(list:any){
- 
+
   checkTableIdList.value=list
 }
 //添加子机构
 
 const isDisabledId = ref("");
 const addChild = (item: any) => {
-  
+  console.log(123, item)
   router.push({
     path:'/personnel/institution/institutionEdit',
     query:{
@@ -281,10 +281,10 @@ const addChild = (item: any) => {
       id:item.id
     }
   })
-  
+
 };
 const editor = (item: any) => {
- 
+
   router.push({
     path:'/personnel/institution/institutionEdit',
     query:{
@@ -293,7 +293,7 @@ const editor = (item: any) => {
     }
   })
 
-  
+
 };
 const del = (item: any) => {
   // ElPopconfirm('是否确认')
@@ -428,7 +428,7 @@ const getInstitutionList = () => {
 
     // }
     tableData.value = res.data;
-   
+
   });
   // pageInfo.pageSize=item.pageSize
 };
@@ -438,7 +438,7 @@ const memberList=ref([])
 const getAllMemberList = () => {
   // pageInfo.pageNum=item.pageNum
   api.userApi.AllMemberList({}).then((res:any) => {
-    
+
     if(res.code===200)
     memberList.value=res.data
   });
@@ -482,7 +482,7 @@ const confirm = async (formEl: FormInstance | undefined) => {
 
           })
           .then((res) => {
-            
+
             if (res.code === 200) {
               ElMessage.success("操作成功");
               dialogVisible.value = false;

+ 36 - 38
src/views/personnel/memberManagement.vue

@@ -10,7 +10,7 @@
       <div style="display: flex;justify-content: space-between;margin: 10px 0;">
         <!-- <el-button type="primary" link @click="$router.push({path:'/personnel/institution'})">机构管理</el-button> -->
         <el-button type="primary" link @click="expandTree">
-        
+
           {{ isExpand?'全部收起':'全部展开' }}
         </el-button>
       </div>
@@ -47,14 +47,13 @@
       </el-tree>
     </div>
     <div class="member-main">
-      
-
       <Table
         :tableData="tableData"
         :columns="columns"
         :showIndex="false"
         :showSelect="true"
         :pageInfo="pageInfo"
+        :height="700"
         @getList="getList"
         @select-all-change="selectAllChange"
         @select-change="selectChange"
@@ -104,8 +103,8 @@
           <el-dropdown placement="bottom-start">
             <span class="el-dropdown-link"> 更 多 </span>
             <template #dropdown>
-              
-                
+
+
                 <el-dropdown-item v-on:click="changeDept(scope)"
                   >变更机构</el-dropdown-item
                 >
@@ -114,8 +113,8 @@
                   >资源转移</el-dropdown-item
                 >
                 <el-dropdown-item v-on:click="delUser(scope)">删除</el-dropdown-item>
-            
-           
+
+
             </template>
           </el-dropdown>
         </template>
@@ -174,14 +173,12 @@
       </template>
     </el-dialog>
     <setDept
-    
       :dialogVisible="deptDialogVisible"
       :dept-list="deptTreeData"
       :dept-ids="[deptItem.id]"
       @close-dialog="confirmDialogInfo"
       :title="title"
       @cancel-dialog="deptDialogVisible=false"
-      
     ></setDept>
     <el-dialog
       v-model="changeDeptDialog"
@@ -227,11 +224,9 @@
         </div>
       </template>
     </el-dialog>
-    
-
     <!-- <el-dialog v-model="dialogVisible" title="基本信息" width="800" draggable> -->
       <!-- <addOperation @closeDialog="closeAddOperation"></addOperation> -->
-      
+
     <!-- </el-dialog> -->
   </div>
 </template>
@@ -263,8 +258,8 @@ onMounted(async () => {
   getInstitutionList();
   getUserList()
   statusList.value = await getDictItems({ dictCode: "person_status" });
-  
- 
+
+
 });
 
 //状态字典
@@ -321,7 +316,7 @@ function treeClickTable(node: any) {
 const isExpand=ref(false)
 function expandTree(){
   // console.log(treeRef.value)
-  
+
 
   isExpand.value=!isExpand.value
   // treeRef.value!.defaultExpandAll=!isExpand.value;
@@ -384,9 +379,9 @@ const rules = reactive<FormRules<RuleForm>>({
 // import TestTable from "@/components/Table/index.vue";
 
 interface Page {
-   
-   [key: string]: any 
-   
+
+   [key: string]: any
+
 }
 const tableData = ref<Page>([])
 const columns = [
@@ -404,8 +399,8 @@ const columns = [
           comType=item.label
         }
       })
-        
-      
+
+
 
       return () => h("div", {}, comType);
     },
@@ -449,11 +444,13 @@ const getList = (item: PageInfo) => {
 const getUserList= () => {
   api.userApi.memberList({
     ...pageInfo,
+    pages: pageInfo.pageNum,
+    size: pageInfo.pageSize,
     deptId:deptItem.value.id,
     status:status.value,
     isMember:1
   }).then((res:any)=>{
-    
+
     if(res.code===200){
       tableData.value=res.data.records
       pageInfo.total=res.data.total
@@ -461,7 +458,7 @@ const getUserList= () => {
   })
 };
 const editor = (item: any) => {
- 
+
   router.push({
     path:"/personnel/member/memberMessage",
     query:{
@@ -473,8 +470,8 @@ const editor = (item: any) => {
 };
 const router=useRouter()
 const add = (formEl: FormInstance | undefined) => {
-  
-  
+
+
   router.push({
     path:"/personnel/member/memberEdit"
   })
@@ -494,10 +491,10 @@ const addChild = (item: any) => {
       id:item.id
     }
   })
-  
+
 };
 const editorInstitution = (item: any) => {
- 
+
  router.push({
    path:'/personnel/institution/institutionEdit',
    query:{
@@ -506,7 +503,7 @@ const editorInstitution = (item: any) => {
    }
  })
 
- 
+
 };
 const del = (item: any) => {
   // ElPopconfirm('是否确认')
@@ -517,7 +514,7 @@ const del = (item: any) => {
     center:true
   })
     .then(() => {
-      
+
       api.institutionApi
         .institutionDel({
           id: item.id,
@@ -536,7 +533,7 @@ const del = (item: any) => {
 
 
 const append = (data: Tree) => {
-  
+
   // const newChild = { id: id++, label: 'testtest', children: [] }
   if (!data.children) {
     data.children = [];
@@ -559,7 +556,7 @@ const deptDialogVisible=ref(false)
 const changeDeptDialog = ref(false);
 const operationForm=ref({})
 function changeDept(item:any) {
-  
+
   operationForm.value=item.operationData.row
   api.userApi
     .checkChangeDept({
@@ -649,7 +646,7 @@ function delUser(item:any) {
             api.userApi
               .userDelete({
                 ids: [operationForm.value.id],
-                
+
               })
               .then((res: any) => {
                 if(res.code==200){
@@ -687,7 +684,7 @@ function delsUser() {
           .then((res: any) => {
             if(res.code==200){
               ElMessage.success(res.msg)
-              
+
             }
           });
         // console.log(123);
@@ -695,8 +692,8 @@ function delsUser() {
       .catch(() => {
         ElMessage.warning("用户取消操作");
       });
-      
-    
+
+
 }
 
 //确认弹框提交信息
@@ -773,12 +770,12 @@ function resign(item:any) {
 const checkTableIdList=ref([])
 //表格选择事件
 function selectAllChange(list:any){
- 
+
   checkTableIdList.value=list
 }
 
 function selectChange(list:any){
- 
+
   checkTableIdList.value=list
 }
 
@@ -787,10 +784,10 @@ const deptIdList=ref([])
 const title=ref('')
 function manySetDeptUser(){
   title.value='设置负责人'
- 
+
   deptIdList.value=checkTableIdList.value
   deptDialogVisible.value=true
-  
+
 
 }
 
@@ -812,6 +809,7 @@ function manySetDeptUser(){
 .member {
   background: #fff;
   width: 100%;
+  height: calc(100vh - 120px);
   // height: 100%;
   // padding: 20px;
   box-sizing: border-box;

+ 142 - 40
src/views/personnel/modules/addOperation.vue

@@ -32,10 +32,10 @@
             <el-row :gutter="24">
               <el-col :span="12">
                 <el-form-item prop="roleIds" label="角色">
-                  
+
                   <el-select
                     v-model="operationForm.roleIds"
-                    placeholder="请选择性别"
+                    placeholder="请选择角色"
                     multiple
                   >
                     <el-option
@@ -95,6 +95,7 @@
                     type="date"
                     placeholder="请选择"
                     value-format="YYYY-MM-DD"
+                    :disabled-date="disabledDateStart"
                     style="width: 100%"
                   />
                 </el-form-item>
@@ -106,6 +107,7 @@
                     type="date"
                     placeholder="请选择"
                     value-format="YYYY-MM-DD"
+                    :disabled-date="disabledDateEnd"
                     style="width: 100%"
                   />
                 </el-form-item>
@@ -415,10 +417,25 @@
                 accept=".png, .jpg, .jpeg"
                 @change="uploadImage($event, 1)"
               >
-                <el-button link type="primary">上传</el-button>
+                <el-button link type="primary" icon="Upload">上传</el-button>
               </el-upload>
               <div class="fileInfo" v-else>
-                <div class="fileName">{{ IDCardFrontName }}</div>
+                <div class="file-box">
+                  <div class="btn-top">
+                    <img class="image-close" @click="deleteImage(1)" src="@/assets/images/close.png" />
+                    <!--                    <el-icon class="btn-icon"><Delete /></el-icon>-->
+                  </div>
+                  <img class="file-img" :src="IDCardFront" />
+                  <div class="btn-bottom">
+                    <el-upload class="width-50" :show-file-list="false" :auto-upload="false" accept=".png, .jpg, .jpeg" @change="uploadImage($event, 1)" style="display: flex; align-items: center; justify-content: center; color: white">
+                      <el-icon><Upload /></el-icon>重新上传
+                    </el-upload>
+                    <div class="width-50" style="display: flex; align-items: center; justify-content: center; color: white; cursor:pointer;" @click="downloadImage(1)">
+                      <el-icon><Download /></el-icon>下载资料
+                    </div>
+                  </div>
+                </div>
+<!--                <div class="fileName">{{ IDCardFrontName }}</div>
                 <div class="fileBtn">
                   <el-upload
                     :auto-upload="false"
@@ -435,7 +452,7 @@
                   /></el-icon>
                   <el-icon class="btn-icon" @click="downloadImage(1)"><Download /></el-icon>
                   <el-icon class="btn-icon" @click="deleteImage(1)"><Delete /></el-icon>
-                </div>
+                </div>-->
               </div>
             </el-form-item>
             <el-form-item
@@ -452,10 +469,25 @@
                 accept=".png, .jpg, .jpeg"
                 @change="uploadImage($event, 2)"
               >
-                <el-button link type="primary">上传</el-button>
+                <el-button link type="primary" icon="Upload">上传</el-button>
               </el-upload>
               <div class="fileInfo" v-else>
-                <div class="fileName">{{ IDCardBackName }}</div>
+                <div class="file-box">
+                  <div class="btn-top">
+                    <img class="image-close" @click="deleteImage(2)" src="@/assets/images/close.png" />
+                    <!--                    <el-icon class="btn-icon"><Delete /></el-icon>-->
+                  </div>
+                  <img class="file-img" :src="IDCardBack" />
+                  <div class="btn-bottom">
+                    <el-upload class="width-50" :show-file-list="false" :auto-upload="false" accept=".png, .jpg, .jpeg" @change="uploadImage($event, 2)" style="display: flex; align-items: center; justify-content: center; color: white">
+                      <el-icon><Upload /></el-icon>重新上传
+                    </el-upload>
+                    <div class="width-50" style="display: flex; align-items: center; justify-content: center; color: white; cursor:pointer;" @click="downloadImage(2)">
+                      <el-icon><Download /></el-icon>下载资料
+                    </div>
+                  </div>
+                </div>
+<!--                <div class="fileName">{{ IDCardBackName }}</div>
                 <div class="fileBtn">
                   <el-upload
                     :auto-upload="false"
@@ -472,7 +504,7 @@
                   /></el-icon>
                   <el-icon class="btn-icon" @click="downloadImage(2)"><Download /></el-icon>
                   <el-icon class="btn-icon" @click="deleteImage(2)"><Delete /></el-icon>
-                </div>
+                </div>-->
               </div>
             </el-form-item>
             <el-form-item
@@ -489,10 +521,25 @@
                 accept=".png, .jpg, .jpeg"
                 @change="uploadImage($event, 3)"
               >
-                <el-button link type="primary">上传</el-button>
+                <el-button link type="primary" icon="Upload">上传</el-button>
               </el-upload>
               <div class="fileInfo" v-else>
-                <div class="fileName">{{ bankName }}</div>
+                <div class="file-box">
+                  <div class="btn-top">
+                    <img class="image-close" @click="deleteImage(3)" src="@/assets/images/close.png" />
+                    <!--                    <el-icon class="btn-icon"><Delete /></el-icon>-->
+                  </div>
+                  <img class="file-img" :src="bankSize" />
+                  <div class="btn-bottom">
+                    <el-upload class="width-50" :show-file-list="false" :auto-upload="false" accept=".png, .jpg, .jpeg" @change="uploadImage($event, 3)" style="display: flex; align-items: center; justify-content: center; color: white">
+                      <el-icon><Upload /></el-icon>重新上传
+                    </el-upload>
+                    <div class="width-50" style="display: flex; align-items: center; justify-content: center; color: white; cursor:pointer;" @click="downloadImage(3)">
+                      <el-icon><Download /></el-icon>下载资料
+                    </div>
+                  </div>
+                </div>
+<!--                <div class="fileName">{{ bankName }}</div>
                 <div class="fileBtn">
                   <el-upload
                     :auto-upload="false"
@@ -509,7 +556,7 @@
                   /></el-icon>
                   <el-icon class="btn-icon" @click="downloadImage(3)"><Download /></el-icon>
                   <el-icon class="btn-icon" @click="deleteImage(3)"><Delete /></el-icon>
-                </div>
+                </div>-->
               </div>
             </el-form-item>
             <el-form-item
@@ -523,19 +570,20 @@
                 v-if="!contract"
                 action="#"
                 :show-file-list="false"
-                accept=".png, .jpg, .jpeg"
+                accept=".png, .jpg, .jpeg, .pdf, .doc, .docx"
                 @change="uploadImage($event, 4)"
               >
-                <el-button link type="primary">上传</el-button>
+                <el-button link type="primary" icon="Upload">上传</el-button>
               </el-upload>
               <div class="fileInfo" v-else>
+                <img style="width: 40px; height: 40px" :src="contractName.includes('.png') || contractName.includes('.jpg') || contractName.includes('.jpeg')?image:contractName.includes('.pdf')?pdf:contractName.includes('.doc') || contractName.includes('.docx')?word:''" />
                 <div class="fileName">{{ contractName }}</div>
                 <div class="fileBtn">
                   <el-upload
                     :auto-upload="false"
                     action="#"
                     :show-file-list="false"
-                    accept=".png, .jpg, .jpeg"
+                    accept=".png, .jpg, .jpeg, .pdf, .doc, .docx"
                     @change="uploadImage($event, 4)"
                     style="display: flex; align-items: center"
                   >
@@ -560,19 +608,20 @@
                 v-if="!applicant"
                 action="#"
                 :show-file-list="false"
-                accept=".png, .jpg, .jpeg"
+                accept=".png, .jpg, .jpeg, .pdf, .doc, .docx"
                 @change="uploadImage($event, 5)"
               >
-                <el-button link type="primary">上传</el-button>
+                <el-button link type="primary" icon="Upload">上传</el-button>
               </el-upload>
               <div class="fileInfo" v-else>
+                <img style="width: 40px; height: 40px" :src="applicantName.includes('.png') || applicantName.includes('.jpg') || applicantName.includes('.jpeg')?image:applicantName.includes('.pdf')?pdf:applicantName.includes('.doc') || applicantName.includes('.docx')?word:''" />
                 <div class="fileName">{{ applicantName }}</div>
                 <div class="fileBtn">
                   <el-upload
                     :auto-upload="false"
                     action="#"
                     :show-file-list="false"
-                    accept=".png, .jpg, .jpeg"
+                    accept=".png, .jpg, .jpeg, .pdf, .doc, .docx"
                     @change="uploadImage($event, 5)"
                     style="display: flex; align-items: center"
                   >
@@ -597,19 +646,20 @@
                 v-if="!decidePay"
                 action="#"
                 :show-file-list="false"
-                accept=".png, .jpg, .jpeg"
+                accept=".png, .jpg, .jpeg, .pdf, .doc, .docx"
                 @change="uploadImage($event, 6)"
               >
-                <el-button link type="primary">上传</el-button>
+                <el-button link type="primary" icon="Upload">上传</el-button>
               </el-upload>
               <div class="fileInfo" v-else>
+                <img style="width: 40px; height: 40px" :src="decidePayName.includes('.png') || decidePayName.includes('.jpg') || decidePayName.includes('.jpeg')?image:decidePayName.includes('.pdf')?pdf:decidePayName.includes('.doc') || decidePayName.includes('.docx')?word:''" />
                 <div class="fileName">{{ decidePayName }}</div>
                 <div class="fileBtn">
                   <el-upload
                     :auto-upload="false"
                     action="#"
                     :show-file-list="false"
-                    accept=".png, .jpg, .jpeg"
+                    accept=".png, .jpg, .jpeg, .pdf, .doc, .docx"
                     @change="uploadImage($event, 6)"
                     style="display: flex; align-items: center"
                   >
@@ -634,19 +684,20 @@
                 v-if="!dimission"
                 action="#"
                 :show-file-list="false"
-                accept=".png, .jpg, .jpeg"
+                accept=".png, .jpg, .jpeg, .pdf, .doc, .docx"
                 @change="uploadImage($event, 7)"
               >
-                <el-button link type="primary">上传</el-button>
+                <el-button link type="primary" icon="Upload">上传</el-button>
               </el-upload>
               <div class="fileInfo" v-else>
+                <img style="width: 40px; height: 40px" :src="dimissionName.includes('.png') || dimissionName.includes('.jpg') || dimissionName.includes('.jpeg')?image:dimissionName.includes('.pdf')?pdf:dimissionName.includes('.doc') || dimissionName.includes('.docx')?word:''" />
                 <div class="fileName">{{ dimissionName }}</div>
                 <div class="fileBtn">
                   <el-upload
                     :auto-upload="false"
                     action="#"
                     :show-file-list="false"
-                    accept=".png, .jpg, .jpeg"
+                    accept=".png, .jpg, .jpeg, .pdf, .doc, .docx"
                     @change="uploadImage($event, 7)"
                     style="display: flex; align-items: center"
                   >
@@ -663,7 +714,7 @@
           </template>
         </el-descriptions-item>
       </el-descriptions>
-      <div style="display: flex; justify-content: flex-end">
+      <div style="display: flex; justify-content: center">
         <el-button @click="router.back()">取消</el-button>
         <el-button type="primary" @click="onSubmit(OperationFormRef, 1)"
           >确定</el-button
@@ -684,6 +735,9 @@ import api from "@/api";
 import { ElMessage } from "element-plus";
 import { getDictItems } from "@/api/dict";
 import { useRoute,useRouter } from "vue-router";
+import image from "@/assets/images/image.png";
+import pdf from "@/assets/images/pdf.png";
+import word from "@/assets/images/word.png";
 
 interface dictType {
   value: string;
@@ -728,21 +782,21 @@ onMounted(async () => {
       if (res.code === 200) {
         operationForm.value = res.data;
         let formData = res.data
-        
+
         if(formData.fileList) {
-          
-          
+
+
           let sfz1 = formData.fileList.find(item => item.fileType == 'sfz1')
           let sfz2 = formData.fileList.find(item => item.fileType == 'sfz2')
-          
+
           let qualification = formData.fileList.find(item => item.fileType == 'bankCard')
           let contractImg = formData.fileList.find(item => item.fileType == 'contract')
           let applicantImg = formData.fileList.find(item => item.fileType == 'applicant')
           let salaryTable = formData.fileList.find(item => item.fileType == 'salaryTable')
           let leaveTable = formData.fileList.find(item => item.fileType == 'leaveTable')
-         
-         
-         
+
+
+
 
           if(sfz1) {
             operationForm.value.sfz1 = sfz1.id
@@ -798,6 +852,16 @@ onMounted(async () => {
       }
     });
 });
+
+// 证件有效期始限制条件
+const disabledDateStart = (time: Date) => {
+  return time.getTime() > Date.now() - 8.64e7
+}
+// 证件有效期止限制条件
+const disabledDateEnd = (time: Date) => {
+  return time.getTime() < new Date(operationForm.value.identityTimeStart) - 8.64e7
+}
+
 const areaOptins = ref([]);
 const areaProps = ref({
   value: "areaCode",
@@ -986,7 +1050,7 @@ const uploadImage = (file, type) => {
   // params.append("multipartFile", files);
   // params.append("type", "image");
   api.areaApi.fileUpload(params).then((res: any) => {
-   
+
     if (res.code === 200) {
       switch (type) {
         case 1:
@@ -1150,7 +1214,7 @@ const onSubmit = async (OperationFormRef: FormInstance, type: number) => {
   }
   await OperationFormRef.validate((valid) => {
     if (valid) {
-      
+
       if(!route.query.id){
       api.operationApi.addOperation({
         ...operationForm.value,
@@ -1161,12 +1225,12 @@ const onSubmit = async (OperationFormRef: FormInstance, type: number) => {
         typeAttr:2,
         sfz1:sfz1.value,
         sfz2:sfz2.value,
-        bankCard:bankCard.value,
+        // bankCard:bankCard.value,
         contract:contractId.value,
         applicant:applicantId.value,
         salaryTable:salaryTable.value,
         leaveTable:leaveTable.value,
-        
+
       }).then((res:any) => {
         // console.log(123, res);
         if(res.code===200){
@@ -1190,7 +1254,7 @@ const onSubmit = async (OperationFormRef: FormInstance, type: number) => {
         salaryTable:salaryTable.value,
         leaveTable:leaveTable.value,
         id:operationForm.value.id
-        
+
       }).then((res:any) => {
         // console.log(123, res);
         if(res.code===200){
@@ -1231,12 +1295,12 @@ function getRoleList() {
   display: flex;
   align-items: center;
   justify-content: flex-start;
-  padding: 2px 20px;
+  //padding: 2px 20px;
   border-radius: 5px;
   margin: 0 10px;
-  &:hover {
-    background: #ccc;
-  }
+  //&:hover {
+  //  background: #ccc;
+  //}
   .fileName {
     width: 200px;
     overflow: hidden;
@@ -1255,6 +1319,44 @@ function getRoleList() {
       }
     }
   }
+  .file-box{
+    position: relative;
+    .btn-top{
+      width: 100%;
+      display: flex;
+      align-items: center;
+      justify-content: flex-end;
+      position: absolute;
+      top: 0;
+      left: 0;
+      .image-close{
+        display: block;
+        width: 12px;
+        height: 12px;
+      }
+    }
+    .file-img{
+      display: block;
+      width: 208px;
+      height: 130px;
+      border-radius: 5px;
+    }
+    .btn-bottom{
+      position: absolute;
+      left: 0;
+      bottom: 0;
+      z-index: 1000;
+      display: flex;
+      align-items: center;
+      height: 24px;
+      width: 100%;
+      background: url("@/assets/images/btn-bg.png") no-repeat;
+      background-size: 100% 100%;
+      .width-50{
+        width: 50%;
+      }
+    }
+  }
 }
 .image-view {
   position: absolute;

+ 3 - 3
src/views/personnel/modules/editInstitution.vue

@@ -153,7 +153,7 @@ onMounted(() => {
         }
       });
   }else{
-    // form.parentId=[route.query.id]
+    form.parentId= route.query.id
   }
 
   if(route.query.id) {
@@ -168,7 +168,7 @@ onMounted(() => {
 });
 
 //禁用机构选择
-function disabledEditTree(list: tableType) {
+function disabledEditTree(list) {
   for (let i = 0; i < list.length; i++) {
     const node = list[i];
     if (route.query.id) {
@@ -184,7 +184,7 @@ function disabledEditTree(list: tableType) {
     }
   }
 }
-const disabledAddTree = (list: tableType) => {
+const disabledAddTree = (list) => {
   for (let i = 0; i < list.length; i++) {
     const node = list[i];
     if (list[i].parentId == '0') {

+ 225 - 191
src/views/personnel/roleManagement.vue

@@ -1,146 +1,137 @@
 <template>
-  <div>
-    <ElRow :gutter="20">
+  <div class="role">
+    <ElRow :gutter="20" style="background: white; height: 840px">
       <ElCol :md="6">
-        <PageMain class="vh100">
-          <ElFormItem prop="roleName">
-            <ElCol :md="20">
-              <ElInput
-                v-model="roleName"
-                placeholder="角色名称查找"
-                type="text"
-                tabindex="1"
-              >
-                <template #prefix>
-                  <SvgIcon name="i-ri:user-3-fill" />
-                </template>
-              </ElInput>
-            </ElCol>
-            <ElCol :md="20" style="margin-top: 20px;">
-              <ElButton type="primary" @click="addRole">
-                <el-icon><Plus /></el-icon>
-                添加</ElButton
-              >
-
-              <ElButton type="primary">查找</ElButton>
-            </ElCol>
-            <ElCol :md="24">
-              <div
-                v-for="item in roleList"
-                :key="item.id"
-                :class="roleId == item.id ? 'on' : 'role-item'"
-                @click="chooseRole(item)"
-              >
-                <p>{{ item.name }}</p>
-                <p>
-                  <span>{{ item.remark || "--" }}</span>
-                </p>
-              </div>
-            </ElCol>
-          </ElFormItem>
-        </PageMain>
+        <ElCol :md="20" style="margin: 10px 0">
+          <ElInput
+            v-model="roleName"
+            placeholder="角色名称查找"
+            type="text"
+            tabindex="1"
+          >
+            <template #prefix>
+              <SvgIcon name="i-ri:user-3-fill" />
+            </template>
+          </ElInput>
+        </ElCol>
+        <ElCol :md="20" style="margin: 10px 0">
+          <ElButton type="primary" @click="addRole">
+            <el-icon><Plus /></el-icon>添加
+          </ElButton>
+          <ElButton type="primary" @click="handleSearch">查找</ElButton>
+        </ElCol>
+        <ElCol :md="24" style="height: 720px; overflow-y: auto;">
+          <div
+            v-for="item in searchList"
+            :key="item.id"
+            :class="roleId == item.id ? 'on' : 'role-item'"
+            @click="chooseRole(item)"
+          >
+            <p>{{ item.name }}</p>
+            <p>
+              <span>{{ item.remark || "--" }}</span>
+            </p>
+          </div>
+        </ElCol>
       </ElCol>
       <ElCol :md="18">
-        <PageMain class="vh100">
-          <template #title>
-            <div class="flex j-s a-c">
-              <span class="strong">角色管理</span>
-              <div>
-                <ElButton type="primary" @click="roleSubmit">提交</ElButton>
-                <ElButton type="danger" @click="deleteRole">删除</ElButton>
-              </div>
-            </div>
-          </template>
-          <h5>基本信息</h5>
-          <!-- <ElCol :md="6"></ElCol> -->
-          <ElForm
-            :model="roleInfo"
-            :rules="roleRules"
-            label-width="auto"
-            size=""
-            style="max-width: 500px;"
+        <div class="flex j-s a-c" style="margin-top: 20px;">
+          <span class="strong">角色管理</span>
+          <div>
+            <ElButton type="primary" @click="roleSubmit(roleRef)">提交</ElButton>
+            <ElButton type="danger" @click="deleteRole">删除</ElButton>
+          </div>
+        </div>
+        <h5>基本信息</h5>
+        <!-- <ElCol :md="6"></ElCol> -->
+        <ElForm
+          :model="roleInfo"
+          :rules="roleRules"
+          ref="roleRef"
+          label-width="auto"
+          size=""
+          style="max-width: 500px;"
+        >
+          <ElFormItem prop="name" label="角色名称">
+            <ElInput
+              v-model="roleInfo.name"
+              placeholder="输入20个字以内的角色名称"
+              type="text"
+              tabindex="1"
+            >
+            </ElInput>
+          </ElFormItem>
+          <ElFormItem prop="deptId" label="所属机构">
+            <el-cascader
+              clearable
+              style="width: 100%;"
+              v-model="roleInfo.deptId"
+              :options="tableData"
+              :props="tableProps"
+              @change="deptChange"
+            />
+          </ElFormItem>
+          <ElFormItem prop="remark" label="角色描述">
+            <ElInput
+              v-model="roleInfo.remark"
+              placeholder="请输入"
+              type="textarea"
+              tabindex="2"
+            >
+            </ElInput>
+          </ElFormItem>
+        </ElForm>
+        <ElDivider></ElDivider>
+        <div style="min-height: 500px;">
+          <h5>角色权限
+            <span style=" font-size: 12px; font-weight: 400;color: #ccc;">
+              (该角色享有的后台模块功能权限剩余数据权限)
+            </span>
+          </h5>
+          <el-tabs
+            :tab-position="'left'"
+            style="height: 460px;"
+            class="demo-tabs"
           >
-            <ElFormItem prop="name" label="角色名称">
-              <ElInput
-                v-model="roleInfo.name"
-                placeholder="输入20个字以内的角色名称"
-                type="text"
-                tabindex="1"
-              >
-              </ElInput>
-            </ElFormItem>
-            <ElFormItem prop="deptId" label="所属机构">
-              <el-cascader
-                clearable
-                style="width: 100%;"
-                v-model="roleInfo.deptId"
-                :options="tableData"
-                :props="tableProps"
-                @change="deptChange"
+            <el-tab-pane label="菜单/操作权限">
+              <ElTree
+                style="height: 490px; overflow-y: auto;"
+                :data="treeData"
+                ref="permsRef"
+                :props="defaultProps"
+                show-checkbox
+                node-key="id"
+                :default-expand-all="true"
+                :default-checked-keys="checkedKeys"
+                @check="handleCheckChange"
               />
-            </ElFormItem>
-            <ElFormItem prop="desc" label="角色描述">
-              <ElInput
-                v-model="roleInfo.desc"
-                placeholder="请输入"
-                type="textarea"
-                tabindex="2"
+            </el-tab-pane>
+            <el-tab-pane label="组织架构权限">
+              <el-radio-group
+                v-model="roleInfo.dataMark"
+                @change="dataMarkChange"
               >
-              </ElInput>
-            </ElFormItem>
-          </ElForm>
-          <ElDivider></ElDivider>
-          <div style="min-height: 500px;">
-            <h5>
-              角色权限<span
-                style=" font-size: 12px; font-weight: 400;color: #ccc;"
-                >(该角色享有的后台模块功能权限剩余数据权限)</span
-              >
-            </h5>
-            <el-tabs
-              :tab-position="'left'"
-              style="height: 500px;"
-              class="demo-tabs"
-            >
-              <el-tab-pane label="菜单/操作权限">
-                <ElTree
-                  style="max-height: 440px; overflow-y: auto;"
-                  :data="treeData"
-                  :props="defaultProps"
-                  show-checkbox
-                  node-key="id"
-                  :default-expand-all="true"
-                  :default-checked-keys="checkedKeys"
-                  @check="handleCheckChange"
-                />
-              </el-tab-pane>
-              <el-tab-pane label="组织架构权限">
-                <el-radio-group
-                  v-model="roleInfo.dataMark"
-                  @change="dataMarkChange"
+                <el-radio value="1" size="large">可见本机构下的数据</el-radio>
+                <el-radio value="2" size="large"
+                >可见本机构及下级机构数据</el-radio
                 >
-                  <el-radio value="1" size="large">可见本机构下的数据</el-radio>
-                  <el-radio value="2" size="large"
-                    >可见本机构及下级机构数据</el-radio
-                  >
-                  <el-radio value="3" size="large">指定机构</el-radio>
-                </el-radio-group>
-                <ElTree
-                  style="max-height: 440px; overflow-y: auto;"
-                  :data="deptTreeData"
-                  :props="deptProps"
-                  show-checkbox
-                  node-key="id"
-                  :check-strictly="true"
-                  :default-expand-all="true"
-                  :default-checked-keys="roleInfo.deptIds"
-                  @check="handleDeptCheckChange"
-                  ref="deptTree"
-                />
-              </el-tab-pane>
-            </el-tabs>
-          </div>
-        </PageMain>
+                <el-radio value="3" size="large">指定机构</el-radio>
+              </el-radio-group>
+              <ElTree
+                style="max-height: 440px; overflow-y: auto;"
+                :data="deptTreeData"
+                :props="deptProps"
+                show-checkbox
+                node-key="id"
+                :check-strictly="true"
+                :default-expand-all="true"
+                :default-checked-keys="roleInfo.deptIds"
+                @check="handleDeptCheckChange"
+                ref="deptTree"
+              />
+            </el-tab-pane>
+          </el-tabs>
+        </div>
       </ElCol>
     </ElRow>
   </div>
@@ -152,8 +143,9 @@ import { ref, reactive, onMounted, onBeforeMount, } from "vue";
 import {
   type FormRules,
   type ElTree,
+  type FormInstance,
   ElMessage,
-  ElMessageBox,
+  ElMessageBox
 } from "element-plus";
 import {
   preprocessRoutes,
@@ -163,9 +155,12 @@ import {
 import api from "@/api";
 const roleName = ref<string>("");
 
+const roleRef = ref<FormInstance>()
+const permsRef = ref<InstanceType<typeof ElTree>>()
+
 let roleInfo = reactive<{
   name: string;
-  desc: string;
+  remark: string;
   system: string;
   permsId: number[];
   perms: any[];
@@ -174,7 +169,7 @@ let roleInfo = reactive<{
   dataMark: string;
 }>({
   name: "", //角色
-  desc: "", //描述
+  remark: "", //描述
   system: "PLATFORM", //系统
   permsId: [], //权限id
   perms: [], //权限标识
@@ -283,7 +278,7 @@ function chooseRole(item: any) {
     .roleInfo({
       roleId: item.id,
       name: "",
-      desc: "",
+      remark: "",
       system: "",
       permsId: [],
       perms: [],
@@ -292,7 +287,7 @@ function chooseRole(item: any) {
       // console.log(res);
       roleInfo.name = res.data.name;
 
-      roleInfo.desc = res.data.remark;
+      roleInfo.remark = res.data.remark;
       roleInfo.deptId = res.data.deptId;
       roleInfo.permsId = res.data.perms.map((val: Perm) => val.id);
       roleInfo.perms = res.data.perms;
@@ -323,50 +318,80 @@ const operationType = ref("add");
 function addRole() {
   showRole.value = true;
   operationType.value = "add";
+  roleInfo.name = ''
+  roleInfo.deptId = ''
+  roleInfo.remark = ''
+  roleInfo.deptIds = []
+  roleInfo.permsId = []
+  deptTree.value!.setCheckedKeys([], true)
+  permsRef.value!.setCheckedKeys([], true)
+}
+// 搜索
+let searchList = ref([])
+const handleSearch = () => {
+  searchList.value = roleList.value.filter(a => a.name.includes(roleName.value))
 }
 //提交角色信息
-function roleSubmit() {
-  if (operationType.value == "add") {
-    api.roleApi
-      .roleAdd({
-        name: roleInfo.name,
-        desc: roleInfo.desc,
-        system: localStorage.getItem("login_system") || "",
-        permsId: roleInfo.permsId,
-        perms: roleInfo.perms,
-        deptId: roleInfo.deptId,
-        dataScope: {
-          deptIds: roleInfo.deptIds,
-          dataMark: roleInfo.dataMark,
-        },
-      })
-      .then((res) => {
-        // console.log(res);
-        ElMessage.success("操作成功");
-        getRoleList();
-      });
-  } else {
-    api.roleApi
-      .roleUpdate({
-        // roleId: roleInfo.id,
-        id: roleId.value,
-        name: roleInfo.name,
-        desc: roleInfo.desc,
-        system: localStorage.getItem("login_system") || "",
-        permsId: roleInfo.permsId,
-        perms: roleInfo.perms,
-        deptId: roleInfo.deptId,
-        dataScope: {
-          deptIds: roleInfo.deptIds,
-          dataMark: roleInfo.dataMark,
-        },
-      })
-      .then((_res) => {
-        // console.log(res);
-        ElMessage.success("操作成功");
-        getRoleList();
-      });
+async function roleSubmit(roleRef: FormInstance | undefined) {
+  if(!roleRef) {
+    roleRef.resetFields()
+    return
   }
+  await roleRef.validate((vaild) => {
+    if(vaild) {
+      if (operationType.value == "add") {
+        api.roleApi
+          .roleAdd({
+            name: roleInfo.name,
+            remark: roleInfo.remark,
+            system: localStorage.getItem("login_system") || "",
+            permsId: roleInfo.permsId,
+            perms: roleInfo.perms,
+            deptId: roleInfo.deptId,
+            dataScope: {
+              deptIds: roleInfo.deptIds,
+              dataMark: roleInfo.dataMark,
+            },
+          })
+          .then((res) => {
+            // console.log(res);
+            if(res.code == 200) {
+              ElMessage.success("操作成功");
+              getRoleList();
+            } else {
+              ElMessage.error(res.msg)
+            }
+          });
+      } else {
+        api.roleApi
+          .roleUpdate({
+            // roleId: roleInfo.id,
+            id: roleId.value,
+            name: roleInfo.name,
+            remark: roleInfo.remark,
+            system: localStorage.getItem("login_system") || "",
+            permsId: roleInfo.permsId,
+            perms: roleInfo.perms,
+            deptId: roleInfo.deptId,
+            dataScope: {
+              deptIds: roleInfo.deptIds,
+              dataMark: roleInfo.dataMark,
+            },
+          })
+          .then((res) => {
+            // console.log(res);
+            if(res.code == 200) {
+              ElMessage.success("操作成功");
+              getRoleList();
+            } else {
+              ElMessage.error(res.msg)
+            }
+          });
+      }
+    } else {
+      ElMessage.error('请填写相关信息!')
+    }
+  })
 }
 //删除角色
 function deleteRole() {
@@ -377,17 +402,17 @@ function deleteRole() {
     .then((res:any) => {
       console.log(res);
       if (res.code == 200) {
-        ElMessageBox.confirm("确认要删除当前数据吗?", "提示", {
+        ElMessageBox({
+          title: '提示',
+          message: '确认要删除当前数据吗?',
+          type: 'warning',
+          showCancelButton: true,
           confirmButtonText: "确认",
           cancelButtonText: "取消",
-          type: "warning",
-        })
-          .then(() => {
-            api.roleApi
-              .roleDelete({
+        }).then(() => {
+            api.roleApi.roleDelete({
                 id: roleId.value,
-              })
-              .then((res) => {
+              }).then((res) => {
                 ElMessage.success("操作成功");
                 getRoleList();
               });
@@ -461,8 +486,12 @@ function disabledTree(list: any[], id: string) {
       } else {
         list[i].disabled = false;
       }
+
       //
     } else {
+      if(id && list[i].id === id) {
+        deptIds.value.push(list[i].id);
+      }
       list[i].disabled = false;
     }
     // console.log(list[i].disabled)
@@ -484,12 +513,13 @@ function getRoleList() {
     .roleList({
       system: localStorage.getItem("login_system") || "",
       name: "",
-      desc: "",
+      remark: "",
       permsId: [],
       perms: [],
     })
     .then((res) => {
-      roleList.value = res.data;
+      roleList.value = JSON.parse(JSON.stringify(res.data))
+      searchList.value = JSON.parse(JSON.stringify(res.data))
       // roleId.value = res.data[0].id;
     });
 }
@@ -516,6 +546,10 @@ onMounted(() => {
 </script>
 
 <style lang="scss" scoped>
+.role{
+  height: 100%;
+  overflow: hidden;
+}
 .roleitem {
   padding: 20px;
   cursor: pointer;

+ 1 - 1
src/views/quoteConfig/project/index.vue

@@ -121,7 +121,7 @@ const initCompany = () => {
 }
 const companyChose = (item, index) => {
   companyIndex.value = index
-  companyId.value = item.companyCode
+  companyId.value = item.id
   initData()
 }
 

+ 58 - 31
src/views/quoteConfig/project/modules/projectAdd.vue

@@ -64,7 +64,7 @@
                   >
                     <el-table-column label="名称" prop="productName">
                       <template #default="scope">
-                        <a>{{ scope.row.productName }}</a>
+                        <el-button link type="primary" @click="getJYXDetail(scope.row)">{{ scope.row.productName }}</el-button>
                       </template>
                     </el-table-column>
                     <el-table-column label="客户端状态" prop="selectedStatus">
@@ -109,17 +109,17 @@
                     </el-table-column>
                     <el-table-column label="保额" prop="optionId">
                       <template #default="scope">
-                        <el-select v-if="projectAddFrom.schemeType === 2" v-model="scope.row.moneyId" style="width: 150px" multiple>
+                        <el-select :disabled="projectAddFrom.productId == '0330' || projectAddFrom.productId == '0330034002' || projectAddFrom.productId == '0330034001'" v-if="projectAddFrom.schemeType === 2" v-model="scope.row.moneyId" style="width: 150px" multiple>
                           <el-option v-for="m in scope.row.options" :label="m.label" :key="m.id" :value="m.id"></el-option>
                         </el-select>
-                        <el-select v-else v-model="scope.row.moneyId" style="width: 150px" @change="">
+                        <el-select :disabled="projectAddFrom.productId == '0330' || projectAddFrom.productId == '0330034002' || projectAddFrom.productId == '0330034001'" v-else v-model="scope.row.moneyId" style="width: 150px" @change="">
                           <el-option v-for="m in scope.row.options" :label="m.label" :key="m.id" :value="m.id"></el-option>
                         </el-select>
                       </template>
                     </el-table-column>
                     <el-table-column label="操作">
                       <template #default="scope">
-                        <el-button link type="primary" @click="insuranceTypeDel(item, scope.row)">删除</el-button>
+                        <el-button :disabled="projectAddFrom.productId == '0330' || projectAddFrom.productId == '0330034002' || projectAddFrom.productId == '0330034001'" link type="primary" @click="insuranceTypeDel(item, scope.row)">删除</el-button>
                       </template>
                     </el-table-column>
                   </el-table>
@@ -148,6 +148,13 @@
     >
       <insurance ref="InsuranceTypeRef" @close="handleClose" ></insurance>
     </el-dialog>
+    <el-dialog
+      v-model="JYXDetailShow"
+      title="驾意险详情"
+      width="600"
+    >
+      <detail ref="JYXDetail"></detail>
+    </el-dialog>
   </div>
 </template>
 
@@ -159,12 +166,15 @@ import { useRouter, useRoute } from 'vue-router'
 import insurance from '../../../../layouts/components/InsuranceType/index.vue'
 import driving from '../../../../layouts/components/DrivingType/index.vue'
 import rule from '../../../../components/ruleConditionContainer/index.vue'
+import detail from '../../../../layouts/components/JYXDetail/index.vue'
+import Detail from "@/views/representative/detail.vue";
 
 const myRouter = useRouter()
 const myRoute = useRoute()
 const ProjectAddRef = ref<FormInstance>()
 const InsuranceTypeRef = ref(null)
 const DrivingTypeRef = ref(null)
+const JYXDetail = ref(null)
 
 // 是否编辑
 let isEdit = ref(false)
@@ -191,8 +201,17 @@ let projectAddRules = ref<FormRules>({
   ]
 })
 
+// 驾意险详情
+let JYXDetailShow = ref(false)
+const getJYXDetail = (row) => {
+  JYXDetailShow.value = true
+  nextTick(() => {
+    JYXDetail.value.initData(row.drivingIntentionId)
+  })
+}
+
 // 新增的时候初始化已有的方案
-const initProduct = () => {
+const initProduct = (e) => {
   api.projectApi.getSchemeByCompany({
     companyId: projectAddFrom.value.companyId,
     productId: projectAddFrom.value.productId,
@@ -217,18 +236,36 @@ const initProduct = () => {
       }
     } else {
       projectAddFrom.value.ruleAttrs = []
-      projectAddFrom.value.schemeList  = [{
-        schemeName: '',
-        description: '',
-        tableData: [],
-        drivingList: [],
-        schemeInsuranceList: [],
-        drivingIntentionList: []
-      }]
-      ElMessage({
-        message: res.msg,
-        type: 'warning'
-      })
+      if(e == '0330' || e == '0330034002' || e == '0330034001') {
+        let obj = insuranceTypeList.value.find(a => a.alias == '交强险')
+        if(obj) {
+          obj.insuranceId = obj.id
+          let sub = obj.options.find(b => b.label == '投保')
+          obj.optionId = projectAddFrom.value.schemeType==1?sub?.id:projectAddFrom.value.schemeType==2?[sub?.id]:''
+          obj.moneyId = sub?.id
+        }
+        projectAddFrom.value.schemeList  = [{
+          schemeName: '',
+          description: '',
+          tableData: [obj],
+          drivingList: [],
+          schemeInsuranceList: [obj],
+          drivingIntentionList: []
+        }]
+      } else {
+        projectAddFrom.value.schemeList  = [{
+          schemeName: '',
+          description: '',
+          tableData: [],
+          drivingList: [],
+          schemeInsuranceList: [],
+          drivingIntentionList: []
+        }]
+      }
+      // ElMessage({
+      //   message: res.msg,
+      //   type: 'warning'
+      // })
     }
   })
 }
@@ -255,17 +292,7 @@ const initInsurance = () => {
 
 // 方案类型切换
 const schemeTypeChange = (e) => {
-  projectAddFrom.value.ruleAttrs = []
-  projectAddFrom.value.schemeList  = [{
-    schemeName: '',
-    description: '',
-    tableData: [],
-    drivingList: [],
-    schemeInsuranceList: [],
-    drivingIntentionList: []
-  }]
-  initProduct()
-  // rulesAttrList.value = defaultAttrList.value
+  initProduct(projectAddFrom.value.productId)
 }
 
 // 保险公司
@@ -369,13 +396,13 @@ const handleDriving = (item, index) => {
 }
 const handleDrivingClose = ( obj ) => {
   if(obj.list && obj.list.length > 0) {
-    let selectList = obj.list.filter(a => a.checked)
-    selectList.forEach(sub => {
+    // let selectList = obj.list.filter(a => a.checked)
+    obj.list.forEach(sub => {
       sub.drivingIntentionId = sub.drivingIntentionId
       sub.selectedStatus = sub.selectedStatus?sub.selectedStatus:'1'
       sub.quantity = sub.quantity?sub.quantity:'1'
     })
-    projectAddFrom.value.schemeList[obj.index].drivingList = selectList
+    projectAddFrom.value.schemeList[obj.index].drivingList = obj.list
   }
   drivingShow.value = false
 }

+ 11 - 11
src/views/representative/detail.vue

@@ -13,10 +13,10 @@
         </el-col>
         <el-col :span="4" v-show="operationForm.status=='4'">
           <el-button type="primary" @click="toExamine(operationForm, 'success')">审核通过</el-button>
-          
+
             <el-button type="primary" @click="toExamine(operationForm, 'error')"> 审核驳回 </el-button>
-           
-          
+
+
         </el-col>
       </el-row>
       <el-row :gutter="24">
@@ -596,8 +596,8 @@
         </div>
       </template>
     </el-dialog>
-    
-  
+
+
   </div>
 </template>
 
@@ -652,9 +652,9 @@ onMounted(async () => {
   });
   api.userApi
     .getUserInfo({
-      id: route.query.id || "",
+        id: route.query.id || "",
     })
-    .then((res: any) => {
+      .then((res: any) => {
       console.log(res);
       if (res.code === 200) {
         operationForm.value = res.data;
@@ -731,7 +731,7 @@ let operationForm = ref<OperationFormProps>({
   bankName: "",
 });
 
- 
+
 // 身份证人像面
 let IDCardFrontName = ref("");
 let IDCardFront = ref("");
@@ -790,10 +790,10 @@ const toExamine = (item: any, type: string) => {
           .then((res: any) => {
             if (res.code == 200) {
               ElMessage.success("操作成功");
-              
+
             } else {
               ElMessage.error(res.msg);
-              
+
             }
           });
       })
@@ -843,7 +843,7 @@ function confirm() {
     .then((res: any) => {
       if (res.code == 200) {
         ElMessage.success("操作成功");
-        
+
         dialogVisible.value = false;
       }
     });