Эх сурвалжийг харах

体系运行记录盒归档完善

cfort 3 жил өмнө
parent
commit
0ea3000873

+ 111 - 132
src/views/platform/bpmn/bpmInstHis/corresponding/getReport.js

@@ -4,140 +4,119 @@
 import curdPost from '@/business/platform/form/utils/custom/joinCURD.js'
 export default {
     methods: {
- /*1 遍历,返回附件和报告*/
-    selectRetrunData(key){
-       for(let i=0;i<this.reportAll.length;i++){
-          let data = {}
-         if(key.procDefKey === this.reportAll[i].liu_cheng_xuan_ze){
-           if(this.reportAll[i].bao_biao_lu_jing_){
-              data['report'] =this.reportAll[i].bao_biao_lu_jing_.split(",")
-           }
-           data['file'] = this.reportAll[i].fu_jian_nei_rong_
-           data['formId'] = key.bizKey
-           data['mysql'] = this.reportAll[i].shi_fou_zi_biao_
-           data['rele'] = this.reportAll[i].guan_lian_zi_duan
-           return data
-         }
-       }
-
-    },
-
-    alertReport(vlues,id_) {
-      
-      this.srcUrl= this.$reportPash.replace("show", "pdf") +vlues+"&id_="+id_;
-      console.log(this.srcUrl,"11111");
-      // 42明鉴/吴/MJT-QP-7.1-01-R02合同评审表.rpx&id_='+ "1001804667832762368";
-      // this.srcUrl= this.$reportPash.replace("show", "pdf") +'36内部审核程序/SGJS-CX-36-01B 年度内部审核计划.rpx&id_=969264116109672448';
-      this.visible=true;
-    },
-
-    /* 2、打开内容与附件,获取相关报告与附件内容*/
-    getReportAndFile(data){
-      if(this.forClick == data.id || this.isDisable){ //判断,是否重复点击  是否多次高速点击
-        if(this.isDisable)  this.$message.error('请勿快速点击!');
-        return
-      }
-      this.numbersClick()
-      this.forClick = data.id
-
-      this.currReportCont= {}
-      if(!data.procDefKey) return
-
-      let cont = this.selectRetrunData(data)
-      if(!cont) return
-
-      this.currReportCont = cont
-      if(cont.file && cont.mysql){ //拥有文件的表单,查询对应文件
-        this.getfIle(cont)
-      }
-    },
-    /* 3打开报告 */
-    clickCont(cont,i){
-      this.srcUrl =this.$reportPash.replace("show","pdf")+cont.report[i]+'&id_='+cont.formId
-      this.visible=true
-    },
-
-    clickConts_GuanLiPingShen(i){
-      this.srcUrl =this.$reportPash.replace("show","pdf")+'37管理评审程序/GDYR-CX30-R04C 管理评审改进跟踪验证表.rpx&id_='+i
-      this.visible=true
-    },
-
-    clickConts_BuFuHeXiang(i){
-      this.srcUrl =this.$reportPash.replace("show","pdf")+'36内部审核程序/GDYR-CX22-R01B 不符合项报告与纠正措施记录表.rpx&id_='+i
-      this.visible=true
-    },
-    // 检测管理打开润乾报表
-    clickConts_jianCe(name,i){
-      this.srcUrl =this.$reportPash.replace("show","pdf")+name+'&id_='+i
-      this.visible=true
-    },
-    /*3 获取文件内容, 以表名+ id 去获取对应参数
-        根据, 分割条件
-        根据。分割查询次数
-    */
-    getfIle(cont){
-      this.fileId = ''
-      let data ={}
-      data.mysql = cont.mysql.split(".")//如果是多个数据表
-      data.file = cont.file.split(".")//如果是多个数据表
-
-      if(cont.rele) data.rele = cont.rele.split(".") //如果是多个数据表
-      /* 根据数据库名循环,判断要调用多少次ajax   */
-      let arr = []
-      for(let i in data.mysql){
-        let rele =''
-        if(data.rele) rele = data.rele[i]
-        arr.push(this.waitData(data,rele,cont,i))
-        }
-        Promise.all(arr)
-               .then(res => {
-                 this.fileId = res.toString()
-                })
-                .catch(err => {
-                  console.log("error", err);
-                });
-
-    },
-    /* 拼接sql*/
-    joinSql(mysql,file,rele,id){
-     return  'select '+file+' from '+mysql+' where '+ (rele ? rele:'id_') + `='`+id+`'`
-    },
-    async waitData(data,rele,cont,index) {
-          let n = await this.getFile(data,rele,cont,index);
-          return n;
+        /*1 遍历,返回附件和报告*/
+        selectRetrunData (key) {
+            const temp = this.reportAll.find(item => item.liu_cheng_xuan_ze === key.procDefKey)
+            console.log(temp)
+            let data = {
+                report: temp.bao_biao_lu_jing_ ? temp.bao_biao_lu_jing_.split(',') : [],
+                file: temp.fu_jian_nei_rong_,
+                formId: key.bizKey,
+                mysql: temp.shi_fou_zi_biao_,
+                rele: temp.guan_lian_zi_duan
+            }
+            return data
+        },
+        alertReport (value, id_) {
+            this.srcUrl = `${this.$reportPash.replace('show', 'pdf')}${value}&id_=${id_}`
+            this.visible = true
+        },
+        /* 2、打开内容与附件,获取相关报告与附件内容*/
+        getReportAndFile (data) {
+            if (this.forClick == data.id || this.isDisable) { //判断,是否重复点击  是否多次高速点击
+                if (this.isDisable) this.$message.error('请勿快速点击!');
+                return
+            }
+            this.numbersClick()
+            this.forClick = data.id
+
+            this.currReportCont = {}
+            if (!data.procDefKey) return
+
+            let cont = this.selectRetrunData(data)
+            if (!cont) return
+
+            this.currReportCont = cont
+            if (cont.file && cont.mysql) { //拥有文件的表单,查询对应文件
+                this.getfIle(cont)
+            }
+        },
+        /* 3打开报告 */
+        clickCont (cont, i) {
+            this.srcUrl = this.$reportPash.replace('show', "pdf") + cont.report[i] + '&id_=' + cont.formId
+            this.visible = true
         },
-    /* AXIOS获取文件*/
-  getFile(data,rele,cont,index){
-    return new Promise((resolve, reject) => {
-        curdPost('sql',this.joinSql(data.mysql[index],data.file[index],rele,cont.formId)).then(response => {
-          let result = ''
-          let fName = data.file[index] //多个文件字段
-          let fNames = fName.split(",") //每个文件字段又是以,拼接
-          let rul = response.variables.data
-          if(rul){
-            /* 还未做 同一张表多个文件字段的判断*/
-            for(let j in rul){
-              //如果是多个子表
-              if(rul[j][fName]){
-               result  = result ?result +','+ rul[j][fName] : rul[j][fName]
-                }else if(fNames && fNames.length>1){ //如果是多个子表,子表多个字段
-                  for(let d  in fNames){
-                    if(rul[j][fNames[d]]){
-                      result  = result ? result +','+ rul[j][fNames[d]] : rul[j][fNames[d]]
+        clickConts_GuanLiPingShen (i) {
+            this.srcUrl = this.$reportPash.replace('show', 'pdf') + '37管理评审程序/GDYR-CX30-R04C 管理评审改进跟踪验证表.rpx&id_=' + i
+            this.visible = true
+        },
+        clickConts_BuFuHeXiang (i) {
+            this.srcUrl = this.$reportPash.replace('show', 'pdf') + '36内部审核程序/GDYR-CX22-R01B 不符合项报告与纠正措施记录表.rpx&id_=' + i
+            this.visible = true
+        },
+        // 检测管理打开润乾报表
+        clickConts_jianCe (name, i) {
+            this.srcUrl = this.$reportPash.replace('show', 'pdf') + name + '&id_=' + i
+            this.visible = true
+        },
+        /*3 获取文件内容,以表名和id去获取对应参数
+            根据, 分割条件
+            根据。分割查询次数
+        */
+        getfIle (cont) {
+            this.fileId = ''
+            let data = {}
+            data.mysql = cont.mysql.split('.')//如果是多个数据表
+            data.file = cont.file.split('.')//如果是多个数据表
+
+            if (cont.rele) data.rele = cont.rele.split(".") //如果是多个数据表
+            /* 根据数据库名循环,判断要调用多少次ajax   */
+            let arr = []
+            for (let i in data.mysql) {
+                let rele = ''
+                if (data.rele) rele = data.rele[i]
+                arr.push(this.waitData(data, rele, cont, i))
+            }
+            Promise.all(arr).then(res => {
+                this.fileId = res.toString()
+            }).catch(err => {
+                console.log("error", err);
+            })
+        },
+        /* 拼接sql*/
+        joinSql (mysql, file, rele, id) {
+            return 'select ' + file + ' from ' + mysql + ' where ' + (rele ? rele : 'id_') + `='` + id + `'`
+        },
+        async waitData (data, rele, cont, index) {
+            let n = await this.getFile(data, rele, cont, index);
+            return n;
+        },
+        /* AXIOS获取文件*/
+        getFile (data, rele, cont, index) {
+            return new Promise((resolve, reject) => {
+                curdPost('sql', this.joinSql(data.mysql[index], data.file[index], rele, cont.formId)).then(response => {
+                    let result = ''
+                    let fName = data.file[index] //多个文件字段
+                    let fNames = fName.split(",") //每个文件字段又是以,拼接
+                    let rul = response.variables.data
+                    if (rul) {
+                        /* 还未做 同一张表多个文件字段的判断*/
+                        for (let j in rul) {
+                            //如果是多个子表
+                            if (rul[j][fName]) {
+                                result = result ? result + ',' + rul[j][fName] : rul[j][fName]
+                            } else if (fNames && fNames.length > 1) { //如果是多个子表,子表多个字段
+                                for (let d in fNames) {
+                                    if (rul[j][fNames[d]]) {
+                                        result = result ? result + ',' + rul[j][fNames[d]] : rul[j][fNames[d]]
+                                    }
+                                }
+                            }
                         }
                     }
-                  }
-               }
-             }
-             resolve(result)
-           })
-        });
+                    resolve(result)
+                })
+            })
+        }
     }
-
-
-
-
-
-
-  }
 }

+ 35 - 22
src/views/platform/bpmn/bpmInstHis/corresponding/index.js

@@ -1,24 +1,37 @@
 export const listTypeData = {
-    '788048416507691008':'gongZheng',
-    '843924691121864704':'peiXun',
-    '747865610389553152':'sheBei',
+    '788048416507691008': 'gongZheng',
+    '843924691121864704': 'peiXun',
+    '747865610389553152': 'sheBei',
     '747865588696612864': 'jianDu',
-    '747865628878045184':'huanJing',
-    '747865535110184960':'jiLiang',
-    '747865562742259712':'heCha',
-    '848876704007979008':'gongYing', //8.供应商
-    '848877659185217536':'fangFa',//9.方法管理
-    '848877794631876608':"touSu",//11、投诉
-    '848877706840899584':"jieGuo",//13、结果有效性
-    '859879431471104000':"keHu",//13、结果有效性
-    '848877774067204096':'ceLiang',//测量不确定度评定
-    '747865515833163776':'jiuZheng',//不符合项与纠正措施
-    '859878561996079104':'nengLiYanZheng',// 能力验证与实验室间比对
-    '859879122875187200':'fengXianKongZhi', // 风险控制
-    '859879582994530304':'neiShen',//内审
-    '859879751135789056':'guangShen', //管审
-    '1069257469332553728':'sheBeiWeiXiu', // 设备维修
-    '1069257517135036416':'sheBeiBaoFei', // 设备报废
-    '1022458306758705152':'sheBeiYanShou', // 设备验收
-    '1022458337893023744':'sheBeiWeiHu',
-  }
+    '747865628878045184': 'huanJing',
+    '747865535110184960': 'jiLiang',
+    '747865562742259712': 'heCha',
+    '848876704007979008': 'gongYing', //8.供应商
+    '848877659185217536': 'fangFa',//9.方法管理
+    '848877794631876608': "touSu",//11、投诉
+    '848877706840899584': "jieGuo",//13、结果有效性
+    '859879431471104000': "keHu",//13、结果有效性
+    '848877774067204096': 'ceLiang',//测量不确定度评定
+    '747865515833163776': 'jiuZheng',//不符合项与纠正措施
+    '859878561996079104': 'nengLiYanZheng',// 能力验证与实验室间比对
+    '859879122875187200': 'fengXianKongZhi', // 风险控制
+    '859879582994530304': 'neiShen',//内审
+    '859879751135789056': 'guangShen', //管审
+    '1069257469332553728': 'sheBeiWeiXiu', // 设备维修
+    '1069257517135036416': 'sheBeiBaoFei', // 设备报废
+    '1022458306758705152': 'sheBeiYanShou', // 设备验收
+    '1022458337893023744': 'sheBeiWeiHu',
+}
+
+// 特殊类型,内审管审特殊处理
+export const specialType = {
+    '859879582994530304': [
+        '首次会议签到',
+        '首次会议纪要',
+        '不符合项汇总',
+        '末次会议签到',
+        '末次会议纪要',
+        '不符合项整改'
+    ],
+    '859879751135789056': []
+}

+ 162 - 62
src/views/platform/bpmn/bpmInstHis/list.vue

@@ -7,7 +7,7 @@
                 title="记录分类"
                 :location="location"
                 category-key="FLOW_TYPE"
-                :hasPermission="true"
+                :hasPermission="hasPermission"
                 @node-click="handleNodeClick"
                 @expand-collapse="handleExpandCollapse"
             />
@@ -47,20 +47,17 @@
                     <!-- 弹框内容 -->
                     <div class="div_content">
                         <!-- 获取所有输出报告-->
-                        <div
-                            v-if="currReportCont.report.length > 0"
-                            v-for="(item, i) in currReportCont.report"
-                            class="content_butts"
-                        >
-                            <span style="cursor: pointer;" @click="clickCont(currReportCont, i)">
-                                <i class="el-icon-tickets" style="font-size: 18px;"/>
-                                {{
-                                    item.slice(-item.split('').reverse().join('').indexOf(' '), -item.split('').reverse().join('').indexOf('.') - 1)
-                                }}
-                            </span>
-                            <br/>
-                        </div>
-                        <div v-if="currReportCont.file" class="content_butts">
+                        <template v-if="record.report.length">
+                            <div v-for="item in record.report" class="content_butts">
+                                <span style="cursor: pointer;" @click="openReport(item, record.bizKey)">
+                                    <i class="el-icon-tickets" style="font-size: 18px;"/>
+                                    <!-- 截取表单名称 -->
+                                    {{ item | getReportName }}
+                                </span>
+                                <br/>
+                            </div>
+                        </template>
+                        <div v-if="record.file.length" class="content_butts">
                             <ibps-attachment
                                 v-model="fileId"
                                 placeholder="请选择"
@@ -111,37 +108,52 @@
     import IbpsTypeTree from '@/business/platform/cat/type/tree'
     import FixHeight from '@/mixins/height'
     import BpmnFormrender from '@/business/platform/bpmn/form/dialog'
-    import curdPost from '@/business/platform/form/utils/custom/joinCURD.js' //增删改查规则
+    import curdPost from '@/business/platform/form/utils/custom/joinCURD.js'
     import IbpsAttachment from '@/business/platform/file/attachment/selector'
-    import GetReport from './corresponding/getReport.js'
+    import { specialType } from './corresponding/index'
     export default {
         components: {
             IbpsTypeTree,
             BpmnFormrender,
             'ibps-attachment': IbpsAttachment
         },
-        mixins: [FixHeight, GetReport],
+        mixins: [FixHeight],
         props: {
             location: {
                 type: String,
                 default: 'initial'
             }
         },
+        filters: {
+            // 截取报表名称
+            getReportName(value) {
+                // 通过/与.截取,eg: 43罗湖/L13-LHXBJY-QP-6.4-04 标准菌株管理程序/LHXBJY-QP-6.4-04-FQ-03 标准菌株鉴定验收记录表.rpx
+                return value.slice(-value.split('').reverse().join('').indexOf('/'), -value.split('').reverse().join('').indexOf('.') - 1)
+            }
+        },
         data() {
             return {
-                width: 200,
+                width: 250,
                 selection: false,
-                dialogFormVisible: false, // 弹窗
-                instanceId: '', // 编辑dialog需要使用
-                pkKey: 'id', // 主键  如果主键不是pk需要传主键
+                dialogFormVisible: false,
+                // 编辑dialog需要使用
+                instanceId: '',
+                // 主键 如果主键不是pk需要传主键
+                pkKey: 'id',
                 tableTitle: '',
                 typeId: '',
-                srcUrl: '', // 报表字段
-                fileId: '', // 文件字段
-                isDisable: false, // 判断多次点击
-                forClick: '', // 判断是否重复点击
+                srcUrl: '',
+                fileId: '',
+                // 判断多次点击
+                isDisable: false,
                 visible: false,
-                currReportCont: {},
+                record: {
+                    report: [],
+                    file: [],
+                    table: [],
+                    field: [],
+                    bizKey: ''
+                },
                 title: '',
                 loading: true,
                 height: document.clientHeight,
@@ -149,39 +161,26 @@
                 listData: [],
                 pagination: {},
                 sorts: {},
+                // 默认过滤部分分类
+                hasPermission: true,
                 listConfig: {
                     toolbars: [
                         { key: 'search' }
                     ],
                     searchForm: {
                         forms: [
-                            {
-                                prop: 'Q^subject_^SL',
-                                label: '关键字:',
-                                width: 125
-                            }
+                            { prop: 'Q^subject_^SL', label: '关键字:', width: 125 }
                         ]
                     },
                     // 表格字段配置
                     columns: [
                         // { prop: 'subject', label: '任务标题', link: 'dialog', width: 250 },
-                        { prop: 'tYear', label: '年份', width: 58 },
+                        { prop: 'tYear', label: '年份', width: 60 },
                         { prop: 'tDept', label: '部门', width: 120 },
-                        { prop: 'procDefName', label: '表单名称' },
-                        {
-                            prop: 'subject',
-                            label: '事务说明',
-                            width: 200,
-                            formatter: this.getDesc
-                        },
+                        { prop: 'procDefName', label: '表单名称', width: 200 },
+                        { prop: 'subject', label: '事务说明', formatter: this.getDesc },
                         { prop: 'tUser', label: '编制人', width: 80 },
-                        {
-                            prop: 'endTime',
-                            label: '完成时间',
-                            sortable: 'custom',
-                            dateFormat: 'yyyy-MM-dd',
-                            width: 150
-                        }
+                        { prop: 'endTime', label: '完成时间', sortable: 'custom', dateFormat: 'yyyy-MM-dd', width: 150}
                     ],
                     rowHandle: {
                         actions: [
@@ -198,9 +197,12 @@
         created() {
             this.loadData()
             this.getConfig()
-            let roleArr = this.$store.getters.userInfo.role
-            const hasRole = roleArr.some(item => item.name === '系统管理角色')
+            const roleList = this.$store.getters.userInfo.role
+            // 系统管理角色添加删除按钮
+            const hasRole = roleList.some(item => item.name === '系统管理角色')
             if (hasRole) {
+                // 系统管理角色不做分类过滤
+                this.hasPermission = false
                 this.listConfig.toolbars.push({ key: 'remove' })
                 this.selection = true
             }
@@ -214,18 +216,6 @@
                 }
                 return cellValue.split('#')[1]
             },
-            // 获取配置报表数据
-            getConfig() {
-                const params = {
-                    tableName: 't_lcidglbdbb',
-                    paramWhere: {
-                        1: '1'
-                    }
-                }
-                curdPost('select', params).then((response) => {
-                    this.reportAll = response.variables.data
-                })
-            },
             // 加载数据
             loadData() {
                 this.loading = true
@@ -233,12 +223,15 @@
                     let data = response.data && response.data.dataResult
                     data.forEach(item => {
                         let temp = this.getParenthesesStr(item.subject)
+                        //如果是年度计划, 标题编辑中取年份, 去除默认给与的年份
                         if (temp.length === 4) {
-                            //如果是年度计划, 标题编辑中取年份, 去除默认给与的年份
+                            // 判断截取内容是否为数字,如果不是则截取创建时间的作为年份
+                            item.tYear = isNaN(Number(temp[0])) ? item.createTime.slice(0, 4) : temp[0]
                             item.tYear = temp[0]
                             item.tDept = temp[2]
                             item.tUser = temp[3]
                         } else if (temp.length > 1) {
+                            item.tYear = isNaN(Number(temp[0])) ? item.createTime.slice(0, 4) : temp[0]
                             item.tYear = temp[0]
                             item.tDept = temp[1]
                             item.tUser = temp[2]
@@ -250,10 +243,117 @@
                     this.loading = false
                 })
             },
+            // 获取所有流程的报表配置数据
+            getConfig() {
+                const sql = 'select bao_biao_lu_jing_, fu_jian_nei_rong_, guan_lian_zi_duan, liu_cheng_xuan_ze, shi_fou_zi_biao_ from t_lcidglbdbb'
+                curdPost('sql', sql).then((res) => {
+                    this.reportAll = res.variables && res.variables.data
+                }).catch(error => {
+                    console.log('获取流程配置报表数据失败!')
+                })
+            },
+            // 获取报表数据及附件数据
+            getReportAndFile({ procDefKey, bizKey, subject }) {
+                if (this.isDisable) {
+                    this.$message.error('请勿快速点击!');
+                    return
+                }
+                this.numbersClick()
+                let temp = this.reportAll.find(item => item.liu_cheng_xuan_ze === procDefKey)
+                if (!temp) {
+                    return
+                }
+                this.record = {
+                    report: temp.liu_cheng_xuan_ze ? temp.bao_biao_lu_jing_.split(',') : [],
+                    file: temp.fu_jian_nei_rong_ ? temp.fu_jian_nei_rong_.split('.') : [],
+                    table: temp.shi_fou_zi_biao_ ? temp.shi_fou_zi_biao_.split('.') : [],
+                    field: temp.guan_lian_zi_duan ? temp.guan_lian_zi_duan.split('.') : [],
+                    bizKey
+                }
+                let typeIndex = ''
+                // 特殊类型处理
+                if (specialType.hasOwnProperty(this.typeId)) {
+                    specialType[this.typeId].forEach((item, index) => {
+                        // 判断当前流程在哪一步,以此决定报表展示
+                        if (subject.includes(item)) {
+                            // 数组下标+2为当前报表文件排序
+                            typeIndex = index + 2
+                        }
+                    })
+                }
+                console.log(typeIndex)
+                if (typeIndex !== '') {
+                    this.record.report = this.record.report.slice(0, typeIndex)
+                }
+                // console.log(this.record)
+                if (this.record.file.length && this.record.table.length) {
+                    this.getAllFile(this.record)
+                    return
+                }
+            },
+            // 获取所有附件
+            getAllFile({file, table, field, bizKey}) {
+                let resultList = []
+                table.forEach((item, index) => {
+                    let sql = `select ${file[index]} from ${item} where ${field.length && field[index] ? field[index] : 'id_'} = '${bizKey}'`
+                    resultList.push(this.getFile(sql, file[index]))
+                })
+                // console.log(resultList)
+                Promise.all(resultList).then(res => {
+                    // console.log('所有附件ID:', res)
+                    this.fileId = res.join(',')
+                }).catch(err => {
+                    console.log('error', err);
+                })
+            },
+            // 获取单个请求中的文件
+            getFile(sql, fileField) {
+                return new Promise((resolve, reject) => {
+                    curdPost('sql', sql).then(res => {
+                        let result = []
+                        let fileList = fileField.split(',')
+                        // console.log(fileList)
+                        let { data = [] } = res.variables || {}
+                        data = data.filter(i => i)
+                        data.forEach(item => {
+                            // 能获取到值说明文件字段只有一个
+                            if (item[fileField]) {
+                                result.push(this.getFileId(item[fileField]))
+                            } else if (fileList.length > 1) {
+                                // 否则文件字段为多个,需嵌套循环
+                                fileList.forEach(i => {
+                                    if (item[i]) {
+                                        result.push(this.getFileId(item[i]))
+                                    }
+                                })
+                            }
+                        })
+                        resolve(result.join(','))
+                    })
+                })
+            },
+            // 获取文件ID
+            getFileId(value) {
+                // 判断是否为图片类型,文件类型只存储文件ID,图片会以对象形式保存
+                if (value.includes('id')) {
+                    let result = []
+                    let temp = JSON.parse(value)
+                    temp.forEach(item => result.push(item.id))
+                    return result.join(',')
+                }
+                return value
+            },
+            // 打开报表
+            openReport(path, id) {
+                this.srcUrl = `${this.$reportPash.replace('show', 'pdf')}${path}&id_=${id}`
+                this.visible = true
+            },
             getParenthesesStr(text) {
                 let result = ''
                 if (!text) return result
+                // 新数据年份、部门、发起人以{}包裹
                 let regex1 = /\{(.+?)\}/g
+                // 旧数据年份、部门、发起人以()包裹
                 let regex2 = /\((.+?)\)/g
                 let options1 = text.match(regex1)
                 let options2 = text.match(regex2)