From 93eb6650f02a734e91584c7cacad6aea8fcf6a31 Mon Sep 17 00:00:00 2001
From: zhouwenxuan <1175765986@qq.com>
Date: 星期二, 05 十二月 2023 09:22:47 +0800
Subject: [PATCH] 机构用户
---
src/layout/components/Register/index.vue | 55 +++++++++++++
src/views/safetyReview/institution/components/viewInstitution.vue | 76 +++++++-----------
src/api/login.js | 10 ++
src/views/safetyReview/institution/institution.vue | 39 ++++++---
src/views/safetyReview/userManage/institutionUsers/index.vue | 11 ++
5 files changed, 126 insertions(+), 65 deletions(-)
diff --git a/src/api/login.js b/src/api/login.js
index 0aa798c..804aaea 100644
--- a/src/api/login.js
+++ b/src/api/login.js
@@ -30,6 +30,14 @@
data: data
})
}
+// 编辑机构
+export function editAgency(data) {
+ return request({
+ url: `/system/user/editAgency`,
+ method: 'put',
+ data: data
+ })
+}
// 获取用户详细信息
export function getInfo() {
@@ -106,4 +114,4 @@
method: 'post',
data: data
})
-}
\ No newline at end of file
+}
diff --git a/src/layout/components/Register/index.vue b/src/layout/components/Register/index.vue
index f1c788d..210e786 100644
--- a/src/layout/components/Register/index.vue
+++ b/src/layout/components/Register/index.vue
@@ -217,6 +217,7 @@
<div class="el-upload__tip">上传jpg/png图片尺寸小于5M,最多可上传1张</div>
</template>
</el-upload>
+
</el-form-item>
</el-col>
</el-row>
@@ -294,13 +295,14 @@
<script setup>
import {ref, watch, defineExpose, onMounted, reactive, toRefs, watchEffect} from "vue"
import {ElMessage, ElMessageBox} from "element-plus"
-import { register,delPic,getDict,checkUserName, checkPhone } from "@/api/login"
+import {register, delPic, getDict, checkUserName, checkPhone, editAgency} from "@/api/login"
import { getRegionTree } from "@/api/area"
import { getToken } from "@/utils/auth";
import {verifyPhone, verifyUsername, verifyPwd} from "../../../utils/validate";
let { proxy } = getCurrentInstance()
import { Base64 } from 'js-base64'
import {getAgencyById} from "../../../api/sysUsers";
+const emit = defineEmits(["getList"]);
const props = {
expandTrigger: 'hover',
@@ -352,6 +354,8 @@
}
})
const {registerForm} = toRefs(state);
+const startUsername = ref('');
+const startPhone = ref('');
const equalToPassword = (rule, value, callback) => {
if (state.registerForm.password !== value) {
callback(new Error("两次输入的密码不一致"));
@@ -375,7 +379,9 @@
const validateUserPhone = (rule, value, callback)=>{
if(value === ''){
callback(new Error('请输入手机号'))
- }else{
+ }else if(state.title == '编辑' && value == startPhone.value){
+ callback()
+ } else{
if(!verifyPhone(value)){
callback(new Error('手机号格式有误'))
}else{
@@ -393,6 +399,8 @@
const validateUsername = (rule, value, callback)=>{
if(value === ''){
callback(new Error('请输入登录时用户名'))
+ }else if(state.title == '编辑' && value == startUsername.value){
+ callback()
}else{
if(!verifyUsername(value)){
callback(new Error('用户名须使用字母+数字,长度在5-16之间'))
@@ -466,6 +474,9 @@
state.registerForm.id = value.id
state.registerForm.username = value.username
state.registerForm.phone = value.phone
+ startUsername.value = value.username
+ startPhone.value = value.phone
+ state.registerForm.agency.id = value.agencyId
getAgencyById({agencyId: value.agencyId}).then((res)=>{
if(res.code == 200){
const info = JSON.parse(JSON.stringify(res.data))
@@ -475,6 +486,16 @@
}
}
state.registerForm.agency.business = info.business.split(',').map(Number)
+ if(state.registerForm.agency.attribute === 0){
+ state.registerForm.agency.area = [info.city,info.district].filter(item => { return item && item.trim() })
+ }else {
+ state.registerForm.agency.area = [info.province,info.city,info.district].filter(item => { return item && item.trim() })
+ }
+ if(res.data.reportPath) {
+ const imgUrl = import.meta.env.VITE_APP_BASE_API + "/" + res.data.reportPath
+ state.fileList = imgUrl ? imgUrl.split(',').map(url => {return {url} }) : []
+ }
+
}else{
ElMessage.warning(res.message)
}
@@ -591,6 +612,7 @@
dangerouslyUseHTMLString: true,
type: "success",
}).then(() => {
+ emit("getList")
dialogVisible.value = false
proxy.$refs.registerRef.resetFields()
proxy.$refs.registerRef.clearValidate()
@@ -606,6 +628,35 @@
}).catch(() => {
loading.value = false
})
+ }else {
+ const {confirmPassword, ...data} = state.registerForm
+ data.password = Base64.encode(data.password)
+ console.log('data',data)
+ data.agency.business = data.agency.business.join(',')
+ // delete data.agency.area
+ console.log('data',data)
+ editAgency(data).then(res => {
+ if(res.code == 200){
+ ElMessage({
+ type: 'success',
+ message: '编辑成功'
+ })
+ emit("getList")
+ dialogVisible.value = false
+ proxy.$refs.registerRef.resetFields()
+ proxy.$refs.registerRef.clearValidate()
+ state.fileList = []
+ loading.value = false
+
+ }else{
+ ElMessage({
+ type: 'warning',
+ message: res.message
+ })
+ }
+ }).catch(() => {
+ loading.value = false
+ })
}
}
});
diff --git a/src/views/safetyReview/institution/components/viewInstitution.vue b/src/views/safetyReview/institution/components/viewInstitution.vue
index 003c3fe..9c58bf5 100644
--- a/src/views/safetyReview/institution/components/viewInstitution.vue
+++ b/src/views/safetyReview/institution/components/viewInstitution.vue
@@ -36,14 +36,15 @@
<el-row :gutter="30">
<el-col :span="12">
<el-form-item prop="agency.area" label="实际经营地址所属区域">
- <el-input v-model="registerForm.agency.area" disabled></el-input>
-<!-- <el-cascader-->
-<!-- v-model="registerForm.agency.area"-->
-<!-- :options="state.areaList"-->
-<!-- :props="props"-->
-<!-- style="width: 100%"-->
-<!-- size="large"-->
-<!-- />-->
+<!-- <el-input v-model="registerForm.agency.area" disabled></el-input>-->
+ <el-cascader
+ disabled
+ v-model="registerForm.agency.area"
+ :options="state.areaList"
+ :props="props"
+ style="width: 100%"
+ size="large"
+ />
</el-form-item>
</el-col>
<el-col :span="12">
@@ -202,7 +203,7 @@
<el-col :span="8">
<el-form-item prop="agency.reportPath" label="加盖公章的《机构信息上报表》">
<el-upload disabled :limit='state.imgLimit' :show-file-list="false" list-type="picture-card" >
- <el-image v-if="imageUrl" style="width: 150px;height: 150px" :src="imageUrl" :preview-src-list="srcList"/>
+ <el-image v-if="imageUrl" :src="imageUrl" :preview-src-list="srcList" style="width: 100%;max-height: 146px;" />
<!-- <template #tip>-->
<!-- <div class="el-upload__tip">上传jpg/png图片尺寸小于5M,最多可上传1张</div>-->
<!-- </template>-->
@@ -212,7 +213,7 @@
</el-row>
<el-row :gutter="30">
<el-col :span="12">
- <el-form-item prop="username" >
+ <el-form-item prop="username" label="用户名">
<el-input
disabled
v-model="registerForm.username"
@@ -232,32 +233,6 @@
</el-form-item>
</el-col>
</el-row>
-<!-- <el-row :gutter="30">-->
-<!-- <el-col :span="12">-->
-<!-- <el-form-item prop="password" label="密码">-->
-<!-- <el-input-->
-<!-- v-model="registerForm.password"-->
-<!-- type="password"-->
-<!-- size="large"-->
-<!-- placeholder="请输入密码"-->
-<!-- show-password-->
-<!-- />-->
-<!-- </el-form-item>-->
-<!-- </el-col>-->
-<!-- <el-col :span="12">-->
-<!-- <el-form-item prop="confirmPassword" label="确认密码">-->
-<!-- <el-input-->
-<!-- v-model="registerForm.confirmPassword"-->
-<!-- type="password"-->
-<!-- size="large"-->
-<!-- auto-complete="off"-->
-<!-- placeholder="确认密码"-->
-<!-- show-password-->
-<!-- >-->
-<!-- </el-input>-->
-<!-- </el-form-item>-->
-<!-- </el-col>-->
-<!-- </el-row>-->
</el-form>
<el-dialog v-model="state.dialogImg">
<el-image style="width: 100%; height: 100%" :src="state.dialogImageUrl"/>
@@ -327,10 +302,6 @@
const loading = ref(false)
const dialogVisible = ref(false)
const registerRef = ref(null)
-onMounted(()=>{
- getBusiness()
- getArea()
-})
const getBusiness = async ()=>{
const res = await getDict({dictType: 'sys_business_scope'})
@@ -351,20 +322,32 @@
}
}
-const openDialog = async (val) => {
+const openDialog = async (val,type) => {
+ let id = "";
+ if(type === 'view'){
+ id = val.agencyId
+ }else {
+ id = val.id
+ }
const param = {
- agencyId: val.id
+ agencyId: id
}
const res = await getInstitutionDetail(param);
if(res.code === 200){
registerForm.value.agency = res.data
- registerForm.value.agency.area = res.data.province+ " " +res.data.city + " " + res.data.district
+ await getBusiness()
+ await getArea()
+ registerForm.value.username = res.data.user?.username
+ registerForm.value.phone = res.data.user?.phone
+ if(registerForm.value.agency.attribute === 0){
+ registerForm.value.agency.area = [res.data.city,res.data.district].filter(item => { return item && item.trim() })
+ }else {
+ registerForm.value.agency.area = [res.data.province,res.data.city,res.data.district].filter(item => { return item && item.trim() })
+ }
registerForm.value.agency.business = res.data.business.split(",").map(Number)
imageUrl.value = import.meta.env.VITE_APP_BASE_API + "/" + res.data.reportPath
srcList.value.push(imageUrl.value)
- // state.fileList.push({
- // 'url': imgUrl
- // })
+
}else{
ElMessage.warning(res.message)
}
@@ -375,6 +358,7 @@
const closeDialog = ()=>{
dialogVisible.value = false;
state.fileList = []
+ srcList.value = []
}
defineExpose({
diff --git a/src/views/safetyReview/institution/institution.vue b/src/views/safetyReview/institution/institution.vue
index 2ae317f..0ae2ee0 100644
--- a/src/views/safetyReview/institution/institution.vue
+++ b/src/views/safetyReview/institution/institution.vue
@@ -53,6 +53,7 @@
import {ElMessage, ElMessageBox} from "element-plus";
import institutionDialog from "./components/viewInstitution.vue"
import {changeInsitutionPublic, getInsitutionList} from "@/api/backManage/insitution";
+import {changeStatus} from "@/api/sysUsers";
const { proxy } = getCurrentInstance();
const loading = ref(false);
const inRef = ref();
@@ -101,20 +102,30 @@
}
const publicity = async (val) => {
- const param = {
- id: val.id,
- publication: val.publication ===0 ? 1: 0
- }
- const res = await changeInsitutionPublic(param);
- if(res.code === 200){
- ElMessage({
- type: 'success',
- message: '成功'
- });
- getList();
- }else{
- ElMessage.warning(res.message)
- }
+ ElMessageBox.confirm(
+ '确定修改该机构公示状态?',
+ '提示',
+ {
+ confirmButtonText: '确定',
+ cancelButtonText: '取消',
+ type: 'warning',
+ })
+ .then( async() => {
+ const param = {
+ id: val.id,
+ publication: val.publication ===0 ? 1: 0
+ }
+ const res = await changeInsitutionPublic(param);
+ if(res.code === 200){
+ ElMessage({
+ type: 'success',
+ message: '成功'
+ });
+ getList()
+ }else{
+ ElMessage.warning(res.message)
+ }
+ })
}
const handleDelete = (val) => {
diff --git a/src/views/safetyReview/userManage/institutionUsers/index.vue b/src/views/safetyReview/userManage/institutionUsers/index.vue
index 8e72347..86103c2 100644
--- a/src/views/safetyReview/userManage/institutionUsers/index.vue
+++ b/src/views/safetyReview/userManage/institutionUsers/index.vue
@@ -56,7 +56,8 @@
@pagination="getList"
/>
<supervise-dialog ref="superRef" @getList=getList></supervise-dialog>
- <register ref="regRef"/>
+ <register ref="regRef" @getList=getList />
+ <review-dialog ref="reviewRef" @getList=getList></review-dialog>
<el-dialog v-model="appDialog" title="审批用户" width="30%" center align-center>
<el-radio-group v-model="appoveForm.approve" style="width: 100%">
<el-radio :label="0" size="large" border>通过</el-radio>
@@ -79,11 +80,13 @@
import { Register } from "@/layout/components";
import {delMonitor, getAgencyList, changeApprove, changeStatus} from "../../../../api/sysUsers"
import Cookies from "js-cookie";
+import reviewDialog from "../../institution/components/viewInstitution.vue"
const { proxy } = getCurrentInstance();
const loading = ref(false);
const superRef = ref();
const regRef = ref(null)
+const reviewRef = ref();
const data = reactive({
queryParams: {
pageNum: 1,
@@ -128,7 +131,11 @@
}
const openDialog = (type, value)=>{
- regRef.value.openDialog(type, value);
+ if(type === 'view') {
+ reviewRef.value.openDialog(value,type)
+ }else {
+ regRef.value.openDialog(type, value);
+ }
}
const openApprove =(val)=>{
--
Gitblit v1.9.2