Files
dvcp_v2_webapp/project/beta/grid/AppGridBlock/components/add.vue

217 lines
6.6 KiB
Vue
Raw Normal View History

2022-05-27 11:51:18 +08:00
<template>
<div class="add-block">
<ai-detail>
<template #title>
<ai-title
2022-05-31 18:33:43 +08:00
:title="pageTitle"
2022-05-27 11:51:18 +08:00
:isShowBack="true"
:isShowBottomBorder="true"
@onBackClick="cancel(false)"
2022-05-31 18:33:43 +08:00
/>
2022-05-27 11:51:18 +08:00
</template>
<template #content>
2022-05-31 18:33:43 +08:00
<el-form ref="rules" :model="forms" :rules="formRules" size="small" label-suffix="" label-width="120px">
2022-05-27 11:51:18 +08:00
<ai-card title="基础信息">
<template slot="content">
2022-05-31 18:33:43 +08:00
<el-form-item label="网格名称" prop="girdName">
<el-input v-model="forms.girdName" placeholder="请输入…" :maxlength="50" show-word-limit clearable/>
</el-form-item>
<el-form-item label="网格长" prop="girdMemberManageList">
2022-06-07 16:34:09 +08:00
<ai-user-picker :instance="instance" v-model="forms.girdMemberManageList" :props="{label:'name', id: 'id'}"/>
2022-05-31 18:33:43 +08:00
</el-form-item>
<el-form-item label="网格员" prop="girdMemberList">
2022-06-07 16:34:09 +08:00
<ai-user-picker :instance="instance" v-model="forms.girdMemberList" :props="{label:'name', id: 'id'}"/>
2022-05-31 18:33:43 +08:00
</el-form-item>
2022-05-27 11:51:18 +08:00
</template>
</ai-card>
<ai-card title="其他信息">
<template slot="content">
2022-05-31 18:33:43 +08:00
<el-row type="flex">
<div class="fill">
2022-05-27 11:51:18 +08:00
<el-form-item label="初始日期" prop="startDate">
<el-date-picker
v-model="forms.startDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择日期"
2022-05-31 18:33:43 +08:00
style="width: 100%;"/>
2022-05-27 11:51:18 +08:00
</el-form-item>
<el-form-item label="终止日期" prop="endDate">
2022-05-31 18:33:43 +08:00
<el-date-picker v-model="forms.endDate" type="date" value-format="yyyy-MM-dd" placeholder="选择日期" style="width: 100%;"/>
2022-05-27 11:51:18 +08:00
</el-form-item>
</div>
2022-05-31 18:33:43 +08:00
<div class="fill">
2022-05-27 11:51:18 +08:00
<el-form-item label="面积" prop="area">
2022-05-31 18:33:43 +08:00
<el-input v-model="forms.area" placeholder="面积㎡" clearable/>
2022-05-27 11:51:18 +08:00
</el-form-item>
</div>
2022-05-31 18:33:43 +08:00
</el-row>
2022-05-27 11:51:18 +08:00
<el-form-item label="网格地址" prop="address">
<el-input v-model="forms.address" placeholder="限200字" maxlength="200"></el-input>
</el-form-item>
2022-05-31 18:33:43 +08:00
<el-form-item label="网格范围" prop="enclosure">
<map-plotting v-model="forms.points">
<el-button size="small">地图标绘</el-button>
</map-plotting>
2022-05-27 11:51:18 +08:00
</el-form-item>
</template>
</ai-card>
</el-form>
</template>
<template #footer>
<el-button @click="cancel(false)" class="delete-btn footer-btn">
</el-button>
<el-button type="primary" @click="save()" class="footer-btn">
</el-button>
</template>
</ai-detail>
</div>
</template>
<script>
import {mapState} from "vuex";
2022-05-31 18:33:43 +08:00
import MapPlotting from "./mapPlotting";
import AiUserPicker from "../../components/AiUserPicker";
2022-05-27 11:51:18 +08:00
export default {
name: "addBlock",
2022-05-31 18:33:43 +08:00
components: {AiUserPicker, MapPlotting},
2022-05-27 11:51:18 +08:00
props: {
instance: Function,
dict: Object,
params: Object,
},
data() {
return {
forms: {
2022-05-31 18:33:43 +08:00
girdMemberManageList: [],
girdMemberList: []
2022-05-27 11:51:18 +08:00
},
options: [],
parentGirdInfo: {},
};
},
computed: {
...mapState(["user"]),
formRules() {
return {
girdName: [
{required: true, message: "请输入网格名称", trigger: "change"},
],
girdCode: [
{required: true, message: "请输入网格编号"},
{pattern: /^\d+$/g, message: "请输入数字"},
]
};
},
unitProps() {
return {
value: "id",
checkStrictly: true,
emitPath: false,
};
},
unitOps() {
let initData = JSON.parse(JSON.stringify(this.options)),
ops = initData.filter((e) => !e.parentId);
ops.map((e) => this.addChild(e, initData));
return ops;
},
2022-05-31 18:33:43 +08:00
pageTitle() {
return this.isEdit ? "编辑网格区块" : "添加网格区块"
},
isEdit() {
return !!this.$route.query.id;
}
2022-05-27 11:51:18 +08:00
},
created() {
if (this.isEdit) {
this.searchDetail();
} else {
2022-05-31 18:33:43 +08:00
this.forms = {
...this.forms,
...this.$route.query
}
2022-05-27 11:51:18 +08:00
}
},
methods: {
2022-05-31 18:33:43 +08:00
cancel() {
this.$router.push({})
2022-05-27 11:51:18 +08:00
},
// 获取所有单位
getAllUnit(data) {
this.options = [];
this.instance.post("/admin/sysunit/getAll", null, {
params: {areaId: data},
}).then((res) => {
if (res?.data) {
res.data = res.data.map((a) => {
return {...a, label: a.name}
});
this.options = res.data.filter((e) => !e.parentId);
this.options.map((t) => this.addChild(t, res.data));
}
});
},
save() {
this.$refs["rules"].validate((valid) => {
if (valid) {
2022-06-07 16:34:09 +08:00
let {girdMemberManageList, girdMemberList} = this.forms
this.instance.post(`/app/appgirdinfo/addOrUpdate`, {
...this.forms,
girdMemberManageList: girdMemberManageList?.map(v => ({wxUserId: v.id})) || [],
girdMemberList: girdMemberList?.map(v => ({wxUserId: v.id})) || []
}).then((res) => {
2022-05-27 11:51:18 +08:00
if (res.code == 0) {
this.cancel(true)
}
});
} else {
console.log("error submit!!");
return false;
}
});
},
searchDetail() {
2022-05-31 18:33:43 +08:00
let {id} = this.$route.query
2022-05-27 11:51:18 +08:00
this.instance.post(`/app/appgirdinfo/queryDetailById`, null, {
2022-05-31 18:33:43 +08:00
params: {id},
2022-05-27 11:51:18 +08:00
}).then((res) => {
if (res?.data) {
2022-05-31 18:33:43 +08:00
this.forms = {
...res.data,
girdMemberManageList: res.data.girdMemberManageList ? res.data.girdMemberManageList.map(v => {
return {
...v,
id: v.wxUserId
}
}) : [],
girdMemberList: res.data.girdMemberList ? res.data.girdMemberList.map(v => {
return {
...v,
id: v.wxUserId
}
}) : []
};
2022-05-27 11:51:18 +08:00
this.parentGirdInfo = res.data.parentGirdInfo;
this.forms.parentGirdName = res.data.parentGirdInfo && res.data.parentGirdInfo.girdName;
}
});
},
},
};
</script>
<style lang="scss" scoped>
.add-block {
width: 100%;
height: 100%;
.footer-btn {
width: 92px;
}
}
</style>