factory_web/src/views/rpm/rpj_form.vue

225 lines
5.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>
<el-drawer
:title="titleMap[mode]"
v-model="visible"
:size="1000"
destroy-on-close
@closed="$emit('closed')"
>
<el-container v-loading="loading">
<el-main style="padding: 0 20px 20px 20px">
<el-form
ref="dialogForm"
:model="form"
:rules="rules"
:disabled="mode == 'show'"
label-width="80px"
>
<el-row>
<el-col :md="24" :sm="12" :xs="24">
<el-form-item label="名称" required>
<el-input
v-model="form.name"
type="text"
clearable
:disabled="mode != 'add'"
></el-input>
</el-form-item>
</el-col>
<el-col :md="24" :sm="12" :xs="24">
<el-form-item label="项目类型" required>
<el-select v-model="form.type" style="width: 100%">
<el-option
v-for="item in typeOptions"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :md="24" :sm="12" :xs="24">
<el-form-item label="合同编号">
<el-input
v-model="form.contract_number"
type="text"
clearable
></el-input>
</el-form-item>
</el-col>
<el-col :md="24" :sm="12" :xs="24">
<el-form-item label="进厂时间" required>
<el-date-picker
v-model="form.come_time"
type="datetime"
placeholder="选择进厂时间"
/>
</el-form-item>
</el-col>
<el-col :md="24" :sm="12" :xs="24">
<el-form-item label="离厂时间" required>
<el-date-picker
v-model="form.leave_time"
type="datetime"
placeholder="选择离厂时间"
/>
</el-form-item>
</el-col>
<el-col :md="24" :sm="12" :xs="24">
<el-form-item label="所属部门">
<el-cascader
v-model="form.belong_dept"
:options="deptoptions"
:props="{
expandTrigger: 'hover', // 次级菜单的展开方式
label: 'label', //
value: 'value', //
emitPath: false, // 在选中节点改变时,是否返回由该节点所在的各级菜单的值所组成的数组,若设置 false则只返回该节点的值
checkStrictly: true
}"
clearable
style="width: 100%;">
</el-cascader>
</el-form-item>
</el-col>
<el-col :md="24" :sm="12" :xs="24" v-if="rparty_show">
<el-form-item label="相关方" required>
<el-select v-model="form.rparty" style="width: 100%">
<el-option
v-for="item in rpartyOptions"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-main>
<el-footer>
<el-button type="primary" :loading="isSaveing" @click="submit"
>保存
</el-button
>
<el-button @click="visible = false">取消</el-button>
</el-footer>
</el-container>
</el-drawer>
</template>
<script>
import {genTree} from "@/utils/verificate";
export default {
emits: ["success", "closed"],
data() {
return {
loading: false,
mode: "add",
titleMap: {
add: "新增",
edit: "编辑",
show: "查看",
},
form: {},
rules: {},
visible: false,
isSaveing: false,
selectionFilters: [],
setFiltersVisible: false,
rpartyOptions: [],
deptoptions: [],
typeOptions: [
{id: 10, name: "建筑施工"},
{id: 20, name: "设备设施检维修"},
{id: 30, name: "保安保洁服务"},
{id: 40, name: "其他"},
],
rparty_show: false
};
},
mounted() {
this.rpartyShow()
this.getDept();
},
methods: {
rpartyShow(){
var userInfo = this.$TOOL.data.get("USER_INFO");
if(userInfo.type=='employee'){
this.rparty_show = true
this.getRpartyOptions();
}
},
//显示
open(mode = "add") {
this.mode = mode;
this.visible = true;
return this;
},
//所属部门
getDept() {
this.$API.system.dept.list.req({page: 0, type__in: 'dept'}).then((res) => {
this.deptoptions = genTree(res);
});
},
//相关方
getRpartyOptions() {
this.$API.rpm.rparty.list.req({page: 0}).then((res) => {
this.rpartyOptions = res;
});
},
//表单提交方法
submit() {
this.$refs.dialogForm.validate(async (valid) => {
if (valid) {
this.isSaveing = true;
try {
var res;
if (this.mode == "add") {
res = await this.$API.rpm.rpj.create.req(this.form);
} else if (this.mode == "edit") {
res = await this.$API.rpm.rpj.update.req(this.form.id, this.form);
}
this.isSaveing = false;
this.$emit("success", this.form, this.mode);
this.visible = false;
this.$message.success("操作成功");
return res;
} catch (err) {
//可以处理校验错误
this.isSaveing = false;
return err;
}
}
});
},
//表单注入数据
setData(data) {
// this.loading = true
// const params = {
// id: data.id
// }
// setTimeout(async ()=>{
// var res = await this.$API.system.table.info.get(params)
// this.loading = false
// this.form = res.data
// },400)
Object.assign(this.form, data);
},
//设置过滤项
setFilters(filters) {
this.selectionFilters = filters;
this.setFiltersVisible = true;
},
},
};
</script>
<style>
</style>