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
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>
|
|
|