Browse Source

事件来源

master
dai 2 years ago
parent
commit
246cd96466
  1. 4
      src/views/modules/lingshan/aqsc/qyda.vue
  2. 383
      src/views/modules/shequzhili/event/cpts/add.vue
  3. 706
      src/views/modules/shequzhili/event/eventList.vue

4
src/views/modules/lingshan/aqsc/qyda.vue

@ -125,10 +125,10 @@ export default {
infoUrl: "/gov/org/icDangerousChemicals/detail",
delUrl: "/gov/org/icDangerousChemicals/del",
editAuth(item) {
return item.agencyId == this.$store.state.user.agencyId;
return true || item.agencyId == this.$store.state.user.agencyId;
},
delAuth(item) {
return item.agencyId == this.$store.state.user.agencyId;
return true || item.agencyId == this.$store.state.user.agencyId;
},
editParams: [

383
src/views/modules/shequzhili/event/cpts/add.vue

@ -2,117 +2,162 @@
<div class="g-add">
<div class="g-add-page">
<div class="g-left">
<el-form ref="ref_form1"
<el-form
ref="ref_form1"
:inline="true"
:model="formData"
:rules="dataRule"
class="form">
<el-form-item label="所属网格 "
class="form"
>
<el-form-item
label="所属网格 "
prop="gridId"
label-width="150px"
style="display: block">
<el-select v-model.trim="formData.gridId"
style="display: block"
>
<el-select
v-model.trim="formData.gridId"
placeholder="请选择"
clearable
class="cell-width-1">
<el-option v-for="item in gridList"
class="cell-width-1"
>
<el-option
v-for="item in gridList"
:key="item.value"
:label="item.label"
:value="item.value">
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="报事人"
<el-form-item
label="报事人"
prop="name"
label-width="150px"
style="display: block">
<el-input class="cell-width-1"
style="display: block"
>
<el-input
class="cell-width-1"
maxlength="10"
placeholder="请输入报事人姓名"
v-model="formData.name">
v-model="formData.name"
>
</el-input>
<div>
<el-button style="margin-top: 10px"
<el-button
style="margin-top: 10px"
type="primary"
size="mini"
@click="handleShowPersonList">居民信息中选择</el-button>
@click="handleShowPersonList"
>居民信息中选择</el-button
>
</div>
</el-form-item>
<el-form-item label="手机号"
<el-form-item
label="手机号"
prop="mobile"
label-width="150px"
style="display: block">
<el-input class="cell-width-1"
style="display: block"
>
<el-input
class="cell-width-1"
maxlength="30"
placeholder="请输入手机号 "
v-model="formData.mobile">
v-model="formData.mobile"
>
</el-input>
</el-form-item>
<el-form-item label="身份证号"
<el-form-item
label="身份证号"
prop="idCard"
label-width="150px"
style="display: block">
<el-input class="cell-width-1"
style="display: block"
>
<el-input
class="cell-width-1"
maxlength="30"
placeholder="请输入身份证号"
v-model="formData.idCard"></el-input>
v-model="formData.idCard"
></el-input>
</el-form-item>
<el-form-item label="反应渠道"
<el-form-item
label="反应渠道"
label-width="150px"
prop="sourceType">
<el-select v-model="formData.sourceType"
prop="sourceType"
>
<el-select
v-model="formData.sourceType"
placeholder="请选择"
size="small"
clearable
class="cell-width-1">
<el-option v-for="item in qudaoArray"
class="cell-width-1"
>
<el-option
v-for="item in qudaoArray"
:key="item.value"
:label="item.label"
:value="item.value">
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="发生时间"
<el-form-item
label="发生时间"
prop="happenTime"
label-width="150px"
style="display: block">
<el-date-picker v-model="formData.happenTime"
style="display: block"
>
<el-date-picker
v-model="formData.happenTime"
class="cell-width-1"
type="datetime"
placeholder="发生时间"
value-format="yyyy-MM-dd HH:mm:ss">
value-format="yyyy-MM-dd HH:mm:ss"
>
</el-date-picker>
</el-form-item>
<el-form-item label="事件内容"
<el-form-item
label="事件内容"
prop="eventContent"
label-width="150px"
style="display: block">
<el-input class="cell-width-2"
style="display: block"
>
<el-input
class="cell-width-2"
type="textarea"
maxlength="500"
show-word-limit
:rows="5"
placeholder="请输入事件内容,不超过500字"
v-model="formData.eventContent"></el-input>
v-model="formData.eventContent"
></el-input>
</el-form-item>
</el-form>
</div>
<div class="g-right">
<el-form ref="ref_form2"
<el-form
ref="ref_form2"
:inline="true"
:model="formData"
:rules="dataRule"
class="form">
<el-form-item label="图片"
class="form"
>
<el-form-item
label="图片"
label-width="150px"
style="display: block">
<el-upload :headers="$getElUploadHeaders()"
:class="['avatar-uploader', { hide: hideUploadBtn }]"
style="display: block"
>
<el-upload
:headers="$getElUploadHeaders()"
:class="[
'avatar-uploader',
{ hide: hideUploadBtn },
]"
ref="uploadPic"
:action="uploadUlr"
list-type="picture-card"
@ -121,46 +166,55 @@
:file-list="replayImgList"
:on-change="handleEditChange"
:on-success="handleSuccess"
:limit="3">
:limit="3"
>
<span class="font-14">选择图片</span>
<div slot="tip"
class="upload_tip">
<div slot="tip" class="upload_tip">
最多上传3张图片图片支持jpgjpegbmpgit或png格式
</div>
</el-upload>
</el-form-item>
<el-form-item label="地图位置"
<el-form-item
label="地图位置"
prop="longitude"
label-width="150px"
style="display: block">
style="display: block"
>
<div style="width: 500px">
<el-select v-model="searchValue"
<el-select
v-model="searchValue"
filterable
style="width: 500px"
remote
:reserve-keyword="true"
placeholder="请输入关键词"
:remote-method="remoteMethod"
:loading="loading">
<el-option v-for="(item,index) in searchOptions"
:loading="loading"
>
<el-option
v-for="(item, index) in searchOptions"
@click.native="handleClickKey(index)"
:key="item.value"
:label="item.label"
:value="item.value">
:value="item.value"
>
</el-option>
</el-select>
<div id="app_event"
class="div_map"></div>
<div id="app_event" class="div_map"></div>
</div>
</el-form-item>
<el-form-item label="详细地址"
<el-form-item
label="详细地址"
prop="address"
label-width="150px"
style="display: block">
<el-input class="cell-width-1"
v-model="formData.address">
style="display: block"
>
<el-input
class="cell-width-1"
v-model="formData.address"
>
</el-input>
</el-form-item>
</el-form>
@ -168,7 +222,8 @@
</div>
<!-- 新增弹出框 -->
<el-dialog :visible.sync="personTableShow"
<el-dialog
:visible.sync="personTableShow"
:close-on-click-modal="false"
:close-on-press-escape="false"
:destroy-on-close="true"
@ -176,46 +231,61 @@
width="550px"
top="5vh"
class="dialog-h"
@closed="diaClose">
@closed="diaClose"
>
<div style="padding: 10px 30px">
<el-form :inline="false"
<el-form
:inline="false"
ref="ref_formSearch"
:label-width="'90px'">
<el-form-item label="所属网格"
label-width="150px">
<el-select class="cell-width-1"
:label-width="'90px'"
>
<el-form-item label="所属网格" label-width="150px">
<el-select
class="cell-width-1"
v-model.trim="selGridId"
placeholder="请选择"
clearable>
<el-option v-for="item in gridList"
clearable
>
<el-option
v-for="item in gridList"
@click.native="handleChangeGrid"
:key="item.value"
:label="item.label"
:value="item.value">
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="居民"
<el-form-item
label="居民"
label-width="150px"
prop="selPersonIndex">
<el-select v-model="selPersonIndex"
prop="selPersonIndex"
>
<el-select
v-model="selPersonIndex"
class="cell-width-1"
filterable
placeholder="请选择"
clearable>
<el-option v-for="(item, index) in demandUserList"
clearable
>
<el-option
v-for="(item, index) in demandUserList"
:key="item.demandUserId"
:label="item.label"
:value="index">
:value="index"
>
</el-option>
</el-select>
</el-form-item>
</el-form>
<div class="div-btn">
<el-button style="margin-left: 20px"
<el-button
style="margin-left: 20px"
type="primary"
size="small"
@click="handleComfirmSelPerson">确定</el-button>
@click="handleComfirmSelPerson"
>确定</el-button
>
</div>
</div>
</el-dialog>
@ -238,7 +308,6 @@ var geocoder; // 新建一个正逆地址解析类
function iniFmData() {
return {
gridId: "", //
reportUserId: "", // ID
name: "", //
@ -263,7 +332,7 @@ export default {
return {
formType: "add", // addeditdetail
searchOptions: [],
searchValue: '',
searchValue: "",
resultList: [],
loading: false,
@ -271,22 +340,22 @@ export default {
gridList: [], //list--
qudaoArray: [
{
value: "1",
label: "多媒体反应",
},
{
value: "2",
label: "社区电话",
},
{
value: "3",
label: "12345",
},
{
value: "4",
label: "网络员手持终端",
},
// {
// value: "1",
// label: "",
// },
// {
// value: "2",
// label: "",
// },
// {
// value: "3",
// label: "12345",
// },
// {
// value: "4",
// label: "",
// },
],
formData: iniFmData(),
@ -297,7 +366,8 @@ export default {
// oss/file/uploadvariedfile
dialogImageUrl: "oss/file/uploadvariedfile",
uploadUlr: window.SITE_CONFIG["apiURL"] + "/oss/file/uploadvariedfile",
uploadUlr:
window.SITE_CONFIG["apiURL"] + "/oss/file/uploadvariedfile",
// upload_url: '', // URL
upload_name: "", //
replayImgList: [],
@ -333,30 +403,64 @@ export default {
return {
gridId: [
{ required: true, message: "所属网格不能为空", trigger: "blur" },
{
required: true,
message: "所属网格不能为空",
trigger: "blur",
},
],
name: [
{
required: true,
message: "报事人不能为空",
trigger: "blur",
},
],
name: [{ required: true, message: "报事人不能为空", trigger: "blur" }],
mobile: [
{ required: true, message: "手机号不能为空", trigger: "blur" },
{
required: true,
message: "手机号不能为空",
trigger: "blur",
},
],
// idCard: [
// { required: true, message: "", trigger: "blur" },
// { required: true, validator: checkIdCard, trigger: "blur" },
// ],
sourceType: [
{ required: true, message: "反映渠道不能为空", trigger: "blur" },
{
required: true,
message: "反映渠道不能为空",
trigger: "blur",
},
],
eventContent: [
{ required: true, message: "事件内容不能为空", trigger: "blur" },
{
required: true,
message: "事件内容不能为空",
trigger: "blur",
},
],
happenTime: [
{ required: true, message: "发生时间不能为空", trigger: "blur" },
{
required: true,
message: "发生时间不能为空",
trigger: "blur",
},
],
address: [
{ required: true, message: "事件地址不能为空", trigger: "blur" },
{
required: true,
message: "事件地址不能为空",
trigger: "blur",
},
],
longitude: [
{ required: true, message: "坐标位置不能为空", trigger: "blur" },
{
required: true,
message: "坐标位置不能为空",
trigger: "blur",
},
],
};
},
@ -391,12 +495,11 @@ export default {
this.formData.latitude = latitude;
this.formData.longitude = longitude;
this.initMap(this.formData.latitude, this.formData.longitude);
this.loadGrid();
this.getCategoryList();
this.getQudaoOptions();
},
methods: {
@ -481,6 +584,20 @@ export default {
}
},
async getQudaoOptions() {
const url = "/sys/dict/data/dictlist";
const { data, code, msg } = await requestPost(url, {
dictType: "ic_event_source_type",
});
if (code === 0) {
this.qudaoArray = data;
} else {
this.$message.error(msg);
}
},
//
filterTree(arr) {
let childs = arr;
@ -513,7 +630,11 @@ export default {
app.util.validateRule(messageObj);
return false;
} else {
if (!formVltHelper.userOrMobile(this.formData.mobile)) {
if (
!formVltHelper.userOrMobile(
this.formData.mobile
)
) {
this.$message({
type: "error",
message: "手机号格式有误",
@ -564,7 +685,6 @@ export default {
// init
initMap(latitude, longitude) {
map = new daiMap(
document.getElementById("app_event"),
{ latitude, longitude },
@ -582,10 +702,8 @@ export default {
map.setCenter(latitude, longitude);
map.setMarker(latitude, longitude);
},
async handleMoveCenter() {
//
const { lat, lng } = map.getCenter();
@ -595,38 +713,41 @@ export default {
let { msg, data } = await map.getAddress(lat, lng);
if (msg == "success") {
this.formData.address = data.address
this.searchValue = data.address
this.searchOptions = []
this.formData.address = data.address;
this.searchValue = data.address;
this.searchOptions = [];
}
},
async remoteMethod(query) {
if (query !== '') {
if (query !== "") {
this.loading = true;
const { msg, data } = await map.searchNearby(query);
this.loading = false;
this.resultList = []
if (msg == "success" && data.resultList && data.resultList.length > 0) {
this.resultList = [];
if (
msg == "success" &&
data.resultList &&
data.resultList.length > 0
) {
if (data.resultList && data.resultList.length > 0) {
this.resultList = data.resultList
this.searchOptions = this.resultList.map(item => {
return { value: `${item.hotPointID}`, label: `${item.address + item.name}` };
this.resultList = data.resultList;
this.searchOptions = this.resultList.map((item) => {
return {
value: `${item.hotPointID}`,
label: `${item.address + item.name}`,
};
});
}
} else {
this.searchOptions = [
{
value: '0',
label: '未检索到结果'
}
]
value: "0",
label: "未检索到结果",
},
];
}
} else {
this.searchOptions = [];
@ -634,21 +755,21 @@ export default {
},
handleClickKey(index) {
let selPosition = this.resultList[index]
let lonlat = selPosition.lonlat.split(" ")
let selPosition = this.resultList[index];
let lonlat = selPosition.lonlat.split(" ");
map.setCenter(lonlat[1], lonlat[0]);
map.setMarker(lonlat[1], lonlat[0]);
this.formData.latitude = lonlat[1];
this.formData.longitude = lonlat[0];
this.formData.address = selPosition.address + selPosition.name
this.formData.address = selPosition.address + selPosition.name;
},
resetData() {
this.formData = iniFmData();
this.replayImgList = [];
this.searchValue = ''
this.searchOptions = []
this.resultList = []
this.searchValue = "";
this.searchOptions = [];
this.resultList = [];
},
//
startLoading() {

706
src/views/modules/shequzhili/event/eventList.vue

File diff suppressed because it is too large
Loading…
Cancel
Save