| | |
| | | |
| | | 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' |
| | | }) |
| | | } |
| | |
| | | import request from '@/utils/request' |
| | | |
| | | export function getInsitutionList() { |
| | | export function getInsitutionList(params) { |
| | | return request({ |
| | | url: '/system/agency/agencyList', |
| | | method: 'get' |
| | | method: 'get', |
| | | params: params |
| | | }) |
| | | } |
| | | |
| | |
| | | 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 |
| | | }) |
| | | } |
| | |
| | | <el-input |
| | | v-model="registerForm.agency.certNumber" |
| | | size="large" |
| | | placeholder="请输入机构负责人" |
| | | placeholder="请输入资质证书编号" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | 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() |
| | |
| | | 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)=>{ |
| | |
| | | proxy.$refs.registerRef.resetFields() |
| | | proxy.$refs.registerRef.clearValidate() |
| | | state.fileList = [] |
| | | loading.value = false |
| | | // router.push("/homePage") |
| | | }).catch(() => {}) |
| | | }else{ |
| | |
| | | // 未设置状态码则默认成功状态 |
| | | 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 |
| | |
| | | > |
| | | <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> |
| | |
| | | </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> |
| | |
| | | </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: '', |
| | |
| | | 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; |
| | | } |
| | |
| | | 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({ |
| | |
| | | >新增</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> |
| | |
| | | </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, |
| | |
| | | total: 0, |
| | | dataList: [ |
| | | ] |
| | | |
| | | |
| | | }); |
| | | |
| | | const { queryParams, total, dataList } = toRefs(data); |
| | |
| | | }); |
| | | 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); |
| | | } |
| | | |
| | | /** 重置新增的表单以及其他数据 */ |
| | |
| | | type: 'warning', |
| | | }) |
| | | .then( async() => { |
| | | |
| | | const res = await delArea(val) |
| | | if(res.code == 200){ |
| | | ElMessage.success('数据删除成功') |
| | | getList() |
| | | }else{ |
| | | ElMessage.warning(res.message) |
| | | } |
| | | }) |
| | | } |
| | | |
| | |
| | | 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"; |
| | |
| | | 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 |
| | |
| | | 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} |
| | |
| | | |
| | | |
| | | 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({ |
| | |
| | | }) |
| | | } |
| | | 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) |
| | |
| | | } |
| | | 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 |
| | |
| | | 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> |