plm前端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1258 lines
42 KiB

  1. <template>
  2. <div class="mod-config">
  3. <!-- 查询条件 -->
  4. <el-form :inline="true" label-position="top" :model="searchData" @keyup.enter.native="getDataList()">
  5. <el-form-item :label="'流程名称'">
  6. <el-input v-model="searchData.workflowId" clearable style="width: 160px"></el-input>
  7. </el-form-item>
  8. <el-form-item :label="'菜单名称'">
  9. <el-input v-model="searchData.name" clearable style="width: 160px"></el-input>
  10. </el-form-item>
  11. <el-form-item :label="'状态'">
  12. <el-select clearable v-model="searchData.status" style="width: 120px">
  13. <el-option label="启用" value="Y"></el-option>
  14. <el-option label="停用" value="N"></el-option>
  15. </el-select>
  16. </el-form-item>
  17. <el-form-item :label="' '">
  18. <el-button @click="getDataList()">查询</el-button>
  19. <el-button type="primary" @click="addModal()">新增</el-button>
  20. <el-button type="primary" @click="delModal()">删除</el-button>
  21. <download-excel
  22. :fields="fields()"
  23. :data="exportData"
  24. type="xls"
  25. :name="exportName"
  26. :header="exportHeader"
  27. :footer="exportFooter"
  28. :fetch="createExportData"
  29. :before-generate="startDownload"
  30. :before-finish="finishDownload"
  31. worksheet="导出信息"
  32. class="el-button el-button--primary el-button--medium">
  33. {{ "导出" }}
  34. </download-excel>
  35. </el-form-item>
  36. </el-form>
  37. <!-- 列表 -->
  38. <el-table
  39. :height="height"
  40. :data="dataList"
  41. border
  42. ref="requestTable"
  43. :row-style="rowStyle"
  44. @row-click="requestClickRow"
  45. @selection-change="selectionRequest"
  46. @current-change="changeCurrentRow"
  47. style="width: 100%;">
  48. <el-table-column
  49. type="selection"
  50. header-align="center"
  51. align="center"
  52. :selectable="selectFlag"
  53. width="50">
  54. </el-table-column>
  55. <el-table-column
  56. v-for="(item,index) in columnList" :key="index"
  57. :sortable="item.columnSortable"
  58. :prop="item.columnProp"
  59. :header-align="item.headerAlign"
  60. :show-overflow-tooltip="item.showOverflowTooltip"
  61. :align="item.align"
  62. :fixed="item.fixed === ''?false:item.fixed"
  63. :min-width="item.columnWidth"
  64. :label="item.columnLabel">
  65. <template slot-scope="scope">
  66. <span v-if="!item.columnHidden">{{ scope.row[item.columnProp] }}</span>
  67. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  68. </template>
  69. </el-table-column>
  70. <el-table-column
  71. fixed="right"
  72. header-align="center"
  73. align="center"
  74. width="100"
  75. label="操作">
  76. <template slot-scope="scope">
  77. <el-link style="cursor: pointer" @click="updateModal(scope.row)">编辑</el-link>
  78. </template>
  79. </el-table-column>
  80. </el-table>
  81. <selectDiv ref="selectDiv"></selectDiv>
  82. <!-- 分页插件 -->
  83. <el-pagination style="margin-top: 0px"
  84. @size-change="sizeChangeHandle"
  85. @current-change="currentChangeHandle"
  86. :current-page="pageIndex"
  87. :page-sizes="[20, 50, 100, 200, 500]"
  88. :page-size="pageSize"
  89. :total="totalPage"
  90. layout="total, sizes, prev, pager, next, jumper">
  91. </el-pagination>
  92. <!-- 流程维护模态框 -->
  93. <el-dialog title="流程维护" top="29vh" :close-on-click-modal="false" v-drag :visible.sync="modalFlag" width="510px">
  94. <!-- <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;">
  95. <el-form-item label="分类编码" prop="classificationNo">
  96. <el-input v-model="modalData.classificationNo" clearable style="width: 120px" disabled></el-input>
  97. </el-form-item>
  98. <el-form-item label="分类名称" prop="classificationName" :rules="rules.classificationName" style="margin-left: -10px">
  99. <el-input v-model="modalData.classificationName" clearable style="width: 330px"></el-input>
  100. </el-form-item>
  101. </el-form>-->
  102. <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;">
  103. <el-form-item prop="workflowId" :rules="rules.workflowId">
  104. <span style="cursor: pointer" v-if="modalData.flag==='1'" slot="label" @click="getBaseList(1015)"><a herf="#">流程ID</a></span>
  105. <span style="cursor: pointer" v-else slot="label" >流程ID</span>
  106. <el-input v-model="modalData.workflowId" style="width: 120px" :disabled="maintenanceFlag"></el-input>
  107. </el-form-item>
  108. <el-form-item label="流程名称" style="margin-left: -10px">
  109. <el-input v-model="modalData.workflowname" clearable style="width: 330px" disabled></el-input>
  110. </el-form-item>
  111. </el-form>
  112. <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;">
  113. <el-form-item prop="menuId" :rules="rules.menuId">
  114. <span style="cursor: pointer" slot="label" v-if="modalData.flag==='1'" @click="getBaseList(1014)"><a herf="#">菜单ID</a></span>
  115. <span style="cursor: pointer" slot="label" v-else >菜单ID</span>
  116. <el-input v-model="modalData.menuId" style="width: 120px" :disabled="maintenanceFlag"></el-input>
  117. </el-form-item>
  118. <el-form-item label="菜单名称" style="margin-left: -10px">
  119. <el-input v-model="modalData.name" clearable style="width: 330px" disabled></el-input>
  120. </el-form-item>
  121. </el-form>
  122. <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;">
  123. <el-form-item label="状态" prop="status" :rules="rules.status">
  124. <dict-data-select v-model="modalData.status" clearable dict-type="sys_status"
  125. :use-default-value="false" style="width: 120px"></dict-data-select>
  126. </el-form-item>
  127. <el-form-item style="margin-left: -10px;">
  128. <span style="cursor: pointer" slot="label" >备注</span>
  129. <el-input v-model="modalData.remark" style="width: 330px"></el-input>
  130. </el-form-item>
  131. </el-form>
  132. <el-footer style="height:35px;margin-top: 25px;text-align:center">
  133. <el-button type="primary" @click="saveData()">保存</el-button>
  134. <el-button type="primary" @click="modalFlag = false">关闭</el-button>
  135. </el-footer>
  136. </el-dialog>
  137. <!-- 页签 -->
  138. <el-tabs v-model="activeTable" style="width: 100%" :style="{height: this.secondHeight + 'px'}" type="border-card" @tab-click="tabClick" class="customer-tab">
  139. <!-- 流程节点页签 -->
  140. <el-tab-pane label="流程节点" name="node_item">
  141. <!-- <el-form label-position="top" style="margin-top: 2px; margin-left: 2px;">
  142. <el-button type="primary" @click="addOrDelItem">新增</el-button>
  143. <el-button type="primary" @click="updateItemValue">编辑</el-button>
  144. </el-form>-->
  145. <el-table
  146. :data="nodeList"
  147. :height="secondHeight - 60"
  148. border
  149. style="width: 100%;">
  150. <el-table-column
  151. v-for="(item,index) in columnNodeList" :key="index"
  152. :sortable="item.columnSortable"
  153. :prop="item.columnProp"
  154. :header-align="item.headerAlign"
  155. :show-overflow-tooltip="item.showOverflowTooltip"
  156. :align="item.align"
  157. :fixed="item.fixed==''?false:item.fixed"
  158. :min-width="item.columnWidth"
  159. :label="item.columnLabel">
  160. <template slot-scope="scope">
  161. <span v-if="!item.columnHidden">{{scope.row[item.columnProp]}}</span>
  162. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  163. </template>
  164. </el-table-column>
  165. <el-table-column
  166. fixed="right"
  167. header-align="center"
  168. align="center"
  169. width="100"
  170. label="操作">
  171. <template slot-scope="scope">
  172. <el-link style="cursor: pointer" @click="subDetailModal(scope.row)">出口配置</el-link>
  173. </template>
  174. </el-table-column>
  175. </el-table>
  176. </el-tab-pane>
  177. </el-tabs>
  178. <el-dialog title="出口配置" :close-on-click-modal="false" v-drag :visible.sync="subDetailFlag" width="1021px">
  179. <el-form :inline="true" label-position="top" :model="nodeCurrentRow" style="margin-top: -5px;">
  180. <el-form-item label="流程名称" style="">
  181. <el-input v-model="nodeCurrentRow.workflowname" clearable style="width: 210px" readonly></el-input>
  182. </el-form-item>
  183. <el-form-item label="节点名称" style="margin-left: -5px">
  184. <el-input v-model="nodeCurrentRow.nodeName" clearable style="width: 210px" readonly></el-input>
  185. </el-form-item>
  186. </el-form>
  187. <el-button type="success" icon="el-icon-plus" size="mini" @click="handleAddBtn()">添加</el-button>
  188. <el-button type="danger" icon="el-icon-delete" size="mini" @click="handleDeleteBtn()">删除</el-button>
  189. <div class="rq ">
  190. <el-table
  191. :height="400"
  192. :data="tableData"
  193. border
  194. :row-class-name="rowClassName"
  195. @selection-change="handleDetailSelectionChange"
  196. style="width: 100%;">
  197. <el-table-column type="selection" align="center" width="50"></el-table-column>
  198. <el-table-column label="序号" align="center" prop="xh" width="50"></el-table-column>
  199. <el-table-column prop="plmField" header-align="center" align="center" :required="true" label="PLM字段名" width="150">
  200. <template slot-scope="{row}">
  201. <el-input :ref="`${row.xh-1}` + `a`" v-model="tableData[row.xh-1].plmField" placeholder="请输入PLM字段名"></el-input>
  202. </template>
  203. </el-table-column>
  204. <el-table-column prop="oaField" header-align="center" align="center" :required="true" label="OA字段名" width="150">
  205. <template slot-scope="{row}">
  206. <el-input :ref="`${row.xh-1}` + `b`" v-model="tableData[row.xh-1].oaField" placeholder="请输入OA字段名"></el-input>
  207. </template>
  208. </el-table-column>
  209. <el-table-column prop="fieldValue" header-align="center" align="center" :required="true" label="默认值" width="200">
  210. <template slot-scope="{row}">
  211. <el-input :ref="`${row.xh-1}` + `c`" v-model="tableData[row.xh-1].fieldValue" placeholder="请输入默认值"></el-input>
  212. </template>
  213. </el-table-column>
  214. <el-table-column prop="fieldDesc" header-align="center" align="center" :required="true" label="字段描述" width="200">
  215. <template slot-scope="{row}">
  216. <el-input :ref="`${row.xh-1}` + `c`" v-model="tableData[row.xh-1].fieldDesc" placeholder="请输入字段描述"></el-input>
  217. </template>
  218. </el-table-column>
  219. <el-table-column prop="remark" header-align="center" align="center" :required="true" label="备注" width="200">
  220. <template slot-scope="{row}">
  221. <el-input :ref="`${row.xh-1}` + `c`" v-model="tableData[row.xh-1].remark" placeholder="请输入备注"></el-input>
  222. </template>
  223. </el-table-column>
  224. </el-table>
  225. </div>
  226. <el-footer style="height:40px;margin-top: 10px;text-align:center">
  227. <el-button type="primary" @click="checkDataBySubDetail">保存</el-button>
  228. <el-button type="primary" @click="subDetailFlag = false">关闭</el-button>
  229. </el-footer>
  230. </el-dialog>
  231. <!-- chooseList模态框 -->
  232. <Chooselist ref="baseList" @getBaseData="getBaseData"></Chooselist>
  233. </div>
  234. </template>
  235. <script>
  236. import {
  237. getRequestMainData, // 查询流程绑定主表信息
  238. saveRequestHeader, // 新增流程绑定信息
  239. updateRequestHeader, // 修改流程绑定信息
  240. getNodeInfoByWorkflow,//获取流程节点信息
  241. deleteRequestHeader,//删除流程绑定信息
  242. getNodeDetail,//获取流程节点出口配置
  243. saveRequestNodeDetail,//保存流程节点出口配置
  244. deleteRequestNodeDetailByLine,//删除流程当前节点的全部出口配置
  245. } from '@/api/processManagement/processManagement.js'
  246. import Chooselist from '@/views/modules/common/Chooselist'
  247. import DictDataSelect from '../sys/dict-data-select.vue'
  248. export default {
  249. components: {
  250. DictDataSelect,
  251. Chooselist
  252. },
  253. watch: {
  254. searchData: {
  255. deep: true,
  256. handler: function (newV, oldV) {
  257. this.searchData.workflowname = this.searchData.workflowname.toUpperCase()
  258. }
  259. }
  260. },
  261. data () {
  262. return {
  263. // 导出
  264. exportData: [],
  265. exportName: '流程绑定信息' + this.dayjs().format('YYYYMMDDHHmmss'),
  266. exportHeader: ['流程绑定信息'],
  267. exportFooter: [],
  268. resultList: [],
  269. // ======== 行高 ========
  270. height: 200,
  271. secondHeight: 200,
  272. // ======== 分页 ========
  273. pageIndex: 1,
  274. pageSize: 50,
  275. totalPage: 0,
  276. // 条件查询
  277. searchData: {
  278. site: this.$store.state.user.site,
  279. workflowId: '',
  280. workflowname: '',
  281. name: '',
  282. page: 1,
  283. limit: 10
  284. },
  285. // 其它
  286. // 初始页签
  287. activeTable: 'node_item',
  288. // ======== 数据对象 ========
  289. modalData: {
  290. flag: '',
  291. site: this.$store.state.user.site,
  292. bu: '',
  293. buDesc: '',
  294. classificationNo: '',
  295. classificationName: '',
  296. menuId: '',
  297. name: '',
  298. workflowId: '',
  299. workflowname: '',
  300. status: '',
  301. remark: '',
  302. createBy: '',
  303. createDate: '',
  304. updateDate: '',
  305. updateBy: ''
  306. },
  307. // ======== 数据列表 ========
  308. dataList: [],
  309. checkedDetail: [],
  310. nodeList: [],
  311. tableData: [],
  312. // ======== 列表表头 ========
  313. columnList: [
  314. {
  315. userId: this.$store.state.user.name,
  316. functionId: 109001,
  317. serialNumber: '109001Table1Site',
  318. tableId: '109001Table1',
  319. tableName: '物料信息表',
  320. columnProp: 'site',
  321. headerAlign: 'center',
  322. align: 'center',
  323. columnLabel: 'Site',
  324. columnHidden: false,
  325. columnImage: false,
  326. columnSortable: false,
  327. sortLv: 0,
  328. status: true,
  329. fixed: '',
  330. columnWidth: 50
  331. }/*,
  332. {
  333. userId: this.$store.state.user.name,
  334. functionId: 109001,
  335. serialNumber: '109001Table1BuDesc',
  336. tableId: '109001Table1',
  337. tableName: '物料信息表',
  338. columnProp: 'buDesc',
  339. headerAlign: 'center',
  340. align: 'center',
  341. columnLabel: 'BU',
  342. columnHidden: false,
  343. columnImage: false,
  344. columnSortable: false,
  345. sortLv: 0,
  346. status: true,
  347. fixed: '',
  348. columnWidth: 100
  349. }*/,
  350. {
  351. userId: this.$store.state.user.name,
  352. functionId: 109001,
  353. serialNumber: '109001Table1ClassificationNo',
  354. tableId: '109001Table1',
  355. tableName: '物料信息表',
  356. columnProp: 'classificationNo',
  357. headerAlign: 'center',
  358. align: 'center',
  359. columnLabel: '分类编码',
  360. columnHidden: false,
  361. columnImage: false,
  362. columnSortable: false,
  363. sortLv: 0,
  364. status: true,
  365. fixed: '',
  366. columnWidth: 100
  367. }/*,
  368. {
  369. userId: this.$store.state.user.name,
  370. functionId: 109001,
  371. serialNumber: '109001Table1ClassificationName',
  372. tableId: '109001Table1',
  373. tableName: '物料信息表',
  374. columnProp: 'classificationName',
  375. headerAlign: 'center',
  376. align: 'center',
  377. columnLabel: '分类名称',
  378. columnHidden: false,
  379. columnImage: false,
  380. columnSortable: false,
  381. sortLv: 0,
  382. status: true,
  383. fixed: '',
  384. columnWidth: 120
  385. }*/,
  386. {
  387. userId: this.$store.state.user.name,
  388. functionId: 109001,
  389. serialNumber: '109001Table1Name',
  390. tableId: '109001Table1',
  391. tableName: '物料信息表',
  392. columnProp: 'name',
  393. headerAlign: 'center',
  394. align: 'center',
  395. columnLabel: '菜单名称',
  396. columnHidden: false,
  397. columnImage: false,
  398. columnSortable: false,
  399. sortLv: 0,
  400. status: true,
  401. fixed: '',
  402. columnWidth: 120
  403. },
  404. {
  405. userId: this.$store.state.user.name,
  406. functionId: 109001,
  407. serialNumber: '109001Table1WorkflowId',
  408. tableId: '109001Table1',
  409. tableName: '物料信息表',
  410. columnProp: 'workflowId',
  411. headerAlign: 'center',
  412. align: 'center',
  413. columnLabel: '流程ID',
  414. columnHidden: false,
  415. columnImage: false,
  416. columnSortable: false,
  417. sortLv: 0,
  418. status: true,
  419. fixed: '',
  420. columnWidth: 60
  421. },
  422. {
  423. userId: this.$store.state.user.name,
  424. functionId: 109001,
  425. serialNumber: '109001Table1Workflowname',
  426. tableId: '109001Table1',
  427. tableName: '物料信息表',
  428. columnProp: 'workflowname',
  429. headerAlign: 'center',
  430. align: 'center',
  431. columnLabel: '流程名称',
  432. columnHidden: false,
  433. columnImage: false,
  434. columnSortable: false,
  435. sortLv: 0,
  436. status: true,
  437. fixed: '',
  438. columnWidth: 150
  439. },
  440. {
  441. userId: this.$store.state.user.name,
  442. functionId: 109001,
  443. serialNumber: '109001Table1Status',
  444. tableId: '109001Table1',
  445. tableName: '物料信息表',
  446. columnProp: 'statusDesc',
  447. headerAlign: 'center',
  448. align: 'center',
  449. columnLabel: '状态',
  450. columnHidden: false,
  451. columnImage: false,
  452. columnSortable: false,
  453. sortLv: 0,
  454. status: true,
  455. fixed: '',
  456. columnWidth: 100
  457. },
  458. {
  459. userId: this.$store.state.user.name,
  460. functionId: 109001,
  461. serialNumber: '109001Table1Remark',
  462. tableId: '109001Table1',
  463. tableName: '物料信息表',
  464. columnProp: 'remark',
  465. headerAlign: 'center',
  466. align: 'center',
  467. columnLabel: '备注',
  468. columnHidden: false,
  469. columnImage: false,
  470. columnSortable: false,
  471. sortLv: 0,
  472. status: true,
  473. fixed: '',
  474. columnWidth: 150
  475. },
  476. {
  477. userId: this.$store.state.user.name,
  478. functionId: 109001,
  479. serialNumber: '109001Table1CreateBy',
  480. tableId: '109001Table1',
  481. tableName: '物料信息表',
  482. columnProp: 'createBy',
  483. headerAlign: 'center',
  484. align: 'center',
  485. columnLabel: '创建人',
  486. columnHidden: false,
  487. columnImage: false,
  488. columnSortable: false,
  489. sortLv: 0,
  490. status: true,
  491. fixed: '',
  492. columnWidth: 80
  493. },
  494. {
  495. userId: this.$store.state.user.name,
  496. functionId: 109001,
  497. serialNumber: '109001Table1CreateDate',
  498. tableId: '109001Table1',
  499. tableName: '物料信息表',
  500. columnProp: 'createDate',
  501. headerAlign: 'center',
  502. align: 'center',
  503. columnLabel: '创建时间',
  504. columnHidden: false,
  505. columnImage: false,
  506. columnSortable: false,
  507. sortLv: 0,
  508. status: true,
  509. fixed: '',
  510. columnWidth: 120
  511. },
  512. {
  513. userId: this.$store.state.user.name,
  514. functionId: 109001,
  515. serialNumber: '109001Table1UpdateBy',
  516. tableId: '109001Table1',
  517. tableName: '物料信息表',
  518. columnProp: 'updateBy',
  519. headerAlign: 'center',
  520. align: 'center',
  521. columnLabel: '修改人',
  522. columnHidden: false,
  523. columnImage: false,
  524. columnSortable: false,
  525. sortLv: 0,
  526. status: true,
  527. fixed: '',
  528. columnWidth: 60
  529. },
  530. {
  531. userId: this.$store.state.user.name,
  532. functionId: 109001,
  533. serialNumber: '109001Table1UpdateDate',
  534. tableId: '109001Table1',
  535. tableName: '物料信息表',
  536. columnProp: 'updateDate',
  537. headerAlign: 'center',
  538. align: 'center',
  539. columnLabel: '修改时间',
  540. columnHidden: false,
  541. columnImage: false,
  542. columnSortable: false,
  543. sortLv: 0,
  544. status: true,
  545. fixed: '',
  546. columnWidth: 120
  547. }
  548. ],
  549. columnNodeList: [
  550. {
  551. userId: this.$store.state.user.name,
  552. functionId: 109001,
  553. serialNumber: '109001Table2ClassificationNo',
  554. tableId: "109001Table2",
  555. tableName: "节点信息表",
  556. columnProp: 'classificationNo',
  557. headerAlign: "center",
  558. align: "center",
  559. columnLabel: '分类编码',
  560. columnHidden: false,
  561. columnImage: false,
  562. columnSortable: true,
  563. sortLv: 0,
  564. status: true,
  565. fixed: '',
  566. columnWidth: 100,
  567. },
  568. {
  569. userId: this.$store.state.user.name,
  570. functionId: 109001,
  571. serialNumber: '109001Table2WorkflowId',
  572. tableId: "109001Table2",
  573. tableName: "节点信息表",
  574. columnProp: 'workflowId',
  575. headerAlign: "center",
  576. align: "center",
  577. columnLabel: '流程ID',
  578. columnHidden: false,
  579. columnImage: false,
  580. columnSortable: true,
  581. sortLv: 0,
  582. status: true,
  583. fixed: '',
  584. columnWidth: 90,
  585. },
  586. {
  587. userId: this.$store.state.user.name,
  588. functionId: 109001,
  589. serialNumber: '109001Table2Workflowname',
  590. tableId: "109001Table2",
  591. tableName: "节点信息表",
  592. columnProp: 'workflowname',
  593. headerAlign: "center",
  594. align: "center",
  595. columnLabel: '流程名称',
  596. columnHidden: false,
  597. columnImage: false,
  598. columnSortable: true,
  599. sortLv: 0,
  600. status: true,
  601. fixed: '',
  602. columnWidth: 120,
  603. },
  604. {
  605. userId: this.$store.state.user.name,
  606. functionId: 109001,
  607. serialNumber: '109001Table2NodeId',
  608. tableId: "109001Table2",
  609. tableName: "节点信息表",
  610. columnProp: 'nodeId',
  611. headerAlign: "center",
  612. align: "center",
  613. columnLabel: '节点ID',
  614. columnHidden: false,
  615. columnImage: false,
  616. columnSortable: true,
  617. sortLv: 0,
  618. status: true,
  619. fixed: '',
  620. columnWidth: 90,
  621. },
  622. {
  623. userId: this.$store.state.user.name,
  624. functionId: 109001,
  625. serialNumber: '109001Table2NodeName',
  626. tableId: "109001Table2",
  627. tableName: "节点信息表",
  628. columnProp: 'nodeName',
  629. headerAlign: "center",
  630. align: "center",
  631. columnLabel: '节点名称',
  632. columnHidden: false,
  633. columnImage: false,
  634. columnSortable: true,
  635. sortLv: 0,
  636. status: true,
  637. fixed: '',
  638. columnWidth: 120,
  639. },
  640. /*{
  641. userId: this.$store.state.user.name,
  642. functionId: 109001,
  643. serialNumber: '109001Table2NodeType',
  644. tableId: "109001Table2",
  645. tableName: "节点信息表",
  646. columnProp: 'nodeType',
  647. headerAlign: "center",
  648. align: "center",
  649. columnLabel: '节点分类',
  650. columnHidden: false,
  651. columnImage: false,
  652. columnSortable: true,
  653. sortLv: 0,
  654. status: true,
  655. fixed: '',
  656. columnWidth: 70,
  657. },*/
  658. ],
  659. // ======== 必填规则 ========
  660. rules: {
  661. classificationName: [
  662. {
  663. required: true,
  664. message: ' ',
  665. trigger: 'change'
  666. }
  667. ],
  668. menuId: [
  669. {
  670. required: true,
  671. message: ' ',
  672. trigger: 'change'
  673. }
  674. ],
  675. workflowId: [
  676. {
  677. required: true,
  678. message: ' ',
  679. trigger: 'change'
  680. }
  681. ],
  682. status: [
  683. {
  684. required: true,
  685. message: ' ',
  686. trigger: 'change'
  687. }
  688. ]
  689. },
  690. // ======== 复选数据集 ========
  691. quotationSelections: [],
  692. // ======== 选中的当前行数据 ========
  693. requestCurrentRow: {},
  694. nodeCurrentRow: {},
  695. // ======== 模态框开关控制 ========
  696. subDetailFlag: false,
  697. maintenanceFlag: false,
  698. modalFlag: false,
  699. }
  700. },
  701. mounted () {
  702. this.$nextTick(() => {
  703. this.height = window.innerHeight / 2 - 30
  704. /*第二个表格高度的动态调整*/
  705. this.secondHeight = window.innerHeight - this.height - 180
  706. })
  707. },
  708. created () {
  709. this.getDataList()
  710. },
  711. methods: {
  712. // ======= 正则校验 =======
  713. handleInput (value, type) {
  714. // 大于等于0,且只能输入4位小数
  715. let val = value.replace(/^\D*([0-9]\d*\.?\d{0,4})?.*$/,'$1')
  716. if (val === null || val === undefined || val === '') {
  717. val = 0
  718. }
  719. },
  720. // ======== 分页相关方法 ========
  721. /**
  722. * 每页数
  723. * @param val
  724. */
  725. sizeChangeHandle (val) {
  726. this.pageSize = val
  727. this.pageIndex = 1
  728. this.getDataList()
  729. },
  730. /**
  731. * 当前页
  732. * @param val
  733. */
  734. currentChangeHandle (val) {
  735. this.pageIndex = val
  736. this.getDataList()
  737. },
  738. // ======== 页签切换相关方法 ========
  739. /**
  740. * 未知
  741. * @returns {boolean}
  742. */
  743. selectFlag (row) {
  744. if (row.status === 'Y') {
  745. return false
  746. } else {
  747. return true
  748. }
  749. },
  750. /**
  751. * 列表表格选择替换
  752. * @param tab
  753. * @param event
  754. */
  755. tabClick (tab, event) {
  756. // 刷新列表数据
  757. this.refreshCurrentTabTable()
  758. },
  759. /**
  760. * 当前值发生变化的时候修改
  761. * @param row
  762. * @param oldRow
  763. */
  764. changeCurrentRow (row, oldRow) {
  765. // 判断是否是获取焦点的事件
  766. if (row) {
  767. this.requestCurrentRow = JSON.parse(JSON.stringify(row))
  768. // 刷新当前页表
  769. this.refreshCurrentTabTable()
  770. }
  771. },
  772. /**
  773. * 刷新页签的table数据
  774. */
  775. refreshCurrentTabTable () {
  776. if (this.activeTable === 'node_item') {
  777. this.getNodeInfoByWorkFlowSearch()
  778. }
  779. },
  780. // 表格的新增
  781. rowClassName ({ row, rowIndex }) {
  782. row.xh = rowIndex + 1
  783. },
  784. // 单选框选中数据
  785. handleDetailSelectionChange(selection) {
  786. this.checkedDetail = selection
  787. },
  788. // 点击新增更多
  789. handleAddBtn () {
  790. let obj = {}
  791. obj.site = this.$store.state.user.site,
  792. obj.classificationNo = this.nodeCurrentRow.classificationNo,
  793. obj.workflowId = this.nodeCurrentRow.workflowId,
  794. obj.nodeId = this.nodeCurrentRow.nodeId,
  795. obj.nodeName = this.nodeCurrentRow.nodeName,
  796. obj.createBy = this.$store.state.user.name,
  797. obj.remark = "",
  798. obj.plmField = "",
  799. obj.oaField = "",
  800. obj.fieldValue = "",
  801. obj.fieldDesc = "",
  802. obj.orderRef1 = "",
  803. obj.orderRef2 = "",
  804. obj.orderRef3 = "",
  805. obj.orderRef4 = ""
  806. this.tableData.push(obj)
  807. },
  808. //删除
  809. handleDeleteBtn () {
  810. if (this.checkedDetail.length === 0) {
  811. this.$alert("请先选择要删除的数据行", "提示", {
  812. confirmButtonText: "确定",
  813. })
  814. } else {
  815. this.$confirm("请确认是否删除"+this.checkedDetail.length+"条出口配置?", "提示", {
  816. confirmButtonText: "确定",
  817. cancelButtonText: "取消",
  818. type: "warning",
  819. callback: (action) => {
  820. if (action === "confirm") {
  821. let val = this.checkedDetail
  822. val.forEach((val, index) => {
  823. this.tableData.forEach((v, i) => {
  824. if (val.xh === v.xh) {
  825. this.tableData.splice(i, 1)
  826. }
  827. })
  828. })
  829. this.$message({
  830. message: "删除成功!",
  831. type: "success",
  832. })
  833. return
  834. } else {
  835. this.$message({
  836. message: "已取消删除操作",
  837. type: "warning",
  838. })
  839. return
  840. }
  841. },
  842. })
  843. }
  844. },
  845. // ======== 列表数据刷新方法 ========
  846. /**
  847. * @Author Yzz
  848. * @Description 查询节点现有出口配置
  849. * @Date 2024/15/12 15:00:28
  850. **/
  851. // 出口配置信息查询
  852. subDetailModal (row) {
  853. this.nodeCurrentRow = row;
  854. let tempData = {
  855. site: this.$store.state.user.site,
  856. workflowId: this.nodeCurrentRow.workflowId,
  857. nodeId: this.nodeCurrentRow.nodeId,
  858. classificationNo: this.nodeCurrentRow.classificationNo,
  859. }
  860. getNodeDetail(tempData).then(({data}) => {
  861. if (data && data.code === 0) {
  862. this.tableData = data.rows
  863. } else {
  864. this.tableData = []
  865. }
  866. })
  867. this.subDetailFlag = true
  868. },
  869. /**
  870. * 查询节点信息
  871. */
  872. getNodeInfoByWorkFlowSearch () {
  873. let tempData = {
  874. site: this.$store.state.user.site,
  875. //workflowId: this.requestCurrentRow.workflowId,
  876. classificationNo: this.requestCurrentRow.classificationNo
  877. }
  878. getNodeInfoByWorkflow(tempData).then(({data}) => {
  879. if (data && data.code === 0) {
  880. this.nodeList = data.rows
  881. } else {
  882. this.nodeList = []
  883. }
  884. })
  885. },
  886. // ======== 列表数据刷新方法 ========
  887. /**
  888. * 获取数据列表 流程绑定主表信息
  889. */
  890. getDataList () {
  891. this.searchData.limit = this.pageSize
  892. this.searchData.page = this.pageIndex
  893. getRequestMainData(this.searchData).then(({data}) => {
  894. if (data.code === 0) {
  895. this.dataList = data.page.list
  896. this.pageIndex = data.page.currPage
  897. this.pageSize = data.page.pageSize
  898. this.totalPage = data.page.totalCount
  899. this.$refs.selectDiv.setLengthAll( this.dataList.length)
  900. // 判断是否全部存在数据
  901. if (this.totalPage > 0) {
  902. // 设置选中行
  903. this.$refs.requestTable.setCurrentRow(this.dataList[0])
  904. // 加载当前的页签的table
  905. this.requestClickRow(this.dataList[0])
  906. this.refreshCurrentTabTable()
  907. }
  908. }
  909. })
  910. },
  911. // ======== 新增/编辑模态框 ========
  912. /**
  913. * 流程主表新增按钮
  914. */
  915. addModal () {
  916. this.modalData = {
  917. flag: '1',
  918. site: this.$store.state.user.site,
  919. bu: '',
  920. buDesc: '',
  921. classificationNo: '*',
  922. classificationName: '',
  923. menuId: '',
  924. name: '',
  925. workflowId: '',
  926. workflowname: '',
  927. status: 'Y',
  928. remark: '',
  929. createBy: this.$store.state.user.name,
  930. }
  931. this.maintenanceFlag = false
  932. this.modalFlag = true
  933. },
  934. delModal() {
  935. if (this.quotationSelections.length === 0) {
  936. this.$message.warning('请勾选需要删除的信息!')
  937. return
  938. }
  939. this.$confirm(`是否删除这 ` + this.quotationSelections.length + ` 条绑定信息及其他关联信息?`, '提示', {
  940. confirmButtonText: '确定',
  941. cancelButtonText: '取消',
  942. type: 'warning'
  943. }).then(() => {
  944. deleteRequestHeader(this.quotationSelections).then(({data}) => {
  945. if (data && data.code === 0) {
  946. this.getDataList()
  947. this.quotationSelections = []
  948. this.$message({
  949. message: '操作成功',
  950. type: 'success',
  951. duration: 1500,
  952. onClose: () => {
  953. }
  954. })
  955. } else {
  956. this.$alert(data.msg, '错误', {
  957. confirmButtonText: '确定'
  958. })
  959. }
  960. })
  961. }).catch(() => {
  962. })
  963. },
  964. /**
  965. * 流程主表修改按钮
  966. * @param row
  967. */
  968. updateModal (row) {
  969. this.modalData = {
  970. flag: '2',
  971. site: this.$store.state.user.site,
  972. bu: row.bu,
  973. buDesc: row.buDesc,
  974. classificationNo: row.classificationNo,
  975. classificationName: row.classificationName,
  976. menuId: row.menuId,
  977. name: row.name,
  978. workflowId: row.workflowId,
  979. workflowname: row.workflowname,
  980. status: row.status,
  981. remark: row.remark,
  982. updateBy: this.$store.state.user.name,
  983. }
  984. this.maintenanceFlag = true
  985. this.modalFlag = true
  986. },
  987. checkDataBySubDetail(){
  988. for (let i = 0; i < this.tableData.length; i++) {
  989. if(this.tableData[i].oaField === '' || this.tableData[i].oaField == null){
  990. this.$message.warning('序号' + (i+1) +'未填写OA字段名,字段名为必填项!')
  991. return
  992. }
  993. if(this.tableData[i].plmField === '' || this.tableData[i].plmField == null){
  994. this.$message.warning('序号' + (i+1) +'未填写PLM字段名,字段名为必填项!')
  995. return
  996. }
  997. }
  998. if (this.tableData.length === 0){
  999. this.$confirm(`继续将保存"删除节点全部配置"的操作,是否继续?`, '提示', {
  1000. confirmButtonText: '确定',
  1001. cancelButtonText: '取消',
  1002. type: 'warning'
  1003. }).then(() => {
  1004. let obj = {}
  1005. obj.site = this.$store.state.user.site,
  1006. obj.classificationNo = this.nodeCurrentRow.classificationNo,
  1007. obj.workflowId = this.nodeCurrentRow.workflowId,
  1008. obj.nodeId = this.nodeCurrentRow.nodeId,
  1009. obj.createBy = this.$store.state.user.name,
  1010. deleteRequestNodeDetailByLine(obj).then(({data}) => {
  1011. if (data && data.code === 0) {
  1012. //清空手动添加的
  1013. this.tableData = [];
  1014. //查询数据库中保存的
  1015. //this.getDataList()
  1016. //关闭模态框
  1017. this.subDetailFlag = false;
  1018. this.$message({
  1019. message: '操作成功',
  1020. type: 'success',
  1021. duration: 1500,
  1022. onClose: () => {}
  1023. })
  1024. } else {
  1025. this.$alert(data.msg, '错误', {
  1026. confirmButtonText: '确定'
  1027. })
  1028. }
  1029. })
  1030. }).catch(() => {
  1031. })
  1032. }else {
  1033. saveRequestNodeDetail(this.tableData).then(({data}) => {
  1034. if (data && data.code === 0) {
  1035. //清空手动添加的
  1036. this.tableData = [];
  1037. //查询数据库中保存的
  1038. //this.getDataList()
  1039. //关闭模态框
  1040. this.subDetailFlag = false;
  1041. this.$message({
  1042. message: '操作成功',
  1043. type: 'success',
  1044. duration: 1500,
  1045. onClose: () => {}
  1046. })
  1047. } else {
  1048. this.$alert(data.msg, '错误', {
  1049. confirmButtonText: '确定'
  1050. })
  1051. }
  1052. })
  1053. }
  1054. },
  1055. /**
  1056. * 返回列表唯一值
  1057. * @param row
  1058. * @returns {string|[{trigger: string, message: string, required: boolean}]|*}
  1059. */
  1060. getRowKeys (row) {
  1061. // 唯一值,一般都为id
  1062. return row.agentId
  1063. },
  1064. // ======== 新增/编辑/删除方法 ========
  1065. /**
  1066. * 流程主表绑定关系新增/编辑
  1067. */
  1068. saveData () {
  1069. if (this.modalData.workflowId === '' || this.modalData.workflowId == null) {
  1070. this.$message.warning('请选择流程!')
  1071. return
  1072. }
  1073. if (this.modalData.menuId === '' || this.modalData.menuId == null) {
  1074. this.$message.warning('请选择功能菜单!')
  1075. return
  1076. }
  1077. if (this.modalData.status === '' || this.modalData.status == null) {
  1078. this.$message.warning('请选择状态!')
  1079. return
  1080. }
  1081. if (this.modalData.flag === '1') {
  1082. saveRequestHeader(this.modalData).then(({data}) => {
  1083. if (data && data.code === 0) {
  1084. this.getDataList()
  1085. this.modalFlag = false
  1086. this.$message({
  1087. message: '操作成功',
  1088. type: 'success',
  1089. duration: 1500,
  1090. onClose: () => {}
  1091. })
  1092. } else {
  1093. this.$alert(data.msg, '错误', {
  1094. confirmButtonText: '确定'
  1095. })
  1096. }
  1097. })
  1098. } else {
  1099. updateRequestHeader(this.modalData).then(({data}) => {
  1100. if (data && data.code === 0) {
  1101. this.getDataList()
  1102. this.modalFlag = false
  1103. this.$message({
  1104. message: '操作成功',
  1105. type: 'success',
  1106. duration: 1500,
  1107. onClose: () => {}
  1108. })
  1109. } else {
  1110. this.$alert(data.msg, '错误', {
  1111. confirmButtonText: '确定'
  1112. })
  1113. }
  1114. })
  1115. }
  1116. },
  1117. // ======== 列表操作方法 ========
  1118. /**
  1119. * 单机选中主表绑定信息行
  1120. * @param row
  1121. */
  1122. requestClickRow (row) {
  1123. // this.$refs.requestTable.toggleRowSelection(row)
  1124. this.requestCurrentRow = JSON.parse(JSON.stringify(row))
  1125. },
  1126. /**
  1127. * 复选物料信息
  1128. * @param val
  1129. */
  1130. selectionRequest (val) {
  1131. this.quotationSelections = val
  1132. this.$refs.selectDiv.setLengthselected(this.quotationSelections.length)
  1133. },
  1134. // ======== chooseList相关方法 ========
  1135. /**
  1136. * 获取基础数据列表S
  1137. * @param val
  1138. * @param type
  1139. */
  1140. getBaseList (val, type) {
  1141. this.tagNo = val
  1142. this.$nextTick(() => {
  1143. let strVal = ''
  1144. if (val === 1014) {
  1145. strVal = this.modalData.menuId
  1146. }else if (val === 1015){
  1147. strVal = this.modalData.workflowId
  1148. }
  1149. this.$refs.baseList.init(val, strVal)
  1150. })
  1151. },
  1152. /**
  1153. * 列表方法的回调
  1154. * @param val
  1155. */
  1156. getBaseData (val) {
  1157. if (this.tagNo === 1014) {
  1158. this.modalData.menuId = val.Menu_id
  1159. this.modalData.name = val.Name
  1160. }else if (this.tagNo === 1015){
  1161. this.modalData.workflowId = val.Workflowid
  1162. this.modalData.workflowname = val.Workflowname
  1163. }
  1164. },
  1165. // ======== 导出相关方法 ========
  1166. /**
  1167. * 导出excel
  1168. */
  1169. async createExportData () {
  1170. this.searchData.limit = -1
  1171. this.searchData.page = 1
  1172. await getRequestMainData(this.searchData).then(({data}) => {
  1173. this.resultList = data.page.list
  1174. })
  1175. return this.resultList
  1176. },
  1177. startDownload () {},
  1178. finishDownload () {},
  1179. fields () {
  1180. let json = '{'
  1181. this.columnList.forEach((item, index) => {
  1182. if (index == this.columnList.length - 1) {
  1183. json += '"' + item.columnLabel + '"' + ':' + '"' + item.columnProp + '"'
  1184. } else {
  1185. json += '"' + item.columnLabel + '"' + ':' + '"' + item.columnProp + '"' + ','
  1186. }
  1187. })
  1188. json += '}'
  1189. let s = eval('(' + json + ')')
  1190. return s
  1191. },
  1192. rowStyle ({row}) {
  1193. if (this.requestCurrentRow.classificationNo === row.classificationNo) {
  1194. return { 'background-color': '#E8F7F6', cursor: 'pointer' };
  1195. }
  1196. }
  1197. }
  1198. }
  1199. </script>
  1200. <style scoped lang="scss">
  1201. /deep/ .customer-tab .el-tabs__content {
  1202. padding: 0px !important;
  1203. height: 459px;
  1204. }
  1205. /deep/ .customer-tab .el-tabs__content {
  1206. height: 294px;
  1207. }
  1208. .numInput /deep/ .el-input__inner{
  1209. text-align: right;
  1210. }
  1211. /deep/ .inlineNumber input::-webkit-outer-spin-button,
  1212. /deep/ .inlineNumber input::-webkit-inner-spin-button {
  1213. -webkit-appearance: none;
  1214. }
  1215. /deep/ .inlineNumber input[type="number"]{
  1216. -moz-appearance: textfield;
  1217. padding-right: 5px !important;
  1218. }
  1219. </style>