xiaohaizhao 5 месяцев назад
Родитель
Сommit
567a31da05

+ 37 - 25
pages/index/home.vue

@@ -1,31 +1,33 @@
 <template>
-	<up-swiper height='115' :list="banner" indicator keyName="imageUrl" :autoplay="false" circular radius="0"
-		@click="onClickSwiper" />
-	<view class="main">
-		<view class="serve">
-			{{ enterprisename }}
-		</view>
-		<view class="name">
-			{{ welcomeText }}
-		</view>
+	<My_listbox ref="listBox" @getlist="uploadNumber">
+		<up-swiper height='115' :list="banner" indicator keyName="imageUrl" :autoplay="false" circular radius="0"
+			@click="onClickSwiper" />
+		<view class="main">
+			<view class="serve">
+				{{ enterprisename }}
+			</view>
+			<view class="name">
+				{{ welcomeText }}
+			</view>
 
-		<view class="list">
-			<navigator :url="item.path" class="item" v-for="item in itemList" :key="item.label">
-				<view class="icon">
-					<image class="image" :src="item.icon" />
-				</view>
-				<view class="label">
-					{{ item.label }}
-				</view>
-				<view class="text">
-					{{ item.text }}
-				</view>
-				<view class="badge" v-if="item.badge">
-					<up-badge type="error" max="999" :value="item.badge"></up-badge>
-				</view>
-			</navigator>
+			<view class="list">
+				<navigator :url="item.path" class="item" v-for="item in itemList" :key="item.label">
+					<view class="icon">
+						<image class="image" :src="item.icon" />
+					</view>
+					<view class="label">
+						{{ item.label }}
+					</view>
+					<view class="text">
+						{{ item.text }}
+					</view>
+					<view class="badge" v-if="item.badge">
+						<up-badge type="error" max="999" :value="item.badge"></up-badge>
+					</view>
+				</navigator>
+			</view>
 		</view>
-	</view>
+	</My_listbox>
 </template>
 
 <script setup>
@@ -138,6 +140,8 @@ onLoad(() => {
 	$Http.uploadNumber = uploadNumber;
 });
 
+let listBox = ref(null);
+
 function uploadNumber() {
 	itemList.value.forEach((item) => {
 		if (item.label == '进行中') {
@@ -185,6 +189,14 @@ function uploadNumber() {
 			})
 		}
 	});
+	try {
+		setTimeout(() => {
+			listBox.value.refreshToComplete();
+		}, 300);
+		listBox.value.setHeight();
+	} catch (error) {
+
+	}
 	welcomeText.getter()
 }
 function onClickSwiper(e) {

+ 2 - 7
pages/workOrder/detail.vue

@@ -163,7 +163,7 @@
         </view>
         <view class="main" v-if="current >= 2 && detail.nodes.length" style="padding: 30rpx;">
             <nodes ref="Nodes" :status="detail.status" :nodes="detail.nodes" />
-            <view class="but-box">
+            <view class="but-box" v-if="current != 4">
                 <view class="but-box-item">
                     <My-button :disabled="detail.status == '提交'" @onClick="submit" text="确认完工" />
                 </view>
@@ -346,12 +346,7 @@ function snatchingOrders() {
     }).then(res => {
         if (res.code == 1) {
             console.log("抢单结果", res)
-            takeOrderShow.value = false;
-            getDetail();
-            uni.showToast({
-                title: '抢单成功',
-                icon: 'none'
-            });
+            takeOrders();
         } else {
             if (res.msg) uni.showToast({
                 title: res.msg,

+ 39 - 18
pages/workOrder/index.vue

@@ -7,21 +7,46 @@
         <navigator class="item" v-for="item in list" :key="item.sa_workorderid"
             :url="'/pages/workOrder/detail?id=' + item.sa_workorderid" hover-class="navigator-hover">
             <view class="head">
-                <view class="tag" :style="{
-                    'background': { '安装': '#E8F8D5', '维修': '#FFE2E5', '清洁': '#E2EBFF', '清洗': '#E2EBFF' }[item.type] || '#F0F0F0',
-                    'color': { '安装': '#4B8E00', '维修': '#B00016', '清洁': '#2A5AD9', '清洗': '#2A5AD9' }[item.type] || '#333333'
-                }">
-                    {{ item.type }}
+                <view style="display: flex;">
+                    <view class="tag" :style="{
+                        'color': { '待接单': '#3874F6', '待开始': '#3874F6', '待服务': '#F56C6C', '进行中': '#67C23A', '提交': '#171919', '已完工': '#171919' }[item.status] || '#999999',
+                        'background': {
+                            '待接单': '#E6F0FF',
+                            '待开始': '#E6F0FF',
+                            '待服务': '#FFECEF',
+                            '进行中': '#F0F9EB',
+                            '提交': '#F7F7F7',
+                            '已完工': '#F7F7F7'     // 与提交共用浅灰背景
+                        }[item.status] || '#F5F5F5',
+                        marginRight: '20rpx',
+                    }">
+                        {{ item.status }}
+                    </view>
+                    <view class="tag" :style="{
+                        'background': { '安装': '#E8F8D5', '维修': '#FFE2E5', '清洁': '#E2EBFF', '清洗': '#E2EBFF' }[item.type] || '#F0F0F0',
+                        'color': { '安装': '#4B8E00', '维修': '#B00016', '清洁': '#2A5AD9', '清洗': '#2A5AD9' }[item.type] || '#333333'
+                    }">
+                        {{ item.type }}
+                    </view>
                 </view>
                 <view class="time">
                     {{ item.createdate }}
                 </view>
             </view>
             <view class="address">
-                {{ item.address }}
+                产品:{{ item.itemname }}
+            </view>
+            <view class="address">
+                型号:{{ item.model }}
+            </view>
+            <view class="address">
+                备注:{{ item.remarks || '--' }}
+            </view>
+            <view class="address">
+                地址:{{ item.address }}
             </view>
             <view class="user">
-                {{ item.customername + ' ' + item.customerphonenumber }}
+                现场联系人:{{ item.scenecontact + ' ' + item.scenecontactphonenumber }}
             </view>
             <view v-if="content.where.status != '已完工'" class="but-box" @click.stop>
                 <view class="but-box-item">
@@ -29,7 +54,7 @@
                         'background-color': '#FFFFFF',
                         'color': '#3874F6',
                         height: '70rpx',
-                    }" frontIcon="icon-bodadianhua1" text="电话" :phonenumber="item.customerphonenumber" />
+                    }" frontIcon="icon-bodadianhua1" text="电话" :phonenumber="item.scenecontactphonenumber" />
                 </view>
                 <view v-if="content.where.status == '待接单'" class="but-box-item" @click="openModel(item)">
                     <My-button :customStyle="{
@@ -175,22 +200,18 @@ function getBadge() {
             })
         )
     ).then(res => {
-        let total = 0, name = '', i = 1;
+        let changeCurrent = false;
         res.forEach((v, index) => {
             let value = v.code !== 0 ? v.total : 0
             tabList.value[index].badge = {
                 value
             }
-            if (value == 0) {
-                total++
-            } else {
-                name = tabList.value[index].name
-                i = index;
-            }
+            if (tabList.value[index].name == '进行中' && value == 0) changeCurrent = true;
         })
-        if (total == 2 && current.value != i) {
-            content.where.status = name;
-            current.value = i;
+        if (changeCurrent) {
+            let index = tabList.value.findIndex(v => v.badge.value > 0);
+            current.value = index == -1 ? 0 : index;
+            content.where.status = tabList.value[current.value].value || tabList.value[current.value].name;
             getList(true);
         }
     })

+ 9 - 45
pages/workOrder/modules/vCode.vue

@@ -3,24 +3,7 @@
         confirmText="确认完工" showCancelButton :asyncClose="true">
         <view class="slot-content">
             <view style="padding: 20rpx 0 20rpx 0;">
-                <!-- #ifndef APP-NVUE -->
-                <up-input placeholder="客户确认码" v-model="code" :focus="downTime == 59">
-                    <!-- #endif -->
-                    <!-- #ifdef APP-NVUE -->
-                    <up-input placeholder="客户确认码" v-model="code" :focus="downTime == 59">
-                        <!-- #endif -->
-                        <template #suffix>
-                            <up-button @tap="getCode" :disabled="downTime != 0" :text="tips" type="success"
-                                size="mini">{{
-                                    downTime == 0 ? '重新发送验证码' : downTime +
-                                        '秒重新获取' }}</up-button>
-                        </template>
-                        <!-- #ifndef APP-NVUE -->
-                    </up-input>
-                    <!-- #endif -->
-                    <!-- #ifdef APP-NVUE -->
-                </up-input>
-                <!-- #endif -->
+                <up-code-input v-model="code" :maxlength="6" />
             </view>
         </view>
     </up-modal>
@@ -42,7 +25,6 @@ const props = defineProps({
 
 let code = ref(''),
     showModal = ref(false),
-    downTime = ref(''),
     interval = null,
     uModal = ref(null);
 
@@ -76,7 +58,6 @@ function completion(e) {
                     setTimeout(() => {
                         showModal.value = false;
                         code.value = '';
-                        downTime.value = '';
                         clearInterval(interval);
                     }, 300)
                     emit('callBack', true)
@@ -99,18 +80,12 @@ function completion(e) {
 }
 
 function openModal() {
-    if (downTime.value == '') {
-        getCode().then(res => {
-            if (res) showModal.value = true;
-        })
-    } else {
-        showModal.value = true;
-    }
+    getCode()
+    showModal.value = true;
 }
 
 // 获取客户确认码
 function getCode() {
-    if (downTime.value != '') return;
     return new Promise((resolve) => {
         $Http.basic({
             id: 20230215173103,
@@ -120,24 +95,13 @@ function getCode() {
         }).then(res => {
             console.log("获取验证码结果", res)
             resolve(res.code == 1);
-            downTime.value = 60;
-            if (res.code == 1) {
-                if (res.data.msg.includes("手机验证码为")) {
-                    uni.showToast({
-                        title: res.data.msg,
-                        icon: 'none'
-                    });
-                    code.value = res.data.msg.split(":")[1].trim();
-                }
-                interval = setInterval(() => {
-                    downTime.value--;
-                    if (downTime.value <= 0) {
-                        clearInterval(interval);
-                        downTime.value = '';
-                    }
-                }, 1000);
+            if (res.code == 1 && res.data.msg.includes("手机验证码为")) {
+                uni.showToast({
+                    title: res.data.msg,
+                    icon: 'none'
+                });
+                code.value = res.data.msg.split(":")[1].trim();
             } else {
-                downTime.value = '';
                 uni.showToast({
                     title: res.msg,
                     icon: 'none'

+ 33 - 18
pages/workOrder/snatchingOrders.vue

@@ -4,21 +4,46 @@
         <navigator class="item" v-for="item in list" :key="item.sa_workorderid"
             :url="'/pages/workOrder/detail?id=' + item.sa_workorderid" hover-class="navigator-hover">
             <view class="head">
-                <view class="tag" :style="{
-                    'background': { '安装': '#E8F8D5', '维修': '#FFE2E5', '清洁': '#E2EBFF', '清洗': '#E2EBFF' }[item.type] || '#F0F0F0',
-                    'color': { '安装': '#4B8E00', '维修': '#B00016', '清洁': '#2A5AD9', '清洗': '#2A5AD9' }[item.type] || '#333333'
-                }">
-                    {{ item.type }}
+                <view style="display: flex;">
+                    <view class="tag" :style="{
+                        'color': { '待接单': '#3874F6', '待开始': '#3874F6', '待服务': '#F56C6C', '进行中': '#67C23A', '提交': '#171919', '已完工': '#171919' }[item.status] || '#999999',
+                        'background': {
+                            '待接单': '#E6F0FF',
+                            '待开始': '#E6F0FF',
+                            '待服务': '#FFECEF',
+                            '进行中': '#F0F9EB',
+                            '提交': '#F7F7F7',
+                            '已完工': '#F7F7F7'     // 与提交共用浅灰背景
+                        }[item.status] || '#F5F5F5',
+                        marginRight: '20rpx',
+                    }">
+                        {{ item.status }}
+                    </view>
+                    <view class="tag" :style="{
+                        'background': { '安装': '#E8F8D5', '维修': '#FFE2E5', '清洁': '#E2EBFF', '清洗': '#E2EBFF' }[item.type] || '#F0F0F0',
+                        'color': { '安装': '#4B8E00', '维修': '#B00016', '清洁': '#2A5AD9', '清洗': '#2A5AD9' }[item.type] || '#333333'
+                    }">
+                        {{ item.type }}
+                    </view>
                 </view>
                 <view class="time">
                     {{ item.createdate }}
                 </view>
             </view>
             <view class="address">
-                {{ item.address }}
+                产品:{{ item.itemname }}
+            </view>
+            <view class="address">
+                型号:{{ item.model }}
+            </view>
+            <view class="address">
+                备注:{{ item.remarks || '--' }}
+            </view>
+            <view class="address">
+                地址:{{ item.address }}
             </view>
             <view class="user">
-                {{ item.customername + ' ' + item.customerphonenumber }}
+                现场联系人:{{ item.scenecontact + ' ' + item.scenecontactphonenumber }}
             </view>
             <view v-if="content.where.status != '已完工'" class="but-box" @click.stop>
                 <view class="but-box-item" @click="openModel(item)">
@@ -106,17 +131,7 @@ function takeOrders() {
     }).then(res => {
         if (res.code == 1) {
             console.log("抢单结果", res)
-            takeOrderShow.value = false;
-            uni.navigateTo({
-                url: '/pages/workOrder/detail?id=' + takeItem.sa_workorderid,
-                success: (result) => {
-                    uni.showToast({
-                        title: '抢单成功',
-                        icon: 'none'
-                    });
-                },
-            })
-            $Http.updateList(content, getList)
+            handleTakeOrder();
         } else {
             if (res.msg) uni.showToast({
                 title: res.msg,