From bfbced1434833586988c36fe2670527bb5b2274d Mon Sep 17 00:00:00 2001 From: 346149741 <346149741@qq.com> Date: 星期二, 27 八月 2024 11:59:52 +0800 Subject: [PATCH] 修复选择同行人 --- policy/policyApply/policyApply.vue | 405 ++++++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 350 insertions(+), 55 deletions(-) diff --git a/policy/policyApply/policyApply.vue b/policy/policyApply/policyApply.vue index 0e2722f..7d8193d 100644 --- a/policy/policyApply/policyApply.vue +++ b/policy/policyApply/policyApply.vue @@ -1,6 +1,94 @@ <template> <view class="page-box"> - <u-form label-position="top" label-width="120px"> + <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> + <!-- <u-text text='鎼滅储' type="primary" style="width: 20%;" @click="search"></u-text> --> + </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 style="width: 60%;">{{form.applyDeptName}}</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> + <!-- <u-textarea border="none" disabled style="padding: 0;" placeholder="璇烽�夋嫨" ></u-textarea> --> + </view> + <view class="form-item down-2"> + <view class="form-label"> + 鏄惁閫氱煡浼佷笟 + </view> + <u-switch v-model="form.isNoticeCompany" :activeValue="1" :inactiveValue="0"></u-switch> + </view> + + </view> + </view> + <view class="down-options"> + <view class="button record" @click="applyRecord">鐢宠璁板綍</view> + <view class="button submit" @click="submitApply">鎻愪氦鐢宠</view> + </view> + <!-- <u-form label-position="top" label-width="120px"> <u-form-item label="鎵ф硶涓婚"> <u-input placeholder="璇疯緭鍏�" v-model="form.enforceReason"></u-input> </u-form-item> @@ -32,65 +120,99 @@ <u-form-item label="鏄惁閫氱煡浼佷笟"> <u-switch v-model="form.isNoticeCompany" :activeValue="1" :inactiveValue="0"></u-switch> </u-form-item> - </u-form> - <u-button @click="submitApply">鎻愪氦鐢宠</u-button> - <u-button @click="applyRecord">鐢宠璁板綍</u-button> - <u-picker :show="show" @close="show = false" @confirm="confirmSearch" @cancel="show = false" :columns="columns" keyName="companyName"></u-picker> - <u-datetime-picker - :show="showTime" - @close="showTime = false" - @cancel="showTime = false" - v-model="currentTime" - @confirm="confirmTime" - :minDate="minDate" - mode="dateTime" - ref="datetimePicker" - class="hide-clear-button" - ></u-datetime-picker> - <u-picker :show="showType" @close="showType = false" @confirm="confirmType" @cancel="showType = false" :columns="columnsType" keyName="dictLabel"></u-picker> + </u-form> --> +<!-- <u-button @click="submitApply">鎻愪氦鐢宠</u-button> + <u-button @click="applyRecord">鐢宠璁板綍</u-button> --> + <!-- <u-picker :show="show" @close="show = false" :immediateChange="true" @confirm="confirmSearch" @cancel="show = false" :columns="columns" keyName="companyName"> + + </u-picker> --> + <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> </view> </template> <script> - import { orderAdd, companyList } from '@/api/policy.js' + import { orderAdd, companyList, enforceList } from '@/api/policy.js' import { getInfo } from '@/api/auth.js' import { getDicts } from '@/api/data' + import perPage from './perPage' + import perPicker from './perPicker' + import YtDateTimePicker from "uni_modules/yt-dateTimePicker/components/yt-dateTimePicker/yt-dateTimePicker.vue" export default { + components: { + YtDateTimePicker, + perPage, + perPicker + }, data() { return { currentTime: "", form: { - executeTime: "", - applyName: '', + applyUser: '', applyDeptName: '', enforceType: 1, - isNoticeCompany: 0 + isNoticeCompany: 0, + // regionReason: 0, + planTimeStr: '', + peers: [], + orderStatus: 1, + enforceContent: "", + companyName: "" }, show: false, columns: [], showTime: false, columnsType: [], showType: false, - minDate: '' + minDate: '', + year: '', + endYear: '', + timeInit: '', + list: [], + startTime: "", + month: '' } }, onLoad() { - this.currentTime = this.$u.timeFormat(new Date(), 'yyyy-mm-dd hh:MM:ss') + 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: { + enforceList() { + enforceList().then(val => { + this.list = val.data.data + }) + }, getDicts() { getDicts('enforce_type').then(val =>{ - console.log(val.data.data) this.columnsType = [val.data.data] }) }, getInfo() { getInfo().then(val => { const value = val.data.data - this.form.applyName = value.nickName + // this.form.applyName = value.nickName + this.form.applyUser = value.nickName this.form.applyId = value.userId this.form.applyDeptName = value.dept.deptName this.form.applyDeptId = value.dept.deptId @@ -111,51 +233,98 @@ } 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.companyId) { + // return '璇风偣鍑绘悳绱㈢‘璁ゆ墽娉曞璞�' + // } + if(!this.form.planTimeStr) { + return '璇峰~鍐欐墽娉曟椂闂�' + } + if(!this.form.enforceTypeName){ + return '璇烽�夋嫨鎵ф硶绫诲瀷' + } + console.log(!this.form.enforceContent.replace(/\s+/g, "")) + if(!this.form.enforceContent || !this.form.enforceContent.replace(/\s+/g, "")) { + return '璇峰~鍐欐墽娉曞唴瀹�' + } + // if(!this.form.peers.length){ + // 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.navigateBack() + uni.showToast({ + title: '鎻愪氦鎴愬姛', + icon: 'none' + }) + setTimeout(() => { + uni.navigateBack() + }, 500) } }) }, applyRecord() { - - }, - search() { - companyList({companyName: this.form.companyName}).then(val => { - if(val.data.code == 200){ - if(!val.data.rows.length || !val.data.rows){ - uni.showToast({ - title: '娌℃湁绗﹀悎鐨勬暟鎹紝璇锋鏌ヨ緭鍏ョ殑鎵ф硶瀵硅薄', - icon: 'none', - duration: 3000 - }) - } else { - this.columns = [val.data.rows] - this.show = true - } - - } + uni.navigateTo({ + url:`/policy/applyRecord/applyRecord` }) }, + search() { + // companyList({companyName: this.form.companyName}).then(val => { + // if(val.data.code == 200){ + // if(!val.data.rows.length || !val.data.rows){ + // uni.showToast({ + // title: '娌℃湁绗﹀悎鐨勬暟鎹紝璇锋鏌ヨ緭鍏ョ殑鎵ф硶瀵硅薄', + // icon: 'none', + // duration: 3000 + // }) + // } else { + + // } + + // } + // }) + + this.$refs.perPicker.open() + }, confirmSearch(e){ - const value = this.columns[0].find(item => item.companyName == e.value[0].companyName) - this.form.companyName = e.value[0].companyName + let value = e + // const value = this.columns[0].find(item => item.companyName == e.value[0].companyName) + 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.show = false + // console.log(this.form.companyName) + }, + setCompany(e) { + this.form.companyName = e }, confirmTime(e) { - // console.log(e.value) - this.form.applyTime = e.value - this.showTime = false + 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.showTime = true + this.$refs.myPicker.show(); + }, sheet(){ @@ -164,16 +333,142 @@ 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; } } } </script> - +<style> + page{ + background-color: #F4F4F4; + } + .sui .u-textarea{ + padding: 0 !important; + } +</style> <style scoped lang="scss"> .page-box{ - padding:0 30rpx; + 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{ + 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{ + /deep/ .u-textarea{ + background-color: #F4F4F4; + border: none; + .u-textarea__count{ + background: none !important; + } + } + } + } + + } } -/deep/ .u-picker__view{ - +.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{ + +} +/deep/ .u-checkbox-label--right > text{ + line-height: 54rpx !important; + margin-right: 15rpx; } </style> -- Gitblit v1.9.1