From 2d43a1df3f5ba42710e6d21c27d1e13bdb8dfd56 Mon Sep 17 00:00:00 2001 From: zhangwei <1504152376@qq.com> Date: 星期一, 24 三月 2025 09:23:08 +0800 Subject: [PATCH] - --- src/pages/release/index.vue | 360 +++++++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 286 insertions(+), 74 deletions(-) diff --git a/src/pages/release/index.vue b/src/pages/release/index.vue index 76c066f..ecf4baa 100644 --- a/src/pages/release/index.vue +++ b/src/pages/release/index.vue @@ -1,68 +1,62 @@ <template> <view class="full-page c-m-b-40"> - <view class="list c-p-t-10"> - <up-form labelPosition="left" :model="model1" ref="form1" labelWidth='160rpx'> - <view class="content c-p-20 c-m-t-10 c-m-b-20"> - <up-form-item label="鏍囬" prop="userInfo.name" :borderBottom='false' ref="item1"> - <up-input v-model="model1.userInfo.name" border="none" placeholder="璇峰~鍐欐嫑宸ラ渶姹�,濡�:璐存爣鎵撳寘"></up-input> - <template #right> + <view class="list"> + <up-form labelPosition="left" :model="publicJob" ref="formRef" labelWidth='160rpx'> + <view class="content c-p-l-24"> + <up-form-item label="宸ヤ綔鍚嶇О" prop="orderName" required :borderBottom='false' ref="item1"> + <up-input v-model="publicJob.orderName" border="none" placeholder="璇峰~鍐欏伐浣滃悕绉�"></up-input> + <!-- <template #right> <up-icon name="arrow-right"></up-icon> - </template> + </template> --> </up-form-item> - </view> - <view class="content c-p-20 c-m-t-10 c-m-b-20"> - <up-form-item label="宸ヤ綔鏃堕棿" prop="userInfo.name" :borderBottom='false' ref="item1"> - <up-input v-model="model1.userInfo.name" border="none" placeholder="濡備粖澶�9:00-浠婂ぉ17:00"></up-input> + <up-form-item label="宸ヤ綔鏃ユ湡" prop="wordStartTime" required :borderBottom='false' ref="item1" + @click="clickTime(3)"> + <up-input v-model="workDate" border="none" readonly placeholder="鐐瑰嚮閫夋嫨宸ヤ綔鏃ユ湡"></up-input> <up-icon #right name="arrow-right"></up-icon> </up-form-item> - </view> - <view class="content c-p-20 c-m-t-10 c-m-b-20"> - <up-form-item label="鎬у埆瑕佹眰" prop="userInfo.name" :borderBottom='false' ref="item1"> - - <up-tag class='c-p-r-14' text="鐢�" type="warning" plain size="large"></up-tag> - <up-tag class='c-p-r-14' text="濂�" type="warning" plain size="large"></up-tag> - <up-tag class='c-p-r-14' text="涓嶉檺" type="warning" size="large"></up-tag> - <!-- <up-input v-model="model1.userInfo.name" border="none" placeholder="濡備粖澶�9:00-浠婂ぉ17:00"></up-input> --> + <up-form-item label="鑷瀹夋帓" prop="startTime" :borderBottom='false' ref="item1" + v-if="publicJob.workerType==1"> + <up-checkbox :customStyle="{marginBottom: '8px'}" label="鑷瀹夋帓鏃堕棿" name="agree" usedAlone + v-model:checked="publicJob.zixinganpai" /> </up-form-item> - <view class="c-p-t-20 c-p-b-20"> - <up-form-item label="骞撮緞闄愬埗" prop="userInfo.name" :borderBottom='false' ref="item1"> - <up-input v-model="model1.userInfo.name" border="none" placeholder="16~涓嶉檺"></up-input> - <up-icon #right name="arrow-right"></up-icon> - </up-form-item> - </view> - <view class="c-p-t-20 c-p-b-20"> - <up-form-item label="鎷涘伐浜烘暟" prop="userInfo.name" :borderBottom='false' ref="item1"> - <up-number-box v-model="model1.userInfo.value" @change="valChange"></up-number-box> - </up-form-item> - </view> - <view class="c-p-t-20 c-p-b-20"> - <up-form-item label="宸ヤ綔鍦扮偣" prop="userInfo.name" :borderBottom='false' ref="item1"> - <up-input v-model="model1.userInfo.address" border="none" - placeholder="濡備粖澶�9:00-浠婂ぉ17:00"></up-input> - <up-icon #right name="arrow-right"></up-icon> - </up-form-item> - </view> - </view> - <view class="content c-p-20 c-m-t-10 c-m-b-20"> - <up-form-item label="鑱旂郴鐢佃瘽" prop="userInfo.name" :borderBottom='false' ref="item1"> - <up-input v-model="model1.userInfo.number" border="none" - placeholder="濡備粖澶�9:00-浠婂ぉ17:00"></up-input> + <up-form-item label="宸ヤ綔鏃堕棿" prop="startTime" required :borderBottom='false' ref="item1" + v-if="!publicJob.zixinganpai" @click="clickTime(6)"> + <up-input v-model="workTime" border="none" readonly placeholder="鐐瑰嚮閫夋嫨宸ヤ綔鏃堕棿"></up-input> + <up-icon #right name="arrow-right"></up-icon> + </up-form-item> + <up-form-item label="鐢ㄥ伐瑕佹眰" prop="demand" required :borderBottom='false' ref="item1"> + <view class="c-p-b-20"> + <up-textarea v-model="publicJob.demand" border="none" placeholder="璇疯緭鍏ョ敤宸ヨ姹�" count + maxlength='400'></up-textarea> + </view> + </up-form-item> + <up-form-item label="鎷涘伐浜烘暟" prop="worderCount" required :borderBottom='false' ref="item1"> + <up-number-box button-size="24" v-model="publicJob.worderCount"></up-number-box> + </up-form-item> + <up-form-item label="宸ヤ綔鍦扮偣" prop="worderAddress" required :borderBottom='false' ref="item1"> + <up-input v-model="publicJob.worderAddress" border="none" placeholder="璇疯緭鍏ュ伐浣滃湴鐐�"></up-input> + <up-icon #right name="arrow-right"></up-icon> + </up-form-item> + <up-form-item label="鑱旂郴鐢佃瘽" prop="contactPhone" required :borderBottom='false' ref="item1"> + <up-input v-model="publicJob.contactPhone" border="none" placeholder="璇疯緭鍏ヨ仈绯荤數璇�"></up-input> + </up-form-item> + <up-form-item label="鏂瑰紡" prop="workerType" required :borderBottom='false' ref="item1"> + <up-tag class='c-p-r-14' text="璁℃椂" type="warning" :plain='!(publicJob.workerType=="0")' + @click='changStyle(0)'></up-tag> + <up-tag class='c-p-r-14' text="璁′欢" type="warning" :plain='!(publicJob.workerType=="1")' + @click='changStyle(1)'></up-tag> + </up-form-item> + <up-form-item :label="publicJob.workerType==0?'璁℃椂宸ヤ环':'璁′欢宸ヤ环'" prop="workPrice" required + :borderBottom='false' ref="item1"> + <up-input v-model="publicJob.workPrice" border="none" placeholder="璇疯緭鍏ュ伐浠�" type="digit"> + <template #suffix>{{publicJob.workerType=="0"?'鍏�/灏忔椂':'鍏�/浠�'}}</template></up-input> + </up-form-item> + <up-form-item label="宸ヤ环涓婇檺" prop="workPriceMax" required :borderBottom='false' ref="item1"> + <up-input v-model="publicJob.workPriceMax" border="none" placeholder="璇疯緭鍏ュ伐浠蜂笂闄�" type="digit"> + <template #suffix>{{publicJob.workerType=="0"?'鍏�/灏忔椂':'鍏�/浠�'}}</template></up-input> </up-form-item> </view> - <view class="content c-p-20 c-m-t-10 c-m-b-20"> - <up-form-item label="鏂瑰紡" prop="userInfo.name" :borderBottom='false' ref="item1"> - <up-tag class='c-p-r-14' text="璁℃椂" type="warning" size="large"></up-tag> - <up-tag class='c-p-r-14' text="璁′欢" type="warning" plain size="large"></up-tag> - </up-form-item> - </view> - <view class="content c-p-20 c-m-t-10 c-m-b-20"> - <up-form-item label="璁℃椂宸ヤ环" prop="userInfo.name" :borderBottom='false' ref="item1"> - <up-input v-model="model1.userInfo.xiaoshi" border="none" - placeholder="濡備粖澶�9:00-浠婂ぉ17:00"> - <template #suffix>鍏�/灏忔椂</template></up-input> - </up-form-item> - </view> - <view class="coreshop-bg-white c-m-t-20 c-p-20"> + <!-- <view class="coreshop-bg-white c-m-t-20 c-p-20"> <view class="c-p-b-20 colorgray"> 鎷涘伐瑕佹眰鎴栫鍒�(鍙閫�) </view> @@ -75,44 +69,262 @@ <view class="c-p-b-20"> <up-textarea v-model="value1" placeholder="璇疯緭鍏�:鍙互琛ュ厖鎷涘伐瑕佹眰鍜岀鍒�" ></up-textarea> </view> - </view> + </view> --> </up-form> </view> <view class="tabbtns"> - <up-button color='#fece01' class="text-69" text="鍙戝竷鎷涘伐"></up-button> + <up-button color='#fece01' :text="editItem?'淇敼鎷涘伐':'鍙戝竷鎷涘伐'" :loading='isLoading' :loadingText="editItem?'淇敼涓�':'鍙戝竷涓�'" + @click="saveOrder"></up-button> </view> - <fui-fab :zIndex="10" background='#fff' bottom='150'> + <!-- <fui-fab :zIndex="10" background='#fff' bottom='250'> <fui-icon name="kefu-fill" color='#000'></fui-icon> - </fui-fab> + </fui-fab> --> + <fui-date-picker range :show="datePickerShow" :type="dateType" @change="changePicker" :minDate='minDate' + :start="dateType==6?'8:00':'寮�濮嬫棩鏈�'" :value="dateType==6?'8:00':sDate" :end="dateType==6?'18:00':eDate" + @cancel="cancel" :param='$util.formatDate(new Date())'></fui-date-picker> </view> </template> <script setup> import { ref, - reactive + reactive, + getCurrentInstance, + onMounted } from 'vue'; - const tags = ['鍙棤缁忛獙','鏅氫笂鍖呴キ','鍙鐔熸墜','鎵嬭剼楹诲埄','涓崍鍖呴キ','鍚冮キ涓嶆墸鏃�','涓嶇(娲嬪伐','绂佹鍚哥儫'] - const value1 = ref('') - const model1 = reactive({ - userInfo: { - name: '', - sex: '', - number: 12345678989, - value: 3, - address: '鍥涘窛鐪佹垚閮藉競姝︿警鍖虹幆鐞冧笢璺�', - xiaoshi:20 + import { + onLoad, + onShow, + onReady, + onHide + } from "@dcloudio/uni-app"; + const { + $upload, + $api, + $util, + $db + } = getCurrentInstance().appContext.config.globalProperties + import { + useStore + } from 'vuex' + onLoad(() => { + let data = $db.get('userInfo').userCompany + editItem = $db.get('editItem') + if (data) { + publicJob.orderUserId = 5 + publicJob.worderAddress = data.address + publicJob.contactPhone = data.phone //鑱旂郴鐢佃瘽 + } + if (editItem) { + publicJob = reactive(editItem) + workDate.value = editItem.wordStartTimeName + '鑷�' + editItem.wordEndTimeName + sDate = editItem.wordStartTimeName + eDate = editItem.wordEndTimeName + $db.del('editItem') + } + }) + let rules = { + orderName: { + required: true, + message: '宸ヤ綔鍚嶇О涓嶈兘涓虹┖', + trigger: ['blur', 'change'] }, + wordStartTime: { + required: true, + message: '宸ヤ綔鏃ユ湡涓嶈兘涓虹┖', + trigger: ['blur', 'change'] + }, + startTime: { + required: true, + message: '宸ヤ綔鏃堕棿涓嶈兘涓虹┖', + trigger: ['blur', 'change'] + }, + demand: { + required: true, + message: '鐢ㄥ伐瑕佹眰涓嶈兘涓虹┖', + trigger: ['blur', 'change'] + }, + worderAddress: { + required: true, + message: '宸ヤ綔鍦扮偣涓嶈兘涓虹┖', + trigger: ['blur', 'change'] + }, + resume: { + required: true, + message: '鍏徃绠�浠嬩笉鑳戒负绌�', + trigger: ['blur', 'change'] + }, + contactPhone: { + required: true, + message: '鑱旂郴鐢佃瘽涓嶈兘涓虹┖', + trigger: ['blur', 'change'] + }, + workPrice: { + type: 'number', + required: true, + message: '宸ヤ环涓嶈兘涓虹┖', + trigger: ['blur', 'change'] + }, + workPriceMax: { + type: 'number', + required: true, + message: '宸ヤ环涓婇檺涓嶈兘涓虹┖', + trigger: ['blur', 'change'] + }, + } + const formRef = ref(null); + onReady(() => { + formRef.value.setRules(rules); + }) + onShow(()=>{ + console.log('Show-------------',publicJob); + }) + onHide(()=>{ + publicJob = reactive({ + id: 0, //鎷涘伐Id + orderUserId: '', //鎷涘伐鐢ㄦ埛id + orderName: '', //鎷涘伐鍚嶇О + wordStartTime: '', //宸ヤ綔寮�濮嬫棩鏈� + wordEndTime: '', //宸ヤ綔缁撴潫鏃ユ湡 + startTime: `${$util.formatDate(new Date())}T08:00:00.000`, //宸ヤ綔寮�濮嬫椂闂� + endTime: `${$util.formatDate(new Date())}T18:00:00.000`, //宸ヤ綔缁撴潫鏃堕棿 + demand: '', //闇�姹� + zixinganpai: false, //鑷瀹夋帓鏃堕棿 + worderCount: 1, //鎷涘伐浜烘暟 + worderAddress: '', //宸ヤ綔鍦扮偣 + contactPhone: '', //鑱旂郴鐢佃瘽 + workerType: 0, //宸ヤ綔鏂瑰紡 0璁℃椂1璁′欢 + workPrice: '', //宸ヤ环 + }) + workDate.value = '' + }) + onMounted(() => { + formRef.value.setRules(rules); + console.log(formRef.value, 'formRef'); // 璁块棶瀛愮粍浠禗emo涓殑灞炴�� }); + let dateType = ref() + let minDate = $util.formatDate(new Date()) + let sDate = $util.formatDate(new Date(), null, 1) + let eDate = '缁撴潫鏃ユ湡' + let longitude = ref(0) + let latitude = ref(0) + let workDate = ref('') + let workTime = ref('8:00鑷�18:00') + const store = useStore() + let datePickerShow = ref(false) + let isLoading = ref(false) + let editItem = null + let publicJob = reactive({ + id: 0, //鎷涘伐Id + orderUserId: '', //鎷涘伐鐢ㄦ埛id + orderName: '', //鎷涘伐鍚嶇О + wordStartTime: '', //宸ヤ綔寮�濮嬫棩鏈� + wordEndTime: '', //宸ヤ綔缁撴潫鏃ユ湡 + startTime: `${$util.formatDate(new Date())}T08:00:00.000`, //宸ヤ綔寮�濮嬫椂闂� + endTime: `${$util.formatDate(new Date())}T18:00:00.000`, //宸ヤ綔缁撴潫鏃堕棿 + demand: '', //闇�姹� + zixinganpai: false, //鑷瀹夋帓鏃堕棿 + worderCount: 1, //鎷涘伐浜烘暟 + worderAddress: '', //宸ヤ綔鍦扮偣 + contactPhone: '', //鑱旂郴鐢佃瘽 + workerType: 0, //宸ヤ綔鏂瑰紡 0璁℃椂1璁′欢 + workPrice: '', //宸ヤ环 + }) + + const style = ref('time') + const changStyle = (val) => { + publicJob.workerType = val + if (val == 0) { + publicJob.zixinganpai = false + } + } + const clickTime = (type) => { + dateType.value = type + datePickerShow.value = !datePickerShow.value + } + const cancel = () => { + datePickerShow.value = !datePickerShow.value + } + const changePicker = (val) => { + console.log(val); + if (dateType.value == 3) { + workDate.value = val.startDate.result + '鑷�' + val.endDate.result + // publicJob.wordStartTime = new Date(val.startDate.result) //宸ヤ綔寮�濮嬫椂闂� + publicJob.wordStartTime = val.startDate.result //宸ヤ綔寮�濮嬫椂闂� + publicJob.wordEndTime = new Date(val.endDate.result) + } else { + workTime.value = val.startDate.result + '鑷�' + val.endDate.result + publicJob.StartTime = `${val.startDate.param}T${val.startDate.result}:00.000` //宸ヤ綔寮�濮嬫椂闂� + publicJob.EndTime = `${val.endDate.param}T${val.endDate.result}:00.000` + } + } + const saveOrder = () => { + console.log(publicJob, 'publicJob', publicJob.workPrice); + formRef.value.validate().then(res => { + isLoading.value = true + let time = publicJob.wordStartTime + publicJob.wordStartTime = new Date(publicJob.wordStartTime) + $api.saveOrder(publicJob).then(res => { + if (res.code == 1) { + if (editItem) { + uni.navigateBack() + } else { + uni.navigateTo({ + url: '/pages/order/order' + }) + } + $util.showToast({ + title: editItem?'淇敼鎴愬姛锛�':"淇濆瓨鎴愬姛锛�", + icon: "success" + }) + } else { + publicJob.wordStartTime = time + $util.showToast({ + title: res.error + }) + } + isLoading.value = false + }) + }) + } + const toMap = () => { + // #ifdef MP-WEIXIN + console.log(store, 'store鈥�'); + const txMapkey = store.state.config.qqMapKey; //浣跨敤鍦ㄨ吘璁綅缃湇鍔$敵璇风殑key + const referer = store.state.config.shopName; //璋冪敤鎻掍欢鐨刟pp鐨勫悕绉� + const location = JSON.stringify({ + latitude: publicJob.latitude == "" ? latitude : publicJob.latitude, + longitude: publicJob.longitude == "" ? longitude : publicJob.longitude + }); + const category = ''; + + wx.navigateTo({ + url: 'plugin://chooseLocation/index?key=' + txMapkey + '&referer=' + referer + + '&location=' + + location + '&category=' + category + }); + // #endif + + // #ifdef APP-PLUS || APP-PLUS-NVUE + uni.chooseLocation({ + success: (res) => { + console.log(res, 'res'); + } + }); + // #endif + } </script> <style> - .list{ - - } + .list {} + .content { width: 100%; box-sizing: border-box; background-color: #fff; } + + .u-textarea { + padding: 0 !important; + } </style> \ No newline at end of file -- Gitblit v1.9.1