Commit 328547074b5d3bc277cb01134847ccbc4615ad9d

Authored by guzijian
1 parent 38584a8d

feat: 初步修改

Showing 24 changed files with 487 additions and 961 deletions
garbage-removal/src/apis/company.js
... ... @@ -19,3 +19,12 @@ export async function queryEnterpriseList(params) {
19 19 {params:params}
20 20 );
21 21 }
  22 +
  23 +/**
  24 + * @method 企业详情
  25 + */
  26 +export async function queryEnterpriseById(id) {
  27 + return await request.get(
  28 + `/unit/enterprise/${id}`
  29 + );
  30 +}
... ...
garbage-removal/src/pages.json
... ... @@ -45,7 +45,7 @@
45 45 "enablePullDownRefresh": false
46 46 }
47 47 },{
48   - "path": "pages/order/detail/index",
  48 + "path": "pages/order/other-home/detail/index",
49 49 "style": {
50 50 "navigationBarTitleText": "派单详情",
51 51 "navigationBarTextStyle": "white",
... ... @@ -53,7 +53,7 @@
53 53 "enablePullDownRefresh": false
54 54 }
55 55 },{
56   - "path": "pages/order/success/index",
  56 + "path": "pages/order/other-home/success/index",
57 57 "style": {
58 58 "navigationBarTitleText": "完成派单",
59 59 "navigationBarTextStyle": "white",
... ... @@ -61,7 +61,7 @@
61 61 "enablePullDownRefresh": false
62 62 }
63 63 },{
64   - "path": "pages/order/guest/index",
  64 + "path": "pages/order/other-home/guest/index",
65 65 "style": {
66 66 "navigationBarTitleText": "详情",
67 67 "navigationBarTextStyle": "white",
... ... @@ -69,7 +69,7 @@
69 69 "enablePullDownRefresh": false
70 70 }
71 71 },{
72   - "path": "pages/order/upload/index",
  72 + "path": "pages/order/other-home/upload/index",
73 73 "style": {
74 74 "navigationBarTitleText": "上传照片",
75 75 "navigationBarTextStyle": "white",
... ... @@ -77,7 +77,7 @@
77 77 "enablePullDownRefresh": false
78 78 }
79 79 },{
80   - "path": "pages/order/evaluate-info/index",
  80 + "path": "pages/order/other-home/evaluate-info/index",
81 81 "style": {
82 82 "navigationBarTitleText": "评价详情",
83 83 "navigationBarTextStyle": "white",
... ... @@ -85,7 +85,7 @@
85 85 "enablePullDownRefresh": false
86 86 }
87 87 },{
88   - "path": "pages/order/evaluate/index",
  88 + "path": "pages/order/other-home/evaluate/index",
89 89 "style": {
90 90 "navigationBarTitleText": "写评价",
91 91 "navigationBarTextStyle": "white",
... ...
garbage-removal/src/pages/home/clean/company-detail/index.vue
... ... @@ -93,6 +93,7 @@
93 93  
94 94 <script setup>
95 95 import { queryCarList } from '@/apis/carinfo.js';
  96 +import { queryEnterpriseById } from '@/apis/company.js';
96 97 import { onLoad } from '@dcloudio/uni-app';
97 98 import { ref } from 'vue';
98 99 const baseDataList = ref([{ label: '法人' }, { label: '负责人' }, { label: '业务联系电话' }, { label: '道路运输许可证' }, { label: '核准有效期' }, { label: '注册地址' }]);
... ... @@ -130,11 +131,23 @@ const handleContactClick = (val) =&gt; {
130 131 }).catch(err => { });
131 132 }
132 133 onLoad((options) => {
133   - companyInfo.value = JSON.parse(options.companyObj);
134   - userAddress.value = JSON.parse(options.userAddress);
135   - tel.value = options.tel;
136   - initData(companyInfo.value);
137   - queryCarList({ companyId: companyInfo.value.id }).then(res => {
  134 + let companyId;
  135 + if (options.companyObj && options.userAddress && options.tel) {
  136 + companyInfo.value = JSON.parse(options.companyObj);
  137 + userAddress.value = JSON.parse(options.userAddress);
  138 + tel.value = options.tel;
  139 + initData(companyInfo.value);
  140 + companyId = companyInfo.value.id
  141 + }
  142 + if (options.companyId) {
  143 + companyId = options.companyId
  144 + queryEnterpriseById(companyId).then(res => {
  145 + companyInfo.value = res.data.data
  146 + initData(companyInfo.value);
  147 + })
  148 + }
  149 +
  150 + queryCarList({ companyId: companyId }).then(res => {
138 151 carList.value = res.data.rows
139 152 })
140 153 })
... ... @@ -161,7 +174,6 @@ const handlerClickJumpMap = () =&gt; {
161 174 }
162 175 }
163 176 })
164   - console.log('跳转定位到公司位置');
165 177 }
166 178  
167 179 const initData = (baseData) => {
... ...
garbage-removal/src/pages/home/clean/index-back.vue deleted 100644 → 0
1   -<template>
2   - <view class="mask-box">
3   - <liu-delivery-time :isMask="true" :change="changeTime" ref="chooseTime" title="请选择预约时间"></liu-delivery-time>
4   - <u-picker closeOnClickOverlay :show="carTypeShowFlag" :columns="candidates" :itemHeight="100"
5   - @confirm="handlePickerCarInfoConfirm" @cancel="handleCarInfoClick(false)"
6   - @close="handleCarInfoClick(false)"></u-picker>
7   - <u-picker closeOnClickOverlay :show="garbageTypeShowFlag" :columns="garbageTypeList" :itemHeight="100"
8   - @confirm="handlePickerGarbageTypeConfirm" @close="handleGarbageTypeClick(false)"
9   - @cancel="handleGarbageTypeClick(false)"></u-picker>
10   - <u-popup :zIndex="10074" closeOnClickOverlay :show="carPopupShowFlag" :round="10" @close="handlePopupClick(false)"
11   - @open="handlePopupClick(true)">
12   - <view class="company-clean-container-car-popup">
13   - <!-- 主要内容 -->
14   - <view class="company-clean-container-car-popup-content">
15   - <view class="company-clean-container-car-popup-content-title">
16   - <view style="text-align: center;">
17   - 车辆类型
18   - </view>
19   - </view>
20   - <view class="company-clean-container-car-popup-content-box">
21   - <view class="company-clean-container-car-popup-content-box-item" v-for="(item, index) in garCarInfoList"
22   - :key="index">
23   - <view class="company-clean-container-car-popup-content-box-item-text">
24   - {{ item.garOrderCarType }}
25   - </view>
26   - <view class="company-clean-container-car-popup-content-box-item-number" hover-class="hoverClickStyle">
27   - <u-number-box :min="0" :max="9999" integer buttonSize="46" :inputWidth="100"
28   - v-model="garCarInfoList[item.garOrderCarType].garOrderCarNumber" :disabledInput="true"></u-number-box>
29   - </view>
30   - </view>
31   -
32   - </view>
33   - </view>
34   - <!-- 占位盒子 -->
35   - <view class="company-clean-container-car-popup-button-safe">
36   - &nbsp;
37   - </view>
38   - </view>
39   - </u-popup>
40   - </view>
41   - <view class="company-clean-container">
42   - <view class="company-clean-container-box">
43   - <view class="company-clean-container-header">
44   - <view class="company-clean-container-header-address">
45   - {{ userAddress.garUserAddress }}{{ userAddress.garRemark }}
46   - </view>
47   - <view class="company-clean-container-header-base-info">
48   - {{ userAddress.garUserContactName }} {{ userAddress.garUserContactTel }}
49   - </view>
50   - <view @click.stop="handleTimeChoose" class="company-clean-container-header-reservation">
51   - <view class="company-clean-container-header-reservation-left">
52   - <text style="color: red;">*</text> <u-icon name="calendar" size="40"></u-icon>预约时间
53   - </view>
54   - <view class="company-clean-container-header-reservation-right">
55   - <text style="margin-right: 10rpx;">{{ dayTime ? dayTime : "请选择时间" }}</text> <u-icon name="arrow-right"
56   - size="25"></u-icon>
57   - </view>
58   - </view>
59   - </view>
60   - <view class="company-clean-container-car-main">
61   - <view class="company-clean-container-car-main-content">
62   - <view v-if="paramFrom.carType" class="company-clean-container-car-main-content-type">
63   - <text class="company-clean-container-car-main-content-type-price-area"><text
64   - style="color: red;">*</text>车辆类型:</text>
65   - <!-- <uni-combox label="" :candidates="candidates" placeholder="请选择运输车辆类型"
66   - v-model="paramFrom.carType"></uni-combox> -->
67   - <view class="" hover-class="hoverClickStyle" @click.stop="handleCarInfoClick(true)">
68   - <u--input color="#909399" border="none" style="pointer-events:none" :modelValue="paramFrom.carType"
69   - type="text" placeholder-class="line" readonly />
70   - </view>
71   - </view>
72   - <view class="company-clean-container-car-main-content-type">
73   - <text class="company-clean-container-car-main-content-type-price-area"><text
74   - style="color: red;">*</text>垃圾类型:</text>
75   - <view hover-class="hoverClickStyle" @click.stop="handleGarbageTypeClick(true)">
76   - <u--input color="#909399" border="none" style="pointer-events:none" :modelValue="paramFrom.garbageType"
77   - type="text" placeholder-class="line" readonly />
78   - </view>
79   - </view>
80   - <view class="company-clean-container-car-main-content-img">
81   - <image class="company-clean-container-car-main-content-img" :src="carFront" />
82   - </view>
83   - <view class="company-clean-container-car-main-content-remark">
84   - {{ garCarTransportInfo }}
85   - </view>
86   -
87   - <view v-if="paramFrom.carType" class="company-clean-container-car-main-content-number">
88   - <view class="company-clean-container-car-main-content-number-txt">
89   - <text style="color: red;">*</text>协商车辆数量:
90   - </view>
91   - <view class="company-clean-container-car-main-content-number-button">
92   - <u-number-box :min="0" :max="9999" integer buttonSize="46" :inputWidth="100"
93   - v-model="garCarInfoList[paramFrom.carType].garOrderCarNumber"></u-number-box>
94   - </view>
95   - </view>
96   - <view class="company-clean-container-car-main-content-prompt">
97   - 温馨提示:垃圾类型不符合,企业有权拒绝清运。
98   - </view>
99   - </view>
100   - </view>
101   - <view class="company-clean-container-site-image-info">
102   - <view class="company-clean-container-site-image-info-remark">
103   - <text style="color: red;">*</text>现场照片(最多上传10张)
104   - </view>
105   - <view class="company-clean-container-site-image-info-img">
106   - <u-upload width="200" height="150" :fileList="fileList" @afterRead="afterRead" @delete="deletePic" name="3"
107   - multiple :maxCount="10" :previewFullImage="true"></u-upload>
108   - </view>
109   - <view class="company-clean-container-site-image-info-input-remark">
110   - 填写备注
111   - </view>
112   - <view class="company-clean-container-site-image-info-input-remark-box">
113   - <u--textarea v-model="paramFrom.remark" placeholder="请输入内容"></u--textarea>
114   - </view>
115   - </view>
116   - <view class="company-clean-container-site-image-info-sure-button">
117   - <view class="company-clean-container-site-image-info-sure-button-radio">
118   - <view @click="changeAgree">
119   - <u-checkbox-group v-model="paramFrom.sureReadFlag" placement="row">
120   - <u-checkbox activeColor="#5ac725" :customStyle="{ marginBottom: '0px', marginTop: '1px' }" size="25"
121   - labelSize="25" shape="square" :key="0" :name="true" :labelDisabled="true"
122   - labelColor="#909399"></u-checkbox>
123   - </u-checkbox-group>
124   - </view>
125   - <view>
126   - 本人已确认信息真实有效,并将上述信息告知市容环境卫生主管部门。
127   - </view>
128   - </view>
129   - </view>
130   - </view>
131   - <view class="company-clean-bottom" style="z-index: 10074;">
132   - <movable-area v-if="!carPopupShowFlag" ref="movableAreaElement" class="movableArea">
133   - <movable-view class="movableView" :x="x" :y="y" direction="all" @change="onChange">
134   - <view class="company-clean-call-box-container">
135   - <u-icon @click="handleContactClick(tel)" name="phone-fill" color="#ffffff" size="50"></u-icon>
136   - </view>
137   - </movable-view>
138   - </movable-area>
139   - <view class="company-clean-bottom-box">
140   - <view class="company-clean-bottom-left">
141   - <view class="company-clean-bottom-left-icon">
142   - <u-icon @click="carPopupShowFlag = true" :stop="true" size="50" name="car-fill"></u-icon>
143   - </view>
144   - <view class="company-clean-bottom-left-number">
145   - <up-badge :type="type" max="99" :value="garCarNumberCount"></up-badge>
146   - </view>
147   - </view>
148   - <view class="company-clean-bottom-right">
149   - <u-button @click="handleOderSure" shape="square" color="#a9e08f" text="立即派单"></u-button>
150   - </view>
151   - </view>
152   - </view>
153   - </view>
154   -</template>
155   -
156   -<script setup>
157   -import { queryCarList } from '@/apis/carinfo.js';
158   -import { uploadFilePromise } from '@/apis/common.js';
159   -import { saveOrder } from '@/apis/order.js';
160   -import liuDeliveryTime from "@/components/liu-delivery-time/liu-delivery-time.vue";
161   -import { useMainStore } from '@/stores/index.js';
162   -import { onLoad } from '@dcloudio/uni-app';
163   -import { computed, getCurrentInstance, nextTick, ref, watch } from 'vue';
164   -const { proxy } = getCurrentInstance();
165   -
166   -const store = useMainStore();
167   -const userType = computed(() => store.userType)
168   -const x = ref(5)
169   -const y = ref()
170   -const movableAreaElement = ref()
171   -const companyObj = ref()
172   -const tel = ref()
173   -const carTypeShowFlag = ref(false)
174   -const garbageTypeShowFlag = ref(false)
175   -const carPopupShowFlag = ref(false)
176   -const userAddress = ref({
177   - garUserContactName: "",
178   - garUserContactTel: "",
179   - garRemark: "",
180   - garUserAddress: "",
181   - garCoordinate: "",
182   - garLongitude: "",
183   - garLatitude: "",
184   -})
185   -// 车辆信息
186   -const garCarInfoList = ref({})
187   -const garCarLabelInfoList = ref({})
188   -const garCarLabelInfoNow = ref()
189   -const garCarTransportInfo = computed(() => {
190   - try {
191   - let carInfo = garCarLabelInfoNow.value
192   - let lengthWidthHeight = carInfo.lengthWidthHeight.split(";");
193   - let boxLength = lengthWidthHeight[0]; // 箱子的长度(单位:米)
194   - let boxWidth = lengthWidthHeight[1]; // 箱子的宽度(单位:米)
195   - let boxHeight = lengthWidthHeight[2]; // 箱子的高度(单位:米)
196   -
197   - let bagLength = 0.75; // 袋子的长度(单位:米)
198   - let bagWidth = 0.45; // 袋子的宽度(单位:米)
199   - let bagHeight = 0.22; // 袋子的高度(单位:米)
200   -
201   - let boxVolume = boxLength * boxWidth * boxHeight; // 箱子的体积(单位:立方米)
202   - let bagVolume = bagLength * bagWidth * bagHeight; // 袋子的体积(单位:立方米)
203   -
204   - let bagCount = Math.floor(boxVolume / bagVolume); // 箱子可以容纳的袋子数量(向下取整)
205   -
206   - return `箱体长${boxLength}m宽${boxWidth}m高${boxHeight}m,最多课容纳约${bagCount}袋袋装修垃圾(75cm * 45cm每袋)。`
207   - } catch (error) {
208   - return "符合装修垃圾运输管理规范的新型环保智能装修垃圾运输车。"
209   - }
210   -
211   -})
212   -// 车辆数量
213   -const garCarNumberCount = computed(() => {
214   - let count = 0;
215   - if (garCarInfoList.value) {
216   - for (const key in garCarInfoList.value) {
217   - const element = garCarInfoList.value[key];
218   - count = typeof element.garOrderCarNumber === 'number' ? count + element.garOrderCarNumber : count;
219   - console.log(element.garOrderCarNumber instanceof Number);
220   - }
221   - }
222   - console.log(count);
223   - return count;
224   -})
225   -const garbageTypeList = ref([["装修垃圾", "建筑垃圾"]])
226   -const paramFrom = ref({
227   - carNumber: 0,
228   - remark: "",
229   - sureReadFlag: [],
230   - carType: "",
231   - garbageType: "装修垃圾"
232   -})
233   -const dayTime = ref()
234   -
235   -const chooseTime = ref()
236   -const fileList = ref([])
237   -const candidates = ref([])
238   -const handleTimeChoose = () => {
239   - chooseTime.value.open();
240   -}
241   -
242   -const changeTime = (e) => {
243   - dayTime.value = e.value
244   -}
245   -const changeAgree = (e) => {
246   - // paramFrom.value.sureReadFlag = e
247   - paramFrom.value.sureReadFlag[0] = !paramFrom.value.sureReadFlag[0]
248   -}
249   -const onChange = (e) => {
250   - // console.log(e);
251   -}
252   -
253   -const handlePopupClick = (val) => {
254   - carPopupShowFlag.value = val
255   -}
256   -
257   -/**
258   - * 初始化信息
259   - */
260   -onLoad((options) => {
261   - companyObj.value = JSON.parse(options.companyObj);
262   - tel.value = options.tel;
263   - userAddress.value = JSON.parse(options.userAddress);
264   - queryCarList({ companyId: companyObj.value.id }).then(res => {
265   - // 设置车辆类型
266   - candidates.value = [[...new Set(res.data.rows
267   - .filter(item => item.containerVolume)
268   - .map(item => {
269   - garCarLabelInfoList.value[item.containerVolume + "方车"] = item
270   - return item.containerVolume + "方车"
271   - }))
272   - ]];
273   - // 设置初始车辆数量
274   - candidates.value[0].forEach((item, index) => {
275   - garCarInfoList.value[item] = {
276   - garOrderCarNumber: 0,
277   - garOrderCarType: item
278   - }
279   - })
280   - // 设置默认车辆
281   - paramFrom.value.carType = candidates.value[0][0];
282   - garCarLabelInfoNow.value = garCarLabelInfoList.value[paramFrom.value.carType]
283   - })
284   -})
285   -
286   -
287   -const handleCarInfoClick = (val) => {
288   - carTypeShowFlag.value = val
289   -}
290   -const handleGarbageTypeClick = (val) => {
291   - garbageTypeShowFlag.value = val
292   -}
293   -/**
294   - * 拨打电话回调
295   - */
296   -const handleContactClick = (val) => {
297   - uni.makePhoneCall({ phoneNumber: val }).then(res => {
298   - }).catch(err => { });
299   -}
300   -
301   -// 删除图片
302   -const deletePic = (event) => {
303   - fileList.value.splice(event.index, 1);
304   -};
305   -
306   -// 新增图片
307   -const afterRead = async (event) => {
308   - // 当设置 mutiple 为 true 时, file 为数组格式,否则为对象格式
309   - let lists = [].concat(event.file);
310   - let fileListLen = fileList.value.length;
311   - lists.map((item) => {
312   - fileList.value.push({
313   - ...item,
314   - status: 'uploading',
315   - message: '上传中',
316   - });
317   - });
318   - for (let i = 0; i < lists.length; i++) {
319   - let requestPath = import.meta.env.VITE_BASE_URL + import.meta.env.VITE_BASE_FILE_UPLOAD_PREFIX;
320   - const result = await uploadFilePromise(requestPath, lists[i].url);
321   - let item = fileList.value[fileListLen];
322   - fileList.value.splice(fileListLen, 1, {
323   - ...item,
324   - status: 'success',
325   - message: '',
326   - url: result.data.fileName,
327   - });
328   - fileListLen++;
329   - }
330   -};
331   -
332   -
333   -const handlePickerGarbageTypeConfirm = (e) => {
334   - paramFrom.value.garbageType = e.value
335   - garbageTypeShowFlag.value = false
336   -}
337   -const handlePickerCarInfoConfirm = (e) => {
338   - paramFrom.value.carType = e.value
339   - garCarLabelInfoNow.value = garCarLabelInfoList.value[paramFrom.value.carType]
340   - carTypeShowFlag.value = false
341   - console.log(garCarLabelInfoNow.value);
342   -}
343   -
344   -/**
345   - * 处理下单
346   - */
347   -const handleOderSure = () => {
348   - let garCarInfos = [];
349   - for (const key in garCarInfoList.value) {
350   - garCarInfos.push(garCarInfoList.value[key])
351   - }
352   -
353   - let params = {
354   - /**
355   - * 派单地址
356   - */
357   - garOrderAddress: userAddress.value.garUserAddress,
358   -
359   - /**
360   - * 派单详细地址
361   - */
362   - garOrderAddressDetails: userAddress.value.garRemark,
363   -
364   - /**
365   - * 派单姓名
366   - */
367   - garOrderContactName: userAddress.value.garUserContactName,
368   - garCarInfoList: garCarInfos,
369   -
370   - /**
371   - * 垃圾类型
372   - */
373   - garOrderTrashType: paramFrom.value.garbageType,
374   -
375   - /**
376   - * 派单人电话
377   - */
378   - garOrderContactTel: userAddress.value.garUserContactTel,
379   -
380   - /**
381   - * 承接经营单位
382   - */
383   - garOrderCompanyId: companyObj.value.id,
384   -
385   - /**
386   - * 公司名称
387   - */
388   - garOrderCompanyName: companyObj.value.name,
389   -
390   - /**
391   - * 公司负责人电话
392   - */
393   - garOrderCompanyTel: companyObj.value.servicePhone,
394   -
395   - /**
396   - * 约定时间
397   - */
398   - garOrderAgreementTime: dayTime.value,
399   - /**
400   - * 备注
401   - */
402   - garRemark: paramFrom.value.remark,
403   - /**
404   - * 图片列表
405   - */
406   - imageUrls: fileList.value.map(item => item.url),
407   - garLongitude: userAddress.value.garLongitude,
408   - garLatitude: userAddress.value.garLatitude,
409   - garCoordinate: userAddress.value.garCoordinate,
410   - }
411   - if (!validateParams(params)) {
412   - return;
413   - }
414   -
415   - saveOrder(params).then(res => {
416   - // TODO 派单详情
417   - if (res.data.success) {
418   - if (userType.value === "运输驾驶员") {
419   - uni.$u.toast("派单成功,请切换成且角色查看派单详情")
420   - setTimeout(() => {
421   - uni.$u.route({
422   - type: 'navigateBack',
423   - url: `pages/home/index`,
424   - })
425   - }, 300)
426   - } else {
427   - uni.$u.route({
428   - type: "redirect",
429   - url: `pages/order/detail/index`,
430   - params: {
431   - orderId: res.data.data
432   - }
433   - })
434   - uni.$u.toast(res.data.msg)
435   - }
436   -
437   - }
438   - })
439   -}
440   -
441   -
442   -/**
443   - * 校验参数
444   - * @param {Object} params
445   - */
446   -const validateParams = (params) => {
447   - if (!paramFrom.value.sureReadFlag[0]) {
448   - jumpPrompt('请勾选"本人已确认信息真实有效,并将上诉信息告知市容环境卫生主管部门"')
449   - return false;
450   - }
451   - for (const key in params) {
452   - if (!params[key] && key != "garRemark") {
453   - switch (key) {
454   - case "garOrderAgreementTime":
455   - jumpPrompt('请选择预约时间')
456   - break;
457   -
458   - }
459   - return false;
460   - }
461   - if (key === "garCarInfoList") {
462   - let count = 0;
463   - params[key].forEach(item => {
464   - count += item.garOrderCarNumber;
465   - })
466   - if (count === 0) {
467   - jumpPrompt('请添加车辆数量')
468   - return false;
469   - }
470   - }
471   -
472   - if (key == "imageUrls") {
473   - if (params[key].length == 0) {
474   - jumpPrompt('请上传现场图片')
475   - return false;
476   - }
477   - if (!validateImage(params[key])) {
478   - uni.$u.toast('请等待图片上传完毕')
479   - return false;
480   - }
481   - }
482   - }
483   - return true;
484   -}
485   -
486   -const jumpPrompt = (msg) => {
487   - uni.showModal({
488   - title: '提示',
489   - content: msg,
490   - showCancel: false,
491   - success: function (res) {
492   - if (res.confirm) {
493   - } else if (res.cancel) {
494   - }
495   - }
496   - });
497   -}
498   -const validateImage = (fileList) => {
499   - for (let index = 0; index < fileList.length; index++) {
500   - const str = fileList[index];
501   - if (!str.startsWith("/profile/upload")) {
502   - return false;
503   - }
504   - }
505   - return true;
506   -}
507   -
508   -
509   -// 开始执行一次
510   -watch(carPopupShowFlag, (val) => {
511   - // console.log(val);
512   - // carPopupShowFlag.value = val
513   - if (!val) {
514   - setTimeout(() => {
515   - nextTick(() => {
516   - let areaHeight;
517   - // select中的参数就如css选择器一样选择元素
518   - let movableArea = uni.createSelectorQuery().in(proxy).select(".movableArea");
519   - movableArea.boundingClientRect(function (data) {
520   - // data - 包含元素的高度等信息
521   - areaHeight = data.height;
522   - y.value = areaHeight > 40 ? (areaHeight - 40) : areaHeight;
523   - }).exec(function (res) {
524   - // 注意:exec方法必须执行,即便什么也不做,否则不会获取到任何数据
525   - })
526   - })
527   - }, 0);
528   - }
529   -}, {
530   - immediate: true
531   -})
532   -
533   -</script>
534   -
535   -<style lang="scss" scoped>
536   -$custom-marin-bottom: 20rpx;
537   -$custom-page-padding: 20rpx;
538   -$custom-border-radio: 20rpx;
539   -$custom-bottom-height: 200rpx;
540   -
541   -
542   -.company-clean-container {
543   - height: 100%;
544   - width: 100%;
545   - background-color: $u-info-light;
546   - box-sizing: border-box;
547   - overflow-y: scroll;
548   -
549   -
550   - .company-clean-container-box {
551   - height: 100%;
552   - width: 100%;
553   - padding: $custom-page-padding;
554   - box-sizing: border-box;
555   -
556   - .company-clean-container-header {
557   - padding: $custom-page-padding;
558   - box-sizing: border-box;
559   - background-color: #ffffff;
560   - border-radius: $custom-border-radio;
561   - margin-bottom: $custom-marin-bottom;
562   -
563   - .company-clean-container-header-address {
564   - font-size: 30rpx;
565   - font-weight: bold;
566   - color: $u-main-color;
567   - }
568   -
569   - .company-clean-container-header-base-info {
570   - font-size: 25rpx;
571   - color: $u-info;
572   - line-height: 80rpx;
573   - }
574   -
575   - .company-clean-container-header-reservation {
576   - display: flex;
577   - justify-content: space-between;
578   - font-size: 25rpx;
579   - @include handleClick;
580   -
581   - .company-clean-container-header-reservation-left {
582   - display: flex;
583   - align-items: center;
584   - color: $u-content-color;
585   - }
586   -
587   - .company-clean-container-header-reservation-right {
588   - display: flex;
589   - align-items: center;
590   - color: $u-content-color;
591   - }
592   - }
593   -
594   -
595   - }
596   -
597   - .company-clean-container-car-main {
598   - padding: $custom-page-padding;
599   - border-radius: $custom-border-radio;
600   - box-sizing: border-box;
601   - background-color: #ffffff;
602   - margin-bottom: $custom-marin-bottom;
603   -
604   - .company-clean-container-car-main-title {
605   - font-size: 30rpx;
606   - font-weight: bold;
607   - color: #a9e08f;
608   - display: flex;
609   - justify-content: center;
610   - }
611   -
612   - .company-clean-container-car-main-content {
613   - width: 100%;
614   - display: flex;
615   - flex-direction: column;
616   - justify-content: center;
617   -
618   - .company-clean-container-car-main-content-img {
619   - width: 600rpx;
620   - height: 400rpx;
621   -
622   - .company-clean-container-car-main-content-img {
623   - width: 600rpx;
624   - height: 400rpx;
625   - }
626   - }
627   -
628   - .company-clean-container-car-main-content-remark {
629   - color: $u-tips-color;
630   - font-size: 23rpx;
631   - line-height: 30rpx;
632   - padding: $custom-page-padding;
633   - background-color: $u-info-light;
634   - word-break: break-all;
635   - }
636   -
637   - .company-clean-container-car-main-content-type {
638   - margin-top: $custom-marin-bottom;
639   - margin-bottom: $custom-marin-bottom;
640   - display: flex;
641   - justify-content: space-between;
642   - border-radius: $custom-border-radio;
643   - // background-color: $u-info-light;
644   - box-sizing: border-box;
645   -
646   - .company-clean-container-car-main-content-type-price-area {
647   - display: flex;
648   - justify-content: flex-start;
649   - align-items: center;
650   - color: $u-info;
651   - white-space: nowrap;
652   - }
653   - }
654   -
655   - .company-clean-container-car-main-content-number {
656   - display: flex;
657   - justify-content: space-between;
658   - font-size: 28rpx;
659   - color: $u-tips-color;
660   - font-weight: small;
661   - align-items: center;
662   -
663   - .company-clean-container-car-main-content-number-txt {
664   - line-height: 80rpx;
665   - }
666   -
667   - .company-clean-container-car-main-content-number-button {}
668   - }
669   - }
670   -
671   -
672   - }
673   -
674   - .company-clean-container-car-main-content-prompt {
675   - color: $u-tips-color;
676   - font-size: 23rpx;
677   - line-height: 30rpx;
678   - padding: $custom-page-padding;
679   - word-break: break-all;
680   - text-align: center;
681   - }
682   -
683   - .company-clean-container-site-image-info {
684   - padding: $custom-page-padding;
685   - background-color: #ffffff;
686   - border-radius: $custom-border-radio;
687   - color: $u-info;
688   - font-size: 28rpx;
689   - margin-bottom: $custom-marin-bottom;
690   -
691   - .company-clean-container-site-image-info-remark {
692   - line-height: 80rpx;
693   -
694   - }
695   -
696   - .company-clean-container-site-image-info-img {}
697   -
698   - .company-clean-container-site-image-info-input-remark {
699   - line-height: 80rpx;
700   - }
701   -
702   - .company-clean-container-site-image-info-input-remark-box {}
703   - }
704   -
705   - .company-clean-container-site-image-info-sure-button {
706   - padding-bottom: $custom-bottom-height;
707   - font-size: 28rpx;
708   -
709   - .company-clean-container-site-image-info-sure-button-radio {
710   - padding: $custom-page-padding;
711   - box-sizing: border-box;
712   - display: flex;
713   - // flex-flow: row wrap;
714   - font-size: 25rpx;
715   - color: $u-info;
716   - }
717   - }
718   - }
719   -
720   - .company-clean-bottom {
721   - position: absolute;
722   - width: 100%;
723   - // height: 100%;
724   - bottom: 0;
725   - left: 0;
726   - // 阴影
727   - box-shadow: 0 0 10rpx 0 rgba(0, 0, 0, 0.1);
728   -
729   - .movableArea {
730   - pointer-events: none;
731   - position: fixed;
732   - left: 0;
733   - top: 0;
734   - width: 100%;
735   - height: calc(100% - $custom-bottom-height);
736   - // z-index: 99;
737   -
738   - .movableView {
739   - pointer-events: auto;
740   - min-height: 60rpx;
741   - min-width: 60rpx;
742   -
743   - .company-clean-call-box-container {
744   - min-height: 60rpx;
745   - min-width: 60rpx;
746   - display: flex;
747   - align-items: center;
748   - justify-content: center;
749   - background-color: #a9e08f;
750   - border-radius: 100%;
751   - }
752   - }
753   - }
754   -
755   - .company-clean-bottom-box {
756   - height: $custom-bottom-height;
757   - background-color: #ffffff;
758   - padding: 50rpx;
759   - box-sizing: border-box;
760   - display: flex;
761   - justify-content: space-between;
762   - align-items: center;
763   -
764   - .company-clean-bottom-left {
765   - display: flex;
766   -
767   - .company-clean-bottom-left-icon {
768   - transform: rotateY(180deg);
769   - }
770   -
771   - }
772   -
773   - .company-clean-bottom-right {
774   - min-width: 200rpx;
775   - }
776   - }
777   -
778   - }
779   -
780   -
781   -
782   -}
783   -
784   -.hoverClickStyle {
785   - @include handleClick;
786   -}
787   -
788   -// 弹出框
789   -.company-clean-container-car-popup {
790   - min-height: 450rpx;
791   - padding: $custom-page-padding;
792   - box-sizing: border-box;
793   -
794   - .company-clean-container-car-popup-content {
795   - font-size: 28rpx;
796   -
797   - .company-clean-container-car-popup-content-box {
798   - box-sizing: border-box;
799   - padding: $custom-page-padding;
800   - border: 2rpx solid #a9e08f;
801   - border-radius: 10rpx;
802   -
803   - .company-clean-container-car-popup-content-box-item {
804   - display: flex;
805   - align-items: center;
806   - justify-content: space-between;
807   - margin: 20rpx 0;
808   - box-sizing: border-box;
809   -
810   - .company-clean-container-car-popup-content-box-item-text {}
811   -
812   - .company-clean-container-car-popup-content-box-item-number {}
813   - }
814   - }
815   -
816   - .company-clean-container-car-popup-content-title {
817   - color: $u-main-color;
818   - box-sizing: border-box;
819   - margin-bottom: 20rpx;
820   - font-size: 30rpx;
821   - font-weight: bold;
822   - }
823   - }
824   -
825   - .company-clean-container-car-popup-button-safe {
826   - width: 100%;
827   - height: $custom-bottom-height;
828   - }
829   -}
830   -</style>
garbage-removal/src/pages/home/clean/index.vue
... ... @@ -182,6 +182,7 @@
182 182 </template>
183 183  
184 184 <script setup>
  185 +import { queryAddress } from '@/apis/address.js';
185 186 import { queryCarList } from '@/apis/carinfo.js';
186 187 import { uploadFilePromise } from '@/apis/common.js';
187 188 import { saveOrder } from '@/apis/order.js';
... ... @@ -296,7 +297,21 @@ const handlePopupClick = (val) =&gt; {
296 297 onLoad((options) => {
297 298 companyObj.value = JSON.parse(options.companyObj);
298 299 tel.value = options.tel;
299   - userAddress.value = JSON.parse(options.userAddress);
  300 + if (options.userAddress == 'undefined') {
  301 + queryAddress('CURRENT').then(res => {
  302 + try {
  303 + if (res.data.data && res.data.data[0]) {
  304 + console.log(res);
  305 + userAddress.value = res.data.data[0] ? res.data.data[0] : {}
  306 + console.log(userAddress.value);
  307 + }
  308 + } catch (error) {
  309 + userAddress.value = {};
  310 + }
  311 + })
  312 + } else {
  313 + userAddress.value = JSON.parse(options.userAddress);
  314 + }
300 315 queryCarList({ companyId: companyObj.value.id }).then(res => {
301 316 // 设置车辆类型
302 317 candidates.value = [[...new Set(res.data.rows
... ... @@ -453,6 +468,7 @@ const handleOderSure = () =&gt; {
453 468 garInCarStore: paramFrom.value.garInCarStore
454 469 }
455 470 if (!validateParams(params)) {
  471 + console.log("未通过", params);
456 472 return;
457 473 }
458 474  
... ... @@ -470,7 +486,7 @@ const handleOderSure = () =&gt; {
470 486 } else {
471 487 uni.$u.route({
472 488 type: "redirect",
473   - url: `pages/order/detail/index`,
  489 + url: `pages/order/other-home/detail/index`,
474 490 params: {
475 491 orderId: res.data.data
476 492 }
... ...
garbage-removal/src/pages/home/clean/scroll-text.vue deleted 100644 → 0
1   -<template>
2   - <view class="car-type-list-box" :style="activeStyle">
3   - <span v-for="(item, index) in candidates[0]" :key="index">{{ item }}</span>
4   -
5   - </view>
6   -</template>
7   -
8   -<script setup>
9   -import { getCurrentInstance, onMounted, ref } from "vue";
10   -const { proxy } = getCurrentInstance();
11   -const activeStyle = ref({
12   - height: '100rpx',
13   - display: 'flex',
14   - justifyContent: 'center',
15   - alignItems: 'center',
16   - flexDirection: 'column',
17   - overflowY: 'auto',
18   -})
19   -// uniapp 限制不能直接获取操作dom只能通过动态绑定style修改样式
20   -const props = defineProps({
21   - candidates: {
22   - type: Array,
23   - required: true,
24   - default: () => []
25   - }
26   -})
27   -const columns = ref(props.candidates[0])
28   -onMounted(() => {
29   - // carTypeBox.value.style.height = minHeight.value + 'rpx';
30   -
31   -
32   -})
33   -</script>
34   -
35   -<style lang="scss" scoped></style>
garbage-removal/src/pages/login/index.vue
... ... @@ -44,7 +44,7 @@ import { userLogin } from &quot;@/apis/user.js&quot;;
44 44 export default {
45 45 data() {
46 46 return {
47   - tel: '13222222222',
  47 + tel: '18966667777',
48 48 agree: []
49 49 }
50 50 },
... ...
garbage-removal/src/pages/order/handler-home/index.vue 0 → 100644
  1 +<template>
  2 + <z-paging-swiper>
  3 + <template v-slot:top>
  4 + <u-tabs lineWidth="40" lineColor="#ffffff" lineHeight="6"
  5 + :activeStyle="{ 'color': '#ffffff', 'font-weight': 'bolder' }" :inactiveStyle="{ color: '#ffffff' }"
  6 + ref="uTabsElement" :list="list" :current="current" @change="tabsChange" :scrollable="false"></u-tabs>
  7 + </template>
  8 + <swiper class="swiper" :current="swiperCurrent" @translation="translation" @animationfinish="animationfinish">
  9 + <swiper-item class="swiper-item" v-for="(item, index) in list" :key="index">
  10 + <swiper-list-item :tabIndex="index" :currentIndex="swiperCurrent"></swiper-list-item>
  11 + </swiper-item>
  12 + </swiper>
  13 + </z-paging-swiper>
  14 +</template>
  15 +
  16 +<script setup>
  17 +import { ref } from 'vue';
  18 +import swiperListItem from './swiper-list-item/index.vue';
  19 +const list = ref([{ name: '待清运' }, { name: '清运中' }, { name: '全部' }, { name: '已完成' }])
  20 +const current = ref(0);
  21 +const swiperCurrent = ref(0);
  22 +const uTabsElement = ref();
  23 +uni.setNavigationBarTitle({
  24 + title: "处理场所"
  25 +})
  26 +const tabsChange = (el) => {
  27 + swiperCurrent.value = Number(el.index)
  28 +}
  29 +const animationfinish = (e) => {
  30 + current.value = e.detail.current
  31 + swiperCurrent.value = e.detail.current
  32 +}
  33 +const translation = (e) => {
  34 + uTabsElement.value.setDx(e.detail.dx)
  35 +}
  36 +</script>
  37 +<style lang="scss" scoped>
  38 +::v-deep .u-tabs__wrapper__scroll-view {
  39 + background-color: #53c21d;
  40 +}
  41 +
  42 +.swiper {
  43 + height: 100%;
  44 + background: linear-gradient(to bottom, $u-success-dark, $u-bg-color, $u-bg-color, $u-bg-color, $u-bg-color, $u-bg-color, $u-bg-color);
  45 +}
  46 +</style>
... ...
garbage-removal/src/pages/order/handler-home/swiper-list-item/index.vue 0 → 100644
  1 +<template>
  2 + <view class="content-container">
  3 + <z-paging ref="paging" :fixed="false" v-model="dataList" :auto="false" @query="queryList">
  4 + <empty-view slot:empty></empty-view>
  5 + <view class="page-box">
  6 + <view class="order" v-for="(item, index) in dataList" :key="index">
  7 + <view class="top">
  8 + <view class="left">
  9 + <u-icon name="home" :size="30" color="rgb(94,94,94)"></u-icon>
  10 + <view class="store">{{ item.garOrderCompanyName }}</view>
  11 + <u-icon name="arrow-right" color="rgb(203,203,203)" :size="26"></u-icon>
  12 + </view>
  13 + <view style="display: flex;align-items: center;">
  14 + <text v-if="item.garOrderHandlerStatus != 3 && item.garOrderStatus === 3 && userType === '运输驾驶员'"
  15 + style="font-size: small;color: #f56c6c;">派单已经完成了。</text>
  16 + <view v-if="item.garOrderHandlerStatus === 0 && item.garCancelFlag === 0" class="right">待清运 </view>
  17 + <view v-if="item.garOrderHandlerStatus === 1 && item.garCancelFlag === 0" class="right">清运中 </view>
  18 + <view v-if="item.garOrderHandlerStatus === 3 && userType === '运输驾驶员'" class="right">已完成 </view>
  19 + </view>
  20 + </view>
  21 + <view class="item" @click="handleClick(item.garOrderId)">
  22 + <view class="left">
  23 + <image :src="item.goodsUrl" mode="aspectFill"></image>
  24 + </view>
  25 + <view class="content">
  26 + <view class="title u-line-2">{{ item.garOrderAddress + item.garOrderAddressDetails }}</view>
  27 + <view class="type">垃圾类型: {{ item.garOrderTrashType }}</view>
  28 + <view class="delivery-time">预约时间 {{ item.garOrderAgreementTime }}</view>
  29 + </view>
  30 + </view>
  31 + </view>
  32 + </view>
  33 + </z-paging>
  34 + </view>
  35 +</template>
  36 +
  37 +<script setup>
  38 +import { queryOrderList } from "@/apis/order.js";
  39 +import { useMainStore } from '@/stores/index.js';
  40 +import { onShow } from "@dcloudio/uni-app";
  41 +import { computed, ref, watch } from 'vue';
  42 +const props = defineProps({
  43 + tabIndex: {
  44 + type: Number
  45 + },
  46 + currentIndex: {
  47 + type: Number
  48 + }
  49 +})
  50 +
  51 +const store = useMainStore();
  52 +const userType = computed(() => store.userType)
  53 +const dataList = ref([]);
  54 +const paging = ref(null);
  55 +const firstLoaded = ref(false)
  56 +
  57 +const handleClick = (orderId) => {
  58 + uni.$u.route({
  59 + url: `pages/order/other-home/detail/index`,
  60 + params: {
  61 + orderId: orderId
  62 + }
  63 + })
  64 +}
  65 +
  66 +// list集合
  67 +const queryList = (pageNo, pageSize) => {
  68 + //这里的pageNo和pageSize会自动计算好,直接传给服务器即可
  69 + //这里的请求只是演示,请替换成自己的项目的网络请求,并在网络请求回调中通过paging.value.complete(请求回来的数组)将请求结果传给z-paging
  70 + //request.queryList({ pageNo, pageSize }).then(res => {
  71 + //请勿在网络请求回调中给dataList赋值!!只需要调用complete就可以了
  72 + queryOrderList({ type: props.tabIndex, pageNo, pageSize }).then((res) => {
  73 + paging.value.complete([
  74 + {
  75 + garOrderId: 1,
  76 + garOrderAddress: '广东省广州市天河区',
  77 + garOrderAddressDetails: '天河北路168号',
  78 + garOrderTrashType: '可回收垃圾',
  79 + garOrderAgreementTime: '2022-08-01 10:00',
  80 + garOrderHandlerStatus: 0,
  81 + garCancelFlag: 0,
  82 + garOrderStatus: 0,
  83 + goodsUrl: 'https://cdn.uviewui.com/uview/swiper/1.jpg'
  84 + },
  85 + {
  86 + garOrderId: 2,
  87 + garOrderAddress: '广东省广州市天河区',
  88 + garOrderAddressDetails: '天河北路168号',
  89 + garOrderTrashType: '可回收垃圾',
  90 + garOrderAgreementTime: '2022-08-01 10:00',
  91 + garOrderHandlerStatus: 0,
  92 + garCancelFlag: 0,
  93 + garOrderStatus: 0,
  94 + goodsUrl: 'https://cdn.uviewui.com/uview/swiper/2.jpg'
  95 + }
  96 + ]);
  97 + firstLoaded.value = true
  98 + }).catch(res => {
  99 + //如果请求失败写paging.value.complete(false),会自动展示错误页面
  100 + //注意,每次都需要在catch中写这句话很麻烦,z-paging提供了方案可以全局统一处理
  101 + //在底层的网络请求抛出异常时,写uni.$emit('z-paging-error-emit');即可
  102 + paging.value.complete(false);
  103 + })
  104 +}
  105 +
  106 +onShow(() => {
  107 + if (props.currentIndex == props.tabIndex) {
  108 + if (firstLoaded.value) {
  109 + setTimeout(() => {
  110 + paging.value.reload();
  111 + }, 50);
  112 + }
  113 + }
  114 +})
  115 +
  116 +// 重写load的方法,自动刷新
  117 +watch(() => props.currentIndex, (val1, val2) => {
  118 + if (props.currentIndex == props.tabIndex) {
  119 + if (!firstLoaded.value) {
  120 + setTimeout(() => {
  121 + paging.value.reload();
  122 + }, 50);
  123 + }
  124 + }
  125 +}, { immediate: true })
  126 +</script>
  127 +
  128 +<style lang="scss" scoped>
  129 +.content-container {
  130 + height: 100%;
  131 +
  132 + .order {
  133 + width: 90%;
  134 + background-color: #ffffff;
  135 + margin: 20rpx auto;
  136 + border-radius: 20rpx;
  137 + box-sizing: border-box;
  138 + padding: 20rpx;
  139 + font-size: 28rpx;
  140 +
  141 + &:active {
  142 + background-color: #f3f4f6;
  143 + opacity: 0.8;
  144 + transition: opacity 0.3s;
  145 + -webkit-transition: opacity 0.3s;
  146 + -moz-transition: opacity 0.3s;
  147 + -ms-transition: opacity 0.3s;
  148 + }
  149 +
  150 + .top {
  151 + display: flex;
  152 + justify-content: space-between;
  153 +
  154 + .left {
  155 + display: flex;
  156 + align-items: center;
  157 +
  158 + .store {
  159 + margin: 0 10rpx;
  160 + font-size: 32rpx;
  161 + font-weight: bold;
  162 + }
  163 + }
  164 + }
  165 +
  166 + .item {
  167 + display: flex;
  168 + align-items: center;
  169 + margin: 20rpx 0 0;
  170 +
  171 + .left {
  172 + margin-right: 20rpx;
  173 +
  174 + image {
  175 + width: 100rpx;
  176 + height: 100rpx;
  177 + border-radius: 10rpx;
  178 + }
  179 + }
  180 +
  181 + .content {
  182 +
  183 + .title {
  184 + font-size: 28rpx;
  185 + line-height: 50rpx;
  186 + }
  187 +
  188 + .type {
  189 + margin: 10rpx 0;
  190 + font-size: 24rpx;
  191 + color: $u-tips-color;
  192 + }
  193 +
  194 + .delivery-time {
  195 + color: #e5d001;
  196 + font-size: 24rpx;
  197 + }
  198 + }
  199 +
  200 +
  201 + }
  202 +
  203 + .total {
  204 + margin-top: 20rpx;
  205 + text-align: right;
  206 + font-size: 24rpx;
  207 +
  208 + .total-price {
  209 + font-size: 32rpx;
  210 + }
  211 + }
  212 +
  213 + .bottom {
  214 + display: flex;
  215 + margin-top: 20rpx;
  216 + padding: 0 10rpx;
  217 + justify-content: space-between;
  218 + align-items: center;
  219 +
  220 + .btn {
  221 + line-height: 52rpx;
  222 + width: 160rpx;
  223 + border-radius: 26rpx;
  224 + border: 2rpx solid $u-border-color;
  225 + font-size: 26rpx;
  226 + text-align: center;
  227 + color: $u-info-dark;
  228 + }
  229 +
  230 + .btn--hover {
  231 + background-color: $u-success-light;
  232 + }
  233 +
  234 + .evaluate {
  235 + color: $u-warning-dark;
  236 + border-color: $u-warning-dark;
  237 + }
  238 + }
  239 + }
  240 +
  241 + .centre {
  242 + text-align: center;
  243 + margin: 200rpx auto;
  244 + font-size: 32rpx;
  245 +
  246 + image {
  247 + width: 164rpx;
  248 + height: 164rpx;
  249 + border-radius: 50%;
  250 + margin-bottom: 20rpx;
  251 + }
  252 +
  253 + .tips {
  254 + font-size: 24rpx;
  255 + color: #999999;
  256 + margin-top: 20rpx;
  257 + }
  258 +
  259 + .btn {
  260 + margin: 80rpx auto;
  261 + width: 200rpx;
  262 + border-radius: 32rpx;
  263 + line-height: 64rpx;
  264 + color: #ffffff;
  265 + font-size: 26rpx;
  266 + background: linear-gradient(270deg, rgba(249, 116, 90, 1) 0%, rgba(255, 158, 1, 1) 100%);
  267 + }
  268 + }
  269 +}
  270 +</style>
... ...
garbage-removal/src/pages/order/index.vue
1 1 <template>
2   - <z-paging-swiper>
3   - <template v-slot:top>
4   - <u-tabs lineWidth="40" lineColor="#ffffff" lineHeight="6"
5   - :activeStyle="{ 'color': '#ffffff', 'font-weight': 'bolder' }" :inactiveStyle="{ color: '#ffffff' }"
6   - ref="uTabsElement" :list="list" :current="current" @change="tabsChange" :scrollable="false"></u-tabs>
7   - </template>
8   - <swiper class="swiper" :current="swiperCurrent" @translation="translation" @animationfinish="animationfinish">
9   - <swiper-item class="swiper-item" v-for="(item, index) in list" :key="index">
10   - <swiper-list-item :tabIndex="index" :currentIndex="swiperCurrent"></swiper-list-item>
11   - </swiper-item>
12   - </swiper>
13   - </z-paging-swiper>
  2 + <view class="container" style="width: 100%;height: 100%;">
  3 + <other-home v-if="userType != '处理场所负责人'"></other-home>
  4 + <handler-home v-else></handler-home>
  5 + </view>
14 6 </template>
15 7 <script setup>
16   -import { ref } from 'vue';
17   -import swiperListItem from './swiper-list-item/index.vue';
18   -const list = ref([{ name: '待清运' }, { name: '清运中' }, { name: '全部' }, { name: '已完成' }])
19   -const current = ref(0);
20   -const swiperCurrent = ref(0)
21   -const uTabsElement = ref()
22   -const tabsChange = (el) => {
23   - swiperCurrent.value = Number(el.index)
24   -}
25   -const animationfinish = (e) => {
26   - current.value = e.detail.current
27   - swiperCurrent.value = e.detail.current
28   -}
29   -const translation = (e) => {
30   - uTabsElement.value.setDx(e.detail.dx)
31   -}
  8 +import { useMainStore } from "@/stores/index.js";
  9 +import { computed } from 'vue';
  10 +import handlerHome from "./handler-home/index.vue";
  11 +import otherHome from "./other-home/index.vue";
  12 +const mainStore = useMainStore()
  13 +const userType = computed(() => mainStore.userType)
  14 +console.log(userType.value);
32 15 </script>
33   -<style lang="scss" scoped>
34   -::v-deep .u-tabs__wrapper__scroll-view {
35   - background-color: #53c21d;
36   -}
37   -
38   -.swiper {
39   - height: 100%;
40   - background: linear-gradient(to bottom, $u-success-dark, $u-bg-color, $u-bg-color, $u-bg-color, $u-bg-color, $u-bg-color, $u-bg-color);
41   -}
42   -</style>
  16 +<style lang="scss" scoped></style>
... ...
garbage-removal/src/pages/order/detail/index.vue renamed to garbage-removal/src/pages/order/other-home/detail/index.vue
... ... @@ -292,7 +292,7 @@ const createQrCodeLocal = (orderId) =&gt; {
292 292 const protocol = window.location.protocol;
293 293 const localAddress = `${protocol}//${hostname}:${port}`;
294 294 // const localAddress = `http://localhost:5173`;
295   - qrCodeText.value = localAddress + "/pages/order/guest/index?orderId=" + orderId;
  295 + qrCodeText.value = localAddress + "/pages/order/other-home/guest/index?orderId=" + orderId;
296 296 console.log(qrCodeRef.value);
297 297 }
298 298 // 获取二维码
... ... @@ -341,7 +341,7 @@ const handleClose = (e) =&gt; {
341 341 cancelShow.value = false
342 342 }
343 343 const handleEvaluateDetail = (orderId, userType) => {
344   - uni.$u.route(`pages/order/evaluate-info/index`,
  344 + uni.$u.route(`pages/order/other-home/evaluate-info/index`,
345 345 { orderId: orderId, userType: userType })
346 346 }
347 347 const selectClick = (index) => {
... ... @@ -446,7 +446,7 @@ const handleSubmitSuccess = (orderId) =&gt; {
446 446  
447 447 }
448 448 const handleEvaluate = (orderId, userType) => {
449   - uni.$u.route(`pages/order/evaluate/index?orderId=${orderId}&userType=${userType}`)
  449 + uni.$u.route(`pages/order/other-home/evaluate/index?orderId=${orderId}&userType=${userType}`)
450 450 }
451 451  
452 452 // 接收派单
... ... @@ -526,7 +526,7 @@ const cleanStatus = (status) =&gt; {
526 526 * @param {string} putType
527 527 */
528 528 const handleUploadImage = (orderId, putType) => {
529   - uni.$u.route(`pages/order/upload/index?orderId=${orderId}`)
  529 + uni.$u.route(`pages/order/other-home/upload/index?orderId=${orderId}`)
530 530 }
531 531  
532 532  
... ...
garbage-removal/src/pages/order/evaluate-info/index.vue renamed to garbage-removal/src/pages/order/other-home/evaluate-info/index.vue
garbage-removal/src/pages/order/evaluate/index.vue renamed to garbage-removal/src/pages/order/other-home/evaluate/index.vue
garbage-removal/src/pages/order/guest/index.vue renamed to garbage-removal/src/pages/order/other-home/guest/index.vue
garbage-removal/src/pages/order/other-home/index.vue 0 → 100644
  1 +<template>
  2 + <z-paging-swiper>
  3 + <template v-slot:top>
  4 + <u-tabs lineWidth="40" lineColor="#ffffff" lineHeight="6"
  5 + :activeStyle="{ 'color': '#ffffff', 'font-weight': 'bolder' }" :inactiveStyle="{ color: '#ffffff' }"
  6 + ref="uTabsElement" :list="list" :current="current" @change="tabsChange" :scrollable="false"></u-tabs>
  7 + </template>
  8 + <swiper class="swiper" :current="swiperCurrent" @translation="translation" @animationfinish="animationfinish">
  9 + <swiper-item class="swiper-item" v-for="(item, index) in list" :key="index">
  10 + <swiper-list-item :tabIndex="index" :currentIndex="swiperCurrent"></swiper-list-item>
  11 + </swiper-item>
  12 + </swiper>
  13 + </z-paging-swiper>
  14 +</template>
  15 +<script setup>
  16 +import { ref } from 'vue';
  17 +import swiperListItem from './swiper-list-item/index.vue';
  18 +const list = ref([{ name: '待清运' }, { name: '清运中' }, { name: '全部' }, { name: '已完成' }])
  19 +const current = ref(0);
  20 +const swiperCurrent = ref(0)
  21 +const uTabsElement = ref()
  22 +const tabsChange = (el) => {
  23 + swiperCurrent.value = Number(el.index)
  24 +}
  25 +const animationfinish = (e) => {
  26 + current.value = e.detail.current
  27 + swiperCurrent.value = e.detail.current
  28 +}
  29 +const translation = (e) => {
  30 + uTabsElement.value.setDx(e.detail.dx)
  31 +}
  32 +</script>
  33 +<style lang="scss" scoped>
  34 +::v-deep .u-tabs__wrapper__scroll-view {
  35 + background-color: #53c21d;
  36 +}
  37 +
  38 +.swiper {
  39 + height: 100%;
  40 + background: linear-gradient(to bottom, $u-success-dark, $u-bg-color, $u-bg-color, $u-bg-color, $u-bg-color, $u-bg-color, $u-bg-color);
  41 +}
  42 +</style>
... ...
garbage-removal/src/pages/order/success/index.vue renamed to garbage-removal/src/pages/order/other-home/success/index.vue
garbage-removal/src/pages/order/swiper-list-item/index.vue renamed to garbage-removal/src/pages/order/other-home/swiper-list-item/index.vue
... ... @@ -5,7 +5,7 @@
5 5 <view class="page-box">
6 6 <view class="order" v-for="(item, index) in dataList" :key="index">
7 7 <view class="top">
8   - <view class="left">
  8 + <view class="left" @click="goDetail(item)">
9 9 <u-icon name="home" :size="30" color="rgb(94,94,94)"></u-icon>
10 10 <view class="store">{{ item.garOrderCompanyName }}</view>
11 11 <u-icon name="arrow-right" color="rgb(203,203,203)" :size="26"></u-icon>
... ... @@ -49,7 +49,8 @@
49 49 <view class="more">
50 50 <!-- <u-icon name="more-dot-fill" color="rgb(203,203,203)"></u-icon> -->
51 51 </view>
52   - <view hover-class="btn-hover" class="logistics btn" @click="handleUserEvaluate(item.garOrderId, userType)">去评价
  52 + <view hover-class="btn-hover" class="logistics btn" @click="handleUserEvaluate(item.garOrderId, userType)">
  53 + 去评价
53 54 </view>
54 55 </view>
55 56 <!-- 公司对用户评价 -->
... ... @@ -58,7 +59,8 @@
58 59 <view class="more">
59 60 <!-- <u-icon name="more-dot-fill" color="rgb(203,203,203)"></u-icon> -->
60 61 </view>
61   - <view hover-class="btn-hover" class="logistics btn" @click="handleUserEvaluate(item.garOrderId, userType)">去评价
  62 + <view hover-class="btn-hover" class="logistics btn" @click="handleUserEvaluate(item.garOrderId, userType)">
  63 + 去评价
62 64 </view>
63 65 </view>
64 66 </view>
... ... @@ -124,6 +126,16 @@ const handleClose = (e) =&gt; {
124 126 cancelShow.value = false
125 127 }
126 128  
  129 +/**
  130 + * 跳转公司详情
  131 + * @param {*} val
  132 + */
  133 +const goDetail = (val) => {
  134 + uni.$u.route({
  135 + url: `pages/home/clean/company-detail/index?companyId=${val.garOrderCompanyId}`,
  136 + })
  137 +}
  138 +
127 139 const selectClick = (index) => {
128 140 currentCancelName.value = index.name;
129 141 }
... ... @@ -154,7 +166,7 @@ const submitFunction = (otherReason) =&gt; {
154 166 }
155 167 const handleClick = (orderId) => {
156 168 uni.$u.route({
157   - url: `pages/order/detail/index`,
  169 + url: `pages/order/other-home/detail/index`,
158 170 params: {
159 171 orderId: orderId
160 172 }
... ... @@ -166,7 +178,7 @@ const handleClick = (orderId) =&gt; {
166 178 * @param {*} orderId
167 179 */
168 180 const handleUserEvaluate = (orderId, userType) => {
169   - uni.$u.route(`pages/order/evaluate/index?orderId=${orderId}&userType=${userType}`)
  181 + uni.$u.route(`pages/order/other-home/evaluate/index?orderId=${orderId}&userType=${userType}`)
170 182 }
171 183 // list集合
172 184 const queryList = (pageNo, pageSize) => {
... ... @@ -247,14 +259,15 @@ watch(() =&gt; props.currentIndex, (val1, val2) =&gt; {
247 259  
248 260 .item {
249 261 display: flex;
  262 + align-items: center;
250 263 margin: 20rpx 0 0;
251 264  
252 265 .left {
253 266 margin-right: 20rpx;
254 267  
255 268 image {
256   - width: 200rpx;
257   - height: 200rpx;
  269 + width: 160rpx;
  270 + height: 160rpx;
258 271 border-radius: 10rpx;
259 272 }
260 273 }
... ...
garbage-removal/src/pages/order/upload/index.vue renamed to garbage-removal/src/pages/order/other-home/upload/index.vue
... ... @@ -85,7 +85,7 @@ const handleSubmit = (id, type) =&gt; {
85 85 setTimeout(() => {
86 86 uni.$u.route({
87 87 type: 'navigateBack',
88   - url: `pages/order/detail/index`,
  88 + url: `pages/order/other-home/detail/index`,
89 89 })
90 90 }, 300)
91 91 }
... ...
garbage-removal/src/pages/wode/choose/index.vue
... ... @@ -43,47 +43,50 @@
43 43  
44 44 <script setup>
45 45 import { updateUserInfo } from "@/apis/user.js";
  46 +import driverImage from "@/static/image/driver.png";
  47 +import handleImage from "@/static/image/handler.png";
  48 +import managerImage from "@/static/image/manager.png";
  49 +import userImage from "@/static/image/user.png";
46 50 import { useMainStore } from '@/stores/index.js';
47 51 import { setRequestToken } from '@/utils/request/request.js';
48 52 import { onLoad } from "@dcloudio/uni-app";
49 53 import { ref } from 'vue';
50 54 const userType = ref('')
51   -const imageBase = "data:image/jpeg;base64,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";
52 55 const store = useMainStore();
53 56 const typeList = ref([{
54   - label: "居民用户",
  57 + label: "用户",
55 58 info: '下单清运',
56   - image: imageBase,
  59 + image: userImage,
57 60 order: 999,
58 61 classStyle: 'choose-type-item-top-back-sky',
59 62 isNow: false,
60 63 isExit: true,
61 64 }, {
62   - label: "处理场所",
63   - info: '负责现场指导',
64   - company: '长沙xxxx',
65   - image: imageBase,
  65 + label: "运输企业负责人",
  66 + info: '负责订单处理',
  67 + company: '',
  68 + image: managerImage,
66 69 isExit: false,
67   - classStyle: 'choose-type-item-top-back-pink',
68   - order: 3,
  70 + classStyle: 'choose-type-item-top-back-sun',
  71 + order: 1,
69 72 isNow: false,
70 73 }, {
71   - label: "运输驾驶员",
  74 + label: "清运车辆驾驶员",
72 75 info: '负责垃圾清运',
73   - company: '长沙xxxx',
74   - image: imageBase,
  76 + company: '',
  77 + image: driverImage,
75 78 isExit: false,
76 79 classStyle: 'choose-type-item-top-back-blue',
77 80 order: 2,
78 81 isNow: false,
79 82 }, {
80   - label: "企业负责人",
81   - info: '负责订单处理',
82   - company: '长沙xxxx',
83   - image: imageBase,
  83 + label: "处理场所负责人",
  84 + info: '负责现场指导',
  85 + company: '',
  86 + image: handleImage,
84 87 isExit: false,
85   - classStyle: 'choose-type-item-top-back-sun',
86   - order: 1,
  88 + classStyle: 'choose-type-item-top-back-pink',
  89 + order: 3,
87 90 isNow: false,
88 91 }])
89 92 const unitInfo = ref([])
... ... @@ -130,6 +133,7 @@ onLoad((options) =&gt; {
130 133 }
131 134 let order = 999;
132 135 let index = 0;
  136 + let company = "";
133 137 // typeList优先级最高的设置isNow 为 true
134 138 if (loginInfo.length > 1) {
135 139 typeList.value.forEach((item, i) => {
... ... @@ -138,13 +142,17 @@ onLoad((options) =&gt; {
138 142 if (item.order < order) {
139 143 order = item.order;
140 144 index = i;
  145 + company = unitInfo.value[item.label].transportCompanyName;
141 146 }
142 147 }
143 148 })
144 149 typeList.value[index].isNow = true
  150 + typeList.value[index].company = company
  151 + userType.value = typeList.value[index].label
  152 + } else {
  153 + typeList.value[index].isNow = true
145 154 userType.value = typeList.value[index].label
146 155 }
147   - console.log(typeList.value, "typeList.value");
148 156 })
149 157 </script>
150 158  
... ... @@ -197,20 +205,21 @@ onLoad((options) =&gt; {
197 205 box-sizing: border-box;
198 206 padding: 30rpx;
199 207 border-radius: 15rpx 15rpx 5rpx 5rpx;
200   - box-shadow: 0px 2px 10px 0px rgba(0, 0, 0, 0.1);
  208 + box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
201 209  
202 210 .choose-type-item-image {
203   - width: 140rpx;
204   - height: 170rpx;
  211 + width: 160rpx;
  212 + height: 180rpx;
205 213 border-radius: 50%;
206 214 display: flex;
207 215 align-items: center;
208 216 justify-content: flex-start;
209   - margin-right: 20rpx;
  217 + margin-right: 50rpx;
210 218  
211 219 image {
212 220 width: 100%;
213 221 height: 100%;
  222 + background-size: 100% 100%;
214 223 }
215 224 }
216 225  
... ... @@ -274,28 +283,28 @@ onLoad((options) =&gt; {
274 283 }
275 284  
276 285 .itemActive {
277   - animation: overScroll 0.5s forwards ease-in-out;
  286 + animation: overScroll 0.8s forwards ease-in-out;
278 287 }
279 288  
280 289 @keyframes overScroll {
281 290 0% {
282   - transform: translateY(8rpx);
  291 + transform: translateY(6rpx);
283 292 }
284 293  
285 294 20% {
286   - transform: translateY(-4rpx);
  295 + transform: translateY(-2rpx);
287 296 }
288 297  
289 298 40% {
290   - transform: translateY(8rpx);
  299 + transform: translateY(6rpx);
291 300 }
292 301  
293 302 60% {
294   - transform: translateY(-4rpx);
  303 + transform: translateY(-2rpx);
295 304 }
296 305  
297 306 80% {
298   - transform: translateY(8rpx);
  307 + transform: translateY(6rpx);
299 308 }
300 309  
301 310 100% {
... ...
garbage-removal/src/static/image/driver.png 0 → 100644

544 KB

garbage-removal/src/static/image/handler.png 0 → 100644

44.2 KB

garbage-removal/src/static/image/manager.png 0 → 100644

14.6 KB

garbage-removal/src/static/image/user.png 0 → 100644

15.8 KB

garbage-removal/src/utils/request/request.js
... ... @@ -72,7 +72,7 @@ instance.interceptors.response.use((response) =&gt; {
72 72 reSetLoginStatus();
73 73 } else {
74 74 uni.showToast({
75   - title: response.data.message,
  75 + title: response.data.msg,
76 76 icon: "none",
77 77 });
78 78 }
... ... @@ -148,7 +148,7 @@ const handleGet = (config) =&gt; {
148 148 }
149 149 config.url += strUrl;
150 150 config.params = "";
151   - if (config.url.startsWith("/order/webDetail/")) {
  151 + if (config.url.startsWith("/order/other-home/webDetail/")) {
152 152 config.headers["Authorization"] = "";
153 153 }
154 154 }
... ...