Преглед на файлове

生成快照、查阅报表(快照)增加层级信息

cfort преди 3 години
родител
ревизия
0ac292490f
променени са 3 файла, в които са добавени 186 реда и са изтрити 40 реда
  1. 3 1
      src/business/platform/bpmn/form/action.js
  2. 165 36
      src/business/platform/data/templaterender/templates/list.vue
  3. 18 3
      src/plugins/ibps/index.js

+ 3 - 1
src/business/platform/bpmn/form/action.js

@@ -663,6 +663,7 @@ export default {
                 await new Promise(resolve => setTimeout(resolve, intervalTime))
             }
             const sql = `select * from t_lcidglbdbb where shi_fou_zi_biao_ = 't_${code}' and ti_jiao_kuai_zhao = '是' and gui_dang_lei_xing = 'process'`
+            const { first = '' } = this.$store.getters.level
             this.$common.request('sql', sql).then(res => {
                 const { data = [] } = res.variables || {}
                 if (!data.length) {
@@ -670,8 +671,9 @@ export default {
                     return
                 }
                 const path = data[0].bao_biao_lu_jing_
-                const url = this.$getReportFile(path, `id_=${id}`)
+                const url = this.$getReportFile(path, `id_=${id}&org_=${first}`)
                 const fileName = name + this.$common.getDateNow(16, 'string')
+                console.log(url, fileName)
                 this.$common.snapshoot({
                     url,
                     name: fileName,

+ 165 - 36
src/business/platform/data/templaterender/templates/list.vue

@@ -30,7 +30,17 @@
         >
             <!--自定义查询条件-->
             <template v-slot:searchForm>
-                <search-form v-if="listConfig.searchForm" ref="searchForm" :forms="listConfig.searchForm.forms || []" :size="listConfig.searchForm.size" :fuzzy="listConfig.searchForm.fuzzy" :inline="listConfig.searchForm.inline" :label-width="listConfig.searchForm.labelWidth" :item-width="listConfig.searchForm.itemWidth" @search="search" />
+                <search-form
+                    v-if="listConfig.searchForm"
+                    ref="searchForm"
+                    :forms="listConfig.searchForm.forms || []"
+                    :size="listConfig.searchForm.size"
+                    :fuzzy="listConfig.searchForm.fuzzy"
+                    :inline="listConfig.searchForm.inline"
+                    :label-width="listConfig.searchForm.labelWidth"
+                    :item-width="listConfig.searchForm.itemWidth"
+                    @search="search"
+                />
             </template>
             <!--数字-->
             <template v-slot:number="scope">
@@ -46,19 +56,52 @@
             </template>
             <!--数据字典-->
             <template v-slot:dictionary="scope">
-                <dictionary-format :value="scope.value" :multiple="$utils.toBoolean(scope.column.field_options.multiple, true)" :dict="{ typeKey: scope.column.field_options.dictionary, displayMode: scope.column.field_options.display_mode }" />
+                <dictionary-format
+                    :value="scope.value"
+                    :multiple="$utils.toBoolean(scope.column.field_options.multiple, true)"
+                    :dict="{
+                        typeKey: scope.column.field_options.dictionary,
+                        displayMode: scope.column.field_options.display_mode
+                    }"
+                />
             </template>
             <!--附件-->
             <template v-slot:attachment="scope">
-                <ibps-attachment v-if="$utils.isNotEmpty(scope.column) && scope.value" v-model="scope.value" :multiple="$utils.toBoolean(scope.column.field_options.multiple, true)" :download="false" :store="scope.column.field_options.store" :readonly="true" />
+                <ibps-attachment
+                    v-if="$utils.isNotEmpty(scope.column) && scope.value"
+                    v-model="scope.value"
+                    :multiple="$utils.toBoolean(scope.column.field_options.multiple, true)"
+                    :download="false"
+                    :store="scope.column.field_options.store"
+                    :readonly="true"
+                />
             </template>
             <!--选择器-->
             <template v-slot:selector="scope">
-                <ibps-user-selector v-if="$utils.isNotEmpty(scope.column)" v-model="scope.value" :type="scope.column.field_options.selector_type || 'user'" :multiple="$utils.toBoolean(scope.column.field_options.multiple, true)" :store="scope.column.field_options.store || 'id'" disabled readonly-text="text" />
+                <ibps-user-selector
+                    v-if="$utils.isNotEmpty(scope.column)"
+                    v-model="scope.value"
+                    :type="scope.column.field_options.selector_type || 'user'"
+                    :multiple="$utils.toBoolean(scope.column.field_options.multiple, true)"
+                    :store="scope.column.field_options.store || 'id'"
+                    disabled
+                    readonly-text="text"
+                />
             </template>
             <!--自定义对话框-->
             <template v-slot:customDialog="scope">
-                <ibps-custom-dialog v-if="$utils.isNotEmpty(scope.column)" v-model="scope.value" :template-key="scope.column.field_options.dialog" :multiple="$utils.toBoolean(scope.column.field_options.multiple, true)" :store="scope.column.field_options.store" :dynamic-params="getLinkDynamicParams(scope.column.field_options, scope.row)" :icon="scope.column.field_options.icon ? 'ibps-icon-' + scope.column.field_options.icon : ''" :type="scope.column.field_options.dialog_type" readonly-text="text" disabled />
+                <ibps-custom-dialog
+                    v-if="$utils.isNotEmpty(scope.column)"
+                    v-model="scope.value"
+                    :template-key="scope.column.field_options.dialog"
+                    :multiple="$utils.toBoolean(scope.column.field_options.multiple, true)"
+                    :store="scope.column.field_options.store"
+                    :dynamic-params="getLinkDynamicParams(scope.column.field_options, scope.row)"
+                    :icon="scope.column.field_options.icon ? 'ibps-icon-' + scope.column.field_options.icon : ''"
+                    :type="scope.column.field_options.dialog_type"
+                    readonly-text="text"
+                    disabled
+                />
             </template>
             <!--关联数据-->
             <template v-slot:linkdata="scope">
@@ -91,13 +134,31 @@
             <!--地址-->
             <template v-slot:address="scope">
                 <template v-if="$utils.isNotEmpty(scope.column)">
-                    <ibps-address :value="getAddressValue(scope.value, scope.column.field_options)" :size="scope.column.field_options.size" :top="scope.column.field_options.top || 'country'" :top-val="getAddressTopVal(scope.column.field_options)" :level="scope.column.field_options.level || 'district'" data-type="code" :disabled="true" readonly-text="text" />
+                    <ibps-address
+                        :value="getAddressValue(scope.value, scope.column.field_options)"
+                        :size="scope.column.field_options.size"
+                        :top="scope.column.field_options.top || 'country'"
+                        :top-val="getAddressTopVal(scope.column.field_options)"
+                        :level="scope.column.field_options.level || 'district'"
+                        data-type="code"
+                        :disabled="true"
+                        readonly-text="text"
+                    />
                     <span v-if="scope.column.field_options.is_street">{{ getStreet(scope.value) }}</span>
                 </template>
             </template>
             <!--图片-->
             <template v-slot:image="scope">
-                <ibps-image v-if="$utils.isNotEmpty(scope.column)" v-model="scope.value" height="45" width="45" :multiple="$utils.toBoolean(scope.column.field_options.multiple, true)" :download="scope.column.field_options.download" :store="scope.column.field_options.store" :disabled="true" />
+                <ibps-image
+                    v-if="$utils.isNotEmpty(scope.column)"
+                    v-model="scope.value"
+                    height="45"
+                    width="45"
+                    :multiple="$utils.toBoolean(scope.column.field_options.multiple, true)"
+                    :download="scope.column.field_options.download"
+                    :store="scope.column.field_options.store"
+                    :disabled="true"
+                />
             </template>
 
             <template v-slot:customFormatter="scope">
@@ -121,24 +182,93 @@
             @close="(visible) => (dialogFormVisible = visible)"
         />
         <!-- 流程定义选择器 -->
-        <bpm-def-dialog v-model="dialogValue" :visible="dialogVisible" :form-key="formKey" :multiple="false" :is-data-template-use="true" @close="(visible) => (dialogVisible = visible)" @action-event="handleDialogActionEvent" />
+        <bpm-def-dialog
+            v-model="dialogValue"
+            :visible="dialogVisible"
+            :form-key="formKey"
+            :multiple="false"
+            :is-data-template-use="true"
+            @close="(visible) => (dialogVisible = visible)"
+            @action-event="handleDialogActionEvent"
+        />
         <!-- 字段导出  -->
-        <ibps-export-columns-dialog :visible="exportColumnsVisible" :data="template" :action="action" :pagination="pagination" @callback="callbackExtFields" @close="(visible) => (exportColumnsVisible = visible)" />
+        <ibps-export-columns-dialog
+            :visible="exportColumnsVisible"
+            :data="template"
+            :action="action"
+            :pagination="pagination"
+            @callback="callbackExtFields"
+            @close="(visible) => (exportColumnsVisible = visible)"
+        />
         <!-- 字段导入  -->
-        <ibps-import-columns-dialog :visible="importColumnsVisible" :data="template" :fields="fields" :data-template="dataTemplate" @saveUpload="initData" @close="(visible) => (importColumnsVisible = visible)" />
+        <ibps-import-columns-dialog
+            :visible="importColumnsVisible"
+            :data="template"
+            :fields="fields"
+            :data-template="dataTemplate"
+            @saveUpload="initData"
+            @close="(visible) => (importColumnsVisible = visible)"
+        />
         <!-- ______________-->
-        <ibps-data-template-render-dialog :visible="templateDialogVisible" :template-key="templateDialogKey" :dynamic-params="templateDialogDynamicParams" @close="(visible) => (templateDialogVisible = visible)" @action-event="handleTemplateDialogActionEvent" />
+        <ibps-data-template-render-dialog
+            :visible="templateDialogVisible"
+            :template-key="templateDialogKey"
+            :dynamic-params="templateDialogDynamicParams"
+            @close="(visible) => (templateDialogVisible = visible)"
+            @action-event="handleTemplateDialogActionEvent"
+        />
         <!-- 表单打印-->
-        <form-print-template :id="printTemplateId" :pk="pkValue" :visible="formPrintTemplateDialogVisible" @close="(visible) => (formPrintTemplateDialogVisible = visible)" />
-        <component :is="dialogTemplate" v-if="dialogTemplate" ref="dialogTemplate" v-bind="dialogTemplateAtts" />
-        <bpmn-formrender :visible="npmDialogFormVisible" :def-id="defId" :instance-id="instanceId" :task-id="taskId" :add-data-cont="addDataCont" @callback="search" @close="loadFlowFData" />
-        <Scan v-if="scanVisible" :current-scan="scanName" :scan-visible="scanVisible" :obj="obj" @scanOff="scanOff" />
+        <form-print-template
+            :id="printTemplateId"
+            :pk="pkValue"
+            :visible="formPrintTemplateDialogVisible"
+            @close="(visible) => (formPrintTemplateDialogVisible = visible)"
+        />
+        <component
+            :is="dialogTemplate"
+            v-if="dialogTemplate"
+            ref="dialogTemplate"
+            v-bind="dialogTemplateAtts"
+        />
+        <bpmn-formrender
+            :visible="npmDialogFormVisible"
+            :def-id="defId"
+            :instance-id="instanceId"
+            :task-id="taskId"
+            :add-data-cont="addDataCont"
+            @callback="search"
+            @close="loadFlowFData"
+        />
+        <Scan
+            v-if="scanVisible"
+            :current-scan="scanName"
+            :scan-visible="scanVisible"
+            :obj="obj"
+            @scanOff="scanOff"
+        />
         <print :show="showPrint" :list="printList" :type="printType" />
         <labelPrint :show="showPrintYi" :list="printList" :type="printType" />
 
-        <import-table :visible="importTableDialogVisible" title="导入" @close="(visible) => (importTableDialogVisible = visible)" @action-event="handleImportTableActionEvent" />
+        <import-table
+            :visible="importTableDialogVisible"
+            title="导入"
+            @close="(visible) => (importTableDialogVisible = visible)"
+            @action-event="handleImportTableActionEvent"
+        />
+
+        <xlsxFile
+            v-if="xlsxFileVisible"
+            :visible="xlsxFileVisible"
+            @xlsxFileClose="xlsxFileClose"
+        />
 
-        <xlsxFile v-if="xlsxFileVisible" :visible="xlsxFileVisible" @xlsxFileClose="xlsxFileClose" />
+        <ibps-attachment
+            ref="snapshot"
+            v-model="snapshotFile"
+            style="display: none;"
+            :download="false"
+            :readonly="true"
+        />
     </div>
 </template>
 <script>
@@ -307,7 +437,8 @@ export default {
             importTableDialogVisible: false,
             position: null,
             importList: [],
-            importVlaue: null
+            importVlaue: null,
+            snapshotFile: ''
         }
     },
     computed: {
@@ -753,6 +884,7 @@ export default {
             this.beforeScript(command, position, selection, data, () => {
                 let src = ''
                 this.readonly = false
+                const { first = '' } = this.$store.getters.level || {}
                 switch (buttonType) {
                     case 'search': // 查询
                         ActionUtils.setFirstPagination(this.pagination)
@@ -807,13 +939,21 @@ export default {
                         this.npmDialogFormVisible = true
                         break
                     case 'consult': // 查阅
-                        if (!button.reportPath) {
-                            this.$message.warning('请先配置对应报表路径!')
-                            return
+                        this.snapshotFile = ''
+                        if (data.kuai_zhao_) {
+                            this.snapshotFile = data.kuai_zhao_
+                            setTimeout(() => {
+                                this.$refs.snapshot.handleActionEvent('preview', 0)
+                            }, 500)
+                        } else {
+                            if (!button.reportPath) {
+                                this.$message.warning('请先配置对应报表路径!')
+                                return
+                            }
+                            src = `${this.$reportPath.replace('show', 'pdf')}${button.reportPath}&id_=${selection}&org_=${first}`
+                            // console.log(src)
+                            this.$common.preview(this, src)
                         }
-                        src = `${this.$reportPath.replace('show', 'pdf')}${button.reportPath}&id_=${selection}`
-                        // console.log(src)
-                        this.$common.preview(this, src)
                         break
                     case 'download': // 下载记录
                         if (!button.reportPath) {
@@ -821,7 +961,7 @@ export default {
                             return
                         }
                         this.$common.snapshoot({
-                            url: this.$getReportFile(button.reportPath, `id_=${selection}`),
+                            url: this.$getReportFile(button.reportPath, `id_=${selection}&org_=${first}`),
                             name: selection,
                             type: 'pdf'
                         }).then((res) => {
@@ -1160,17 +1300,6 @@ export default {
             })
             return columns
         },
-        /**
-         * 判断参数是否是其中之一
-         */
-        oneOf: function (obj, validList, key, key1) {
-            for (let i = 0; i < validList.length; i++) {
-                if (obj[key] === validList[i][key1]) {
-                    return true
-                }
-            }
-            return false
-        },
         /**
          * 构建按钮
          */

+ 18 - 3
src/plugins/ibps/index.js

@@ -58,17 +58,32 @@ export default {
 
         Vue.prototype.$ibpsUrl = env.VUE_APP_BASE_API_0_0_TEST
         const reportPath = '金通医学实验室管理系统'
+        // 格式化参数
+        const getParams = (params) => {
+            const parts = params.split('&')
+            const result = []
+            parts.forEach((item, index) => {
+                const [key, value] = item.split('=')
+                // 第一个参数转换=为%3D,后续参数不转换=
+                if (index === 0) {
+                    result.push(`${key}%3D${encodeURIComponent(value)}`)
+                } else {
+                    result.push(`${key}=${encodeURIComponent(value)}`)
+                }
+            })
+            return result.join('&')
+        }
         const downloadReport = (src, where, type = 6) => {
             // 目前可用type    6:生成报表的pdf文件【默认】   7:生成报表的word文件   3:生成报表的excel文件
-            return `${BASE_URL}demo/reportServlet?action=${type}&file=${encodeURIComponent(reportPath + '/' + src)}&print=1&srcType=file&paramString=${encodeURIComponent(where)}`
+            return `${BASE_URL}demo/reportServlet?action=${type}&file=${encodeURIComponent(reportPath + '/' + src)}&print=1&srcType=file&paramString=${getParams(where)}`
         }
         const timer = setInterval(() => { // 定时循环添加参数
             if (getToken()) {
                 // 报表路径
                 Vue.prototype.$reportPath = `${BASE_URL}demo/reportJsp/showReport.jsp?access_token=${getToken()}&rpx=${reportPath}/`
                 Vue.prototype.$getReportFile = downloadReport // 通过方法函数,拼接url,并将字符串格式化
-                Vue.prototype.$getSealUri = 'http://120.77.249.241:9999/no/getSealFile/' //微签 回显获取文件地址
-                Vue.prototype.$getFileDow = 'https://www.szjyxt.com/ibps/platform/v3/file/download?attachmentId=' //文件下载地址
+                Vue.prototype.$getSealUri = 'http://120.77.249.241:9999/no/getSealFile/' // 微签 回显获取文件地址
+                Vue.prototype.$getFileDow = 'https://www.szjyxt.com/ibps/platform/v3/file/download?attachmentId=' // 文件下载地址
                 clearInterval(timer) // 添加成功后即删除定时任务
             }
         }, 500)