xiaohaizhao 1 månad sedan
förälder
incheckning
2e5ee478fe

+ 1 - 1
pages/generalServices/detail.vue

@@ -180,7 +180,7 @@
         </view>
     </up-modal>
     <view class="main" v-if="time && workDetail.nodes.length">
-        <Nodes ref="Nodes" status="已完结" :nodes="workDetail.nodes" />
+        <Nodes ref="Nodes" status="服务申请单" :nodes="workDetail.nodes" />
         <view class="but-box" v-if="workDetail.status == '提交' && !workDetail.needcode && isCompletion">
             <view class="but-box-item">
                 <My-button @onClick="completion" text="确认完工" />

+ 122 - 17
pages/launchApplication/index.vue

@@ -4,7 +4,25 @@
             服务信息
         </view>
         <up-form :model="form" labelWidth="70" ref="uFormRef">
-            <up-form-item v-if="form.isonlinesales" label="指定服务商">
+            <up-form-item v-if="form.isonlinesales || userType == 1" label="是否补贴" prop="isallowance">
+                <up-radio-group v-model="form.isallowance">
+                    <up-radio :customStyle="{ marginLeft: '12px' }"
+                        v-for="(item) in [{ label: '补贴', value: 1 }, { label: '不补贴', value: 0 }]" :key="item.value"
+                        :label="item.label" :name="item.value">
+                    </up-radio>
+                </up-radio-group>
+            </up-form-item>
+
+            <up-form-item v-if="userType == 1" label="网销工单" prop="isonlinesales">
+                <up-radio-group v-model="form.isonlinesales">
+                    <up-radio :customStyle="{ marginLeft: '12px' }"
+                        v-for="(item) in [{ label: '是', value: 1 }, { label: '否', value: 0 }]" :key="item.value"
+                        :label="item.label" :name="item.value">
+                    </up-radio>
+                </up-radio-group>
+            </up-form-item>
+
+            <up-form-item v-if="form.isonlinesales || userType == 1" label="指定服务商">
                 <view class="picker" hover-class="navigator-hover" @click="selectServiceProvider">
                     {{ serviceProviders.name || '选择指定的服务商进行服务' }}
                 </view>
@@ -47,13 +65,26 @@
                 </up-input>
             </up-form-item>
 
-            <up-form-item label="联系人" :required="rules.scenecontact[0].required" prop="scenecontact">
-                <up-input v-model="form.scenecontact" placeholder="联系人" clearable />
+            <up-form-item label="保修状态" v-if="userType == 1" prop="warrantystatus">
+                <up-radio-group v-model="form.warrantystatus">
+                    <up-radio :customStyle="{ marginLeft: '12px' }" v-for="(item) in [{ label: '保内' }, { label: '保外' }]"
+                        :key="item.label" :label="item.label" :name="item.label">
+                    </up-radio>
+                </up-radio-group>
+            </up-form-item>
+
+            <up-form-item label="客户名称" :required="rules.scenecontact[0].required" prop="scenecontact">
+                <up-input v-model="form.scenecontact" placeholder="客户名称" clearable />
             </up-form-item>
 
             <up-form-item label="手机号" :required="rules.scenecontactphonenumber[0].required"
                 prop="scenecontactphonenumber">
-                <up-input type="number" v-model="form.scenecontactphonenumber" placeholder="联系人电话" clearable />
+                <up-input type="number" v-model="form.scenecontactphonenumber" placeholder="联系人电话" clearable>
+                    <template #suffix>
+                        <up-button type="success" :disabled="!form.scenecontactphonenumber" size="mini" text="查询带入客户信息"
+                            @click="phonenumberConfirm" />
+                    </template>
+                </up-input>
             </up-form-item>
 
             <up-form-item label="省市县" :required="rules.province[0].required" prop="province">
@@ -102,6 +133,29 @@
             <view style="height: 30px;" />
         </scroll-view>
     </up-popup>
+
+    <up-popup :show="customers.length" @close="closeCustomers" :customStyle="{
+        width: '80vw',
+    }" mode="right">
+        <scroll-view :safeAreaInsetBottom="false" scroll-y style="width: 100%;height: 100vh;">
+            <view class="product" v-for="item in customers" :key="item.sa_customersid" hover-class="navigator-hover"
+                @click="selectCustomer(item)">
+                <view class="itemname">
+                    {{ item.name }}
+                </view>
+                <view class="row">
+                    手机号: {{ item.phonenumber || '--' }}
+                </view>
+                <view class="row">
+                    搜索项: {{ item.province + item.city + item.county || '--' }}
+                </view>
+                <view class="row">
+                    详细地址: {{ item.address || '--' }}
+                </view>
+            </view>
+            <view style="height: 30px;" />
+        </scroll-view>
+    </up-popup>
 </template>
 
 <script setup>
@@ -109,6 +163,8 @@ import { ref, reactive, getCurrentInstance } from 'vue';
 const { $Http } = getCurrentInstance().proxy;
 import { onShow, onLoad } from '@dcloudio/uni-app';
 
+const userType = ref(uni.getStorageSync('userMsg').usertype || 0);
+
 const uFormRef = ref(null);
 const form = reactive({
     sa_serviceorderid: 0,
@@ -134,6 +190,8 @@ const form = reactive({
     customerphonenumber: "", // 客户电话
     sa_customersid: 0,
     isonlinesales: 0, // 是否网销客户
+    isallowance: 0, // 是否补贴
+    warrantystatus: "", // 保修状态
 });
 
 //服务商
@@ -173,6 +231,54 @@ $Http.basic({
     }
 })
 
+let customers = ref([]); // 客户列表
+
+function phonenumberConfirm() {
+    $Http.basic({
+        "id": 2025121118401503,
+        "content": {
+            "nocache": true,
+            "pageNumber": 1,
+            "pageSize": 10, "where": { "phonenumber": form.scenecontactphonenumber }
+        }
+    }).then(res => {
+        console.log("根据电话查询客户信息", res)
+        if (res.code !== 1) {
+            return uni.showToast({ title: res.msg, icon: 'none' });
+        }
+        if (res.data.length === 0) {
+            return uni.showToast({ title: '未查询到对应的客户信息', icon: 'none' });
+        } else if (res.data.length === 1) {
+            selectCustomer(res.data[0]);
+        } else {
+            customers.value = res.data;
+        }
+    })
+}
+
+function closeCustomers() {
+    customers.value = [];
+}
+
+function selectCustomer(item) {
+    let list = ['name', 'phonenumber', 'province', 'city', 'county', 'sa_customersid', 'address'];
+    list.forEach(key => {
+        if (key == 'name') {
+            form['customername'] = item[key] || form['customername'] || '';
+            form['scenecontact'] = item[key] || form['scenecontact'] || '';
+        } else if (key == 'phonenumber') {
+            form['customerphonenumber'] = item[key] || form['customerphonenumber'] || '';
+            form['scenecontactphonenumber'] = item[key] || form['scenecontactphonenumber'] || '';
+        } else if (['province', 'city', 'county'].includes(key)) {
+            form[key] = item[key] || form[key] || '';
+        } else {
+            form[key] = item[key] || '';
+        }
+    });
+    uni.showToast({ title: '客户信息已带入', icon: 'none' });
+    closeCustomers();
+}
+
 const rules = reactive({
     servicetype: [{ required: true, message: '请选择服务类型', trigger: 'change' }],
     class1: [{ required: true, message: '请选择产品品类', trigger: 'change' }],
@@ -382,20 +488,19 @@ function closePopup() {
     products.value = [];
 }
 function changeItem(item) {
-    let list = ['sku', 'cardno', 'itemid', 'itemname', 'itemno', 'sa_customersid', 'address', 'province', 'city', 'county'];
+    let list = ['sku', 'cardno', 'itemid', 'name', 'phonenumber', 'itemname', 'province', 'city', 'county', 'itemno', 'sa_customersid', 'address', 'warrantystatus'];
     list.forEach(key => {
-        // 'name', 'phonenumber',
-        // if (key == 'name') {
-        //     form['customername'] = item[key] || '';
-        //     form['scenecontact'] = item[key] || '';
-        // } else if (key == 'phonenumber') {
-        //     form['customerphonenumber'] = item[key] || '';
-        //     form['scenecontactphonenumber'] = item[key] || '';
-        // } else {
-        // }
-
-        form[key] = item[key] || '';
-
+        if (key == 'name') {
+            form['customername'] = item[key] || form['customername'] || '';
+            form['scenecontact'] = item[key] || form['scenecontact'] || '';
+        } else if (key == 'phonenumber') {
+            form['customerphonenumber'] = item[key] || form['customerphonenumber'] || '';
+            form['scenecontactphonenumber'] = item[key] || form['scenecontactphonenumber'] || '';
+        } else if (['province', 'city', 'county'].includes(key)) {
+            form[key] = item[key] || form[key] || '';
+        } else {
+            form[key] = item[key] || '';
+        }
     });
     querySkuing = false;
     console.log("选择产品", form);

+ 8 - 3
pages/select/accessories.vue

@@ -130,7 +130,6 @@ onLoad(() => {
             getList(true);
         } else {
             // 存在BOM
-            isBom.value = true;
             getBomList();
         }
     })
@@ -178,8 +177,14 @@ function getBomList() {
         listBox.value.refreshToComplete();
         listBox.value.setHeight();
         if (res.code == 1) {
-            bomList.value = processBomData(res.data)
-            console.log("bomList", bomList.value);
+            // 判断有无数据
+            if(res.pageNumber==2 && res.data[0].bom.length == 0){
+                getList(true);
+                return;
+            }else{
+                isBom.value = true;
+                bomList.value = processBomData(res.data)
+            }
         } else {
             if (res.msg) uni.showToast({
                 title: res.msg,

+ 1 - 0
pages/workOrder/changeMsg.vue

@@ -244,6 +244,7 @@ function save() {
                                 uni.showToast({ title: '工单信息已保存', icon: 'none' });
                             },
                         })
+                        $Http.getDetail && $Http.getDetail()
                     }
                 }
             }).catch(err => {

+ 12 - 1
pages/workOrder/work.vue

@@ -1,5 +1,5 @@
 <template>
-    <view class="content">
+    <view class="content" @click="onClickAway">
         <view class="title" style="color: #3C7BFF;">
             {{ data.title1 }}
         </view>
@@ -153,6 +153,17 @@ const { $Http } = getCurrentInstance().proxy;
 const uFormRef = ref(null);
 const upload = ref(null);
 
+function onClickAway() {
+    if (data.status1 == "服务申请单") return uni.showToast({
+        title: '请在服务工单中操作',
+        icon: 'none'
+    });
+    if (data.status1 != '进行中') uni.showToast({
+        title: '仅限工单进行中状态下编辑',
+        icon: 'none'
+    });
+}
+
 let formModified = ref(false);
 
 function beforeleave(e) {

+ 7 - 6
utils/Http.js

@@ -7,6 +7,13 @@ class HTTP {
             name: '8300',
             url: "http://61.164.207.46:8300"
         }];
+
+        if (process.env.NODE_ENV === 'development') {
+            this.baseUrl = this.urls[0].url;
+        } else {
+            this.baseUrl = this.urls[0].url;
+        }
+
         this.updateList = (content, getList) => {
             content.copyContent = JSON.parse(JSON.stringify(content));
             content.pageSize = (content.pageNumber - 1) * (content.pageSize || 20); // 确保pageSize存在
@@ -43,12 +50,6 @@ class HTTP {
             return url;
         }
 
-        if (process.env.NODE_ENV === 'development') {
-            this.baseUrl = this.urls[1].url;
-        } else {
-            this.baseUrl = this.urls[0].url;
-        }
-
         // 从本地存储加载JSESSIONID
         this.jsessionid = uni.getStorageSync('JSESSIONID') || '';
         console.log("接口地址", this.baseUrl);