|
|
@@ -0,0 +1,514 @@
|
|
|
+<template>
|
|
|
+ <basic-container>
|
|
|
+ <avue-crud :option="optionForm"
|
|
|
+ :table-loading="loading"
|
|
|
+ :data="data"
|
|
|
+ :page.sync="page"
|
|
|
+ :permission="permissionList"
|
|
|
+ :before-open="beforeOpen"
|
|
|
+ v-model="form"
|
|
|
+ ref="crud"
|
|
|
+ @search-change="searchChange"
|
|
|
+ @search-reset="searchReset"
|
|
|
+ @selection-change="selectionChange"
|
|
|
+ @current-change="currentChange"
|
|
|
+ @size-change="sizeChange"
|
|
|
+ @refresh-change="refreshChange"
|
|
|
+ @on-load="onLoad">
|
|
|
+
|
|
|
+ <template slot="process" slot-scope="{row, index}">
|
|
|
+ <el-tag size="small " type="warning" plain v-if="row.process == 2">待確認</el-tag>
|
|
|
+ <el-tag size="small " type="success" plain v-if="row.process == 3">已確認</el-tag>
|
|
|
+ </template>
|
|
|
+
|
|
|
+ <template slot="menu" slot-scope="{row, index}">
|
|
|
+ <el-button size="small" class="el-button--text" @click="handleView(row, index)"><i class="el-icon-view"></i> 查 看</el-button>
|
|
|
+ <el-button size="small" class="el-button--text" v-if="permission.postchange_approve && row.process == 2" @click="approve(row, index)"><i class="el-icon-check"></i> 審 批</el-button>
|
|
|
+ </template>
|
|
|
+ </avue-crud>
|
|
|
+
|
|
|
+ </basic-container>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+ import {getList, getDetail, getDictByCode} from "@/api/bank/postchange";
|
|
|
+ import {mapGetters} from "vuex";
|
|
|
+ import {getUserList} from "@/api/system/user";
|
|
|
+
|
|
|
+ export default {
|
|
|
+ name: "tobeconfirm-postchange",
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ approveFlag: false,
|
|
|
+
|
|
|
+ form: {},
|
|
|
+ viewForm: {},
|
|
|
+ query: {},
|
|
|
+ loading: true,
|
|
|
+ settingVisible: false,
|
|
|
+ viewVisible: false,
|
|
|
+ personId: null,
|
|
|
+ personNo: null,
|
|
|
+ personName: null,
|
|
|
+ page: {
|
|
|
+ pageSize: 10,
|
|
|
+ currentPage: 1,
|
|
|
+ total: 0
|
|
|
+ },
|
|
|
+ selectionList: [],
|
|
|
+ userList: [],
|
|
|
+
|
|
|
+ optionForm: {
|
|
|
+ height:'auto',
|
|
|
+ calcHeight: 30,
|
|
|
+ tip: false,
|
|
|
+ searchShow: true,
|
|
|
+ searchMenuSpan: 6,
|
|
|
+ border: true,
|
|
|
+ index: true,
|
|
|
+ viewBtn: false,
|
|
|
+ addBtn: false,
|
|
|
+ editBtn: false,
|
|
|
+ delBtn: false,
|
|
|
+ selection: true,
|
|
|
+ dialogClickModal: false,
|
|
|
+ submitText: "確認",
|
|
|
+ column: [
|
|
|
+ {
|
|
|
+ label: "銀行號",
|
|
|
+ prop: "bankNo",
|
|
|
+ disabled: true,
|
|
|
+ rules: [{
|
|
|
+ required: true,
|
|
|
+ message: "请输入銀行號",
|
|
|
+ trigger: "blur"
|
|
|
+ }]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "機構號",
|
|
|
+ prop: "orgNo",
|
|
|
+ disabled: true,
|
|
|
+ rules: [{
|
|
|
+ required: true,
|
|
|
+ message: "请输入機構號",
|
|
|
+ trigger: "blur"
|
|
|
+ }]
|
|
|
+ },
|
|
|
+
|
|
|
+ {
|
|
|
+ label: "申請日期",
|
|
|
+ prop: "applyDate",
|
|
|
+ type: "datetime",
|
|
|
+ disabled: true,
|
|
|
+ format: "yyyy-MM-dd",
|
|
|
+ valueFormat: "yyyy-MM-dd",
|
|
|
+ rules: [{
|
|
|
+ required: true,
|
|
|
+ message: "请输入申請日期",
|
|
|
+ trigger: "blur"
|
|
|
+ }]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "生效日期",
|
|
|
+ prop: "effectiveDate",
|
|
|
+ type: "datetime",
|
|
|
+ disabled: true,
|
|
|
+ format: "yyyy-MM-dd",
|
|
|
+ valueFormat: "yyyy-MM-dd",
|
|
|
+ rules: [{
|
|
|
+ required: true,
|
|
|
+ message: "请输入生效日期",
|
|
|
+ trigger: "blur"
|
|
|
+ }]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "備註",
|
|
|
+ prop: "remark",
|
|
|
+ disabled: true,
|
|
|
+ rules: [{
|
|
|
+ required: false,
|
|
|
+ message: "请输入備註",
|
|
|
+ trigger: "blur"
|
|
|
+ }]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "进度",
|
|
|
+ prop: "process",
|
|
|
+ slot: true,
|
|
|
+ viewDisplay: false,
|
|
|
+ addDisplay: false,
|
|
|
+ editDisplay: false,
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ group: [
|
|
|
+ {
|
|
|
+ label: "人員配置",
|
|
|
+ prop: "personSetting",
|
|
|
+ column: [
|
|
|
+ {
|
|
|
+ label: "網點出納主管",
|
|
|
+ prop: "director",
|
|
|
+ type: "text",
|
|
|
+ span: 4,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "上期持有人",
|
|
|
+ prop: "preholder1",
|
|
|
+ span: 5,
|
|
|
+ type: "select",
|
|
|
+ multiple: true,
|
|
|
+ props: {
|
|
|
+ label: "text",
|
|
|
+ value: "ehr"
|
|
|
+ },
|
|
|
+ rules: [{
|
|
|
+ required: true,
|
|
|
+ message: "请输入持有人",
|
|
|
+ trigger: "blur"
|
|
|
+ }]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "目前持有人",
|
|
|
+ prop: "holder1",
|
|
|
+ span: 5,
|
|
|
+ type: "select",
|
|
|
+ multiple: true,
|
|
|
+ props: {
|
|
|
+ label: "text",
|
|
|
+ value: "ehr"
|
|
|
+ },
|
|
|
+ rules: [{
|
|
|
+ required: true,
|
|
|
+ message: "请输入持有人",
|
|
|
+ trigger: "blur"
|
|
|
+ }]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "上期後備人員",
|
|
|
+ prop: "prebackupPerson1",
|
|
|
+ span: 5,
|
|
|
+ type: "select",
|
|
|
+ multiple: true,
|
|
|
+ props: {
|
|
|
+ label: "text",
|
|
|
+ value: "ehr"
|
|
|
+ },
|
|
|
+
|
|
|
+ rules: [{
|
|
|
+ required: true,
|
|
|
+ message: "请输入後備人員",
|
|
|
+ trigger: "blur"
|
|
|
+ }]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "目前後備人員",
|
|
|
+ prop: "backupPerson1",
|
|
|
+ span: 5,
|
|
|
+ type: "select",
|
|
|
+ multiple: true,
|
|
|
+ props: {
|
|
|
+ label: "text",
|
|
|
+ value: "ehr"
|
|
|
+ },
|
|
|
+
|
|
|
+ rules: [{
|
|
|
+ required: true,
|
|
|
+ message: "请输入後備人員",
|
|
|
+ trigger: "blur"
|
|
|
+ }]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "網點出納專管員",
|
|
|
+ prop: "manager",
|
|
|
+ type: "text",
|
|
|
+ span: 4,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "上期持有人",
|
|
|
+ prop: "preholder2",
|
|
|
+ span: 5,
|
|
|
+ type: "select",
|
|
|
+ multiple: true,
|
|
|
+ props: {
|
|
|
+ label: "text",
|
|
|
+ value: "ehr"
|
|
|
+ },
|
|
|
+ rules: [{
|
|
|
+ required: true,
|
|
|
+ message: "请输入持有人",
|
|
|
+ trigger: "blur"
|
|
|
+ }]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "目前持有人",
|
|
|
+ prop: "holder2",
|
|
|
+ span: 5,
|
|
|
+ type: "select",
|
|
|
+ multiple: true,
|
|
|
+ props: {
|
|
|
+ label: "text",
|
|
|
+ value: "ehr"
|
|
|
+ },
|
|
|
+ rules: [{
|
|
|
+ required: true,
|
|
|
+ message: "请输入持有人",
|
|
|
+ trigger: "blur"
|
|
|
+ }]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "後備人員",
|
|
|
+ prop: "prebackupPerson2",
|
|
|
+ span: 5,
|
|
|
+ type: "select",
|
|
|
+ multiple: true,
|
|
|
+ props: {
|
|
|
+ label: "text",
|
|
|
+ value: "ehr"
|
|
|
+ },
|
|
|
+ rules: [{
|
|
|
+ required: true,
|
|
|
+ message: "请输入後備人員",
|
|
|
+ trigger: "blur"
|
|
|
+ }]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "目前後備人員",
|
|
|
+ prop: "backupPerson2",
|
|
|
+ span: 5,
|
|
|
+ type: "select",
|
|
|
+ multiple: true,
|
|
|
+ props: {
|
|
|
+ label: "text",
|
|
|
+ value: "ehr"
|
|
|
+ },
|
|
|
+ rules: [{
|
|
|
+ required: true,
|
|
|
+ message: "请输入後備人員",
|
|
|
+ trigger: "blur"
|
|
|
+ }]
|
|
|
+ },
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ data: []
|
|
|
+ };
|
|
|
+ },
|
|
|
+ computed: {
|
|
|
+ ...mapGetters(["permission"]),
|
|
|
+ permissionList() {
|
|
|
+ return {
|
|
|
+ addBtn: this.vaildData(this.permission.postchange_add, false),
|
|
|
+ viewBtn: this.vaildData(this.permission.postchange_view, false),
|
|
|
+ delBtn: this.vaildData(this.permission.postchange_delete, false),
|
|
|
+ editBtn: this.vaildData(this.permission.postchange_edit, false)
|
|
|
+ };
|
|
|
+ },
|
|
|
+ ids() {
|
|
|
+ let ids = [];
|
|
|
+ this.selectionList.forEach(ele => {
|
|
|
+ ids.push(ele.id);
|
|
|
+ });
|
|
|
+ return ids.join(",");
|
|
|
+ }
|
|
|
+ },
|
|
|
+ created() {
|
|
|
+ const _this = this;
|
|
|
+ getUserList().then(res => {
|
|
|
+ const data = res.data.data;
|
|
|
+ for (let i = 0; i < data.length; i++) {
|
|
|
+ let item = data[i];
|
|
|
+ item.text = item.name + '-' + item.ehr;
|
|
|
+ }
|
|
|
+ this.userList = data;
|
|
|
+ this.optionForm.group[0].column.forEach(item => {
|
|
|
+ if (item.prop.indexOf('holder') > -1 || item.prop.indexOf('backup') > -1){
|
|
|
+ item.dicData = data;
|
|
|
+ }
|
|
|
+ item.disabled = true;
|
|
|
+ })
|
|
|
+ this.initForm();
|
|
|
+ })
|
|
|
+ },
|
|
|
+ mounted() {
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ approve(row, index){
|
|
|
+ this.approveFlag = true;
|
|
|
+ this.$refs.crud.rowEdit(row, index)
|
|
|
+ },
|
|
|
+ handleView(row, index){
|
|
|
+ this.viewForm = row;
|
|
|
+ this.$refs.crud.rowView(row, index)
|
|
|
+ getDetail(this.viewForm.id).then(res => {
|
|
|
+ let data = res.data.data;
|
|
|
+ let holder = JSON.parse(data.holder);
|
|
|
+ let backupPerson = JSON.parse(data.backupPerson);
|
|
|
+ Object.assign(data, holder, backupPerson)
|
|
|
+ this.viewForm = data;
|
|
|
+
|
|
|
+ this.viewForm.previousId && getDetail(this.viewForm.previousId).then(res => {
|
|
|
+ let preData = res.data.data;
|
|
|
+ let preholderStr = preData.holder.replaceAll('holder', 'preholder');
|
|
|
+ let prebackupPersonStr = preData.backupPerson.replaceAll('backupPerson', 'prebackupPerson');
|
|
|
+ let propreholder = JSON.parse(preholderStr);
|
|
|
+ let prebackupPerson = JSON.parse(prebackupPersonStr);
|
|
|
+ Object.assign(data, propreholder, prebackupPerson)
|
|
|
+ this.viewForm = data;
|
|
|
+ })
|
|
|
+ });
|
|
|
+ // this.viewForm = row;
|
|
|
+ // this.$refs.crud.rowView(row, index)
|
|
|
+ },
|
|
|
+
|
|
|
+ beforeOpen(done, type) {
|
|
|
+ getDetail(this.form.id).then(res => {
|
|
|
+ let data = res.data.data;
|
|
|
+ let holder = JSON.parse(data.holder);
|
|
|
+ let backupPerson = JSON.parse(data.backupPerson);
|
|
|
+ Object.assign(data, holder, backupPerson)
|
|
|
+ // this.option.group = this.groupView;
|
|
|
+ this.form = data;
|
|
|
+ if (this.form.previousId){
|
|
|
+ console.log(new Date().getTime())
|
|
|
+ getDetail(this.form.previousId).then(res => {
|
|
|
+ console.log(new Date().getTime())
|
|
|
+
|
|
|
+ let preData = res.data.data;
|
|
|
+ let preholderStr = preData.holder.replaceAll('holder', 'preholder');
|
|
|
+ let prebackupPersonStr = preData.backupPerson.replaceAll('backupPerson', 'prebackupPerson');
|
|
|
+ let propreholder = JSON.parse(preholderStr);
|
|
|
+ let prebackupPerson = JSON.parse(prebackupPersonStr);
|
|
|
+ Object.assign(data, propreholder, prebackupPerson)
|
|
|
+ console.log(new Date().getTime())
|
|
|
+
|
|
|
+ this.form = data;
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ });
|
|
|
+ done();
|
|
|
+ },
|
|
|
+ initForm(){
|
|
|
+ let holderObj = {
|
|
|
+ label: "持有人",
|
|
|
+ prop: "holder",
|
|
|
+ span: 11,
|
|
|
+ type: "select",
|
|
|
+ multiple: true,
|
|
|
+ dicData: this.userList,
|
|
|
+ props: {
|
|
|
+ label: "text",
|
|
|
+ value: "ehr"
|
|
|
+ },
|
|
|
+ }
|
|
|
+ let backupObj = {
|
|
|
+ label: "後備人員",
|
|
|
+ prop: "backupPerson",
|
|
|
+ span: 11,
|
|
|
+ type: "select",
|
|
|
+ multiple: true,
|
|
|
+ dicData: this.userList,
|
|
|
+ props: {
|
|
|
+ label: "text",
|
|
|
+ value: "ehr"
|
|
|
+ },
|
|
|
+ }
|
|
|
+
|
|
|
+ getDictByCode("cashier_key_type").then(res => {
|
|
|
+ const data = res.data.data;
|
|
|
+ let $groupView = this.optionForm.group;
|
|
|
+ data.forEach(item => {
|
|
|
+ let code = item.dictKey;
|
|
|
+ let value = item.dictValue;
|
|
|
+ let $item12 = {};
|
|
|
+ $item12.label = value;
|
|
|
+ let column12 = [];
|
|
|
+ getDictByCode(code).then(res2 => {
|
|
|
+ const data2 = res2.data.data;
|
|
|
+ data2.forEach(item2 => {
|
|
|
+ let $item2 = {}
|
|
|
+ let $item22 = {}
|
|
|
+ $item2.label = item2.dictValue;
|
|
|
+ $item22.label = item2.dictValue;
|
|
|
+ // $item2.prop = item2.dictKey;
|
|
|
+ $item2.type = 'text';
|
|
|
+ $item22.type = 'text';
|
|
|
+ $item2.span = 2;
|
|
|
+ $item22.span = 4;
|
|
|
+ column12.push($item22)
|
|
|
+ let holderItem = this.deepClone(holderObj);
|
|
|
+ let holderItem2 = this.deepClone(holderObj);
|
|
|
+ let backupItem = this.deepClone(backupObj);
|
|
|
+ let backupItem2 = this.deepClone(backupObj);
|
|
|
+ holderItem.prop = 'holder-' + item.dictKey + '-' + item2.dictKey;
|
|
|
+ holderItem2.prop = 'preholder-' + item.dictKey + '-' + item2.dictKey;
|
|
|
+ holderItem.span = 5;
|
|
|
+ holderItem2.span = 5;
|
|
|
+ // holderItem.label = '目前' + holderItem.label;
|
|
|
+ holderItem2.label = '上期' + holderItem2.label;
|
|
|
+ let h1 = this.deepClone(holderItem);
|
|
|
+ h1.span = 11;
|
|
|
+ column12.push(holderItem2)
|
|
|
+ column12.push(holderItem)
|
|
|
+ backupItem.prop = 'backupPerson-' + item.dictKey + '-' + item2.dictKey;
|
|
|
+ backupItem2.prop = 'prebackupPerson-' + item.dictKey + '-' + item2.dictKey;
|
|
|
+ backupItem.span = 5;
|
|
|
+ backupItem2.span = 5;
|
|
|
+ // backupItem.label = '目前' + backupItem.label;
|
|
|
+ backupItem2.label = '上期' + backupItem2.label;
|
|
|
+ let b1 = this.deepClone(backupItem);
|
|
|
+ b1.span = 11;
|
|
|
+ column12.push(backupItem2)
|
|
|
+ column12.push(backupItem)
|
|
|
+ })
|
|
|
+ });
|
|
|
+ $item12.column = column12;
|
|
|
+ $groupView.push($item12)
|
|
|
+ // this.optionForm.group = $groupView
|
|
|
+ })
|
|
|
+ });
|
|
|
+ },
|
|
|
+ searchReset() {
|
|
|
+ this.query = {};
|
|
|
+ this.onLoad(this.page);
|
|
|
+ },
|
|
|
+ searchChange(params, done) {
|
|
|
+ this.query = params;
|
|
|
+ this.page.currentPage = 1;
|
|
|
+ this.onLoad(this.page, params);
|
|
|
+ done();
|
|
|
+ },
|
|
|
+ selectionChange(list) {
|
|
|
+ this.selectionList = list;
|
|
|
+ },
|
|
|
+ selectionClear() {
|
|
|
+ this.selectionList = [];
|
|
|
+ this.$refs.crud.toggleSelection();
|
|
|
+ },
|
|
|
+ currentChange(currentPage){
|
|
|
+ this.page.currentPage = currentPage;
|
|
|
+ },
|
|
|
+ sizeChange(pageSize){
|
|
|
+ this.page.pageSize = pageSize;
|
|
|
+ },
|
|
|
+ refreshChange() {
|
|
|
+ this.onLoad(this.page, this.query);
|
|
|
+ },
|
|
|
+ onLoad(page, params = {}) {
|
|
|
+ this.loading = true;
|
|
|
+ params.process = 2;
|
|
|
+ getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
|
|
|
+ const data = res.data.data;
|
|
|
+ this.page.total = data.total;
|
|
|
+ this.data = data.records;
|
|
|
+ this.loading = false;
|
|
|
+ this.selectionClear();
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+</script>
|
|
|
+
|
|
|
+<style>
|
|
|
+</style>
|