7 changed files with 1342 additions and 9 deletions
			
			
		| @ -0,0 +1,446 @@ | |||
| <template> | |||
|   <div> | |||
|     <div class="dialog-h-content scroll-h"> | |||
| 
 | |||
|       <el-form ref="ref_form" | |||
|                :inline="true" | |||
|                :model="formData" | |||
|                :rules="dataRule" | |||
|                :disabled="formType === 'detail'" | |||
|                class="form"> | |||
| 
 | |||
|         <el-form-item label="场所区域" | |||
|                       prop="gridId" | |||
|                       label-width="150px" | |||
|                       style="display: block"> | |||
|           <el-select class="item_width_1" | |||
|                      v-model="formData.gridId" | |||
|                      placeholder="全部" | |||
|                      clearable> | |||
|             <el-option v-for="item in gridList" | |||
|                        @click.native="handleChangeGrid" | |||
|                        :key="item.value" | |||
|                        :label="item.label" | |||
|                        :value="item.value"> | |||
|             </el-option> | |||
|           </el-select> | |||
|         </el-form-item> | |||
| 
 | |||
|         <el-form-item label="场所类型" | |||
|                       label-width="150px" | |||
|                       prop="ninePlaceVal"> | |||
|           <el-select class="item_width_1" | |||
|                      v-model="formData.ninePlaceVal" | |||
|                      placeholder="请选择" | |||
|                      clearable> | |||
|             <el-option v-for="item in placeTypeList" | |||
|                        @click.native="handleChangeType" | |||
|                        :key="item.value" | |||
|                        :label="item.label" | |||
|                        :value="item.value"> | |||
|             </el-option> | |||
|           </el-select> | |||
| 
 | |||
|         </el-form-item> | |||
| 
 | |||
|         <el-form-item label="场所名称" | |||
|                       label-width="150px" | |||
|                       prop="placeOrgId"> | |||
|           <el-select class="item_width_1" | |||
|                      v-model="formData.placeOrgId" | |||
|                      placeholder="请选择" | |||
|                      clearable> | |||
|             <el-option v-for="item in placesList" | |||
|                        :key="item.placeOrgId" | |||
|                        :label="item.placeOrgName" | |||
|                        :value="item.placeOrgId"> | |||
|             </el-option> | |||
|           </el-select> | |||
| 
 | |||
|         </el-form-item> | |||
|         <el-form-item label="分队名称" | |||
|                       label-width="150px" | |||
|                       prop="placePatrolTeamId"> | |||
|           <el-select class="item_width_1" | |||
|                      v-model="formData.placePatrolTeamId" | |||
|                      placeholder="请选择" | |||
|                      clearable> | |||
|             <el-option v-for="(item,index) in teamsList" | |||
|                        @click.native="hancleChangeTeam(index)" | |||
|                        :key="item.teamId" | |||
|                        :label="item.teamName" | |||
|                        :value="item.teamId"> | |||
|             </el-option> | |||
|           </el-select> | |||
|         </el-form-item> | |||
| 
 | |||
|         <el-form-item label="检查人员" | |||
|                       prop="inspectorArray" | |||
|                       label-width="150px" | |||
|                       style="display: block"> | |||
|           <el-checkbox-group class="item_width_1" | |||
|                              style="display:flex;flex-wrap:wrap" | |||
|                              v-model="formData.inspectorArray"> | |||
|             <el-checkbox v-for="item in inspectorsList" | |||
|                          :key="item.id" | |||
|                          :label="item.id">{{item.name}}</el-checkbox> | |||
| 
 | |||
|           </el-checkbox-group> | |||
| 
 | |||
|         </el-form-item> | |||
|         <el-form-item label="首次巡查时间" | |||
|                       style="display: block" | |||
|                       prop="firstTime" | |||
|                       label-width="150px"> | |||
|           <el-date-picker v-model="formData.firstTime" | |||
|                           value-format="yyyy-MM-dd HH:mm:ss" | |||
|                           type="date" | |||
|                           placeholder="选择日期"> | |||
|           </el-date-picker> | |||
|         </el-form-item> | |||
| 
 | |||
|         <el-form-item label="隐患明细" | |||
|                       prop="detailed" | |||
|                       label-width="150px" | |||
|                       style="display: block"> | |||
|           <el-input class="item_width_1" | |||
|                     type="textarea" | |||
|                     maxlength="500" | |||
|                     show-word-limit | |||
|                     :rows="3" | |||
|                     placeholder="请输入备注,不超过500字" | |||
|                     v-model="formData.detailed"></el-input> | |||
|         </el-form-item> | |||
| 
 | |||
|         <el-form-item label="首次检查结论" | |||
|                       prop="firstResult" | |||
|                       label-width="150px" | |||
|                       style="display: block"> | |||
|           <el-select class="item_width_1" | |||
|                      v-model="formData.firstResult" | |||
|                      placeholder="全部" | |||
|                      clearable> | |||
|             <el-option v-for="item in resultList" | |||
|                        :key="item.value" | |||
|                        :label="item.label" | |||
|                        :value="item.value"> | |||
|             </el-option> | |||
|           </el-select> | |||
|         </el-form-item> | |||
| 
 | |||
|         <el-form-item label="拟复查时间" | |||
|                       style="display: block" | |||
|                       prop="reviewTime" | |||
|                       label-width="150px"> | |||
|           <el-date-picker v-model="formData.reviewTime" | |||
|                           value-format="yyyy-MM-dd HH:mm:ss" | |||
|                           type="date" | |||
|                           placeholder="选择日期"> | |||
|           </el-date-picker> | |||
|         </el-form-item> | |||
|       </el-form> | |||
| 
 | |||
|     </div> | |||
|     <div class="div_btn"> | |||
|       <el-button size="small" | |||
|                  @click="handleCancle">取 消</el-button> | |||
|       <el-button size="small" | |||
|                  v-if="formType != 'detail'" | |||
|                  type="primary" | |||
|                  :disabled="btnDisable" | |||
|                  @click="handleComfirm">确 定</el-button> | |||
|     </div> | |||
|   </div> | |||
| </template> | |||
| 
 | |||
| <script> | |||
| import { mapGetters } from 'vuex' | |||
| import { Loading } from 'element-ui' // 引入Loading服务 | |||
| import { requestPost } from '@/js/dai/request' | |||
| 
 | |||
| let loading // 加载动画 | |||
| export default { | |||
|   data () { | |||
|     return { | |||
|       formType: 'add', //表单操作类型 add新增,edit编辑,detail详情 | |||
|       btnDisable: false, | |||
| 
 | |||
|       placesList: [],//场景列表 | |||
|       teamsList: [],//分队列表 | |||
|       inspectorsList: [],//检查人员列表 | |||
| 
 | |||
|       placePatrolRecordId: '', | |||
|       formData: { | |||
|         gridId: '',//网格Id	 | |||
|         ninePlaceVal: '',//九小场所类型value值	 | |||
|         placeOrgId: '',//场所下的组织Id-场所名称	 | |||
|         placePatrolTeamId: '',//场所下分队Id	 | |||
|         inspectorArray: [],//检查人员数组 | |||
|         inspectors: '',//检查人员Id,逗号分隔 | |||
|         firstTime: '',//首次巡查时间	 | |||
|         detailed: '',//隐患明细	 | |||
|         firstResult: '',//首次检查结果【0:合格 1:不合格】	 | |||
|         reviewTime: '',//拟复查时间	 | |||
|       }, | |||
| 
 | |||
|     } | |||
|   }, | |||
|   components: {}, | |||
|   mounted () { | |||
| 
 | |||
|   }, | |||
| 
 | |||
|   methods: { | |||
| 
 | |||
|     async initForm (type, placePatrolRecordId) { | |||
|       this.$refs.ref_form.resetFields(); | |||
|       this.startLoading() | |||
|       await this.loadPlaces() | |||
|       await this.loadTeams() | |||
| 
 | |||
|       this.formType = type | |||
|       if (placePatrolRecordId) { | |||
|         this.placePatrolRecordId = placePatrolRecordId | |||
|         this.formData.placePatrolRecordId = placePatrolRecordId | |||
|         await this.loadFormData() | |||
|         await this.loadInspectors() | |||
|       } | |||
|       this.endLoading() | |||
|     }, | |||
| 
 | |||
|     //改变场所区域 | |||
|     handleChangeGrid () { | |||
|       this.formData.placeOrgId = '' | |||
|       this.loadPlaces() | |||
|     }, | |||
| 
 | |||
|     //改变场所类型 | |||
|     handleChangeType () { | |||
|       this.formData.placeOrgId = '' | |||
|       this.loadPlaces() | |||
|     }, | |||
| 
 | |||
| 
 | |||
|     //加载场所 | |||
|     async loadPlaces () { | |||
|       const url = '/gov/org/placeorg/getlist' | |||
| 
 | |||
|       let params = { | |||
|         gridId: this.formData.gridId,//场所区域【网格Id】	 | |||
|         ninePlaceVal: this.formData.ninePlaceVal,//场所类型【九小场所Value值】	 | |||
|         isPage: false | |||
|       } | |||
| 
 | |||
|       const { data, code, msg } = await requestPost(url, params) | |||
| 
 | |||
|       if (code === 0) { | |||
|         this.placesList = data.list | |||
| 
 | |||
|       } else { | |||
|         this.$message.error(msg) | |||
|       } | |||
|     }, | |||
| 
 | |||
| 
 | |||
|     //加载分队 | |||
|     async loadTeams () { | |||
|       const url = '/gov/org/placepatrolteam/getlist' | |||
|       // const url = 'http://yapi.elinkservice.cn/mock/245/gov/org/placepatrolteam/getlist' | |||
|       let params = { | |||
|         isPage: false | |||
|       } | |||
| 
 | |||
|       const { data, code, msg } = await requestPost(url, params) | |||
| 
 | |||
|       if (code === 0) { | |||
|         this.teamsList = data.list | |||
|         if (this.teamsList.length > 0) { | |||
|           this.formData.placePatrolTeamId = this.teamsList[0].teamId | |||
| 
 | |||
|           this.hancleChangeTeam(0) | |||
|         } | |||
| 
 | |||
|       } else { | |||
|         this.$message.error(msg) | |||
|       } | |||
|     }, | |||
| 
 | |||
|     //点击分队切换人员 | |||
|     async hancleChangeTeam (index) { | |||
|       let array = [] | |||
|       this.formData.inspectorArray = [...array] | |||
|       // this.formData.placePatrolTeamId = this.teamsList[index].teamId | |||
|       await this.loadInspectors() | |||
|     }, | |||
| 
 | |||
|     //加载分队下人员 | |||
|     async loadInspectors () { | |||
|       const url = '/gov/org/placepatrolteamstaff/getlist' | |||
|       // const url = 'http://yapi.elinkservice.cn/mock/245/gov/org/placepatrolteamstaff/getlist' | |||
|       let params = { | |||
|         teamId: this.formData.placePatrolTeamId | |||
|       } | |||
| 
 | |||
|       const { data, code, msg } = await requestPost(url, params) | |||
| 
 | |||
|       if (code === 0) { | |||
|         this.inspectorsList = data | |||
| 
 | |||
|       } else { | |||
|         this.$message.error(msg) | |||
|       } | |||
|     }, | |||
|     //加载form | |||
|     async loadFormData () { | |||
|       const url = '/gov/org/placepatrolrecord/detail' | |||
| 
 | |||
|       let params = { | |||
|         placePatrolRecordId: this.placePatrolRecordId | |||
|       } | |||
| 
 | |||
|       const { data, code, msg } = await requestPost(url, params) | |||
| 
 | |||
|       if (code === 0) { | |||
|         data.inspectorArray = data.inspectors.split(',') | |||
|         this.formData = { ...data } | |||
| 
 | |||
| 
 | |||
| 
 | |||
|       } else { | |||
|         this.$message.error(msg) | |||
|       } | |||
|     }, | |||
| 
 | |||
| 
 | |||
|     async handleComfirm () { | |||
| 
 | |||
|       this.btnDisable = true | |||
|       setTimeout(() => { | |||
|         this.btnDisable = false | |||
|       }, 10000) | |||
|       this.$refs['ref_form'].validate((valid, messageObj) => { | |||
|         if (!valid) { | |||
|           app.util.validateRule(messageObj) | |||
|           this.btnDisable = false | |||
|         } else { | |||
|           this.addRecord() | |||
|         } | |||
| 
 | |||
|       }) | |||
| 
 | |||
|     }, | |||
|     async addRecord () { | |||
| 
 | |||
|       let url = "/gov/org/placepatrolrecord/add" | |||
|       // let url = "http://yapi.elinkservice.cn/mock/245/gov/org/placepatrolrecord/add" | |||
|       this.formData.inspectors = this.formData.inspectorArray.join(',') | |||
| 
 | |||
|       const { data, code, msg } = await requestPost(url, this.formData) | |||
| 
 | |||
|       if (code === 0) { | |||
|         this.$message({ | |||
|           type: 'success', | |||
|           message: '操作成功' | |||
|         }) | |||
|         this.resetData() | |||
|         this.$emit('dialogOk') | |||
|         this.btnDisable = false | |||
|       } else { | |||
|         this.btnDisable = false | |||
|         this.$message.error(msg) | |||
|       } | |||
| 
 | |||
|     }, | |||
| 
 | |||
|     handleCancle () { | |||
| 
 | |||
|       this.resetData() | |||
|       this.$emit('dialogCancle') | |||
| 
 | |||
|     }, | |||
| 
 | |||
|     resetData () { | |||
|       this.formData = { | |||
|         gridId: '',//网格Id	 | |||
|         ninePlaceVal: '',//九小场所类型value值	 | |||
|         placeOrgId: '',//场所下的组织Id-场所名称	 | |||
|         placePatrolTeamId: '',//场所下分队Id	 | |||
|         inspectorArray: [],//检查人员数组 | |||
|         inspectors: '',//检查人员Id,逗号分隔 | |||
|         firstTime: '',//首次巡查时间	 | |||
|         detailed: '',//隐患明细	 | |||
|         firstResult: '',//首次检查结果【0:合格 1:不合格】	 | |||
|         reviewTime: '',//拟复查时间	 | |||
|       } | |||
|     }, | |||
|     // 开启加载动画 | |||
|     startLoading () { | |||
|       loading = Loading.service({ | |||
|         lock: true, // 是否锁定 | |||
|         text: '正在加载……', // 加载中需要显示的文字 | |||
|         background: 'rgba(0,0,0,.7)' // 背景颜色 | |||
|       }) | |||
|     }, | |||
|     // 结束加载动画 | |||
|     endLoading () { | |||
|       // clearTimeout(timer); | |||
|       if (loading) { | |||
|         loading.close() | |||
|       } | |||
|     } | |||
|   }, | |||
|   computed: { | |||
|     dataRule () { | |||
|       return { | |||
| 
 | |||
|         gridId: [ | |||
|           { required: true, message: '场所网格不能为空', trigger: 'blur' } | |||
|         ], | |||
|         ninePlaceVal: [ | |||
|           { required: true, message: '场所类型不能为空', trigger: 'blur' }, | |||
|         ], | |||
|         placeOrgId: [ | |||
|           { required: true, message: '场所名称不能为空', trigger: 'blur' } | |||
|         ], | |||
|         placePatrolTeamId: [ | |||
|           { required: true, message: '分队不能为空', trigger: 'blur' } | |||
|         ], | |||
| 
 | |||
|         inspectorArray: [ | |||
|           { required: true, message: '巡检人员不能为空', trigger: 'blur' } | |||
|         ], | |||
|         firstTime: [ | |||
|           { required: true, message: '首次巡查时间不能为空', trigger: 'blur' } | |||
|         ], | |||
|         detailed: [ | |||
|           { required: true, message: '隐患明细不能为空', trigger: 'blur' } | |||
|         ], | |||
|         firstResult: [ | |||
|           { required: true, message: '首次巡查结果不能为空', trigger: 'blur' } | |||
|         ] | |||
|       } | |||
|     }, | |||
| 
 | |||
|   }, | |||
|   props: { | |||
| 
 | |||
|     gridList: { | |||
|       type: Array, | |||
|       default: [] | |||
|     }, | |||
|     resultList: { | |||
|       type: Array, | |||
|       default: [] | |||
|     }, | |||
|     placeTypeList: { | |||
|       type: Array, | |||
|       default: [] | |||
|     }, | |||
|   } | |||
| } | |||
| </script> | |||
| 
 | |||
| <style lang="scss" scoped > | |||
| @import "@/assets/scss/modules/visual/communityManageForm.scss"; | |||
| </style> | |||
| 
 | |||
| @ -0,0 +1,350 @@ | |||
| <template> | |||
|   <div> | |||
|     <div class="dialog-h-content scroll-h"> | |||
| 
 | |||
|       <el-form ref="ref_form" | |||
|                :inline="true" | |||
|                :model="formData" | |||
|                :rules="dataRule" | |||
|                :disabled="formType === 'detail'" | |||
|                class="form"> | |||
| 
 | |||
|         <el-form-item label="场所类型" | |||
|                       label-width="150px" | |||
|                       prop="ninePlaceVal"> | |||
|           <el-select class="item_width_1" | |||
|                      v-model="formData.ninePlaceVal" | |||
|                      placeholder="请选择" | |||
|                      clearable> | |||
|             <el-option v-for="item in placeTypeList" | |||
|                        :key="item.value" | |||
|                        :label="item.label" | |||
|                        :value="item.value"> | |||
|             </el-option> | |||
|           </el-select> | |||
| 
 | |||
|         </el-form-item> | |||
| 
 | |||
|         <el-form-item label="场所区域" | |||
|                       prop="gridId" | |||
|                       label-width="150px" | |||
|                       style="display: block"> | |||
|           <el-select class="item_width_1" | |||
|                      v-model="formData.gridId" | |||
|                      placeholder="全部" | |||
|                      clearable> | |||
|             <el-option v-for="item in gridList" | |||
|                        :key="item.value" | |||
|                        :label="item.label" | |||
|                        :value="item.value"> | |||
|             </el-option> | |||
|           </el-select> | |||
|         </el-form-item> | |||
| 
 | |||
|         <el-form-item label="场所名称" | |||
|                       label-width="150px" | |||
|                       prop="placeOrgName"> | |||
|           <el-input v-model="formData.placeOrgName" | |||
|                     class="item_width_1" | |||
|                     clearable | |||
|                     placeholder="请输入九小场所名称"> | |||
|           </el-input> | |||
| 
 | |||
|         </el-form-item> | |||
|         <el-form-item label="场所地址" | |||
|                       label-width="150px" | |||
|                       prop="address"> | |||
|           <el-input v-model="formData.address" | |||
|                     class="item_width_1" | |||
|                     clearable | |||
|                     placeholder="请输入场所地址"> | |||
|           </el-input> | |||
| 
 | |||
|         </el-form-item> | |||
| 
 | |||
|         <el-form-item label="规模" | |||
|                       label-width="150px" | |||
|                       prop="scale"> | |||
|           <el-select class="item_width_1" | |||
|                      v-model="formData.scale" | |||
|                      placeholder="请选择" | |||
|                      clearable> | |||
|             <el-option v-for="item in scaleList" | |||
|                        :key="item.value" | |||
|                        :label="item.label" | |||
|                        :value="item.value"> | |||
|             </el-option> | |||
|           </el-select> | |||
| 
 | |||
|         </el-form-item> | |||
|         <el-form-item label="负责人" | |||
|                       label-width="150px" | |||
|                       prop="personInCharge"> | |||
|           <el-input v-model="formData.personInCharge" | |||
|                     class="item_width_1" | |||
|                     clearable | |||
|                     placeholder="请输入负责人姓名"> | |||
|           </el-input> | |||
| 
 | |||
|         </el-form-item> | |||
|         <el-form-item label="联系电话" | |||
|                       label-width="150px" | |||
|                       prop="mobile"> | |||
|           <el-input v-model="formData.mobile" | |||
|                     class="item_width_1" | |||
|                     type='number' | |||
|                     clearable | |||
|                     placeholder="请输入电话"> | |||
|           </el-input> | |||
| 
 | |||
|         </el-form-item> | |||
|       </el-form> | |||
| 
 | |||
|     </div> | |||
|     <div class="div_btn"> | |||
|       <el-button size="small" | |||
|                  @click="handleCancle">取 消</el-button> | |||
|       <el-button size="small" | |||
|                  v-if="formType != 'detail'" | |||
|                  type="primary" | |||
|                  :disabled="btnDisable" | |||
|                  @click="handleComfirm">确 定</el-button> | |||
|     </div> | |||
|   </div> | |||
| </template> | |||
| 
 | |||
| <script> | |||
| import { mapGetters } from 'vuex' | |||
| import { Loading } from 'element-ui' // 引入Loading服务 | |||
| import { requestPost } from '@/js/dai/request' | |||
| 
 | |||
| let loading // 加载动画 | |||
| export default { | |||
|   data () { | |||
|     return { | |||
|       formType: 'add', //表单操作类型 add新增,edit编辑,detail详情 | |||
| 
 | |||
|       btnDisable: false, | |||
| 
 | |||
|       placeOrgId: '', | |||
|       formData: { | |||
|         gridId: '', | |||
|         ninePlaceVal: '', | |||
|         placeOrgName: '', | |||
|         address: '', | |||
|         scale: '', | |||
|         personInCharge: '', | |||
|         mobile: '' | |||
|       }, | |||
| 
 | |||
|     } | |||
|   }, | |||
|   components: {}, | |||
|   mounted () { | |||
| 
 | |||
|   }, | |||
| 
 | |||
|   methods: { | |||
| 
 | |||
|     async initForm (type, placeOrgId) { | |||
|       this.$refs.ref_form.resetFields(); | |||
|       this.loadGrid() | |||
| 
 | |||
|       this.formType = type | |||
|       if (placeOrgId) { | |||
|         this.placeOrgId = placeOrgId | |||
|         this.formData.placeOrgId = placeOrgId | |||
|         await this.loadFormData() | |||
|       } | |||
| 
 | |||
|     }, | |||
| 
 | |||
|       async loadGrid () { | |||
|       const url = "/gov/org/customergrid/gridoption" | |||
| 
 | |||
|       let params = { | |||
|         agencyId: this.agencyId, | |||
|         purpose:"addorupdate" | |||
|       } | |||
| 
 | |||
|       const { data, code, msg } = await requestPost(url, params) | |||
| 
 | |||
|       if (code === 0) { | |||
|         this.gridList = data | |||
| 
 | |||
|       } else { | |||
|         this.$message.error(msg) | |||
|       } | |||
| 
 | |||
|     }, | |||
| 
 | |||
|     //加载组织 | |||
|     async loadFormData () { | |||
|       const url = '/gov/org/placeorg/detail' | |||
|       // const url = 'http://yapi.elinkservice.cn/mock/245/gov/org/placeorg/detail' | |||
|       let params = { | |||
|         placeOrgId: this.placeOrgId | |||
|       } | |||
| 
 | |||
|       const { data, code, msg } = await requestPost(url, params) | |||
| 
 | |||
|       if (code === 0) { | |||
|         this.formData = data | |||
| 
 | |||
|       } else { | |||
|         this.$message.error(msg) | |||
|       } | |||
|     }, | |||
| 
 | |||
| 
 | |||
| 
 | |||
|     async handleComfirm () { | |||
| 
 | |||
|       this.btnDisable = true | |||
|       setTimeout(() => { | |||
|         this.btnDisable = false | |||
|       }, 10000) | |||
|       this.$refs['ref_form'].validate((valid, messageObj) => { | |||
|         if (!valid) { | |||
|           app.util.validateRule(messageObj) | |||
|           this.btnDisable = false | |||
|         } else { | |||
|           this.addPlace() | |||
|         } | |||
| 
 | |||
|       }) | |||
| 
 | |||
| 
 | |||
|     }, | |||
|     async addPlace () { | |||
|       // const regPhone = /^1(3|4|5|6|7|8|9)\d{9}$/; //手机号码 | |||
|       // if (regPhone.test(this.formData.mobile) === false) { | |||
|       //   this.btnDisable = false | |||
|       //   this.$message({ | |||
|       //     type: 'warning', | |||
|       //     message: '请输入正确的手机号码' | |||
|       //   }) | |||
|       //   return false; | |||
|       // } | |||
| 
 | |||
|       let url = '' | |||
| 
 | |||
|       if (this.formType === 'edit') { | |||
|         url = '/gov/org/placeorg/edit' | |||
|         // url = 'http://yapi.elinkservice.cn/mock/245/gov/org/placeorg/edit' | |||
| 
 | |||
|       } else { | |||
|         url = "/gov/org/placeorg/add" | |||
|         // url = "http://yapi.elinkservice.cn/mock/245/gov/org/placeorg/add" | |||
|       } | |||
| 
 | |||
|       const { data, code, msg } = await requestPost(url, this.formData) | |||
| 
 | |||
|       if (code === 0) { | |||
|         this.$message({ | |||
|           type: 'success', | |||
|           message: '操作成功' | |||
|         }) | |||
|         this.resetData() | |||
|         this.$emit('dialogOk') | |||
|         this.btnDisable = false | |||
|       } else { | |||
|         this.btnDisable = false | |||
|         this.$message.error(msg) | |||
|       } | |||
| 
 | |||
|     }, | |||
| 
 | |||
|     handleCancle () { | |||
| 
 | |||
|       this.resetData() | |||
|       this.$emit('dialogCancle') | |||
| 
 | |||
|     }, | |||
| 
 | |||
|     resetData () { | |||
|       this.placeOrgId = '' | |||
|       this.formData = { | |||
|         gridId: '', | |||
|         ninePlaceVal: '', | |||
|         placeOrgName: '', | |||
|         address: '', | |||
|         scale: '', | |||
|         personInCharge: '', | |||
|         mobile: '' | |||
|       } | |||
|     }, | |||
|     // 开启加载动画 | |||
|     startLoading () { | |||
|       loading = Loading.service({ | |||
|         lock: true, // 是否锁定 | |||
|         text: '正在加载……', // 加载中需要显示的文字 | |||
|         background: 'rgba(0,0,0,.7)' // 背景颜色 | |||
|       }) | |||
|     }, | |||
|     // 结束加载动画 | |||
|     endLoading () { | |||
|       // clearTimeout(timer); | |||
|       if (loading) { | |||
|         loading.close() | |||
|       } | |||
|     } | |||
|   }, | |||
|   computed: { | |||
|     dataRule () { | |||
|       return { | |||
|         gridId: [ | |||
|           { required: true, message: '所属网格不能为空', trigger: 'blur' } | |||
|         ], | |||
|         ninePlaceVal: [ | |||
|           { required: true, message: '场所类型不能为空', trigger: 'blur' }, | |||
|         ], | |||
|         placeOrgName: [ | |||
|           { required: true, message: '场所名称不能为空', trigger: 'blur' } | |||
|         ], | |||
| 
 | |||
|         address: [ | |||
|           { required: true, message: '场所地址不能为空', trigger: 'blur' } | |||
|         ], | |||
|         scale: [ | |||
|           { required: true, message: '场所规模不能为空', trigger: 'blur' } | |||
|         ], | |||
|         personInCharge: [ | |||
|           { required: true, message: '负责人不能为空', trigger: 'blur' } | |||
|         ], | |||
|         mobile: [ | |||
|           { required: true, message: '联系电话不能为空', trigger: 'blur' } | |||
|         ] | |||
|       } | |||
|     }, | |||
| 
 | |||
|   }, | |||
|   props: { | |||
| 
 | |||
|     scaleList: { | |||
|       type: Array, | |||
|       default: [] | |||
|     }, | |||
|     placeTypeList: { | |||
|       type: Array, | |||
|       default: [] | |||
|     }, | |||
|     agencyId: { | |||
|       type: String, | |||
|       default: "" | |||
|     }, | |||
|   } | |||
| } | |||
| </script> | |||
| <style scoped> | |||
| .div_searchmap { | |||
|   z-index: 5000; | |||
|   position: absolute; | |||
|   top: 5px; | |||
|   left: 5px; | |||
| } | |||
| </style> | |||
| 
 | |||
| <style lang="scss" scoped > | |||
| @import "@/assets/scss/modules/visual/communityManageForm.scss"; | |||
| </style> | |||
| @ -0,0 +1,480 @@ | |||
| <template> | |||
|   <div> | |||
|     <div class="dialog-h-content scroll-h"> | |||
| 
 | |||
|       <el-form ref="ref_form" | |||
|                :inline="true" | |||
|                :model="formData" | |||
|                :rules="dataRule" | |||
|                :disabled="formType === 'detail'" | |||
|                class="form"> | |||
| 
 | |||
|         <el-form-item label="分队名称" | |||
|                       label-width="150px" | |||
|                       prop="teamName"> | |||
|           <el-input v-model="formData.teamName" | |||
|                     class="item_width_1" | |||
|                     clearable | |||
|                     placeholder="请输入分队名称"> | |||
|           </el-input> | |||
|         </el-form-item> | |||
| 
 | |||
|         <el-form-item label="负责区域" | |||
|                       prop="gridIdArray" | |||
|                       label-width="150px" | |||
|                       style="display: block"> | |||
|           <el-select class="item_width_1" | |||
|                      v-model="formData.gridIdArray" | |||
|                      placeholder="全部" | |||
|                      multiple | |||
|                      clearable> | |||
|             <el-option v-for="item in gridList" | |||
|                        :key="item.value" | |||
|                        :label="item.label" | |||
|                        :value="item.value"> | |||
|             </el-option> | |||
|           </el-select> | |||
|         </el-form-item> | |||
| 
 | |||
|         <el-form-item label="负责场所类型" | |||
|                       prop="ninePlaceArray" | |||
|                       label-width="150px" | |||
|                       style="display: block"> | |||
|           <el-checkbox-group class="item_width_1" | |||
|                              style="display:flex;flex-wrap:wrap" | |||
|                              v-model="formData.ninePlaceArray"> | |||
|             <el-checkbox v-for="item in placeTypeList" | |||
|                          :key="item.value" | |||
|                          :label="item.value">{{item.label}}</el-checkbox> | |||
| 
 | |||
|           </el-checkbox-group> | |||
| 
 | |||
|         </el-form-item> | |||
| 
 | |||
|         <el-form-item label="巡查计划" | |||
|                       prop="plan" | |||
|                       label-width="150px" | |||
|                       style="display: block"> | |||
|           <el-input class="item_width_1" | |||
|                     type="textarea" | |||
|                     maxlength="500" | |||
|                     show-word-limit | |||
|                     :rows="3" | |||
|                     placeholder="请输入备注,不超过500字" | |||
|                     v-model="formData.plan"></el-input> | |||
|         </el-form-item> | |||
| 
 | |||
|         <el-form-item label="创建时间" | |||
|                       style="display: block" | |||
|                       prop="time" | |||
|                       label-width="150px"> | |||
|           <el-date-picker v-model="formData.time" | |||
|                           value-format="yyyy-MM-dd HH:mm:ss" | |||
|                           type="date" | |||
|                           placeholder="选择日期"> | |||
|           </el-date-picker> | |||
|         </el-form-item> | |||
| 
 | |||
|         <el-form-item label="负责人" | |||
|                       label-width="150px" | |||
|                       prop="personInCharge"> | |||
|           <el-input v-model="formData.personInCharge" | |||
|                     class="item_width_1" | |||
|                     clearable | |||
|                     placeholder="请输入负责人姓名"> | |||
|           </el-input> | |||
| 
 | |||
|         </el-form-item> | |||
|         <el-form-item label="联系电话" | |||
|                       label-width="150px" | |||
|                       prop="mobile"> | |||
|           <el-input v-model="formData.mobile" | |||
|                     class="item_width_1" | |||
|                     type='number' | |||
|                     clearable | |||
|                     placeholder="请输入电话"> | |||
|           </el-input> | |||
| 
 | |||
|         </el-form-item> | |||
| 
 | |||
|         <el-form-item label="成员" | |||
|                       label-width="150px" | |||
|                       prop="member"> | |||
|           <el-button v-if="formType != 'detail'" | |||
|                      type="primary" | |||
|                      size="mini" | |||
|                      icon="el-icon-plus" | |||
|                      @click="handleAddPerson"></el-button> | |||
|           <div v-for="(item,index) in memberList" | |||
|                :key="index" | |||
|                class="div_person_list" | |||
|                :class="[{'margin10':formType !== 'detail'}]"> | |||
|             <span class="div_person_list_title">姓名</span> | |||
|             <el-input v-if="item.isSet" | |||
|                       v-model="item.name" | |||
|                       class="item_width_3" | |||
|                       clearable | |||
|                       placeholder="请输入姓名"> | |||
|             </el-input> | |||
|             <span class="item_width_span_3" | |||
|                   v-else>{{item.name}}</span> | |||
| 
 | |||
|             <span class="div_person_list_title2">联系电话</span> | |||
|             <el-input v-if="item.isSet" | |||
|                       v-model="item.mobile" | |||
|                       class="item_width_4" | |||
|                       clearable | |||
|                       placeholder="请输入电话"> | |||
|             </el-input> | |||
|             <span class="item_width_span_4" | |||
|                   v-else>{{item.mobile}}</span> | |||
| 
 | |||
|             <el-button v-if="formType !== 'detail'" | |||
|                        style="margin-left:30px" | |||
|                        type="red" | |||
|                        size="mini" | |||
|                        @click="handleDelPerson(index)">删除</el-button> | |||
|           </div> | |||
| 
 | |||
|         </el-form-item> | |||
|       </el-form> | |||
| 
 | |||
|     </div> | |||
|     <div class="div_btn"> | |||
|       <el-button size="small" | |||
|                  @click="handleCancle">取 消</el-button> | |||
|       <el-button size="small" | |||
|                  v-if="formType != 'detail'" | |||
|                  type="primary" | |||
|                  :disabled="btnDisable" | |||
|                  @click="handleComfirm">确 定</el-button> | |||
|     </div> | |||
|   </div> | |||
| </template> | |||
| 
 | |||
| <script> | |||
| import { mapGetters } from 'vuex' | |||
| import { Loading } from 'element-ui' // 引入Loading服务 | |||
| import { requestPost } from '@/js/dai/request' | |||
| 
 | |||
| 
 | |||
| let loading // 加载动画 | |||
| export default { | |||
|   data () { | |||
|     return { | |||
|       formType: 'add', //表单操作类型 add新增,edit编辑,detail详情 | |||
| 
 | |||
|       btnDisable: false, | |||
| 
 | |||
|       teamId: '', | |||
|       formData: { | |||
|         agencyId: '',//组织Id | |||
|         teamName: '',//分队名称	 | |||
|         gridIds: '',//负责区域,多个值逗号分隔	 | |||
|         ninePlaceArray: [], | |||
|         ninePlaceVals: '',//负责场所类型,多个值逗号分隔	 | |||
|         gridIdArray: [], | |||
|         plan: '',//巡查计划	 | |||
|         time: '',//时间 | |||
|         personInCharge: '',//负责人	 | |||
|         mobile: '',//联系电话	 | |||
|         memberList: [],//成员信息集合	 | |||
|         member: '1'//成员信息集合	 | |||
|       }, | |||
| 
 | |||
|       memberList: [], | |||
| 
 | |||
|     } | |||
|   }, | |||
|   components: {}, | |||
|   mounted () { | |||
| 
 | |||
|   }, | |||
| 
 | |||
|   methods: { | |||
| 
 | |||
|     async initForm (type, teamId, agencyId) { | |||
|       this.$refs.ref_form.resetFields(); | |||
|       this.formData.agencyId = agencyId | |||
|       this.formType = type | |||
|       if (teamId) { | |||
|         this.teamId = teamId | |||
|         this.formData.teamId = teamId | |||
|         await this.loadFormData() | |||
|       } | |||
| 
 | |||
|     }, | |||
| 
 | |||
|     //加载组织 | |||
|     async loadFormData () { | |||
|       const url = '/gov/org/placepatrolteam/detail' | |||
|       // const url = 'http://yapi.elinkservice.cn/mock/245/gov/org/placepatrolteam/detail' | |||
|       let params = { | |||
|         teamId: this.teamId | |||
|       } | |||
| 
 | |||
|       const { data, code, msg } = await requestPost(url, params) | |||
| 
 | |||
|       if (code === 0) { | |||
| 
 | |||
|         data.ninePlaceArray = data.ninePlaceVals.split(',') | |||
|         data.gridIdArray = data.gridIds.split(',') | |||
|         data.member = '1' | |||
|         this.formData = { ...data } | |||
| 
 | |||
|         this.memberList = this.formData.memberList | |||
| 
 | |||
|         this.memberList.forEach(item => { | |||
|           item.isSet = false | |||
|         }); | |||
| 
 | |||
|       } else { | |||
|         this.$message.error(msg) | |||
|       } | |||
|     }, | |||
| 
 | |||
|     async handleComfirm () { | |||
| 
 | |||
|       this.btnDisable = true | |||
|       setTimeout(() => { | |||
|         this.btnDisable = false | |||
|       }, 10000) | |||
|       this.$refs['ref_form'].validate((valid, messageObj) => { | |||
|         if (!valid) { | |||
|           app.util.validateRule(messageObj) | |||
|           this.btnDisable = false | |||
|         } else { | |||
|           this.addTeam() | |||
|         } | |||
| 
 | |||
|       }) | |||
| 
 | |||
| 
 | |||
|     }, | |||
|     handleAddPerson () { | |||
|       let obj = { | |||
|         name: '', | |||
|         mobile: '', | |||
|         isSet: true | |||
|       } | |||
| 
 | |||
|       this.memberList.push(obj) | |||
|     }, | |||
|     handleDelPerson (index) { | |||
|       this.memberList.splice(index, 1) | |||
|     }, | |||
|     async addTeam () { | |||
|       const regPhone = /^1(3|4|5|6|7|8|9)\d{9}$/; //手机号码 | |||
|       if (regPhone.test(this.formData.mobile) === false) { | |||
|         this.btnDisable = false | |||
|         this.$message({ | |||
|           type: 'warning', | |||
|           message: '请输入正确的手机号码' | |||
|         }) | |||
|         return false; | |||
|       } | |||
|       if (this.formData.gridIdArray.length > 0) { | |||
|         this.formData.gridIds = this.formData.gridIdArray.join(',') | |||
|       } else { | |||
|         return false | |||
|       } | |||
|       if (this.formData.ninePlaceArray.length > 0) { | |||
|         this.formData.ninePlaceVals = this.formData.ninePlaceArray.join(',') | |||
|       } else { | |||
|         return false | |||
|       } | |||
| 
 | |||
|       let msgMember = this.validataMemeberList() | |||
|       if (msgMember) { | |||
|         this.$message({ | |||
|           type: 'warning', | |||
|           message: msgMember | |||
|         }) | |||
|         this.btnDisable = false | |||
|         return false | |||
|       } | |||
| 
 | |||
|       this.formData.memberList = this.memberList | |||
| 
 | |||
|       let url = '' | |||
| 
 | |||
|       if (this.formType === 'edit') { | |||
|         url = '/gov/org/placepatrolteam/edit' | |||
|         // url = 'http://yapi.elinkservice.cn/mock/245/gov/org/placeorg/edit' | |||
| 
 | |||
|       } else { | |||
|         url = "/gov/org/placepatrolteam/add" | |||
|         // url = "http://yapi.elinkservice.cn/mock/245/gov/org/placepatrolteam/add" | |||
|       } | |||
| 
 | |||
|       const { data, code, msg } = await requestPost(url, this.formData) | |||
| 
 | |||
|       if (code === 0) { | |||
|         this.$message({ | |||
|           type: 'success', | |||
|           message: '操作成功' | |||
|         }) | |||
|         this.resetData() | |||
|         this.$emit('dialogOk') | |||
|         this.btnDisable = false | |||
|       } else { | |||
|         this.btnDisable = false | |||
|         this.$message.error(msg) | |||
|       } | |||
| 
 | |||
|     }, | |||
| 
 | |||
|     validataMemeberList () { | |||
|       if (this.memberList.length === 0) { | |||
|         return '成员列表不能为空' | |||
|       } | |||
| 
 | |||
|       for (let item of this.memberList) { | |||
|         if (!item.mobile || !item.name) { | |||
|           return '成员的姓名和电话不能为空' | |||
|         } else { | |||
|           const regPhone = /^1(3|4|5|6|7|8|9)\d{9}$/; //手机号码 | |||
|           if (regPhone.test(item.mobile) === false) { | |||
|             return '请输入正确的手机号码'; | |||
|           } | |||
|         } | |||
|       } | |||
| 
 | |||
|       return '' | |||
|     }, | |||
| 
 | |||
|     handleCancle () { | |||
| 
 | |||
|       this.resetData() | |||
|       this.$emit('dialogCancle') | |||
| 
 | |||
|     }, | |||
| 
 | |||
|     resetData () { | |||
|       this.teamId = '' | |||
|       this.formData = { | |||
|         agencyId: '',//组织Id | |||
|         teamName: '',//分队名称	 | |||
|         gridIds: '',//负责区域,多个值逗号分隔	 | |||
|         gridIdArray: [], | |||
|         ninePlaceVals: '',//负责场所类型,多个值逗号分隔	 | |||
|         ninePlaceArray: [], | |||
|         plan: '',//巡查计划	 | |||
|         time: '',//时间 | |||
|         personInCharge: '',//负责人	 | |||
|         mobile: '',//联系电话	 | |||
|         member: '1'//成员信息集合	 | |||
|       } | |||
|       this.memberList = [] | |||
|     }, | |||
|     // 开启加载动画 | |||
|     startLoading () { | |||
|       loading = Loading.service({ | |||
|         lock: true, // 是否锁定 | |||
|         text: '正在加载……', // 加载中需要显示的文字 | |||
|         background: 'rgba(0,0,0,.7)' // 背景颜色 | |||
|       }) | |||
|     }, | |||
|     // 结束加载动画 | |||
|     endLoading () { | |||
|       // clearTimeout(timer); | |||
|       if (loading) { | |||
|         loading.close() | |||
|       } | |||
|     } | |||
|   }, | |||
|   computed: { | |||
|     dataRule () { | |||
|       return { | |||
|         teamName: [ | |||
|           { required: true, message: '分队名称不能为空', trigger: 'blur' } | |||
|         ], | |||
|         gridIdArray: [ | |||
|           { required: true, message: '负责区域不能为空', trigger: 'blur' }, | |||
|         ], | |||
|         ninePlaceArray: [ | |||
|           { required: true, message: '场所类型不能为空', trigger: 'blur' } | |||
|         ], | |||
| 
 | |||
|         plan: [ | |||
|           { required: true, message: '巡查计划	不能为空', trigger: 'blur' } | |||
|         ], | |||
|         personInCharge: [ | |||
|           { required: true, message: '负责人不能为空', trigger: 'blur' } | |||
|         ], | |||
|         mobile: [ | |||
|           { required: true, message: '联系电话不能为空', trigger: 'blur' } | |||
|         ], | |||
|         member: [ | |||
|           { required: true, message: '成员不能为空', trigger: 'blur' } | |||
|         ] | |||
|       } | |||
|     }, | |||
| 
 | |||
|   }, | |||
|   props: { | |||
|     gridList: { | |||
|       type: Array, | |||
|       default: [] | |||
|     }, | |||
| 
 | |||
|     placeTypeList: { | |||
|       type: Array, | |||
|       default: [] | |||
|     }, | |||
|   } | |||
| } | |||
| </script> | |||
| 
 | |||
| <style lang="scss" scoped > | |||
| @import "@/assets/scss/modules/visual/communityManageForm.scss"; | |||
| </style> | |||
| 
 | |||
| <style lang="scss"  scoped> | |||
| @import "@/assets/scss/buttonstyle.scss"; | |||
| .item_width_1 { | |||
|   width: 500px; | |||
| } | |||
| .item_width_2 { | |||
|   width: 400px; | |||
| } | |||
| .item_width_3 { | |||
|   margin-left: 10px; | |||
|   width: 120px; | |||
| } | |||
| .item_width_4 { | |||
|   margin-left: 10px; | |||
|   width: 150px; | |||
| } | |||
| .item_width_span_3 { | |||
|   margin-left: 10px; | |||
|   width: 160px; | |||
| } | |||
| .item_width_span_4 { | |||
|   margin-left: 10px; | |||
|   width: 150px; | |||
| } | |||
| .margin10 { | |||
|   margin-top: 10px; | |||
| } | |||
| 
 | |||
| .div_person_list { | |||
|   width: 500px; | |||
|   display: flex; | |||
| 
 | |||
|   .div_person_list_title { | |||
|     width: 40px; | |||
|     font-weight: bold; | |||
|   } | |||
| 
 | |||
|   .div_person_list_title2 { | |||
|     width: 90px; | |||
|     font-weight: bold; | |||
|     margin-left: 20px; | |||
|   } | |||
| } | |||
| </style> | |||
| 
 | |||
| <style lang="scss" scoped > | |||
| @import "@/assets/scss/modules/visual/communityManageForm.scss"; | |||
| </style> | |||
					Loading…
					
					
				
		Reference in new issue