zhouwenxuan
2023-12-05 93eb6650f02a734e91584c7cacad6aea8fcf6a31
机构用户
已修改5个文件
191 ■■■■■ 文件已修改
src/api/login.js 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/layout/components/Register/index.vue 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/safetyReview/institution/components/viewInstitution.vue 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/safetyReview/institution/institution.vue 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/safetyReview/userManage/institutionUsers/index.vue 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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
  })
}
}
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
          })
      }
    }
  });
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({
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) => {
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)=>{