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