lanan-system-vue/src/views/inspection/project/DlInspectionProjectForm.vue
2024-11-14 09:11:07 +08:00

166 lines
5.4 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="app-container">
<!-- 对话框(添加 / 修改) -->
<el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="45%" v-dialogDrag append-to-body>
<el-form ref="formRef" :model="formData" :rules="formRules" v-loading="formLoading" label-width="100px">
<el-form-item label="检测项目名称" prop="projectName">
<el-input v-model="formData.projectName" placeholder="请输入检测项目名称"/>
</el-form-item>
<el-form-item label="角色" prop="roleId">
<el-select v-model="formData.roleId" placeholder="请选择角色">
<el-option
v-for="role in roleList"
:key="role.id"
:label="role.name"
:value="role.id"
/>
</el-select>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="formData.remark" placeholder="请输入备注"/>
</el-form-item>
<!-- <el-form-item label="排序" prop="remark">-->
<!-- <el-input v-model="formData.sort" placeholder="请输入排序"/>-->
<!-- </el-form-item>-->
<el-form-item label="提成价格">
<el-table :data="tableData" style="width: 100%" height="250">
<el-table-column fixed prop="title" label="商品名称">
</el-table-column>
<el-table-column label="提成价格">
<template #default="scope">
<el-input v-model="scope.row.royaltyAmount" placeholder="输入价格"></el-input>
</template>
</el-table-column>
</el-table>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm" :disabled="formLoading"> </el-button>
<el-button @click="dialogVisible = false"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import * as DlInspectionProjectApi from '@/api/inspection/project';
import {getGoods, getRole} from "@/api/inspection/project";
import ElementBaseInfo from "@/components/bpmnProcessDesigner/package/penal/base/ElementBaseInfo.vue";
export default {
name: "DlInspectionProjectForm",
components: {ElementBaseInfo},
data() {
return {
// 弹出层标题
dialogTitle: "",
// 是否显示弹出层
dialogVisible: false,
// 表单的加载中1修改时的数据加载2提交的按钮禁用
formLoading: false,
// 表单参数
formData: {
projectName: undefined,
roleId: undefined,
remark: undefined,
},
// 表单校验
formRules: {
projectName: [
{required: true, message: '检测项目名称不能为空', trigger: 'blur'}
],
roleId: [
{required: true, message: '角色不能为空', trigger: 'change'}
]
},
roleList: [],
tableData: []
};
},
methods: {
/** 打开弹窗 */
async open(id) {
this.getRole()
this.dialogVisible = true;
this.reset();
// 修改时,设置数据
if (id) {
this.formLoading = true;
try {
const res = await DlInspectionProjectApi.getDlInspectionProject(id);
this.formData = res.data;
if (res.data.projectRoyaltyList.length > 0){
this.tableData = res.data.projectRoyaltyList
console.log('tableData', this.tableData)
}
this.title = "修改检测项目";
} finally {
this.formLoading = false;
}
}else {
this.getGoods()
}
this.title = "新增检测项目";
},
/** 提交按钮 */
async submitForm() {
// 校验主表
await this.$refs["formRef"].validate();
this.formLoading = true;
try {
const data = this.formData;
this.tableData.map(item => {
item.goodsId = item.id
/*如果royaltyAmount 为空则设置为0*/
if (!item.royaltyAmount) {
item.royaltyAmount = 0
}else {
/*将royaltyAmount的单位转为分*/
item.royaltyAmount = item.royaltyAmount * 100
}
delete item.id
})
data.projectRoyaltyList = this.tableData
// 修改的提交
if (data.id) {
console.log('商品及提成', this.tableData)
await DlInspectionProjectApi.updateDlInspectionProject(data);
this.$modal.msgSuccess("修改成功");
this.dialogVisible = false;
this.$emit('success');
return;
}
console.log('商品及提成', this.tableData)
// 添加的提交
await DlInspectionProjectApi.createDlInspectionProject(data);
this.$modal.msgSuccess("新增成功");
this.dialogVisible = false;
this.$emit('success');
} finally {
this.formLoading = false;
}
},
/** 表单重置 */
reset() {
this.formData = {
projectName: undefined,
roleId: undefined,
remark: undefined,
};
this.resetForm("formRef");
},
/** 获取角色下拉框数据 */
async getRole() {
const res = await getRole();
this.roleList = res.data
},
/** 获取角色下拉框数据 */
async getGoods() {
const res = await getGoods();
this.tableData = res.data.records
},
}
};
</script>