<template>
|
<view class="page-box">
|
<view class="content-box">
|
<view class="form">
|
<view class="form-item">
|
<view class="form-label require">
|
计划名称
|
</view>
|
<input type="text" placeholder="请输入计划名称" v-model.trim="form.enforceReason" />
|
</view>
|
<view class="form-item">
|
<view class="form-label require">
|
被检查对象
|
</view>
|
<view class="input" @click="search">
|
<input type="text" style="width: 80%;" disabled placeholder="请选择被检查对象" :value="form.companyName" />
|
<u-icon name="arrow-right"></u-icon>
|
</view>
|
</view>
|
<view class="form-item">
|
<view class="form-label require">
|
执法时间
|
</view>
|
<view class="input" @click="showTimeFun">
|
<input type="text" placeholder="请选择" disabled v-model.trim="form.planTimeStr" />
|
<u-icon name="arrow-right"></u-icon>
|
</view>
|
</view>
|
<view class="form-item" @click="showType = true">
|
<view class="form-label require">
|
检查类型
|
</view>
|
<view class="input">
|
<input type="text" placeholder="请选择检查类型" v-model.trim="form.enforceTypeName" disabled />
|
<u-icon name="arrow-right"></u-icon>
|
</view>
|
</view>
|
<view class="form-item last">
|
<view class="form-label require">
|
检查内容
|
</view>
|
<view class="back">
|
<u--textarea :height="120" v-model.trim="form.enforceContent" placeholder="请输入检查内容" count
|
maxlength="500"></u--textarea>
|
</view>
|
</view>
|
</view>
|
</view>
|
<view class="content-box">
|
<view class="form ">
|
<view class="form-item">
|
<view class="form-label">
|
执法人员
|
</view>
|
<input type="text" placeholder="请输入" v-model.trim="form.applyUser" disabled />
|
</view>
|
<view class="form-item">
|
<view class="form-label">
|
执行科室
|
</view>
|
<!-- <input type="text" placeholder="请输入" v-model.trim="form.applyDeptName" disabled/> -->
|
<view class="select-content" @tap="openSelectOffice">
|
<view>{{form.applyDeptNames}}</view>
|
<u-icon name="arrow-right"></u-icon>
|
</view>
|
</view>
|
<view class="form-item sui" style="align-items: flex-start;" @click="openPer">
|
<view class="form-label ">
|
随行人员
|
</view>
|
<view>
|
<view style="color: #a2a2a2;" class="placeholder" v-if="!form.peers.length">请选择</view>
|
<view v-else>
|
<view style="margin-bottom: 20rpx;" v-for="(item,index) in form.peers" :key="index">
|
{{item.peerUser}}({{item.peerDeptName}})
|
</view>
|
</view>
|
</view>
|
</view>
|
<view class="form-item">
|
<view class="form-label">
|
是否通知企业
|
</view>
|
<u-switch v-model="form.isNoticeCompany" :activeValue="1" :inactiveValue="0"></u-switch>
|
</view>
|
<view class="form-item" :class="{'down-2' : !isRectify }">
|
<view class="form-label">
|
是否创建整改
|
</view>
|
<u-switch v-model="isRectify" :activeValue="1" :inactiveValue="0" @change="changeRectify"></u-switch>
|
</view>
|
<view class="form-item down-2" v-if="isRectify == 1">
|
<view class="form-label require">
|
整改计划
|
</view>
|
<view class="input" @click="searchRectify">
|
<input type="text" style="width: 80%;" disabled placeholder="请选择整改计划" :value="rectifyName" />
|
<u-icon name="arrow-right"></u-icon>
|
</view>
|
</view>
|
</view>
|
</view>
|
<view class="down-options">
|
<view class="button record" @click="applyRecord">申请记录</view>
|
<view class="button submit" @click="submitApply">提交申请</view>
|
</view>
|
<perPicker ref="perPicker" @setCompany="setCompany" :immediateChange="true" @confirm="confirmSearch"
|
@cancel="show = false" :columns="columns" keyName="companyName"></perPicker>
|
<yt-dateTimePicker ref="myPicker" @submit="confirmTime" :time-init="timeInit" :start-year="year" :startMonth="month"
|
:time-hide="[true, true, true, true, false, false]" />
|
<u-picker :show="showType" @close="showType = false" @confirm="confirmType" @cancel="showType = false"
|
:columns="columnsType" keyName="dictLabel"></u-picker>
|
<perPage :list="list" ref="perpage" @selectValue="selectValue"></perPage>
|
<officePopup :officeShow.sync="officeShow" :list="officeList" @selectValue="selectOfficeRes"></officePopup>
|
<rectifyPicker ref="rectifyPicker" @setCompany="setCompany" :immediateChange="true" @confirm="confirmRectify"
|
:applyOrgId="form.applyOrgId" :companyId="form.companyId" @cancel="show = false" :columns="columns"
|
keyName="enforceReason"></rectifyPicker>
|
</view>
|
</template>
|
|
<script>
|
import {
|
orderAdd,
|
companyList,
|
enforceList,
|
officeList,
|
} from '@/api/policy.js'
|
import {
|
getInfo
|
} from '@/api/auth.js'
|
import {
|
getDicts
|
} from '@/api/data'
|
import perPage from './perPage'
|
import officePopup from './officePopup'
|
import perPicker from './perPicker'
|
import rectifyPicker from './rectifyPicker'
|
import YtDateTimePicker from "uni_modules/yt-dateTimePicker/components/yt-dateTimePicker/yt-dateTimePicker.vue"
|
export default {
|
components: {
|
YtDateTimePicker,
|
perPage,
|
perPicker,
|
officePopup,
|
rectifyPicker
|
},
|
data() {
|
return {
|
currentTime: "",
|
form: {
|
enforceReason: '', // 执法主题
|
companyName: "", // 执法对象
|
planTime: '', // 执法时间
|
planTimeStr: '', // 执法时间
|
enforceType: '', // 检查方式
|
enforceTypeName: '', // 检查方式名称
|
enforceContent: "", // 执法内容
|
applyUser: '', // 执法人员
|
applyOrgId: "", // 制定机构id
|
applyOrgName: "", // 制定机构名称
|
applyDeptIds: "", // 执行科室id
|
applyDeptNames: "", // 执行科室名称
|
peers: [], // 随行人员
|
isNoticeCompany: 0, // 是否通知企业
|
orderStatus: 1,
|
joinOrderId: null,
|
},
|
show: false,
|
columns: [],
|
showTime: false,
|
columnsType: [],
|
showType: false,
|
minDate: '',
|
year: '',
|
endYear: '',
|
timeInit: '',
|
list: [],
|
startTime: "",
|
month: '',
|
officeList: [],
|
officeShow: false,
|
isRectify: 0, // 是否创建整改
|
rectifyName: '', // 整改关联计划名称
|
}
|
},
|
onLoad() {
|
this.year = new Date().getFullYear()
|
this.month = new Date().getMonth() + 1
|
this.endYear = this.year + 5
|
this.minDate = new Date().valueOf()
|
this.timeInit = this.$u.timeFormat(new Date(), 'yyyy-mm-dd hh:MM')
|
this.startTime = this.$u.timeFormat(new Date(), 'yyyy-mm-dd hh:MM')
|
this.getInfo()
|
this.getDicts()
|
this.enforceList()
|
},
|
onShow() {
|
|
},
|
methods: {
|
changeRectify(e) {
|
if (e == 0) {
|
this.form.joinOrderId = null
|
this.rectifyName = ''
|
}
|
},
|
|
enforceList() {
|
enforceList().then(val => {
|
this.list = val.data.data
|
})
|
},
|
getDicts() {
|
getDicts('enforce_type').then(val => {
|
this.columnsType = [val.data.data]
|
})
|
},
|
getInfo() {
|
getInfo().then(val => {
|
const value = val.data.data
|
// this.form.applyName = value.nickName
|
this.form.applyUser = value.nickName
|
this.form.applyId = value.userId
|
this.form.applyPhone = value.phonenumber
|
|
this.form.applyOrgId = value.dept.parentId // 制定机构id
|
this.form.applyOrgName = value.dept.parentName // 制定机构名称
|
this.form.applyDeptNames = value.dept.deptName // 科室名称
|
this.form.applyDeptIds = value.dept.deptId // 科室id
|
|
this.getOfficeList()
|
})
|
},
|
timeFilter(mode, options) {
|
let d = new Date()
|
// console.log(d.getFullYear());
|
if (mode === 'year') {
|
return options.filter((option) => option >= d.getFullYear())
|
}
|
if (mode === 'month') {
|
return options.filter((option) => option >= d.getMonth() + 1)
|
}
|
if (mode === 'minute') {
|
return options.filter((option) => option === '00' || option === '30');
|
}
|
return options;
|
},
|
authFile() {
|
if (!this.form.enforceReason || !this.form.enforceReason.replace(/\s+/g, "")) {
|
return '请填写主题'
|
}
|
if (!this.form.companyName || !this.form.companyName.replace(/\s+/g, "")) {
|
return '请选择执法对象'
|
}
|
if (!this.form.planTimeStr) {
|
return '请填写执法时间'
|
}
|
if (!this.form.enforceTypeName) {
|
return '请选择检查方式'
|
}
|
if (!this.form.enforceContent || !this.form.enforceContent.replace(/\s+/g, "")) {
|
return '请填写执法内容'
|
}
|
if (!this.form.applyDeptIds) {
|
return '请选择执法部门'
|
}
|
// if(!this.form.peers.length){
|
// return '请选择随行人员'
|
// }
|
|
if (this.isRectify == 1) {
|
if (this.form.joinOrderId == null) {
|
return '请选择整改计划'
|
}
|
}
|
return ''
|
},
|
submitApply() {
|
const res = this.authFile()
|
if (res) {
|
uni.showToast({
|
title: res,
|
icon: 'none'
|
})
|
return
|
}
|
orderAdd(this.form).then(val => {
|
if (val.data.code == 200) {
|
uni.showToast({
|
title: '提交成功',
|
icon: 'none'
|
})
|
setTimeout(() => {
|
uni.navigateBack()
|
}, 500)
|
}
|
})
|
},
|
applyRecord() {
|
uni.navigateTo({
|
url: `/policy/applyRecord/applyRecord`
|
})
|
},
|
search() {
|
this.$refs.perPicker.open()
|
},
|
|
searchRectify() {
|
if (!this.form.companyId) return this.$u.toast('请先选择企业')
|
this.$refs.rectifyPicker.open()
|
},
|
|
confirmRectify(e) {
|
console.log(e)
|
this.form.joinOrderId = e.orderId
|
this.rectifyName = e.enforceReason
|
},
|
|
confirmSearch(e) {
|
let value = e
|
this.form.companyName = e.companyName
|
this.form.companyCode = value.companyCode
|
this.form.companyId = value.companyId
|
this.form.companyPhone = value.companyPhone
|
this.form.companyUser = value.companyUser
|
this.form.companyAddress = value.companyAddress
|
this.form.joinOrderId = null
|
this.rectifyName = ''
|
},
|
setCompany(e) {
|
this.form.companyName = e
|
this.form.companyCode = ''
|
this.form.companyId = ''
|
this.form.companyPhone = ''
|
this.form.companyUser = ''
|
this.form.companyAddress = ''
|
},
|
confirmTime(e) {
|
this.form.planTime = e.year + '-' + e.month + '-' + +e.day + ' ' + e.hour + ":" + "00:00"
|
this.form.planTimeStr = e.year + '-' + e.month + '-' + +e.day + ' ' + e.hour + ":" + "00"
|
this.timeInit = this.$u.timeFormat(new Date(this.form.planTimeStr), 'yyyy-mm-dd hh:MM')
|
},
|
showTimeFun() {
|
// this.showTime = true
|
this.$refs.myPicker.show();
|
|
},
|
sheet() {
|
|
},
|
confirmType(e) {
|
this.form.enforceType = e.value[0].dictCode
|
this.form.enforceTypeName = e.value[0].dictLabel
|
this.showType = false
|
},
|
changeValue(e, e1) {
|
this.currentTime = e.value
|
},
|
openPer() {
|
this.$refs.perpage.open(this.list)
|
},
|
selectValue(value) {
|
value.forEach(val => {
|
this.form.peers.push(val)
|
});
|
this.form.peers = this.uniqueArrJson(this.form.peers, 'peerId')
|
},
|
uniqueArrJson(arr, key) {
|
var newobj = {},
|
newArr = [];
|
for (var i = 0; i < arr.length; i++) {
|
var item = arr[i];
|
if (!newobj[item[key]]) {
|
newobj[item[key]] = newArr.push(item);
|
}
|
}
|
return newArr;
|
},
|
|
openSelectOffice() {
|
this.officeShow = true
|
},
|
|
selectOfficeRes(data) {
|
this.form.applyDeptIds = data.deptIds
|
this.form.applyDeptNames = data.deptNames
|
},
|
|
async getOfficeList() {
|
const {
|
data: res
|
} = await officeList({
|
pageNum: 1,
|
pageSize: 1000,
|
parentId: this.form.applyOrgId,
|
})
|
this.officeList = res.data.map(obj => {
|
return {
|
deptId: obj.deptId,
|
deptName: `${this.form.applyOrgName}-${obj.deptName}`
|
}
|
})
|
console.log(this.officeList)
|
},
|
}
|
}
|
</script>
|
<style>
|
page {
|
background-color: #F4F4F4;
|
}
|
|
.sui .u-textarea {
|
padding: 0 !important;
|
}
|
</style>
|
<style scoped lang="scss">
|
.page-box {
|
padding-bottom: 140rpx;
|
|
.content-box {
|
margin: 20rpx 32rpx;
|
background-color: white;
|
padding: 24rpx;
|
border-radius: 10rpx;
|
}
|
|
.form {
|
.form-item {
|
display: flex;
|
justify-content: flex-start;
|
align-items: center;
|
border-bottom: 2rpx solid #F1F1F1;
|
padding-bottom: 26rpx;
|
margin-bottom: 24rpx;
|
|
.form-label {
|
width: 236rpx !important;
|
font-size: 30rpx;
|
color: #4A4E60;
|
width: 40%;
|
}
|
|
.input {
|
width: 60%;
|
display: flex;
|
justify-content: space-between;
|
align-items: center;
|
}
|
|
.require {
|
&::after {
|
content: '*';
|
color: #FF7500;
|
}
|
}
|
|
}
|
|
.down-2 {
|
margin-bottom: 0;
|
padding-bottom: 0;
|
border: none;
|
}
|
|
.last {
|
margin-bottom: 0;
|
padding-bottom: 0;
|
border-bottom: none;
|
display: block;
|
|
.form-label {
|
margin-bottom: 16rpx;
|
|
}
|
|
.back {
|
::v-deep .u-textarea {
|
background-color: #F4F4F4;
|
border: none;
|
|
.u-textarea__count {
|
background: none !important;
|
}
|
}
|
}
|
}
|
|
}
|
}
|
|
.down-options {
|
background-color: white;
|
position: fixed;
|
bottom: 0;
|
padding-bottom: 40rpx;
|
width: 100%;
|
padding: 22rpx 30rpx 40rpx;
|
z-index: 800;
|
display: flex;
|
justify-content: space-between;
|
align-items: center;
|
box-sizing: border-box;
|
|
.record {
|
box-sizing: border-box;
|
border-radius: 20rpx;
|
border: 2rpx solid #ABD2FF;
|
background: #F0F8FF;
|
color: #1171E0;
|
font-size: 32rpx;
|
padding: 20rpx 30rpx;
|
width: 30%;
|
text-align: center;
|
}
|
|
.submit {
|
border-radius: 20rpx;
|
border: 2rpx solid #1171E0;
|
background-color: #1171E0;
|
color: white;
|
width: 65%;
|
box-sizing: border-box;
|
padding: 20rpx 30rpx;
|
text-align: center;
|
}
|
}
|
|
.sui {}
|
|
::v-deep .u-checkbox-label--right>text {
|
line-height: 54rpx !important;
|
margin-right: 15rpx;
|
}
|
|
.select-content {
|
flex: 1;
|
display: flex;
|
align-items: center;
|
justify-content: space-between;
|
|
.select-word {
|
flex: 1;
|
}
|
}
|
</style>
|