From c1b2db87bab550a24c5a7fd5899342d56e7f414a Mon Sep 17 00:00:00 2001
From: zhouwenxuan <1175765986@qq.com>
Date: 星期三, 06 十二月 2023 15:54:46 +0800
Subject: [PATCH] 专家用户、地区维护
---
src/layout/components/Register/index.vue | 14 +-
src/utils/request.js | 2
src/views/safetyReview/userManage/expertUsers/components/expertDialog.vue | 77 ++++++++++----
src/api/backManage/insitution.js | 5
src/views/safetyReview/userManage/expertUsers/index.vue | 2
src/api/sysUsers.js | 17 +++
src/views/safetyReview/baseSet/area/components/areaDialog.vue | 98 ++++++++++++++++---
src/views/safetyReview/baseSet/area/index.vue | 50 ++++++---
src/api/backManage/area.js | 25 ++++
9 files changed, 222 insertions(+), 68 deletions(-)
diff --git a/src/api/backManage/area.js b/src/api/backManage/area.js
index 9dc7b47..72ad7ae 100644
--- a/src/api/backManage/area.js
+++ b/src/api/backManage/area.js
@@ -2,7 +2,30 @@
export function getArea() {
return request({
- url: 'api/system/region/regionTree',
+ url: '/system/region/regionTree',
method: 'get'
})
}
+
+export function addArea(data) {
+ return request({
+ url: '/system/region/addRegion',
+ method: 'post',
+ data: data
+ })
+}
+
+export function editArea(params) {
+ return request({
+ url: `/system/region/editRegion`,
+ method: 'put',
+ data: params
+ })
+}
+
+export function delArea(data) {
+ return request({
+ url: `/system/region/remove/` + data.id,
+ method: 'delete'
+ })
+}
diff --git a/src/api/backManage/insitution.js b/src/api/backManage/insitution.js
index de05492..1c31720 100644
--- a/src/api/backManage/insitution.js
+++ b/src/api/backManage/insitution.js
@@ -1,9 +1,10 @@
import request from '@/utils/request'
-export function getInsitutionList() {
+export function getInsitutionList(params) {
return request({
url: '/system/agency/agencyList',
- method: 'get'
+ method: 'get',
+ params: params
})
}
diff --git a/src/api/sysUsers.js b/src/api/sysUsers.js
index 4ad2986..096bfb4 100644
--- a/src/api/sysUsers.js
+++ b/src/api/sysUsers.js
@@ -98,3 +98,20 @@
data: data
})
}
+
+// 修改
+export function editExpert(data) {
+ return request({
+ url: '/system/user/editExpert',
+ method: 'put',
+ data: data
+ })
+}
+// 获取用户详情
+export function getUserById(params) {
+ return request({
+ url: '/system/user/getUserById',
+ method: 'get',
+ params: params
+ })
+}
diff --git a/src/layout/components/Register/index.vue b/src/layout/components/Register/index.vue
index 88446c0..a643b20 100644
--- a/src/layout/components/Register/index.vue
+++ b/src/layout/components/Register/index.vue
@@ -108,7 +108,7 @@
<el-input
v-model="registerForm.agency.certNumber"
size="large"
- placeholder="请输入机构负责人"
+ placeholder="请输入资质证书编号"
/>
</el-form-item>
</el-col>
@@ -466,8 +466,11 @@
const registerRef = ref(null)
onMounted(()=>{
- const userInfo = JSON.parse(Cookies.get('userInfo'))
- if(userInfo.identity == 0){isSuper.value = true}
+ if(getToken()){
+ const userInfo = JSON.parse(Cookies.get('userInfo'))
+ if(userInfo.identity == 0){isSuper.value = true}
+ }
+
getBusiness()
watchEffect(() => {
// 在副作用中调用 getArea()
@@ -484,9 +487,9 @@
startUsername.value = value.username
startPhone.value = value.phone
state.registerForm.agency.id = value.agencyId
- if(value.state == 2 && isSuper.value){
+ if( isSuper.value){
isAbleEdit.value = false
- }else {
+ }else{
isAbleEdit.value = true
}
getAgencyById({agencyId: value.agencyId}).then((res)=>{
@@ -629,6 +632,7 @@
proxy.$refs.registerRef.resetFields()
proxy.$refs.registerRef.clearValidate()
state.fileList = []
+ loading.value = false
// router.push("/homePage")
}).catch(() => {})
}else{
diff --git a/src/utils/request.js b/src/utils/request.js
index 6664bbb..a782727 100644
--- a/src/utils/request.js
+++ b/src/utils/request.js
@@ -76,7 +76,7 @@
// 未设置状态码则默认成功状态
const code = res.data.code || 200;
// 获取错误信息
- const msg = errorCode[code] || res.data.msg || errorCode['default']
+ const msg = errorCode[code] || res.data.message || errorCode['default']
// 二进制数据则直接返回
if (res.request.responseType === 'blob' || res.request.responseType === 'arraybuffer') {
return res.data
diff --git a/src/views/safetyReview/baseSet/area/components/areaDialog.vue b/src/views/safetyReview/baseSet/area/components/areaDialog.vue
index 3a5be65..a220b59 100644
--- a/src/views/safetyReview/baseSet/area/components/areaDialog.vue
+++ b/src/views/safetyReview/baseSet/area/components/areaDialog.vue
@@ -8,7 +8,7 @@
>
<el-form :model="state.form" size="default" ref="areaRef" :rules="state.formRules" label-width="110px" >
<el-form-item>
- <el-radio-group v-model="state.form.area" style="margin-left: -50px" >
+ <el-radio-group v-model="state.form.area" style="margin-left: -50px" :disabled="title === '编辑'">
<el-radio :label="1">地(市、州)</el-radio>
<el-radio :label="2">区县</el-radio>
</el-radio-group>
@@ -18,12 +18,12 @@
</el-form-item>
<div v-if="state.form.area === 2">
<el-form-item style="margin-left: -50px" prop="stateCode">
- <el-select v-model="state.form.stateCode" class="m-2" placeholder="请选择所属地(市、州)" style="width: 100%">
+ <el-select v-model="state.form.stateCode" class="m-2" placeholder="请选择所属地(市、州)" style="width: 100%" >
<el-option
- v-for="item in state.areaList"
- :key="item.value"
- :label="item.label"
- :value="item.value"
+ v-for="item in state.cityList"
+ :key="item.id"
+ :label="item.name"
+ :value="item.id"
/>
</el-select>
</el-form-item>
@@ -43,15 +43,18 @@
</div>
</template>
<script setup>
-import {reactive, ref, toRefs} from 'vue'
+import {defineEmits, reactive, ref, toRefs} from 'vue'
import Editor from "@/components/Editor/index.vue";
import {ElMessage} from "element-plus";
+import {addArea, editArea, getArea} from "@/api/backManage/area";
const dialogVisible = ref(false);
const title = ref("");
const areaRef = ref();
+const emit = defineEmits(["getList"]);
const state = reactive({
form: {
+ id: '',
area: 1,
stateCode: '',
stateName: '',
@@ -62,14 +65,23 @@
countyName: [{ required: true, message: '请输入区县名', trigger: 'blur' }],
stateCode: [{ required: true, message: '请选择所属地(市、州)', trigger: 'blur' }],
},
- areaList: []
-
+ cityList: [],
})
-const openDialog = (type, value) => {
+const openDialog = (type, value,cityList) => {
title.value = type === 'add' ? '新增' : type ==='edit' ? '编辑' : '查看' ;
+ state.cityList = cityList;
if(type === 'edit') {
- state.form = value;
+ if(value.parentId!=0){
+ state.form.id = value.id;
+ state.form.area = 2;
+ state.form.stateCode = value.parentId;
+ state.form.countyName = value.name;
+ }else {
+ state.form.id = value.id;
+ state.form.area = 1;
+ state.form.stateName = value.name
+ }
}
dialogVisible.value = true;
}
@@ -77,25 +89,77 @@
const onSubmit = async () => {
const valid = await areaRef.value.validate();
if(valid){
- areaRef.value.clearValidate();
- reset();
- dialogVisible.value = false;
+ if(title.value === '新增'){
+ let param = {}
+ if(state.form.area == 1){
+ param = {
+ name: state.form.stateName,
+ regionType: 0
+ }
+ }else if(state.form.area == 2){
+ param = {
+ name: state.form.countyName,
+ regionType: 0,
+ parentId: state.form.stateCode
+ }
+ }
+ console.log("parma",param)
+ const res = await addArea(param);
+ if(res.code === 200){
+ ElMessage.success(res.message)
+ emit('getList')
+ areaRef.value.clearValidate();
+ reset()
+ dialogVisible.value = false;
+ }else{
+ ElMessage.warning(res.message)
+ }
+ }else if (title.value === '编辑'){
+ let param = {}
+ if(state.form.area == 1){
+ param = {
+ id: state.form.id,
+ name: state.form.stateName,
+ parentId: 0,
+ regionType: 0
+
+ }
+ }else if(state.form.area == 2){
+ param = {
+ id: state.form.id,
+ name: state.form.countyName,
+ regionType: 0,
+ parentId: state.form.stateCode
+ }
+ }
+ const res = await editArea(param);
+ if(res.code === 200){
+ ElMessage.success(res.message)
+ emit('getList')
+ areaRef.value.clearValidate();
+ reset()
+ dialogVisible.value = false;
+ }else{
+ ElMessage.warning(res.message)
+ }
+ }
}
}
const handleClose = () => {
areaRef.value.clearValidate();
- reset();
+ reset()
dialogVisible.value = false;
}
const reset = () => {
state.form = {
+ id: '',
area: 1,
- state: '',
- county: '',
stateCode: '',
+ stateName: '',
+ countyName: ''
}
}
defineExpose({
diff --git a/src/views/safetyReview/baseSet/area/index.vue b/src/views/safetyReview/baseSet/area/index.vue
index 309e39b..42bfcfd 100644
--- a/src/views/safetyReview/baseSet/area/index.vue
+++ b/src/views/safetyReview/baseSet/area/index.vue
@@ -9,7 +9,7 @@
>新增</el-button>
</div>
<!-- 表格数据 -->
- <el-table v-loading="loading" :data="dataList" :border="true" row-key="name">
+ <el-table v-loading="loading" :data="dataList" :border="true" row-key="id">
<el-table-column label="地区" align="center">
<template #default="scope">
<span>{{scope.row.name}}</span>
@@ -18,31 +18,26 @@
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" >
<template #default="scope">
- <el-button link type="primary" @click="openDialog('edit',scope.row)" v-hasPermi="['system:role:edit']">编辑</el-button>
- <el-button link type="danger" @click="handleDelete(scope.row)" v-hasPermi="['system:role:remove']">删除</el-button>
+ <el-button link type="primary" @click="openDialog('edit',scope.row)" >编辑</el-button>
+ <el-button link type="danger" @click="handleDelete(scope.row)" >删除</el-button>
</template>
</el-table-column>
</el-table>
-
- <pagination
- v-show="total > 0"
- :total="total"
- v-model:page="queryParams.pageNum"
- v-model:limit="queryParams.pageSize"
- @pagination="getList"
- />
<area-dialog ref="areaRef" @getList="getList"></area-dialog>
</div>
</template>
<script setup>
import {getCurrentInstance, onMounted, reactive, ref, toRefs} from "vue";
-import {ElMessageBox} from "element-plus";
+import {ElMessage, ElMessageBox} from "element-plus";
import areaDialog from "./components/areaDialog.vue"
-import { getArea } from "@/api/backManage/area";
+import {delArea, getArea} from "@/api/backManage/area";
+import {getDictList} from "@/api/backManage/evaluate";
+import {delMonitor} from "@/api/sysUsers";
const { proxy } = getCurrentInstance();
const loading = ref(false);
const areaRef = ref();
+const cityList = ref([])
const data = reactive({
queryParams: {
pageNum: 1,
@@ -51,8 +46,6 @@
total: 0,
dataList: [
]
-
-
});
const { queryParams, total, dataList } = toRefs(data);
@@ -63,12 +56,27 @@
});
const getList = async () => {
loading.value = true;
- // let res = await getArea();
+ const res = await getArea();
+ if(res.code === 200){
+ dataList.value = res.data
+ cityList.value = res.data.map(item => {
+ return {
+ id: item.id,
+ name: item.name,
+ parentId: item.parentId,
+ regionType: item.regionType,
+ sort: item.sort
+
+ }
+ })
+ }else{
+ ElMessage.warning(res.message)
+ }
loading.value = false;
}
const openDialog = (type, value) => {
- areaRef.value.openDialog(type, value);
+ areaRef.value.openDialog(type, value,cityList.value);
}
/** 重置新增的表单以及其他数据 */
@@ -85,7 +93,13 @@
type: 'warning',
})
.then( async() => {
-
+ const res = await delArea(val)
+ if(res.code == 200){
+ ElMessage.success('数据删除成功')
+ getList()
+ }else{
+ ElMessage.warning(res.message)
+ }
})
}
diff --git a/src/views/safetyReview/userManage/expertUsers/components/expertDialog.vue b/src/views/safetyReview/userManage/expertUsers/components/expertDialog.vue
index 3c833b2..adcc458 100644
--- a/src/views/safetyReview/userManage/expertUsers/components/expertDialog.vue
+++ b/src/views/safetyReview/userManage/expertUsers/components/expertDialog.vue
@@ -165,7 +165,7 @@
import {verifyPhone, verifyPwd, verifyUsername} from "../../../../../utils/validate";
import {checkUserName, checkPhone, delPic} from "@/api/login"
import { getRegionTree } from "@/api/area"
-import {addExpert, addMonitor, editMonitor, getMonitorList} from "@/api/sysUsers"
+import {addExpert, addMonitor, editExpert, editMonitor, getMonitorList, getUserById} from "@/api/sysUsers"
import {Base64} from "js-base64"
import {resetUserPwd} from "../../../../../api/sysUsers";
import {getToken} from "@/utils/auth";
@@ -283,15 +283,38 @@
getAgency()
})
-const openDialog = (type, value) => {
+const openDialog = async (type, value) => {
getArea()
state.title = type === 'add' ? '新增' : type ==='edit' ? '编辑' : type ==='pwd' ? '修改密码' : '查看' ;
if(type === 'edit') {
- for(let i in state.form){
- if(validKey(i,value)){
- state.form[i] = value[i]
- }
+ const param = {
+ userId: value.id
}
+ const res = await getUserById(param);
+ if(res.code == 200){
+ state.form = res.data
+ state.socialList = res.data.socialAttach.map(url => {
+ return {
+ url: import.meta.env.VITE_APP_BASE_API +'/'+url.path,
+ name: url.name
+ }
+ });
+ state.medicalList = res.data.medicalAttach.map(url => {
+ return {
+ url: import.meta.env.VITE_APP_BASE_API +'/'+url.path,
+ name: url.name
+ }
+ });
+ state.salaryList = res.data.salaryAttach.map(url => {
+ return {
+ url: import.meta.env.VITE_APP_BASE_API +'/'+url.path,
+ name: url.name
+ }
+ });
+ }else{
+ ElMessage.warning(res.message)
+ }
+
}
if(type == 'pwd'){
state.form.id = value.id
@@ -337,18 +360,19 @@
ElMessage.warning(res.message)
}
}else if(state.title == '编辑'){
- // const {confirmPassword,...data} = state.form
- // data.password = Base64.encode(data.password)
- // const res = await editMonitor(data)
- // if(res.code == 200){
- // ElMessage.success(res.message)
- // emit('getList')
- // superRef.value.clearValidate();
- // superRef.value.resetFields();
- // dialogVisible.value = false;
- // }else{
- // ElMessage.warning(res.message)
- // }
+ const {confirmPassword,socialList,salaryList,medicalList,...data} = state.form
+ data.password = Base64.encode(data.password)
+ console.log('editdata',data)
+ const res = await editExpert(data)
+ if(res.code == 200){
+ ElMessage.success(res.message)
+ emit('getList')
+ superRef.value.clearValidate();
+ superRef.value.resetFields();
+ dialogVisible.value = false;
+ }else{
+ ElMessage.warning(res.message)
+ }
}else{
const {id,password} = state.form
const data = {id,password}
@@ -428,7 +452,14 @@
const handleRemove = async (file, uploadFiles,type) => {
- const path = file.response.data.path
+ let path = ""
+ if(state.title === '编辑') {
+ const base = import.meta.env.VITE_APP_BASE_API
+ path = file.url.substring(base.length+1,file.url.length )
+ }else {
+ path = file.response.data.path
+ }
+
const res = await delPic({path: path})
if(res.code == 200){
ElMessage({
@@ -442,11 +473,11 @@
})
}
if(type === 1){
- state.form.socialAttach = state.form.socialAttach.filter(item => item.path !== file.response.data.path)
+ state.form.socialAttach = state.form.socialAttach.filter(item => item.path !== path)
}else if(type === 2){
- state.form.medicalAttach = state.form.medicalAttach.filter(item => item.path !== file.response.data.path)
+ state.form.medicalAttach = state.form.medicalAttach.filter(item => item.path !== path)
}else {
- state.form.salaryAttach = state.form.salaryAttach.filter(item => item.path !== file.response.data.path)
+ state.form.salaryAttach = state.form.salaryAttach.filter(item => item.path !== path)
}
}
const finshed = ref(false)
@@ -457,7 +488,7 @@
}
const res = await getInsitutionList(queryParams)
if(res.code == 200){
- if(res.data.pageNum !== state.pageNum){
+ if(res.data.pageNum === state.pageNum){
finshed.value = false;
if(state.pageNum == 1){
state.agencyList = res.data.list
diff --git a/src/views/safetyReview/userManage/expertUsers/index.vue b/src/views/safetyReview/userManage/expertUsers/index.vue
index d081eb8..46a7b12 100644
--- a/src/views/safetyReview/userManage/expertUsers/index.vue
+++ b/src/views/safetyReview/userManage/expertUsers/index.vue
@@ -101,8 +101,8 @@
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
+ <expert-dialog ref="expertRef" @getList="getList"></expert-dialog>
</div>
- <expert-dialog ref="expertRef" @getList="getList"></expert-dialog>
</template>
<script setup>
--
Gitblit v1.9.2