|
@@ -39,21 +39,98 @@
|
|
|
@click="handleDelete">刪 除
|
|
@click="handleDelete">刪 除
|
|
|
</el-button>
|
|
</el-button>
|
|
|
</template>
|
|
</template>
|
|
|
|
|
+
|
|
|
|
|
+ <template slot="fileForm" slot-scope="{row}">
|
|
|
|
|
+ <avue-form ref="form" :option="attachOption" v-model="attachForm" :upload-after="uploadAfter" :upload-error="uploadError" :upload-delete="uploadDelete" :upload-preview="uploadPreview">
|
|
|
|
|
+ </avue-form>
|
|
|
|
|
+ </template>
|
|
|
|
|
+
|
|
|
|
|
+ <template slot="receiverNameForm" slot-scope="{row}">
|
|
|
|
|
+ <select-user :multiple="false" :name="approvePerson.name" :callback="selectCallback"></select-user>
|
|
|
|
|
+<!-- <select-dialog-user :id="approvePerson.id" :name="approvePerson.name" :ehr="approvePerson.ehr" :disabled="false" :callback="selectCallback"></select-dialog-user>-->
|
|
|
|
|
+ </template>
|
|
|
|
|
+
|
|
|
|
|
+ <template slot-scope="{row}" slot="menu">
|
|
|
|
|
+ <el-button type="text" icon="el-icon-download" size="small" v-if="row.file" @click="handleDownload(row)">下載</el-button>
|
|
|
|
|
+ <el-button type="text" icon="el-icon-check" size="small" v-if="approveSwitch == 1 && row.process > 0 && row.process < approveNum && userInfo.user_id == row.receiverId"
|
|
|
|
|
+ @click.native="approveShow(row)">審批</el-button>
|
|
|
|
|
+ </template>
|
|
|
</avue-crud>
|
|
</avue-crud>
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ <el-dialog :append-to-body="true" :modal-append-to-body="false" :destroy-on-close="true" :visible.sync="approveVisible" title="審批" width="70%">
|
|
|
|
|
+ <div v-if="approveVisible">
|
|
|
|
|
+ <avue-form ref="approveForm" :option="approveOption" v-model="approveForm" @submit="approveYes">
|
|
|
|
|
+ <template slot="receiverName">
|
|
|
|
|
+ <select-user :multiple="false" :name="approvePerson.name" :callback="selectCallback"></select-user>
|
|
|
|
|
+<!-- <select-dialog-user :id="approvePerson.id" :name="approvePerson.name" :ehr="approvePerson.ehr" :disabled="false" :callback="selectCallback"></select-dialog-user>-->
|
|
|
|
|
+ </template>
|
|
|
|
|
+
|
|
|
|
|
+ <template slot-scope="scope" slot="menuForm">
|
|
|
|
|
+ <el-button type="danger" size="small" v-if="bohuiBtn" icon="el-icon-close" @click="approveNo">駁回</el-button>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </avue-form>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </el-dialog>
|
|
|
</div>
|
|
</div>
|
|
|
</basic-container>
|
|
</basic-container>
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
|
<script>
|
|
<script>
|
|
|
- import {getList, getDetail, add, update, remove} from "@/api/bank/autodata";
|
|
|
|
|
|
|
+ import {getList, getDetail, add, update, remove, approveYes, approveNo} from "@/api/bank/autodata";
|
|
|
import {mapGetters} from "vuex";
|
|
import {mapGetters} from "vuex";
|
|
|
import {getSelectAndPermissionByDept} from "@/api/bank/autostruct";
|
|
import {getSelectAndPermissionByDept} from "@/api/bank/autostruct";
|
|
|
import {opStr2opObj} from "../../api/bank/autostruct";
|
|
import {opStr2opObj} from "../../api/bank/autostruct";
|
|
|
import { getCurrentDept } from "@/api/system/dept";
|
|
import { getCurrentDept } from "@/api/system/dept";
|
|
|
|
|
+ import {downloadFileBase64, downloadFileBlob} from "@/util/util";
|
|
|
|
|
+ import SelectDialogUser from "../../components/select-dialog/select-dialog-user";
|
|
|
|
|
+ import SelectUser from "../../components/select-dialog/select-user";
|
|
|
|
|
|
|
|
export default {
|
|
export default {
|
|
|
|
|
+ components: {SelectUser, SelectDialogUser},
|
|
|
data() {
|
|
data() {
|
|
|
return {
|
|
return {
|
|
|
|
|
+
|
|
|
|
|
+ attachBox: false,
|
|
|
|
|
+ attachForm: {},
|
|
|
|
|
+ attachOption: {
|
|
|
|
|
+ submitBtn: false,
|
|
|
|
|
+ emptyBtn: false,
|
|
|
|
|
+ column: [
|
|
|
|
|
+ {
|
|
|
|
|
+ // label: '附件上傳',
|
|
|
|
|
+ prop: 'attachFile',
|
|
|
|
|
+ type: 'upload',
|
|
|
|
|
+ disabled: true,
|
|
|
|
|
+ drag: true,
|
|
|
|
|
+ loadText: '模板上傳中,請稍等',
|
|
|
|
|
+ span: 24,
|
|
|
|
|
+ fileSize: 5120,
|
|
|
|
|
+ propsHttp: {
|
|
|
|
|
+ res: 'data'
|
|
|
|
|
+ },
|
|
|
|
|
+ name: "namesrc",
|
|
|
|
|
+ action: "/api/blade-resource/oss/endpoint/put-file-attach"
|
|
|
|
|
+ }
|
|
|
|
|
+ ]
|
|
|
|
|
+ },
|
|
|
|
|
+
|
|
|
|
|
+ approvePerson: {
|
|
|
|
|
+ id: '',
|
|
|
|
|
+ name: '',
|
|
|
|
|
+ ehr: '',
|
|
|
|
|
+ },
|
|
|
|
|
+ approveSwitch: false,
|
|
|
|
|
+ bohuiBtn: false,
|
|
|
|
|
+ approveNum: 0,
|
|
|
|
|
+ approveVisible: false,
|
|
|
|
|
+ approveForm: {},
|
|
|
|
|
+ approveOption: {
|
|
|
|
|
+ submitText: "通過",
|
|
|
|
|
+ emptyBtn: false,
|
|
|
|
|
+ column: []
|
|
|
|
|
+ },
|
|
|
|
|
+
|
|
|
show: false,
|
|
show: false,
|
|
|
value: '',
|
|
value: '',
|
|
|
tableList: [],
|
|
tableList: [],
|
|
@@ -108,6 +185,25 @@
|
|
|
trigger: "blur"
|
|
trigger: "blur"
|
|
|
}]
|
|
}]
|
|
|
},
|
|
},
|
|
|
|
|
+ {
|
|
|
|
|
+ label: "審批人",
|
|
|
|
|
+ prop: "receiverName",
|
|
|
|
|
+ viewDisplay: false,
|
|
|
|
|
+ addDisplay: true,
|
|
|
|
|
+ editDisplay: true,
|
|
|
|
|
+ formslot: true,
|
|
|
|
|
+ rules: [{
|
|
|
|
|
+ required: true,
|
|
|
|
|
+ message: "請選擇審批人",
|
|
|
|
|
+ trigger: "change"
|
|
|
|
|
+ }]
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ label: "備註",
|
|
|
|
|
+ prop: "remark",
|
|
|
|
|
+ type: "textarea",
|
|
|
|
|
+ span: 24,
|
|
|
|
|
+ }
|
|
|
]
|
|
]
|
|
|
};
|
|
};
|
|
|
},
|
|
},
|
|
@@ -135,6 +231,70 @@
|
|
|
this.initTableList();
|
|
this.initTableList();
|
|
|
},
|
|
},
|
|
|
methods: {
|
|
methods: {
|
|
|
|
|
+ approveYes(data, done){
|
|
|
|
|
+ let row = this.deepClone(this.approveForm);
|
|
|
|
|
+ delete row.createTime,delete row.createUser,delete row.createUserName;
|
|
|
|
|
+ let form = this.beforeSave(row);
|
|
|
|
|
+ form.id = row.id, form.remark = row.remark;
|
|
|
|
|
+ approveYes(form).then(res => {
|
|
|
|
|
+ this.approveVisible = false;
|
|
|
|
|
+ this.onLoad(this.page);
|
|
|
|
|
+ this.$message({
|
|
|
|
|
+ type: "success",
|
|
|
|
|
+ message: "審批成功!"
|
|
|
|
|
+ });
|
|
|
|
|
+ })
|
|
|
|
|
+ done();
|
|
|
|
|
+ },
|
|
|
|
|
+ approveNo(){
|
|
|
|
|
+ let row = this.deepClone(this.approveForm);
|
|
|
|
|
+ delete row.createTime,delete row.createUser,delete row.createUserName;
|
|
|
|
|
+ let form = this.beforeSave(row);
|
|
|
|
|
+ form.id = row.id, form.remark = row.remark;
|
|
|
|
|
+ approveNo(form).then(res => {
|
|
|
|
|
+ this.approveVisible = false;
|
|
|
|
|
+ this.onLoad(this.page);
|
|
|
|
|
+ this.$message({
|
|
|
|
|
+ type: "success",
|
|
|
|
|
+ message: "駁回成功!"
|
|
|
|
|
+ });
|
|
|
|
|
+ })
|
|
|
|
|
+ },
|
|
|
|
|
+ approveShow(row){
|
|
|
|
|
+ this.bohuiBtn = row.process > 1;
|
|
|
|
|
+ this.approveForm = row;
|
|
|
|
|
+ delete this.approveForm.receiverName;
|
|
|
|
|
+ this.approvePerson.name = '';
|
|
|
|
|
+ this.approveVisible = true;
|
|
|
|
|
+ },
|
|
|
|
|
+ selectCallback(list){
|
|
|
|
|
+ let data = list[0];
|
|
|
|
|
+ this.form.receiverName = data.name;
|
|
|
|
|
+ this.approveForm.receiverName = data.name;
|
|
|
|
|
+ this.approvePerson.id = data.id;
|
|
|
|
|
+ this.approvePerson.name = data.name;
|
|
|
|
|
+ this.approvePerson.ehr = data.ehr;
|
|
|
|
|
+ },
|
|
|
|
|
+ handleDownload(row) {
|
|
|
|
|
+ let fileName = row.file.split("/").pop();
|
|
|
|
|
+ downloadFileBase64(row.file, fileName);
|
|
|
|
|
+ },
|
|
|
|
|
+
|
|
|
|
|
+ uploadError(error,column){
|
|
|
|
|
+ this.$message.warning(error + ',不能大於' + column.fileSize + 'KB');
|
|
|
|
|
+ },
|
|
|
|
|
+ uploadAfter(res, done, loading, column) {
|
|
|
|
|
+ this.attachForm.attachFile = [res];
|
|
|
|
|
+ this.form.file = res.link;
|
|
|
|
|
+ this.attachBox = false;
|
|
|
|
|
+ done(res);
|
|
|
|
|
+ },
|
|
|
|
|
+ uploadDelete(column,file) {
|
|
|
|
|
+ return this.$confirm(`是否確定移除該選項?`);
|
|
|
|
|
+ },
|
|
|
|
|
+ uploadPreview(){
|
|
|
|
|
+ },
|
|
|
|
|
+
|
|
|
initTableList(){
|
|
initTableList(){
|
|
|
getSelectAndPermissionByDept().then(res => {
|
|
getSelectAndPermissionByDept().then(res => {
|
|
|
const data = res.data.data;
|
|
const data = res.data.data;
|
|
@@ -149,6 +309,8 @@
|
|
|
let _this = this;
|
|
let _this = this;
|
|
|
this.show = false;
|
|
this.show = false;
|
|
|
let tableStruct = this.getItemById(value);
|
|
let tableStruct = this.getItemById(value);
|
|
|
|
|
+ this.approveSwitch = tableStruct.approveSwitch;
|
|
|
|
|
+ this.approveNum = tableStruct.num;
|
|
|
let option = opStr2opObj(tableStruct.columns);
|
|
let option = opStr2opObj(tableStruct.columns);
|
|
|
option.addBtn = tableStruct.canWrite;
|
|
option.addBtn = tableStruct.canWrite;
|
|
|
_this.deleteBatch = tableStruct.isManageRole;
|
|
_this.deleteBatch = tableStruct.isManageRole;
|
|
@@ -166,10 +328,27 @@
|
|
|
return res.data;
|
|
return res.data;
|
|
|
};
|
|
};
|
|
|
}
|
|
}
|
|
|
|
|
+ if (item.prop === 'file'){
|
|
|
|
|
+ item.hide = true;
|
|
|
|
|
+ }
|
|
|
});
|
|
});
|
|
|
option.column.push(this.defaultColumn[0]);
|
|
option.column.push(this.defaultColumn[0]);
|
|
|
option.column.push(this.defaultColumn[1]);
|
|
option.column.push(this.defaultColumn[1]);
|
|
|
|
|
+ //開流程 && 串行 && 逐級審批
|
|
|
|
|
+ if (tableStruct.approveSwitch == 1 && tableStruct.approveType == 1 && tableStruct.settingType == 2){
|
|
|
|
|
+ // 增加審批人選擇
|
|
|
|
|
+ option.column.push(this.defaultColumn[2])
|
|
|
|
|
+ }
|
|
|
this.option = option;
|
|
this.option = option;
|
|
|
|
|
+ this.approveOption.column = this.deepClone(option.column);
|
|
|
|
|
+ this.approveOption.column.forEach(item => {
|
|
|
|
|
+ item.disabled = true;
|
|
|
|
|
+ if (item.prop == 'receiverName'){
|
|
|
|
|
+ item.disabled = false;
|
|
|
|
|
+ }
|
|
|
|
|
+ })
|
|
|
|
|
+ this.approveOption.column.push(this.defaultColumn[3])
|
|
|
|
|
+
|
|
|
setTimeout(() => {
|
|
setTimeout(() => {
|
|
|
_this.show = true;
|
|
_this.show = true;
|
|
|
_this.onLoad(this.page)
|
|
_this.onLoad(this.page)
|
|
@@ -190,7 +369,7 @@
|
|
|
let n = 1;
|
|
let n = 1;
|
|
|
for(let i = 0; i < keys.length; i++){
|
|
for(let i = 0; i < keys.length; i++){
|
|
|
let item = {};
|
|
let item = {};
|
|
|
- if (keys[i].indexOf("$") == 0 || keys[i].indexOf("createTime") != -1 || keys[i].indexOf("createUser") != -1){
|
|
|
|
|
|
|
+ if (keys[i].indexOf("$") == 0 || keys[i] == ("id") || keys[i].indexOf("createTime") != -1 || keys[i].indexOf("createUser") != -1 || keys[i].indexOf("receiverName") != -1 || keys[i].indexOf("remark") != -1){
|
|
|
}else{
|
|
}else{
|
|
|
item['' + keys[i]] = row[''+keys[i]];
|
|
item['' + keys[i]] = row[''+keys[i]];
|
|
|
form['params'+(n++)] = JSON.stringify(item);
|
|
form['params'+(n++)] = JSON.stringify(item);
|
|
@@ -198,6 +377,9 @@
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
form.tableId = this.value;
|
|
form.tableId = this.value;
|
|
|
|
|
+ form.receiverId = this.approvePerson.id;
|
|
|
|
|
+ form.receiverName = this.approvePerson.name;
|
|
|
|
|
+ form.receiverNo = this.approvePerson.ehr;
|
|
|
return form;
|
|
return form;
|
|
|
},
|
|
},
|
|
|
rowSave(row, done, loading) {
|
|
rowSave(row, done, loading) {
|
|
@@ -217,7 +399,8 @@
|
|
|
},
|
|
},
|
|
|
rowUpdate(row, index, done, loading) {
|
|
rowUpdate(row, index, done, loading) {
|
|
|
let formTem = this.deepClone(row);
|
|
let formTem = this.deepClone(row);
|
|
|
- delete formTem.$index,delete formTem.createDept,delete formTem.createTime,delete formTem.createUser,delete formTem.id;
|
|
|
|
|
|
|
+ delete formTem.$index,delete formTem.createDept,delete formTem.createTime,delete formTem.createUser;
|
|
|
|
|
+ // ,delete formTem.id
|
|
|
let form = this.beforeSave(formTem);
|
|
let form = this.beforeSave(formTem);
|
|
|
form.id = row.id;
|
|
form.id = row.id;
|
|
|
update(form).then(() => {
|
|
update(form).then(() => {
|
|
@@ -272,6 +455,20 @@
|
|
|
});
|
|
});
|
|
|
},
|
|
},
|
|
|
beforeOpen(done, type) {
|
|
beforeOpen(done, type) {
|
|
|
|
|
+
|
|
|
|
|
+ // 查看時,把上傳組件設為禁用
|
|
|
|
|
+ this.attachForm = {};
|
|
|
|
|
+ this.attachOption.column[0].disabled = type == 'view';
|
|
|
|
|
+
|
|
|
|
|
+ let data = this.form;
|
|
|
|
|
+ if (data.file){
|
|
|
|
|
+ let fileName = data.file.split("/").pop();
|
|
|
|
|
+ data.name = fileName;
|
|
|
|
|
+ this.attachForm.attachFile = [
|
|
|
|
|
+ {label: data.name, value: fileName}
|
|
|
|
|
+ ];
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
if (["edit", "view"].includes(type)) {
|
|
if (["edit", "view"].includes(type)) {
|
|
|
/*getDetail(this.form.id).then(res => {
|
|
/*getDetail(this.form.id).then(res => {
|
|
|
this.form = res.data.data;
|
|
this.form = res.data.data;
|
|
@@ -338,7 +535,12 @@
|
|
|
let row = data[i];
|
|
let row = data[i];
|
|
|
let form = {};
|
|
let form = {};
|
|
|
form.id = row.id, form.createUser = row.createUser,form.createUserName = row.createUserName, form.createTime = row.createTime, form.createDept = row.createDept;
|
|
form.id = row.id, form.createUser = row.createUser,form.createUserName = row.createUserName, form.createTime = row.createTime, form.createDept = row.createDept;
|
|
|
- delete row.id, delete row.createUser, delete row.createUserName, delete row.createTime, delete row.createDept;
|
|
|
|
|
|
|
+ // delete row.id,
|
|
|
|
|
+ delete row.createUser, delete row.createUserName, delete row.createTime, delete row.createDept;
|
|
|
|
|
+ form.receiverId = row.receiverId, form.receiverNo = row.receiverNo, form.receiverName = row.receiverName;
|
|
|
|
|
+ // this.approvePerson.id = row.receiverId, this.approvePerson.ehr = row.receiverNo, this.approvePerson.name = row.receiverName;
|
|
|
|
|
+ delete row.receiverId, delete row.receiverNo, delete row.receiverName;
|
|
|
|
|
+ form.process = row.process, form.remark = row.remark, form.approveId = row.approveId, form.approveName = row.approveName, form.approveNo = row.approveNo;
|
|
|
let keys = Object.keys(row);
|
|
let keys = Object.keys(row);
|
|
|
for (let j = 0; j < keys.length; j++) {
|
|
for (let j = 0; j < keys.length; j++) {
|
|
|
let key = keys[j];
|
|
let key = keys[j];
|
|
@@ -354,6 +556,9 @@
|
|
|
}
|
|
}
|
|
|
newData.push(form)
|
|
newData.push(form)
|
|
|
}
|
|
}
|
|
|
|
|
+ // 設置審核按鈕權限
|
|
|
|
|
+ /*if (this.userInfo.user_id == form.receiverId){
|
|
|
|
|
+ }*/
|
|
|
return newData;
|
|
return newData;
|
|
|
},
|
|
},
|
|
|
onLoad(page, params = {}) {
|
|
onLoad(page, params = {}) {
|