index.vue 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762
  1. <template>
  2. <div class="app-container">
  3. <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
  4. <el-form-item label="流程名称" prop="flowName">
  5. <el-input
  6. v-model="queryParams.flowName"
  7. placeholder="请输入流程名称"
  8. clearable
  9. size="small"
  10. @keyup.enter.native="handleQuery"
  11. />
  12. </el-form-item>
  13. <el-form-item>
  14. <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
  15. <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
  16. </el-form-item>
  17. </el-form>
  18. <el-row :gutter="10" class="mb8">
  19. <el-col :span="1.5">
  20. <el-button
  21. type="primary"
  22. plain
  23. icon="el-icon-plus"
  24. size="mini"
  25. @click="handleAdd"
  26. v-hasPermi="['ams:flowConfig:add']"
  27. >新增</el-button>
  28. </el-col>
  29. <el-col :span="1.5">
  30. <el-button
  31. type="success"
  32. plain
  33. icon="el-icon-edit"
  34. size="mini"
  35. :disabled="single"
  36. @click="handleUpdate"
  37. v-hasPermi="['ams:flowConfig:edit']"
  38. >修改</el-button>
  39. </el-col>
  40. <el-col :span="1.5">
  41. <el-button
  42. type="danger"
  43. plain
  44. icon="el-icon-delete"
  45. size="mini"
  46. :disabled="multiple"
  47. @click="handleDelete"
  48. v-hasPermi="['ams:flowConfig:remove']"
  49. >删除</el-button>
  50. </el-col>
  51. <el-col :span="1.5">
  52. <el-button
  53. type="warning"
  54. plain
  55. icon="el-icon-download"
  56. size="mini"
  57. @click="handleExport"
  58. v-hasPermi="['ams:flowConfig:export']"
  59. >导出</el-button>
  60. </el-col>
  61. <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
  62. </el-row>
  63. <el-table v-loading="loading" :data="flowConfigList" @selection-change="handleSelectionChange">
  64. <el-table-column type="selection" width="55" align="center" />
  65. <el-table-column label="编号" align="center" prop="id" />
  66. <el-table-column label="流程名称" align="center" prop="flowName" />
  67. <!--<el-table-column label="物料类型" align="center" prop="skuType" />
  68. <el-table-column label="物料类型是否显示" align="center" prop="skuTypeFlag" />
  69. <el-table-column label="数量" align="center" prop="qty" />
  70. <el-table-column label="数量是否显示" align="center" prop="qtyFlag" />
  71. <el-table-column label="重量" align="center" prop="weight" />
  72. <el-table-column label="重量是否显示" align="center" prop="weightFlag" />
  73. <el-table-column label="供应商" align="center" prop="supplier" />
  74. <el-table-column label="供应商是否显示" align="center" prop="supplierFlag" />
  75. <el-table-column label="起点范围" align="center" prop="locationFrom" />
  76. <el-table-column label="起点是否对接设备" align="center" prop="locationFromDevice" />
  77. <el-table-column label="终点范围" align="center" prop="locationTo" />
  78. <el-table-column label="终点是否对接设备" align="center" prop="locationToDevice" />-->
  79. <el-table-column label="备注" align="center" prop="remark" />
  80. <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
  81. <template slot-scope="scope">
  82. <el-button
  83. size="mini"
  84. type="text"
  85. icon="el-icon-edit"
  86. @click="handleUpdate(scope.row)"
  87. v-hasPermi="['ams:flowConfig:edit']"
  88. >修改</el-button>
  89. <el-button
  90. size="mini"
  91. type="text"
  92. icon="el-icon-delete"
  93. @click="handleDelete(scope.row)"
  94. v-hasPermi="['ams:flowConfig:remove']"
  95. >删除</el-button>
  96. </template>
  97. </el-table-column>
  98. </el-table>
  99. <pagination
  100. v-show="total>0"
  101. :total="total"
  102. :page.sync="queryParams.pageNum"
  103. :limit.sync="queryParams.pageSize"
  104. @pagination="getList"
  105. />
  106. <!-- 添加或修改流程配置头对话框 -->
  107. <el-dialog :title="title" :visible.sync="open" width="1000px" append-to-body>
  108. <el-form ref="form" :model="form" :rules="rules" label-width="100px">
  109. <el-row>
  110. <el-col :span="8">
  111. <el-form-item label="流程名称" prop="flowName">
  112. <el-input v-model="form.flowName" placeholder="请输入流程名称" />
  113. </el-form-item>
  114. </el-col>
  115. <el-col :span="8">
  116. <el-form-item label="操作类型" prop="flowType">
  117. <el-select style="width: 100%" v-model="form.flowType" placeholder="请选操作类型" clearable size="small">
  118. <el-option
  119. v-for="dict in flowTypeDict"
  120. :key="dict.value"
  121. :label="dict.label"
  122. :value="dict.value"
  123. />
  124. </el-select>
  125. </el-form-item>
  126. </el-col>
  127. <el-col :span="8">
  128. <el-form-item label="备注" prop="remark">
  129. <el-input v-model="form.remark" placeholder="请输入内容" />
  130. </el-form-item>
  131. </el-col>
  132. </el-row>
  133. <el-row>
  134. <el-col :span="12">
  135. <el-form-item label="物料选择范围" prop="skuType">
  136. <el-select style="width: 100%" v-model="form.skuType" :multiple="true" placeholder="请选择物料种类" clearable size="small">
  137. <el-option
  138. v-for="dict in skuTypeCombo"
  139. :key="dict.itemCode"
  140. :label="dict.itemName"
  141. :value="dict.itemCode"
  142. />
  143. </el-select>
  144. </el-form-item>
  145. </el-col>
  146. <el-col :span="12">
  147. <el-form-item label="是否显示" prop="skuTypeFlag">
  148. <el-select style="width: 100%" v-model="form.skuTypeFlag" placeholder="是否显示" size="small">
  149. <el-option
  150. v-for="dict in inputTagCombo"
  151. :key="dict.value"
  152. :label="dict.label"
  153. :value="dict.value"
  154. />
  155. </el-select>
  156. </el-form-item>
  157. </el-col>
  158. </el-row>
  159. <el-row>
  160. <el-col :span="8">
  161. <el-form-item label="数量范围" prop="qtyRange">
  162. <el-input v-model="form.qtyRange" placeholder="数据格式:1-5" @change="qtyRangeChange"/>
  163. </el-form-item>
  164. </el-col>
  165. <el-col :span="8">
  166. <el-form-item label="是否显示" prop="qtyFlag">
  167. <el-select style="width: 100%" v-model="form.qtyFlag" placeholder="是否显示" size="small">
  168. <el-option
  169. v-for="dict in inputTagCombo"
  170. :key="dict.value"
  171. :label="dict.label"
  172. :value="dict.value"
  173. />
  174. </el-select>
  175. </el-form-item>
  176. </el-col>
  177. <el-col :span="8">
  178. <el-form-item label="默认值" prop="qty">
  179. <el-input v-model="form.qty" placeholder="请输入数量" type="number"/>
  180. </el-form-item>
  181. </el-col>
  182. </el-row>
  183. <el-row>
  184. <el-col :span="8">
  185. <el-form-item label="重量范围" prop="weightRange">
  186. <el-input v-model="form.weightRange" placeholder="数据格式:1-5" @change="weightRangeChange"/>
  187. </el-form-item>
  188. </el-col>
  189. <el-col :span="8">
  190. <el-form-item label="是否显示" prop="weightFlag">
  191. <el-select style="width: 100%" v-model="form.weightFlag" placeholder="是否显示" size="small">
  192. <el-option
  193. v-for="dict in inputTagCombo"
  194. :key="dict.value"
  195. :label="dict.label"
  196. :value="dict.value"
  197. />
  198. </el-select>
  199. </el-form-item>
  200. </el-col>
  201. <el-col :span="8">
  202. <el-form-item label="默认值" prop="weight">
  203. <el-input v-model="form.weight" placeholder="请输入重量" type="number"/>
  204. </el-form-item>
  205. </el-col>
  206. </el-row>
  207. <!--<el-row>
  208. <el-col :span="8">
  209. <el-form-item label="供应商范围" prop="supplierRange">
  210. <el-select style="width: 100%" v-model="form.supplierRange" :multiple="true" placeholder="请选择供应商范围" clearable size="small">
  211. <el-option
  212. v-for="dict in supplierCombo"
  213. :key="dict.supplierId"
  214. :label="dict.supplierName"
  215. :value="dict.supplierId"
  216. />
  217. </el-select>
  218. </el-form-item>
  219. </el-col>
  220. <el-col :span="8">
  221. <el-form-item label="是否显示" prop="supplierFlag">
  222. <el-select style="width: 100%" v-model="form.supplierFlag" placeholder="是否显示" size="small">
  223. <el-option
  224. v-for="dict in inputTagCombo"
  225. :key="dict.value"
  226. :label="dict.label"
  227. :value="dict.value"
  228. />
  229. </el-select>
  230. </el-form-item>
  231. </el-col>
  232. <el-col :span="8">
  233. <el-form-item label="默认值" prop="supplier">
  234. <el-select style="width: 100%" v-model="form.supplier" placeholder="请选择供应商" clearable size="small">
  235. <el-option
  236. v-for="dict in supplierCombo"
  237. :key="dict.supplierId"
  238. :label="dict.supplierName"
  239. :value="dict.supplierId"
  240. />
  241. </el-select>
  242. </el-form-item>
  243. </el-col>
  244. </el-row>-->
  245. <el-row>
  246. <el-col :span="10">
  247. <el-form-item label="起点范围" prop="locationFrom">
  248. <treeselect
  249. :multiple="true"
  250. v-model="form.locationFrom"
  251. :options="locationFromOptions"
  252. :value-consists-of="'BRANCH_PRIORITY'"
  253. :filter-node-method="filterNode"
  254. :show-count="true" placeholder="请选择起点范围" />
  255. </el-form-item>
  256. </el-col>
  257. <el-col :span="8">
  258. <el-form-item label="是否显示" prop="locationFromFlag">
  259. <el-select style="width: 100%" v-model="form.locationFromFlag" placeholder="是否显示" size="small">
  260. <el-option
  261. v-for="dict in inputTagCombo"
  262. :key="dict.value"
  263. :label="dict.label"
  264. :value="dict.value"
  265. />
  266. </el-select>
  267. </el-form-item>
  268. </el-col>
  269. <el-col :span="6">
  270. <el-form-item label="启用策略" prop="locationFromStrategyFlag">
  271. <el-select style="width: 100%" v-model="form.locationFromStrategyFlag" size="small">
  272. <el-option
  273. v-for="dict in dict.type.sys_yes_no"
  274. :key="dict.value"
  275. :label="dict.label"
  276. :value="dict.value"
  277. />
  278. </el-select>
  279. </el-form-item>
  280. </el-col>
  281. </el-row>
  282. <el-row>
  283. <el-col :span="10">
  284. <el-form-item label="终点范围" prop="locationTo">
  285. <treeselect
  286. :multiple="true"
  287. v-model="form.locationTo"
  288. :options="locationToOptions"
  289. :value-consists-of="'BRANCH_PRIORITY'"
  290. :filter-node-method="filterNode"
  291. :show-count="true" placeholder="请选择终点范围" />
  292. </el-form-item>
  293. </el-col>
  294. <el-col :span="8">
  295. <el-form-item label="是否显示" prop="locationToFlag">
  296. <el-select style="width: 100%" v-model="form.locationToFlag" placeholder="是否显示" size="small">
  297. <el-option
  298. v-for="dict in inputTagCombo"
  299. :key="dict.value"
  300. :label="dict.label"
  301. :value="dict.value"
  302. />
  303. </el-select>
  304. </el-form-item>
  305. </el-col>
  306. <el-col :span="6">
  307. <el-form-item label="启用策略" prop="locationToStrategyFlag">
  308. <el-select style="width: 100%" v-model="form.locationToStrategyFlag" size="small">
  309. <el-option
  310. v-for="dict in dict.type.sys_yes_no"
  311. :key="dict.value"
  312. :label="dict.label"
  313. :value="dict.value"
  314. />
  315. </el-select>
  316. </el-form-item>
  317. </el-col>
  318. </el-row>
  319. <el-row>
  320. <el-col :span="10">
  321. <el-form-item label="关联流程" prop="relFlow">
  322. <el-select style="width: 100%" v-model="form.relFlow" size="small" clearable>
  323. <el-option
  324. v-for="dict in flowDict"
  325. :key="dict.id"
  326. :label="dict.flowName"
  327. :value="dict.id"
  328. />
  329. </el-select>
  330. </el-form-item>
  331. </el-col>
  332. <el-col :span="16">
  333. </el-col>
  334. </el-row>
  335. <el-divider content-position="center">事件配置</el-divider>
  336. <div><el-button type="primary" @click="addEvent">添加配置</el-button></div>
  337. <div>
  338. <el-table :data="eventData" ref="eventTables">
  339. <el-table-column label="操作">
  340. <template slot-scope="scope">
  341. <el-button
  342. size="mini"
  343. type="text"
  344. icon="el-icon-delete"
  345. @click="delEvent(scope.$index)"
  346. v-hasPermi="['ams:flowConfig:edit']"
  347. >删除</el-button>
  348. </template>
  349. </el-table-column>
  350. <el-table-column label="NDC事件" prop="eventCode">
  351. <template slot-scope="scope">
  352. <el-input type="text" v-model="scope.row.eventCode" class="cell-input"/>
  353. </template>
  354. </el-table-column>
  355. <el-table-column label="请求地址" prop="accessUrl">
  356. <template slot-scope="scope">
  357. <el-input type="text" v-model="scope.row.accessUrl" class="cell-input"/>
  358. </template>
  359. </el-table-column>
  360. <el-table-column label="请求参数" prop="accessParam">
  361. <template slot-scope="scope">
  362. <el-input type="text" v-model="scope.row.accessParam" class="cell-input"/>
  363. </template>
  364. </el-table-column>
  365. <el-table-column label="回调地址" prop="callBackUrl">
  366. <template slot-scope="scope">
  367. <el-input type="text" v-model="scope.row.callbackUrl" class="cell-input"/>
  368. </template>
  369. </el-table-column>
  370. <el-table-column label="回调参数" prop="callBackParam">
  371. <template slot-scope="scope">
  372. <el-input type="text" v-model="scope.row.callbackParam" class="cell-input"/>
  373. </template>
  374. </el-table-column>
  375. </el-table>
  376. </div>
  377. <div style="cursor: pointer;" @click="showHidden">
  378. <el-divider content-position="center">批次属性信息</el-divider>
  379. </div>
  380. <el-table v-show="attShowFlag" :data="flowConfigDetailsList" :row-class-name="rowFlowConfigDetailsIndex" @selection-change="handleFlowConfigDetailsSelectionChange" ref="flowConfigDetails">
  381. <el-table-column label="序号" align="center" prop="index" width="50"/>
  382. <el-table-column label="批次属性" prop="lotattId">
  383. <template slot-scope="scope">
  384. {{scope.row.lotattName}}
  385. </template>
  386. </el-table-column>
  387. <el-table-column label="是否显示" prop="lotattFlag">
  388. <template slot-scope="scope">
  389. <el-select style="width: 100%" v-model="scope.row.lotattFlag" placeholder="是否显示" clearable size="small">
  390. <el-option
  391. v-for="dict in inputTagCombo"
  392. :key="dict.value"
  393. :label="dict.label"
  394. :value="dict.value"
  395. />
  396. </el-select>
  397. </template>
  398. </el-table-column>
  399. <el-table-column label="默认值">
  400. <template slot-scope="scope">
  401. <el-input type="text" v-model="scope.row.defaultValue" class="cell-input"/>
  402. </template>
  403. </el-table-column>
  404. <el-table-column label="备注" prop="remark"></el-table-column>
  405. </el-table>
  406. </el-form>
  407. <div slot="footer" class="dialog-footer">
  408. <el-button type="primary" @click="submitForm">确 定</el-button>
  409. <el-button @click="cancel">取 消</el-button>
  410. </div>
  411. </el-dialog>
  412. </div>
  413. </template>
  414. <script>
  415. import { listFlowConfig, getFlowConfig, delFlowConfig, addFlowConfig, updateFlowConfig, queryLotattConfigListActive, flowConfigDict } from "@/api/ams/flowConfig";
  416. import { querySkuTypeDict } from "@/api/base/skuType";
  417. import { treeselectLocationZone } from "@/api/base/locationZone";
  418. import { querySupplierDict } from "@/api/base/supplier";
  419. import { treeselect } from "@/api/base/locationInfo";
  420. import { inputTag } from "@/utils/combo/dict";
  421. import Treeselect from "@riophae/vue-treeselect";
  422. import "@riophae/vue-treeselect/dist/vue-treeselect.css";
  423. export default {
  424. name: "FlowConfig",
  425. components: { Treeselect },
  426. dicts: ['sys_yes_no'],
  427. data() {
  428. return {
  429. // 遮罩层
  430. loading: true,
  431. // 选中数组
  432. ids: [],
  433. // 子表选中数据
  434. checkedFlowConfigDetails: [],
  435. // 非单个禁用
  436. single: true,
  437. // 非多个禁用
  438. multiple: true,
  439. // 显示搜索条件
  440. showSearch: true,
  441. // 总条数
  442. total: 0,
  443. // 流程配置头表格数据
  444. flowConfigList: [],
  445. // 流程配置体表格数据
  446. flowConfigDetailsList: [],
  447. // 弹出层标题
  448. title: "",
  449. // 是否显示弹出层
  450. open: false,
  451. // 查询参数
  452. queryParams: {
  453. pageNum: 1,
  454. pageSize: 10,
  455. flowName: null,
  456. },
  457. // 表单参数
  458. form: {},
  459. // 表单校验
  460. rules: {
  461. flowType: [
  462. { required: true, message: "操作类型不能为空", trigger: "blur" }
  463. ],
  464. flowName: [
  465. { required: true, message: "流程名称不能为空", trigger: "blur" }
  466. ],
  467. locationFrom: [
  468. { required: true, message: "起点范围不能为空", trigger: "blur" }
  469. ],
  470. locationTo: [
  471. { required: true, message: "终点范围不能为空", trigger: "blur" }
  472. ]
  473. },
  474. defaultProps: {
  475. children: "children",
  476. label: "label"
  477. },
  478. inputTagCombo: inputTag,
  479. supplierCombo: [],
  480. skuTypeCombo: undefined,
  481. locationFromOptions: undefined,
  482. locationToOptions: undefined,
  483. qtyStart: null,
  484. qtyEnd: null,
  485. weightStart: null,
  486. weightEnd: null,
  487. flowTypeDict: [
  488. {label : '入库', value : 'ASN'},
  489. {label : '出库', value : 'SO'}
  490. ],
  491. flowDict: [],
  492. attShowFlag: true,
  493. eventData: []
  494. };
  495. },
  496. created() {
  497. this.init();
  498. this.getList();
  499. },
  500. methods: {
  501. /** 查询流程配置头列表 */
  502. getList() {
  503. this.loading = true;
  504. listFlowConfig(this.queryParams).then(response => {
  505. this.flowConfigList = response.rows;
  506. this.total = response.total;
  507. this.loading = false;
  508. });
  509. },
  510. // 取消按钮
  511. cancel() {
  512. this.open = false;
  513. this.reset();
  514. },
  515. // 表单重置
  516. reset() {
  517. this.form = {
  518. id: null,
  519. flowName: null,
  520. flowType: null,
  521. skuType: null,
  522. skuTypeFlag: 'Choice',
  523. qty: null,
  524. qtyRange: null,
  525. qtyFlag: 'Choice',
  526. weight: null,
  527. weightRange: null,
  528. weightFlag: 'Choice',
  529. supplier: null,
  530. supplierRange: null,
  531. supplierFlag: 'Choice',
  532. locationFrom: null,
  533. locationFromFlag: 'Choice',
  534. locationFromDevice: null,
  535. locationFromStrategyFlag: 'N',
  536. locationTo: null,
  537. locationToFlag: 'Choice',
  538. locationToDevice: null,
  539. locationToStrategyFlag: 'N',
  540. createBy: null,
  541. createTime: null,
  542. updateBy: null,
  543. updateTime: null,
  544. remark: null,
  545. relFlow: '',
  546. rootFlow: ''
  547. };
  548. this.flowConfigDetailsList = [];
  549. this.resetForm("form");
  550. },
  551. /** 搜索按钮操作 */
  552. handleQuery() {
  553. this.queryParams.pageNum = 1;
  554. this.getList();
  555. },
  556. /** 重置按钮操作 */
  557. resetQuery() {
  558. this.resetForm("queryForm");
  559. this.handleQuery();
  560. },
  561. // 多选框选中数据
  562. handleSelectionChange(selection) {
  563. this.ids = selection.map(item => item.id)
  564. this.single = selection.length!==1
  565. this.multiple = !selection.length
  566. },
  567. /** 新增按钮操作 */
  568. handleAdd() {
  569. this.reset();
  570. this.open = true;
  571. this.title = "添加流程配置";
  572. // 加载批次属性明细
  573. queryLotattConfigListActive(this.queryParams).then(response => {
  574. this.flowConfigDetailsList = response.data;
  575. });
  576. },
  577. /** 修改按钮操作 */
  578. handleUpdate(row) {
  579. this.reset();
  580. const id = row.id || this.ids
  581. //查询流程配置字典
  582. flowConfigDict(id).then(response => {
  583. this.flowDict = response.data;
  584. });
  585. getFlowConfig(id).then(response => {
  586. this.form = response.data;
  587. this.flowConfigDetailsList = response.data.flowConfigDetailsList;
  588. this.eventData = response.data.flowConfigEventList;
  589. this.qtyRangeChange(this.form.qtyRange)
  590. this.weightRangeChange(this.form.weightRange)
  591. this.open = true;
  592. this.title = "修改流程配置";
  593. });
  594. },
  595. /** 提交按钮 */
  596. submitForm() {
  597. if (this.form.qty) {
  598. if (this.qtyStart > this.form.qty) {
  599. this.$modal.msgError("数量默认值小于范围");
  600. return
  601. }
  602. if (this.qtyEnd < this.form.qty) {
  603. this.$modal.msgError("数量默认值大于范围");
  604. return
  605. }
  606. }
  607. if (this.form.weight) {
  608. if (this.weightStart > this.form.weight) {
  609. this.$modal.msgError("重量默认值小于范围");
  610. return false
  611. }
  612. if (this.weightEnd < this.form.weight) {
  613. this.$modal.msgError("重量默认值大于范围");
  614. return false
  615. }
  616. }
  617. this.$refs["form"].validate(valid => {
  618. if (valid) {
  619. this.form.flowConfigDetailsList = this.flowConfigDetailsList;
  620. this.form.flowConfigEventList = this.eventData;
  621. if (this.form.id != null) {
  622. updateFlowConfig(this.form).then(response => {
  623. this.$modal.msgSuccess("修改成功");
  624. this.open = false;
  625. this.getList();
  626. });
  627. } else {
  628. addFlowConfig(this.form).then(response => {
  629. this.$modal.msgSuccess("新增成功");
  630. this.open = false;
  631. this.getList();
  632. });
  633. }
  634. }
  635. });
  636. },
  637. /** 删除按钮操作 */
  638. handleDelete(row) {
  639. const ids = row.id || this.ids;
  640. this.$modal.confirm('是否确认删除流程配置编号为"' + ids + '"的数据项?').then(function() {
  641. return delFlowConfig(ids);
  642. }).then(() => {
  643. this.getList();
  644. this.$modal.msgSuccess("删除成功");
  645. }).catch(() => {});
  646. },
  647. /** 流程配置体序号 */
  648. rowFlowConfigDetailsIndex({ row, rowIndex }) {
  649. row.index = rowIndex + 1;
  650. },
  651. /** 流程配置体添加按钮操作 */
  652. handleAddFlowConfigDetails() {
  653. let obj = {};
  654. obj.lotattId = "";
  655. obj.lotattFlag = "";
  656. obj.remark = "";
  657. this.flowConfigDetailsList.push(obj);
  658. },
  659. /** 流程配置体删除按钮操作 */
  660. handleDeleteFlowConfigDetails() {
  661. if (this.checkedFlowConfigDetails.length == 0) {
  662. this.$modal.msgError("请先选择要删除的流程配置体数据");
  663. } else {
  664. const flowConfigDetailsList = this.flowConfigDetailsList;
  665. const checkedFlowConfigDetails = this.checkedFlowConfigDetails;
  666. this.flowConfigDetailsList = flowConfigDetailsList.filter(function(item) {
  667. return checkedFlowConfigDetails.indexOf(item.index) == -1
  668. });
  669. }
  670. },
  671. /** 复选框选中数据 */
  672. handleFlowConfigDetailsSelectionChange(selection) {
  673. this.checkedFlowConfigDetails = selection.map(item => item.index)
  674. },
  675. /** 导出按钮操作 */
  676. handleExport() {
  677. this.download('ams/flowConfig/export', {
  678. ...this.queryParams
  679. }, `flowConfig_${new Date().getTime()}.xlsx`)
  680. },
  681. // 筛选节点
  682. filterNode(value, data) {
  683. if (!value) return true;
  684. return data.label.indexOf(value) !== -1;
  685. },
  686. qtyRangeChange(e) {
  687. // 范围变更检测
  688. if (e !== '' && e !== null) {
  689. let r = /^\d+(\.\d+)?$/  //小数
  690. let flag = r.test(e);
  691. if (flag) {
  692. this.form.qtyRange = '1-' + e
  693. this.qtyStart = 1
  694. this.qtyEnd = e
  695. } else {
  696. let arr = e.split('-')
  697. this.qtyStart = arr[0]
  698. this.qtyEnd = arr[1]
  699. }
  700. }
  701. },
  702. weightRangeChange(e) {
  703. // 范围变更检测
  704. if (e !== '' && e !== null) {
  705. let r = /^\d+(\.\d+)?$/  //小数
  706. let flag = r.test(e);
  707. if (flag) {
  708. this.form.weightRange = '1-' + e
  709. this.weightStart = 1
  710. this.weightEnd = e
  711. } else {
  712. let arr = e.split('-')
  713. this.weightStart = arr[0]
  714. this.weightEnd = arr[1]
  715. }
  716. }
  717. },
  718. init() {
  719. // 初始化物料分类
  720. querySkuTypeDict().then(response => {
  721. this.skuTypeCombo = response.data;
  722. });
  723. // 初始化供应商
  724. querySupplierDict().then(response => {
  725. this.supplierCombo = response.data;
  726. });
  727. // 初始化库位
  728. treeselectLocationZone().then(response => {
  729. this.locationFromOptions = response.data;
  730. this.locationToOptions = response.data;
  731. });
  732. },
  733. showHidden() {
  734. this.attShowFlag = !this.attShowFlag
  735. },
  736. addEvent() {
  737. let obj = {}
  738. obj.eventCode = ''
  739. obj.accessUrl = ''
  740. obj.accessParam = ''
  741. obj.callBackUrl = ''
  742. obj.callBackParam = ''
  743. this.eventData.push(obj)
  744. },
  745. delEvent(index) {
  746. this.eventData.splice(index, 1)
  747. }
  748. }
  749. };
  750. </script>