中航光电热表web
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.
 
 
 
 

134 lines
4.1 KiB

<template>
<vd-dialog v-drag :title="$t('craft.handle')" :visible.sync="isOpen" :before-close="cancel" :def-width="'65%'" @opened="open">
<!-- <div class="leftAndRight"> -->
<div class="leftTable">
<el-form ref="form" label-width="80px" class="vd-form-row">
<el-form-item :label="$t('global.memo')">
<el-input v-model="fillMemo" type="textarea" />
</el-form-item>
</el-form>
<div style="padding-bottom:10px;">
<vd-btn-add @click="insertEvent()">{{ $t("global.insertRow") }}</vd-btn-add>
<vd-btn-remove-row type="danger" size="mini" @click="$vxeTableUtil.deleteRow($refs.xTable)">{{ $t("global.deleteRow") }}</vd-btn-remove-row>
<vd-btn-submit slot="right" @click="submit" />
</div>
<vxe-table ref="xTable" :loading="btnLoading" :data="list" :edit-config="{trigger: 'click', mode: 'cell', showStatus: true}" :mouse-config="{selected:true}" :edit-rules="gridRules" keep-source border show-overflow class="vxe-table-element" size="mini" stripe height="400" highlight-current-row align="center" row-id="rowIndex">
<vxe-table-column type="checkbox" width="40" />
<vxe-table-column :edit-render="{name: 'ElInput'}" :title="$t('global.matter')" field="matter" min-width="150">
<template v-slot:edit="scope">
<el-input v-model="scope.row.matter" type="String" />
</template>
</vxe-table-column>
<vxe-table-column :edit-render="{name: 'ElInput'}" :title="$t('global.describe')" field="process" min-width="150">
<template v-slot:edit="scope">
<el-input v-model="scope.row.process" type="String" />
</template>
</vxe-table-column>
</vxe-table>
</div>
<!-- 附件 -->
<!-- <div class="rightBox">
<vd-upload
ref="docUpload"
:data="{ theId:tbId,theTag:'DsTaskDillDetail',subTag:'doc'}"
:auto-upload="true"
except="exe"
/>
</div> -->
<!-- </div> -->
</vd-dialog>
</template>
<script>
export default {
components: {},
props: {
isOpen: {
type: Boolean,
default: false
},
tbId: {
type: [String, Number],
default: null
}
},
data() {
return {
btnLoading: false,
list: [],
gridRules: {
matter: [this.$validation.required],
process: [this.$validation.required]
},
fillMemo: ''
};
},
methods: {
open() {},
insertEvent(row = -1) {
// 新增一行
const record = {};
this.$refs.xTable.insertAt(record, row);
},
submit() {
this.$refs.xTable.fullValidate((errMap) => {
if (errMap) {
return;
}
let submitList = [];
const deleteIds = [];
const { insertRecords, updateRecords, removeRecords } =
this.$refs.xTable.getRecordset();
if (insertRecords.length > 0) {
insertRecords.forEach((item) => {
submitList.push(item);
});
}
if (updateRecords.length > 0) {
submitList = submitList.concat(updateRecords);
}
if (removeRecords.length > 0) {
removeRecords.forEach((obj) => {
if (obj.fdId) {
deleteIds.push(obj.fdId);
}
});
}
this.btnLoading = true;
this.$ajax
.post('dsTaskBill/handleDsTaskBill', {
tbId: this.tbId,
fillMemo: this.fillMemo,
submitList,
deleteIds
})
.then((res) => {
if (res.code === 0) {
this.$message.success(this.$t('quality.successComplete'));
// this.$refs.docUpload.clearFiles();
this.cancel(true);
}
this.btnLoading = false;
});
});
},
cancel(isRefresh) {
this.$emit('cancel', isRefresh === true);
}
}
};
</script>
<style lang="scss" scoped>
.leftAndRight {
display: flex;
.leftTable {
width: 70%;
}
.rightBox {
width: 30%;
display: flex;
justify-content: center;
margin-top: 60px;
}
}
</style>