|
|
|
@ -1,18 +1,9 @@ |
|
|
|
<template> |
|
|
|
<div class="address_edit"> |
|
|
|
<!-- 导航栏 --> |
|
|
|
<!-- <div class="header_body"> |
|
|
|
<header-nav :slefBack="true" @goBack="goBack" :titelText="`行政执法预约`"></header-nav> |
|
|
|
</div>--> |
|
|
|
<!-- 中间 --> |
|
|
|
<div class="warp_body"> |
|
|
|
<!-- <van-cell-group>--> |
|
|
|
<van-form @failed="onFailed" @submit="submit"> |
|
|
|
<van-cell-group> |
|
|
|
<!-- <van-field--> |
|
|
|
<!-- v-model="submitData.lawEnforcementCode"--> |
|
|
|
<!-- label="登记编号"--> |
|
|
|
<!-- />--> |
|
|
|
<van-field |
|
|
|
v-model="submitData.enterpriseName" |
|
|
|
label="企业名称" |
|
|
|
@ -51,6 +42,15 @@ |
|
|
|
@click="data.showTimePicker = true" |
|
|
|
/> |
|
|
|
<van-field |
|
|
|
v-model="data.checkHour" |
|
|
|
placeholder="开始 - 结束时间" |
|
|
|
required |
|
|
|
readonly |
|
|
|
clickable |
|
|
|
:rules="[{ required: true, message: '必填项' }]" |
|
|
|
@click="data.hourPicker = true" |
|
|
|
/> |
|
|
|
<!-- <van-field |
|
|
|
v-model="data.checkHourStart" |
|
|
|
required |
|
|
|
label="" |
|
|
|
@ -67,24 +67,9 @@ |
|
|
|
readonly |
|
|
|
:rules="[{ required: true, message: '必填项' }]" |
|
|
|
@click="data.hourEndPicker = true" |
|
|
|
/> |
|
|
|
/> --> |
|
|
|
</div> |
|
|
|
|
|
|
|
<!-- <template #div> |
|
|
|
<div class="plan-attach"> |
|
|
|
<div class="plan-time"> |
|
|
|
<van-field |
|
|
|
v-model="data.fieldValue" |
|
|
|
is-link |
|
|
|
placeholder="选择时段" |
|
|
|
@click="data.dateShowPicker = true" |
|
|
|
/> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
</template>--> |
|
|
|
|
|
|
|
|
|
|
|
<van-field |
|
|
|
v-model="submitData.checkItemText" |
|
|
|
label="执法事项" |
|
|
|
@ -107,31 +92,6 @@ |
|
|
|
placeholder="请输入执法要求" |
|
|
|
show-word-limit |
|
|
|
/> |
|
|
|
|
|
|
|
<!-- <van-field--> |
|
|
|
<!-- v-model="data.checkItemText"--> |
|
|
|
<!-- required--> |
|
|
|
<!-- readonly--> |
|
|
|
<!-- label="执法事项"--> |
|
|
|
<!-- :rules="[{ required: true, message: '必填项' }]"--> |
|
|
|
<!-- @click="data.showItem = true"--> |
|
|
|
<!-- type="textarea"--> |
|
|
|
<!-- rows="1"--> |
|
|
|
<!-- autosize--> |
|
|
|
<!-- />--> |
|
|
|
<!-- <van-field v-model="submitData.checkItem" v-show="false"/>--> |
|
|
|
<!-- <van-field--> |
|
|
|
<!-- v-model="data.checkRequireText"--> |
|
|
|
<!-- required--> |
|
|
|
<!-- readonly--> |
|
|
|
<!-- label="执法要求"--> |
|
|
|
<!-- :rules="[{ required: true, message: '必填项' }]"--> |
|
|
|
<!-- @click="data.showGA = true"--> |
|
|
|
<!-- type="textarea"--> |
|
|
|
<!-- rows="1"--> |
|
|
|
<!-- autosize--> |
|
|
|
<!-- />--> |
|
|
|
<!-- <van-field v-model="submitData.checkRequire" v-show="false"/>--> |
|
|
|
<van-field |
|
|
|
v-model="submitData.bureauDeptName" |
|
|
|
readonly |
|
|
|
@ -160,90 +120,29 @@ |
|
|
|
@click-input="showPopup(index)" |
|
|
|
/> |
|
|
|
</div> |
|
|
|
<!-- <div class="addbtn" @click.stop="addLawCer"><van-icon name="add-o" /></div> --> |
|
|
|
</div> |
|
|
|
<!-- <div v-for="(item, index) in data.lawCer" :key="index"> |
|
|
|
<div class="item-delete" v-if="index>0" @click.stop="cancelUser(index)"><label>执法人员 {{index+1}}</label> <a>删除</a></div> |
|
|
|
<van-field |
|
|
|
v-model="item.show" |
|
|
|
label=" " |
|
|
|
readonly |
|
|
|
required |
|
|
|
:rules="[{ required: true, message: '必填项' }]" |
|
|
|
placeholder="请选择" |
|
|
|
is-link |
|
|
|
@click="showPopup(index)" |
|
|
|
/> |
|
|
|
</div> |
|
|
|
<div class="addbtn" @click.stop="addLawCer"><van-icon name="add-o" /></div>--> |
|
|
|
<!-- <van-field--> |
|
|
|
<!-- v-model="submitData.lawEnforcerTextTwo"--> |
|
|
|
<!-- readonly--> |
|
|
|
<!-- label="执法人员"--> |
|
|
|
<!-- right-icon="add-o"--> |
|
|
|
<!-- @click="showPopup"--> |
|
|
|
<!-- />--> |
|
|
|
<!-- <van-field |
|
|
|
v-model="submitData.remark" |
|
|
|
label="备注" |
|
|
|
rows="2" |
|
|
|
autosize |
|
|
|
type="textarea" |
|
|
|
maxlength="100" |
|
|
|
placeholder="请输入备注" |
|
|
|
show-word-limit |
|
|
|
/>--> |
|
|
|
<!-- <van-divider class="divdsty" />--> |
|
|
|
<!--应客户要求暂时隐藏”联合执法“功能--> |
|
|
|
<!-- <van-cell center title="开启联合执法"> |
|
|
|
<template #right-icon> |
|
|
|
<van-switch v-model="data.checked" @click="!data.checked"/> |
|
|
|
<van-switch v-model="data.checked" @click="checkUnite"/> |
|
|
|
</template> |
|
|
|
</van-cell> --> |
|
|
|
<!-- <van-field--> |
|
|
|
<!-- v-if="data.checked"--> |
|
|
|
<!-- v-model="submitData.deptTexts"--> |
|
|
|
<!-- label="执法单位"--> |
|
|
|
<!-- rows="2"--> |
|
|
|
<!-- autosize--> |
|
|
|
<!-- type="textarea"--> |
|
|
|
<!-- placeholder="请选择"--> |
|
|
|
<!-- is-link--> |
|
|
|
<!-- show-word-limit--> |
|
|
|
<!-- readonly--> |
|
|
|
<!-- @click="data.deptChecked=true"--> |
|
|
|
<!-- />--> |
|
|
|
<div class="add-inspect" v-if="data.checked"> |
|
|
|
<!-- <p v-if="submitData.userObjs.length > 0"><label>联合执法部门+人员</label></p> --> |
|
|
|
<div class="add-inspect-item" v-for="(item, index) in submitData.userObjs" :key="index"> |
|
|
|
<p> |
|
|
|
<span class="add-name">{{nameCorrect(item.userName)}}</span> |
|
|
|
<span class="add-law">{{item.lawCertificateNum}}</span> |
|
|
|
</p> |
|
|
|
<span class="add-dept">{{item.zzDisplayPath}}</span> |
|
|
|
<van-icon class="remove-v" name="cross" @click.stop="removeDeptAndUser(index)" /> |
|
|
|
</div> |
|
|
|
<div class="addbtn" @click.stop="data.deptChecked=true"><van-icon name="add-o" /></div> |
|
|
|
<div class="add-inspect" v-if="data.checked"> |
|
|
|
<div class="add-inspect-item" v-for="(item, index) in submitData.userObjs" :key="index"> |
|
|
|
<p> |
|
|
|
<span class="add-name">{{nameCorrect(item.userName)}}</span> |
|
|
|
<span class="add-law">{{item.lawCertificateNum}}</span> |
|
|
|
</p> |
|
|
|
<span class="add-dept">{{item.zzDisplayPath}}</span> |
|
|
|
<van-icon class="remove-v" name="cross" @click.stop="removeDeptAndUser(index)" /> |
|
|
|
</div> |
|
|
|
<div class="addbtn" @click.stop="data.deptChecked=true"><van-icon name="add-o" /></div> |
|
|
|
</div> |
|
|
|
|
|
|
|
</van-cell-group> |
|
|
|
|
|
|
|
<van-action-bar> |
|
|
|
<van-button round block type="info" native-type="submit" @click="tmpSave">保存</van-button> |
|
|
|
<van-button round block type="info" native-type="submit" @click="submit112">提交</van-button> |
|
|
|
</van-action-bar> |
|
|
|
<van-button round block type="info" native-type="submit" @click="tmpSave">保存</van-button> |
|
|
|
<van-button round block type="info" native-type="submit" @click="submit112">提交</van-button> |
|
|
|
</van-action-bar> |
|
|
|
|
|
|
|
</van-form> |
|
|
|
<!-- </van-cell-group>--> |
|
|
|
</div> |
|
|
|
|
|
|
|
<!-- <div class="warp_body">--> |
|
|
|
<!-- <van-action-bar>--> |
|
|
|
<!-- <van-action-bar-button text="保存" @click="submit" />--> |
|
|
|
<!-- </van-action-bar>--> |
|
|
|
<!-- </div>--> |
|
|
|
|
|
|
|
<van-popup v-model:show="data.showLawEnforcerFlag" position="bottom" :style="{ height: '30%' }"/> |
|
|
|
<UserPopup :visible="data.popupVisible" :content="data.popupContent" :lawEDid="submitData.lawEnforcerId" :LawEDs="data.lawCer" :isShowCardId="0" @close="closePopup" |
|
|
|
@reciveData="reciveVisible"/> |
|
|
|
@ -273,8 +172,12 @@ |
|
|
|
/> |
|
|
|
</van-popup> |
|
|
|
|
|
|
|
<DeptPopup :visible="data.deptChecked" :content="data.deptContent" @close="closePopup" |
|
|
|
@reciveData="reciveDept"/> |
|
|
|
<DeptPopup :visible="data.deptChecked" :content="data.deptContent" @close="closePopup" @reciveData="reciveDept"/> |
|
|
|
|
|
|
|
|
|
|
|
<van-popup v-model:show="data.hourPicker" round position="bottom"> |
|
|
|
<van-picker :columns="data.hour_columns" @confirm="hourConfirm" @cancel="data.hourPicker = false" /> |
|
|
|
</van-popup> |
|
|
|
<van-popup v-model:show="data.hourStartPicker" round position="bottom"> |
|
|
|
<van-time-picker v-model="data.currentHour" :columns-type='data.checkHourType' |
|
|
|
@cancel="data.hourStartPicker = false" |
|
|
|
@ -307,7 +210,7 @@ |
|
|
|
|
|
|
|
<script setup name="register"> |
|
|
|
import {nameCorrect,encryptPhone} from'@/util/fileUpload'; |
|
|
|
import {showSuccessToast} from 'vant'; |
|
|
|
import {showSuccessToast, showToast} from 'vant'; |
|
|
|
import 'vant/es/toast/style'; |
|
|
|
import { |
|
|
|
getByUserIdAndZero, |
|
|
|
@ -331,6 +234,21 @@ |
|
|
|
|
|
|
|
const router = useRouter(); |
|
|
|
let queryaddressId = ref(""); |
|
|
|
|
|
|
|
|
|
|
|
// 存储最终选择的时间区间 |
|
|
|
const timeRange = ref("09:00 - 12:00"); |
|
|
|
// 生成 00~23 的对象选项:[{text:'00', value:'00'}, ...] |
|
|
|
const hourOptions = Array.from({ length: 24 }, (_, i) => { |
|
|
|
const s = String(i).padStart(2, '0') |
|
|
|
return { text: s, value: s } |
|
|
|
}) |
|
|
|
// 生成 00~59 的对象选项 |
|
|
|
const minuteOptions = Array.from({ length: 60 }, (_, i) => { |
|
|
|
const s = String(i).padStart(2, '0') |
|
|
|
return { text: s, value: s } |
|
|
|
}) |
|
|
|
|
|
|
|
const data = reactive({ |
|
|
|
showLawEnforcerFlag: false, |
|
|
|
showTimePicker: false, |
|
|
|
@ -353,13 +271,24 @@ |
|
|
|
tempDate: null, |
|
|
|
lawCerFlag: 0, |
|
|
|
lawCer:[{ text:"", id:"", show:"", num:"" }], |
|
|
|
|
|
|
|
hourStartPicker: ref(false), |
|
|
|
hourEndPicker: ref(false), |
|
|
|
currentHour:ref(['00','00']), |
|
|
|
checkHourType:ref(['hour', 'minute']), |
|
|
|
checkHour:"", |
|
|
|
checkHourStart:"", |
|
|
|
checkHourEnd:"" |
|
|
|
checkHourEnd:"", |
|
|
|
|
|
|
|
hourPicker: ref(false), |
|
|
|
hour_columns: [ |
|
|
|
hourOptions, |
|
|
|
[{ text: ':', value: ':', disabled: true }], |
|
|
|
minuteOptions, |
|
|
|
[{ text: '至', value: 'sep', disabled: true }], |
|
|
|
hourOptions, |
|
|
|
[{ text: ':', value: ':', disabled: true }], |
|
|
|
minuteOptions |
|
|
|
], |
|
|
|
|
|
|
|
// lawCer:[], |
|
|
|
}); |
|
|
|
@ -460,9 +389,35 @@ |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 执法时间 时段选择 |
|
|
|
*/ |
|
|
|
const toMinutes = (hhmm) => { |
|
|
|
const [h, m] = hhmm.split(':').map(Number) |
|
|
|
return h * 60 + m |
|
|
|
} |
|
|
|
|
|
|
|
const isValidRange = (start, end) => { |
|
|
|
return toMinutes(start) <= toMinutes(end) |
|
|
|
} |
|
|
|
|
|
|
|
/** 执法时间 时段选择 */ |
|
|
|
const hourConfirm = ({ selectedOptions }) => { |
|
|
|
// values 数组依次是 [开始时, 开始分, "至", 结束时, 结束分] |
|
|
|
const [sh, _1, sm, _, eh, _2, em] = selectedOptions.map(o => o.value); |
|
|
|
|
|
|
|
// 校验:如果结束时间小于开始时间,给出提示 |
|
|
|
console.log("start: ", sh+":"+sm); |
|
|
|
console.log("end: ", eh+":"+em); |
|
|
|
if (!isValidRange(sh+":"+sm, eh+":"+em)) { |
|
|
|
showToast("请选择正确的时间区间!"); |
|
|
|
} else { |
|
|
|
// 关闭弹窗 |
|
|
|
data.hourPicker = false; |
|
|
|
data.checkHourStart = sh+":"+sm; |
|
|
|
data.checkHourEnd = eh+":"+em; |
|
|
|
data.checkHour = sh+":"+sm +" - "+ eh+":"+em |
|
|
|
} |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
const hourStartConfirm = ({ selectedOptions }) => { |
|
|
|
data.hourStartPicker = false; |
|
|
|
data.checkHourStart = selectedOptions[0].value+":"+selectedOptions[1].value; |
|
|
|
@ -618,6 +573,7 @@ |
|
|
|
submitData.lawEnforcerTwoId = submitData.lawEnforcerTwoId.substring(0, submitData.lawEnforcerTwoId.length - 1); |
|
|
|
submitData.lawEnforcerTwo = submitData.lawEnforcerTwo.substring(0, submitData.lawEnforcerTwo.length - 1); |
|
|
|
submitData.lawCertificateNum = submitData.lawCertificateNum.substring(0, submitData.lawCertificateNum.length - 1); |
|
|
|
submitData.checkHour=data.checkHour; |
|
|
|
submitData.checkHourStart=data.checkHourStart; |
|
|
|
submitData.checkHourEnd=data.checkHourEnd; |
|
|
|
addEnterpriseLawEnforcement(submitData, success => { |
|
|
|
@ -661,6 +617,7 @@ |
|
|
|
submitData.lawEnforcerTwoId = submitData.lawEnforcerTwoId.substring(0, submitData.lawEnforcerTwoId.length - 1); |
|
|
|
submitData.lawEnforcerTwo = submitData.lawEnforcerTwo.substring(0, submitData.lawEnforcerTwo.length - 1); |
|
|
|
submitData.lawCertificateNum = submitData.lawCertificateNum.substring(0, submitData.lawCertificateNum.length - 1); |
|
|
|
submitData.checkHour=data.checkHour; |
|
|
|
submitData.checkHourStart=data.checkHourStart; |
|
|
|
submitData.checkHourEnd=data.checkHourEnd; |
|
|
|
editEnterpriseLawEnforcement(submitData, success => { |
|
|
|
|