|
@ -1,76 +1,105 @@ |
|
|
<template> |
|
|
<template> |
|
|
<div class=""> |
|
|
<div class=""> |
|
|
<el-form ref="ref_form" |
|
|
<el-form |
|
|
:inline="false" |
|
|
ref="ref_form" |
|
|
:model="formData" |
|
|
:inline="false" |
|
|
:rules="dataRule" |
|
|
:model="formData" |
|
|
label-width="100px"> |
|
|
:rules="dataRule" |
|
|
<el-form-item label="事件分类" |
|
|
label-width="100px" |
|
|
label-width="150px" |
|
|
> |
|
|
:class="{'form-item':source==='visiual'}" |
|
|
<el-form-item |
|
|
prop="categoryList"> |
|
|
label="事件分类" |
|
|
<div :class="{'visiual-form':source==='visiual'}"> |
|
|
label-width="150px" |
|
|
<el-cascader class="cell-width-2" |
|
|
:class="{ 'form-item': source === 'visiual' }" |
|
|
|
|
|
prop="categoryList" |
|
|
|
|
|
> |
|
|
|
|
|
<div :class="{ 'visiual-form': source === 'visiual' }"> |
|
|
|
|
|
<!-- <el-cascader class="cell-width-2" |
|
|
ref="myCascader" |
|
|
ref="myCascader" |
|
|
v-model="selCategoryArray" |
|
|
v-model="selCategoryArray" |
|
|
:key="iscascaderShow" |
|
|
:key="iscascaderShow" |
|
|
:options="casOptions" |
|
|
:options="casOptions" |
|
|
:props="optionProps" |
|
|
:props="optionProps" |
|
|
:show-all-levels="false" |
|
|
:show-all-levels="false" |
|
|
@change="handleChangeCate"></el-cascader> |
|
|
@change="handleChangeCate"></el-cascader> --> |
|
|
|
|
|
<my-cascader |
|
|
|
|
|
v-model="formData.categoryList" |
|
|
|
|
|
:casOptions="casOptions" |
|
|
|
|
|
:props="optionProps" |
|
|
|
|
|
:optionProps="optionProps" |
|
|
|
|
|
@handleChangeCate="handleChangeCate" |
|
|
|
|
|
></my-cascader> |
|
|
</div> |
|
|
</div> |
|
|
</el-form-item> |
|
|
</el-form-item> |
|
|
<el-form-item label="项目标题" |
|
|
<el-form-item |
|
|
prop="title" |
|
|
label="项目标题" |
|
|
:class="{'form-item':source==='visiual'}" |
|
|
prop="title" |
|
|
label-width="150px" |
|
|
:class="{ 'form-item': source === 'visiual' }" |
|
|
style="display: block"> |
|
|
label-width="150px" |
|
|
<div :class="{'visiual-form':source==='visiual'}"> |
|
|
style="display: block" |
|
|
<el-input class="cell-width-1" |
|
|
> |
|
|
maxlength="50" |
|
|
<div :class="{ 'visiual-form': source === 'visiual' }"> |
|
|
placeholder="请输入项目标题" |
|
|
<el-input |
|
|
v-model="formData.title"> |
|
|
class="cell-width-1" |
|
|
|
|
|
maxlength="50" |
|
|
|
|
|
placeholder="请输入项目标题" |
|
|
|
|
|
v-model="formData.title" |
|
|
|
|
|
> |
|
|
</el-input> |
|
|
</el-input> |
|
|
</div> |
|
|
</div> |
|
|
</el-form-item> |
|
|
</el-form-item> |
|
|
|
|
|
|
|
|
<el-form-item label="所属网格 " |
|
|
<el-form-item |
|
|
prop="gridId" |
|
|
label="所属网格 " |
|
|
:class="{'form-item':source==='visiual'}" |
|
|
prop="gridId" |
|
|
label-width="150px" |
|
|
:class="{ 'form-item': source === 'visiual' }" |
|
|
style="display: block"> |
|
|
label-width="150px" |
|
|
<div :class="{'visiual-form':source==='visiual'}"> |
|
|
style="display: block" |
|
|
<el-select v-model.trim="formData.gridId" |
|
|
> |
|
|
placeholder="请选择" |
|
|
<div :class="{ 'visiual-form': source === 'visiual' }"> |
|
|
clearable |
|
|
<el-select |
|
|
class="cell-width-1"> |
|
|
v-model.trim="formData.gridId" |
|
|
<el-option v-for="item in gridList" |
|
|
placeholder="请选择" |
|
|
:key="item.value" |
|
|
clearable |
|
|
:label="item.label" |
|
|
class="cell-width-1" |
|
|
:value="item.value"> |
|
|
> |
|
|
|
|
|
<el-option |
|
|
|
|
|
v-for="item in gridList" |
|
|
|
|
|
:key="item.value" |
|
|
|
|
|
:label="item.label" |
|
|
|
|
|
:value="item.value" |
|
|
|
|
|
> |
|
|
</el-option> |
|
|
</el-option> |
|
|
</el-select> |
|
|
</el-select> |
|
|
</div> |
|
|
</div> |
|
|
</el-form-item> |
|
|
</el-form-item> |
|
|
|
|
|
|
|
|
<el-form-item label="处理部门" |
|
|
<el-form-item |
|
|
label-width="150px" |
|
|
label="处理部门" |
|
|
:class="{'form-item':source==='visiual'}" |
|
|
label-width="150px" |
|
|
prop="staffList"> |
|
|
:class="{ 'form-item': source === 'visiual' }" |
|
|
<el-popover placement="bottom" |
|
|
prop="staffList" |
|
|
width="400" |
|
|
> |
|
|
height="400" |
|
|
<el-popover |
|
|
v-model="visibleStaffPanel"> |
|
|
placement="bottom" |
|
|
|
|
|
width="400" |
|
|
|
|
|
height="400" |
|
|
|
|
|
v-model="visibleStaffPanel" |
|
|
|
|
|
> |
|
|
<div class="f"> |
|
|
<div class="f"> |
|
|
<select-staff @confirm="(ret) => (formData.staffList = ret)" |
|
|
<select-staff |
|
|
@close="visibleStaffPanel = false" /> |
|
|
@confirm="(ret) => (formData.staffList = ret)" |
|
|
|
|
|
@close="visibleStaffPanel = false" |
|
|
|
|
|
/> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div slot="reference"> |
|
|
<div slot="reference"> |
|
|
<a v-if="formData.staffList.length == 0" |
|
|
<a v-if="formData.staffList.length == 0" style="cursor: pointer" |
|
|
style="cursor: pointer">点击选择</a> |
|
|
>点击选择</a |
|
|
<a v-else |
|
|
> |
|
|
style="cursor: pointer">已选 {{ formData.staffList.length }} 人</a> |
|
|
<a v-else style="cursor: pointer" |
|
|
|
|
|
>已选 {{ formData.staffList.length }} 人</a |
|
|
|
|
|
> |
|
|
</div> |
|
|
</div> |
|
|
</el-popover> |
|
|
</el-popover> |
|
|
</el-form-item> |
|
|
</el-form-item> |
|
@ -92,116 +121,134 @@ |
|
|
</div> |
|
|
</div> |
|
|
</el-form-item> --> |
|
|
</el-form-item> --> |
|
|
|
|
|
|
|
|
<el-form-item label="项目方案" |
|
|
<el-form-item |
|
|
label-width="150px" |
|
|
label="项目方案" |
|
|
:class="{'form-item':source==='visiual'}" |
|
|
label-width="150px" |
|
|
prop="publicReply"> |
|
|
:class="{ 'form-item': source === 'visiual' }" |
|
|
<div :class="{'visiual-form':source==='visiual'}"> |
|
|
prop="publicReply" |
|
|
<el-input type="textarea" |
|
|
> |
|
|
class="cell-width-area" |
|
|
<div :class="{ 'visiual-form': source === 'visiual' }"> |
|
|
:rows="2" |
|
|
<el-input |
|
|
placeholder="请输入项目方案" |
|
|
type="textarea" |
|
|
v-model="formData.publicReply"> |
|
|
class="cell-width-area" |
|
|
|
|
|
:rows="2" |
|
|
|
|
|
placeholder="请输入项目方案" |
|
|
|
|
|
v-model="formData.publicReply" |
|
|
|
|
|
> |
|
|
</el-input> |
|
|
</el-input> |
|
|
</div> |
|
|
</div> |
|
|
</el-form-item> |
|
|
</el-form-item> |
|
|
|
|
|
|
|
|
<el-form-item label="内部备注" |
|
|
<el-form-item |
|
|
label-width="150px" |
|
|
label="内部备注" |
|
|
:class="{'form-item':source==='visiual'}" |
|
|
label-width="150px" |
|
|
prop="internalRemark"> |
|
|
:class="{ 'form-item': source === 'visiual' }" |
|
|
<div :class="{'visiual-form':source==='visiual'}"> |
|
|
prop="internalRemark" |
|
|
<el-input type="textarea" |
|
|
> |
|
|
class="cell-width-area" |
|
|
<div :class="{ 'visiual-form': source === 'visiual' }"> |
|
|
:rows="2" |
|
|
<el-input |
|
|
placeholder="请输入内部备注" |
|
|
type="textarea" |
|
|
v-model="formData.internalRemark"> |
|
|
class="cell-width-area" |
|
|
|
|
|
:rows="2" |
|
|
|
|
|
placeholder="请输入内部备注" |
|
|
|
|
|
v-model="formData.internalRemark" |
|
|
|
|
|
> |
|
|
</el-input> |
|
|
</el-input> |
|
|
</div> |
|
|
</div> |
|
|
</el-form-item> |
|
|
</el-form-item> |
|
|
|
|
|
|
|
|
<el-form-item label="图片/附件" |
|
|
<el-form-item |
|
|
label-width="150px" |
|
|
label="图片/附件" |
|
|
:class="{'form-item':source==='visiual'}" |
|
|
label-width="150px" |
|
|
prop="internalFile"> |
|
|
:class="{ 'form-item': source === 'visiual' }" |
|
|
<el-upload :headers="$getElUploadHeaders()" class="avatar-uploader" |
|
|
prop="internalFile" |
|
|
:action="uploadUlr" |
|
|
> |
|
|
:data="{ customerId: customerId }" |
|
|
<el-upload |
|
|
:show-file-list="true" |
|
|
:headers="$getElUploadHeaders()" |
|
|
:on-success="handleImgSuccess" |
|
|
class="avatar-uploader" |
|
|
:on-remove="handleImgRemove" |
|
|
:action="uploadUlr" |
|
|
:before-upload="beforeImgUpload"> |
|
|
:data="{ customerId: customerId }" |
|
|
<i v-if="source==='manage'" |
|
|
:show-file-list="true" |
|
|
:class="['el-icon-plus']"></i> |
|
|
:on-success="handleImgSuccess" |
|
|
<img v-else |
|
|
:on-remove="handleImgRemove" |
|
|
style="width:27px;height:27px" |
|
|
:before-upload="beforeImgUpload" |
|
|
src="@/assets/img/file-add.png"> |
|
|
> |
|
|
|
|
|
<i v-if="source === 'manage'" :class="['el-icon-plus']"></i> |
|
|
|
|
|
<img |
|
|
|
|
|
v-else |
|
|
|
|
|
style="width: 27px; height: 27px" |
|
|
|
|
|
src="@/assets/img/file-add.png" |
|
|
|
|
|
/> |
|
|
</el-upload> |
|
|
</el-upload> |
|
|
</el-form-item> |
|
|
</el-form-item> |
|
|
|
|
|
|
|
|
<el-form-item label="标签" |
|
|
<el-form-item |
|
|
label-width="150px" |
|
|
label="标签" |
|
|
:class="{'form-item':source==='visiual'}" |
|
|
label-width="150px" |
|
|
prop="tagList"> |
|
|
:class="{ 'form-item': source === 'visiual' }" |
|
|
|
|
|
prop="tagList" |
|
|
<fold-text v-if="tagList.length>0" |
|
|
> |
|
|
style="width: 300px" |
|
|
<fold-text v-if="tagList.length > 0" style="width: 300px" :row="3"> |
|
|
:row="3"> |
|
|
<div :key="item.name" class="tag-name" v-for="item in tagList"> |
|
|
<div :key="item.name" |
|
|
|
|
|
class="tag-name" |
|
|
|
|
|
v-for="item in tagList"> |
|
|
|
|
|
{{ item.name }} |
|
|
{{ item.name }} |
|
|
</div> |
|
|
</div> |
|
|
</fold-text> |
|
|
</fold-text> |
|
|
|
|
|
|
|
|
<el-popover placement="top" |
|
|
<el-popover |
|
|
width="450" |
|
|
placement="top" |
|
|
height="450" |
|
|
width="450" |
|
|
v-model="visibleTagPanel"> |
|
|
height="450" |
|
|
<div class="f" |
|
|
v-model="visibleTagPanel" |
|
|
style="min-height: 120px"> |
|
|
> |
|
|
|
|
|
<div class="f" style="min-height: 120px"> |
|
|
<h2>选择标签</h2> |
|
|
<h2>选择标签</h2> |
|
|
<el-select style="width: 350px" |
|
|
<el-select |
|
|
v-model="selectedTagData" |
|
|
style="width: 350px" |
|
|
multiple |
|
|
v-model="selectedTagData" |
|
|
allow-create |
|
|
multiple |
|
|
filterable |
|
|
allow-create |
|
|
placeholder="请选择" |
|
|
filterable |
|
|
@change="handleTagChange"> |
|
|
placeholder="请选择" |
|
|
|
|
|
@change="handleTagChange" |
|
|
|
|
|
> |
|
|
<el-option-group label="自定义标签"> |
|
|
<el-option-group label="自定义标签"> |
|
|
<el-option v-for="item in tagOptions.customized" |
|
|
<el-option |
|
|
:key="item.id" |
|
|
v-for="item in tagOptions.customized" |
|
|
:label="item.name" |
|
|
:key="item.id" |
|
|
:value="item.id"> |
|
|
:label="item.name" |
|
|
|
|
|
:value="item.id" |
|
|
|
|
|
> |
|
|
</el-option> |
|
|
</el-option> |
|
|
</el-option-group> |
|
|
</el-option-group> |
|
|
|
|
|
|
|
|
<el-option-group label="常用标签"> |
|
|
<el-option-group label="常用标签"> |
|
|
<el-option v-for="item in tagOptions.defaulted" |
|
|
<el-option |
|
|
:key="item.id" |
|
|
v-for="item in tagOptions.defaulted" |
|
|
:label="item.name" |
|
|
:key="item.id" |
|
|
:value="item.id"> |
|
|
:label="item.name" |
|
|
|
|
|
:value="item.id" |
|
|
|
|
|
> |
|
|
</el-option> |
|
|
</el-option> |
|
|
</el-option-group> |
|
|
</el-option-group> |
|
|
</el-select> |
|
|
</el-select> |
|
|
|
|
|
|
|
|
<el-button style="margin-left: 10px" |
|
|
<el-button |
|
|
size="small" |
|
|
style="margin-left: 10px" |
|
|
type="danger" |
|
|
size="small" |
|
|
@click="updateProjectTag">关闭</el-button> |
|
|
type="danger" |
|
|
|
|
|
@click="updateProjectTag" |
|
|
|
|
|
>关闭</el-button |
|
|
|
|
|
> |
|
|
</div> |
|
|
</div> |
|
|
<div slot="reference"> |
|
|
<div slot="reference"> |
|
|
<el-button v-if="source==='manage'" |
|
|
<el-button v-if="source === 'manage'" size="small" type="" |
|
|
size="small" |
|
|
>选择</el-button |
|
|
type="">选择</el-button> |
|
|
> |
|
|
<div v-else |
|
|
<div v-else class="one-btn">选择</div> |
|
|
class="one-btn">选择</div> |
|
|
|
|
|
</div> |
|
|
</div> |
|
|
</el-popover> |
|
|
</el-popover> |
|
|
</el-form-item> |
|
|
</el-form-item> |
|
|
|
|
|
|
|
|
</el-form> |
|
|
</el-form> |
|
|
|
|
|
|
|
|
</div> |
|
|
</div> |
|
|
</template> |
|
|
</template> |
|
|
|
|
|
|
|
@ -211,64 +258,64 @@ import { requestPost } from "@/js/dai/request"; |
|
|
import selectStaff from "@/views/components/selectStaff"; |
|
|
import selectStaff from "@/views/components/selectStaff"; |
|
|
import formVltHelper from "dai-js/tools/formVltHelper"; |
|
|
import formVltHelper from "dai-js/tools/formVltHelper"; |
|
|
import foldText from "@/views/components/foldText"; |
|
|
import foldText from "@/views/components/foldText"; |
|
|
|
|
|
import myCascader from "./myCascader.vue"; |
|
|
import { isCard } from "@/utils/validate"; |
|
|
import { isCard } from "@/utils/validate"; |
|
|
|
|
|
|
|
|
let loading; // 加载动画 |
|
|
let loading; // 加载动画 |
|
|
function iniFmData () { |
|
|
function iniFmData() { |
|
|
return { |
|
|
return { |
|
|
operationType: '1',//处理方式[0:已回复 1:已转项目 2:已转需求] |
|
|
operationType: "1", //处理方式[0:已回复 1:已转项目 2:已转需求] |
|
|
publicReply: '',//项目方案 1000 |
|
|
publicReply: "", //项目方案 1000 |
|
|
internalRemark: '',// 内部备注 1000 |
|
|
internalRemark: "", // 内部备注 1000 |
|
|
gridId: '',// |
|
|
gridId: "", // |
|
|
assistanceUnitIndex: '', |
|
|
assistanceUnitIndex: "", |
|
|
assistanceUnitId: '',// 协办单位Id |
|
|
assistanceUnitId: "", // 协办单位Id |
|
|
assistanceUnitType: '',// 协办单位类型,1社区自组织,2联建单位 |
|
|
assistanceUnitType: "", // 协办单位类型,1社区自组织,2联建单位 |
|
|
staffList: [],// 勾选人员信息 |
|
|
staffList: [], // 勾选人员信息 |
|
|
categoryList: [],// |
|
|
categoryList: [], // |
|
|
tagList: [],// |
|
|
tagList: [], // |
|
|
|
|
|
|
|
|
internalFile: [],// |
|
|
internalFile: [], // |
|
|
title: '',// |
|
|
title: "", // |
|
|
|
|
|
|
|
|
publicFile: [],// |
|
|
publicFile: [], // |
|
|
locateAddress: '',// |
|
|
locateAddress: "", // |
|
|
locateLongitude: '',// |
|
|
locateLongitude: "", // |
|
|
locateDimension: '',// |
|
|
locateDimension: "", // |
|
|
eventId: '',// |
|
|
eventId: "", // |
|
|
}; |
|
|
}; |
|
|
} |
|
|
} |
|
|
export default { |
|
|
export default { |
|
|
data () { |
|
|
data() { |
|
|
return { |
|
|
return { |
|
|
btnDisable: false, |
|
|
btnDisable: false, |
|
|
customerId: localStorage.getItem("customerId"), |
|
|
customerId: localStorage.getItem("customerId"), |
|
|
gridList: [],//所属网格list--场所区域 |
|
|
gridList: [], //所属网格list--场所区域 |
|
|
myDepartmentList: [],//部门数组 |
|
|
myDepartmentList: [], //部门数组 |
|
|
visibleStaffPanel: false, |
|
|
visibleStaffPanel: false, |
|
|
assistanceUnitList: [],//协办单位数组 |
|
|
assistanceUnitList: [], //协办单位数组 |
|
|
tagList: [],//标签数组 |
|
|
tagList: [], //标签数组 |
|
|
|
|
|
|
|
|
tagOptions: [], |
|
|
tagOptions: [], |
|
|
visibleTagPanel: false, |
|
|
visibleTagPanel: false, |
|
|
selectedTagData: [], |
|
|
selectedTagData: [], |
|
|
|
|
|
|
|
|
casOptions: [], |
|
|
casOptions: [], |
|
|
iscascaderShow: 0, |
|
|
// iscascaderShow: 0, |
|
|
selCategoryArray: [], |
|
|
selCategoryArray: [], |
|
|
selCateObj: {}, |
|
|
selCateObj: {}, |
|
|
optionProps: { |
|
|
optionProps: { |
|
|
multiple: false, |
|
|
multiple: false, |
|
|
value: 'id', |
|
|
value: "id", |
|
|
label: 'name', |
|
|
label: "name", |
|
|
children: 'subCategory', |
|
|
children: "subCategory", |
|
|
}, |
|
|
}, |
|
|
|
|
|
|
|
|
formData: iniFmData(), |
|
|
formData: iniFmData(), |
|
|
formDataTemp: { |
|
|
formDataTemp: { |
|
|
assistanceUnitIndex: 0, |
|
|
assistanceUnitIndex: 0, |
|
|
assistanceUnitId: '',// 协办单位Id |
|
|
assistanceUnitId: "", // 协办单位Id |
|
|
assistanceUnitType: '',// 协办单位类型,1社区自组织,2联建单位 |
|
|
assistanceUnitType: "", // 协办单位类型,1社区自组织,2联建单位 |
|
|
|
|
|
|
|
|
eventId: "", |
|
|
eventId: "", |
|
|
gridId: "63d5ff92ea981b1c58e4914ac894c610", |
|
|
gridId: "63d5ff92ea981b1c58e4914ac894c610", |
|
@ -280,38 +327,34 @@ export default { |
|
|
|
|
|
|
|
|
internalFile: [], |
|
|
internalFile: [], |
|
|
staffList: [], |
|
|
staffList: [], |
|
|
tagList: [{ |
|
|
tagList: [ |
|
|
id: "46294b3c9f96ee4d0b00e997e06c8f97", |
|
|
{ |
|
|
isDisable: "enable", |
|
|
id: "46294b3c9f96ee4d0b00e997e06c8f97", |
|
|
name: "车行道、人行道、盲道、无障碍通道、路名牌", |
|
|
isDisable: "enable", |
|
|
}, |
|
|
name: "车行道、人行道、盲道、无障碍通道、路名牌", |
|
|
{ |
|
|
}, |
|
|
id: "953bafc1191f784841d9b8da61ec7b9b", |
|
|
{ |
|
|
isDisable: "enable", |
|
|
id: "953bafc1191f784841d9b8da61ec7b9b", |
|
|
name: "城市广场管理", |
|
|
isDisable: "enable", |
|
|
}], |
|
|
name: "城市广场管理", |
|
|
|
|
|
}, |
|
|
|
|
|
], |
|
|
}, |
|
|
}, |
|
|
|
|
|
|
|
|
okflag: false, |
|
|
okflag: false, |
|
|
|
|
|
|
|
|
uploadUlr: window.SITE_CONFIG["apiURL"] + "/oss/file/uploadqrcodeV2", |
|
|
uploadUlr: window.SITE_CONFIG["apiURL"] + "/oss/file/uploadqrcodeV2", |
|
|
eventDetailCopy: {} |
|
|
eventDetailCopy: {}, |
|
|
|
|
|
|
|
|
}; |
|
|
}; |
|
|
}, |
|
|
}, |
|
|
components: { selectStaff, foldText }, |
|
|
components: { selectStaff, foldText, myCascader }, |
|
|
computed: { |
|
|
computed: { |
|
|
dataRule () { |
|
|
dataRule() { |
|
|
|
|
|
|
|
|
return { |
|
|
return { |
|
|
categoryList: [ |
|
|
categoryList: [ |
|
|
{ required: true, message: "请填写事件分类", trigger: "blur" }, |
|
|
{ required: true, message: "事件分类不能为空", trigger: "blur" }, |
|
|
], |
|
|
|
|
|
title: [ |
|
|
|
|
|
{ required: true, message: "标题不能为空", trigger: "blur" }, |
|
|
|
|
|
], |
|
|
], |
|
|
|
|
|
title: [{ required: true, message: "标题不能为空", trigger: "blur" }], |
|
|
gridId: [ |
|
|
gridId: [ |
|
|
{ required: true, message: "所属网格不能为空", trigger: "blur" }, |
|
|
{ required: true, message: "所属网格不能为空", trigger: "blur" }, |
|
|
], |
|
|
], |
|
@ -321,14 +364,12 @@ export default { |
|
|
publicReply: [ |
|
|
publicReply: [ |
|
|
{ required: true, message: "项目方案不能为空", trigger: "blur" }, |
|
|
{ required: true, message: "项目方案不能为空", trigger: "blur" }, |
|
|
], |
|
|
], |
|
|
|
|
|
|
|
|
}; |
|
|
}; |
|
|
}, |
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}, |
|
|
}, |
|
|
props: { |
|
|
props: { |
|
|
gridId: {//新增是选择的网格id |
|
|
gridId: { |
|
|
|
|
|
//新增是选择的网格id |
|
|
type: String, |
|
|
type: String, |
|
|
default: "", |
|
|
default: "", |
|
|
}, |
|
|
}, |
|
@ -338,23 +379,21 @@ export default { |
|
|
}, |
|
|
}, |
|
|
eventDetailData: { |
|
|
eventDetailData: { |
|
|
type: Object, |
|
|
type: Object, |
|
|
default () { |
|
|
default() { |
|
|
return {} |
|
|
return {}; |
|
|
} |
|
|
}, |
|
|
}, |
|
|
}, |
|
|
source: {//展示来源:manage 管理平台 visiual 可视化平台 |
|
|
source: { |
|
|
|
|
|
//展示来源:manage 管理平台 visiual 可视化平台 |
|
|
type: String, |
|
|
type: String, |
|
|
default: 'manage' |
|
|
default: "manage", |
|
|
} |
|
|
}, |
|
|
}, |
|
|
}, |
|
|
watch: { |
|
|
watch: { |
|
|
gridId: function (val) { |
|
|
gridId: function (val) { |
|
|
|
|
|
this.formData.gridId = val; |
|
|
this.formData.gridId = val |
|
|
|
|
|
|
|
|
|
|
|
}, |
|
|
}, |
|
|
"formData.assistanceUnitIndex": function (val) { |
|
|
"formData.assistanceUnitIndex": function (val) { |
|
|
|
|
|
|
|
|
if (val === "" || this.assistanceUnitList.length === 0) { |
|
|
if (val === "" || this.assistanceUnitList.length === 0) { |
|
|
this.formData.assistanceUnitId = ""; |
|
|
this.formData.assistanceUnitId = ""; |
|
|
this.formData.assistanceUnitType = ""; |
|
|
this.formData.assistanceUnitType = ""; |
|
@ -366,7 +405,7 @@ export default { |
|
|
} |
|
|
} |
|
|
}, |
|
|
}, |
|
|
|
|
|
|
|
|
async selectedTagData (val) { |
|
|
async selectedTagData(val) { |
|
|
const { tagOptions } = this; |
|
|
const { tagOptions } = this; |
|
|
this.tagList = await Promise.all( |
|
|
this.tagList = await Promise.all( |
|
|
val.map(async (id) => { |
|
|
val.map(async (id) => { |
|
@ -393,115 +432,112 @@ export default { |
|
|
); |
|
|
); |
|
|
|
|
|
|
|
|
this.tagList = this.tagList.filter((item) => item.id); |
|
|
this.tagList = this.tagList.filter((item) => item.id); |
|
|
console.log(this.tagList) |
|
|
console.log(this.tagList); |
|
|
}, |
|
|
}, |
|
|
}, |
|
|
}, |
|
|
created () { |
|
|
created() {}, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
async mounted() { |
|
|
}, |
|
|
const { user } = this.$store.state; |
|
|
|
|
|
this.agencyId = user.agencyId; |
|
|
async mounted () { |
|
|
|
|
|
const { user } = this.$store.state |
|
|
|
|
|
this.agencyId = user.agencyId |
|
|
|
|
|
this.getCategoryList(); |
|
|
this.getCategoryList(); |
|
|
this.loadGrid(); |
|
|
this.loadGrid(); |
|
|
this.getMyDepartmentList(); |
|
|
this.getMyDepartmentList(); |
|
|
// this.getAssistanceUnitList(); |
|
|
// this.getAssistanceUnitList(); |
|
|
this.getTagList() |
|
|
this.getTagList(); |
|
|
// this.formData = { ...this.formDataTemp } |
|
|
// this.formData = { ...this.formDataTemp } |
|
|
if (this.eventId) { |
|
|
if (this.eventId) { |
|
|
this.eventDetailCopy = JSON.parse(JSON.stringify(this.eventDetailData)); |
|
|
this.eventDetailCopy = JSON.parse(JSON.stringify(this.eventDetailData)); |
|
|
this.formData.gridId = this.eventDetailCopy.gridId |
|
|
this.formData.gridId = this.eventDetailCopy.gridId; |
|
|
|
|
|
|
|
|
if (this.eventDetailCopy.parentCategoryId && this.eventDetailCopy.categoryId) { |
|
|
if ( |
|
|
this.selCategoryArray = [] |
|
|
this.eventDetailCopy.parentCategoryId && |
|
|
this.selCategoryArray.push(this.eventDetailCopy.parentCategoryId) |
|
|
this.eventDetailCopy.categoryId |
|
|
this.selCategoryArray.push(this.eventDetailCopy.categoryId) |
|
|
) { |
|
|
|
|
|
this.selCategoryArray = []; |
|
|
|
|
|
this.selCategoryArray.push(this.eventDetailCopy.parentCategoryId); |
|
|
|
|
|
this.selCategoryArray.push(this.eventDetailCopy.categoryId); |
|
|
|
|
|
|
|
|
this.selCateObj = { |
|
|
this.selCateObj = { |
|
|
name: this.eventDetailCopy.categoryName, |
|
|
name: this.eventDetailCopy.categoryName, |
|
|
id: this.eventDetailCopy.categoryId |
|
|
id: this.eventDetailCopy.categoryId, |
|
|
} |
|
|
}; |
|
|
|
|
|
|
|
|
this.formData.categoryList = [] |
|
|
this.formData.categoryList = []; |
|
|
this.formData.categoryList.push(this.selCateObj) |
|
|
this.formData.categoryList.push(this.selCateObj); |
|
|
} |
|
|
} |
|
|
} else { |
|
|
} else { |
|
|
this.formData.gridId = this.gridId |
|
|
this.formData.gridId = this.gridId; |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
}, |
|
|
}, |
|
|
|
|
|
|
|
|
methods: { |
|
|
methods: { |
|
|
async getCategoryList () { |
|
|
async getCategoryList() { |
|
|
const url = "/governance/issueprojectcategorydict/list" |
|
|
const url = "/governance/issueprojectcategorydict/list"; |
|
|
|
|
|
|
|
|
let params = {} |
|
|
let params = {}; |
|
|
|
|
|
|
|
|
const { data, code, msg } = await requestPost(url, params) |
|
|
const { data, code, msg } = await requestPost(url, params); |
|
|
|
|
|
|
|
|
if (code === 0) { |
|
|
if (code === 0) { |
|
|
let treeDataNew = this.filterTree(data) |
|
|
let treeDataNew = this.filterTree(data); |
|
|
|
|
|
|
|
|
//组织级联数据 |
|
|
//组织级联数据 |
|
|
++this.iscascaderShow |
|
|
// ++this.iscascaderShow; |
|
|
this.casOptions = [] |
|
|
this.casOptions = []; |
|
|
this.casOptions = treeDataNew |
|
|
this.casOptions = treeDataNew; |
|
|
|
|
|
|
|
|
} else { |
|
|
} else { |
|
|
this.$message.error(msg) |
|
|
this.$message.error(msg); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
}, |
|
|
}, |
|
|
|
|
|
|
|
|
handleChangeCate () { |
|
|
handleChangeCate(obj) { |
|
|
console.log(this.$refs["myCascader"].getCheckedNodes()[0].data) |
|
|
// console.log(this.$refs["myCascader"].getCheckedNodes()[0].data); |
|
|
this.selCateObj = this.$refs["myCascader"].getCheckedNodes()[0].data |
|
|
// this.selCateObj = this.$refs["myCascader"].getCheckedNodes()[0].data; |
|
|
this.formData.categoryList = [] |
|
|
this.selCateObj = obj |
|
|
this.formData.categoryList.push(this.selCateObj) |
|
|
this.formData.categoryList = []; |
|
|
|
|
|
let flag = JSON.stringify(obj) == '{}' |
|
|
|
|
|
if(flag) this.formData.categoryList = [] |
|
|
|
|
|
else this.formData.categoryList.push(this.selCateObj); |
|
|
|
|
|
|
|
|
}, |
|
|
}, |
|
|
|
|
|
|
|
|
//重构树,去除网格 |
|
|
//重构树,去除网格 |
|
|
filterTree (arr) { |
|
|
filterTree(arr) { |
|
|
let childs = arr |
|
|
let childs = arr; |
|
|
for (let i = childs.length; i--; i > 0) { |
|
|
for (let i = childs.length; i--; i > 0) { |
|
|
if (childs[i].subCategory) { |
|
|
if (childs[i].subCategory) { |
|
|
if (childs[i].subCategory.length) { |
|
|
if (childs[i].subCategory.length) { |
|
|
this.filterTree(childs[i].subCategory) |
|
|
this.filterTree(childs[i].subCategory); |
|
|
} else { |
|
|
} else { |
|
|
delete childs[i].subCategory |
|
|
delete childs[i].subCategory; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
return arr |
|
|
return arr; |
|
|
}, |
|
|
}, |
|
|
async loadGrid () { |
|
|
async loadGrid() { |
|
|
const url = "/gov/org/customergrid/gridoption" |
|
|
const url = "/gov/org/customergrid/gridoption"; |
|
|
let params = { |
|
|
let params = { |
|
|
agencyId: this.agencyId |
|
|
agencyId: this.agencyId, |
|
|
} |
|
|
}; |
|
|
|
|
|
|
|
|
const { data, code, msg } = await requestPost(url, params) |
|
|
const { data, code, msg } = await requestPost(url, params); |
|
|
|
|
|
|
|
|
if (code === 0) { |
|
|
if (code === 0) { |
|
|
this.gridList = data |
|
|
this.gridList = data; |
|
|
|
|
|
|
|
|
} else { |
|
|
} else { |
|
|
this.$message.error(msg) |
|
|
this.$message.error(msg); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
}, |
|
|
}, |
|
|
|
|
|
|
|
|
//加载处理部门数据 |
|
|
//加载处理部门数据 |
|
|
async getMyDepartmentList () { |
|
|
async getMyDepartmentList() { |
|
|
const url = "/governance/trace/approvalagencylist"; |
|
|
const url = "/governance/trace/approvalagencylist"; |
|
|
|
|
|
|
|
|
const { data, code, msg } = await requestPost(url, { |
|
|
const { data, code, msg } = await requestPost(url, { |
|
|
issueId: '', |
|
|
issueId: "", |
|
|
projectStaffId: '', |
|
|
projectStaffId: "", |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
if (code === 0) { |
|
|
if (code === 0) { |
|
@ -512,7 +548,7 @@ export default { |
|
|
}, |
|
|
}, |
|
|
|
|
|
|
|
|
//加载协同单位数据 |
|
|
//加载协同单位数据 |
|
|
async getAssistanceUnitList () { |
|
|
async getAssistanceUnitList() { |
|
|
const url = "/heart/icpartyunit/assistanceUnitList"; |
|
|
const url = "/heart/icpartyunit/assistanceUnitList"; |
|
|
|
|
|
|
|
|
const { data, code, msg } = await requestPost(url, { |
|
|
const { data, code, msg } = await requestPost(url, { |
|
@ -521,17 +557,14 @@ export default { |
|
|
|
|
|
|
|
|
if (code === 0) { |
|
|
if (code === 0) { |
|
|
this.assistanceUnitList = data; |
|
|
this.assistanceUnitList = data; |
|
|
|
|
|
|
|
|
} else { |
|
|
} else { |
|
|
this.$message.error(msg); |
|
|
this.$message.error(msg); |
|
|
} |
|
|
} |
|
|
}, |
|
|
}, |
|
|
//加载标签 |
|
|
//加载标签 |
|
|
async getTagList () { |
|
|
async getTagList() { |
|
|
const url = "/governance/issueprojecttagdict/list"; |
|
|
const url = "/governance/issueprojecttagdict/list"; |
|
|
const { data, code, msg } = await requestPost(url, { |
|
|
const { data, code, msg } = await requestPost(url, {}); |
|
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
if (code === 0) { |
|
|
if (code === 0) { |
|
|
this.tagOptions = { |
|
|
this.tagOptions = { |
|
@ -543,29 +576,26 @@ export default { |
|
|
} |
|
|
} |
|
|
}, |
|
|
}, |
|
|
|
|
|
|
|
|
handleTagChange (val) { |
|
|
handleTagChange(val) { |
|
|
console.log(val); |
|
|
console.log(val); |
|
|
}, |
|
|
}, |
|
|
updateProjectTag () { |
|
|
updateProjectTag() { |
|
|
this.visibleTagPanel = false; |
|
|
this.visibleTagPanel = false; |
|
|
}, |
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
async getProjectInfo() { |
|
|
async getProjectInfo () { |
|
|
this.okflag = false; |
|
|
this.okflag = false |
|
|
|
|
|
this.$refs["ref_form"].validate((valid, messageObj) => { |
|
|
this.$refs["ref_form"].validate((valid, messageObj) => { |
|
|
if (!valid) { |
|
|
if (!valid) { |
|
|
app.util.validateRule(messageObj); |
|
|
app.util.validateRule(messageObj); |
|
|
|
|
|
|
|
|
} else { |
|
|
} else { |
|
|
|
|
|
this.formData.tagList = this.tagList; |
|
|
this.formData.tagList = this.tagList |
|
|
this.okflag = true; |
|
|
this.okflag = true |
|
|
|
|
|
} |
|
|
} |
|
|
}); |
|
|
}); |
|
|
}, |
|
|
}, |
|
|
|
|
|
|
|
|
beforeImgUpload (file) { |
|
|
beforeImgUpload(file) { |
|
|
const isLt1M = file.size / 1024 / 1024 < 10; |
|
|
const isLt1M = file.size / 1024 / 1024 < 10; |
|
|
|
|
|
|
|
|
if (!isLt1M) { |
|
|
if (!isLt1M) { |
|
@ -573,10 +603,8 @@ export default { |
|
|
} |
|
|
} |
|
|
return isLt1M; |
|
|
return isLt1M; |
|
|
}, |
|
|
}, |
|
|
resetData () { |
|
|
resetData() {}, |
|
|
|
|
|
handleImgSuccess(res, file, fileList) { |
|
|
}, |
|
|
|
|
|
handleImgSuccess (res, file, fileList) { |
|
|
|
|
|
console.log("res.data.url", file); |
|
|
console.log("res.data.url", file); |
|
|
if (res.code === 0 && res.msg === "success") { |
|
|
if (res.code === 0 && res.msg === "success") { |
|
|
console.log("res.data.url", res.data.url); |
|
|
console.log("res.data.url", res.data.url); |
|
@ -593,7 +621,7 @@ export default { |
|
|
} |
|
|
} |
|
|
}, |
|
|
}, |
|
|
|
|
|
|
|
|
handleImgRemove (file) { |
|
|
handleImgRemove(file) { |
|
|
let index = this.formData.internalFile.findIndex( |
|
|
let index = this.formData.internalFile.findIndex( |
|
|
(item) => item.url == file.response.data.url |
|
|
(item) => item.url == file.response.data.url |
|
|
); |
|
|
); |
|
@ -601,9 +629,8 @@ export default { |
|
|
console.log(this.formData.internalFile); |
|
|
console.log(this.formData.internalFile); |
|
|
}, |
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 开启加载动画 |
|
|
// 开启加载动画 |
|
|
startLoading () { |
|
|
startLoading() { |
|
|
loading = Loading.service({ |
|
|
loading = Loading.service({ |
|
|
lock: true, // 是否锁定 |
|
|
lock: true, // 是否锁定 |
|
|
text: "正在加载……", // 加载中需要显示的文字 |
|
|
text: "正在加载……", // 加载中需要显示的文字 |
|
@ -611,7 +638,7 @@ export default { |
|
|
}); |
|
|
}); |
|
|
}, |
|
|
}, |
|
|
// 结束加载动画 |
|
|
// 结束加载动画 |
|
|
endLoading () { |
|
|
endLoading() { |
|
|
// clearTimeout(timer); |
|
|
// clearTimeout(timer); |
|
|
if (loading) { |
|
|
if (loading) { |
|
|
loading.close(); |
|
|
loading.close(); |
|
|