lanan-system-vue/src/views/repair/project/form/RepairProjectForm.vue
2024-09-25 18:31:06 +08:00

235 lines
7.5 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="50%" v-dialogDrag append-to-body>
<el-form ref="formRef" :model="formData" :rules="formRules" v-loading="formLoading" label-width="100px">
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="名称" prop="name">
<el-input v-model="formData.name" placeholder="请输入名称"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="编码" prop="code">
<el-input v-model="formData.code" placeholder="请输入编码"/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="成本" prop="cost">
<el-input-number v-model="formData.cost" :precision="2" :step="0.1" ></el-input-number>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="售价" prop="price">
<el-input-number v-model="formData.price" :precision="2" :step="0.1"></el-input-number>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="规格" prop="spec">
<el-input v-model="formData.spec" placeholder="请输入规格"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="单位" prop="unit">
<el-select v-model="formData.unit" placeholder="请选择单位">
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.REPAIR_UNIT)"
:key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="分类" prop="type">
<TreeSelect
v-model="formData.type"
:options="baseTypeTree"
:normalizer="normalizer"
placeholder="请选择分类"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="工时" prop="manHour">
<el-input v-model="formData.manHour" placeholder="请输入工时"/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="是否自助" prop="isSelf">
<el-switch
v-model="formData.isSelf"
active-color="#13ce66"
inactive-color="#ff4949"
active-value="1"
inactive-value="0">
</el-switch>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="分店公用" prop="isPublic">
<el-switch
v-model="formData.isPublic"
active-color="#13ce66"
inactive-color="#ff4949"
active-value="1"
inactive-value="0">
</el-switch>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="备注" prop="remark">
<el-input type="textarea" v-model="formData.remark" placeholder="请输入备注"/>
</el-form-item>
</el-col>
</el-row>
</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 RepairProjectApi from '@/api/repair/project';
import * as BaseTypeApi from '@/api/base/type';
import TreeSelect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
export default {
name: "RepairProjectForm",
components: {TreeSelect},
data() {
return {
// 弹出层标题
dialogTitle: "",
// 是否显示弹出层
dialogVisible: false,
// 表单的加载中1修改时的数据加载2提交的按钮禁用
formLoading: false,
// 表单参数
formData: {
id: undefined,
name: undefined,
cost: undefined,
spec: undefined,
price: undefined,
code: undefined,
unit: undefined,
type: undefined,
manHour: undefined,
isSelf: undefined,
isPublic: '0',
remark: '0',
corpId:'',
corpIds:[],
},
// 表单校验
formRules: {
// name: [{required: true, message: '项目名称不能为空', trigger: 'blur'}],
// code: [{required: true, message: '编码不能为空', trigger: 'blur'}],
// type: [{required: true, message: '分类不能为空', trigger: 'blur'}],
// unit: [{required: true, message: '单位不能为空', trigger: 'blur'}],
},
baseTypeTree:[],
};
},
methods: {
/** 打开弹窗 */
async open(id) {
this.dialogVisible = true;
this.reset();
// 修改时,设置数据
if (id) {
this.formLoading = true;
try {
const res = await RepairProjectApi.getRepairProject(id);
this.formData = res.data;
this.title = "修改维修项目";
} finally {
this.formLoading = false;
}
}
this.title = "新增维修项目";
//获取类型树
await this.getBaseTypeTree();
},
/** 获得配置类型树 */
async getBaseTypeTree() {
this.baseTypeTree = [];
let param = {
type:'03'
}
const res = await BaseTypeApi.getBaseTypeList(param);
const root = {id: 0, name: '顶级配置类型', children: []};
root.children = this.handleTree(res.data, 'id', 'parentId',"children","0")
this.baseTypeTree.push(root)
},
/** 转换配置类型数据结构 */
normalizer(node) {
if (node.children && !node.children.length) {
delete node.children;
}
return {
id: node.id,
label: node.name,
children: node.children
};
},
/** 提交按钮 */
async submitForm() {
// 校验主表
await this.$refs["formRef"].validate();
this.formLoading = true;
try {
const data = this.formData;
// 修改的提交
if (data.id) {
await RepairProjectApi.updateRepairProject(data);
this.$modal.msgSuccess("修改成功");
this.dialogVisible = false;
this.$emit('success');
return;
}
// 添加的提交
const res = await RepairProjectApi.createRepairProject(data);
this.$modal.msgSuccess("新增成功");
this.dialogVisible = false;
this.$emit('success', this.formData.name);
} finally {
this.formLoading = false;
}
},
/** 表单重置 */
reset() {
this.formData = {
id: undefined,
name: undefined,
cost: undefined,
spec: undefined,
price: undefined,
code: undefined,
unit: undefined,
type: undefined,
manHour: undefined,
isSelf: undefined,
isPublic: '0',
remark: '0',
corpId:'',
corpIds:[],
};
this.resetForm("formRef");
}
}
};
</script>