From 3c738f4fe2762bba8087e5a22fc0dc06560eab0e Mon Sep 17 00:00:00 2001
From: linwe <872216996@qq.com>
Date: Thu, 08 Aug 2024 10:01:17 +0800
Subject: [PATCH] 三色任务与自查任务
---
subPackage/workbench/views/cscj.vue | 1156 +++++++++++++++++++++++++++++++++++++++++++++------------
1 files changed, 903 insertions(+), 253 deletions(-)
diff --git a/subPackage/workbench/views/cscj.vue b/subPackage/workbench/views/cscj.vue
index b5f2ce8..11e67bd 100644
--- a/subPackage/workbench/views/cscj.vue
+++ b/subPackage/workbench/views/cscj.vue
@@ -2,6 +2,14 @@
<view class="container">
<view class="wrap">
<u-form labelWidth="70" :model="form" :rules="rules" ref="form">
+ <view class="top item flex j-c-s-b a-i-c" @click="onScan()" v-if="!currentId">
+ <view class="flex a-i-c">
+ <u-icon name="/static/icon/nav-05.png" width="90rpx" height="90rpx"></u-icon>
+ <text class="f-28 ml-10">扫码获取信息</text>
+ </view>
+ <u-icon name="arrow-right" size="20"></u-icon>
+ </view>
+
<view class="item">
<!-- u-form-item v-if="!currentId" @click="showPicker = true" class="form-item" labelWidth="100" label="楼栋:"
:required="isRequired" :disabled="isDisabled" prop="buildingCode">
@@ -21,25 +29,90 @@
</view>
</u-form-item>
- <u-form-item @click="popup" class="form-item" labelWidth="100" label="标签:" :required="isRequired"
- :disabled="isDisabled" prop="label">
- <u-input border="none" v-model="categoryValue" disabled disabledColor="#ffffff"
- placeholder="请选择">
- </u-input>
- <u-icon slot="right" name="arrow-right"></u-icon>
+ <u-form-item class="form-item" labelWidth="100" label="标签:" :required="true" :disabled="isDisabled"
+ prop="label">
+ <view class="flex j-c-s-b a-i-c" @click="popup" v-if="!currentId">
+ <u-input border="none" v-model="categoryValue" disabled disabledColor="#ffffff"
+ placeholder="请选择">
+ </u-input>
+ <u-icon slot="right" name="arrow-right"></u-icon>
+ </view>
+ <view class="f-30" v-if="currentId">
+ {{categoryValue}}
+ </view>
+
</u-form-item>
- <!-- <view v-if="showLabelList.length" class="label" style="border-bottom:1px solid eff1f3;">
- <view v-for="(item,index) in showLabelList" :key="index" class="activeLabel">
- <u-tag :closable="currentId?false:true" :show="!item.isClose" size="mini"
- @close="delTag(item)" :text="item.text"></u-tag>
+ <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-radio>
+ </u-radio-group>
+ <view class="f-30" v-if="currentId">
+ {{form.isNine == 1?"是":"否"}}
</view>
- </view> -->
- <!-- <view v-if="categoryValue.length" class="label" style="border-bottom:1px solid eff1f3;">
- <view v-for="(item,index) in categoryValue" :key="index" class="activeLabel">
- <u-tag :closable="currentId?false:true" size="mini"
- @close="delTag()" :text="item.categoryName"></u-tag>
+ </u-form-item>
+ <u-form-item v-if="form.isNine == 1" class="form-item" labelWidth="100" label="九小场所类型:"
+ :required="isRequired" :disabled="isDisabled" prop="nineType">
+ <view class="flex j-c-s-b a-i-c" v-if="!currentId" @click="showNineTypeSelector">
+ <u-input border="none" v-model="nineTypeValue" disabled disabledColor="#ffffff"
+ placeholder="请选择">
+ </u-input>
+ <u-icon slot="right" name="arrow-right"></u-icon>
</view>
- </view> -->
+ <view class="f-30" v-if="currentId">
+ {{nineTypeValue}}
+ </view>
+ </u-form-item>
+
+ <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">
+ </u-radio>
+ </u-radio-group>
+ <view class="f-30" v-if="currentId">
+ {{form.isFront == 1?"是":"否"}}
+ </view>
+ </u-form-item>
+ <u-form-item v-if="form.isFront == 1" class="form-item" labelWidth="100" label="阵地类型:"
+ :required="isRequired" :disabled="isDisabled" prop="frontType">
+ <view class="flex j-c-s-b a-i-c" @click="showFrontTypePicker = true" v-if="!currentId">
+ <u-input border="none" v-model="frontTypeValue" disabled disabledColor="#ffffff"
+ placeholder="请选择">
+ </u-input>
+ <u-icon slot="right" name="arrow-right"></u-icon>
+ </view>
+ <view class="f-30" v-if="currentId">
+ {{frontTypeValue}}
+ </view>
+
+ </u-form-item>
+
+ <u-form-item label="三级消防单位" labelWidth="100" prop="threeFireProtection" :required="isRequired">
+ <u-radio-group v-model="form.threeFireProtection" 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 class="f-30" v-if="currentId">
+ {{form.threeFireProtection == 1?"否":"是"}}
+ </view>
+ </u-form-item>
+
+ <u-form-item class="form-item" labelWidth="100" label="无诈类别:" :required="isRequired"
+ :disabled="isDisabled" prop="noExplosionCategory">
+ <view class="flex j-c-s-b a-i-c" v-if="!currentId" @click="showNotSwindleTypePicker= true">
+ <u-input border="none" v-model="notSwindleValue" disabled disabledColor="#ffffff"
+ placeholder="请选择">
+ </u-input>
+ <u-icon slot="right" name="arrow-right"></u-icon>
+ </view>
+ <view class="f-30" v-if="currentId">
+ {{notSwindleValue}}
+ </view>
+ </u-form-item>
+
<u-form-item class="form-item" labelWidth="100" label="备注:" prop="remark">
<u--input v-if="!currentId" border="none" v-model="form.remark" placeholder="请输入">
</u--input>
@@ -57,7 +130,8 @@
<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="source == 3 || ((!currentId && !isView) || (isView && !form.jwd))">
获取地址
</view>
</view>
@@ -69,11 +143,32 @@
</view>
</u-form-item>
+ <u-form-item v-if="!currentId" label="负责人信息和法人信息是否一致" labelWidth="100" :required="isRequired">
+ <u-radio-group v-model="isLegalSame">
+ <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 class="f-30" v-if="currentId">
+ {{form.threeFireProtection == 1?"是":"否"}}
+ </view> -->
+ </u-form-item>
</view>
<view class="item">
- <view class="box-title">
- <box-title title="负责人信息"></box-title>
+ <view class="flex j-c-s-b a-i-c">
+ <view class="box-title" style="width:50%;">
+ <box-title title="负责人信息"></box-title>
+ </view>
+ <!-- #ifdef MP-WEIXIN -->
+ <ocr-navigator v-if="!currentId" @onSuccess="recognizeSuccess($event,'principal')"
+ certificateType="idCard" :opposite="false">
+ <view class="recognize-btn flex a-i-c">
+ <u-icon name="scan" color="#fff" size="24"></u-icon>
+ <text class="f-26 c-ff" style="margin-left: 10rpx;">身份证信息识别</text>
+ </view>
+ </ocr-navigator>
+ <!-- #endif-->
</view>
<u-form-item class="form-item" labelWidth="100" :required="isRequired" :disabled="isDisabled"
label="场所负责人:" prop="principal">
@@ -83,6 +178,143 @@
<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>
+
+ <view class="item" v-if="isLegalSame != 1 && !currentId">
+
+ <view class="flex j-c-s-b a-i-c">
+ <view class="box-title" style="width:50%;">
+ <box-title title="法人信息"></box-title>
+ </view>
+ <!-- #ifdef MP-WEIXIN -->
+ <ocr-navigator @onSuccess="recognizeSuccess($event,'legal')" certificateType="idCard"
+ :opposite="false">
+ <view class="recognize-btn flex a-i-c">
+ <u-icon name="scan" color="#fff" size="24"></u-icon>
+ <text class="f-26 c-ff" style="margin-left: 10rpx;">身份证信息识别</text>
+ </view>
+ </ocr-navigator>
+ <!-- #endif-->
+ </view>
+
+
+ <u-form-item class="form-item" labelWidth="100" :required="isRequired" :disabled="isDisabled"
+ label="姓名:" prop="legalPerson">
+ <u--input border="none" v-model="form.placeExtEntity.legalPerson" placeholder="请输入">
+ </u--input>
+ </u-form-item>
+ <u-form-item class="form-item" labelWidth="100" :required="isRequired" :disabled="isDisabled"
+ label="身份证号:" prop="legalIdCard">
+ <u--input border="none" type="idcard" v-model="form.placeExtEntity.legalIdCard"
+ placeholder="请输入">
+ </u--input>
+ </u-form-item>
+ <u-form-item class="form-item" labelWidth="100" :required="isRequired" :disabled="isDisabled"
+ label="手机号:" prop="legalTel">
+ <u--input border="none" type="number" v-model="form.placeExtEntity.legalTel" placeholder="请输入">
+ </u--input>
+ </u-form-item>
+ </view>
+
+
+ <view class="item">
+ <view class="flex j-c-s-b a-i-c">
+ <view class="box-title" style="width:50%;">
+ <box-title title="房东信息"></box-title>
+ </view>
+ <!-- #ifdef MP-WEIXIN -->
+ <ocr-navigator v-if="!currentId" @onSuccess="recognizeSuccess($event)" certificateType="idCard"
+ :opposite="false">
+ <view class="recognize-btn flex a-i-c">
+ <u-icon name="scan" color="#fff" size="24"></u-icon>
+ <text class="f-26 c-ff" style="margin-left: 10rpx;">身份证信息识别</text>
+ </view>
+ </ocr-navigator>
+ <!--#endif-->
+ </view>
+ <u-form-item class="form-item" labelWidth="100" :required="isRequired" :disabled="isDisabled"
+ label="姓名:" prop="landlordName">
+ <u--input border="none" v-model="form.placeExtEntity.landlordName" placeholder="请输入">
+ </u--input>
+ </u-form-item>
+ <u-form-item class="form-item" labelWidth="100" :required="isRequired" :disabled="isDisabled"
+ label="身份证号:" prop="landlordIdCard">
+ <u--input border="none" type="idcard" v-model="form.placeExtEntity.landlordIdCard"
+ placeholder="请输入">
+ </u--input>
+ </u-form-item>
+ <u-form-item class="form-item" labelWidth="100" :required="isRequired" :disabled="isDisabled"
+ label="手机号:" prop="landlordPhone">
+ <u--input border="none" type="number" v-model="form.placeExtEntity.landlordPhone"
+ placeholder="请输入">
+ </u--input>
+ </u-form-item>
+ <u-form-item class="form-item" labelWidth="100" :required="isRequired" :disabled="isDisabled"
+ label="微信号:" prop="landlordWxAccount">
+ <u--input border="none" v-model="form.placeExtEntity.landlordWxAccount" placeholder="请输入">
+ </u--input>
+ </u-form-item>
+ </view>
+
+ <view class="item" v-if="form.label == 160102 || form.label == 160103">
+ <view class="flex j-c-s-b a-i-c">
+ <view class="box-title" style="width:50%;">
+ <box-title title="学校信息"></box-title>
+ </view>
+ </view>
+ <u-form-item class="form-item" labelWidth="100" :required="isRequired" :disabled="isDisabled"
+ label="学生人数:" prop="studentNumber">
+ <u--input border="none" type="number" v-model="form.placeExtEntity.studentNumber"
+ placeholder="请输入">
+ </u--input>
+ </u-form-item>
+ <u-form-item class="form-item" labelWidth="100" :required="isRequired" :disabled="isDisabled"
+ label="教职工人数:" prop="workersNumber">
+ <u--input border="none" type="number" v-model="form.placeExtEntity.workersNumber"
+ placeholder="请输入">
+ </u--input>
+ </u-form-item>
+ <u-form-item class="form-item" labelWidth="100" :required="isRequired" :disabled="isDisabled"
+ label="专职保安:" prop="securityNumber">
+ <u--input border="none" type="number" v-model="form.placeExtEntity.securityNumber"
+ placeholder="请输入">
+ </u--input>
+ </u-form-item>
+ <u-form-item class="form-item" labelWidth="100" :required="isRequired" :disabled="isDisabled"
+ label="专职门卫:" prop="guardNumber">
+ <u--input border="none" type="number" v-model="form.placeExtEntity.guardNumber"
+ placeholder="请输入">
+ </u--input>
+ </u-form-item>
+ <u-form-item class="form-item" labelWidth="100" :required="isRequired" :disabled="isDisabled"
+ label="专兼职保卫人员:" prop="temporarySecurityNumber">
+ <u--input border="none" type="number" v-model="form.placeExtEntity.temporarySecurityNumber"
+ placeholder="请输入">
+ </u--input>
+ </u-form-item>
+ <u-form-item class="form-item" labelWidth="100" :required="isRequired" :disabled="isDisabled"
+ label="走读/寄宿:" prop="dayStudentsNumber">
+ <u--input border="none" type="number" v-model="form.placeExtEntity.dayStudentsNumber"
+ placeholder="请输入">
+ </u--input>
+ </u-form-item>
+ <u-form-item class="form-item" labelWidth="100" :required="isRequired" :disabled="isDisabled"
+ label="住校生人数:" prop="residentialStudentsNumber">
+ <u--input border="none" type="number" v-model="form.placeExtEntity.residentialStudentsNumber"
+ placeholder="请输入">
+ </u--input>
+ </u-form-item>
+ <u-form-item class="form-item" labelWidth="100" :required="isRequired" :disabled="isDisabled"
+ label="宿舍管理人员:" prop="housemasterNumber">
+ <u--input border="none" type="number" v-model="form.placeExtEntity.housemasterNumber"
+ placeholder="请输入">
</u--input>
</u-form-item>
</view>
@@ -100,6 +332,40 @@
</view>
</u-form>
+
+ <view class="practitioner">
+ <view style="padding:20rpx 30rpx;">
+ <box-title title="从业人员信息"></box-title>
+ </view>
+ <view class="info" v-for="(item, index) in personNumArr" :key="index">
+ <view class="flex a-i-c j-c-s-b" style="padding:20rpx;">
+ <view class="flex j-c-s-b a-i-c">
+ <view class="title fw" style="text-align:center; mr-20">人员信息-#{{ index*1 + 1 }}</view>
+ <!-- #ifdef MP-WEIXIN -->
+ <ocr-navigator v-if="!currentId" @onSuccess="recognizePersonSuccess($event,index)"
+ certificateType="idCard" :opposite="false">
+ <view class="recognize-btn flex a-i-c">
+ <u-icon name="scan" color="#fff" size="24"></u-icon>
+ <text class="f-26 c-ff" style="margin-left: 10rpx;">身份证信息识别</text>
+ </view>
+ </ocr-navigator>
+ <!-- #endif -->
+ </view>
+
+
+ <view>
+ <u-icon name="trash-fill" color="#ff0000" size="20" @click="deletePerson(index)" />
+ </view>
+ </view>
+ <formItem ref="formItemRef"></formItem>
+ </view>
+ <view class="" style="padding:20rpx 0;" v-if="personNum == 0 && currentId">
+ 未完善
+ </view>
+ <view class="add-person" style="padding:20rpx 30rpx;" v-if="!currentId">
+ <u-button type="success" plain @click="addPerson">再加一人</u-button>
+ </view>
+ </view>
@@ -166,21 +432,39 @@
<footer-btn @click="submit" v-if="!currentId" />
- <u-picker :show="showPicker" :defaultIndex="defaultIndex" ref="uPicker" keyName="name" :loading="pickerLoading"
- :columns="pickColumns" @change="changeHandler" @confirm="confirmPicker"
- @cancel="showPicker = false"></u-picker>
+ <u-picker :show="showNineTypePicker" :defaultIndex="nineTypeIndex" ref="uPicker" keyName="name"
+ :loading="pickerLoading" :columns="[nineTypeList]" @confirm="confirmNineTypePicker"
+ @cancel="showNineTypePicker = false"></u-picker>
+ <u-picker :show="showFrontTypePicker" :defaultIndex="frontTypeIndex" ref="uPicker" keyName="name"
+ :loading="pickerLoading" :columns="[frontTypeList]" @confirm="confirmFrontTypePicker"
+ @cancel="showFrontTypePicker = false"></u-picker>
<u-picker :show="isShowCatePicker" :defaultIndex="categoryIndex" ref="catePicker" keyName="categoryName"
:columns="categoryList" @confirm="confirmCategory" @change="changeCategory"
@cancel="isShowCatePicker = false"></u-picker>
+ <u-picker :defaultIndex="nationTypeListIndex" :closeOnClickOverlay="true" :show="showNationPicker"
+ :columns="[nationTypeList]" @close="showNationPicker = false" @cancel="showNationPicker = false"
+ keyName="name" @confirm="confirmNation"></u-picker>
+
+ <u-picker :defaultIndex="genderIndex" :closeOnClickOverlay="true" :show="showGenderPicker" :columns="[gender]"
+ @close="showGenderPicker = false" @cancel="showGenderPicker = false" keyName="name"
+ @confirm="confirmGender"></u-picker>
+
+
+ <u-picker :defaultIndex="notSwindleTypeIndex" :closeOnClickOverlay="true" :show="showNotSwindleTypePicker"
+ :columns="[notSwindleTypeList]" @close="showNotSwindleTypePicker = false"
+ @cancel="showNotSwindleTypePicker = false" keyName="name" @confirm="confirmNotSwindleType"></u-picker>
+
+
+ <cate-selector ref="selector" @comfirm="comfirmNineType" />
</view>
</template>
<script>
- import uploadMixin from "@/mixin/uploadMixin";
+ import uploadMixin from "@/mixin/uploadMixinPlace";
import lineItem from "@/subPackage/workbench/components/lineItem.vue"
import {
getLabelCate
@@ -190,10 +474,8 @@
getDoorplateAddressList
} from "@/api/doorplateAddress/doorplateAddress";
import {
+ add,
getPlaceDetail
- } from '@/api/place/place.js'
- import {
- add
} from "@/api/place/place";
import {
format
@@ -202,11 +484,25 @@
import {
minioBaseUrl
} from "../../../common/setting";
+ import {
+ bizDictionary,
+ bizDictionaryTree
+ } from '@/api/system/dict.js'
+
+ import cateSelector from "../components/cateSelector.vue"
+
+ import {
+ getQrCodeDetail
+ } from "@/api/system/index"
+
+ import formItem from '../components/formItem.vue'
export default {
mixins: [uploadMixin],
components: {
lineItem,
- boxTitle
+ boxTitle,
+ cateSelector,
+ formItem
},
data() {
return {
@@ -217,9 +513,7 @@
pickerLoading: false,
pickColumns: [],
defaultIndex: [0, 0, 0, 0, 0],
-
selectValue: [],
-
form: {
// buildingCode: "",
images: [],
@@ -229,9 +523,35 @@
placeName: "",
principal: '',
principalPhone: '',
+ principalIdCard: '',
lat: '',
lng: '',
- location: ''
+ location: '',
+ isNine: "",
+ isFront: "",
+ frontType: "",
+ nineType: "",
+ threeFireProtection: "",
+ noExplosionCategory: "",
+ placeExtEntity: {
+ landlordName: "",
+ landlordIdCard: "",
+ landlordPhone: "",
+ landlordWxAccount: "",
+ legalPerson: "",
+ legalTel: "",
+ legalIdCard: "",
+ placeId: "",
+
+ studentNumber: "",
+ workersNumber: "",
+ securityNumber: "",
+ guardNumber: "",
+ temporarySecurityNumber: "",
+ dayStudentsNumber: "",
+ residentialStudentsNumber: "",
+ housemasterNumber: ""
+ }
},
rules: {
// 'buildingCode': {
@@ -240,26 +560,32 @@
// message: '请选择楼栋',
// trigger: ['blur', 'change']
// },
- 'placeName': {
+ 'form.isNine': {
+ type: 'string',
+ required: true,
+ message: '是否九小场所',
+ trigger: ['blur', 'change']
+ },
+ placeName: [{
type: 'string',
required: true,
message: '请输入场所名称',
trigger: ['blur', 'change']
- },
- 'label': {
+ }],
+ label: [{
type: 'string',
required: true,
message: '请选择标签',
trigger: ['blur', 'change'],
- },
- 'username': {
+ }],
+ 'form.username': {
type: 'string',
required: true,
message: '请输入场所负责人',
trigger: ['blur', 'change'],
},
- 'principalPhone': [{
- required: false,
+ 'form.principalPhone': [{
+ required: true,
message: '请输入手机号',
trigger: ['blur', 'change'],
},
@@ -271,7 +597,22 @@
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']
+ }
],
},
@@ -315,16 +656,16 @@
// name: 'username',
// value: "未完善",
// },
- {
- label: "采集人",
- name: 'createUserName',
- value: "未完善"
- },
- {
- label: "采集时间",
- name: 'createTime',
- value: "未完善"
- },
+ // {
+ // label: "采集人",
+ // name: 'createUserName',
+ // value: "未完善"
+ // },
+ // {
+ // label: "采集时间",
+ // name: 'createTime',
+ // value: "未完善"
+ // },
// {
// label: "历史事件",
// value: "未完善",
@@ -400,16 +741,61 @@
firstId: "",
secondId: "",
categoryValue: "",
- houseCode: ""
+ houseCode: "",
+ statusList: [{
+ name: "是",
+ id: 1
+ },
+ {
+ name: "否",
+ id: 2
+ }
+ ],
+ nineTypeList: [], //九小类型
+ frontTypeList: [], //阵地
+ nineTypeIndex: [0],
+ frontTypeIndex: [0],
+ showNineTypePicker: false,
+ showFrontTypePicker: false,
+ nineTypeValue: "",
+ frontTypeValue: "",
+ isView: false,
+ source: "",
+ nationTypeList: [], //民族
+ nationTypeIndex: [0],
+ nationValue: "",
+ gender: [{ //性别
+ value: 1,
+ name: '男',
+ },
+ {
+ value: 0,
+ name: '女',
+ }
+ ],
+ genderIndex: [0],
+ genderValue: "",
+ showNationPicker: false,
+ showGenderPicker: false,
+ personNum: 0,
+ personNumArr: [],
+ isLegalSame: 1, //法人信息是否与负责人一致 1是 2否
+ notSwindleTypeList: [],
+ notSwindleIndex: [0],
+ notSwindleValue: "",
+ showNotSwindleTypePicker: false
}
},
- created() {
- this.buildColumn()
- },
+
options: {
styleIsolation: 'shared', // 解除样式隔离
},
- onLoad(option) {
+ async onLoad(option) {
+ console.log("option===>", option);
+ await this.getCategory();
+ await this.getAllBizDict();
+ // this.getNineTypeList();
+
const {
type
} = option
@@ -420,10 +806,12 @@
this.currentId = option.id;
}
if (option.houseCode) {
+ console.log(111)
this.houseCode = option.houseCode
this.form.houseCode = option.houseCode
}
if (option.id || option.houseCode) {
+ this.isView = true;
this.getBuildingDetail()
}
if (!!type || type != void 0) {
@@ -431,7 +819,7 @@
title: '详情'
})
}
- this.getCategory();
+ this.getCurrentLocation();
},
watch: {
@@ -444,62 +832,49 @@
},
immediate: true
}
-
- // secondId:{
- // handler(newVal,oldVal){
- // this.getCategory(3,this.secondId);
- // },
- // immediate:true
- // }
-
+ },
+ onReady() {
+ this.$refs.form.setRules(this.rules)
},
-
methods: {
- // getBuildingDetail(params = {}) {
- // getDoorplateAddressDetail(Object.assign(params, {
- // stdId: this.stdId
- // })).then(res => {
- // let data = res.data
- // this.form.buildingCode = data.buildingCode
- // let buildingNameArr = [data.townStreetName, data.neiName, data.streetRuName, data.aoiName,
- // data.buildingName
- // ]
- // let arr = buildingNameArr.filter(e => {
- // return e != null || e != ''
- // })
+ async getAllBizDict() {
+ // 获取九小场所类型
+ // await this.getBizDict('nineType', this.nineTypeList)
+ // 获取阵地
+ await this.getBizDict('frontType', this.frontTypeList)
+ // 获取民族
+ await this.getBizDict('nationType', this.nationTypeList);
+ //反诈类别
+ await this.getBizDict('noExplosionCategory', this.notSwindleTypeList);
+ },
- // // 赋值
- // // this.form.placeName = data['placeName']
- // Object.keys(this.form).forEach(key => {
- // if (!data[key]) {
- // this.form[key] = data.place[key]
- // } else {
- // this.form[key] = data[key]
- // }
- // })
+ // 获取业务字典
+ async getBizDict(code, list) {
+ const param = {
+ code: code
+ }
+ const res = await bizDictionary(param)
+ res.data.forEach(e => {
+ list.push({
+ name: e.dictValue,
+ value: Number(e.dictKey)
+ })
+ })
+ },
- // this.form.building = arr.join("")
+ getNineTypeList() {
+ bizDictionaryTree({
+ code: "nineType"
+ }).then(res => {
+ console.log(res.data);
+ })
+ },
- // Object.keys(this.comprehensiveData).forEach(key => {
- // this.comprehensiveData[key].forEach(item => {
- // if (!data[item.name]) {
- // item.value = data.place[item.name] || '未完善'
- // } else {
- // item.value = data[item.name] || '未完善'
- // }
- // })
- // this.publicData[key].forEach(item => {
- // if (!data[item.name]) {
- // item.value = data.place[item.name] || '未完善'
- // } else {
- // item.value = data[item.name] || '未完善'
- // }
- // })
- // })
- // })
- // },
+ showNineTypeSelector() {
+ this.$refs.selector.open();
+ },
navTo(type) {
if (type == 1) {
@@ -564,14 +939,8 @@
// picker为选择器this实例,变化第二列对应的选项
// picker.setColumnValues(1, this.categoryList[index])
this.firstId = e.value[columnIndex].categoryNo;
- // this.secondId = this.categoryList[1][0].categoryNo;
- // this.getCategory(2,this.firstId);
}
- // else if ( columnIndex === 1){
- // picker.setColumnValues(2, this.categoryList[index])
- // this.secondId = e.value[columnIndex].categoryNo;
- // this.getCategory(3,this.secondId)
- // }
+
},
getBuildingDetail(params = {}) {
@@ -590,6 +959,9 @@
id: this.currentId
}
}
+ uni.showLoading({
+ title: "加载中..."
+ })
getPlaceDetail({
...params,
...idorCodeParams
@@ -597,6 +969,7 @@
code,
data
}) => {
+ uni.hideLoading();
if (code !== 200) {
uni.showToast({
title: "数据加载失败",
@@ -604,7 +977,11 @@
})
return
}
- this.houseCode = data.houseCode;
+ const placePractitioner = data?.placePractitioner || []
+ this.personNum = placePractitioner.length;
+ this.personNumArr = placePractitioner;
+ this.source = data.source;
+ // this.houseCode = data.houseCode;
const dpaEntity = data?.doorplateAddressEntity || {}
const gridEntity = data?.grid || {}
// this.form.buildingCode = dpaEntity?.buildingCode || ''
@@ -620,9 +997,33 @@
})
this.form.placeName = data['placeName'] || ''
Object.keys(this.form).forEach(key => {
- if (!data[key]) {
+ if (!data[key] && key != "placeExtEntity") {
// this.form[key] = dpaEntity[key] || '未完善'
this.form[key] = dpaEntity[key]
+ } else if (key == "placeExtEntity") {
+ if (data.placeExtEntity) {
+ this.form.placeExtEntity = data.placeExtEntity;
+ } else {
+ this.form.placeExtEntity = {
+ landlordName: "",
+ landlordIdCard: "",
+ landlordPhone: "",
+ landlordWxAccount: "",
+ legalPerson: "",
+ legalTel: "",
+ legalIdCard: "",
+ placeId: "",
+
+ studentNumber: "",
+ workersNumber: "",
+ securityNumber: "",
+ guardNumber: "",
+ temporarySecurityNumber: "",
+ dayStudentsNumber: "",
+ residentialStudentsNumber: "",
+ housemasterNumber: ""
+ }
+ }
} else {
// this.form[key] = data[key] || '未完善'
this.form[key] = data[key]
@@ -636,9 +1037,79 @@
this.form.images = []
}
}
- })
- this.form.jwd = `${Number(data.lng).toFixed(6)},${Number(data.lat).toFixed(6)}`
+ if (key == "isNine") {
+ // let {
+ // index,
+ // name
+ // } = this.$getIndex(this.nineTypeList, data.nineType, "value", "name");
+ // this.nineTypeIndex = index;
+ // this.nineTypeValue = name;
+ if (!data.isNine) {
+ this.form.isNine = 2;
+ } else {
+ if (data.isNine == 1) {
+ this.$refs.selector.showDefault(data.nineType)
+ setTimeout(() => {
+ if (this.$refs.selector.selectedItem.childrenId) {
+ this.nineTypeValue = this.$refs.selector.selectedItem
+ .childrenName
+ } else {
+ this.nineTypeValue = this.$refs.selector.selectedItem
+ .parentName;
+ }
+ }, 200)
+ }
+ }
+ }
+
+ if (key == "isFront") {
+ if (!data.isFront) {
+ this.form.isFront = 2;
+ } else {
+ if (data.isFront == 1) {
+ let {
+ index,
+ name
+ } = this.$getIndex(this.frontTypeList, data.frontType, "value",
+ "name");
+ this.frontTypeIndex = index;
+ this.frontTypeValue = name;
+ }
+ }
+ }
+
+ if (key == "legalGender" && data.legalGender) {
+ let {
+ index,
+ name
+ } = this.$getIndex(this.gender, data.legalGender, "value",
+ "name");
+ this.genderIndex = index;
+ this.genderValue = name;
+ }
+
+ if (key == "ethnicity" && data.ethnicity) {
+ let {
+ index,
+ name
+ } = this.$getIndex(this.nationTypeList, data.ethnicity, "value",
+ "name");
+ this.nationTypeIndex = index;
+ this.nationValue = name;
+ }
+
+ if (key == "noExplosionCategory" && data.noExplosionCategory) {
+ let {
+ index,
+ name
+ } = this.$getIndex(this.notSwindleTypeList, data.noExplosionCategory, "value",
+ "name")
+ this.notSwindleIndex = [index];
+ this.notSwindleValue = name;
+ }
+ })
+ 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 = [];
@@ -650,13 +1121,13 @@
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 => {
@@ -681,77 +1152,155 @@
})
})
+ placePractitioner.forEach((item, index) => {
+ this.$nextTick(() => {
+ if (item.ethnicity) {
+ let obj = this.$getIndex(this.nationTypeList, item.ethnicity,
+ "value", "name")
+ this.$refs.formItemRef[index].nationValue = obj.name;
+ this.$refs.formItemRef[index].nationTypeIndex = obj.index;
+ }
+
+ if (typeof(item.gender) == 'number') {
+ let obj = this.$getIndex(this.$refs.formItemRef[index]
+ .gender, item.gender, "value", "name")
+ this.$refs.formItemRef[index].genderValue = obj.name;
+ this.$refs.formItemRef[index].genderIndex = obj.index;
+ }
+ if (item.employerImg == "" || item.employerImg == null) {
+ item.employerImg = [];
+ } else {
+ item.employerImg = this.$setImageUrl(item.employerImg, 2)
+ }
+
+ this.$refs.formItemRef[index].form = item
+ })
+ })
})
+ },
+
+ //选择九小场所类型
+ comfirmNineType(val) {
+ if (val.childrenId) {
+ this.form.nineType = val.childrenId;
+ this.nineTypeValue = val.childrenName;
+ } else {
+ this.form.nineType = val.parentId;
+ this.nineTypeValue = val.parentName;
+ }
},
//表单提交
submit() {
- const that = this
- this.$refs.form.validate().then(valid => {
- if (valid) {
- if (this.form?.images?.length > 0) {
- let urls = []
- this.form.images.forEach(e => {
- urls.push(e.name)
- })
- this.form.imageUrls = urls.join(",")
+
+ if (this.houseCode && !this.form.houseCode) {
+ this.form.houseCode = this.houseCode;
+ }
+
+ if (!this.form.placeName) {
+ this.$showTips("请输入场所名称")
+ return
+ }
+
+ if (!this.form.label) {
+ this.$showTips("请选择标签")
+ return
+ }
+
+
+ // this.$refs.form.validate().then(valid => {
+ // if (valid) {
+ if (this.form?.images?.length > 0) {
+ let urls = []
+ this.form.images.forEach(e => {
+ urls.push(e.name)
+ })
+ this.form.imageUrls = urls.join(",")
+ } else {
+ this.form.imageUrls = ""
+ }
+
+ this.form.roleName = uni.getStorageSync("activeRole").roleName;
+ if (this.form.isNine == 2 && this.form.nineType) {
+ this.form.nineType = "";
+ }
+ if (this.form.isFront == 2 && this.form.frontType) {
+ this.form.frontType = "";
+ }
+
+ if (this.form.isNine == 1 && !this.form.nineType) {
+ this.$showTips("请选择九小场所类型")
+ return
+ }
+
+ if (this.form.isFront == 1 && !this.form.frontType) {
+ this.$showTips("请选择阵地类型")
+ return
+ }
+
+ this.form.lng = Number(this.form.lng).toFixed(8)
+ this.form.lat = Number(this.form.lat).toFixed(8)
+ delete this.form.images;
+ if (this.personNum > 0) {
+ const placePractitioner = []
+ this.$refs.formItemRef.forEach(item => {
+ item.form.placeId = this.form.placeId
+ item.form.employerImg = this.$formattingUrls(item.form.employerImg);
+ placePractitioner.push(item.form)
+ })
+ this.form.placePractitioner = placePractitioner
+ }
+
+ if (this.isLegalSame == 1) {
+ this.form.placeExtEntity.legalPerson = this.form.principal;
+ this.form.placeExtEntity.legalTel = this.form.principalPhone;
+ this.form.placeExtEntity.legalIdCard = this.form.principalIdCard;
+ }
+
+
+
+ add(this.form).then(res => {
+ uni.showToast({
+ icon: 'success',
+ title: '提交成功',
+ success() {
+ setTimeout(() => {
+ uni.$emit("refresh")
+ uni.navigateBack()
+ // that.$u.func.globalNavigator(
+ // "/pages/home/index", "switchTab")
+ }, 300)
}
-
- this.form.roleName = uni.getStorageSync("activeRole").roleName;
- add(this.form).then(res => {
- uni.showToast({
- icon: 'success',
- title: '提交成功',
- success() {
- setTimeout(() => {
- that.$u.func.globalNavigator(
- "/pages/home/index", "switchTab")
- }, 1000)
- }
- })
- })
- }
+ })
})
+ // }
+ // })
},
- async buildColumn() {
- //设置街道
- const townStreet = await this.getDoorplateAddressList(null, "townStreet")
- this.setColumn(townStreet, 0)
- //设置社区
- const nei = await this.getDoorplateAddressList(townStreet[0]?.code, "nei")
- this.setColumn(nei, 1)
- //设置路
- const streetRu = await this.getDoorplateAddressList(nei[0]?.code, "streetRu")
- this.setColumn(streetRu, 2)
- //设置地区
- const district = await this.getDoorplateAddressList(streetRu[0]?.code, "district")
- this.setColumn(district, 3)
- //设置楼栋
- const building = await this.getDoorplateAddressList(district[0]?.code, "building")
- this.setColumn(building, 4)
- },
-
- setColumn(data, index) {
- this.$set(this.pickColumns, index, data)
- },
-
- getLocation() {
- const that = this
+ //获取当前位置信息
+ getCurrentLocation() {
uni.getLocation({
- type: 'wgs84', // 坐标系类型
- success: function(res) {
- var latitude = res.latitude; // 维度
- var longitude = res.longitude; // 经度
-
- that.form.lng = longitude
- that.form.lat = latitude
-
- that.form.jwd = longitude + "," + latitude
+ type: 'gcj02', // 坐标系类型
+ success: (res) => {
+ // var latitude = res.latitude; // 维度
+ // var longitude = res.longitude; // 经度
+ // this.form.lng = longitude
+ // this.form.lat = latitude
+ // this.form.jwd =
+ // `${Number(res.longitude).toFixed(6)},${Number(res.latitude).toFixed(6)}`
},
- fail: function(res) {
- console.log('获取定位失败:' + res.errMsg);
+ complete: (res) => {
+ if (res.latitude) {
+ this.$set(this.form, "x", res.longitude)
+ this.$set(this.form, "y", res.latitude)
+ } else {
+ uni.showModal({
+ title: "提示!",
+ content: `获取定位信息失败 ${res.errMsg}`,
+ showCancel: false
+ })
+ }
}
});
},
@@ -786,55 +1335,42 @@
this.showPicker = false
},
- async changeHandler(e) {
- const {
- columnIndex,
- index,
- // 微信小程序无法将picker实例传出来,只能通过ref操作
- picker = this.$refs.uPicker
- } = e
- let item = e.values[columnIndex][index]
- //街道
- if (columnIndex === 0) {
- //获取社区列表
- const nei = await this.getDoorplateAddressList(item.code, "nei")
- picker.setColumnValues(1, nei)
+ confirmNineTypePicker(e) {
+ this.nineTypeIndex = e.indexs;
+ this.nineTypeValue = e.value[0].name;
+ this.form.nineType = e.value[0].value;
+ this.showNineTypePicker = false;
+ },
- const streetRu = await this.getDoorplateAddressList(nei[0].code, "streetRu")
- picker.setColumnValues(2, streetRu)
+ confirmFrontTypePicker(e) {
+ this.frontTypeIndex = e.indexs;
+ this.frontTypeValue = e.value[0].name;
+ this.form.frontType = e.value[0].value;
+ this.showFrontTypePicker = false;
+ },
- const district = await this.getDoorplateAddressList(streetRu[0].code, "district")
- picker.setColumnValues(3, district)
+ //选择民族
+ confirmNation(e) {
+ this.nationIndex = e.indexs;
+ this.nationValue = e.value[0].name;
+ this.form.ethnicity = e.value[0].value;
+ this.showNationPicker = false;
+ },
- const building = await this.getDoorplateAddressList(district[0].code, "building")
- picker.setColumnValues(4, building)
- }
+ //选择性别
+ confirmGender(e) {
+ this.genderIndex = e.indexs;
+ this.genderValue = e.value[0].name;
+ this.form.legalGender = e.value[0].value;
+ this.showGenderPicker = false;
+ },
- if (columnIndex === 1) {
- const streetRu = await this.getDoorplateAddressList(item.code, "streetRu")
- picker.setColumnValues(2, streetRu)
-
- const district = await this.getDoorplateAddressList(streetRu[0].code, "district")
- picker.setColumnValues(3, district)
-
- const building = await this.getDoorplateAddressList(district[0].code, "building")
- picker.setColumnValues(4, building)
- }
-
- if (columnIndex === 2) {
-
- const district = await this.getDoorplateAddressList(item.code, "district")
- picker.setColumnValues(3, district)
-
- const building = await this.getDoorplateAddressList(district[0].code, "building")
- picker.setColumnValues(4, building)
- }
-
- if (columnIndex === 3) {
- const building = await this.getDoorplateAddressList(item.code, "building")
- picker.setColumnValues(4, building)
- }
-
+ //选择无诈类别
+ confirmNotSwindleType(e) {
+ this.notSwindleIndex = e.indexs;
+ this.notSwindleValue = e.value[0].name;
+ this.form.noExplosionCategory = e.value[0].value;
+ this.showNotSwindleTypePicker = false;
},
//弹出层打开
@@ -845,39 +1381,136 @@
},
-
-
- labelClick(item) {
-
- //判断label是否已在
- const label = this.showLabelList.find(e => e.id == item.id)
- if (label) {
- //在,去掉
- this.showLabelList = this.showLabelList.filter(e => e.id != label.id)
- this.activeIds = this.activeIds.filter(e => e != label.id)
- } else {
- //不在,添加
- item.isClose = false
- this.showLabelList.push(item)
- this.activeIds.push(item.id)
- }
-
- this.showLabelList.sort((a, b) => a.sort - b.sort)
-
- },
- delTag() {
- // label.isClose = true
- // this.showLabelList = this.showLabelList.filter(e => e.id != label.id)
- // this.activeIds = this.activeIds.filter(e => e != label.id)
- this.categoryIndex = [];
- this.categoryValue = "";
-
- },
imgPreview(value) {
uni.previewImage({
urls: minioBaseUrl + [value],
})
},
+
+ onScan() {
+ uni.scanCode({
+ success: (res) => {
+ let obj = this.getUrlParams(res.result);
+ this.getHouseType(obj.stdId);
+ }
+ })
+ },
+
+ getUrlParams(url) {
+ let urlStr = url.split('?')[1]
+ let obj = {};
+ let paramsArr = urlStr.split('&')
+ for (let i = 0, len = paramsArr.length; i < len; i++) {
+ let arr = paramsArr[i].split('=')
+ obj[arr[0]] = arr[1];
+ }
+ return obj
+ },
+
+ getHouseType(code) {
+ getQrCodeDetail({
+ roleName: uni.getStorageSync("activeRole").roleName,
+ addressCode: code
+ }).then(res => {
+ let {
+ isJur,
+ doorplateType,
+ addressLevel
+ } = res.data;
+ if (isJur == 1) {
+ if (doorplateType == "中门牌" || doorplateType == "小门牌") {
+ if (res.data.addressType) {
+ this.addressType = res.data.addressType
+ }
+ this.houseCode = code;
+ this.form.houseCode = code;
+ this.isView = true;
+ this.getBuildingDetail()
+ }
+ } else {
+ uni.showModal({
+ title: "提示!",
+ content: "该区域不是您管辖范围",
+ showCancel: false
+ })
+ }
+
+ })
+ },
+
+ addPerson() {
+ this.personNum++
+ this.personNumArr.push(1)
+ },
+
+ deletePerson(index) {
+ this.personNum--;
+ this.personNumArr.splice(index, 1)
+ },
+
+ //识别成功
+ recognizeSuccess(e, key) {
+ let {
+ detail: {
+ name,
+ id,
+ address,
+ gender,
+ nationality
+ }
+ } = e;
+
+ if (key == "principal") { //负责人
+ this.form.principal = name.text;
+ this.form.principalIdCard = id.text;
+ } else if (key == "legal") { //法人
+ this.form.placeExtEntity.legalPerson = name.text;
+ this.form.placeExtEntity.legalIdCard = id.text;
+ } else { //房东
+ this.form.placeExtEntity.landlordName = name.text;
+ this.form.placeExtEntity.landlordIdCard = id.text;
+ }
+ },
+
+ //识别从业人员身份证信息
+ recognizePersonSuccess(e, index) {
+ let {
+ detail: {
+ name,
+ id,
+ address,
+ gender,
+ nationality
+ }
+ } = e;
+
+ this.$refs.formItemRef[index].form.name = name.text; //姓名
+ this.$refs.formItemRef[index].form.idCard = id.text; //身份证号
+ this.$refs.formItemRef[index].genderValue = gender.text; //性别
+ this.$refs.formItemRef[index].nationValue = `${nationality.text}族`; //民族
+ this.$refs.formItemRef[index].form.gender = this.getValue(this.gender, gender.text).value;
+ this.$refs.formItemRef[index].form.ethnicity = this.getValue(this.nationTypeList, `${nationality.text}族`)
+ .value;
+ this.$refs.formItemRef[index].genderIndex = [this.getValue(this.gender, gender.text).index];
+ this.$refs.formItemRef[index].nationTypeIndex = [this.getValue(this.nationTypeList, `${nationality.text}族`)
+ .index
+ ];
+
+
+ },
+
+
+ getValue(arr, name) {
+ for (let i = 0, ii = arr.length; i < ii; i++) {
+ if (arr[i].name == name) {
+ return {
+ index: i,
+ value: arr[i].value
+ }
+ }
+ }
+ }
+
}
}
</script>
@@ -1014,4 +1647,21 @@
background-color: #fff;
text-align: center;
}
+
+ .top {
+ padding: 20rpx !important;
+ }
+
+ .practitioner {
+ background-color: #fff;
+ border-radius: 8rpx;
+ margin-top: 20rpx;
+ }
+
+ .recognize-btn {
+ padding: 12rpx;
+ border-radius: 6rpx;
+ background-color: #3c9cff;
+ margin-left: 30rpx;
+ }
</style>
\ No newline at end of file
--
Gitblit v1.9.3