Browse Source

证书管理

ZaiZai 1 year ago
parent
commit
18a84ed77c
3 changed files with 71 additions and 13 deletions
  1. 7 0
      src/api/modules/other.js
  2. 13 7
      src/utils/tools.js
  3. 51 6
      src/views/certificate/modules/list/form.vue

+ 7 - 0
src/api/modules/other.js

@@ -28,6 +28,13 @@ export const getDictionary = (form, msg = true) => HcApi({
     params: form,
 }, msg)
 
+//获取类型
+export const getBizDictionary = (form, msg = true) => HcApi({
+    url: '/api/blade-system/dict-biz/dictionary',
+    method: 'get',
+    params: form,
+}, msg)
+
 //获取用户列表
 export const getContractUserList = (form, msg = true) => HcApi({
     url: '/api/blade-manager/contractInfo/get-contract-userList',

+ 13 - 7
src/utils/tools.js

@@ -1,5 +1,5 @@
 import { getArrValue } from 'js-fast-way'
-import { getDictionary } from '~api/other'
+import { getBizDictionary, getDictionary } from '~api/other'
 
 //刷新页面
 export const reloadPage = () => {
@@ -21,15 +21,21 @@ export const isNumberReg = (text, lose = true) => {
 
 
 //获取字典数据
-export const getDictionaryData = async (code) => {
-    const { data } = await getDictionary({ code: code })
+export const getDictionaryData = async (code, biz = false) => {
+    let res = []
+    if (biz) {
+        const { data } = await getBizDictionary({ code: code })
+        res = getArrValue(data)
+    } else {
+        const { data } = await getDictionary({ code: code })
+        res = getArrValue(data)
+    }
     //处理数据
     let newArr = []
-    const newData = getArrValue(data)
-    for (let i = 0; i < newData.length; i++) {
+    for (let i = 0; i < res.length; i++) {
         newArr.push({
-            label: newData[i]['dictValue'],
-            value: Number(newData[i]['dictKey']),
+            label: res[i]['dictValue'],
+            value: Number(res[i]['dictKey']),
         })
     }
     return newArr

+ 51 - 6
src/views/certificate/modules/list/form.vue

@@ -2,19 +2,26 @@
     <hc-new-card :title="rowItem.id ? '编辑证书' : '新增证书'">
         <el-form ref="formRef" :model="formModel" :rules="formRules" label-position="top" label-width="auto">
             <el-row :gutter="20">
-                <el-col :span="16">
+                <el-col :span="formModel.certificateType !== 1 && Number(formModel.company) === 3 ? 24 : 16 ">
                     <el-row :gutter="20">
                         <el-col :span="12">
                             <el-form-item label="证书类型:" prop="certificateType">
                                 <div class="form-item-div">
-                                    <el-radio-group v-model="formModel.certificateType">
+                                    <el-radio-group v-model="formModel.certificateType" @change="certificateTypeChange">
                                         <el-radio :value="1">个人证书</el-radio>
                                         <el-radio :value="2">企业证书</el-radio>
                                     </el-radio-group>
                                 </div>
                             </el-form-item>
                         </el-col>
-                        <el-col :span="12">
+                        <el-col v-if="formModel.certificateType === 2" :span="12">
+                            <el-form-item label="签字公司:" prop="company">
+                                <el-select v-model="formModel.company" filterable clearable block>
+                                    <el-option v-for="item in companyData" :key="item.value" :label="item.label" :value="item.value" />
+                                </el-select>
+                            </el-form-item>
+                        </el-col>
+                        <el-col v-if="formModel.certificateType === 1" :span="12">
                             <el-form-item label="关联用户:" prop="certificateUserId">
                                 <el-select-v2 v-model="formModel.certificateUserId" :options="users" placeholder="选择关联用户" filterable block @change="usersChange" />
                             </el-form-item>
@@ -24,24 +31,36 @@
                                 <el-input v-model="formModel.certificateUserName" clearable />
                             </el-form-item>
                         </el-col>
-                        <el-col :span="12">
+                        <el-col v-if="formModel.certificateType === 1 && Number(formModel.company) !== 3" :span="12">
                             <el-form-item label="所持证书者身份证号码:" prop="certificateId">
                                 <el-input v-model="formModel.certificateId" clearable />
                             </el-form-item>
                         </el-col>
+                        <el-col v-if="formModel.certificateType === 2 && Number(formModel.company) !== 3" :span="12">
+                            <el-form-item label="企业统一社会信用代码:" prop="enterpriseUnifiedCode">
+                                <el-input v-model="formModel.enterpriseUnifiedCode" clearable />
+                            </el-form-item>
+                        </el-col>
                         <el-col :span="12">
                             <el-form-item label="证书编号:" prop="certificateNumber">
                                 <el-input v-model="formModel.certificateNumber" clearable />
                             </el-form-item>
                         </el-col>
-                        <el-col :span="12">
+                        <el-col v-if="Number(formModel.company) !== 3" :span="12">
                             <el-form-item label="证书密码:" prop="certificatePassword">
                                 <el-input v-model="formModel.certificatePassword" clearable />
                             </el-form-item>
                         </el-col>
+                        <el-col v-else :span="12">
+                            <el-form-item label="签章类型:" prop="pfxType">
+                                <el-select v-model="formModel.pfxType" filterable clearable block>
+                                    <el-option v-for="item in pfxTypeData" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey" />
+                                </el-select>
+                            </el-form-item>
+                        </el-col>
                     </el-row>
                 </el-col>
-                <el-col :span="8">
+                <el-col v-if="formModel.certificateType === 1 || (formModel.certificateType === 2 && Number(formModel.company) === 2)" :span="8">
                     <el-form-item prop="certificateFileUrl">
                         <template #label>
                             <div class="hc-form-item-label">
@@ -89,6 +108,7 @@
 import { nextTick, onMounted, ref } from 'vue'
 import { getHeader } from 'hc-vue3-ui'
 import { getArrValue, getObjValue, isNullES } from 'js-fast-way'
+import { getDictionaryData } from '~uti/tools'
 import adminApi from '~api/certificate/admin'
 import mainApi from '~api/certificate/list'
 
@@ -116,6 +136,8 @@ const getDataApi = () => {
         getDetailData(id)
     }
     findUserByName()
+    getCompanyData()
+    getPfxTypeData()
 }
 
 //获取数据详情
@@ -149,6 +171,21 @@ const usersChange = (val) => {
     formModel.value.certificatePassword = item.plaintextPassword
 }
 
+//签字公司
+const companyData = ref([])
+const getCompanyData = async () => {
+    companyData.value = await getDictionaryData('es_type_name', true)
+}
+
+
+//签章类型
+const pfxTypeData = ref([])
+const getPfxTypeData = async () => {
+    const { data } = await mainApi.findPfxType({
+        typeOrStatus: 'pfx_type',
+    })
+    pfxTypeData.value = getArrValue(data)
+}
 
 //菜单表单
 const formRef = ref(null)
@@ -193,6 +230,14 @@ const formRules = {
     },
 }
 
+//切换类型
+const certificateTypeChange = () => {
+    const { certificateType, company } = formModel.value
+    if (certificateType === 2) {
+        formModel.value.company = company ?? 2
+    }
+}
+
 //上传文件
 const uploadRef = ref(null)
 const uploadParams = ref({})