tobeconfirm-returns.vue 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429
  1. <template>
  2. <basic-container>
  3. <avue-crud :option="option"
  4. :table-loading="loading"
  5. :data="data"
  6. :page.sync="page"
  7. :permission="permissionList"
  8. :before-open="beforeOpen"
  9. v-model="form"
  10. ref="crud"
  11. @row-update="rowUpdate"
  12. @row-save="rowSave"
  13. @row-del="rowDel"
  14. @search-change="searchChange"
  15. @search-reset="searchReset"
  16. @selection-change="selectionChange"
  17. @current-change="currentChange"
  18. @size-change="sizeChange"
  19. @refresh-change="refreshChange"
  20. @on-load="onLoad">
  21. <template slot="menuLeft">
  22. </template>
  23. <template slot="menu" slot-scope="{row, index}">
  24. <el-button size="small" class="el-button--text" v-if="permission.returns_view" @click="$refs.crud.rowView(row, index)"><i class="el-icon-view"></i> 查 看</el-button>
  25. <el-button size="small" class="el-button--text" v-if="permission.returns_approve && row.process == 3" @click="approve(row, index)"><i class="el-icon-check"></i> 審 批</el-button>
  26. </template>
  27. <template slot="process" slot-scope="{row, index}">
  28. <el-tag size="small " type="primary" plain v-if="row.process == 2">待發佈</el-tag>
  29. <el-tag size="small " type="warning" plain v-if="row.process == 3">待確認</el-tag>
  30. <el-tag size="small " type="success" plain v-if="row.process == 4">已確認</el-tag>
  31. </template>
  32. </avue-crud>
  33. <el-dialog title="信息審核"
  34. append-to-body
  35. :visible.sync="approveVisible"
  36. width="70%">
  37. <returns-approve :form="approveForm" @close="approveVisible = false, onLoad(page)"></returns-approve>
  38. </el-dialog>
  39. </basic-container>
  40. </template>
  41. <script>
  42. import {getList, getDetail, add, update, remove, returnsSubmit, settingSave, getSetting} from "@/api/bank/returns";
  43. import {mapGetters} from "vuex";
  44. import {dateFormat} from "../../util/date";
  45. import ReturnsComfire from "../../components/common/returns-comfire";
  46. import ReturnsApprove from "../../components/common/returns-approve";
  47. import FlowSettings from "../../components/common/flow-settings";
  48. import ReturnsIssue from "../../components/common/returns-issue";
  49. export default {
  50. name: "tobeconfirm-returns",
  51. components: {ReturnsIssue, FlowSettings, ReturnsApprove, ReturnsComfire},
  52. data() {
  53. return {
  54. approveForm: {},
  55. approveVisible: false,
  56. form: {},
  57. query: {},
  58. loading: true,
  59. page: {
  60. pageSize: 10,
  61. currentPage: 1,
  62. total: 0
  63. },
  64. selectionList: [],
  65. option: {
  66. height:'auto',
  67. calcHeight: 30,
  68. tip: false,
  69. searchShow: true,
  70. searchMenuSpan: 6,
  71. border: true,
  72. index: true,
  73. viewBtn: false,
  74. editBtn: false,
  75. addBtn: false,
  76. delBtn: false,
  77. selection: true,
  78. dialogClickModal: false,
  79. column: [
  80. {
  81. label: "業務類型",
  82. prop: "isPublic",
  83. type: "select",
  84. dataType: "string",
  85. dicUrl: `/api/blade-system/dict/dictionary?code=business_type`,
  86. props: {
  87. label: "dictValue",
  88. value: "dictKey"
  89. },
  90. rules: [{
  91. required: true,
  92. message: "请输入業務類型",
  93. trigger: "blur"
  94. }]
  95. },
  96. {
  97. label: "銀行號",
  98. prop: "bankNo",
  99. rules: [{
  100. required: true,
  101. message: "请输入銀行號",
  102. trigger: "blur"
  103. }]
  104. },
  105. {
  106. label: "機構號",
  107. prop: "orgNo",
  108. rules: [{
  109. required: true,
  110. message: "请输入機構號",
  111. trigger: "blur"
  112. }]
  113. },
  114. {
  115. label: "序號",
  116. prop: "serialNo",
  117. rules: [{
  118. required: true,
  119. message: "请输入序號",
  120. trigger: "blur"
  121. }]
  122. },
  123. {
  124. label: "支行",
  125. prop: "subBank",
  126. rules: [{
  127. required: true,
  128. message: "请输入支行",
  129. trigger: "blur"
  130. }]
  131. },
  132. {
  133. label: "客戶名稱",
  134. prop: "customerName",
  135. rules: [{
  136. required: true,
  137. message: "请输入客戶名稱",
  138. trigger: "blur"
  139. }]
  140. },
  141. {
  142. label: "狀態",
  143. prop: "status",
  144. type: "select",
  145. dataType: "string",
  146. dicUrl: `/api/blade-system/dict/dictionary?code=returns_status`,
  147. props: {
  148. label: "dictValue",
  149. value: "dictKey"
  150. },
  151. rules: [{
  152. required: true,
  153. message: "请输入狀態",
  154. trigger: "blur"
  155. }]
  156. },
  157. {
  158. label: "退件原因",
  159. prop: "reason",
  160. rules: [{
  161. required: true,
  162. message: "请输入退件原因",
  163. trigger: "blur"
  164. }]
  165. },
  166. {
  167. label: "備註",
  168. prop: "remark",
  169. rules: [{
  170. required: true,
  171. message: "请输入備註",
  172. trigger: "blur"
  173. }]
  174. },
  175. {
  176. label: "條碼",
  177. prop: "barCode",
  178. rules: [{
  179. required: true,
  180. message: "请输入條碼",
  181. trigger: "blur"
  182. }]
  183. },
  184. {
  185. label: "接辦行經辦",
  186. prop: "handlingBank",
  187. rules: [{
  188. required: true,
  189. message: "请输入接辦行經辦",
  190. trigger: "blur"
  191. }]
  192. },
  193. {
  194. label: "接辦行覆核",
  195. prop: "handlingBankReview",
  196. rules: [{
  197. required: true,
  198. message: "请输入接辦行覆核",
  199. trigger: "blur"
  200. }]
  201. },
  202. {
  203. label: "處理日期",
  204. prop: "handlingDate",
  205. type: "datetime",
  206. format: "yyyy/MM/dd",
  207. valueFormat: "yyyy/MM/dd",
  208. rules: [{
  209. required: true,
  210. message: "请输入處理日期",
  211. trigger: "blur"
  212. }]
  213. },
  214. {
  215. label: "經辦",
  216. prop: "handler",
  217. rules: [{
  218. required: true,
  219. message: "请输入經辦",
  220. trigger: "blur"
  221. }]
  222. },
  223. {
  224. label: "處理狀態",
  225. prop: "handlingStatus",
  226. type: "select",
  227. dataType: "string",
  228. dicUrl: `/api/blade-system/dict/dictionary?code=processing_status`,
  229. props: {
  230. label: "dictValue",
  231. value: "dictKey"
  232. },
  233. rules: [{
  234. required: true,
  235. message: "请输入處理狀態",
  236. trigger: "blur"
  237. }]
  238. },
  239. {
  240. label: "支行備註",
  241. prop: "bankRemark",
  242. viewDisplay: false,
  243. editDisplay: false,
  244. hide: true,
  245. rules: [{
  246. required: false,
  247. message: "请输入支行備註",
  248. trigger: "blur"
  249. }]
  250. },
  251. {
  252. label: "支行確認人員工號",
  253. prop: "bankConfirmNo",
  254. viewDisplay: false,
  255. editDisplay: false,
  256. hide: true,
  257. rules: [{
  258. required: true,
  259. message: "请输入支行確認人員工號",
  260. trigger: "blur"
  261. }]
  262. },
  263. {
  264. label: "支行確認人姓名",
  265. prop: "bankConfirmName",
  266. viewDisplay: false,
  267. editDisplay: false,
  268. hide: true,
  269. rules: [{
  270. required: true,
  271. message: "请输入支行確認人姓名",
  272. trigger: "blur"
  273. }]
  274. },
  275. {
  276. label: "確認日期",
  277. prop: "bankConfirmTime",
  278. type: "datetime",
  279. format: "yyyy-MM-dd HH:mm:ss",
  280. valueFormat: "yyyy-MM-dd HH:mm:ss",
  281. viewDisplay: false,
  282. editDisplay: false,
  283. hide: true,
  284. rules: [{
  285. required: true,
  286. message: "请输入確認日期",
  287. trigger: "blur"
  288. }]
  289. },
  290. {
  291. label: "進度",
  292. prop: "process",
  293. viewDisplay: false,
  294. editDisplay: false,
  295. rules: [{
  296. required: true,
  297. message: "请输入節點",
  298. trigger: "blur"
  299. }]
  300. },
  301. ]
  302. },
  303. data: [],
  304. data2: [],
  305. temForm: {},
  306. attachForm: {},
  307. attachBox: false,
  308. attachOption: {
  309. submitBtn: false,
  310. emptyBtn: false,
  311. column: [
  312. {
  313. label: '文件上传',
  314. prop: 'attachFile',
  315. type: 'upload',
  316. drag: true,
  317. loadText: '文件上传中,请稍等',
  318. span: 24,
  319. propsHttp: {
  320. res: 'data'
  321. },
  322. action: "/api/bank/returns/readExcel"
  323. }
  324. ]
  325. }
  326. };
  327. },
  328. computed: {
  329. ...mapGetters(["permission"]),
  330. permissionList() {
  331. return {
  332. addBtn: this.vaildData(this.permission.returns_add, false),
  333. viewBtn: this.vaildData(this.permission.returns_view, false),
  334. delBtn: this.vaildData(this.permission.returns_delete, false),
  335. editBtn: this.vaildData(this.permission.returns_edit, false)
  336. };
  337. },
  338. ids() {
  339. let ids = [];
  340. this.selectionList.forEach(ele => {
  341. ids.push(ele.id);
  342. });
  343. return ids.join(",");
  344. }
  345. },
  346. methods: {
  347. approve(row, index){
  348. this.approveVisible = true;
  349. this.approveForm = row;
  350. },
  351. infoFormat(row){
  352. row.isPublic = row.isPublic == '對公' ? 1 : 0;
  353. let arr = row.subBank.split(' ');
  354. row.subOrgNo = arr[0];
  355. row.subBank = arr[1];
  356. if (row.status == '退件'){
  357. row.status = '1';
  358. }else if (row.status == 'HOLD'){
  359. row.status = '2';
  360. }else if (row.status == '完成'){
  361. row.status = '3';
  362. }
  363. return row;
  364. },
  365. beforeOpen(done, type) {
  366. if (["edit", "view"].includes(type)) {
  367. getDetail(this.form.id).then(res => {
  368. this.form = res.data.data;
  369. });
  370. if (type == "view"){
  371. this.findObject(this.option.column, "bankRemark").viewDisplay = this.form.process == 3;
  372. this.findObject(this.option.column, "bankConfirmNo").viewDisplay = this.form.process == 3;
  373. this.findObject(this.option.column, "bankConfirmName").viewDisplay = this.form.process == 3;
  374. this.findObject(this.option.column, "bankConfirmTime").viewDisplay = this.form.process == 3;
  375. }
  376. }
  377. done();
  378. },
  379. searchReset() {
  380. this.query = {};
  381. this.onLoad(this.page);
  382. },
  383. searchChange(params, done) {
  384. this.query = params;
  385. this.page.currentPage = 1;
  386. this.onLoad(this.page, params);
  387. done();
  388. },
  389. selectionChange(list) {
  390. this.selectionList = list;
  391. },
  392. selectionClear() {
  393. this.selectionList = [];
  394. this.$refs.crud.toggleSelection();
  395. },
  396. currentChange(currentPage){
  397. this.page.currentPage = currentPage;
  398. },
  399. sizeChange(pageSize){
  400. this.page.pageSize = pageSize;
  401. },
  402. refreshChange() {
  403. this.onLoad(this.page, this.query);
  404. },
  405. onLoad(page, params = {}) {
  406. this.loading = true;
  407. params.process = 3; //待確認
  408. getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
  409. const data = res.data.data;
  410. this.page.total = data.total;
  411. this.data = data.records;
  412. this.loading = false;
  413. this.selectionClear();
  414. });
  415. }
  416. }
  417. };
  418. </script>
  419. <style>
  420. </style>