index.vue 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355
  1. <template>
  2. <div class="ele-body">
  3. <el-card shadow="never" v-loading="loading">
  4. <search @search="reload" />
  5. <ele-pro-table
  6. ref="table"
  7. :columns="columns"
  8. :datasource="datasource"
  9. :cache-key="cacheKeyUrl"
  10. >
  11. <template v-slot:toolbar>
  12. <el-button
  13. size="small"
  14. type="primary"
  15. icon="el-icon-plus"
  16. class="ele-btn-icon"
  17. @click="addPermit(null, 'add', '新增记录规则')"
  18. >
  19. 新建
  20. </el-button>
  21. </template>
  22. <!-- <template v-slot:status="{ row }"> </template> -->
  23. <template v-slot:action="{ row }">
  24. <el-link
  25. type="primary"
  26. :underline="false"
  27. icon="el-icon-document-copy"
  28. @click="addPermit(row, 'clone', '克隆记录规则')"
  29. >
  30. 克隆
  31. </el-link>
  32. <el-link
  33. v-if="row.publishStatus === 1 && !row.isUpdatedVersion"
  34. type="success"
  35. :underline="false"
  36. icon="el-icon-finished"
  37. @click="addPermit(row, 'change', '变更记录规则')"
  38. >
  39. 变更
  40. </el-link>
  41. <!-- <el-popconfirm
  42. v-if="row.publishStatus == 1"
  43. class="ele-action"
  44. title="确定要撤销此条数据吗?"
  45. @confirm="recordrulesRevokePublish(row)"
  46. >
  47. <template v-slot:reference>
  48. <el-link type="warning" :underline="false" icon="el-icon-delete">
  49. 撤销
  50. </el-link>
  51. </template>
  52. </el-popconfirm> -->
  53. <el-link
  54. v-if="row.publishStatus != 1"
  55. type="primary"
  56. :underline="false"
  57. icon="el-icon-edit"
  58. @click="addPermit(row, 'edit', '修改记录规则')"
  59. >
  60. 修改
  61. </el-link>
  62. <el-popconfirm
  63. v-if="row.publishStatus != 1"
  64. class="ele-action"
  65. title="确定要发布此条数据吗?"
  66. @confirm="publish(row)"
  67. >
  68. <template v-slot:reference>
  69. <el-link
  70. type="primary"
  71. :underline="false"
  72. icon="el-icon-position"
  73. >
  74. 发布
  75. </el-link>
  76. </template>
  77. </el-popconfirm>
  78. <el-link
  79. v-if="row.publishStatus == 1"
  80. type="primary"
  81. :underline="false"
  82. icon="el-icon-tickets"
  83. @click="openHistory(row)"
  84. >
  85. 历史版本
  86. </el-link>
  87. <el-popconfirm
  88. v-if="row.publishStatus != 1"
  89. class="ele-action"
  90. title="确定要删除此条数据吗?"
  91. @confirm="remove(row)"
  92. >
  93. <template v-slot:reference>
  94. <el-link type="danger" :underline="false" icon="el-icon-delete">
  95. 删除
  96. </el-link>
  97. </template>
  98. </el-popconfirm>
  99. </template>
  100. <template v-slot:code="{ row }">
  101. <el-link
  102. type="primary"
  103. :underline="false"
  104. @click="addPermit(row, 'detail', '记录规则详情')"
  105. >{{ row.code }}</el-link
  106. >
  107. </template>
  108. </ele-pro-table>
  109. </el-card>
  110. <permitAdd ref="permitAddRef" @reload="reload" />
  111. <historyModal ref="historyModalRef" />
  112. </div>
  113. </template>
  114. <script>
  115. import search from './components/search.vue';
  116. import permitAdd from './components/permitAdd.vue';
  117. import {
  118. recordrulesPage,
  119. recordrulesDeletes,
  120. recordrulesPublish,
  121. recordrulesRevokePublish
  122. } from '@/api/recordrules/index';
  123. import tabMixins from '@/mixins/tableColumnsMixin';
  124. import dictMixins from '@/mixins/dictMixins';
  125. import historyModal from './components/historyModal.vue';
  126. export default {
  127. components: { search, permitAdd, historyModal },
  128. mixins: [tabMixins, dictMixins],
  129. computed: {
  130. columns() {
  131. return [
  132. {
  133. columnKey: 'index',
  134. label: '序号',
  135. type: 'index',
  136. width: 55,
  137. align: 'center',
  138. showOverflowTooltip: true,
  139. fixed: 'left'
  140. },
  141. {
  142. prop: 'code',
  143. label: '记录规则编码',
  144. align: 'center',
  145. showOverflowTooltip: true,
  146. minWidth: 110,
  147. slot: 'code'
  148. },
  149. {
  150. prop: 'name',
  151. label: '记录规则名称',
  152. align: 'center',
  153. showOverflowTooltip: true,
  154. minWidth: 110
  155. },
  156. {
  157. prop: 'classify',
  158. label: '记录规则分类',
  159. align: 'center',
  160. showOverflowTooltip: true,
  161. minWidth: 110,
  162. formatter: (row) => {
  163. return this.getDictValue('记录规则类型', row.classify);
  164. }
  165. },
  166. {
  167. prop: 'reportWorkType',
  168. label: '模块分类',
  169. align: 'center',
  170. showOverflowTooltip: true,
  171. minWidth: 110,
  172. formatter: (row) => {
  173. return this.getDictValue('记录规则报工类型', row.reportWorkType);
  174. }
  175. },
  176. {
  177. prop: 'version',
  178. label: '版本号',
  179. align: 'center',
  180. showOverflowTooltip: true,
  181. minWidth: 110,
  182. formatter: (row) => {
  183. return `${row.versionSymbol}${row.bigVersion}${row.versionMark}${row.smallVersion}`;
  184. }
  185. },
  186. {
  187. prop: 'fromName',
  188. label: '来源版本',
  189. align: 'center',
  190. showOverflowTooltip: true,
  191. minWidth: 150
  192. },
  193. {
  194. prop: 'startDate',
  195. label: '启用日期',
  196. align: 'center',
  197. showOverflowTooltip: true,
  198. minWidth: 110,
  199. formatter: (row) => {
  200. return this.$util.toDateString(row.startDate, 'yyyy-MM-dd');
  201. }
  202. },
  203. {
  204. prop: 'stopDate',
  205. label: '停用日期',
  206. align: 'center',
  207. showOverflowTooltip: true,
  208. minWidth: 110,
  209. formatter: (row) => {
  210. return this.$util.toDateString(row.stopDate, 'yyyy-MM-dd');
  211. }
  212. },
  213. {
  214. prop: '',
  215. label: '周期',
  216. align: 'center',
  217. showOverflowTooltip: true,
  218. formatter: (row) => {
  219. return (
  220. row.frequencyValue +
  221. this.getDictValue('规则周期', row.frequencyUnit)
  222. );
  223. }
  224. },
  225. {
  226. prop: 'createUserName',
  227. label: '创建人',
  228. align: 'center',
  229. showOverflowTooltip: true,
  230. minWidth: 110
  231. },
  232. {
  233. prop: 'createTime',
  234. label: '创建时间',
  235. align: 'center',
  236. showOverflowTooltip: true,
  237. minWidth: 110
  238. },
  239. {
  240. prop: 'enable',
  241. label: '是否启用',
  242. align: 'center',
  243. showOverflowTooltip: true,
  244. minWidth: 110,
  245. formatter: (row) => {
  246. return row.enable ? '启用' : '停用';
  247. }
  248. },
  249. {
  250. prop: 'publishStatus',
  251. label: '状态',
  252. align: 'center',
  253. showOverflowTooltip: true,
  254. minWidth: 110,
  255. formatter: (row) => {
  256. switch (row.publishStatus) {
  257. case 0:
  258. return '草稿';
  259. case 1:
  260. return '已发布';
  261. case 2:
  262. return '已撤销';
  263. default:
  264. return '';
  265. }
  266. }
  267. },
  268. {
  269. columnKey: 'action',
  270. label: '操作',
  271. width: 260,
  272. align: 'center',
  273. resizable: false,
  274. slot: 'action',
  275. fixed: 'right'
  276. }
  277. ];
  278. }
  279. },
  280. data() {
  281. return {
  282. loading: false,
  283. cacheKeyUrl: 'maindata-25922-recordrules-index'
  284. };
  285. },
  286. created() {
  287. this.requestDict('记录规则类型');
  288. this.requestDict('规则周期');
  289. },
  290. methods: {
  291. addPermit(row, type, title) {
  292. this.$refs.permitAddRef.open(row, type, title);
  293. },
  294. async remove(row) {
  295. try {
  296. console.log('row', row);
  297. await recordrulesDeletes([row.id]);
  298. this.$message.success('删除成功');
  299. this.reload();
  300. } catch (error) {
  301. this.$message.error('删除失败');
  302. }
  303. },
  304. /* 表格数据源 */
  305. datasource({ page, limit, where, order }) {
  306. return recordrulesPage({ pageNum: page, size: limit, ...where });
  307. },
  308. /* 刷新表格 */
  309. reload(where) {
  310. this.$refs.table.reload({ page: 1, where });
  311. },
  312. // 发布
  313. async publish(row) {
  314. // 判断时间
  315. const startDate = new Date(row.startDate);
  316. const stopDate = new Date(row.stopDate);
  317. if (startDate >= stopDate) {
  318. return this.$message.warning('请先修改规则停用时间!');
  319. }
  320. try {
  321. await recordrulesPublish(row.id);
  322. this.$message.success('发布成功');
  323. this.reload();
  324. } catch (error) {
  325. this.$message.error('发布失败');
  326. }
  327. },
  328. // 撤销
  329. async recordrulesRevokePublish(row) {
  330. try {
  331. await recordrulesRevokePublish(row.id);
  332. this.$message.success('撤销成功');
  333. this.reload();
  334. } catch (error) {
  335. this.$message.error('撤销失败');
  336. }
  337. },
  338. // 历史版本
  339. openHistory(row) {
  340. this.$refs.historyModalRef.open(row.id);
  341. }
  342. }
  343. };
  344. </script>