zhouwx
2025-03-24 3f6bf89b1985b6668f02ffcc9af577b412e92e45
src/views/safetyReview/institution/components/viewInstitution.vue
@@ -2,7 +2,7 @@
    <el-dialog v-model="dialogVisible" width="75%" top="50vh" align-center @close="closeDialog">
        <el-form ref="registerRef" :model="registerForm" class="register-form" label-position="top">
            <el-row :gutter="30">
                <el-col :span="8">
                <el-col :span="6">
                    <el-form-item prop="agency.name" label="机构名称">
                        <el-input
                            disabled
@@ -13,7 +13,7 @@
                        </el-input>
                    </el-form-item>
                </el-col>
                <el-col :span="8">
                <el-col :span="6">
                    <el-form-item prop="agency.creditCode" label="社会信用代码">
                        <el-input
                            disabled
@@ -24,7 +24,7 @@
                        </el-input>
                    </el-form-item>
                </el-col>
                <el-col :span="8">
                <el-col :span="6">
                    <el-form-item prop="agency.attribute" label="机构属性">
                        <el-radio-group v-model="registerForm.agency.attribute" style="width: 50%" disabled>
                            <el-radio :label="0" size="large">疆内</el-radio>
@@ -32,18 +32,26 @@
                        </el-radio-group>
                    </el-form-item>
                </el-col>
              <el-col :span="6">
                <el-form-item prop="agency.businessType" label="业务类别">
                  <el-checkbox-group v-model="registerForm.agency.businessType" disabled>
                    <el-checkbox v-for="item in registerForm.businessTypeList" :label="item.value" :key="item.value">{{ item.label }}</el-checkbox>
                  </el-checkbox-group>
                </el-form-item>
              </el-col>
            </el-row>
            <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">
@@ -139,6 +147,15 @@
                    </el-form-item>
                </el-col>
            </el-row>
          <el-row :gutter="30">
            <el-col :span="8">
              <el-form-item prop="agency.certPath" label="资质证书">
                <el-upload  disabled v-model:file-list="certList" :limit='state.imgLimit' :on-preview="handlePictureCardPreview" list-type="picture-card" >
                </el-upload>
              </el-form-item>
            </el-col>
          </el-row>
            <el-row :gutter="30">
                <el-col :span="8">
                    <el-form-item prop="agency.assetValue" label="固定资产总值">
@@ -202,7 +219,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 +229,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 +249,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"/>
@@ -274,7 +265,9 @@
import {getDict} from "@/api/login";
import {getRegionTree} from "@/api/area";
const imageUrl = ref("");
const certImageUrl = ref("");
const srcList = ref([]);
const certList = ref([]);
const registerForm = ref({
    agency:{
        name: "",
@@ -298,11 +291,22 @@
        regAddress: '',
        business: '',
        reportPath: '',
        businessType: []
    },
    username: '',
    phone: '',
    password: '',
    confirmPassword: ''
    confirmPassword: '',
    businessTypeList: [
      {
        value: 1,
        label: '安全评价'
      },
      {
        value: 2,
        label: '检验检测'
      },
    ]
});
@@ -315,7 +319,7 @@
    areaList: [],
    busList: [],
    fileList: [],
    imgLimit: 1,
    imgLimit: 5,
    uploadUrl: import.meta.env.VITE_APP_BASE_API + '/system/common/uploadFile',
    header: {
        Authorization: 'Bearer ' + getToken()
@@ -327,10 +331,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 +351,49 @@
    }
}
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)
        registerForm.value.agency.businessType = res.data.businessType ? res.data.businessType.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
        // })
        if(res.data.certPath) {
          const imgList = res.data.certPath.split(',')
          imgList.forEach((item,index) => {
            if(item.includes(import.meta.env.VITE_APP_BASE_API)){
            }else{
              imgList[index] = import.meta.env.VITE_APP_BASE_API + "/" + item
            }
          })
          const imgUrl = imgList.join(',')
          certList.value = imgUrl ? imgUrl.split(',').map(url => {return {url} }) : []
        }
        // certImageUrl.value = import.meta.env.VITE_APP_BASE_API + "/" +  res.data.certPath
    }else{
        ElMessage.warning(res.message)
    }
@@ -375,6 +404,12 @@
const closeDialog = ()=>{
    dialogVisible.value = false;
    state.fileList = []
    srcList.value = []
    certList.value = []
}
const handlePictureCardPreview = (uploadFile) => {
  state.dialogImageUrl = uploadFile.url
  state.dialogImg = true
}
defineExpose({
@@ -388,9 +423,12 @@
        margin-top: 500px !important;
    }
}
</style>
<style lang='scss' scoped>
.register-form {
  ::v-deep(.el-upload--picture-card){display: none}
    .el-input {
        height: 40px;
        input {