km-knowledge-drafts.vue 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253
  1. <template>
  2. <div :class="$style.wrapHeight">
  3. <div :class="$style.rowHeight">
  4. <km-worktree
  5. ref="worktree"
  6. :data-type="activeKey"
  7. @treeSelectd="treeSelectd"
  8. @treeSelectValue="treeSelectValue"
  9. ></km-worktree>
  10. <div :class="$style.rightcard">
  11. <a-card>
  12. <sd-data-table
  13. v-if="treeId.draft !== ''"
  14. ref="draft"
  15. data-url="api/flow-mobile/v1/user-tasks/draft-with-trustor"
  16. :columns="columns"
  17. :actions="actions"
  18. :row-key="'instId'"
  19. show-selection
  20. :search-fields="['title']"
  21. :filter-expressions="expressions.draft"
  22. @rowClick="rowClick"
  23. @dataLoaded="tableDataLoaded"
  24. >
  25. <a slot="listTitle" slot-scope="text, record">
  26. {{ record.title }}
  27. <a-tooltip>
  28. <template slot="title">
  29. {{ record.groupPath }}
  30. </template>
  31. <a-tag v-if="record.srcTrustId" color="blue">兼</a-tag>
  32. </a-tooltip>
  33. </a>
  34. </sd-data-table>
  35. <sd-oa-table
  36. v-else
  37. form-id="kmKnowledge"
  38. page-id="knowledge/kmAtom/kmAtom"
  39. :columns="columns2"
  40. :actions="actions"
  41. :filter-expressions="atomExpressions"
  42. show-selection
  43. :search-fields="['redheadName']"
  44. @formBtnClick="formBtnClick"
  45. >
  46. <template v-slot:form="{ model }">
  47. <km-atom-table ref="atomTable" :model="model" />
  48. </template>
  49. </sd-oa-table>
  50. </a-card>
  51. </div>
  52. </div>
  53. </div>
  54. </template>
  55. <script>
  56. import storeMixin from '@/common/store-mixin'
  57. import { Modal } from 'ant-design-vue'
  58. import TableActionTypes from '@/common/services/table-action-types'
  59. import TableColumnTypes from '@/common/services/table-column-types'
  60. import FlowcenterService from '@/flowcenter/flowcenter-service'
  61. import flowcenter from '@/flowcenter/sd-flowcenter-mixins'
  62. import KmWorktree from '../../components/km-knowledge-draftstree'
  63. import KmAtomTable from '../knowledge-base/km-atom-table'
  64. import components from './_import-components/km-knowledge-drafts-import'
  65. const columns = [
  66. {
  67. title: '业务类型',
  68. dataIndex: 'appCat',
  69. sdCandidate: true,
  70. },
  71. {
  72. title: '标题',
  73. dataIndex: 'title',
  74. sdClickable: true,
  75. scopedSlots: { customRender: 'listTitle' },
  76. },
  77. {
  78. title: '创建时间',
  79. dataIndex: 'draftDate',
  80. sdRender: TableColumnTypes.dateTime,
  81. sorter: true,
  82. },
  83. ]
  84. const columns2 = [
  85. {
  86. title: '标题',
  87. dataIndex: 'title',
  88. sdClickable: true,
  89. },
  90. {
  91. title: '业务类型',
  92. dataIndex: 'categoryName',
  93. scopedSlots: { customRender: 'listTitle' },
  94. },
  95. {
  96. title: '创建时间',
  97. dataIndex: 'creationTime',
  98. sdRender: TableColumnTypes.dateTime,
  99. sorter: true,
  100. },
  101. ]
  102. export default {
  103. name: 'KmKnowledgeDrafts',
  104. metaInfo: {
  105. title: '草稿箱',
  106. },
  107. components: {
  108. ...components,
  109. 'km-worktree': KmWorktree,
  110. 'km-atom-table': KmAtomTable,
  111. },
  112. mixins: [storeMixin, flowcenter],
  113. data() {
  114. return {
  115. show: false,
  116. activeKey: 'draft',
  117. columns,
  118. columns2,
  119. expressions: { draft: [] },
  120. treeId: { draft: '' },
  121. defaultFilter: {
  122. draft: { dataType: 'str', name: 'status', op: 'ne', stringValue: '2' },
  123. },
  124. actions: [
  125. {
  126. label: '删除',
  127. id: 'delete',
  128. type: TableActionTypes.batch, // 批处理按钮,选中文档时才能点击
  129. permission: null,
  130. callback: (keys) => {
  131. this.deleteRows(keys)
  132. },
  133. },
  134. ],
  135. }
  136. },
  137. computed: {
  138. atomExpressions() {
  139. return [
  140. {
  141. dataType: 'str',
  142. name: 'creatorAccount',
  143. op: 'eq',
  144. stringValue: this.userInfo.account,
  145. },
  146. {
  147. dataType: 'int',
  148. name: 'type',
  149. op: 'eq',
  150. intValue: 1,
  151. },
  152. {
  153. dataType: 'int',
  154. name: 'atomState',
  155. op: 'eq',
  156. intValue: 0, // 1:已发布,0:草稿
  157. },
  158. ]
  159. },
  160. },
  161. methods: {
  162. // 保存和发布
  163. formBtnClick(evt, btn, { form, recordId }) {
  164. switch (btn.buttonId) {
  165. case 'save': {
  166. evt.waitUntil(
  167. new Promise((resolve, reject) => {
  168. form.setFieldValue('atomState', 1)
  169. resolve()
  170. })
  171. )
  172. break
  173. }
  174. case 'keep': {
  175. evt.waitUntil(
  176. new Promise((resolve, reject) => {
  177. if (form.getFieldValue('atomState') === undefined) {
  178. form.setFieldValue('atomState', 0)
  179. }
  180. form.saveBtnClick()
  181. resolve()
  182. })
  183. )
  184. break
  185. }
  186. default:
  187. break
  188. }
  189. },
  190. // 删除数据
  191. deleteRows(selectedRowKeys) {
  192. Modal.confirm({
  193. title: '你确定删除这项内容吗?',
  194. content: '删除这条数据后,就无法恢复初始的状态。',
  195. okText: '删除',
  196. okType: 'danger',
  197. onOk: () => {
  198. const params = {
  199. flowCallbackBeanName: 'formBeanCleanerCallBack',
  200. processInstanceIds: selectedRowKeys.join(','),
  201. }
  202. FlowcenterService.fnDarftsDelete(params).then((res) => {
  203. if (res.status === 200) {
  204. this.$refs.draft.clearSelection(true)
  205. this.refresh()
  206. }
  207. })
  208. },
  209. })
  210. },
  211. treeSelectValue(k, v) {
  212. if (k.node !== undefined) {
  213. if (k.node.dataRef.id === '0atom') {
  214. this.treeId.draft = ''
  215. }
  216. }
  217. },
  218. knowledageView(record) {
  219. // window.open(`#/km-knowledage-view?id=${record.id}&title=${record.title}`, '_blank')
  220. },
  221. },
  222. }
  223. </script>
  224. <style module lang="scss">
  225. @use '@/common/design' as *;
  226. .wrap-height {
  227. height: 100%;
  228. .row-height {
  229. display: flex;
  230. flex: auto;
  231. height: 100%;
  232. .rightcard {
  233. flex: 1;
  234. width: calc(100% - 20%);
  235. height: 100%;
  236. }
  237. }
  238. }
  239. .editor {
  240. margin: 0 auto;
  241. :global(.ql-editor) {
  242. min-height: 300px;
  243. line-height: 1.5;
  244. }
  245. }
  246. </style>