Browse Source

软件著作接口联调

ljb 10 months ago
parent
commit
314fd79dc8

+ 56 - 102
src/option/achievement/softWorks.js

@@ -7,28 +7,25 @@ export default {
   searchMenuSpan: 6,
   searchMenuSpan: 6,
   border: true,
   border: true,
   index: true,
   index: true,
-  viewBtn: true,
   selection: true,
   selection: true,
   addBtn: true,
   addBtn: true,
   delBtn: true,
   delBtn: true,
-  searchLabelWidth: 140,
-  labelWidth: 140,
-  menuWidth: 200,
+  labelWidth: 100,
+  menuWidth: 140,
   dialogClickModal: false,
   dialogClickModal: false,
-  dialogWidth: 760,
+  dialogWidth: 520,
   dialogType: "drawer",
   dialogType: "drawer",
   column: [
   column: [
     {
     {
       label: "软件名称",
       label: "软件名称",
       prop: "rjmc",
       prop: "rjmc",
-      span: 12,
-      width: 155,
-      align: "center",
+      span: 24,
+      minWidth: 160,
       search: true,
       search: true,
       showOverflowTooltip: true,
       showOverflowTooltip: true,
       rules: [
       rules: [
         {
         {
-          required: false,
+          required: true,
           message: "请输入软件名称",
           message: "请输入软件名称",
           trigger: "blur",
           trigger: "blur",
         },
         },
@@ -37,108 +34,69 @@ export default {
     {
     {
       label: "软件简称",
       label: "软件简称",
       prop: "rjjc",
       prop: "rjjc",
-      span: 12,
+      span: 24,
       search: true,
       search: true,
       width: 120,
       width: 120,
       align: "center",
       align: "center",
       showOverflowTooltip: true,
       showOverflowTooltip: true,
-      rules: [
-        {
-          required: false,
-          message: "请输入软件简称",
-          trigger: "blur",
-        },
-      ],
     },
     },
     {
     {
       label: "版本号",
       label: "版本号",
       prop: "bbh",
       prop: "bbh",
-      span: 12,
+      span: 24,
       search: true,
       search: true,
       width: 80,
       width: 80,
       align: "center",
       align: "center",
       showOverflowTooltip: true,
       showOverflowTooltip: true,
-      rules: [
-        {
-          required: false,
-          message: "请输入版本号",
-          trigger: "blur",
-        },
-      ],
     },
     },
     {
     {
       label: "登记号",
       label: "登记号",
       prop: "djh",
       prop: "djh",
-      span: 12,
+      span: 24,
       width: 100,
       width: 100,
       search: true,
       search: true,
       align: "center",
       align: "center",
       showOverflowTooltip: true,
       showOverflowTooltip: true,
-      rules: [
-        {
-          required: false,
-          message: "请输入登记号",
-          trigger: "blur",
-        },
-      ],
     },
     },
     {
     {
       label: "开发完成日期",
       label: "开发完成日期",
       prop: "kfwcrq",
       prop: "kfwcrq",
       type: "date",
       type: "date",
-      span: 12,
+      valueFormat: 'yyyy-MM-dd',
+      span: 24,
       width: 100,
       width: 100,
       search: true,
       search: true,
       align: "center",
       align: "center",
       showOverflowTooltip: true,
       showOverflowTooltip: true,
-      rules: [
-        {
-          required: false,
-          message: "请选择开发完成日期",
-          trigger: "change",
-        },
-      ],
     },
     },
     {
     {
       label: "首次发布日期",
       label: "首次发布日期",
       prop: "scfbrq",
       prop: "scfbrq",
       type: "date",
       type: "date",
-      span: 12,
-      width: 100,
+      valueFormat: 'yyyy-MM-dd',
+      span: 24,
+      width: 95,
       align: "center",
       align: "center",
-      search: false,
+      search: true,
       showOverflowTooltip: true,
       showOverflowTooltip: true,
-      rules: [
-        {
-          required: false,
-          message: "请选择首次发布日期",
-          trigger: "change",
-        },
-      ],
     },
     },
     {
     {
       label: "登记批准日期",
       label: "登记批准日期",
       prop: "djpzrq",
       prop: "djpzrq",
       type: "date",
       type: "date",
-      span: 12,
-      width: 100,
-      search: false,
-      showOverflowTooltip: true,
+      valueFormat: 'yyyy-MM-dd',
       align: "center",
       align: "center",
-      rules: [
-        {
-          required: false,
-          message: "请选择登记批准日期",
-          trigger: "change",
-        },
-      ],
+      span: 24,
+      width: 95,
+      search: true,
+      showOverflowTooltip: true,
     },
     },
     {
     {
       label: "取得方式",
       label: "取得方式",
       prop: "qdfs",
       prop: "qdfs",
       type: "select",
       type: "select",
-      span: 12,
-      width: 100,
+      span: 24,
+      width: 75,
       align: "center",
       align: "center",
       search: true,
       search: true,
       dicUrl: "/api/kd-system/dict-biz/dictionary?code=rjzzqdfs",
       dicUrl: "/api/kd-system/dict-biz/dictionary?code=rjzzqdfs",
@@ -157,58 +115,54 @@ export default {
     },
     },
     {
     {
       label: "关联研发项目情况",
       label: "关联研发项目情况",
-      prop: "xmId",
-      type: "select",
-      span: 12,
-      width: 300,
-      align: "center",
-      search: false,
-      showOverflowTooltip: true,
+      prop: "canyunZhuchi",
+      align: 'center',
       children: [
       children: [
         {
         {
-          label: "项目名称",
-          search: true,
-          prop: "xmmc",
-          width: 155,
-          rules: [
-            {
-              required: false,
-              message: "请输入发明人",
-              trigger: "blur",
-            },
-          ],
+          label: "研发项目名称",
+          prop: 'xmId',
+          width: 120,
+          span: 24,
+          hide: true
         },
         },
         {
         {
-          label: "项目编号",
+          label: "研发项目名称",
+          prop: 'xmmc',
+          width: 120,
           search: true,
           search: true,
-          prop: "xmbh",
+          showOverflowTooltip: true,
+          display: false
+        },
+        {
+          label: "研发项目编号",
+          prop: 'xmbh',
           width: 100,
           width: 100,
-          rules: [
-            {
-              required: false,
-              message: "请输入发明人",
-              trigger: "blur",
-            },
-          ],
+          align: 'center',
+          search: true,
+          showOverflowTooltip: true,
+          display: false
         },
         },
       ],
       ],
     },
     },
     {
     {
-      label: "附件上传",
+      label: "附件信息",
       prop: "attachment",
       prop: "attachment",
+      minWidth: 200,
       type: "upload",
       type: "upload",
-      span: 12,
-      width: 155,
-      align: "center",
-      dataType: 'string',
-      search: false,
-      loadText: '附件上传中,请稍等',
-      showOverflowTooltip: true,
+      multiple: true,
+      span: 24,
+      dataType: "object",
+      action: '/api/kd-resource/oss/endpoint/put-file',
+      uploadPreview: (file, column, done) => {
+        window.open(file.url, "_blank");
+        return;
+      },
       propsHttp: {
       propsHttp: {
-        res: 'data',
-        url: 'link',
+        url: "link",
+        name: "originalName",
+        res: "data",
       },
       },
-      action: "/api/kd-resource/oss/endpoint/put-file-attach"
+      showOverflowTooltip: true,
     },
     },
   ],
   ],
 };
 };

+ 6 - 3
src/views/achievement/other-achievements.vue

@@ -57,6 +57,8 @@
 
 
     </avue-crud>
     </avue-crud>
 
 
+    <upload-excel-dialog ref="uploadExcelDialog" :uploadAfter="uploadAfter"/>
+
     <WideTablePrinter
     <WideTablePrinter
       ref="printWideTable"
       ref="printWideTable"
       :columns="wideTableColumns"
       :columns="wideTableColumns"
@@ -70,6 +72,7 @@
 
 
 <script>
 <script>
 import projectSelect from "@/components/project-select";
 import projectSelect from "@/components/project-select";
+import UploadExcelDialog from "@/components/upload-excel-dialog";
 import {exportBlob} from "@/api/common";
 import {exportBlob} from "@/api/common";
 import NProgress from 'nprogress';
 import NProgress from 'nprogress';
 import 'nprogress/nprogress.css';
 import 'nprogress/nprogress.css';
@@ -80,6 +83,7 @@ import { isAlphanumericCombination } from "@/util/regex";
 
 
 export default window.$crudCommon({
 export default window.$crudCommon({
   components: {
   components: {
+    UploadExcelDialog,
     projectSelect
     projectSelect
   },
   },
   data() {
   data() {
@@ -158,9 +162,8 @@ export default window.$crudCommon({
   name: 'achievement/otherAchivement',
   name: 'achievement/otherAchivement',
   res: ({ data }) => {
   res: ({ data }) => {
     data.records = data.records.map(item => {
     data.records = data.records.map(item => {
-      if (!!item.attachment) {
-        item.attachment = JSON.parse(item.attachment);
-      }
+      item.xmId = item.xmId === 0 ? '' : item.xmId;
+      item.attachment = !!item.attachment ? JSON.parse(item.attachment) : [];
       return item;
       return item;
     })
     })
 
 

+ 1 - 5
src/views/achievement/patent-achievement.vue

@@ -74,7 +74,6 @@
 import {exportBlob} from "@/api/common";
 import {exportBlob} from "@/api/common";
 import UploadExcelDialog from "@/components/upload-excel-dialog";
 import UploadExcelDialog from "@/components/upload-excel-dialog";
 import projectSelect from "@/components/project-select";
 import projectSelect from "@/components/project-select";
-import kdUpload from "@/components/kd-upload";
 import NProgress from 'nprogress';
 import NProgress from 'nprogress';
 import 'nprogress/nprogress.css';
 import 'nprogress/nprogress.css';
 import {getToken} from "@/util/auth";
 import {getToken} from "@/util/auth";
@@ -85,7 +84,6 @@ export default window.$crudCommon({
   components: {
   components: {
     UploadExcelDialog,
     UploadExcelDialog,
     projectSelect,
     projectSelect,
-    kdUpload
   },
   },
   data() {
   data() {
     return {
     return {
@@ -142,9 +140,7 @@ export default window.$crudCommon({
   res: ({ data }) => {
   res: ({ data }) => {
     data.records = data.records.map(item => {
     data.records = data.records.map(item => {
       item.xmId = item.xmId === 0 ? '' : item.xmId;
       item.xmId = item.xmId === 0 ? '' : item.xmId;
-      if (!!item.attachment) {
-        item.attachment = JSON.parse(item.attachment);
-      }
+      item.attachment = !!item.attachment ? JSON.parse(item.attachment) : [];
       return item;
       return item;
     });
     });
 
 

+ 6 - 4
src/views/achievement/research-paper.vue

@@ -54,9 +54,10 @@
       <template slot="xmIdForm">
       <template slot="xmIdForm">
         <project-select ref="proSelect" placeholder="请选择项目名称" v-model="form.xmId"></project-select>
         <project-select ref="proSelect" placeholder="请选择项目名称" v-model="form.xmId"></project-select>
       </template>
       </template>
-
     </avue-crud>
     </avue-crud>
 
 
+    <upload-excel-dialog ref="uploadExcelDialog" :uploadAfter="uploadAfter"/>
+
     <WideTablePrinter
     <WideTablePrinter
       ref="printWideTable"
       ref="printWideTable"
       :columns="wideTableColumns"
       :columns="wideTableColumns"
@@ -70,6 +71,7 @@
 
 
 <script>
 <script>
 import projectSelect from "@/components/project-select";
 import projectSelect from "@/components/project-select";
+import UploadExcelDialog from "@/components/upload-excel-dialog";
 import {exportBlob} from "@/api/common";
 import {exportBlob} from "@/api/common";
 import NProgress from 'nprogress';
 import NProgress from 'nprogress';
 import 'nprogress/nprogress.css';
 import 'nprogress/nprogress.css';
@@ -79,6 +81,7 @@ import {downloadXls} from "@/util/util";
 
 
 export default window.$crudCommon({
 export default window.$crudCommon({
   components: {
   components: {
+    UploadExcelDialog,
     projectSelect
     projectSelect
   },
   },
   data() {
   data() {
@@ -136,9 +139,8 @@ export default window.$crudCommon({
   name: 'achievement/researchPaper',
   name: 'achievement/researchPaper',
   res: ({ data }) => {
   res: ({ data }) => {
     data.records = data.records.map(item => {
     data.records = data.records.map(item => {
-      if (!!item.attachment) {
-        item.attachment = JSON.parse(item.attachment);
-      }
+      item.xmId = item.xmId === 0 ? '' : item.xmId;
+      item.attachment = !!item.attachment ? JSON.parse(item.attachment) : [];
       return item;
       return item;
     })
     })
 
 

+ 125 - 20
src/views/achievement/soft-works.vue

@@ -42,12 +42,63 @@
         >
         >
           打印
           打印
         </el-button>
         </el-button>
+
+        <div class="tip">提示:企业可自行上传全部历史专利信息和资料,如专利与系统中已建档的研究项目无关,则研发项目编号和研发项目名称非必填。</div>
+      </template>
+
+      <template slot="kfwcrqSearch">
+        <span>开发完成时间:</span>
+        <el-date-picker
+          v-model="params.kfwcrq"
+          type="daterange"
+          range-separator="至"
+          start-placeholder="开始日期"
+          end-placeholder="结束日期"
+          value-format="yyyy-MM-DD"
+          style="width: 220px !important;"
+        >
+        </el-date-picker>
+      </template>
+
+      <template slot="scfbrqSearch">
+        <span>首次发布时间:</span>
+        <el-date-picker
+          v-model="params.scfbrq"
+          type="daterange"
+          range-separator="至"
+          start-placeholder="开始日期"
+          end-placeholder="结束日期"
+         style="width: 220px !important;"
+        >
+        </el-date-picker>
+      </template>
+
+      <template slot="djpzrqSearch">
+        <span>登记批准日期:</span>
+        <el-date-picker
+          v-model="params.djpzrq"
+          type="daterange"
+          range-separator="至"
+          start-placeholder="开始日期"
+          end-placeholder="结束日期"
+          style="width: 220px !important;"
+        >
+        </el-date-picker>
+      </template>
+
+      <template slot="xmIdForm">
+        <project-select v-model="form.xmId" @change="handleProjectChange"></project-select>
       </template>
       </template>
-      <template slot="menuLeft">
 
 
+      <template slot="attachment" slot-scope="{ row }">
+        <div v-for="(file, index) of row.attachment" :key="index">
+          <el-link @click="handleDownFile(file)">{{ file.label }}</el-link>
+        </div>
       </template>
       </template>
     </avue-crud>
     </avue-crud>
+
     <upload-excel-dialog ref="uploadExcelDialog" :uploadAfter="uploadAfter"/>
     <upload-excel-dialog ref="uploadExcelDialog" :uploadAfter="uploadAfter"/>
+
     <WideTablePrinter
     <WideTablePrinter
       ref="printWideTable"
       ref="printWideTable"
       :columns="wideTableColumns"
       :columns="wideTableColumns"
@@ -66,55 +117,109 @@ import NProgress from 'nprogress';
 import 'nprogress/nprogress.css';
 import 'nprogress/nprogress.css';
 import {getToken} from "@/util/auth";
 import {getToken} from "@/util/auth";
 import {downloadXls} from "@/util/util";
 import {downloadXls} from "@/util/util";
+import projectSelect from "@/components/project-select";
 
 
 
 
 export default window.$crudCommon({
 export default window.$crudCommon({
   components: {
   components: {
     UploadExcelDialog,
     UploadExcelDialog,
+    projectSelect
   },
   },
   data() {
   data() {
     return {
     return {
-      params: {},
       wideTableColumns: [],
       wideTableColumns: [],
       printTitle: "",
       printTitle: "",
     };
     };
   },
   },
   methods: {
   methods: {
+    getSearchParams() {
+      const newParams = { ...this.params };
+      if (newParams.kfwcrq && newParams.kfwcrq.length) {
+        newParams.kfwcrqStart = newParams.kfwcrq[0];
+        newParams.kfwcrqEnd = newParams.kfwcrq[1];
+      }
+      if (newParams.scfbrq && newParams.scfbrq.length) {
+        newParams.scfbrqStart = newParams.scfbrq[0];
+        newParams.scfbrqEnd = newParams.scfbrq[1];
+      }
+      if (newParams.djpzrq && newParams.djpzrq.length) {
+        newParams.djpzrqStart = newParams.djpzrq[0];
+        newParams.djpzrqEnd = newParams.djpzrq[1];
+      }
+      delete newParams.kfwcrq;
+      delete newParams.scfbrq;
+      delete newParams.djpzrq;
+      return newParams;
+    },
+    searchChange(params, done, type) {
+      if (done) done();
+      if (this.validatenull(params)) {
+        Object.keys(this.params).forEach(ele => {
+          if (!['createTime_dategt', 'createTime_datelt', 'kfwcrq', 'scfbrq', 'djpzrq'].includes(ele)) {
+            delete this.params[ele];
+          }
+        })
+      } else {
+        Object.keys(params).forEach(ele => {
+          if (this.validatenull(params[ele])) {
+            delete this.params[ele];
+            delete params[ele];
+          }
+        })
+      }
+      this.params = Object.assign(this.params, params);
+      this.page.currentPage = 1;
+      this.getList();
+    },
+    getFormData() {
+      let newFormData = { ...this.form };
+      if (!!newFormData.attachment) {
+        newFormData.attachment = JSON.stringify(newFormData.attachment);
+      }
+      return newFormData;
+    },
+    handleProjectChange(data){
+      this.form = {
+        ...this.form,
+        xmmc: data.xmmc,
+        xmbh: data.xmbh
+      }
+    },
     handleImport() {
     handleImport() {
-      // let excelParams = { yearAndMonth: this.params.yearAndMonth };
       this.$refs.uploadExcelDialog.open('/api/kd-scientific/kycg/rjzzq/import', {});
       this.$refs.uploadExcelDialog.open('/api/kd-scientific/kycg/rjzzq/import', {});
     },
     },
     uploadAfter() {
     uploadAfter() {
-      this.$message({
-        type: "success",
-        message: "导入成功!"
-      });
       this.page.currentPage = 1;
       this.page.currentPage = 1;
       this.getList(this.page);
       this.getList(this.page);
     },
     },
     handleExport() {
     handleExport() {
-      this.$confirm("是否导出吗?", "提示", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning"
-      }).then(() => {
-        NProgress.start();
-        exportBlob(`/api/kd-scientific/kycg/rjzzq/export?${this.website.tokenHeader}=${getToken()}`, {}).then(res => {
-          downloadXls(res.data, `软件著作.xlsx`);
-          NProgress.done();
-        })
-      });
+      exportBlob(`/api/kd-scientific/kycg/rjzzq/export?${this.website.tokenHeader}=${getToken()}`, {}).then(res => {
+        downloadXls(res.data, `软件著作列表.xlsx`);
+        NProgress.done();
+      })
     },
     },
     printTable() {
     printTable() {
       this.wideTableColumns = this.$refs.crud.columnOption;
       this.wideTableColumns = this.$refs.crud.columnOption;
-      this.printTitle = `科研成果`;
+      this.printTitle = `软件著作列表`;
       this.$nextTick(() => {
       this.$nextTick(() => {
         this.$refs.printWideTable.printTable(false);
         this.$refs.printWideTable.printTable(false);
       })
       })
     },
     },
+    handleDownFile(file) {
+      window.open(file.value, "_blank");
+    }
   },
   },
 }, {
 }, {
   // 模块路径
   // 模块路径
-  name: 'achievement/softWorks'
+  name: 'achievement/softWorks',
+  res: ({ data }) => {
+    data.records = data.records.map(item => {
+      item.xmId = item.xmId === 0 ? '' : item.xmId;
+      item.attachment = !!item.attachment ? JSON.parse(item.attachment) : [];
+      return item;
+    });
+
+    return data;
+  },
 });
 });
 </script>
 </script>

+ 6 - 3
src/views/achievement/technical-standard.vue

@@ -57,6 +57,8 @@
 
 
     </avue-crud>
     </avue-crud>
 
 
+    <upload-excel-dialog ref="uploadExcelDialog" :uploadAfter="uploadAfter"/>
+
     <WideTablePrinter
     <WideTablePrinter
       ref="printWideTable"
       ref="printWideTable"
       :columns="wideTableColumns"
       :columns="wideTableColumns"
@@ -71,6 +73,7 @@
 <script>
 <script>
 import projectSelect from "@/components/project-select";
 import projectSelect from "@/components/project-select";
 import {exportBlob} from "@/api/common";
 import {exportBlob} from "@/api/common";
+import UploadExcelDialog from "@/components/upload-excel-dialog";
 import NProgress from 'nprogress';
 import NProgress from 'nprogress';
 import 'nprogress/nprogress.css';
 import 'nprogress/nprogress.css';
 import {getToken} from "@/util/auth";
 import {getToken} from "@/util/auth";
@@ -79,6 +82,7 @@ import { isAlphanumericCombination } from "@/util/regex";
 
 
 export default window.$crudCommon({
 export default window.$crudCommon({
   components: {
   components: {
+    UploadExcelDialog,
     projectSelect
     projectSelect
   },
   },
   data() {
   data() {
@@ -157,9 +161,8 @@ export default window.$crudCommon({
   name: 'achievement/technicalStandard',
   name: 'achievement/technicalStandard',
   res: ({ data }) => {
   res: ({ data }) => {
     data.records = data.records.map(item => {
     data.records = data.records.map(item => {
-      if (!!item.attachment) {
-        item.attachment = JSON.parse(item.attachment);
-      }
+      item.xmId = item.xmId === 0 ? '' : item.xmId;
+      item.attachment = !!item.attachment ? JSON.parse(item.attachment) : [];
       return item;
       return item;
     })
     })