Ver código fonte

Merge branch 'dev' of http://110.41.163.243:9980/kd-aiot/kd-aiot-frontend into dev

quwangxin 2 anos atrás
pai
commit
0a4bfb55b1

+ 29 - 0
src/api/documentManagement/index.js

@@ -0,0 +1,29 @@
+import request from '@/utils/request';
+
+// 保存or更新
+export async function saveOrEdit (data) {
+  const res = await request.post(`/main/identityphoto/saveOrUpdate`, data);
+  if (res.data.code == 0) {
+    return res.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+
+// 获取证照列表分页
+export async function getPhotoList (data) {
+  let par = new URLSearchParams(data);
+  const res = await request.get(`/main/identityphoto/page?` + par, {});
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+
+// 获取证照信息详情
+export async function getPhotoInfo (id) {
+  const res = await request.get(`/main/identityphoto/getById/${id}`);
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}

+ 3 - 1
src/enum/dict.js

@@ -42,5 +42,7 @@ export const numberList = [
   'schedule_type',
   'leadtime_unit',
   'inspection_scheme',
-  'angle'
+  'angle',
+  'id_type',
+  'rule_status'
 ];

+ 60 - 21
src/views/documentManagement/certificateManagement/components/add-dialog.vue

@@ -1,6 +1,6 @@
 <template>
   <!-- 上传 -->
-  <el-dialog title="新增" :visible.sync="dialogVisible" width="50%">
+  <el-dialog :title="title" :visible.sync="dialogVisible" width="60%">
       <el-form ref="form" :model="form" :rules="rules" label-width="82px">
         <el-row :gutter="15">
           <el-col v-bind="styleResponsive ? { sm: 12 } : { span: 12 }">
@@ -8,12 +8,13 @@
               <el-input
                 placeholder="请输入"
                 v-model="form.code"
+                disabled
               ></el-input>
             </el-form-item>
           </el-col>
           <el-col v-bind="styleResponsive ? { sm: 12 } : { span: 12 }">
-             <el-form-item prop="typeValue" label="证件类型">
-                <DictSelection v-model="form.typeValue" dictName="证件类型"></DictSelection>
+             <el-form-item prop="type" label="证件类型">
+                <DictSelection v-model="form.type" dictName="证件类型"></DictSelection>
              </el-form-item>
           </el-col>
           <el-col v-bind="styleResponsive ? { sm: 12 } : { span: 12 }">
@@ -22,20 +23,20 @@
             </el-form-item>
           </el-col>
           <el-col v-bind="styleResponsive ? { sm: 12 } : { span: 12 }">
-             <el-form-item prop="owner" label="持证人">
+             <el-form-item prop="holder" label="持证人">
                <el-input
                  placeholder="请输入"
-                 v-model="form.owner"
+                 v-model="form.holder"
                ></el-input>
              </el-form-item>
           </el-col>
           <el-col v-bind="styleResponsive ? { sm: 12 } : { span: 12 }">
-            <el-form-item prop="salary" label="颁发时间">
+            <el-form-item label="颁发时间">
               <el-date-picker
                 style="width:100%"
-                v-model="form.awardTime"
+                v-model="form.enactorTime"
                 type="date"
-                value-format="yyyy-MM-dd"
+                value-format="yyyy-MM-dd HH:mm:ss"
                 placeholder="选择日期"
               >
               </el-date-picker>
@@ -57,11 +58,12 @@
              </el-form-item>
           </el-col>
           <el-col v-bind="styleResponsive ? { sm: 24 } : { span: 24 }">
-             <el-form-item prop="image" label="证照图片">
+             <el-form-item prop="imageObj" label="证照图片">
                <fileUpload
-                 v-model="form.image"
+                 v-model="form.imageObj"
                  module="main"
                  :showLib="true"
+                 :limit='1'
                />
              </el-form-item>
           </el-col>
@@ -86,9 +88,10 @@
 </template>
 
 <script>
-  // import { uploadBatch } from '@/api/system/file/index.js';
+  import { saveOrEdit , getPhotoInfo } from '@/api/documentManagement';
   import fileUpload from '@/components/upload/fileUpload';
   import imgUpload from '@/components/upload/imgUpload';
+  import { getCode  } from '@/api/ruleManagement/matter'
   export default {
     components: {
       fileUpload,
@@ -96,17 +99,23 @@
     },
     //注册组件
     data () {
+      const defaultForm = {
+        code:'',
+        date:[],
+        imageObj:[]
+      };
       return {
         dialogVisible: false,
         rules: {
           code: [{ required: true, trigger: 'blur', message: '请输入证照编号' }],
-          typeValue: [{ required: true, trigger: 'change' , message: '请选择证件类型'}],
+          type: [{ required: true, trigger: 'change' , message: '请选择证件类型'}],
           date: [{ required: true, trigger: 'change', message: '请选择有效期' }],
-          owner: [{ required: true, trigger: 'blur', message: '请输入持证人' }],
+          holder: [{ required: true, trigger: 'blur', message: '请输入持证人' }],
           status: [{ required: true, trigger: 'change', message: '请选择状态' }],
-          image: [{ required: true, trigger: 'change' , message: '请选择证照图片'}]
+          imageObj: [{ required: true, trigger: 'change' , message: '请选择证照图片'}]
         },
-        form: { },
+        form: {...defaultForm },
+        title:"新增"
       };
     },
     computed: {
@@ -117,27 +126,57 @@
     },
     created () {},
     methods: {
-      open () {
+      open (row) {
         this.$refs.form && this.$refs.form.clearValidate();
-        this.form = { };
         this.dialogVisible = true;
+        if(row){
+           this.title = '修改'
+           this.getInfo(row.id)
+        }else{
+          this.title = '新增'
+          this.form = {...this.defaultForm};
+          this.getOrderCode()
+        }
+      },
+      async getOrderCode () {
+        const data = await getCode('license_code');
+        this.$set(this.form, 'code', data);
+      },
+
+      async getInfo(id){
+        const data = await getPhotoInfo(id)
+        this.form = {
+          ...data,
+          date:[data.validityStartTime,data.validityEndTime]
+        }
+        this.$set(this.form,'imageObj',[data.fileObj])
       },
+
       submit(){
          this.$refs.form.validate((valid) => {
            if (!valid) {
              return false;
            }
            this.loading = true;
+           if(this.form.date?.length){
+              this.form.validityStartTime = this.form.date[0];
+              this.form.validityEndTime = this.form.date[1];
+           }
+           if(this.form.imageObj.length){
+              this.form.fileObj = this.form.imageObj[0]
+           }
            const data = {
              ...this.form,
-             parentId: this.form.parentId || 0
+             fileId:this.form.fileObj.id
            };
-           saveOrUpdate(data)
+           delete data.date
+           delete data.imageObj
+           saveOrEdit(data)
              .then((msg) => {
                this.loading = false;
                this.$message.success(msg);
-               this.updateVisible(false);
-               this.$emit('done');
+               this.dialogVisible = false;
+               this.$emit('success');
              })
              .catch((e) => {
                this.loading = false;

+ 6 - 5
src/views/documentManagement/certificateManagement/components/certificate-search.vue

@@ -28,7 +28,7 @@
       </el-col>
       <el-col v-bind="styleResponsive ? { md: 6 } : { span: 6}">
         <el-form-item label="持证人">
-          <el-input clearable v-model="where.name" placeholder="请输入" />
+          <el-input clearable v-model="where.holder" placeholder="请输入" />
         </el-form-item>
       </el-col>
       <el-col v-bind="styleResponsive ? { md: 5 } : { span: 5 }">
@@ -70,8 +70,9 @@
     data () {
       // 默认表单数据
       const defaultWhere = {
-        module: '',
-        name: '',
+        code: '',
+        holder: '',
+        type:'',
         time: []
       };
       return {
@@ -91,8 +92,8 @@
       search () {
         const where = { ...this.where };
         if (where.time?.length) {
-          where.startTime = where.time[0];
-          where.endTime = where.time[1];
+          where.validityStartTime = where.time[0];
+          where.validityEndTime = where.time[1];
         }
 
         delete where.time;

+ 97 - 0
src/views/documentManagement/certificateManagement/components/detail-dialog.vue

@@ -0,0 +1,97 @@
+<template>
+  <el-dialog title="证照详情" :visible.sync="dialogVisible" width="60%">
+     <el-descriptions title="" :column="3" size="medium" border>
+       <el-descriptions-item>
+     	<template slot="label"> 证照编号 </template>
+     	{{form.code}}
+       </el-descriptions-item>
+       <el-descriptions-item>
+     	<template slot="label"> 类型 </template>
+      	{{getDictValue('证件类型', form.type)}}
+       </el-descriptions-item>
+       <el-descriptions-item>
+     	<template slot="label"> 持证人</template>
+     	{{form.holder}}
+       </el-descriptions-item>
+       <el-descriptions-item :span="2">
+     	  <template slot="label"> 有效期至 </template>
+     	  {{form.validityStartTime + ' — ' + form.validityEndTime}}
+       </el-descriptions-item>
+       <el-descriptions-item>
+       	<template slot="label"> 状态 </template>
+     	  {{getDictValue('规则状态', form.status)}}
+       </el-descriptions-item>
+       <el-descriptions-item>
+       	<template slot="label"> 颁发时间 </template>
+       	{{form.enactorTime}}
+       </el-descriptions-item>
+       <el-descriptions-item>
+       	<template slot="label"> 创建人 </template>
+     	   {{form.createUserName}}
+       </el-descriptions-item>
+       <el-descriptions-item>
+       	<template slot="label"> 创建机构 </template>
+       	{{form.createUserDeptName}}
+       </el-descriptions-item>
+       <el-descriptions-item>
+       	<template slot="label"> 创建时间 </template>
+      	{{form.createTime}}
+       </el-descriptions-item>
+       <el-descriptions-item :span="3">
+       	<template slot="label"> 证件图片 </template>
+        <el-image
+          style="width: 100px; height: 100px"
+          :src="form.imageUrl"
+          :preview-src-list="[form.imageUrl]"
+        />
+       </el-descriptions-item>
+       <el-descriptions-item :span="3">
+       	<template slot="label"> 备注 </template>
+     	  {{form.remark}}
+       </el-descriptions-item>
+     </el-descriptions>
+    <div slot="footer" class="dialog-footer">
+      <el-button size="small" @click="dialogVisible = false">关 闭</el-button>
+    </div>
+  </el-dialog>
+</template>
+
+<script>
+  import { getPhotoInfo } from '@/api/documentManagement';
+  import dictMixins from '@/mixins/dictMixins';
+  import { getImageUrl } from '@/utils/file.js';
+  export default {
+    mixins: [dictMixins],
+    components: {},
+    //注册组件
+    data () {
+      return {
+        dialogVisible: false,
+        form: { }
+      };
+    },
+    computed: {
+    },
+    created () {
+      this.requestDict('证件类型');
+      this.requestDict('规则状态');
+    },
+    methods: {
+      open (row) {
+        this.dialogVisible = true;
+        this.getInfo(row.id)
+      },
+      async getInfo(id){
+        const data = await getPhotoInfo(id)
+        this.form = data
+        this.form.imageUrl  = getImageUrl(data.fileObj.storePath)
+      },
+    }
+  };
+</script>
+
+<style lang="scss">
+ .el-form-item{
+    margin-bottom:20px!important;
+ }
+</style>

+ 68 - 31
src/views/documentManagement/certificateManagement/index.vue

@@ -16,28 +16,41 @@
           <!-- <el-button type="primary" @click="handleUpload">导入</el-button> -->
         </template>
         <template v-slot:code="{ row }">
-          <el-link>2222</el-link>
-          <p class="ele-text-info">身份证</p>
+          <el-link type="primary" :underline="false" @click="openDetail(row)">{{row.code}}</el-link>
+          <p class="ele-text-info">
+             {{getDictValue('证件类型', row.type)}}
+          </p>
         </template>
         <template v-slot:time="{ row }">
-          <p>起:2023-02-15 00:00</p>
-          <p class="ele-text-info">止:2023-02-15 00:00</p>
+          <p>起:{{row.validityStartTime}}</p>
+          <p class="ele-text-info">止:{{row.validityEndTime}}</p>
         </template>
         <template v-slot:createUser="{ row }">
-          <p>黄凯</p>
-          <p>株洲硬质合金集团型材分公司</p>
-          <p class="ele-text-info">2023-02-15 00:00</p>
+          <p>{{row.createUserName}}</p>
+          <p>{{row.createUserDeptName}}</p>
+          <p class="ele-text-info">{{row.createTime}}</p>
         </template>
         <template v-slot:picture="{ row }">
           <el-image
             style="width: 100px; height: 100px"
-            :src="row.url"
-            :preview-src-list="[row.url]"
+            :src="row.imageUrl"
+            :preview-src-list="[row.imageUrl]"
           />
         </template>
+        <template v-slot:action="{ row }">
+          <el-link
+            type="primary"
+            :underline="false"
+            icon="el-icon-edit"
+            @click="handleUpload(row)"
+          >
+            修改
+          </el-link>
+        </template>
       </ele-pro-table>
     </el-card>
     <addDialog ref="addDialogRef" @success="reload" />
+    <detailDialog ref="detailDialogRef" />
   </div>
 </template>
 
@@ -45,8 +58,14 @@
   import { getFile, getFileList } from '@/api/system/file/index.js';
   import certificateSearch from './components/certificate-search';
   import addDialog from './components/add-dialog.vue';
+  import detailDialog from './components/detail-dialog.vue';
+  import { getPhotoList } from '@/api/documentManagement';
+  import dictMixins from '@/mixins/dictMixins';
+  import { getImageUrl } from '@/utils/file.js';
+  import { deepClone } from '@/utils';
   export default {
-    components: { certificateSearch, addDialog },
+    mixins: [dictMixins],
+    components: { certificateSearch, addDialog , detailDialog },
     data () {
       return {
         columns: [
@@ -58,27 +77,31 @@
           },
           {
             label: '证照编号',
-            slot: 'code'
+            slot: 'code',
+            width:180
           },
           {
             label: '状态',
-            prop: 'type'
-          },
-          {
-            label: '执证人'
+            prop: 'status',
+            formatter: (row) => {
+              return this.getDictValue('规则状态', row.status);
+            }
           },
           {
-            label: '颁发机构',
-            prop: 'storePath',
-            showOverflowTooltip: true
+            label: '执证人',
+            prop:'holder'
           },
           {
             label: '有效期限',
-            slot: 'time'
+            slot: 'time',
+            minWidth: '180',
+            showOverflowTooltip: true
           },
           {
             label: '创建人信息',
-            slot: 'createUser'
+            slot: 'createUser',
+            minWidth: '200',
+            showOverflowTooltip: true
           },
           {
             label: '证照',
@@ -87,28 +110,42 @@
           {
             label: '备注',
             prop: 'remark',
-            minWidth: '200',
+            minWidth: '100',
+            showOverflowTooltip: true
+          },
+          {
+            columnKey: 'action',
+            label: '操作',
+            width: 80,
+            align: 'left',
+            resizable: false,
+            slot: 'action',
             showOverflowTooltip: true
           }
         ]
       };
     },
+    created () {
+       this.requestDict('证件类型');
+       this.requestDict('规则状态');
+    },
     methods: {
-      datasource ({ page, where, limit }) {
-        return getFileList({
-          ...where,
-          pageNum: page,
-          size: limit
-        });
+      async datasource ({ page, where, limit }) {
+        const data = await getPhotoList({  ...where, pageNum: page, size: limit });
+        const res = deepClone(data)
+        res.list.map(item=>{
+           item.imageUrl  = getImageUrl(item.fileObj.storePath)
+        })
+        return res
       },
       reload (where = {}) {
         this.$refs.table.reload({ where });
       },
-      handleUpload () {
-        this.$refs.addDialogRef.open();
+      handleUpload (row) {
+        this.$refs.addDialogRef.open(row);
       },
-      handleDownload (row) {
-        getFile({ objectName: row.storePath }, row.name);
+      openDetail(row){
+        this.$refs.detailDialogRef.open(row);
       }
     }
   };

+ 1 - 1
src/views/technology/version/index.vue

@@ -9,7 +9,7 @@
         :columns="columns"
         :datasource="datasource"
         :selection.sync="selection"
-        row-key="code"
+        row-key="id"
       >
         <!-- 表头工具栏 -->
        <template v-slot:toolbar>