9 files modified
1 files added
| | |
| | | }) |
| | | } |
| | | |
| | | //获取消防检查项 |
| | | export const getPlaceCheckItem = (params) => { |
| | | return http.request({ |
| | | url: '/patrol/patrolGroup/getPatrolGroupTree', |
| | | method: 'GET', |
| | | params |
| | | }) |
| | | } |
| | | |
| | | //获取场所整改详情 |
| | | export const getPlaceCheckReformDetail = (params) => { |
| | | return http.request({ |
| | | url: '/blade-taskPlaceRectification/taskPlaceRectification/detailByTaskId', |
| | | method: 'GET', |
| | | params |
| | | }) |
| | | } |
| | |
| | | }) |
| | | } |
| | | |
| | | export const bizDictionaryTree = (params) => { |
| | | return http.request({ |
| | | url: '/blade-system/dict-biz/tree', |
| | | method: 'GET', |
| | | params |
| | | }) |
| | | } |
| | | |
| | | export const parentList = (params) => { |
| | | return http.request({ |
| | |
| | | <text class="f-28">选择标签</text> |
| | | <u-icon name="arrow-right"></u-icon> |
| | | </view> |
| | | <view class="mt-20 p-20 bgc-ff" v-if="selectedItem.length"> |
| | | <view class="mt-20 p-20 bgc-ff" v-if="selectedCate"> |
| | | <view class="f-28">已选标签</view> |
| | | <view class="p-20 flex flex-wrap"> |
| | | <view v-for="(item,index) in selectedItem" :key="index" class="mr-20"> |
| | | <u-tag :closable="true" size="mini" @close="delTag(index)" |
| | | :text="item.categoryName"></u-tag> |
| | | <view class="mr-20"> |
| | | <u-tag size="mini" :text="selectedCate"></u-tag> |
| | | </view> |
| | | </view> |
| | | </view> |
| | |
| | | |
| | | |
| | | |
| | | <u-popup :show="isShow" @close="closePopup" :safeAreaInsetTop="true" mode="bottom" :closeable="true" |
| | | round="12"> |
| | | <view class="popup-title fw f-30">标签选择</view> |
| | | <u-popup :show="isShow" @close="closePopup" :safeAreaInsetTop="true" mode="bottom" :closeable="true" round="12"> |
| | | <view class="popup-title fw f-30">九小场所类型</view> |
| | | |
| | | <view class="popup-list flex a-i-c"> |
| | | <scroll-view scroll-y="true" class="scroll"> |
| | | <view class="popup-box"> |
| | | <view :class="['box-item','f-28',index == fIndex?'c-main fw':'']" |
| | | <view :class="['box-item','f-28',item.id == selectedFId?'c-main fw':'']" |
| | | v-for="(item,index) in categoryList" :key="index" @click="handleSelect(item,index)"> |
| | | {{item.categoryName}} |
| | | {{item.title}} |
| | | </view> |
| | | </view> |
| | | </scroll-view> |
| | | <u-line direction="col" length="300rpx" v-if="childList.length"></u-line> |
| | | <scroll-view scroll-y="true" class="scroll" v-if="childList.length"> |
| | | <view class="popup-box"> |
| | | <view :class="['box-item','f-28',item.isSelect?'c-main fw':'']" |
| | | <!-- <view :class="['box-item','f-28',item.isSelect?'c-main fw':'']" |
| | | v-for="(item,index) in childList" :key="index" @click="handleSelectChild(item,index)"> |
| | | {{item.categoryName}} |
| | | {{item.title}} |
| | | </view> --> |
| | | |
| | | <view :class="['box-item','f-28',item.id == selectedCId?'c-main fw':'']" |
| | | v-for="(item,index) in childList" :key="index" @click="handleSelectChild(item,index)"> |
| | | {{item.title}} |
| | | </view> |
| | | |
| | | </view> |
| | | </scroll-view> |
| | | </view> |
| | | <!-- <view class="popup-footer flex j-c-s-b a-i-c"> |
| | | <view class="popup-btn c-main" @click="closePopup"> |
| | | <view class="popup-footer flex j-c-s-b a-i-c"> |
| | | <view class="popup-btn c-main" @click="closePopup"> |
| | | 取消 |
| | | </view> |
| | | <view class="popup-btn bgc-main c-ff"> |
| | | 确定 |
| | | </view> |
| | | </view> --> |
| | | </view> |
| | | </u-popup> |
| | | |
| | | </view> |
| | |
| | | import { |
| | | getLabelCate |
| | | } from "@/api/label/categoryLabel.js"; |
| | | import { |
| | | bizDictionary, |
| | | bizDictionaryTree |
| | | } from '@/api/system/dict.js' |
| | | export default { |
| | | data() { |
| | | return { |
| | |
| | | fIndex: null, |
| | | cId: null, |
| | | showLabelList: [], |
| | | selectedItem: [] |
| | | selectedItem: [], |
| | | selectedCate: "", |
| | | selectedFId: "", |
| | | selectedCId: "", |
| | | selectedId: "" |
| | | } |
| | | }, |
| | | |
| | | onLoad() { |
| | | this.getCategory(1); |
| | | // this.getCategory(1); |
| | | this.getNineTypeList() |
| | | }, |
| | | |
| | | methods: { |
| | | |
| | | getNineTypeList() { |
| | | bizDictionaryTree({ |
| | | code: "nineType" |
| | | }).then(res => { |
| | | console.log(res.data); |
| | | this.categoryList = res.data; |
| | | }) |
| | | }, |
| | | |
| | | |
| | | getCategory(level, id) { |
| | | let params = { |
| | | level |
| | |
| | | handleSelect(item, index) { |
| | | if (index == this.fIndex) return; |
| | | this.fIndex = index; |
| | | this.selectedItem = [item]; |
| | | this.getCategory(2, item.categoryNo); |
| | | console.table( "选择父级=>",this.selectedItem) |
| | | this.selectedCate = item.title; |
| | | this.selectedFId = item.id; |
| | | if (item.hasChildren) { |
| | | this.childList = item.children; |
| | | |
| | | } else { |
| | | this.childList = []; |
| | | } |
| | | // this.getCategory(2, item.categoryNo); |
| | | console.table("选择父级=>", this.selectedItem) |
| | | }, |
| | | handleSelectChild(item, index) { |
| | | this.childList[index].isSelect = !this.childList[index].isSelect; |
| | | this.getSelected() |
| | | // this.childList[index].isSelect = !this.childList[index].isSelect; |
| | | this.selectedCate = item.title; |
| | | this.selectedCId = item.id; |
| | | // this.getSelected() |
| | | |
| | | }, |
| | | |
| | |
| | | } |
| | | } |
| | | this.selectedItem = arr; |
| | | console.table("选择子级=>",this.selectedItem); |
| | | console.table("选择子级=>", this.selectedItem); |
| | | }, |
| | | |
| | | showSelected() { |
| | |
| | | } |
| | | } |
| | | }, |
| | | |
| | | |
| | | closePopup(){ |
| | | |
| | | |
| | | closePopup() { |
| | | this.isShow = false; |
| | | }, |
| | | |
| | | delTag(index){ |
| | | this.selectedItem.splice(index,1); |
| | | |
| | | delTag(index) { |
| | | this.selectedItem.splice(index, 1); |
| | | } |
| | | |
| | | |
| | |
| | | // .scroll:last-child { |
| | | // flex:2; |
| | | // } |
| | | .p-20{ |
| | | padding:20rpx; |
| | | .p-20 { |
| | | padding: 20rpx; |
| | | } |
| | | |
| | | |
| | | |
| | | .popup-list { |
| | | width: 100%; |
| | | height: 700rpx; |
| | | padding:10rpx 0; |
| | | padding: 10rpx 0; |
| | | box-sizing: border-box; |
| | | |
| | | .bgc-f4 { |
| | | background-color: #f4f4f4; |
| | | } |
| | |
| | | border: 1px solid currentColor; |
| | | } |
| | | } |
| | | |
| | | |
| | | </style> |
| | |
| | | },
|
| | | {
|
| | | title: '阵地',
|
| | | name: 'isFrontType',
|
| | | name: 'isFront',
|
| | | value: '未完善'
|
| | | },
|
| | | {
|
| | |
| | | {
|
| | | title: '手机号',
|
| | | name: 'phone',
|
| | | value: '未完善'
|
| | | },
|
| | | {
|
| | | title: '身份证号',
|
| | | name: 'principalIdCard',
|
| | | value: '未完善'
|
| | | },
|
| | | {
|
| | |
| | | console.log("oload=>", option)
|
| | | this.stdId = option.stdId
|
| | |
|
| | | if (uni.getStorageSync("activeRole").roleName == "民警") {
|
| | | if (uni.getStorageSync("activeRole").roleName == "民警" || uni.getStorageSync("activeRole").roleName ==
|
| | | "系统管理员") {
|
| | | this.isPolice = true;
|
| | | }
|
| | | if (option.addressType) {
|
| | |
| | |
|
| | | navToInspect() {
|
| | | uni.navigateTo({
|
| | | url: `siteInspect?code=${this.stdId}`
|
| | | url: `/subPackage/house/houseNumber/siteInspect?code=${this.stdId}`
|
| | | })
|
| | | }
|
| | |
|
| | |
| | | <template> |
| | | <view class="wrap"> |
| | | <u-collapse :value="itemIndex" ref="collapse"> |
| | | <u-collapse-item :title="item.title" :name="index" v-for="(item,index) in questionList"> |
| | | <u-form :model="info" ref="form"> |
| | | <block v-for="(i,k) in item.children"> |
| | | <view class="f-30 c-33"> |
| | | {{i.title}} |
| | | </view> |
| | | <u-form-item labelWidth="90" label="隐患" prop="gateStatus"> |
| | | <view class="btn-group flex"> |
| | | <view class="value-item" :class="i.state == 0?'active bgc-main c-ff':''" |
| | | @click="changeStatus(0,i,index,k)"> |
| | | 存在 |
| | | </view> |
| | | <view class="value-item" :class="i.state == 1?'active bgc-main c-ff':''" |
| | | @click="changeStatus(1,i,index,k)"> |
| | | 不存在 |
| | | </view> |
| | | <view class="section mb-20"> |
| | | <u-collapse :value="itemIndex" ref="collapse"> |
| | | <u-collapse-item :title="item.title" :name="index" v-for="(item,index) in questionList"> |
| | | <u-form :model="info" ref="form"> |
| | | <block v-for="(i,k) in item.children"> |
| | | <view class="f-30 c-33"> |
| | | {{i.title}} |
| | | </view> |
| | | </u-form-item> |
| | | <view class="" v-if="i.state == 0"> |
| | | <u-form-item labelWidth="100" label="隐患照片" prop="gateStatus"> |
| | | <u-upload :fileList="i.urls" :previewFullImage="uploadConfig.previewFullImage" |
| | | :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple" |
| | | :maxCount="uploadConfig.maxCount" :capture="uploadConfig.capture" |
| | | @afterRead="afterReadImgs($event,i,index,k)" @delete="deleteImages($event,index,k)"> |
| | | <view class="upload-item upload-icon flex_base"> |
| | | <u-icon name="/static/icon/upload.png" width="60rpx" height="60rpx"></u-icon> |
| | | <u-form-item labelWidth="90" label="隐患" prop="gateStatus"> |
| | | <view class="btn-group flex"> |
| | | <view class="value-item" :class="i.state == 0?'active bgc-main c-ff':''" |
| | | @click="changeStatus(0,i,index,k)"> |
| | | 存在 |
| | | </view> |
| | | </u-upload> |
| | | <view class="value-item" :class="i.state == 1?'active bgc-main c-ff':''" |
| | | @click="changeStatus(1,i,index,k)"> |
| | | 不存在 |
| | | </view> |
| | | </view> |
| | | </u-form-item> |
| | | <u-form-item labelWidth="100" label="隐患描述" prop="gateStatus"> |
| | | <u-textarea v-model="i.remark" placeholder="请输入隐患描述" |
| | | placeholderClass="c-99 f-26"></u-textarea> |
| | | </u-form-item> |
| | | </view> |
| | | </block> |
| | | </u-form> |
| | | </u-collapse-item> |
| | | </u-collapse> |
| | | <view class="" v-if="i.state == 0"> |
| | | <u-form-item labelWidth="100" label="隐患照片" prop="gateStatus"> |
| | | <u-upload :fileList="i.urls" :previewFullImage="uploadConfig.previewFullImage" |
| | | :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple" |
| | | :maxCount="uploadConfig.maxCount" :capture="uploadConfig.capture" |
| | | @afterRead="afterReadImgs($event,i,index,k)" |
| | | @delete="deleteImages($event,index,k)"> |
| | | <view class="upload-item upload-icon flex_base"> |
| | | <u-icon name="/static/icon/upload.png" width="60rpx" |
| | | height="60rpx"></u-icon> |
| | | </view> |
| | | </u-upload> |
| | | </u-form-item> |
| | | <u-form-item labelWidth="100" label="隐患描述" prop="gateStatus"> |
| | | <u-textarea v-model="i.remark" placeholder="请输入隐患描述" |
| | | placeholderClass="c-99 f-26"></u-textarea> |
| | | </u-form-item> |
| | | </view> |
| | | </block> |
| | | </u-form> |
| | | </u-collapse-item> |
| | | </u-collapse> |
| | | </view> |
| | | |
| | | <view class="content"> |
| | | <view class="content bgc-ff"> |
| | | <view class="upload "> |
| | | <view class="f-28 mb-20">其它隐患问题</view> |
| | | <u-textarea v-model="info.remark" placeholder="请输入内容" placeholderClass="c-99 f-26"></u-textarea> |
| | |
| | | <view v-if="signatureUrl"> |
| | | <u-image :src="signatureUrl" width="70" height="70" @click="previewImg()"></u-image> |
| | | </view> |
| | | |
| | | <!-- <view class="flex j-c-s-b a-i-c mt-20 mb-20"> |
| | | <view class="f-28">下发责令整改通知</view> |
| | | <view class="flex j-c-f-e"> |
| | | <u-radio-group> |
| | | <u-radio :customStyle="{marginBottom: '8px'}" v-for="(item, index) in statusList" :key="index" |
| | | :label="item.name" :name="item.id"> |
| | | </u-radio> |
| | | </u-radio-group> |
| | | </view> |
| | | |
| | | </view> |
| | | <view class="flex j-c-s-b a-i-c "> |
| | | <view class="f-28">处罚</view> |
| | | <view class="flex j-c-f-e"> |
| | | <u-radio-group v-if="!currentId"> |
| | | <u-radio :customStyle="{marginBottom: '8px'}" v-for="(item, index) in statusList" :key="index" |
| | | :label="item.name" :name="item.id"> |
| | | </u-radio> |
| | | </u-radio-group> |
| | | </view> |
| | | </view> --> |
| | | </view> |
| | | |
| | | <view class="cell bgc-ff" v-if="dangerCount > 0"> |
| | | <view class="flex j-c-s-b a-i-c mt-20 mb-20"> |
| | | <view class="f-28">下发责令整改通知</view> |
| | | <view class="flex j-c-f-e"> |
| | | <u-radio-group v-model="info.rectificationNoticeFlag"> |
| | | <u-radio :customStyle="{marginBottom: '8px'}" v-for="(item, index) in statusList" :key="index" |
| | | :label="item.name" :name="item.id"> |
| | | </u-radio> |
| | | </u-radio-group> |
| | | </view> |
| | | </view> |
| | | <view class="flex j-c-s-b a-i-c mb-20"> |
| | | <view class="f-28">处罚</view> |
| | | <view class="flex j-c-f-e"> |
| | | <u-radio-group v-model="info.punishFlag"> |
| | | <u-radio :customStyle="{marginBottom: '8px'}" v-for="(item, index) in statusList" :key="index" |
| | | :label="item.name" :name="item.id"> |
| | | </u-radio> |
| | | </u-radio-group> |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="flex j-c-s-b a-i-c mb-20" v-if="info.punishFlag == 1"> |
| | | <view class="f-28" style="width:160rpx;">处罚说明</view> |
| | | <u-textarea v-model="info.punishRemark" placeholder="请输入处罚说明内容" |
| | | placeholderClass="c-99 f-26"></u-textarea> |
| | | </view> |
| | | |
| | | <view class="flex j-c-s-b a-i-c" @click="showSelectDate = true"> |
| | | <view class="f-28">整改截止时间</view> |
| | | <view class="flex a-i-c"> |
| | | <text class="mr-10">{{info.rectificationEndTime}}</text> |
| | | <u-icon name="arrow-right"></u-icon> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | |
| | | <footer-btn @click="sumitInfo"></footer-btn> |
| | | |
| | | <u-datetime-picker ref="datetimePicker" :show="showSelectDate" v-model="time" mode="datetime" |
| | | :formatter="formatter" @confirm="confirmDate" @cancel="showSelectDate = false"></u-datetime-picker> |
| | | |
| | | <u-popup mode="bottom" :show="showSignature" round="10" :closeable="true" @close="showSignature=false"> |
| | | <view class="signture-popup"> |
| | |
| | | </view> |
| | | </u-popup> |
| | | |
| | | <view class="blank"></view> |
| | | </view> |
| | | </template> |
| | | |
| | |
| | | remark: "", |
| | | imageUrls: "", |
| | | signaturePath: "", |
| | | rectificationNoticeFlag: "", |
| | | punishFlag: "", |
| | | rectificationEndTime: "", |
| | | punishRemark: "" |
| | | }, |
| | | |
| | | desc: "", |
| | |
| | | value: 1 |
| | | }, |
| | | ], |
| | | |
| | | questionList: [], |
| | | itemIndex: [], |
| | | patrolRecordVOList: [], |
| | |
| | | id: 2 |
| | | } |
| | | ], |
| | | time: Number(new Date()), |
| | | showSelectDate: false, |
| | | dangerCount: 0 //隐患项数量 |
| | | |
| | | } |
| | | }, |
| | |
| | | }, |
| | | |
| | | getSelected() { |
| | | let arr = [] |
| | | let arr = []; |
| | | let count = 0; |
| | | for (let i = 0, ii = this.questionList.length; i < ii; i++) { |
| | | for (let k = 0, kk = this.questionList[i].children.length; k < kk; k++) { |
| | | if (this.questionList[i].children[k].state != null) { |
| | |
| | | imageUrls: this.setImages(this.questionList[i].children[k].urls), |
| | | remark: this.questionList[i].children[k].remark || "" |
| | | }) |
| | | if (this.questionList[i].children[k].state == 0) { |
| | | count += 1; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | this.dangerCount = count; |
| | | return arr; |
| | | }, |
| | | |
| | |
| | | urls: [this.signatureUrl], |
| | | current: this.signatureUrl |
| | | }) |
| | | }, |
| | | |
| | | confirmDate(e) { |
| | | this.showSelectDate = false; |
| | | this.info.rectificationEndTime = uni.$u.timeFormat(e.value, 'yyyy-mm-dd hh:MM:ss') |
| | | } |
| | | |
| | | } |
| | |
| | | </script> |
| | | |
| | | <style lang="less"> |
| | | page { |
| | | background-color: #f5f5f5; |
| | | } |
| | | |
| | | .wrap { |
| | | padding: 20rpx; |
| | | .section { |
| | | padding: 0 20rpx; |
| | | margin: 20rpx 20rpx 0; |
| | | background-color: #fff; |
| | | } |
| | | } |
| | | |
| | | .top { |
| | |
| | | } |
| | | |
| | | .content { |
| | | margin: 20rpx 0; |
| | | padding: 0 30rpx 150rpx; |
| | | margin: 20rpx; |
| | | padding: 20rpx 30rpx; |
| | | } |
| | | |
| | | .cell { |
| | | margin: 0 20rpx; |
| | | padding: 20rpx 30rpx; |
| | | } |
| | | |
| | | .site-box { |
| | |
| | | /deep/ .u-form-item__body__left__content { |
| | | font-size: 26rpx; |
| | | } |
| | | |
| | | .blank { |
| | | width: 100%; |
| | | height: 140rpx; |
| | | } |
| | | </style> |
| | |
| | | </view> |
| | | <view class="container"> |
| | | <house-number ref="house" v-show="tabIndex == 0" /> |
| | | <room-detail ref="room" v-show="tabIndex == 1" /> |
| | | <room-detail ref="room" v-show="tabIndex == 1" /> |
| | | </view> |
| | | </view> |
| | | </template> |
| | |
| | | onLoad(option) { |
| | | // this.tabIndex = option.type; |
| | | uni.setNavigationBarTitle({ |
| | | title:"门牌信息" |
| | | title: "门牌信息" |
| | | }) |
| | | if (uni.getStorageSync("activeRole").roleName == "民警" || uni.getStorageSync("activeRole").roleName == |
| | | "系统管理员") { |
| | | this.$refs.house.isPolice = true; |
| | | } |
| | | this.code = option.code; |
| | | this.$refs.house.stdId = option.code; |
| | | this.$refs.house.getBuildingDetail(); |
| | |
| | | |
| | | methods: { |
| | | changeTab(e) { |
| | | if(e.index == this.tabIndex) return; |
| | | if (e.index == this.tabIndex) return; |
| | | this.tabIndex = e.index; |
| | | if (e.index == 0) { |
| | | uni.setNavigationBarTitle({ |
| | | title:"门牌信息" |
| | | title: "门牌信息" |
| | | }) |
| | | this.$refs.house.stdId = this.code; |
| | | this.$refs.house.getBuildingDetail(); |
| | |
| | | this.$u.func.globalNavigator(`labelReportDetail?id=${id}`) |
| | | } else if (reportType == 6) { |
| | | this.$u.func.globalNavigator(`schoolReportDetail?id=${id}`) |
| | | } else { |
| | | this.$u.func.globalNavigator(`checkReform?id=${id}`) |
| | | } |
| | | }, |
| | | |
| | |
| | | <template> |
| | | <view class="wrap"> |
| | | <u-collapse :value="itemIndex" ref="collapse"> |
| | | <u-collapse-item :title="item.title" :name="index" v-for="(item,index) in questionList"> |
| | | <u-form :model="info" ref="form"> |
| | | <block v-for="(i,k) in item.children"> |
| | | <view class="f-30 c-33"> |
| | | {{i.title}} |
| | | </view> |
| | | <u-form-item labelWidth="90" label="隐患" prop="gateStatus"> |
| | | <view class="btn-group flex"> |
| | | <view class="value-item" :class="i.state == 0?'active bgc-main c-ff':''" |
| | | @click="changeStatus(0,i,index,k)"> |
| | | 存在 |
| | | </view> |
| | | <view class="value-item" :class="i.state == 1?'active bgc-main c-ff':''" |
| | | @click="changeStatus(1,i,index,k)"> |
| | | 不存在 |
| | | </view> |
| | | </view> |
| | | </u-form-item> |
| | | <view class="" v-if="i.state == 0"> |
| | | <u-form-item labelWidth="100" label="隐患照片" prop="gateStatus"> |
| | | <u-upload :fileList="i.urls" :previewFullImage="uploadConfig.previewFullImage" |
| | | :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple" |
| | | :maxCount="uploadConfig.maxCount" :capture="uploadConfig.capture" |
| | | @afterRead="afterReadImgs($event,i,index,k)" @delete="deleteImages($event,index,k)"> |
| | | <view class="upload-item upload-icon flex_base"> |
| | | <u-icon name="/static/icon/upload.png" width="60rpx" height="60rpx"></u-icon> |
| | | </view> |
| | | </u-upload> |
| | | </u-form-item> |
| | | <u-form-item labelWidth="100" label="隐患描述" prop="gateStatus"> |
| | | <u-textarea v-model="i.remark" placeholder="请输入隐患描述" |
| | | placeholderClass="c-99 f-26"></u-textarea> |
| | | </u-form-item> |
| | | </view> |
| | | </block> |
| | | </u-form> |
| | | </u-collapse-item> |
| | | </u-collapse> |
| | | |
| | | <view class="content"> |
| | | <view class="upload "> |
| | | <view class="f-28 mb-20">其它隐患问题</view> |
| | | <u-textarea v-model="info.remark" placeholder="请输入内容" placeholderClass="c-99 f-26"></u-textarea> |
| | | <view class="mt-20"> |
| | | <view class="f-28 mb-20">图片</view> |
| | | <u-upload :fileList="form.images" :previewFullImage="uploadConfig.previewFullImage" |
| | | :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple" |
| | | :maxCount="uploadConfig.maxCount" :capture="uploadConfig.capture" @afterRead="afterReadImg" |
| | | @delete="deletePic"> |
| | | <view class="upload-item upload-icon flex_base"> |
| | | <u-icon name="/static/icon/upload.png" width="60rpx" height="60rpx"></u-icon> |
| | | </view> |
| | | </u-upload> |
| | | </view> |
| | | </view> |
| | | <view class=""> |
| | | <view class="item-row flex j-c-s-b a-i-c"> |
| | | <text>场所名称</text> |
| | | <text class="item-content">{{info.placeName}}</text> |
| | | </view> |
| | | <view class="item-row flex j-c-s-b a-i-c"> |
| | | <text>标签</text> |
| | | <text>{{label || "未完善"}}</text> |
| | | </view> |
| | | <view class="item-row flex j-c-s-b a-i-c"> |
| | | <text>场所负责人</text> |
| | | <text>{{info.principal || "未完善"}}</text> |
| | | </view> |
| | | <view class="item-row flex j-c-s-b a-i-c"> |
| | | <text>场所负责人电话</text> |
| | | <text>{{info.principalPhone || "未完善"}}</text> |
| | | </view> |
| | | <view class="item-row flex j-c-s-b a-i-c"> |
| | | <text>检查人</text> |
| | | <text>{{info.name}}</text> |
| | | </view> |
| | | <view class="item-row flex j-c-s-b a-i-c"> |
| | | <text>检查时间</text> |
| | | <text>{{info.createTime}}</text> |
| | | </view> |
| | | <view class="item-row flex j-c-s-b a-i-c"> |
| | | <text>地址</text> |
| | | <text class="item-content">{{info.location}}</text> |
| | | </view> |
| | | |
| | | <footer-btn @click="sumitInfo"></footer-btn> |
| | | <view class="item-row flex j-c-s-b a-i-c" v-if="info.remark"> |
| | | <text>其它隐患问题</text> |
| | | <text class="item-content">{{info.remark}}</text> |
| | | </view> |
| | | <view class="item-row flex j-c-s-b a-i-c" v-if="info.rectificationNoticeFlag == 1"> |
| | | <text>下发整改通知</text> |
| | | <text class="item-content">是</text> |
| | | </view> |
| | | <view class="item-row flex j-c-s-b a-i-c" v-if="info.punishFlag == 1"> |
| | | <text>是否处罚</text> |
| | | <text class="item-content">是</text> |
| | | </view> |
| | | <view class="item-row flex j-c-s-b a-i-c" v-if="info.punishRemark"> |
| | | <text>处罚说明</text> |
| | | <text class="item-content">{{info.punishRemark}}</text> |
| | | </view> |
| | | <view class="item-row flex j-c-s-b a-i-c" v-if="info.rectificationEndTime"> |
| | | <text>整改截至时间</text> |
| | | <text class="item-content">{{info.rectificationEndTime}}</text> |
| | | </view> |
| | | <view class="item-row flex j-c-s-b a-i-c" v-if="inof.remark"> |
| | | <text>其它隐患问题</text> |
| | | <text class="item-content">{{info.remark}}</text> |
| | | </view> |
| | | |
| | | <view class="image-wrap bgc-ff" v-if="images.length"> |
| | | <view class="mb-20"> |
| | | 图片 |
| | | </view> |
| | | <view class="flex flex-wrap"> |
| | | <view class="image-item" v-for="(i,k) in images" @click="previewImage(images,i)"> |
| | | <u-image :src="i" width="100rpx" height="100rpx"></u-image> |
| | | </view> |
| | | </view> |
| | | |
| | | </view> |
| | | |
| | | <view class="image-wrap bgc-ff" v-if="signatureUrl.length"> |
| | | <view class="mb-20"> |
| | | 签名 |
| | | </view> |
| | | <view class="image-item" v-for="(i,k) in signatureUrl" @click="previewImage(signatureUrl,i)"> |
| | | <u-image :src="i" width="100rpx" height="100rpx"></u-image> |
| | | </view> |
| | | </view> |
| | | <view class="mt-20 bgc-ff"> |
| | | <block v-for="(item,index) in itemList"> |
| | | <block v-for="(i,k) in item.children"> |
| | | <block v-for="(n,m) in info.patrolRecordVOList"> |
| | | <view class="item-row flex j-c-s-b a-i-c" v-if="i.id == n.itemId && n.state == 1"> |
| | | <text class="item-left">{{i.title}}</text> |
| | | <text>不存在</text> |
| | | </view> |
| | | <u-collapse ref="collapse" v-if="i.id == n.itemId && n.state == 0"> |
| | | <u-collapse-item :name="index" :title="i.title" value="存在"> |
| | | <view class="mb-20" v-if="n.remark"> |
| | | <view class="f-26 mb-10" style="color:#000">隐患描述</view> |
| | | <view class="f-28" style="color:#000"> |
| | | {{n.remark}} |
| | | </view> |
| | | </view> |
| | | <view class="mb-20" v-if="n.imageUrls"> |
| | | <view class="f-26 mb-10" style="color:#000">隐患照片</view> |
| | | <view class="flex flex-wrap"> |
| | | <view class="mr-20" v-for="r in ($setImageUrl(n.imageUrls))"> |
| | | <u-image :src="r" width="100rpx" height="100rpx" |
| | | @click="previewImage($setImageUrl(n.imageUrls),i)"></u-image> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class=""> |
| | | <view class="f-26 mb-10">整改后照片</view> |
| | | <u-upload :fileList="form.images" :previewFullImage="uploadConfig.previewFullImage" |
| | | :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple" |
| | | :maxCount="uploadConfig.maxCount" :capture="uploadConfig.capture" |
| | | @afterRead="afterReadImg" @delete="deletePic"> |
| | | <view class="upload-item upload-icon flex_base"> |
| | | <u-icon name="/static/icon/upload.png" width="60rpx" |
| | | height="60rpx"></u-icon> |
| | | </view> |
| | | </u-upload> |
| | | </view> |
| | | </u-collapse-item> |
| | | </u-collapse> |
| | | </block> |
| | | </block> |
| | | </block> |
| | | </view> |
| | | |
| | | |
| | | <footer-btn /> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | import uploadMixin from "@/mixin/uploadMixin"; |
| | | import { |
| | | addPlaceCheckTwo, |
| | | getPlaceCheckItem |
| | | } from "@/api/place/place.js" |
| | | getPlaceCheckItem, |
| | | getPlaceCheckDetail, |
| | | getPlaceCheckReformDetail |
| | | } from '@/api/place/place.js' |
| | | export default { |
| | | mixins: [uploadMixin], |
| | | data() { |
| | | return { |
| | | form: { |
| | | images: [] |
| | | }, |
| | | info: { |
| | | remark: "", |
| | | imageUrls: "", |
| | | signaturePath: "", |
| | | }, |
| | | |
| | | desc: "", |
| | | title: "", |
| | | curSelectSite: {}, |
| | | showSignature: false, |
| | | signatureUrl: "", |
| | | signatureSettings: { //签名设置 |
| | | width: '700', //签名区域的宽 |
| | | height: '800', //签名区域的高 |
| | | lineWidth: 3, //签名时线宽 |
| | | textColor: '#007AFF' //签名文字颜色 |
| | | }, |
| | | statusOption: [{ |
| | | text: "存在", |
| | | value: 0 |
| | | }, |
| | | { |
| | | text: "不存在", |
| | | value: 1 |
| | | }, |
| | | ], |
| | | |
| | | questionList: [], |
| | | itemIndex: [], |
| | | patrolRecordVOList: [], |
| | | count: 0, |
| | | statusList: [{ |
| | | name: "是", |
| | | id: 1 |
| | | }, |
| | | { |
| | | name: "否", |
| | | id: 2 |
| | | } |
| | | ], |
| | | |
| | | info: {}, |
| | | images: [], |
| | | signatureUrl: [], |
| | | label: "", |
| | | itemList: [] |
| | | } |
| | | }, |
| | | onLoad(option) { |
| | | this.info.houseCode = option.code; |
| | | this.getItem(); |
| | | async onLoad(option) { |
| | | await this.getItem(); |
| | | this.getDetail(option.id); |
| | | }, |
| | | |
| | | methods: { |
| | | getDetail(id) { |
| | | getPlaceCheckReformDetail({ |
| | | taskId: id |
| | | }).then(res => { |
| | | this.info = res.data; |
| | | this.images = this.$setImageUrl(res.data.imageUrls); |
| | | this.signatureUrl = this.$setImageUrl(res.data.signaturePath); |
| | | if (res.data.placePoiLabelVOList.length) { |
| | | this.label = res.data.placePoiLabelVOList[res.data.placePoiLabelVOList.length - 1] |
| | | .labelName; |
| | | } |
| | | |
| | | // this.label = res.data. |
| | | }) |
| | | }, |
| | | |
| | | |
| | | getItem() { |
| | | getPlaceCheckItem().then(res => { |
| | | let data = res.data; |
| | | this.questionList = res.data; |
| | | let arr = [] |
| | | let obj = { |
| | | itemId: "", |
| | | state: "", |
| | | imagesUrl: "", |
| | | remark: "" |
| | | } |
| | | let count = 0; |
| | | for (let i = 0, ii = data.length; i < ii; i++) { |
| | | arr.push(i); |
| | | for (let k = 0, kk = data[i].children.length; k < kk; k++) { |
| | | // this.info.patrolRecordVOList.push(obj); |
| | | count += 1; |
| | | } |
| | | } |
| | | this.count = count; |
| | | this.itemIndex = arr; |
| | | }) |
| | | }, |
| | | |
| | | changeStatus(value, item, fIndex, cIndex) { |
| | | let children = this.questionList[fIndex]; |
| | | children.children[cIndex].state = value; |
| | | this.$set(this.questionList, fIndex, children) |
| | | if (value == 0 && !item.urls) { |
| | | children.children[cIndex].urls = []; |
| | | this.$set(this.questionList, fIndex, children) |
| | | } |
| | | this.$nextTick(() => { |
| | | this.$refs.collapse.init(); |
| | | }) |
| | | this.getSelected() |
| | | }, |
| | | |
| | | getSelected() { |
| | | let arr = [] |
| | | for (let i = 0, ii = this.questionList.length; i < ii; i++) { |
| | | for (let k = 0, kk = this.questionList[i].children.length; k < kk; k++) { |
| | | if (this.questionList[i].children[k].state != null) { |
| | | arr.push({ |
| | | itemId: this.questionList[i].children[k].id, |
| | | state: this.questionList[i].children[k].state, |
| | | imageUrls: this.setImages(this.questionList[i].children[k].urls), |
| | | remark: this.questionList[i].children[k].remark || "" |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | return arr; |
| | | }, |
| | | |
| | | setImages(key) { |
| | | if (!key) { |
| | | return "" |
| | | } else { |
| | | let urls = []; |
| | | for (let i of key) { |
| | | urls.push(i.name); |
| | | } |
| | | return urls.join(",") |
| | | } |
| | | }, |
| | | |
| | | async afterReadImgs(event, item, fIndex, cIndex) { |
| | | this.showLoading() |
| | | let children = this.questionList[fIndex]; |
| | | let lists = [].concat(event.file) |
| | | let fileListLen = item.urls.length; |
| | | lists.map((item) => { |
| | | children.children[cIndex].urls.push({ |
| | | ...item, |
| | | status: 'uploading', |
| | | message: '上传中' |
| | | }) |
| | | this.$set(this.questionList, fIndex, children) |
| | | }) |
| | | for (let i = 0; i < lists.length; i++) { |
| | | const result = await this.uploadFilePromise(lists[i].url) |
| | | children.children[cIndex].urls.splice(fileListLen, 1, Object.assign({}, { |
| | | url: result.data.link, |
| | | name: result.data.name |
| | | })) |
| | | this.$set(this.questionList, fIndex, children) |
| | | fileListLen++ |
| | | } |
| | | this.loadingClose() |
| | | this.getSelected() |
| | | }, |
| | | |
| | | deleteImages(event, fIndex, cIndex) { |
| | | let children = this.questionList[fIndex]; |
| | | children.children[cIndex].urls.splice(event.index, 1); |
| | | this.$set(this.questionList, fIndex, children); |
| | | this.getSelected() |
| | | }, |
| | | |
| | | signatureChange(e) { |
| | | // this.signatureUrl = e; |
| | | this.uploadSignImg(e) |
| | | }, |
| | | |
| | | showSignPopup() { |
| | | // if (this.getSelected().length < this.count) { |
| | | // this.$showTips("还有内容还未完善"); |
| | | // return; |
| | | // } |
| | | |
| | | let data = this.getSelected(); |
| | | for (let i of data) { |
| | | if (i.state == 1) { |
| | | if (i.imageUrls || i.remark) { |
| | | i.imageUrls = ""; |
| | | i.remark = ""; |
| | | } |
| | | } else { |
| | | if (!i.imageUrls && !i.remark) { |
| | | this.$showTips("请上传隐患照片或填写隐患描述"); |
| | | return; |
| | | } |
| | | } |
| | | } |
| | | this.showSignature = true; |
| | | }, |
| | | |
| | | uploadSignImg(url) { |
| | | uni.uploadFile({ |
| | | url: this.uploadConfig.url, |
| | | filePath: url, |
| | | name: 'file', |
| | | header: this.uploadConfig.header, |
| | | success: (res) => { |
| | | console.log(res); |
| | | let data = JSON.parse(res.data); |
| | | if (res.statusCode == 200 && data.code == 200) { |
| | | // this.handleSubmit(data.data.name); |
| | | this.showSignature = false; |
| | | this.signatureUrl = data.data.link; |
| | | this.info.signaturePath = data.data.name; |
| | | // this.sumitInfo() |
| | | } |
| | | if (res.code == 200) { |
| | | this.itemList = res.data; |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | sumitInfo() { |
| | | uni.showLoading({ |
| | | title: "加载中..." |
| | | }) |
| | | if (this.form.images.length > 0) { |
| | | let urls = [] |
| | | this.form.images.forEach(e => { |
| | | urls.push(e.name) |
| | | }) |
| | | this.info.imageUrls = urls.join(",") |
| | | } |
| | | |
| | | this.info.patrolRecordVOList = this.getSelected() |
| | | |
| | | addPlaceCheckTwo(this.info).then(res => { |
| | | uni.hideLoading(); |
| | | uni.showToast({ |
| | | icon: 'success', |
| | | title: '提交成功', |
| | | success() { |
| | | setTimeout(() => { |
| | | uni.navigateBack(); |
| | | }, 1000) |
| | | } |
| | | }) |
| | | }) |
| | | setUrl(src) { |
| | | return this.$setImageUrl(url) |
| | | }, |
| | | |
| | | previewImg() { |
| | | previewImage(urls, current) { |
| | | uni.previewImage({ |
| | | urls: [this.signatureUrl], |
| | | current: this.signatureUrl |
| | | urls, |
| | | current |
| | | }) |
| | | } |
| | | |
| | |
| | | } |
| | | </script> |
| | | |
| | | <style lang="less"> |
| | | .wrap { |
| | | padding: 20rpx; |
| | | <style lang="scss"> |
| | | page { |
| | | background-color: #f5f5f5; |
| | | } |
| | | |
| | | .top { |
| | | display: flex; |
| | | justify-content: flex-end; |
| | | padding: 20rpx; |
| | | } |
| | | |
| | | .top-btn { |
| | | padding: 16rpx 22rpx; |
| | | border-radius: 6rpx; |
| | | text-align: center; |
| | | } |
| | | |
| | | .content { |
| | | margin: 20rpx 0; |
| | | padding: 0 30rpx 150rpx; |
| | | } |
| | | |
| | | .site-box { |
| | | .item-row { |
| | | width: 100%; |
| | | padding: 30rpx; |
| | | margin: 20rpx 30rpx; |
| | | border-radius: 4rpx; |
| | | box-sizing: border-box; |
| | | border-bottom: 1px solid #f5f5f5; |
| | | font-size: 28rpx; |
| | | background-color: #fff; |
| | | |
| | | .c-aa { |
| | | color: #aaa; |
| | | .item-content { |
| | | width: 70%; |
| | | text-align: right; |
| | | } |
| | | |
| | | .address { |
| | | width: 60%; |
| | | margin-left: 25rpx; |
| | | .item-left { |
| | | width: 70%; |
| | | } |
| | | } |
| | | |
| | | .image-wrap { |
| | | margin-top: 20rpx; |
| | | padding: 20rpx; |
| | | |
| | | .image-item { |
| | | margin-right: 20rpx; |
| | | } |
| | | } |
| | | |
| | | /deep/.u-cell__title-text { |
| | | color: #000 !important; |
| | | width: 70%; |
| | | font-size: 28rpx !important; |
| | | } |
| | | |
| | | /deep/ .u-cell__value { |
| | | color: #000 !important; |
| | | font-size: 28rpx !important; |
| | | } |
| | | |
| | | .mr-20 { |
| | | margin-right: 20rpx; |
| | | } |
| | | |
| | | .upload-item { |
| | | width: 140rpx; |
| | | height: 140rpx; |
| | | border: 1px solid #EEEEEE; |
| | | } |
| | | |
| | | .upload { |
| | | // margin: 0 30rpx; |
| | | padding: 30rpx 0; |
| | | } |
| | | |
| | | .submit-btn { |
| | | width: 690rpx; |
| | | height: 78rpx; |
| | | line-height: 78rpx; |
| | | background: linear-gradient(163deg, #01BDFC 0%, #017BFC 100%); |
| | | border-radius: 8rpx 8rpx 8rpx 8rpx; |
| | | font-size: 32rpx; |
| | | color: #fff; |
| | | margin-top: 50rpx; |
| | | } |
| | | |
| | | .list-btn { |
| | | width: 690rpx; |
| | | height: 78rpx; |
| | | line-height: 78rpx; |
| | | background: linear-gradient(163deg, #c7d7dc 0%, #c3cdd8 100%); |
| | | border-radius: 8rpx 8rpx 8rpx 8rpx; |
| | | font-size: 32rpx; |
| | | color: #fff; |
| | | margin-top: 50rpx; |
| | | } |
| | | |
| | | .address-row { |
| | | flex: 1; |
| | | justify-content: flex-end; |
| | | align-items: center; |
| | | } |
| | | |
| | | .address-content { |
| | | width: calc(100% - 116rpx - 20rpx); |
| | | margin-right: 20rpx; |
| | | text-align: right; |
| | | } |
| | | |
| | | .location-btn { |
| | | width: 116rpx; |
| | | height: 46rpx; |
| | | line-height: 46rpx; |
| | | border-radius: 4rpx; |
| | | border: 1px solid currentColor; |
| | | padding: 0; |
| | | background-color: #fff; |
| | | text-align: center; |
| | | } |
| | | |
| | | |
| | | .signture-popup { |
| | | padding-bottom: 20rpx; |
| | | } |
| | | |
| | | .sign { |
| | | padding: 30rpx; |
| | | // margin: 0 30rpx; |
| | | } |
| | | |
| | | .value-item { |
| | | flex: 1; |
| | | // background-color: #ffffff; |
| | | // width: 120rpx; |
| | | border: 2rpx solid #f5f5f5; |
| | | height: 70rpx; |
| | | line-height: 70rpx; |
| | | box-sizing: border-box; |
| | | text-align: center; |
| | | } |
| | | |
| | | .active { |
| | | border: 2rpx solid currentColor; |
| | | } |
| | | |
| | | .btn-group { |
| | | flex: 1; |
| | | } |
| | | |
| | | /deep/ .u-cell__title-text { |
| | | font-weight: bold; |
| | | font-size: 30rpx; |
| | | } |
| | | |
| | | /deep/ .u-form-item__body__left__content { |
| | | font-size: 26rpx; |
| | | } |
| | | </style> |
| New file |
| | |
| | | <template> |
| | | <view class="wrap"> |
| | | <u-collapse :value="itemIndex" ref="collapse"> |
| | | <u-collapse-item :title="item.title" :name="index" v-for="(item,index) in questionList"> |
| | | <u-form :model="info" ref="form"> |
| | | <block v-for="(i,k) in item.children"> |
| | | <view class="f-30 c-33"> |
| | | {{i.title}} |
| | | </view> |
| | | <u-form-item labelWidth="90" label="隐患" prop="gateStatus"> |
| | | <view class="btn-group flex"> |
| | | <view class="value-item" :class="i.state == 0?'active bgc-main c-ff':''" |
| | | @click="changeStatus(0,i,index,k)"> |
| | | 存在 |
| | | </view> |
| | | <view class="value-item" :class="i.state == 1?'active bgc-main c-ff':''" |
| | | @click="changeStatus(1,i,index,k)"> |
| | | 不存在 |
| | | </view> |
| | | </view> |
| | | </u-form-item> |
| | | <view class="" v-if="i.state == 0"> |
| | | <u-form-item labelWidth="100" label="隐患照片" prop="gateStatus"> |
| | | <u-upload :fileList="i.urls" :previewFullImage="uploadConfig.previewFullImage" |
| | | :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple" |
| | | :maxCount="uploadConfig.maxCount" :capture="uploadConfig.capture" |
| | | @afterRead="afterReadImgs($event,i,index,k)" @delete="deleteImages($event,index,k)"> |
| | | <view class="upload-item upload-icon flex_base"> |
| | | <u-icon name="/static/icon/upload.png" width="60rpx" height="60rpx"></u-icon> |
| | | </view> |
| | | </u-upload> |
| | | </u-form-item> |
| | | <u-form-item labelWidth="100" label="隐患描述" prop="gateStatus"> |
| | | <u-textarea v-model="i.remark" placeholder="请输入隐患描述" |
| | | placeholderClass="c-99 f-26"></u-textarea> |
| | | </u-form-item> |
| | | </view> |
| | | </block> |
| | | </u-form> |
| | | </u-collapse-item> |
| | | </u-collapse> |
| | | |
| | | <view class="content"> |
| | | <view class="upload "> |
| | | <view class="f-28 mb-20">其它隐患问题</view> |
| | | <u-textarea v-model="info.remark" placeholder="请输入内容" placeholderClass="c-99 f-26"></u-textarea> |
| | | <view class="mt-20"> |
| | | <view class="f-28 mb-20">图片</view> |
| | | <u-upload :fileList="form.images" :previewFullImage="uploadConfig.previewFullImage" |
| | | :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple" |
| | | :maxCount="uploadConfig.maxCount" :capture="uploadConfig.capture" @afterRead="afterReadImg" |
| | | @delete="deletePic"> |
| | | <view class="upload-item upload-icon flex_base"> |
| | | <u-icon name="/static/icon/upload.png" width="60rpx" height="60rpx"></u-icon> |
| | | </view> |
| | | </u-upload> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | <footer-btn @click="sumitInfo"></footer-btn> |
| | | |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | import uploadMixin from "@/mixin/uploadMixin"; |
| | | import { |
| | | addPlaceCheckTwo, |
| | | getPlaceCheckItem, |
| | | getPlaceCheckReformDetail |
| | | } from "@/api/place/place.js" |
| | | export default { |
| | | mixins: [uploadMixin], |
| | | data() { |
| | | return { |
| | | form: { |
| | | images: [] |
| | | }, |
| | | info: { |
| | | houseCode: "", |
| | | remark: "", |
| | | imageUrls: "", |
| | | signaturePath: "", |
| | | }, |
| | | |
| | | desc: "", |
| | | title: "", |
| | | curSelectSite: {}, |
| | | showSignature: false, |
| | | signatureUrl: "", |
| | | signatureSettings: { //签名设置 |
| | | width: '700', //签名区域的宽 |
| | | height: '800', //签名区域的高 |
| | | lineWidth: 3, //签名时线宽 |
| | | textColor: '#007AFF' //签名文字颜色 |
| | | }, |
| | | statusOption: [{ |
| | | text: "存在", |
| | | value: 0 |
| | | }, |
| | | { |
| | | text: "不存在", |
| | | value: 1 |
| | | }, |
| | | ], |
| | | |
| | | questionList: [], |
| | | itemIndex: [], |
| | | patrolRecordVOList: [], |
| | | count: 0, |
| | | statusList: [{ |
| | | name: "是", |
| | | id: 1 |
| | | }, |
| | | { |
| | | name: "否", |
| | | id: 2 |
| | | } |
| | | ], |
| | | |
| | | } |
| | | }, |
| | | async onLoad(option) { |
| | | await this.getItem(); |
| | | this.getDetail(option.id); |
| | | |
| | | }, |
| | | |
| | | methods: { |
| | | |
| | | |
| | | getDetail(id) { |
| | | getPlaceCheckReformDetail({ |
| | | taskId: id |
| | | }).then(res => { |
| | | if (res.code == 200) { |
| | | for (let i in this.info) { |
| | | this.info[i] = res.data[i]; |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | |
| | | getItem() { |
| | | getPlaceCheckItem().then(res => { |
| | | let data = res.data; |
| | | this.questionList = res.data; |
| | | let arr = [] |
| | | let obj = { |
| | | itemId: "", |
| | | state: "", |
| | | imagesUrl: "", |
| | | remark: "" |
| | | } |
| | | let count = 0; |
| | | for (let i = 0, ii = data.length; i < ii; i++) { |
| | | arr.push(i); |
| | | for (let k = 0, kk = data[i].children.length; k < kk; k++) { |
| | | // this.info.patrolRecordVOList.push(obj); |
| | | count += 1; |
| | | } |
| | | } |
| | | this.count = count; |
| | | this.itemIndex = arr; |
| | | }) |
| | | }, |
| | | |
| | | changeStatus(value, item, fIndex, cIndex) { |
| | | let children = this.questionList[fIndex]; |
| | | children.children[cIndex].state = value; |
| | | this.$set(this.questionList, fIndex, children) |
| | | if (value == 0 && !item.urls) { |
| | | children.children[cIndex].urls = []; |
| | | this.$set(this.questionList, fIndex, children) |
| | | } |
| | | this.$nextTick(() => { |
| | | this.$refs.collapse.init(); |
| | | }) |
| | | this.getSelected() |
| | | }, |
| | | |
| | | getSelected() { |
| | | let arr = [] |
| | | for (let i = 0, ii = this.questionList.length; i < ii; i++) { |
| | | for (let k = 0, kk = this.questionList[i].children.length; k < kk; k++) { |
| | | if (this.questionList[i].children[k].state != null) { |
| | | arr.push({ |
| | | itemId: this.questionList[i].children[k].id, |
| | | state: this.questionList[i].children[k].state, |
| | | imageUrls: this.setImages(this.questionList[i].children[k].urls), |
| | | remark: this.questionList[i].children[k].remark || "" |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | return arr; |
| | | }, |
| | | |
| | | setImages(key) { |
| | | if (!key) { |
| | | return "" |
| | | } else { |
| | | let urls = []; |
| | | for (let i of key) { |
| | | urls.push(i.name); |
| | | } |
| | | return urls.join(",") |
| | | } |
| | | }, |
| | | |
| | | async afterReadImgs(event, item, fIndex, cIndex) { |
| | | this.showLoading() |
| | | let children = this.questionList[fIndex]; |
| | | let lists = [].concat(event.file) |
| | | let fileListLen = item.urls.length; |
| | | lists.map((item) => { |
| | | children.children[cIndex].urls.push({ |
| | | ...item, |
| | | status: 'uploading', |
| | | message: '上传中' |
| | | }) |
| | | this.$set(this.questionList, fIndex, children) |
| | | }) |
| | | for (let i = 0; i < lists.length; i++) { |
| | | const result = await this.uploadFilePromise(lists[i].url) |
| | | children.children[cIndex].urls.splice(fileListLen, 1, Object.assign({}, { |
| | | url: result.data.link, |
| | | name: result.data.name |
| | | })) |
| | | this.$set(this.questionList, fIndex, children) |
| | | fileListLen++ |
| | | } |
| | | this.loadingClose() |
| | | this.getSelected() |
| | | }, |
| | | |
| | | deleteImages(event, fIndex, cIndex) { |
| | | let children = this.questionList[fIndex]; |
| | | children.children[cIndex].urls.splice(event.index, 1); |
| | | this.$set(this.questionList, fIndex, children); |
| | | this.getSelected() |
| | | }, |
| | | |
| | | signatureChange(e) { |
| | | // this.signatureUrl = e; |
| | | this.uploadSignImg(e) |
| | | }, |
| | | |
| | | showSignPopup() { |
| | | // if (this.getSelected().length < this.count) { |
| | | // this.$showTips("还有内容还未完善"); |
| | | // return; |
| | | // } |
| | | |
| | | let data = this.getSelected(); |
| | | for (let i of data) { |
| | | if (i.state == 1) { |
| | | if (i.imageUrls || i.remark) { |
| | | i.imageUrls = ""; |
| | | i.remark = ""; |
| | | } |
| | | } else { |
| | | if (!i.imageUrls && !i.remark) { |
| | | this.$showTips("请上传隐患照片或填写隐患描述"); |
| | | return; |
| | | } |
| | | } |
| | | } |
| | | this.showSignature = true; |
| | | }, |
| | | |
| | | uploadSignImg(url) { |
| | | uni.uploadFile({ |
| | | url: this.uploadConfig.url, |
| | | filePath: url, |
| | | name: 'file', |
| | | header: this.uploadConfig.header, |
| | | success: (res) => { |
| | | console.log(res); |
| | | let data = JSON.parse(res.data); |
| | | if (res.statusCode == 200 && data.code == 200) { |
| | | // this.handleSubmit(data.data.name); |
| | | this.showSignature = false; |
| | | this.signatureUrl = data.data.link; |
| | | this.info.signaturePath = data.data.name; |
| | | // this.sumitInfo() |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | sumitInfo() { |
| | | uni.showLoading({ |
| | | title: "加载中..." |
| | | }) |
| | | if (this.form.images.length > 0) { |
| | | let urls = [] |
| | | this.form.images.forEach(e => { |
| | | urls.push(e.name) |
| | | }) |
| | | this.info.imageUrls = urls.join(",") |
| | | } |
| | | |
| | | this.info.patrolRecordVOList = this.getSelected() |
| | | |
| | | addPlaceCheckTwo(this.info).then(res => { |
| | | uni.hideLoading(); |
| | | uni.showToast({ |
| | | icon: 'success', |
| | | title: '提交成功', |
| | | success() { |
| | | setTimeout(() => { |
| | | uni.navigateBack(); |
| | | }, 1000) |
| | | } |
| | | }) |
| | | }) |
| | | }, |
| | | |
| | | previewImg() { |
| | | uni.previewImage({ |
| | | urls: [this.signatureUrl], |
| | | current: this.signatureUrl |
| | | }) |
| | | } |
| | | |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="less"> |
| | | .wrap { |
| | | padding: 20rpx; |
| | | } |
| | | |
| | | .top { |
| | | display: flex; |
| | | justify-content: flex-end; |
| | | padding: 20rpx; |
| | | } |
| | | |
| | | .top-btn { |
| | | padding: 16rpx 22rpx; |
| | | border-radius: 6rpx; |
| | | text-align: center; |
| | | } |
| | | |
| | | .content { |
| | | margin: 20rpx 0; |
| | | padding: 0 30rpx 150rpx; |
| | | } |
| | | |
| | | .site-box { |
| | | padding: 30rpx; |
| | | margin: 20rpx 30rpx; |
| | | border-radius: 4rpx; |
| | | |
| | | .c-aa { |
| | | color: #aaa; |
| | | } |
| | | |
| | | .address { |
| | | width: 60%; |
| | | margin-left: 25rpx; |
| | | } |
| | | } |
| | | |
| | | .upload-item { |
| | | width: 140rpx; |
| | | height: 140rpx; |
| | | border: 1px solid #EEEEEE; |
| | | } |
| | | |
| | | .upload { |
| | | // margin: 0 30rpx; |
| | | padding: 30rpx 0; |
| | | } |
| | | |
| | | .submit-btn { |
| | | width: 690rpx; |
| | | height: 78rpx; |
| | | line-height: 78rpx; |
| | | background: linear-gradient(163deg, #01BDFC 0%, #017BFC 100%); |
| | | border-radius: 8rpx 8rpx 8rpx 8rpx; |
| | | font-size: 32rpx; |
| | | color: #fff; |
| | | margin-top: 50rpx; |
| | | } |
| | | |
| | | .list-btn { |
| | | width: 690rpx; |
| | | height: 78rpx; |
| | | line-height: 78rpx; |
| | | background: linear-gradient(163deg, #c7d7dc 0%, #c3cdd8 100%); |
| | | border-radius: 8rpx 8rpx 8rpx 8rpx; |
| | | font-size: 32rpx; |
| | | color: #fff; |
| | | margin-top: 50rpx; |
| | | } |
| | | |
| | | .address-row { |
| | | flex: 1; |
| | | justify-content: flex-end; |
| | | align-items: center; |
| | | } |
| | | |
| | | .address-content { |
| | | width: calc(100% - 116rpx - 20rpx); |
| | | margin-right: 20rpx; |
| | | text-align: right; |
| | | } |
| | | |
| | | .location-btn { |
| | | width: 116rpx; |
| | | height: 46rpx; |
| | | line-height: 46rpx; |
| | | border-radius: 4rpx; |
| | | border: 1px solid currentColor; |
| | | padding: 0; |
| | | background-color: #fff; |
| | | text-align: center; |
| | | } |
| | | |
| | | |
| | | .signture-popup { |
| | | padding-bottom: 20rpx; |
| | | } |
| | | |
| | | .sign { |
| | | padding: 30rpx; |
| | | // margin: 0 30rpx; |
| | | } |
| | | |
| | | .value-item { |
| | | flex: 1; |
| | | // background-color: #ffffff; |
| | | // width: 120rpx; |
| | | border: 2rpx solid #f5f5f5; |
| | | height: 70rpx; |
| | | line-height: 70rpx; |
| | | box-sizing: border-box; |
| | | text-align: center; |
| | | } |
| | | |
| | | .active { |
| | | border: 2rpx solid currentColor; |
| | | } |
| | | |
| | | .btn-group { |
| | | flex: 1; |
| | | } |
| | | |
| | | /deep/ .u-cell__title-text { |
| | | font-weight: bold; |
| | | font-size: 30rpx; |
| | | } |
| | | |
| | | /deep/ .u-form-item__body__left__content { |
| | | font-size: 26rpx; |
| | | } |
| | | </style> |
| | |
| | | </u-input>
|
| | | <u-icon slot="right" name="arrow-right"></u-icon>
|
| | | </u-form-item>
|
| | | <u-form-item label="九小场所" labelWidth="100" prop="isNine" :required="isRequired">
|
| | | <u-form-item label="九小场所:" labelWidth="100" prop="isNine" :required="isRequired">
|
| | | <u-radio-group v-model="form.isNine" v-if="!currentId">
|
| | | <u-radio :customStyle="{marginBottom: '8px'}" v-for="(item, index) in statusList"
|
| | | :key="index" :label="item.name" :name="item.id">
|
| | |
| | | </u-input>
|
| | | <u-icon slot="right" name="arrow-right"></u-icon>
|
| | | </u-form-item>
|
| | | <u-form-item v-if="form.isNine == 1" label="阵地" labelWidth="100" prop="isFront"
|
| | | :required="isRequired">
|
| | | <u-form-item label="阵地:" labelWidth="100" prop="isFront" :required="isRequired">
|
| | | <u-radio-group v-model="form.isFront" v-if="!currentId">
|
| | | <u-radio :customStyle="{marginBottom: '8px'}" v-for="(item, index) in statusList"
|
| | | :key="index" :label="item.name" :name="item.id">
|
| | |
| | | <view class="address-content f-28" v-if="!form.jwd" style="color: #c0c4cc;">
|
| | | 请选择地址
|
| | | </view>
|
| | | <view class="location-btn c-main f-24" @click="getLocation()" v-if="!currentId">
|
| | | <view class="location-btn c-main f-24" @click="getLocation()"
|
| | | v-if="(!currentId && !isView) || (isView && !form.jwd)">
|
| | | 获取地址
|
| | | </view>
|
| | | </view>
|
| | |
| | | <u-form-item class="form-item" labelWidth="100" :required="isRequired" :disabled="isDisabled"
|
| | | label="手机号:" prop="principalPhone">
|
| | | <u--input border="none" type="number" v-model="form.principalPhone" placeholder="请输入">
|
| | | </u--input>
|
| | | </u-form-item>
|
| | | <u-form-item class="form-item" labelWidth="100" :required="isRequired" :disabled="isDisabled"
|
| | | label="身份证号:" prop="principalIdCard">
|
| | | <u--input border="none" type="idcard" v-model="form.principalIdCard" placeholder="请输入">
|
| | | </u--input>
|
| | | </u-form-item>
|
| | | </view>
|
| | |
| | | minioBaseUrl
|
| | | } from "../../../common/setting";
|
| | | import {
|
| | | bizDictionary
|
| | | bizDictionary,
|
| | | bizDictionaryTree
|
| | | } from '@/api/system/dict.js'
|
| | | export default {
|
| | | mixins: [uploadMixin],
|
| | |
| | | placeName: "",
|
| | | principal: '',
|
| | | principalPhone: '',
|
| | | principalIdCard: '',
|
| | | lat: '',
|
| | | lng: '',
|
| | | location: '',
|
| | |
| | | message: '手机号码不正确',
|
| | | trigger: ['change', 'blur']
|
| | |
|
| | | }
|
| | | ],
|
| | | 'form.principalIdCard': [{
|
| | | type: 'string',
|
| | | required: false,
|
| | | message: '请输入身份证号码',
|
| | | trigger: ['change', 'blur']
|
| | | },
|
| | | {
|
| | | validator: (rule, value, callback) => {
|
| | | const idCardRegex =
|
| | | /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/
|
| | | return idCardRegex.test(value)
|
| | | },
|
| | | message: '身份证号码有误',
|
| | | trigger: ['change', 'blur']
|
| | | }
|
| | | ],
|
| | | },
|
| | |
| | | showNineTypePicker: false,
|
| | | showFrontTypePicker: false,
|
| | | nineTypeValue: "",
|
| | | frontTypeValue: ""
|
| | | frontTypeValue: "",
|
| | | isView: false
|
| | |
|
| | |
|
| | | }
|
| | |
| | | options: {
|
| | | styleIsolation: 'shared', // 解除样式隔离
|
| | | },
|
| | | onLoad(option) {
|
| | | async onLoad(option) {
|
| | | await this.getCategory();
|
| | | await this.getAllBizDict();
|
| | | this.getNineTypeList();
|
| | | const {
|
| | | type
|
| | | } = option
|
| | |
| | | this.form.houseCode = option.houseCode
|
| | | }
|
| | | if (option.id || option.houseCode) {
|
| | | this.isView = true;
|
| | | this.getBuildingDetail()
|
| | | }
|
| | | if (!!type || type != void 0) {
|
| | |
| | | title: '详情'
|
| | | })
|
| | | }
|
| | | this.getCategory();
|
| | | this.getAllBizDict();
|
| | |
|
| | |
|
| | | },
|
| | |
|
| | | watch: {
|
| | |
| | | // },
|
| | | // immediate:true
|
| | | // }
|
| | |
|
| | | },
|
| | | onReady() {
|
| | | this.$refs.form.setRules(this.rules)
|
| | | },
|
| | |
|
| | |
|
| | | onUnload() {
|
| | |
|
| | | },
|
| | |
|
| | |
| | | })
|
| | | })
|
| | | },
|
| | |
|
| | | getNineTypeList() {
|
| | | bizDictionaryTree({
|
| | | code: "nineType"
|
| | | }).then(res => {
|
| | | console.log(res.data);
|
| | | })
|
| | | },
|
| | |
|
| | |
|
| | | navTo(type) {
|
| | | if (type == 1) {
|
| | |
| | | },
|
| | |
|
| | | getBuildingDetail(params = {}) {
|
| | |
|
| | | let idorCodeParams = {}
|
| | | if (this.houseCode) {
|
| | | idorCodeParams = {
|
| | |
| | | id: this.currentId
|
| | | }
|
| | | }
|
| | | uni.showLoading({
|
| | | title: "加载中..."
|
| | | })
|
| | | getPlaceDetail({
|
| | | ...params,
|
| | | ...idorCodeParams
|
| | |
| | | code,
|
| | | data
|
| | | }) => {
|
| | | uni.hideLoading();
|
| | | if (code !== 200) {
|
| | | uni.showToast({
|
| | | title: "数据加载失败",
|
| | |
| | | this.nineTypeValue = name;
|
| | | }
|
| | |
|
| | | if (key == "isFrontType") {
|
| | | if (key == "isFront") {
|
| | | let {
|
| | | index,
|
| | | name
|
| | |
| | | this.frontTypeIndex = index;
|
| | | this.frontTypeValue = name;
|
| | | }
|
| | |
|
| | | })
|
| | |
|
| | | this.form.jwd = `${Number(data.lng).toFixed(6)},${Number(data.lat).toFixed(6)}`
|
| | | this.$set(this.form, "jwd", `${Number(data.lng).toFixed(6)},${Number(data.lat).toFixed(6)}`)
|
| | | this.form.building = arr.join("")
|
| | | let labelList = data.placePoiLabelVOList;
|
| | | let tempLabelList = [];
|
| | |
| | | this.firstId = tempLabelList[0].poiCode;
|
| | | this.categoryValue = tempLabelList[1].labelName;
|
| | | this.form.label = tempLabelList[1].poiCode
|
| | | setTimeout(() => {
|
| | | let firstIndex = this.categoryList[0].findIndex(i => i.categoryNo ==
|
| | | tempLabelList[0].poiCode)
|
| | | let childIndex = this.categoryList[1].findIndex(i => i.categoryNo ==
|
| | | tempLabelList[1].poiCode)
|
| | | this.categoryIndex = [firstIndex, childIndex]
|
| | | }, 500)
|
| | | // setTimeout(() => {
|
| | | let firstIndex = this.categoryList[0].findIndex(i => i.categoryNo ==
|
| | | tempLabelList[0].poiCode)
|
| | | let childIndex = this.categoryList[1].findIndex(i => i.categoryNo ==
|
| | | tempLabelList[1].poiCode)
|
| | | this.categoryIndex = [firstIndex, childIndex]
|
| | | // }, 500)
|
| | |
|
| | |
|
| | | Object.keys(this.comprehensiveData).forEach(key => {
|
| | |
| | | this.$set(this.pickColumns, index, data)
|
| | | },
|
| | |
|
| | | getLocation() {
|
| | | const that = this
|
| | | //获取当前位置信息
|
| | | getCurrentLocation() {
|
| | | uni.getLocation({
|
| | | type: 'wgs84', // 坐标系类型
|
| | | success: function(res) {
|
| | | type: 'gcj02', // 坐标系类型
|
| | | success: (res) => {
|
| | | var latitude = res.latitude; // 维度
|
| | | var longitude = res.longitude; // 经度
|
| | |
|
| | | that.form.lng = longitude
|
| | | that.form.lat = latitude
|
| | | this.form.lng = longitude
|
| | | this.form.lat = latitude
|
| | | this.form.jwd =
|
| | | `${Number(res.longitude).toFixed(6)},${Number(res.latitude).toFixed(6)}`
|
| | |
|
| | | that.form.jwd = longitude + "," + latitude
|
| | | },
|
| | | fail: function(res) {
|
| | | console.log('获取定位失败:' + res.errMsg);
|