1
0

110 Commits 1db7c5290f ... 043951ee17

Autor SHA1 Mensagem Data
  yangfan 043951ee17 Merge branch 'pre-prod-diantou' into pre-prod há 3 meses atrás
  dongyuxue 4f9d6f8d7f 修复流程分组数据加载路径错误 há 3 meses atrás
  dongyuxue c27296a8c8 全覆盖审计项目列表, 按权限屏蔽新增,删除按钮 há 3 meses atrás
  dongyuxue bb49f1596a 计划变更表单可以修改审计类型 há 3 meses atrás
  DongyYuxue 40dec7f2b1 整改内容,已下发问题可以重复选择 há 3 meses atrás
  dongyuxue 58c1b97e72 分配组长, 与项目阶段无关 há 4 meses atrás
  yangfan ee52b245be 问题类型必填 há 4 meses atrás
  dongyuxue a3f939ae57 批量转办, 流程处于草稿状态无法专办 há 4 meses atrás
  yangfan eb77ae84d0 去掉校验非问题说明 há 4 meses atrás
  yangfan ff62510068 Merge remote-tracking branch 'diantou/pre-prod' into pre-prod-diantou há 4 meses atrás
  dongyuxue 1430fb31b4 我的办件-批量转办 há 4 meses atrás
  dongyuxue 84cdabe80c 审计人员库添加含下级按钮 há 4 meses atrás
  dongyuxue b380e48156 组织管理、用户管理中屏蔽删除按钮 há 4 meses atrás
  yangfan 223c230a14 优化问题性质展示 há 4 meses atrás
  yangfan 198504b518 整改人:当前的编辑信息不变,隐藏非问题说明显示,切换非问题说明时清理相关表单 há 4 meses atrás
  yangfan 6b02738a0e 还原更改 há 5 meses atrás
  yangfan 87110946ea 更改 há 5 meses atrás
  hml 710301c376 修改宽度 há 5 meses atrás
  hml d64c8d47b4 宽度优化 há 5 meses atrás
  hml 782c32d00c 优化 há 5 meses atrás
  hml d04c18e060 画像业务领域宽度适配 右侧图例显示调整 há 5 meses atrás
  hml aa4dfaa665 优化 业务领域下拉框宽度适配 há 5 meses atrás
  hml 370cf091ce 风险画像优化 há 5 meses atrás
  yangfan af28bbbb92 增加级联筛选 há 5 meses atrás
  yangfan 163397d71c audit-pre-report生成模板添加loading效果 há 6 meses atrás
  yangfan 498f3633c5 修正data-record搜索重置问题 há 6 meses atrás
  yangfan 7bb1d8520b 增加模型名称搜索 há 6 meses atrás
  yangfan fd5f0ed3d9 优化问题性质展示 há 4 meses atrás
  yangfan 181909add0 整改人:当前的编辑信息不变,隐藏非问题说明显示,切换非问题说明时清理相关表单 há 4 meses atrás
  yangfan 65b37dd9ea 还原更改 há 5 meses atrás
  yangfan 09cc868ad3 更改 há 5 meses atrás
  hml 81ab8e5ac0 修改宽度 há 5 meses atrás
  hml 8c152878b5 宽度优化 há 5 meses atrás
  hml 3463798c6a 优化 há 5 meses atrás
  hml cecd7369a8 画像业务领域宽度适配 右侧图例显示调整 há 5 meses atrás
  hml f3234a37cf 优化 业务领域下拉框宽度适配 há 5 meses atrás
  hml 31221c76af 风险画像优化 há 5 meses atrás
  yangfan ffc04bc57c 增加级联筛选 há 5 meses atrás
  yangfan 5a9ffbe3f5 audit-pre-report生成模板添加loading效果 há 6 meses atrás
  yangfan 4cbd998ac6 修正data-record搜索重置问题 há 6 meses atrás
  yangfan 8cf57239c2 增加模型名称搜索 há 6 meses atrás
  董玉雪 0ac8e971a9 组织管理新增对简称的维护 há 5 meses atrás
  董玉雪 465c876763 外聘机构选择器, 调整列表内容及宽度 há 5 meses atrás
  董玉雪 c2f6cb41bf 审计项目整改完成情况及成果统计表-数字穿透明细后端接口调试 há 5 meses atrás
  董玉雪 5116c7a5e8 审计项目-审计报告-审计问题和审计报告,改为组内所有成员均可上传 há 5 meses atrás
  董玉雪 fd152c0f46 股权关系图谱-增加数据更新时间 há 6 meses atrás
  董玉雪 a7b8af6720 审计作业-问题反馈历史数据显示 há 5 meses atrás
  董玉雪 b5654a1c9c 持续整改,分阶段整改, 调整阶段性字段名称与顺序 há 5 meses atrás
  董玉雪 78b678da74 年度报告库功能测试 há 5 meses atrás
  董玉雪 07750bea0f 审计问题整改明细台账-添加审计发现列:单移送,双移送,零容忍,属于审计意见书 há 5 meses atrás
  董玉雪 ddd81124fa 审计人员库, 点击顶层结点不显示数据 há 6 meses atrás
  董玉雪 398e396d7b 修改操作手册生产环境的附件编码 há 6 meses atrás
  董玉雪 9117d16810 审计问题导入错误信息提示改为确认框 há 6 meses atrás
  董玉雪 66a1fbb98b 审计问题导入错误信息提示改为确认框 há 6 meses atrás
  董玉雪 ed411c9d60 添加操作手册下链接 há 6 meses atrás
  董玉雪 c1580a8964 综合资料库-支持资料类别 há 6 meses atrás
  董玉雪 5926acb7bb 问题重启-修改重启逻辑 há 6 meses atrás
  董玉雪 d9aab14513 审计问题整改-整改反馈列表添加 '问题类型'过滤条件 há 6 meses atrás
  董玉雪 1a2ea70f4d 个人工作台-添加按流程进行查询的过滤条件 há 6 meses atrás
  董玉雪 0b712dbaa1 组织管理新增对简称的维护 há 5 meses atrás
  董玉雪 1414389c02 外聘机构选择器, 调整列表内容及宽度 há 5 meses atrás
  董玉雪 7c06e1eab7 审计项目整改完成情况及成果统计表-数字穿透明细后端接口调试 há 5 meses atrás
  董玉雪 d6d5e175c8 审计项目-审计报告-审计问题和审计报告,改为组内所有成员均可上传 há 5 meses atrás
  董玉雪 77e80b22c7 股权关系图谱-增加数据更新时间 há 6 meses atrás
  董玉雪 ebfa4545eb 审计作业-问题反馈历史数据显示 há 5 meses atrás
  董玉雪 086c8049ff 持续整改,分阶段整改, 调整阶段性字段名称与顺序 há 5 meses atrás
  董玉雪 5ea4a33983 年度报告库功能测试 há 5 meses atrás
  董玉雪 56436e7e19 审计问题整改明细台账-添加审计发现列:单移送,双移送,零容忍,属于审计意见书 há 5 meses atrás
  董玉雪 e13414b904 审计人员库, 点击顶层结点不显示数据 há 6 meses atrás
  董玉雪 305326cf54 修改操作手册生产环境的附件编码 há 6 meses atrás
  董玉雪 1aa639566d 审计问题导入错误信息提示改为确认框 há 6 meses atrás
  董玉雪 39b0cffe08 审计问题导入错误信息提示改为确认框 há 6 meses atrás
  董玉雪 b48dfd0814 添加操作手册下链接 há 6 meses atrás
  董玉雪 7ad63f462d 综合资料库-支持资料类别 há 6 meses atrás
  董玉雪 6b275d5c11 问题重启-修改重启逻辑 há 6 meses atrás
  董玉雪 8034841652 审计问题整改-整改反馈列表添加 '问题类型'过滤条件 há 6 meses atrás
  董玉雪 e4b9b906bc 个人工作台-添加按流程进行查询的过滤条件 há 6 meses atrás
  zh 752a0abc1b 风险库设置 há 6 meses atrás
  董玉雪 85837fdf21 审计问题整改报表, 点击项目名称,穿透项目详情 há 6 meses atrás
  zh cc751489b8 风险提交样式优化 há 6 meses atrás
  董玉雪 e625e3bacd 模块操作日志增加导出功能 há 6 meses atrás
  董玉雪 ef5cb1f443 放开资料新建按钮功能 há 6 meses atrás
  zh 887cc029e7 问题性质 há 6 meses atrás
  zh 602d3b3d06 非问题标签修改 há 6 meses atrás
  zh a6cc3375fd 风险审核校验,风险审核模型名称模糊搜索 há 6 meses atrás
  zh 0407ed14ad 校验 há 6 meses atrás
  董玉雪 f5edb82adc 问题重启权限 há 6 meses atrás
  董玉雪 4a8909f15f 日志查询优化 há 6 meses atrás
  zh d417a45e9c 风险下发流程修改,风险看板导出优化,模型列表显示字段优化 há 6 meses atrás
  zh 6a63201ed9 回退 há 7 meses atrás
  董玉雪 cd853b57e2 回滚 há 7 meses atrás
  董玉雪 f3b8c466cf 审计总览-图表问题涉及金额,数据重叠,完全看不见 há 7 meses atrás
  董玉雪 94a02e4813 下载状态提示 há 7 meses atrás
  zh cec1ac6a77 画像,机构根节点选择修复 há 7 meses atrás
  zh 50cb1b3197 删除多余方法 há 7 meses atrás
  zh 3ddc87f22c 画像部分问题修复 há 7 meses atrás
  董玉雪 a9093a2e87 项目变更后, 整改内容中项目信息未修改 há 7 meses atrás
  zh 6129ab9bbd 2024.06.27 há 7 meses atrás
  董玉雪 7bb1134ef4 审计项目管理项目变更,修改计划时间,动态计算计划天数 há 7 meses atrás
  zh f645cfb521 监督画像 há 7 meses atrás
  YLZH c523e430cf 去除:号 há 7 meses atrás
  YLZH f792810865 流程领域画像新增责任人分析 há 7 meses atrás
  YLZH ea9f99d740 风险库导出、搜索增加加载框 há 7 meses atrás
  YLZH 5f3858009a 修改风险库领导查看名称,下发新增业务时间。 há 7 meses atrás
  董玉雪 3226f3793e 工作台-页签更名 há 8 meses atrás
  YLZH 0de1290b89 风险明细接口调整,筛选二级单位 há 8 meses atrás
  YLZH fd311205aa 风险看板 há 8 meses atrás
  董玉雪 ace35f95a7 综合资料当前状态添加"转其他人员上报"查询状态 há 8 meses atrás
  董玉雪 7eacf6e455 增加将非二级单位调整为二级单位的功能 há 8 meses atrás
  董玉雪 13adc8671b Merge branch 'refs/heads/prod' into spic-prod há 8 meses atrás
46 ficheiros alterados com 1035 adições e 578 exclusões
  1. 21 4
      src/flowcenter/sd-todo.vue
  2. 4 0
      src/frame/_import-components/sd-tabbed-view-import.js
  3. 33 2
      src/frame/sd-tabbed-view.vue
  4. 10 10
      src/org-manager/sd-org-dep-category.vue
  5. 20 0
      src/org-manager/sd-org-dep.vue
  6. 10 10
      src/org-manager/sd-org-user-category.vue
  7. 19 0
      src/webflow/button-handlers/_import-components/sd-workflow-turn-todos-import.js
  8. 250 0
      src/webflow/button-handlers/sd-workflow-turn-todos.vue
  9. 0 10
      src_custom/spicannualreport/_import-components/xm-annual-report-form-import.js
  10. 0 8
      src_custom/spicannualreport/_import-components/xm-annual-report-puiblish-form-import.js
  11. 2 83
      src_custom/spicannualreport/xm-annual-report-form.vue
  12. 15 15
      src_custom/spicannualreport/xm-annual-report-list.vue
  13. 1 69
      src_custom/spicannualreport/xm-annual-report-puiblish-form.vue
  14. 2 0
      src_custom/spiccompositedatabase/_import-components/xm-composite-database-form-import.js
  15. 2 0
      src_custom/spiccompositedatabase/_import-components/xm-composite-database-list-import.js
  16. 23 6
      src_custom/spiccompositedatabase/xm-composite-database-form.vue
  17. 22 0
      src_custom/spiccompositedatabase/xm-composite-database-list.vue
  18. 0 1
      src_custom/spicrectfeedback/_import-components/spic-questionfeedback-form-import.js
  19. 0 1
      src_custom/spicrectfeedback/_import-components/spic-rectfeedback-list-import.js
  20. 129 81
      src_custom/spicrectfeedback/spic-questionfeedback-form.vue
  21. 33 0
      src_custom/spicrectfeedback/spic-rectfeedback-list.vue
  22. 5 1
      src_product/iam/audit/auditsource/target/iam-source-target-form.vue
  23. 21 7
      src_product/iam/audit/auditsource/userbase/iam-audit-userbase-list.vue
  24. 4 33
      src_product/iam/audit/plan/audit-plan-form.vue
  25. 15 44
      src_product/iam/audit/plan/audit-planchange-form.vue
  26. 0 1
      src_product/iam/audit/project/_import-components/audit-project-list-import.js
  27. 0 1
      src_product/iam/audit/project/_import-components/audit-project-start-form-import.js
  28. 7 7
      src_product/iam/audit/project/audit-project-list.vue
  29. 28 52
      src_product/iam/audit/project/audit-project-start-form.vue
  30. 2 0
      src_product/iam/audit/question/_import-components/audit-question-list-import.js
  31. 65 23
      src_product/iam/audit/question/audit-question-list.vue
  32. 4 4
      src_product/iam/audit/rectplanproject/audit-selectfind-modal.vue
  33. 15 19
      src_product/iam/audit/spic-equity-penetration-chart/equity-penetration-chart.vue
  34. 6 0
      src_product/iam/audit/statistics/_import-components/audit-project-rect-statistics-import.js
  35. 20 1
      src_product/iam/audit/statistics/audit-problem-rect-item.vue
  36. 125 1
      src_product/iam/audit/statistics/audit-project-rect-statistics.vue
  37. 3 33
      src_product/iam/audit/work/projectchange/audit-projectchange-form.vue
  38. 2 2
      src_product/iam/audit/work/report/find/iam-audit-find-list.vue
  39. 2 2
      src_product/iam/audit/work/report/find/xm-audit-find-list.vue
  40. 35 35
      src_product/iam/audit/work/report/report/iam-audit-report-list.vue
  41. 4 0
      src_product/iam/audit/workbench/_import-components/iam-todo-tabs-import.js
  42. 56 2
      src_product/iam/audit/workbench/iam-todo-tabs.vue
  43. 0 1
      src_product/iam/components/_import-components/audit-advanced-export-import.js
  44. 0 1
      src_product/iam/components/_import-components/audit-advanced-import-import.js
  45. 9 1
      src_product/iam/components/audit-advanced-export.vue
  46. 11 7
      src_product/iam/components/audit-advanced-import.vue

+ 21 - 4
src/flowcenter/sd-todo.vue

@@ -89,9 +89,7 @@
                       <a-tag v-if="record.trustor" color="blue">代{{ record.trustorName }}</a-tag>
                       <a-tooltip>
                         <template slot="title">{{ record.groupPath }}</template>
-                        <a-tag v-show="record.srcTrustId" color="blue">
-                          兼
-                        </a-tag>
+                        <a-tag v-show="record.srcTrustId" color="blue"> 兼 </a-tag>
                       </a-tooltip>
                     </div>
                   </a>
@@ -181,6 +179,8 @@
         :cyy-popup-container="cyyPopupContainer"
       />
     </a-modal>
+
+    <sd-workflow-turn-todos ref="trunTodoModel"> </sd-workflow-turn-todos>
   </div>
 </template>
 
@@ -190,6 +190,7 @@ import todoListService from '@/todo/todo-list-service'
 import FlowService from '@/webflow/flow-service'
 import { Message } from 'ant-design-vue'
 import sdOpinionModel from '@/webflow/sd-opinion-model.vue'
+import sdWorkflowTurnTodos from '@/webflow/button-handlers/sd-workflow-turn-todos.vue'
 import TableColumnTypes from '../common/services/table-column-types'
 import flowcenter from './sd-flowcenter-mixins'
 import components from './_import-components/sd-todo-import'
@@ -201,6 +202,7 @@ export default {
   components: {
     ...components,
     sdOpinionModel,
+    sdWorkflowTurnTodos,
   },
   mixins: [flowcenter],
   data() {
@@ -376,12 +378,23 @@ export default {
             this.getGroupCode()
           },
         },
+        {
+          label: '批量转办',
+          id: 'turnto',
+          type: TableActionTypes.batch, // 批处理按钮,选中文档时才能点击
+          permission: null, // data-table 的权限,需要写完整的
+          callback: (keys, todos) => {
+            this.$refs.trunTodoModel.show()
+            this.$refs.trunTodoModel.setTodos(todos)
+            this.$refs.trunTodoModel.setHandlerCallback(this.refreshTodolist)
+          },
+        },
       ],
     }
   },
   computed: {
     deadline() {
-      return function(type) {
+      return function (type) {
         let deadline = ''
         switch (type) {
           case 'blue':
@@ -399,6 +412,10 @@ export default {
     },
   },
   methods: {
+    refreshTodolist() {
+      this.$refs.todo.refresh()
+      this.$refs.todo.clearSelection()
+    },
     cyyPopupContainer() {
       return document.body
     },

+ 4 - 0
src/frame/_import-components/sd-tabbed-view-import.js

@@ -3,21 +3,25 @@
 import Vue from 'vue'
 import {
 Badge,
+Button,
 Dropdown,
 Icon,
 Layout,
 Menu,
 Tabs,
+Tooltip,
 } from 'ant-design-vue'
 import ExtHeaderToolsBefore from '@extension-points/frame/ext-header-tools-before.vue'
 import SdHeaderUserAction from '@/common/components/sd-header-user-action.vue'
 
 Vue.use(Badge)
+Vue.use(Button)
 Vue.use(Dropdown)
 Vue.use(Icon)
 Vue.use(Layout)
 Vue.use(Menu)
 Vue.use(Tabs)
+Vue.use(Tooltip)
 
 export default {
   ExtHeaderToolsBefore,

+ 33 - 2
src/frame/sd-tabbed-view.vue

@@ -5,7 +5,7 @@
         v-model="selected"
         hide-add
         type="editable-card"
-        style="float:left;margin-left: 35px"
+        style="float: left; margin-left: 35px"
         @change="tabChange"
         @edit="onEdit"
       >
@@ -39,6 +39,12 @@
         <div><ext-header-tools-before /></div>
         <span :class="$style.links">
           <a-icon v-if="false" type="sd-home" title="首页" @click="$router.push('/sd-home')" />
+          <span>
+            <a-tooltip placement="top" title="预览操作手册">
+              <a-button icon="sd-desktop" type="link" @click="previewManul" /> </a-tooltip
+            >&nbsp;
+            <a href="#" @click="downloadManul">下载操作手册</a>
+          </span>
           <span><a-icon type="phone" />运维电话: 010-66298888 &nbsp;&nbsp;&nbsp;&nbsp;</span>
           <a-icon
             v-if="showBusinessNavi"
@@ -67,10 +73,11 @@
 </template>
 
 <script>
-import { getUserInfo } from '@/common/store-mixin'
+import download from '@/common/services/download'
 import { Icon, Dropdown, Menu } from 'ant-design-vue'
 import components from './_import-components/sd-tabbed-view-import'
 import navMenuService from './nav-menu-service'
+import axios from '@/common/services/axios-instance'
 // 获取异步组件的信息
 function getComponentInfo(route) {
   const lastMatched = route.matched[1] // 0是sd-frame,1是tab页内的内容
@@ -190,6 +197,30 @@ export default {
   },
   mounted() {},
   methods: {
+    downloadManul() {
+      const code = 253055
+      const url = `${location.origin}${location.pathname}api/framework/v1/task-form-process/download-attachments/${code}`
+      download(url, '集团公司大数据审计系统推广项目用户操作手册.pdf').then((_) => {})
+    },
+    previewManul() {
+      const storeName = 'iamAttachment'
+      const fileId = 253055
+      axios
+        .get(`api/xcoa-mobile/v1/wps/preview/url/${storeName}/${fileId}`)
+        .then((_) => {
+          const data = _.data
+          console.log(data)
+          if (data.status === 'error') {
+            alert(data.message)
+          } else {
+            window.open(data.previewLink, '_blank')
+          }
+        })
+        .catch((e) => {
+          console.log('get preview url error', e)
+          alert('预览功能错误')
+        })
+    },
     // 处理关闭页签的操作
     menuClick(type, index) {
       switch (type) {

+ 10 - 10
src/org-manager/sd-org-dep-category.vue

@@ -216,15 +216,15 @@ export default {
             }
           },
         },
-        {
-          label: '删除',
-          id: 'delete',
-          permission: null,
-          type: TableActionTypes.batch,
-          callback: () => {
-            return this.delete(this.$refs.dataTable.getSelectedRowKeys())
-          },
-        },
+        // {
+        //   label: '删除',
+        //   id: 'delete',
+        //   permission: null,
+        //   type: TableActionTypes.batch,
+        //   callback: () => {
+        //     return this.delete(this.$refs.dataTable.getSelectedRowKeys())
+        //   },
+        // },
         {
           label: '导出',
           id: 'export',
@@ -667,7 +667,7 @@ export default {
         .then((res) => {
           const fileId = res.data.id
           let isNotRunning = true
-          const refreshFileInfo = function() {
+          const refreshFileInfo = function () {
             if (isNotRunning) {
               isNotRunning = true
               OrgService.getTmpFileInfo(fileId)

+ 20 - 0
src/org-manager/sd-org-dep.vue

@@ -72,6 +72,7 @@ export default {
       level: '',
       updateKey: 0,
       previrousParent: '',
+      abbreviationShot: '',
       values: [
         {
           name: 'code',
@@ -127,6 +128,12 @@ export default {
           },
         },
         {
+          name: 'abbreviation',
+          caption: '单位简称',
+          dataType: 'string',
+          value: null,
+        },
+        {
           name: 'weight',
           caption: '排序号',
           dataType: 'number',
@@ -194,6 +201,13 @@ export default {
           } else {
             this.$refs.form.setFieldValue('isLeve2', '')
           }
+          if ('abbreviation' in data.props) {
+            this.$refs.form.setFieldValue('abbreviation', data.props?.abbreviation)
+            this.abbreviationShot = data.props?.abbreviation
+          } else {
+            this.$refs.form.setFieldValue('abbreviation', '')
+          }
+
           if ('previrousParent' in data.props) {
             this.previrousParent = data.props?.previrousParent
           }
@@ -241,6 +255,12 @@ export default {
                 if (item.name === 'level') params.props.lev = item.value ? item.value : ''
                 if (item.name === 'ifzb') params.props.ifzb = item.value ? item.value : ''
                 if (item.name === 'isLeve2') params.props.isLeve2 = item.value ? item.value : ''
+                if (item.name === 'abbreviation') {
+                  params.props.abbreviation = item.value ? item.value : ''
+                  if (this.abbreviationShot !== params.props.abbreviation) {
+                    params.props.abbreviationUpdated = 'true'
+                  }
+                }
               })
               if (params.props.isLeve2 === '1') {
                 params.props.previrousParent = params.parentId

+ 10 - 10
src/org-manager/sd-org-user-category.vue

@@ -162,15 +162,15 @@ export default {
         },
       ],
       actions: [
-        {
-          label: '删除',
-          id: 'delete',
-          permission: null,
-          type: TableActionTypes.batch,
-          callback: () => {
-            return this.delete(this.$refs.dataTable.getSelectedRowKeys())
-          },
-        },
+        // {
+        //   label: '删除',
+        //   id: 'delete',
+        //   permission: null,
+        //   type: TableActionTypes.batch,
+        //   callback: () => {
+        //     return this.delete(this.$refs.dataTable.getSelectedRowKeys())
+        //   },
+        // },
         {
           label: '导出',
           id: 'export',
@@ -303,7 +303,7 @@ export default {
       OrgService.exportUser.exportUserExcel(ids).then((res) => {
         const fileId = res.data.id
         let isNotRunning = true
-        const refreshFileInfo = function() {
+        const refreshFileInfo = function () {
           if (isNotRunning) {
             isNotRunning = true
             OrgService.getTmpFileInfo(fileId)

+ 19 - 0
src/webflow/button-handlers/_import-components/sd-workflow-turn-todos-import.js

@@ -0,0 +1,19 @@
+/* eslint-disable import/order */
+// 此文件自动生成,不要手工修改
+import Vue from 'vue'
+import {
+FormModel,
+Modal,
+} from 'ant-design-vue'
+import SdNotifyType from '../components/sd-notify-type.vue'
+import SdOpinionModel from '../../sd-opinion-model.vue'
+import SdUserPicker from '@/common/components/sd-user-picker.vue'
+
+Vue.use(FormModel)
+Vue.use(Modal)
+
+export default {
+  SdNotifyType,
+  SdOpinionModel,
+  SdUserPicker,
+}

+ 250 - 0
src/webflow/button-handlers/sd-workflow-turn-todos.vue

@@ -0,0 +1,250 @@
+<template>
+  <a-modal
+    :destroy-on-close="true"
+    :title="currentActionButton.buttonName"
+    :body-style="{ overflow: 'auto' }"
+    :width="600"
+    :visible="showModal"
+    :confirm-loading="confirmLoading"
+    @ok="handleOk"
+    @cancel="handleCancel"
+  >
+    <a-form-model
+      ref="form"
+      layout="horizontal"
+      :class="$style.form"
+      :model="form"
+      :label-col="{ span: 4 }"
+      :wrapper-col="{ span: 18 }"
+      :rules="rules"
+    >
+      <a-form-model-item :label="`${currentActionButton.buttonName}人员`" prop="users" required>
+        <sd-user-picker
+          v-model="form.users"
+          :single="single"
+          :hierarchical="hierarchical"
+          :secret-level="secretLevel"
+        />
+      </a-form-model-item>
+      <a-form-model-item :label="`${currentActionButton.buttonName}意见`" prop="content">
+        <sd-opinion-model ref="opinionModel" v-model="turnTodoOpinion" :group-id="groupId" />
+      </a-form-model-item>
+      <sd-notify-type v-model="form.notify" />
+    </a-form-model>
+  </a-modal>
+</template>
+
+<script>
+import storeMixin from '@/common/store-mixin'
+import { message } from '@/common/one-ui'
+import FlowService from '../flow-service'
+import axios from '@/common/services/axios-instance'
+import components from './_import-components/sd-workflow-turn-todo-import'
+import todoListService from '@/todo/todo-list-service'
+
+export default {
+  name: 'SdWorkflowTurnTodo',
+  metaInfo: {
+    title: '转办',
+  },
+  components,
+  mixins: [storeMixin],
+  data() {
+    return {
+      currentActionButton: { buttonName: '转办' },
+      showModal: false,
+      todos: [],
+      handlerCallback: null,
+      form: {
+        users: [],
+        notify: [],
+        content: '',
+      },
+      rules: {
+        users: [
+          {
+            required: true,
+            message: '不能为空',
+            trigger: 'change',
+          },
+        ],
+        content: [
+          {
+            required: this.opinionRequired,
+            validator: this.validator,
+            trigger: 'change',
+          },
+        ],
+      },
+      hierarchical: false,
+      single: false,
+      secretLevel: '',
+      confirmLoading: false,
+      fdApproveOpinion: null,
+    }
+  },
+  computed: {
+    opinionRequired() {
+      return this.fdApproveOpinion?.required || false
+    },
+    groupId() {
+      return JSON.parse(this.fdApproveOpinion?.value || '{}')?.value?.attrs?.attachment || ''
+    },
+    turnTodoOpinion: {
+      get() {
+        return this.form.content
+      },
+      set(v) {
+        this.form.content = v
+        // this.webflow.setFieldValue('approveOpinion', v)
+      },
+    },
+  },
+  methods: {
+    validator(rule, value, callback) {
+      const atts = this.$refs.opinionModel?.getFileList() || []
+      if (atts.length && atts.some((item) => item.Completed === 0)) {
+        callback(new Error('正在上传意见附件,请稍后再试'))
+        return
+      }
+      if (atts.length === 0 && !value?.trim() && this.opinionRequired) {
+        callback(new Error('不能为空'))
+      } else {
+        callback()
+      }
+    },
+    handleOk() {
+      this.confirmLoading = true
+      this.$refs.form
+        .validate()
+        .then((flag) => {
+          if (flag) {
+            const users = this.form.users.map((item) => ({
+              userAccount: item.code,
+              userName: item.name,
+            }))
+            if (users.findIndex((item) => item.userAccount === this.userInfo.account) !== -1) {
+              message.error(`不能${this.currentActionButton.buttonName}给自己`)
+              return
+            }
+            const key = Symbol('key')
+            const duration = 30
+            message.loading({ content: '处理中...', key, duration: 0 })
+            console.log(this.todos)
+            const content = this.form.content
+            this.showModal = false
+            this.todos.forEach((todo) => {
+              axios
+                .get(`api/framework/v1/task-form-process/${todoListService.makePath(todo, 'todo')}`)
+                .then((res) => {
+                  console.log(res.data)
+                  if (
+                    res.data.processId === 'G_1_QUESTION_FEED_BACK' &&
+                    (res.data.attrs.stepN === 0 ||
+                      res.data.processActiveLogInfo[0].stepId === 'G_1_QUESTION_FEED_BACK.1') // 流程处于开始环节
+                  ) {
+                    var { instId, activeStepId } = res.data
+                    const handleParams = {
+                      activeStepId: activeStepId, // 当前步骤id
+                      instId: instId, // 当前流程Id
+                      stepId: 'G_1_QUESTION_FEED_BACK.1', // 目前流程id
+                      operators: [
+                        {
+                          type: 'User',
+                          code: users[0].userAccount,
+                          name: users[0].userName,
+                          attrs: null,
+                          attrNames: [],
+                        },
+                      ],
+                      flowCallbackBeanName: 'subflowDataBinderCallback',
+                      beanId: res.data.processFormData.beanId,
+                      formId: res.data.processFormData.formId,
+                      opinion: content,
+                      thirdBean: {},
+                      props: { jumpActionName: '特送' },
+                    }
+                    // 传递流程表单所有参数以解决后期会丢失部门参数的问题
+                    const flowDataArr = res.data.processFormData.processFormPropertyValues
+                    const thirdBean = {}
+                    for (const key in flowDataArr) {
+                      thirdBean[flowDataArr[key].name] = flowDataArr[key].value
+                    }
+                    handleParams.thirdBean = thirdBean
+                    FlowService.toSteps(handleParams)
+                      .then((res) => {
+                        message.success({ content: '特送成功' })
+                        axios
+                          .get(
+                            'api/xcoa-mobile/v1/spic-common/removeTodoItemByTodoId?todoId=' +
+                              todo.id
+                          )
+                          .then((res) => {
+                            console.log(res.data)
+                            message.success({ content: '删除待办成功' })
+                            this.handlerCallback()
+                          })
+                      })
+                      .finally(() => {})
+                  } else {
+                    const inputs = []
+                    res.data.processFormData.processFormPropertyValues.forEach((v) => {
+                      inputs.push({ name: v.name, value: v.value })
+                    })
+                    inputs.push({
+                      name: 'approveOpinion',
+                      value:
+                        '{"value":{"signContent":"' + content + '","attrs":{"attachment":""}}}',
+                    })
+                    FlowService.transfer(res.data, users, inputs, this.form.notify).then(
+                      (res) => {
+                        message.success({ content: '流程已处理', key, duration })
+                        this.handlerCallback()
+                      },
+                      (res) => {
+                        message.error({
+                          content: `${res.response.data.message}失败`,
+                          key,
+                          duration,
+                        })
+                      }
+                    )
+                  }
+                })
+                .catch((e) => {
+                  message.error({
+                    content: `转发失败`,
+                    key,
+                    duration,
+                  })
+                })
+            })
+          }
+        })
+        .finally(() => {
+          this.confirmLoading = false
+        })
+    },
+    handleCancel() {
+      this.syncWebflow()
+      this.showModal = false
+    },
+    show() {
+      this.showModal = true
+    },
+    setTodos(todos) {
+      this.todos = todos
+    },
+    syncWebflow() {
+      this.webflow?.$refs.form?.$refs.opinionModel?.$refs.attachment?.updateFileList?.()
+    },
+    setHandlerCallback(callback) {
+      this.handlerCallback = callback
+    },
+  },
+}
+</script>
+
+<style module lang="scss">
+@use '@/common/design' as *;
+</style>

+ 0 - 10
src_custom/spicannualreport/_import-components/xm-annual-report-form-import.js

@@ -2,30 +2,20 @@
 // 此文件自动生成,不要手工修改
 import Vue from 'vue'
 import {
-Button,
 DatePicker,
-Icon,
 Input,
 Modal,
 Spin,
 } from 'ant-design-vue'
-import SdAttachment from '@/common/components/sd-attachment.vue'
-import SdChildTable from '@/common/components/sd-child-table.vue'
 import SdDataTableEx from '@/common/components/sd-data-table-ex.vue'
-import SdFormItem from '@/common/components/sd-form-item.vue'
 import SdFormItemTd from '@/common/components/sd-form-item-td.vue'
 
-Vue.use(Button)
 Vue.use(DatePicker)
-Vue.use(Icon)
 Vue.use(Input)
 Vue.use(Modal)
 Vue.use(Spin)
 
 export default {
-  SdAttachment,
-  SdChildTable,
   SdDataTableEx,
-  SdFormItem,
   SdFormItemTd,
 }

+ 0 - 8
src_custom/spicannualreport/_import-components/xm-annual-report-puiblish-form-import.js

@@ -2,30 +2,22 @@
 // 此文件自动生成,不要手工修改
 import Vue from 'vue'
 import {
-Button,
 DatePicker,
-Icon,
 Input,
 Modal,
 Spin,
 } from 'ant-design-vue'
-import SdChildTable from '@/common/components/sd-child-table.vue'
 import SdDataTableEx from '@/common/components/sd-data-table-ex.vue'
 import SdDetailForm from '@/common/components/sd-detail-form.vue'
-import SdFormItem from '@/common/components/sd-form-item.vue'
 import SdFormItemTd from '@/common/components/sd-form-item-td.vue'
 
-Vue.use(Button)
 Vue.use(DatePicker)
-Vue.use(Icon)
 Vue.use(Input)
 Vue.use(Modal)
 Vue.use(Spin)
 
 export default {
-  SdChildTable,
   SdDataTableEx,
   SdDetailForm,
-  SdFormItem,
   SdFormItemTd,
 }

+ 2 - 83
src_custom/spicannualreport/xm-annual-report-form.vue

@@ -1,7 +1,7 @@
 <template>
   <span>
     <sd-webflow ref="flow" :removed-tabs="['sdRelatedDoc']" :class="$style.materialListForm">
-      <template v-slot:form="{ model, fields }">
+      <template v-slot:form="{ model }">
         <div v-show="loading" :class="$style.loadingDiv">
           <a-spin :spinning="true" tip="创建数据中..." />
         </div>
@@ -59,86 +59,6 @@
             <sd-form-item-td name="creationTime" :colspan="10" />
           </tr>
         </table>
-
-        <table>
-          <tr
-            ><td :colspan="4">
-              <sd-form-item
-                name="spicAnnualReportItemEntities"
-                :label="null"
-                :input-td-attrs="{ class: 'materialEntities' }"
-              >
-                <template v-slot:read-and-edit="{ editable }">
-                  <audit-advanced-group
-                    :expand="expand"
-                    :expand-str="'expand'"
-                    :group-label="'资料清单'"
-                    @changedClick="changedClick"
-                  >
-                    <template>
-                      <div v-show="expand && editable" :class="$style.btnmubandiv">
-                        <a-button type="link" :class="$style.btnmuban" @click="showImportTable"
-                          ><a-icon type="check-circle" :theme="'filled'" />
-                          用模板创建
-                        </a-button>
-                      </div>
-                      <sd-child-table
-                        ref="childTable"
-                        v-model="model.spicAnnualReportItemEntities"
-                        :class="$style.projecttable"
-                        label=""
-                        :read-only="!editable"
-                        :sequence-column="true"
-                        :fields="Array.from(fields.spicAnnualReportItemEntities.attr.dync)"
-                        :columns="childColumns"
-                        @change="changeCTable"
-                      >
-                        <!-- input-form 表示这部分是子表组件的form插槽 -->
-                        <template v-slot:form="{ model, fields }">
-                          <table :class="$style.xmTable">
-                            <tr>
-                              <sd-form-item-td name="dataName" :colspan="3" />
-                            </tr>
-                            <tr>
-                              <sd-form-item-td name="dataDesc" :colspan="3">
-                                <a-textarea v-model="model.dataDesc" :rows="3" />
-                              </sd-form-item-td>
-                            </tr>
-                            <tr>
-                              <!-- 资料类型 -->
-                              <sd-form-item-td name="dataType" component="a-select" :colspan="3" />
-                            </tr>
-                            <tr>
-                              <!-- 附件 -->
-                              <sd-form-item-td name="attachment">
-                                <template v-slot:read-and-edit="{ editable }">
-                                  <sd-attachment
-                                    v-model="model.attachment"
-                                    :read-only="editable ? false : true"
-                                    :group-id="JSON.parse(fields.attachment.value).value"
-                                  />
-                                </template>
-                              </sd-form-item-td>
-                            </tr>
-                          </table>
-                        </template>
-                        <template v-slot:attachment="{ field, text, record }">
-                          <div @click="attClick">
-                            <sd-attachment
-                              :key="key"
-                              :read-only="editable ? false : true"
-                              :group-id="JSON.parse(text).value ? JSON.parse(text).value : text"
-                            />
-                          </div>
-                        </template>
-                      </sd-child-table>
-                    </template>
-                  </audit-advanced-group>
-                </template>
-              </sd-form-item>
-            </td>
-          </tr>
-        </table>
       </template>
     </sd-webflow>
     <!-- 选择导入模板 -->
@@ -171,7 +91,6 @@ import { Message } from 'ant-design-vue'
 import TableColumnTypes from '@/common/services/table-column-types'
 import xmSpicAnnualReportService from './xm-spic-annual-report-service'
 import auditAdvancedGroupMixins from '@product/iam/components/audit-advanced-group-mixins'
-import auditAdvancedGroup from '@product/iam/components/audit-advanced-group.vue'
 
 export default {
   name: 'XmAnnualReportForm',
@@ -180,7 +99,7 @@ export default {
       title: '年度报告库',
     }
   },
-  components: { ...components, auditAdvancedGroup },
+  components: { ...components },
   mixins: [auditAdvancedGroupMixins],
   data() {
     return {

+ 15 - 15
src_custom/spicannualreport/xm-annual-report-list.vue

@@ -327,21 +327,21 @@ export default {
         },
       ],
       actions: [
-        // {
-        //   label: '新建',
-        //   id: 'new',
-        //   permission: 'create',
-        //   type: TableActionTypes.primary, // 新建按钮,不需要回调,自动处理
-        //   callback: () => {
-        //     const url = '/sd-flow-guide?code=SPIC_AUDIT_REPORT' // 新页面要打开的路由地址
-        //     crossWindowWatcher.waitForChanged(url).then((refreshFlag) => {
-        //       if (refreshFlag) {
-        //         // 这里写或者调刷新的方法
-        //         this.refreshDataTable()
-        //       }
-        //     })
-        //   },
-        // },
+        {
+          label: '新建',
+          id: 'new',
+          permission: 'create',
+          type: TableActionTypes.primary, // 新建按钮,不需要回调,自动处理
+          callback: () => {
+            const url = '/sd-flow-guide?code=SPIC_AUDIT_REPORT' // 新页面要打开的路由地址
+            crossWindowWatcher.waitForChanged(url).then((refreshFlag) => {
+              if (refreshFlag) {
+                // 这里写或者调刷新的方法
+                this.refreshDataTable()
+              }
+            })
+          },
+        },
         // {
         //   label: '删除',
         //   id: 'delete',

+ 1 - 69
src_custom/spicannualreport/xm-annual-report-puiblish-form.vue

@@ -73,73 +73,6 @@
               <sd-form-item-td name="uuid" :colspan="10" hidden="true" />
             </tr>
           </table>
-
-          <table>
-            <tr
-              ><td :colspan="4">
-                <sd-form-item
-                  name="spicAnnualReportPublishItemEntities"
-                  :label="null"
-                  :input-td-attrs="{ class: 'annualReportPublishItemEntities' }"
-                >
-                  <template v-slot:read-and-edit="{ editable }">
-                    <audit-advanced-group
-                      :expand="moneyExpand"
-                      :expand-str="'moneyExpand'"
-                      :group-label="'年度报告'"
-                      @changedClick="changedClick"
-                    >
-                      <template>
-                        <div v-show="moneyExpand && editable" :class="$style.btnmubandiv">
-                          <a-button type="link" :class="$style.btnmuban" @click="showImportTable"
-                            ><a-icon type="check-circle" :theme="'filled'" />
-                            用模板创建
-                          </a-button>
-                        </div>
-                        <!-- :read-only="!editable" -->
-                        <sd-child-table
-                          ref="childTable"
-                          v-model="model.spicAnnualReportPublishItemEntities"
-                          :class="$style.deptPlanChild"
-                          label=""
-                          :read-only="!childEdit"
-                          :sequence-column="true"
-                          :fields="Array.from(fields.spicAnnualReportPublishItemEntities.attr.dync)"
-                          :columns="childColumns"
-                          @change="changeCTable"
-                        >
-                          <!-- input-form 表示这部分是子表组件的form插槽 -->
-                          <template v-slot:form="{ model, fields }">
-                            <table :class="$style.xmTable">
-                              <tr>
-                                <sd-form-item-td name="dataName" :colspan="3" />
-                              </tr>
-                              <tr>
-                                <sd-form-item-td name="dataDesc" :colspan="3">
-                                  <a-textarea v-model="model.dataDesc" :rows="3" />
-                                </sd-form-item-td>
-                              </tr>
-                              <tr>
-                                <!-- 资料类型 -->
-                                <sd-form-item-td
-                                  name="dataType"
-                                  component="a-select"
-                                  :colspan="3"
-                                />
-                              </tr>
-                              <tr>
-                                <sd-form-item-td name="attachment" :colspan="3" />
-                              </tr>
-                            </table>
-                          </template>
-                        </sd-child-table>
-                      </template>
-                    </audit-advanced-group>
-                  </template>
-                </sd-form-item>
-              </td>
-            </tr>
-          </table>
         </template>
       </sd-detail-form>
     </audit-form-top-banner>
@@ -172,7 +105,6 @@ import { Message, Modal } from 'ant-design-vue'
 import axios from '@/common/services/axios-instance'
 import { getUserInfo } from '@/common/store-mixin'
 import auditAdvancedGroupMixins from '@product/iam/components/audit-advanced-group-mixins'
-import auditAdvancedGroup from '@product/iam/components/audit-advanced-group.vue'
 import TableColumnTypes from '@/common/services/table-column-types'
 import xmSpicAnnualReportService from './xm-spic-annual-report-service'
 import crossWindowWatcher from '@/common/services/cross-window-watcher'
@@ -184,7 +116,7 @@ export default {
   metaInfo: {
     title: '年报资料下发',
   },
-  components: { ...components, auditFormTopBanner, auditAdvancedGroup },
+  components: { ...components, auditFormTopBanner },
   mixins: [auditAdvancedGroupMixins],
   data() {
     return {

+ 2 - 0
src_custom/spiccompositedatabase/_import-components/xm-composite-database-form-import.js

@@ -4,6 +4,7 @@ import Vue from 'vue'
 import {
 DatePicker,
 Input,
+Select,
 } from 'ant-design-vue'
 import SdAttachment from '@/common/components/sd-attachment.vue'
 import SdFormItem from '@/common/components/sd-form-item.vue'
@@ -11,6 +12,7 @@ import SdFormItemTd from '@/common/components/sd-form-item-td.vue'
 
 Vue.use(DatePicker)
 Vue.use(Input)
+Vue.use(Select)
 
 export default {
   SdAttachment,

+ 2 - 0
src_custom/spiccompositedatabase/_import-components/xm-composite-database-list-import.js

@@ -9,6 +9,7 @@ FormModel,
 Icon,
 Input,
 Row,
+Select,
 Tabs,
 } from 'ant-design-vue'
 import SdDataTableEx from '@/common/components/sd-data-table-ex.vue'
@@ -21,6 +22,7 @@ Vue.use(FormModel)
 Vue.use(Icon)
 Vue.use(Input)
 Vue.use(Row)
+Vue.use(Select)
 Vue.use(Tabs)
 
 export default {

+ 23 - 6
src_custom/spiccompositedatabase/xm-composite-database-form.vue

@@ -3,9 +3,9 @@
     <template v-slot:form="{ model, fields }">
       <table>
         <colgroup>
-          <col style="width:15%;" />
+          <col style="width: 15%" />
           <col />
-          <col style="width:15%;" />
+          <col style="width: 15%" />
           <col />
         </colgroup>
         <tr>
@@ -51,7 +51,7 @@
 
         <tr>
           <!-- 参考附件 -->
-          <sd-form-item-td name="referenceTemplate" :colspan="3">
+          <sd-form-item-td name="referenceTemplate">
             <template v-slot:read-and-edit="{ editable }">
               <sd-attachment
                 v-model="model.referenceTemplate"
@@ -60,6 +60,25 @@
               />
             </template>
           </sd-form-item-td>
+          <td class="ant-form-item-label cell_sd-form-item-td-label_common">
+            <label title="资料类别" class="ant-form-item-required">资料类别</label>
+          </td>
+          <td class="ant-form-item-control-wrapper">
+            <span v-if="isShow" read-only>{{
+              model.fromId > 0
+                ? '综合资料下发'
+                : model.fromId === -1
+                ? '审计机构负责人备案'
+                : model.fromId === -2
+                ? '审计机构考核结果备案'
+                : '其它'
+            }}</span>
+            <a-select v-else v-show="!model.fromId || model.fromId < 0" v-model="model.fromId">
+              <a-select-option :value="-1"> 审计机构负责人备案 </a-select-option>
+              <a-select-option :value="-2"> 审计机构考核结果备案 </a-select-option>
+              <a-select-option :value="-3"> 其它 </a-select-option>
+            </a-select>
+          </td>
         </tr>
 
         <tr>
@@ -77,9 +96,7 @@
                 />
               </template>
             </sd-form-item>
-            <span style="color: red;"
-              >小于3G的附件随意传,超过3G的附件,请拆分为多个文件进行上传</span
-            >
+            <span style="color: red">小于3G的附件随意传,超过3G的附件,请拆分为多个文件进行上传</span>
           </td>
         </tr>
 

+ 22 - 0
src_custom/spiccompositedatabase/xm-composite-database-list.vue

@@ -52,6 +52,18 @@
                     />
                   </a-form-model-item>
                 </a-col>
+
+                <a-col :span="12">
+                  <a-form-model-item :label="'资料类别'" prop="fromId">
+                    <a-select v-model="SJXMAdvSearchForm.docTypes">
+                      <a-select-option :value="''">&nbsp;</a-select-option>
+                      <a-select-option :value="-1"> 审计机构负责人备案 </a-select-option>
+                      <a-select-option :value="-2"> 审计机构考核结果备案 </a-select-option>
+                      <a-select-option :value="-3"> 其它 </a-select-option>
+                      <a-select-option :value="-4"> 综合资料下发 </a-select-option>
+                    </a-select>
+                  </a-form-model-item>
+                </a-col>
               </a-row>
             </template>
           </audit-advanced-query>
@@ -211,6 +223,7 @@ export default {
         flowState: '',
         reportUnitName: '',
         isLate: '',
+        docTypes: '',
       },
       SJJHAdvSearchForm: {
         reportYear: '',
@@ -750,6 +763,15 @@ export default {
         })
       }
 
+      if (this.SJXMAdvSearchForm.docTypes) {
+        this.SJXMTableExpressions.push({
+          dataType: 'int',
+          name: 'docTypes',
+          op: 'eq',
+          intValue: `${this.SJXMAdvSearchForm.docTypes}`,
+        })
+      }
+
       this.$refs[`${this.tableId}`].clearSelection()
     },
     // 下发

+ 0 - 1
src_custom/spicrectfeedback/_import-components/spic-questionfeedback-form-import.js

@@ -17,4 +17,3 @@ export default {
   SdFormItem,
   SdFormItemTd,
 }
-console.warn('文件名 spic-questionfeedback-form.vue 不符合命名规则,应该以 xm 开头')

+ 0 - 1
src_custom/spicrectfeedback/_import-components/spic-rectfeedback-list-import.js

@@ -27,4 +27,3 @@ export default {
   SdSelect,
   SdUserPicker,
 }
-console.warn('文件名 spic-rectfeedback-list.vue 不符合命名规则,应该以 xm 开头')

+ 129 - 81
src_custom/spicrectfeedback/spic-questionfeedback-form.vue

@@ -9,7 +9,7 @@
       <template v-slot:form="{ model, fields, FlowData }">
         <table>
           <tr>
-            <td style="border:none">
+            <td style="border: none">
               <audit-advanced-group
                 :expand="infoExpand"
                 :expand-str="'infoExpand'"
@@ -23,9 +23,9 @@
 
         <table v-show="infoExpand">
           <colgroup>
-            <col style="width: 300px;"/>
+            <col style="width: 300px" />
             <col />
-            <col style="width: 300px;"/>
+            <col style="width: 300px" />
             <col
           /></colgroup>
           <tr>
@@ -119,7 +119,7 @@
 
         <table>
           <tr>
-            <td style="padding-left:5px;border:none">
+            <td style="padding-left: 5px; border: none">
               <audit-advanced-group
                 :expand="findExpand"
                 :expand-str="'findExpand'"
@@ -133,9 +133,9 @@
 
         <table v-show="findExpand">
           <colgroup>
-            <col style="width: 300px;"/>
+            <col style="width: 300px" />
             <col />
-            <col style="width: 300px;"/>
+            <col style="width: 300px" />
             <col
           /></colgroup>
           <tr>
@@ -154,7 +154,7 @@
 
         <table>
           <tr>
-            <td style="padding-left:5px;border:none">
+            <td style="padding-left: 5px; border: none">
               <audit-advanced-group
                 :expand="findExpand"
                 :expand-str="'findExpand'"
@@ -169,9 +169,9 @@
 
         <table v-show="findExpand">
           <colgroup>
-            <col style="width: 300px;"/>
+            <col style="width: 300px" />
             <col />
-            <col style="width: 300px;"/>
+            <col style="width: 300px" />
             <col
           /></colgroup>
 
@@ -205,13 +205,16 @@
               </a-select>
             </sd-form-item-td>
           </tr>
-          <!-- <tr>
-            <sd-form-item-td name="rectMeasure" :colspan="3" :label="'计划整改措施'">
-              <a-textarea v-model="model.rectMeasure" :rows="3" />
-            </sd-form-item-td>
-          </tr> -->
           <tr>
-            <sd-form-item-td name="rectMeasure" :colspan="3" :label="'计划整改措施'">
+            <sd-form-item-td
+              name="rectMeasure"
+              :colspan="3"
+              :label="
+                model.rectType === '03' || model.rectType === '02'
+                  ? '整体计划整改措施'
+                  : '计划整改措施'
+              "
+            >
               <template>
                 <a-textarea v-if="fourShow" v-model="model.rectMeasure" :rows="3" />
                 <span v-else read-only>{{ model.rectMeasure }}</span>
@@ -230,8 +233,8 @@
               </template>
             </sd-form-item-td>
           </tr>
-          <tr>
-            <sd-form-item-td name="supportMaterial" :colspan="3" :label="'阶段性目标(按季度)'">
+          <tr v-if="model.rectType === '02' || model.rectType === '03'">
+            <sd-form-item-td name="supportMaterial" :colspan="3" :label="'阶段性目标'">
               <a-textarea v-if="fourShow" v-model="model.supportMaterial" :rows="3" />
               <span v-else read-only>{{ model.supportMaterial }}</span>
             </sd-form-item-td>
@@ -241,24 +244,28 @@
             <!-- @change="handlerFinash(model, $event, fields)" -->
             <sd-form-item-td
               v-if="model.rectType === '01' || model.rectType === '02' || model.rectType === '03'"
+              :colspan="3"
               name="draftFinishDate"
-              :label="'计划完成日期'"
-              :required="model.rectType === '03'"
+              :label="model.rectType === '01' ? '计划完成日期' : '阶段性目标计划完成日期'"
+              :required="model.rectType === '03' || model.rectType === '02'"
             >
               <span v-if="model.rectType === '01' || !fourShow">{{
                 model.draftFinishDate | sdDateFormat('YYYY-MM-DD')
               }}</span>
             </sd-form-item-td>
-            <!-- 整改完成日期 系统自动 -->
-            <sd-form-item-td name="finishDate" :label="'整改完成日期'">
-              <span>{{ model.finishDate | sdDateFormat('YYYY-MM-DD') }}</span>
-            </sd-form-item-td>
           </tr>
 
           <tr>
-            <!-- <tr v-if="model.rectType === '02' || model.rectType === '03'"> -->
             <!-- 措施执行情况-->
-            <sd-form-item-td name="draftRectMeasure" :colspan="3" :label="'措施执行情况'">
+            <sd-form-item-td
+              name="draftRectMeasure"
+              :colspan="3"
+              :label="
+                model.rectType === '03' || model.rectType === '02'
+                  ? '阶段性措施执行情况'
+                  : '措施执行情况'
+              "
+            >
               <a-textarea v-model="model.draftRectMeasure" :rows="3" />
             </sd-form-item-td>
           </tr>
@@ -287,42 +294,17 @@
               <span read-only>{{ fnget(model.whetherAgree) }}</span>
             </sd-form-item-td>
           </tr>
-          <!-- <tr> -->
-          <!--  问题原因分析 -->
-          <!-- <sd-form-item-td name="questionReason" :label="'问题原因分析'" /> -->
-          <!-- 是否申请整改销号 -->
-          <!-- <sd-form-item-td name="whetherRectCancelNumber" :label="'是否申请整改销号'" /> -->
-          <!-- </tr> -->
-
-          <!-- 是否超期未整改(已取消) -->
-          <!-- <tr v-if="model.rectState === '01'">
-            <sd-form-item-td name="isTrue" :label="'是否超期未整改'">
-              <span> {{ fngetlabel(fields.isTrue, model.isTrue) }}</span>
-            </sd-form-item-td>
-          </tr> -->
-          <!--  超期原因 (已取消)-->
-          <!-- <tr v-if="model.rectState === '01' && model.isTrue === '1'">
-            <sd-form-item-td name="overdueReason" :colspan="3" :label="'超期原因'" required>
-              <a-textarea v-model="model.overdueReason" :rows="3" />
-            </sd-form-item-td>
-          </tr> -->
-          <!-- 是否金额类问题 (已取消)-->
-          <!-- <tr>
-            <sd-form-item-td name="amountProblem" :label="'是否金额类问题'">
-              {{ model.amountProblem }}
+          <tr>
+            <!-- 整改完成日期 系统自动 -->
+            <sd-form-item-td name="finishDate" :label="'实际整改完成日期'">
+              <span>{{ model.finishDate | sdDateFormat('YYYY-MM-DD') }}</span>
             </sd-form-item-td>
-          </tr> -->
-          <!-- <tr> -->
-          <!--  纠正违规金额 (万元) -->
-          <!-- <sd-form-item-td name="correctViolationAmount" :label="'纠正违规金额(万元)'" /> -->
-          <!-- 增加收入数额(万元) -->
-          <!-- <sd-form-item-td name="increaseIncome" :label="'增加收入数额(万元)'" /> -->
-          <!-- </tr> -->
+          </tr>
         </table>
 
         <table>
           <tr>
-            <td style="padding-left:5px;border:none">
+            <td style="padding-left: 5px; border: none">
               <audit-advanced-group
                 :expand="findExpand"
                 :expand-str="'findExpand'"
@@ -336,9 +318,9 @@
 
         <table v-show="findExpand">
           <colgroup>
-            <col style="width: 300px;"/>
+            <col style="width: 300px" />
             <col />
-            <col style="width: 300px;"/>
+            <col style="width: 300px" />
             <col
           /></colgroup>
           <tr>
@@ -385,7 +367,7 @@
 
         <table>
           <tr>
-            <td style="padding-left:5px;border:none">
+            <td style="padding-left: 5px; border: none">
               <audit-advanced-group
                 :expand="findExpand"
                 :expand-str="'findExpand'"
@@ -399,9 +381,9 @@
 
         <table v-show="findExpand">
           <colgroup>
-            <col style="width: 300px;"/>
+            <col style="width: 300px" />
             <col />
-            <col style="width: 300px;"/>
+            <col style="width: 300px" />
             <col
           /></colgroup>
           <tr>
@@ -424,7 +406,7 @@
 
         <table>
           <tr>
-            <td style="padding-left:5px;border:none">
+            <td style="padding-left: 5px; border: none">
               <audit-advanced-group
                 :expand="findExpand"
                 :expand-str="'findExpand'"
@@ -438,9 +420,9 @@
 
         <table v-show="findExpand">
           <colgroup>
-            <col style="width: 300px;"/>
+            <col style="width: 300px" />
             <col />
-            <col style="width: 300px;"/>
+            <col style="width: 300px" />
             <col
           /></colgroup>
           <tr>
@@ -456,7 +438,7 @@
 
         <table>
           <tr>
-            <td style="padding-left:5px;border:none">
+            <td style="padding-left: 5px; border: none">
               <audit-advanced-group
                 :expand="findExpand"
                 :expand-str="'findExpand'"
@@ -470,9 +452,9 @@
 
         <table v-show="findExpand">
           <colgroup>
-            <col style="width: 300px;"/>
+            <col style="width: 300px" />
             <col />
-            <col style="width: 300px;"/>
+            <col style="width: 300px" />
             <col
           /></colgroup>
           <!--  追责问责(人次) -->
@@ -582,11 +564,11 @@
                         <!-- input-form 表示这部分是子表组件的form插槽 -->
                         <template v-slot:form="{ model }">
                           <table>
-                            <tr><sd-form-item-td name="projectId" :hidden="true"/></tr>
-                            <tr><sd-form-item-td name="rectId" :hidden="true"/></tr>
-                            <tr><sd-form-item-td name="id" :hidden="true"/></tr>
-                            <tr><sd-form-item-td name="dealWay"/></tr>
-                            <tr><sd-form-item-td name="personTimes"/></tr>
+                            <tr><sd-form-item-td name="projectId" :hidden="true" /></tr>
+                            <tr><sd-form-item-td name="rectId" :hidden="true" /></tr>
+                            <tr><sd-form-item-td name="id" :hidden="true" /></tr>
+                            <tr><sd-form-item-td name="dealWay" /></tr>
+                            <tr><sd-form-item-td name="personTimes" /></tr>
                           </table>
                         </template>
                       </XmChildTable>
@@ -626,9 +608,9 @@
 
         <table v-show="findExpand">
           <colgroup>
-            <col style="width: 300px;"/>
+            <col style="width: 300px" />
             <col />
-            <col style="width: 300px;"/>
+            <col style="width: 300px" />
             <col
           /></colgroup>
           <tr>
@@ -675,11 +657,11 @@
                         <!-- input-form 表示这部分是子表组件的form插槽 -->
                         <template v-slot:form="{ model }">
                           <table>
-                            <tr><sd-form-item-td name="projectId" :hidden="true"/></tr>
-                            <tr><sd-form-item-td name="rectId" :hidden="true"/></tr>
-                            <tr><sd-form-item-td name="id" :hidden="true"/></tr>
-                            <tr><sd-form-item-td name="dealManner"/></tr>
-                            <tr><sd-form-item-td name="personNumber"/></tr>
+                            <tr><sd-form-item-td name="projectId" :hidden="true" /></tr>
+                            <tr><sd-form-item-td name="rectId" :hidden="true" /></tr>
+                            <tr><sd-form-item-td name="id" :hidden="true" /></tr>
+                            <tr><sd-form-item-td name="dealManner" /></tr>
+                            <tr><sd-form-item-td name="personNumber" /></tr>
                           </table>
                         </template>
                       </XmChildTable>
@@ -719,9 +701,9 @@
 
         <table v-show="findExpand">
           <colgroup>
-            <col style="width: 300px;"/>
+            <col style="width: 300px" />
             <col />
-            <col style="width: 300px;"/>
+            <col style="width: 300px" />
             <col
           /></colgroup>
           <tr>
@@ -741,6 +723,42 @@
             /></sd-form-item-td>
           </tr>
         </table>
+
+        <table>
+          <tr
+            ><td :colspan="4">
+              <sd-form-item name="spicRectHistoryList" :label="null">
+                <template v-slot:read-and-edit="{ editable }">
+                  <audit-advanced-group
+                    :expand="historyExpand"
+                    :expand-str="'historyExpand'"
+                    :group-label="'历史反馈记录'"
+                    tablestyle="''"
+                  >
+                    <template>
+                      <XmChildTable
+                        v-show="historyExpand"
+                        ref="historyData"
+                        v-model="model.spicRectHistoryList"
+                        :class="$style.deptPlanChild"
+                        :label="null"
+                        :columns="columns3"
+                        :colspan="4"
+                        :read-only="!editable"
+                        name="spicRectHistoryList"
+                        :changeflag="true"
+                        :fields="
+                          [].concat(Array.from(fields.spicRectHistoryList.attr.dync).slice(2))
+                        "
+                      >
+                      </XmChildTable>
+                    </template>
+                  </audit-advanced-group>
+                </template>
+              </sd-form-item>
+            </td>
+          </tr>
+        </table>
       </template>
     </sd-webflow>
   </div>
@@ -791,6 +809,35 @@ const columns2 = [
     width: '38%',
   },
 ]
+
+const columns3 = [
+  {
+    title: '序号',
+    dataIndex: 'sortNum',
+    customRender: (text, record, index) => `${index + 1}`,
+    width: '80px',
+  },
+  {
+    title: '阶段性计划完成日期',
+    dataIndex: 'draftFinishDate',
+    width: '20%',
+  },
+  {
+    title: '阶段性目标',
+    dataIndex: 'supportMaterial',
+    width: '20%',
+  },
+  {
+    title: '阶段性措施执行情况',
+    dataIndex: 'draftRectMeasure',
+    width: '40%',
+  },
+  {
+    title: '阶段性实际完成日期',
+    dataIndex: 'actualFinishDate',
+    width: '40%',
+  },
+]
 export default {
   name: 'SpicQuestionfeedbackForm',
   metaInfo: {
@@ -817,6 +864,7 @@ export default {
       rectTypeOptions: [],
       futureDate: '',
       moneyExpand: true,
+      historyExpand: true,
       columns1,
       columns2,
       isShow1: false,

+ 33 - 0
src_custom/spicrectfeedback/spic-rectfeedback-list.vue

@@ -83,6 +83,15 @@
               ></a-date-picker>
             </a-form-model-item>
           </a-col>
+          <a-col :span="12">
+            <a-form-model-item :label="'整改状态'" prop="rectStatus">
+              <sd-select
+                v-model="advSearchForm.rectStatus"
+                :allow-clear="true"
+                :options="StatusOptions"
+              />
+            </a-form-model-item>
+          </a-col>
         </a-row>
       </template>
     </audit-advanced-query>
@@ -299,7 +308,9 @@ export default {
         planYear: '',
         auditedUnit: '',
         auditedContacts: '',
+        rectStatus: [],
       },
+      StatusOptions: [],
       cancellStatusOptions: [],
       projectId: '',
       setType: '',
@@ -359,6 +370,17 @@ export default {
     },
     initDictionaryInfo() {
       axios({
+        url: 'api/xcoa-mobile/v1/iam-law/dictionary?key=RECT_STATUS',
+        method: 'get',
+      }).then((res) => {
+        this.StatusOptions = res.data.map((val) => {
+          return {
+            id: val.id,
+            name: val.name,
+          }
+        })
+      })
+      axios({
         url: 'api/xcoa-mobile/v1/iam-law/dictionary?key=CANCELL_STATUS',
         method: 'get',
       }).then((res) => {
@@ -481,6 +503,16 @@ export default {
           stringValue: `%${this.contactsName}%`,
         })
       }
+      console.log('aaaaaaaaaaaaaaaa')
+      // 整改状态
+      if (this.advSearchForm.rectStatus.length > 0) {
+        this.tableExpressions.push({
+          dataType: 'str',
+          name: 'RECT_STATE',
+          op: 'eq',
+          stringValue: `${this.advSearchForm.rectStatus[0].id}`,
+        })
+      }
     },
     searchedClick() {
       this.expand = !this.expand
@@ -491,6 +523,7 @@ export default {
       this.advSearchForm.auditedContacts = ''
       this.unitName = ''
       this.advSearchForm.cancellStatus = []
+      this.advSearchForm.rectStatus = []
     },
     deleteRows() {
       const selectedRowKeys = this.$refs.dataTable.getSelectedRowKeys()

+ 5 - 1
src_product/iam/audit/auditsource/target/iam-source-target-form.vue

@@ -164,7 +164,7 @@
                             >
                               <!-- input-form 表示这部分是子表组件的form插槽 -->
 
-                              <template v-slot:form="{ model }">
+                              <template v-if="projectAdmin" v-slot:form="{ model }">
                                 <table style="width: 90%">
                                   <tr>
                                     <!-- 已审计年份 -->
@@ -328,6 +328,7 @@ export default {
   mixins: [auditAdvancedGroupMixins],
   data() {
     return {
+      projectAdmin: false,
       secUnitflag: null,
       rootNode: {},
       defaultCategory: '',
@@ -436,6 +437,9 @@ export default {
         this.iamRuleOptions = res.data
       }
     })
+    this.projectAdmin = getUserInfo().roles.find((item) => {
+      return item.code === 'G-1_TARGET_PROJECT'
+    })
   },
   methods: {
     // 页面加载完成后

+ 21 - 7
src_product/iam/audit/auditsource/userbase/iam-audit-userbase-list.vue

@@ -24,12 +24,8 @@
       <div :class="$style.rightcard">
         <a-card>
           <a-radio-group v-model="radioValue" :class="$style.radioGroup" @change="radioOnChange">
-            <a-radio :value="'01'">
-              在岗
-            </a-radio>
-            <a-radio :value="'02'">
-              调离
-            </a-radio>
+            <a-radio :value="'01'"> 在岗 </a-radio>
+            <a-radio :value="'02'"> 调离 </a-radio>
           </a-radio-group>
           <div :class="[$style.btns]">
             <audit-advanced-export
@@ -377,7 +373,14 @@ export default {
         creationTime: '',
       },
       nodeIsRoot: true, // 当前选中的树节点是否为根节点
-      SJRYKTableExpressions: [],
+      SJRYKTableExpressions: [
+        {
+          dataType: 'str',
+          name: 'parentId',
+          op: 'eq',
+          stringValue: 0,
+        },
+      ],
       projectTableExpressions: [],
       // 树控件列表加载使用这个
       SJRYKSelectTableExpressions: [],
@@ -408,6 +411,11 @@ export default {
           permission: null, // 纯前端操作,不需要权限控制
           callback: this.export,
         },
+        {
+          label: '导出含下级',
+          permission: null, // 纯前端操作,不需要权限控制
+          callback: this.export1,
+        },
       ],
     }
   },
@@ -568,6 +576,9 @@ export default {
     export() {
       this.$refs.userexport.exportdata()
     },
+    export1() {
+      this.$refs.userexport.exportdata(true)
+    },
     // 检查根节点属性
     checkRootNodeEdit() {
       const adminRole = getUserInfo().roles.find((item) => {
@@ -597,6 +608,9 @@ export default {
     // 点击树
     treeSelect(selectedKeys, info) {
       this.nodeIsRoot = info.selectedNodes[0].data.props.props.isroot // 是否为根节点
+      if (this.nodeIsRoot === true) {
+        return
+      }
       this.parentId = info.selectedNodes[0].data.props.id // 父级id
       this.parentName = info.selectedNodes[0].data.props.text // 父级名称
       this.selectedKeys = selectedKeys

+ 4 - 33
src_product/iam/audit/plan/audit-plan-form.vue

@@ -521,7 +521,7 @@ export default {
         {
           title: '序号',
           dataIndex: 'sortNumber',
-          width: '70px',
+          width: '20px',
           customRender: (text, record, index) => `${index + 1}`,
         },
         {
@@ -531,46 +531,17 @@ export default {
         {
           title: '企业名称',
           dataIndex: 'name',
-          // sdClickable: true, // 列内容是否可点击
-          scopedSlots: { customRender: 'islink' },
+          width: '300px',
         },
         {
           title: '类型',
           dataIndex: 'category',
-          width: '160px',
-        },
-        {
-          title: '统一社会信用代码',
-          dataIndex: 'code',
-          width: '180px',
+          width: '150px',
         },
         {
           title: '住所',
           dataIndex: 'address',
-          width: '70px',
-        },
-        {
-          title: '企业状态',
-          sorter: true,
-          dataIndex: 'status',
-        },
-        {
-          title: '当前所参与项目',
-          dataIndex: 'joinProject',
-          width: '180px',
-          scopedSlots: { customRender: 'isProject' },
-        },
-        {
-          title: '编制人员',
-          dataIndex: 'authName',
-          width: '120px',
-        },
-        {
-          title: '编制日期',
-          dataIndex: 'authTime',
-          sorter: true,
-          defaultSortOrder: 'descend',
-          sdRender: TableColumnTypes.date,
+          width: '100px',
         },
       ],
       expressions: [],

+ 15 - 44
src_product/iam/audit/plan/audit-planchange-form.vue

@@ -4,7 +4,7 @@
       <template v-slot:form="{ model, fields }">
         <table>
           <tr>
-            <td style=" padding-left: 5px;border: none">
+            <td style="padding-left: 5px; border: none">
               <audit-advanced-group
                 :expand="planchangeExpand"
                 :expand-str="'planchangeExpand'"
@@ -59,7 +59,7 @@
 
         <table>
           <tr>
-            <td style=" padding-left: 5px;border: none">
+            <td style="padding-left: 5px; border: none">
               <audit-advanced-group
                 :expand="projectExpand"
                 :expand-str="'projectExpand'"
@@ -88,18 +88,18 @@
               {{ model.projectTitle }}
             </sd-form-item-td>
             <!-- <sd-form-item-td v-if="model.changeType !== '03'" name="auditType"></sd-form-item-td> -->
-            <sd-form-item-td
+            <!-- <sd-form-item-td
               v-if="
                 model.changeType === '03' ||
-                  (model.projectCode !== '' &&
-                    model.projectCode !== null &&
-                    model.projectCode !== undefined)
+                (model.projectCode !== '' &&
+                  model.projectCode !== null &&
+                  model.projectCode !== undefined)
               "
               name="auditType"
             >
               {{ getFormSelectFieldValue('auditType', model.auditType) }}
-            </sd-form-item-td>
-            <sd-form-item-td v-else name="auditType"></sd-form-item-td>
+            </sd-form-item-td> -->
+            <sd-form-item-td  name="auditType"></sd-form-item-td>
           </tr>
           <tr class="bklabeloverflow">
             <sd-form-item-td
@@ -153,14 +153,14 @@
             <sd-form-item-td
               v-if="
                 (model.changeType !== '03' && model.auditType === '03') ||
-                  (model.changeType !== '03' && model.auditType === '04')
+                (model.changeType !== '03' && model.auditType === '04')
               "
               name="auditedUser"
             ></sd-form-item-td>
             <sd-form-item-td
               v-if="
                 (model.changeType === '03' && model.auditType === '03') ||
-                  (model.changeType === '03' && model.auditType === '04')
+                (model.changeType === '03' && model.auditType === '04')
               "
               name="auditedUser"
             >
@@ -427,7 +427,7 @@ export default {
         {
           title: '序号',
           dataIndex: 'sortNumber',
-          width: '70px',
+          width: '20px',
           customRender: (text, record, index) => `${index + 1}`,
         },
         {
@@ -437,46 +437,17 @@ export default {
         {
           title: '企业名称',
           dataIndex: 'name',
-          // sdClickable: true, // 列内容是否可点击
-          scopedSlots: { customRender: 'islink' },
+          width: '300px',
         },
         {
           title: '类型',
           dataIndex: 'category',
-          width: '160px',
-        },
-        {
-          title: '统一社会信用代码',
-          dataIndex: 'code',
-          width: '180px',
+          width: '150px',
         },
         {
           title: '住所',
           dataIndex: 'address',
-          width: '70px',
-        },
-        {
-          title: '企业状态',
-          sorter: true,
-          dataIndex: 'status',
-        },
-        {
-          title: '当前所参与项目',
-          dataIndex: 'joinProject',
-          width: '180px',
-          scopedSlots: { customRender: 'isProject' },
-        },
-        {
-          title: '编制人员',
-          dataIndex: 'authName',
-          width: '120px',
-        },
-        {
-          title: '编制日期',
-          dataIndex: 'authTime',
-          sorter: true,
-          defaultSortOrder: 'descend',
-          sdRender: TableColumnTypes.date,
+          width: '100px',
         },
       ],
       expressions: [],
@@ -487,7 +458,7 @@ export default {
     this.initProjectInfo()
     this.initDictionaryInfo()
     var _this = this
-    logUtil.$on('modifyLogCustomData', function(modifyLogData) {
+    logUtil.$on('modifyLogCustomData', function (modifyLogData) {
       _this.modifyLogCustomData(modifyLogData)
     })
   },

+ 0 - 1
src_product/iam/audit/project/_import-components/audit-project-list-import.js

@@ -35,4 +35,3 @@ export default {
   SdSelect,
   SdUserPicker,
 }
-console.warn('文件名 audit-project-list.vue 不符合命名规则,应该以 iam 开头')

+ 0 - 1
src_product/iam/audit/project/_import-components/audit-project-start-form-import.js

@@ -43,4 +43,3 @@ export default {
   SdUserPicker,
   XmChildTable,
 }
-console.warn('文件名 audit-project-start-form.vue 不符合命名规则,应该以 iam 开头')

+ 7 - 7
src_product/iam/audit/project/audit-project-list.vue

@@ -67,7 +67,7 @@
         </audit-advanced-query>
         <sd-data-table-ex
           ref="dataTable"
-          style="margin-top: 42px;"
+          style="margin-top: 42px"
           :columns="columns"
           :process-req="processReq"
           show-selection
@@ -84,8 +84,8 @@
             <span v-for="(bt, index) in buttonsfortable" :key="index">
               <a-button
                 v-if="
-                  bt.showCondition === record.itemStatus &&
-                    checkPermission(bt.permission, record.operatePermission)
+                  (!bt.showCondition || bt.showCondition === record.itemStatus) &&
+                  checkPermission(bt.permission, record.operatePermission)
                 "
                 type="link"
                 size="small"
@@ -100,12 +100,12 @@
         </sd-data-table-ex>
         <div :class="[$style.btns]">
           <a-col :span="7" :offset="0">
-            <a-select v-model="searchYear" style="width:80px;" @change="changeYearSelect">
+            <a-select v-model="searchYear" style="width: 80px" @change="changeYearSelect">
               <a-select-option v-for="year in yearArry" :key="year">
                 {{ year }}
               </a-select-option>
             </a-select>
-            <a-checkbox v-model="checkboxValue" style="margin-left: 15px;" @change="onChange">
+            <a-checkbox v-model="checkboxValue" style="margin-left: 15px" @change="onChange">
               仅显示我参与的
             </a-checkbox>
           </a-col>
@@ -125,7 +125,7 @@
           <a-col :span="7" :offset="10" :class="$style.actionBtn">
             <a-input-search
               v-model="searchValue"
-              style="width: 200px;"
+              style="width: 200px"
               placeholder="请输入搜索条件"
               allow-clear
               @search="onSearch"
@@ -251,7 +251,7 @@ export default {
           id: 'assignTeamLeader',
           icontype: 'sd-audit-changeuser',
           theme: 'fill',
-          showCondition: '01', // 未启动
+          // showCondition: '01', // 未启动
           permission: '04', // 项目负责人
         },
         {

+ 28 - 52
src_product/iam/audit/project/audit-project-start-form.vue

@@ -19,7 +19,13 @@
         <tr>
           <td
             colspan="4"
-            style="height:60px;padding-right:5px;padding-left:5px;line-height:60px;border:none"
+            style="
+              height: 60px;
+              padding-right: 5px;
+              padding-left: 5px;
+              line-height: 60px;
+              border: none;
+            "
           >
             <a-steps direction="horizontal" :current="progressJd" size="small">
               <a-step>
@@ -44,7 +50,7 @@
 
       <table v-show="projectStep === '1'">
         <tr>
-          <td style="padding-left:5px;border:none">
+          <td style="padding-left: 5px; border: none">
             <audit-advanced-group
               :expand="projectinfoExpand"
               :expand-str="'projectinfoExpand'"
@@ -132,14 +138,14 @@
         </tr>
         <tr>
           <sd-form-item-td name="exPersonnelNum" hidden="true">
-            <a-input-number v-model="model.exPersonnelNum" style="width: 100%;"></a-input-number>
+            <a-input-number v-model="model.exPersonnelNum" style="width: 100%"></a-input-number>
           </sd-form-item-td>
           <sd-form-item-td name="predictedCost" hidden="true">
             <a-input-number
               v-model="model.predictedCost"
               :min="0"
               :precision="2"
-              style="width: 100%;"
+              style="width: 100%"
             ></a-input-number>
           </sd-form-item-td>
         </tr>
@@ -165,7 +171,7 @@
               v-model="model.auditAssets"
               :min="0"
               :precision="2"
-              style="width: 100%;"
+              style="width: 100%"
             ></a-input-number>
           </sd-form-item-td>
         </tr>
@@ -206,7 +212,7 @@
 
       <table v-show="projectStep === '2'">
         <tr>
-          <td style="padding-left:5px;border:none">
+          <td style="padding-left: 5px; border: none">
             <audit-advanced-group
               :expand="projectmemberExpand"
               :expand-str="'projectmemberExpand'"
@@ -297,19 +303,19 @@
         </tr>
       </table>
 
-      <table v-show="projectStep === '3'" style="margin-top: 40px;">
+      <table v-show="projectStep === '3'" style="margin-top: 40px">
         <tr>
-          <td style="height: 150px; padding-left: 5px;text-align: center;border: none;">
+          <td style="height: 150px; padding-left: 5px; text-align: center; border: none">
             <sd-icon type="check-circle" :theme="'fill'" :class="$style.iconclass" />
-            <div style="margin-top:10px;">启动成功</div>
+            <div style="margin-top: 10px">启动成功</div>
           </td>
         </tr>
       </table>
 
       <table>
         <tr>
-          <td style="margin-top: 20px;text-align: center;border:none">
-            <span style="padding:0 5px;">
+          <td style="margin-top: 20px; text-align: center; border: none">
+            <span style="padding: 0 5px">
               <a-button
                 v-if="projectStep === '1'"
                 :loading="isSubmitting"
@@ -321,15 +327,15 @@
                 >上一步</a-button
               >
             </span>
-            <span v-if="projectStep === '2'" style="padding:0 5px;">
+            <span v-if="projectStep === '2'" style="padding: 0 5px">
               <a-button type="primary" :loading="isconfrimSubmitting" @click="fnconfirm"
                 >确定</a-button
               >
             </span>
-            <span v-if="projectStep !== '3'" style="padding:0 5px;">
+            <span v-if="projectStep !== '3'" style="padding: 0 5px">
               <a-button @click="close(true)">取消</a-button>
             </span>
-            <span v-else style="padding:0 5px;">
+            <span v-else style="padding: 0 5px">
               <a-button @click="close(true)">关闭</a-button>
             </span>
           </td>
@@ -507,7 +513,7 @@ export default {
         {
           title: '序号',
           dataIndex: 'sortNumber',
-          width: '80px',
+          width: '20px',
           customRender: (text, record, index) => `${index + 1}`,
         },
         {
@@ -517,48 +523,18 @@ export default {
         {
           title: '企业名称',
           dataIndex: 'name',
-          // sdClickable: true, // 列内容是否可点击
-          scopedSlots: { customRender: 'islink' },
+          width: '300px',
         },
         {
           title: '类型',
           dataIndex: 'category',
-          width: '160px',
-        },
-        {
-          title: '统一社会信用代码',
-          dataIndex: 'code',
-          width: '180px',
+          width: '150px',
         },
         {
           title: '住所',
           dataIndex: 'address',
-          width: '70px',
-        },
-        {
-          title: '企业状态',
-          sorter: true,
-          dataIndex: 'status',
           width: '100px',
         },
-        {
-          title: '当前参与项目',
-          dataIndex: 'joinProject',
-          width: '150px',
-          scopedSlots: { customRender: 'isProject' },
-        },
-        {
-          title: '编制人员',
-          dataIndex: 'authName',
-          width: '100px',
-        },
-        {
-          title: '编制日期',
-          dataIndex: 'authTime',
-          sorter: true,
-          defaultSortOrder: 'descend',
-          sdRender: TableColumnTypes.date,
-        },
       ],
       expressions: [],
       externalUnitIds: [],
@@ -569,7 +545,7 @@ export default {
     // 初始化数据字典信息
     this.initDictionaryInfo()
     var _this = this
-    logUtil.$on('modifyLogCustomData', function(modifyLogData) {
+    logUtil.$on('modifyLogCustomData', function (modifyLogData) {
       _this.modifyLogCustomData(modifyLogData)
     })
   },
@@ -748,9 +724,9 @@ export default {
       debounce(() => {
         axios
           .get(
-            `api/xcoa-mobile/v1/businesstype-manage/categories/check-code?categoryCode=${value}&id=${this.$refs.dataTable
-              .getDetailModal()
-              .getFieldValue('id') || ''}`
+            `api/xcoa-mobile/v1/businesstype-manage/categories/check-code?categoryCode=${value}&id=${
+              this.$refs.dataTable.getDetailModal().getFieldValue('id') || ''
+            }`
           )
           .then((res) => {
             if (res?.data?.status === 'success') {
@@ -1030,7 +1006,7 @@ export default {
       }
     },
     getPikerData(projectId) {
-      return function() {
+      return function () {
         return new Promise((resolve) => {
           axios({
             url: 'api/xcoa-mobile/v1/audit/auditsource/extrnal/iamExternalBase',

+ 2 - 0
src_product/iam/audit/question/_import-components/audit-question-list-import.js

@@ -8,6 +8,7 @@ Col,
 DatePicker,
 FormModel,
 Input,
+Modal,
 Row,
 } from 'ant-design-vue'
 import SdDataTableEx from '@/common/components/sd-data-table-ex.vue'
@@ -20,6 +21,7 @@ Vue.use(Col)
 Vue.use(DatePicker)
 Vue.use(FormModel)
 Vue.use(Input)
+Vue.use(Modal)
 Vue.use(Row)
 
 export default {

+ 65 - 23
src_product/iam/audit/question/audit-question-list.vue

@@ -158,12 +158,27 @@
         </div>
       </sd-data-table-ex>
     </a-card>
+    <a-modal :visible="modalVisible" title="确认重启问题吗?" @ok="handleOk" @cancel="handleCancel">
+      <p
+        >重启后系统将会重新打开整改流程, 并将流程设置到"开始"环节,
+        具体处理人默认为问题的"整改责任主体联系人": {{ modalRecord.auditedContactsName }} .</p
+      >
+      <p>如要改变问题的处理人, 请在下面选择相应人员进行变更</p>
+      <a-col :span="12" style="z-index: 100">
+        <a-form-model>
+          <a-form-model-item label="更改问题的处理人:">
+            <SdUserPicker v-model="modalUser" :single="true" :read-only="false" />
+          </a-form-model-item>
+        </a-form-model>
+      </a-col>
+    </a-modal>
   </div>
 </template>
 
 <script>
 import { message, Modal } from 'ant-design-vue'
 import moment from 'moment'
+import SdUserPicker from '@/common/components/sd-user-picker.vue'
 import { getUserInfo } from '@/common/store-mixin'
 import axios from '@/common/services/axios-instance'
 import TableColumnTypes from '@/common/services/table-column-types'
@@ -184,10 +199,14 @@ export default {
     ...components,
     auditAdvancedQuery,
     auditAdvancedExport,
+    SdUserPicker,
   },
   mixins: [auditAdvancedQueryMixins, auditAdvancedGroupMixins],
   data() {
     return {
+      modalVisible: false,
+      modalRecord: {},
+      modalUser: [],
       endOpen: false,
       year: null,
       expand: false,
@@ -848,31 +867,54 @@ export default {
         }
       })
     },
-
-    // 问题重启
-    questionReboot(record) {
-      Modal.confirm({
-        title: '确认重启问题吗?',
-        onOk: () => {
-          axios({
-            url: 'api/xcoa-mobile/v1/spic-common/restart-feedback?id=' + record.questionId,
-            method: 'get',
-          }).then((res) => {
-            if (res.data) {
-              Modal.info({
-                title: '提示',
-                content: '重启成功!',
-              })
-              this.refresh()
-            } else {
-              Modal.warning({
-                title: '提示',
-                content: '重启失败,请联系管理员!',
-              })
-            }
-          })
+    showModal(record) {
+      console.log(record)
+      this.modalUser = [
+        {
+          code: record.auditedContactsAccount,
+          name: record.auditedContactsName,
+          type: 'User',
         },
+      ]
+      this.modalRecord = record
+      this.modalVisible = true
+    },
+    handleCancel() {
+      this.modalUser = []
+      this.modalRecord = {}
+      this.modalVisible = false
+    },
+    handleOk(e) {
+      axios({
+        url:
+          'api/xcoa-mobile/v1/spic-common/restart-feedback?id=' +
+          this.modalRecord.questionId +
+          '&account=' +
+          (this.modalUser && this.modalUser[0] ? this.modalUser[0].code : ''),
+        method: 'get',
+      }).then((res) => {
+        if (res.data) {
+          Modal.info({
+            title: '提示',
+            content: '重启成功!',
+          })
+          this.modalVisible = false
+          this.refresh()
+        } else {
+          Modal.warning({
+            title: '提示',
+            content: '重启失败,请联系管理员!',
+          })
+          this.modalVisible = false
+        }
       })
+      this.modalUser = []
+      this.modalRecord = {}
+      this.modalVisible = false
+    },
+    // 问题重启
+    questionReboot(record) {
+      this.showModal(record)
     },
 
     refresh() {

+ 4 - 4
src_product/iam/audit/rectplanproject/audit-selectfind-modal.vue

@@ -4,7 +4,7 @@
     :title="title"
     :destroy-on-close="true"
     :visible="visible"
-    :width="modalWidth"
+    :width="1800"
     @ok="handleOk"
     @cancel="handleCancel"
   >
@@ -49,12 +49,11 @@ const columns = [
     title: '序号',
     dataIndex: 'sortNumber',
     customRender: (text, record, index) => `${index + 1}`,
-    width: '80px',
+    width: '40px',
   },
   {
     title: '问题Id',
     dataIndex: 'id',
-    width: '80px',
     sdHidden: true,
   },
   { dataIndex: 'findTitle', title: '问题名称', width: '40%' },
@@ -64,6 +63,7 @@ const columns = [
     title: '被审计单位',
     scopedSlots: { customRender: 'auditedUnitNames' },
   },
+  { dataIndex: 'issuedUnits', title: '已下发单位' },
 ]
 export default {
   name: 'AuditSelectfindModal',
@@ -83,7 +83,7 @@ export default {
     // 弹出窗宽度
     modalWidth: {
       type: String,
-      default: '1200px',
+      default: '1800px',
     },
     // 弹出窗显示参数
     visible: {

+ 15 - 19
src_product/iam/audit/spic-equity-penetration-chart/equity-penetration-chart.vue

@@ -17,6 +17,9 @@
         {{ d.name }}
       </a-select-option>
     </a-select>
+    <label v-show="lastUpdated.latestUpdatedDate"
+      >&nbsp;&nbsp; 数据更新时间: {{ lastUpdated.latestUpdatedDate }}</label
+    >
     <div id="appc" style="height: 98%"></div>
   </div>
 </template>
@@ -38,6 +41,7 @@ export default {
       quotedCompanys: [],
       value: [],
       fetching: false,
+      lastUpdated: {},
     }
   },
   mounted() {
@@ -54,6 +58,12 @@ export default {
         this.allQuotedCompanys = res.data
       }
     })
+
+    axios.get('api/xcoa-mobile/v1/lastUpdatedDate').then((res) => {
+      if (res.data) {
+        this.lastUpdated = res.data
+      }
+    })
   },
 
   methods: {
@@ -249,7 +259,7 @@ export default {
       this.svg = svg
       this.update()
       // 将svg置入宿主元素中
-      host.append(function() {
+      host.append(function () {
         return svg.node()
       })
     },
@@ -462,11 +472,7 @@ export default {
           this.update(d)
         })
 
-      expandBtnG
-        .append('circle')
-        .attr('r', 10)
-        .attr('fill', '#7A9EFF')
-        .attr('cy', 10)
+      expandBtnG.append('circle').attr('r', 10).attr('fill', '#7A9EFF').attr('cy', 10)
 
       expandBtnG
         .append('text')
@@ -526,10 +532,7 @@ export default {
         .attr('fill-opacity', 0)
         .attr('stroke-opacity', 0)
 
-      link1
-        .merge(link1Enter)
-        .transition(myTransition)
-        .attr('d', this.drawLink)
+      link1.merge(link1Enter).transition(myTransition).attr('d', this.drawLink)
 
       link1
         .exit()
@@ -734,11 +737,7 @@ export default {
           this.update(d)
         })
 
-      expandBtnG2
-        .append('circle')
-        .attr('r', 10)
-        .attr('fill', '#7A9EFF')
-        .attr('cy', -10)
+      expandBtnG2.append('circle').attr('r', 10).attr('fill', '#7A9EFF').attr('cy', -10)
 
       expandBtnG2
         .append('text')
@@ -796,10 +795,7 @@ export default {
         })
         .attr('fill-opacity', 0)
         .attr('stroke-opacity', 0)
-      link2
-        .merge(link2Enter)
-        .transition(myTransition)
-        .attr('d', this.drawLink)
+      link2.merge(link2Enter).transition(myTransition).attr('d', this.drawLink)
       link2
         .exit()
         .transition(myTransition)

+ 6 - 0
src_product/iam/audit/statistics/_import-components/audit-project-rect-statistics-import.js

@@ -4,10 +4,13 @@ import Vue from 'vue'
 import {
 Button,
 Card,
+Checkbox,
 Col,
 FormModel,
+Modal,
 Radio,
 Row,
+Table,
 } from 'ant-design-vue'
 import SdDataTable from '@/common/components/sd-data-table.vue'
 import SdDataTableHj from '@/common/components/sd-data-table-hj.vue'
@@ -15,10 +18,13 @@ import SdSelect from '@/common/components/sd-select.vue'
 
 Vue.use(Button)
 Vue.use(Card)
+Vue.use(Checkbox)
 Vue.use(Col)
 Vue.use(FormModel)
+Vue.use(Modal)
 Vue.use(Radio)
 Vue.use(Row)
+Vue.use(Table)
 
 export default {
   SdDataTable,

+ 20 - 1
src_product/iam/audit/statistics/audit-problem-rect-item.vue

@@ -180,7 +180,26 @@ export default {
           dataIndex: 'findTitle',
           width: '250px',
         },
-
+        {
+          title: '单移送',
+          dataIndex: 'transferClueSingle',
+          width: '200px',
+        },
+        {
+          title: '双移送',
+          dataIndex: 'transferClueDouble',
+          width: '200px',
+        },
+        {
+          title: '零容忍',
+          dataIndex: 'zeroTolerate',
+          width: '200px',
+        },
+        {
+          title: '属于审计意见书',
+          dataIndex: 'giveOpinion',
+          width: '200px',
+        },
         {
           title: '问题分类',
           dataIndex: 'problemType',

+ 125 - 1
src_product/iam/audit/statistics/audit-project-rect-statistics.vue

@@ -96,8 +96,30 @@
         <div slot="projectLink" slot-scope="text, record">
           <a :title="text" @click="linkProject(record)">{{ text }}</a>
         </div>
+        <div slot="detail" slot-scope="text, record">
+          <a :title="text" @click="showFindDetail(record)">{{ text }}</a>
+        </div>
       </sd-data-table>
     </a-card>
+
+    <a-modal
+      v-model="hasDetailData"
+      :title="detailRecord.projectTitle + ' 审计问题成果明细'"
+      :width="1500"
+      @ok="
+        projectFindsList = []
+        detailRecord = {}
+      "
+      @cancel="
+        projectFindsList = []
+        detailRecord = {}
+      "
+    >
+      <a-checkbox v-model="onlyMoreThanZero" @change="showFindDetail(detailRecord)"
+        >仅显示数值不全为零的数据</a-checkbox
+      >
+      <a-table :columns="detailColumns" :data-source="projectFindsList"> </a-table>
+    </a-modal>
   </div>
 </template>
 
@@ -107,7 +129,6 @@ import crossWindowWatcher from '@/common/services/cross-window-watcher'
 import components from './_import-components/audit-project-rect-statistics-import'
 import AuditRangePicker from '@product/iam/components/picker/audit-range-picker.vue'
 import AuditGroupPicker from '@product/iam/components/picker/audit-group-picker.vue'
-import { message } from '@/common/one-ui'
 import download from '@/common/services/download'
 import axios from '@/common/services/axios-instance'
 import { getUserInfo } from '@/common/store-mixin'
@@ -124,11 +145,82 @@ export default {
   },
   data() {
     return {
+      detailRecord: {},
+      onlyMoreThanZero: false,
+      projectFindsList: [],
       auditTypeOptions: [],
       exportLoading: false,
       radioValue: '01',
       radioType: true,
       dataKey: 0,
+      detailColumns: [
+        {
+          title: '项目名称',
+          dataIndex: 'projectTitle',
+          width: '300px',
+        },
+        {
+          title: '问题名称',
+          dataIndex: 'rectTitle',
+          width: '600px',
+        },
+        {
+          title: '纠正违规金额(万元)',
+          dataIndex: 'accounts',
+          width: '200px',
+        },
+        {
+          title: '节约成本费用数额(万元)',
+          dataIndex: 'svaingSum',
+          width: '250px',
+        },
+        {
+          title: '挽回损失(万元)',
+          dataIndex: 'improperSum',
+          width: '200px',
+        },
+        {
+          title: '增加收入数额(万元)',
+          dataIndex: 'recoverySum',
+          width: '200px',
+        },
+        {
+          title: '督促清理往来款项收回资金(万元)',
+          dataIndex: 'wasteAmount',
+          width: '300px',
+        },
+        {
+          title: '工程结算及竣工决算项目数量(个)',
+          dataIndex: 'completionNumber',
+          width: '300px',
+        },
+        {
+          title: '新建修订制度、流程、标准数量(项)',
+          dataIndex: 'itemNum',
+          width: '330px',
+        },
+
+        {
+          title: '追责问责',
+          children: [
+            {
+              title: '追责问责人次',
+              dataIndex: 'personNum',
+              width: '200px',
+            },
+            {
+              title: '经济处罚金额(万元)',
+              dataIndex: 'economicMoney',
+              width: '200px',
+            },
+          ],
+        },
+        {
+          title: '移送纪检监察线索(条)',
+          dataIndex: 'clue',
+          width: '250px',
+        },
+      ],
       columns: [
         {
           title: '序号',
@@ -150,36 +242,43 @@ export default {
           title: '纠正违规金额(万元)',
           dataIndex: 'accounts',
           width: '200px',
+          scopedSlots: { customRender: 'detail' },
         },
         {
           title: '节约成本费用数额(万元)',
           dataIndex: 'svaingSum',
           width: '250px',
+          scopedSlots: { customRender: 'detail' },
         },
         {
           title: '挽回损失(万元)',
           dataIndex: 'improperSum',
           width: '200px',
+          scopedSlots: { customRender: 'detail' },
         },
         {
           title: '增加收入数额(万元)',
           dataIndex: 'recoverySum',
           width: '200px',
+          scopedSlots: { customRender: 'detail' },
         },
         {
           title: '督促清理往来款项收回资金(万元)',
           dataIndex: 'wasteAmount',
           width: '300px',
+          scopedSlots: { customRender: 'detail' },
         },
         {
           title: '工程结算及竣工决算项目数量(个)',
           dataIndex: 'completionNumber',
           width: '300px',
+          scopedSlots: { customRender: 'detail' },
         },
         {
           title: '新建修订制度、流程、标准数量(项)',
           dataIndex: 'itemNum',
           width: '330px',
+          scopedSlots: { customRender: 'detail' },
         },
 
         {
@@ -189,11 +288,13 @@ export default {
               title: '追责问责人次',
               dataIndex: 'personNum',
               width: '200px',
+              scopedSlots: { customRender: 'detail' },
             },
             {
               title: '经济处罚金额(万元)',
               dataIndex: 'economicMoney',
               width: '200px',
+              scopedSlots: { customRender: 'detail' },
             },
           ],
         },
@@ -201,6 +302,7 @@ export default {
           title: '移送纪检监察线索(条)',
           dataIndex: 'clue',
           width: '250px',
+          scopedSlots: { customRender: 'detail' },
         },
 
         {
@@ -403,6 +505,11 @@ export default {
       dataKeysum: 0,
     }
   },
+  computed: {
+    hasDetailData() {
+      return Object.keys(this.detailRecord).length !== 0
+    },
+  },
   // computed: {
   //   dataUrl() {
   //     debugger
@@ -460,6 +567,20 @@ export default {
     // this.handleRectStatistics('serach')
   },
   methods: {
+    showFindDetail(record) {
+      this.detailRecord = record
+      axios({
+        url:
+          'api/xcoa-mobile/v1/spicAuditReportList/projectRectStatisticsDetail?projectId=' +
+          record.projectId +
+          '&onlyMoreThanZero=' +
+          this.onlyMoreThanZero,
+        method: 'post',
+      }).then((res) => {
+        console.log(res.data)
+        this.projectFindsList = res.data.data
+      })
+    },
     hsaReadAuthorityPermission(record) {
       if (
         record.readAuthorityCodes != null &&
@@ -605,6 +726,9 @@ export default {
     handleReset() {
       this.$refs.StatisticsSearchForm.resetFields()
     },
+    processDetailReq(req, pagination) {
+      req.data = {}
+    },
     processReq(req, pagination) {
       req.data = {
         maxResults: req.data.maxResults,

+ 3 - 33
src_product/iam/audit/work/projectchange/audit-projectchange-form.vue

@@ -431,7 +431,7 @@ export default {
         {
           title: '序号',
           dataIndex: 'sortNumber',
-          width: '80px',
+          width: '20px',
           customRender: (text, record, index) => `${index + 1}`,
         },
         {
@@ -441,48 +441,18 @@ export default {
         {
           title: '企业名称',
           dataIndex: 'name',
-          // sdClickable: true, // 列内容是否可点击
-          scopedSlots: { customRender: 'islink' },
+          width: '300px',
         },
         {
           title: '类型',
           dataIndex: 'category',
-          width: '160px',
-        },
-        {
-          title: '统一社会信用代码',
-          dataIndex: 'code',
-          width: '180px',
+          width: '150px',
         },
         {
           title: '住所',
           dataIndex: 'address',
-          width: '70px',
-        },
-        {
-          title: '企业状态',
-          sorter: true,
-          dataIndex: 'status',
           width: '100px',
         },
-        {
-          title: '当前参与项目',
-          dataIndex: 'joinProject',
-          width: '150px',
-          scopedSlots: { customRender: 'isProject' },
-        },
-        {
-          title: '编制人员',
-          dataIndex: 'authName',
-          width: '100px',
-        },
-        {
-          title: '编制日期',
-          dataIndex: 'authTime',
-          sorter: true,
-          defaultSortOrder: 'descend',
-          sdRender: TableColumnTypes.date,
-        },
       ],
       expressions: [],
       externalUnitIds: [],

+ 2 - 2
src_product/iam/audit/work/report/find/iam-audit-find-list.vue

@@ -308,8 +308,8 @@ export default {
             })
           } else {
             if (
-              readAuthorityCodes != null &&
-              readAuthorityCodes.indexOf(getUserInfo().account) > -1 &&
+              // readAuthorityCodes != null &&
+              // readAuthorityCodes.indexOf(getUserInfo().account) > -1 &&
               !isProjectUser
             ) {
               this.actions = []

+ 2 - 2
src_product/iam/audit/work/report/find/xm-audit-find-list.vue

@@ -305,8 +305,8 @@ export default {
             })
           } else {
             if (
-              readAuthorityCodes != null &&
-              readAuthorityCodes.indexOf(getUserInfo().account) > -1 &&
+              // readAuthorityCodes != null &&
+              // readAuthorityCodes.indexOf(getUserInfo().account) > -1 &&
               !isProjectUser
             ) {
               this.actions = []

+ 35 - 35
src_product/iam/audit/work/report/report/iam-audit-report-list.vue

@@ -316,40 +316,40 @@ export default {
     AuditService.getDictionary('REPORT_TYPE').then((res) => {
       this.auditTypeOptions = res.data
     })
-    auditProjectchangeService.checkOperatorAuthority(this.projectId).then((res) => {
-      if (res.status === 200) {
-        if (!res.data) {
-          this.actions1 = []
-        } else {
-          this.actions1 = [
-            {
-              label: '删除',
-              id: 'delete',
-              permission: null,
-              type: TableActionTypes.ex.delete,
-              callback: () => {
-                const url = '/sd-flow-guide?code=PRODUCT_IAM_SJBG&projectId=' + this.projectId // 新页面要打开的路由地址
-                crossWindowWatcher.waitForChanged(url).then((refreshFlag) => {
-                  if (refreshFlag) {
-                    // 这里写或者调刷新的方法
-                    this.refresh()
-                  }
-                })
-              },
-            },
-            {
-              label: '新建',
-              id: 'new',
-              type: TableActionTypes.primary, // 新建按钮,不需要回调,自动处理
-              permission: null, // 权限控制
-              callback: () => {
-                this.createAuditReport()
-              },
-            },
-          ]
-        }
-      }
-    })
+    // auditProjectchangeService.checkOperatorAuthority(this.projectId).then((res) => {
+    //   if (res.status === 200) {
+    //     if (!res.data) {
+    //       this.actions1 = []
+    //     } else {
+    this.actions1 = [
+      {
+        label: '删除',
+        id: 'delete',
+        permission: null,
+        type: TableActionTypes.ex.delete,
+        callback: () => {
+          const url = '/sd-flow-guide?code=PRODUCT_IAM_SJBG&projectId=' + this.projectId // 新页面要打开的路由地址
+          crossWindowWatcher.waitForChanged(url).then((refreshFlag) => {
+            if (refreshFlag) {
+              // 这里写或者调刷新的方法
+              this.refresh()
+            }
+          })
+        },
+      },
+      {
+        label: '新建',
+        id: 'new',
+        type: TableActionTypes.primary, // 新建按钮,不需要回调,自动处理
+        permission: null, // 权限控制
+        callback: () => {
+          this.createAuditReport()
+        },
+      },
+    ]
+    //     }
+    //   }
+    // })
     this.isShowBtn()
   },
   methods: {
@@ -375,7 +375,7 @@ export default {
           const readAuthorityCodes = res.data.readAuthorityCodes
           const userList = res.data.iamProjectUserList
           var isProjectUser = this.inProjectUser(userList)
-          if (['05', '06', '07'].includes(itemStatus)) {
+          if (['05', '06', '07'].includes(itemStatus) || !isProjectUser) {
             this.actions1 = []
           } else {
             // if (

+ 4 - 0
src_product/iam/audit/workbench/_import-components/iam-todo-tabs-import.js

@@ -2,11 +2,15 @@
 // 此文件自动生成,不要手工修改
 import Vue from 'vue'
 import {
+Button,
 Icon,
+Popover,
 Tabs,
 } from 'ant-design-vue'
 
+Vue.use(Button)
 Vue.use(Icon)
+Vue.use(Popover)
 Vue.use(Tabs)
 
 export default {

+ 56 - 2
src_product/iam/audit/workbench/iam-todo-tabs.vue

@@ -1,8 +1,26 @@
 <template>
   <a-tabs ref="tabs" v-model="type" :class="[$style.todotabs, 'sd-has-table']">
     <template>
+      <span slot="tabBarExtraContent" :class="$style.morebtn">
+        <a-popover placement="bottom">
+          <template v-slot:content>
+            <a-button type="text" @click="viewByFlow('', type)">所有流程</a-button><br />
+            <div v-for="tf in todolistFlow" :key="tf.flowId">
+              <a-button type="text" @click="viewByFlow(tf.flowId, type)"
+                >{{ tf.flowname }}({{ tf.amount }})</a-button
+              >
+            </div>
+          </template>
+          <template v-slot:title>
+            <span>流程分组</span>
+          </template>
+          <a-button v-show="type === 'todo' || type === 'processed'" type="text">
+            <a-icon type="sd-audit-advancesearch" theme="filled" />
+          </a-button>
+        </a-popover>
+      </span>
+      &nbsp;
       <a-icon slot="tabBarExtraContent" :class="$style.syncbtn" type="sync" @click="refresh" />
-
       <span slot="tabBarExtraContent" :class="$style.morebtn" @click="mored(type)">查看更多 ></span>
     </template>
     <a-tab-pane key="todo" :class="$style.panel">
@@ -53,6 +71,7 @@ import list from '@/todo/sd-todo-list'
 import components from './_import-components/iam-todo-tabs-import'
 import listCard from './todo/iam-todo-list-card.vue'
 
+import axios from '@/common/services/axios-instance'
 export default {
   name: 'IamTodoTabs',
   components: {
@@ -69,6 +88,8 @@ export default {
       informData: [], // 待阅数据
       repliedData: [], // 已阅数据
       userInfo: null,
+      todolistFlow: [],
+      todolistFilterFlowId: '',
     }
   },
   created() {
@@ -78,8 +99,30 @@ export default {
     this.getHandleListFn('processed') // 已办
     this.getHandleListFn('inform') // 待阅
     this.getHandleListFn('replied-inform') // 已阅
+    this.getTodoListFlowInfo('todo')
   },
   methods: {
+    viewByFlow(flowId, type) {
+      if (flowId) {
+        this.todolistFilterFlowId = flowId
+      } else {
+        this.todolistFilterFlowId = ''
+      }
+      this.getHandleListFn(type)
+    },
+    getTodoListFlowInfo(type) {
+      if (type === 'todo') {
+        axios({
+          url: 'api/xcoa-mobile/v1/spic-common/statisticsTodolistGroupbyFlow',
+          method: 'get',
+        }).then((res) => {
+          if (res.data) {
+            this.todolistFlow = res.data
+            console.log(res.data)
+          }
+        })
+      }
+    },
     mored(type) {
       if (type === 'todo' || type === 'processed') {
         this.$router.push(`/sd-frame/sd-mytodolist?type=${type}`)
@@ -95,7 +138,18 @@ export default {
     getHandleListFn(listType) {
       let expressions
       if (listType === 'todo' || listType === 'processed') {
-        expressions = []
+        if (this.todolistFilterFlowId) {
+          expressions = [
+            {
+              dataType: 'str',
+              name: 'flowId',
+              op: 'like',
+              stringValue: this.todolistFilterFlowId + '%',
+            },
+          ]
+        } else {
+          expressions = []
+        }
       } else {
         expressions = [
           {

+ 0 - 1
src_product/iam/components/_import-components/audit-advanced-export-import.js

@@ -10,4 +10,3 @@ Vue.use(Button)
 export default {
   
 }
-console.warn('文件名 audit-advanced-export.vue 不符合命名规则,应该以 iam 开头')

+ 0 - 1
src_product/iam/components/_import-components/audit-advanced-import-import.js

@@ -17,4 +17,3 @@ Vue.use(Modal)
 export default {
   SdAttachment,
 }
-console.warn('文件名 audit-advanced-import.vue 不符合命名规则,应该以 iam 开头')

+ 9 - 1
src_product/iam/components/audit-advanced-export.vue

@@ -95,7 +95,7 @@ export default {
         }
       })
     },
-    exportdata() {
+    exportdata(containsSub) {
       let selectedRowKeys = []
       if (this.exclebxh) {
         selectedRowKeys = this.$parent.$parent.$refs[`${this.tableId}`].getSelectedRowKeys()
@@ -110,6 +110,14 @@ export default {
       let exs = []
       if (this.expressions !== null) {
         exs = this.expressions
+        const p = exs.find((e) => e.name === 'parentId')
+        if (p && p.stringValue && p.stringValue === 564) {
+          if (containsSub) {
+            p.stringValue = '' + p.stringValue + '1'
+          } else {
+            p.stringValue = '' + p.stringValue + '0'
+          }
+        }
       }
       const params = {
         configId: this.configId,

+ 11 - 7
src_product/iam/components/audit-advanced-import.vue

@@ -43,7 +43,7 @@
             />
             <a-button
               v-if="templategroupId && mblink && !hasattach"
-              style="padding-left: 0;"
+              style="padding-left: 0"
               icon="sd-download"
               type="link"
               @click="fnDownloadFile"
@@ -95,7 +95,7 @@
 
 <script>
 import axios from '@/common/services/axios-instance'
-import { Message } from 'ant-design-vue'
+import { Message, Modal } from 'ant-design-vue'
 import AuditAdvancedImportService from './audit-advanced-import-service'
 import components from './_import-components/audit-advanced-import-import'
 import download from '@/common/services/download'
@@ -231,13 +231,15 @@ export default {
         .then((res) => {
           this.$emit('changeSpinning', true) // 修改Spinning显示状态
           if (res.data.flag === false) {
-            Message.error('导入数据失败!')
             this.isErrorInfo = true
             this.errorInfo = res.data.data
             console.log(this.errorInfo)
             return false
           } else {
-            Message.success('导入成功!')
+            Modal.success({
+              title: () => '数据导入',
+              content: () => '导入成功!',
+            })
             this.$emit('importfromfileAfter') // 调用导入成功回调函数
             if (this.$parent.$parent.$refs[`${this.tableId}`]) {
               this.$parent.$parent.$refs[`${this.tableId}`].refresh()
@@ -246,11 +248,13 @@ export default {
         })
         .catch((err) => {
           this.$emit('changeSpinning', true) // 修改Spinning显示状态
-          // Message.error(err)
+          this.isErrorInfo = true
+          this.errorInfo = []
           if (err.response.data.message === '字段被审计单位:auditedUnit不能为空') {
-            Message.error('被审计单位名称填写错误,请核对后导入')
+            this.errorInfo.push('被审计单位名称填写错误,请核对后导入')
           } else {
-            Message.error(err)
+            const message = err + ' : ' + err.response.data.message
+            this.errorInfo.push(message)
           }
         })
       this.modalImport.visible = false