|
|
@@ -1,5 +1,5 @@
|
|
|
<template>
|
|
|
- <view class="content"><!-- labelAlign="right" -->
|
|
|
+ <view class="content">
|
|
|
<up-form :model="form" labelWidth="70" ref="uFormRef">
|
|
|
<view class="title" style="margin-top: 0;">
|
|
|
服务信息
|
|
|
@@ -21,15 +21,6 @@
|
|
|
</up-radio-group>
|
|
|
</up-form-item>
|
|
|
|
|
|
- <!-- <up-form-item v-if="rules.class2[0].required" label="故障类型" :required="rules.class2[0].required"
|
|
|
- prop="class2">
|
|
|
- <up-radio-group v-model="form.class2">
|
|
|
- <up-radio :customStyle="{ marginLeft: '12px' }" v-for="(item) in class2" :key="item.value"
|
|
|
- :label="item.value" :name="item.value">
|
|
|
- </up-radio>
|
|
|
- </up-radio-group>
|
|
|
- </up-form-item> -->
|
|
|
-
|
|
|
<up-form-item label="服务地址" :required="rules.province[0].required" prop="province">
|
|
|
<picker class="picker" mode="region" :value="[form.province, form.city, form.county]"
|
|
|
@change="changeRegion">
|
|
|
@@ -64,7 +55,7 @@
|
|
|
产品信息
|
|
|
</view>
|
|
|
<up-form-item label="序列号" :required="rules.sku[0].required" prop="sku">
|
|
|
- <up-input v-model="form.sku" placeholder="序列号" clearable @blur="skuConfirm">
|
|
|
+ <up-input v-model="sku" placeholder="序列号" clearable @blur="skuConfirm">
|
|
|
<template #suffix>
|
|
|
<up-icon name="scan" color="#2979ff" size="28" @click="openScan" />
|
|
|
</template>
|
|
|
@@ -77,7 +68,7 @@
|
|
|
<up-form-item label="产品型号" prop="model">
|
|
|
<up-input v-model="form.model" disabled placeholder="型号" />
|
|
|
</up-form-item>
|
|
|
- <up-form-item label="保修卡号" prop="cardno">
|
|
|
+ <up-form-item v-if="form.servicetype != '安装'" label="保修卡号" prop="cardno">
|
|
|
<up-input v-model="form.cardno" disabled placeholder="保修卡号" />
|
|
|
</up-form-item>
|
|
|
</up-form>
|
|
|
@@ -85,35 +76,6 @@
|
|
|
<My-button text="保存" :loading="loading" />
|
|
|
</view>
|
|
|
</view>
|
|
|
-
|
|
|
- <up-popup :show="products.length" @close="closePopup" :customStyle="{
|
|
|
- width: '80vw',
|
|
|
- }" mode="right">
|
|
|
- <scroll-view :safeAreaInsetBottom="false" scroll-y style="width: 100%;height: 100vh;">
|
|
|
- <view class="product" v-for="item in products" :key="item.itemid" hover-class="navigator-hover"
|
|
|
- @click="changeItem(item)">
|
|
|
- <view class="itemname">
|
|
|
- {{ item.itemname }}
|
|
|
- </view>
|
|
|
- <view class="row">
|
|
|
- 序列号: {{ item.sku || '--' }}
|
|
|
- </view>
|
|
|
- <view class="row">
|
|
|
- 产品编号: {{ item.itemno || '--' }}
|
|
|
- </view>
|
|
|
- <view class="row">
|
|
|
- 产品型号: {{ item.model || '--' }}
|
|
|
- </view>
|
|
|
- <view class="row">
|
|
|
- 经销商: {{ item.enterprisename || '--' }}
|
|
|
- </view>
|
|
|
- <view class="row">
|
|
|
- 用户信息: {{ item.name || '--' }} {{ item.phonenumber || '--' }}
|
|
|
- </view>
|
|
|
- </view>
|
|
|
- <view style="height: 30px;" />
|
|
|
- </scroll-view>
|
|
|
- </up-popup>
|
|
|
</template>
|
|
|
|
|
|
<script setup>
|
|
|
@@ -122,6 +84,7 @@ const { $Http } = getCurrentInstance().proxy;
|
|
|
import { onLoad } from '@dcloudio/uni-app';
|
|
|
|
|
|
const uFormRef = ref(null);
|
|
|
+const sku = ref('');
|
|
|
const form = reactive({
|
|
|
class1: '', // 产品品类
|
|
|
class2: '', // 故障类型
|
|
|
@@ -152,7 +115,7 @@ const rules = reactive({
|
|
|
province: [{ required: true, message: '请选择省市县', trigger: 'change' }],
|
|
|
address: [{ required: true, message: '请输入详细地址', trigger: 'blur' }],
|
|
|
scenecontact: [{ required: true, message: '请输入联系人', trigger: 'blur' }],
|
|
|
- sku: [{ required: false, message: '请输入序列号', trigger: 'blur' }],
|
|
|
+ sku: [{ required: false, message: '请输入序列号', trigger: 'change' }],
|
|
|
scenecontactphonenumber: [{ required: true, message: '请输入联系人电话', trigger: 'blur', pattern: /^1(3[0-9]|4[01456879]|5[0-35-9]|6[2567]|7[0-8]|8[0-9]|9[0-35-9])\d{8}$/, message: '请输入正确的手机号码' }],
|
|
|
});
|
|
|
|
|
|
@@ -191,7 +154,6 @@ let detail = reactive({});
|
|
|
let loading = ref(false);
|
|
|
|
|
|
function save() {
|
|
|
- if (querySku.value === false) return uni.showToast({ title: '序列号不正确', icon: 'none' });
|
|
|
if (loading.value) return;
|
|
|
uFormRef.value.validate().then(valid => {
|
|
|
if (valid) {
|
|
|
@@ -213,6 +175,9 @@ function save() {
|
|
|
loading.value = false;
|
|
|
console.log("保存工单", res);
|
|
|
uni.showToast({ title: res.code !== 1 ? res.msg : "保存成功", icon: 'none', mask: res.code == 1 });
|
|
|
+ let workorderids = uni.getStorageSync('workorderids') || [];
|
|
|
+ workorderids.push(sa_workorderid);
|
|
|
+ uni.setStorageSync('workorderids', workorderids);
|
|
|
if (res.code == 1) setTimeout(() => {
|
|
|
uni.navigateBack();
|
|
|
}, 500);
|
|
|
@@ -233,6 +198,7 @@ function getDetail() {
|
|
|
rules.class2[0].required = detail.type == '维修';
|
|
|
if (detail.type == '安装') {
|
|
|
servertypes.value = ['安装'];
|
|
|
+ rules.sku[0].required = true
|
|
|
} else {
|
|
|
$Http.getClass('servertype').then(res1 => {
|
|
|
servertypes.value = res1.data.map(v => v.value).filter(v => v != '安装')
|
|
|
@@ -243,8 +209,20 @@ function getDetail() {
|
|
|
for (const key in form) {
|
|
|
if (detail[key] !== undefined) {
|
|
|
form[key] = detail[key];
|
|
|
+ if (key == 'sku') {
|
|
|
+ sku.value = detail[key];
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
+ if (detail.type == '安装') {
|
|
|
+ let id = detail.sa_workorderid,
|
|
|
+ workorderids = uni.getStorageSync('workorderids') || [];
|
|
|
+ let hasId = workorderids.findIndex(item => item == id);
|
|
|
+ if (hasId == -1) {
|
|
|
+ form.sku = '';
|
|
|
+ sku.value = '';
|
|
|
+ }
|
|
|
+ }
|
|
|
disabled.value = detail.item ? true : false
|
|
|
})
|
|
|
}
|
|
|
@@ -255,110 +233,47 @@ function changeRegion(e) {
|
|
|
form.county = e.detail.value[2];
|
|
|
}
|
|
|
|
|
|
-let querySku = ref(true); // SKU是否正确
|
|
|
-
|
|
|
function skuConfirm() {
|
|
|
- if (form.sku) {
|
|
|
- ['enterprisename', "customername", 'customerphonenumber', 'sa_customersid', 'cardno', 'itemid', 'itemname', 'itemno', 'model', 'phonenumber', 'unitname', 'spec'].forEach(key => {
|
|
|
- form[key] = '';
|
|
|
- });
|
|
|
- if (form.sku.length < 3) {
|
|
|
- querySku.value = false;
|
|
|
- return uni.showToast({ title: '请输入正确的序列号', icon: 'none' });
|
|
|
- }
|
|
|
- uni.showLoading({ title: '查询中...' });
|
|
|
+ if (sku.value) {
|
|
|
+ if (sku.value == '') return;
|
|
|
$Http.basic({
|
|
|
- "id": 2025080813465203,
|
|
|
+ "id": 20221215101003,
|
|
|
"content": {
|
|
|
- "pageNumber": 1,
|
|
|
- "pageSize": 1,
|
|
|
"where": {
|
|
|
- sku: form.sku,
|
|
|
+ "sku": sku.value.trim()
|
|
|
}
|
|
|
}
|
|
|
}).then(res => {
|
|
|
- console.log(res)
|
|
|
+ console.log("查询sku", res)
|
|
|
uni.hideLoading();
|
|
|
- if (res.code !== 1) return uni.showToast({ title: res.msg, icon: 'none' });
|
|
|
- if (res.data.length === 0 || res.data[0].sku !== form.sku) {
|
|
|
- uni.showToast({ title: '未找到对应的产品信息', icon: 'none' });
|
|
|
- querySku.value = false;
|
|
|
+ if (res.code !== 1) {
|
|
|
+ uni.showToast({ title: res.msg, icon: 'none' })
|
|
|
+ form.sku = '';
|
|
|
+ sku.value = '';
|
|
|
+ return
|
|
|
+ };
|
|
|
+ if (res.data.length === 0 || res.data[0].sku !== sku.value.trim()) {
|
|
|
+ uni.showToast({ title: '未查询到对应的产品信息,请确认序列号是否正确', icon: 'none' });
|
|
|
+ form.sku = '';
|
|
|
+ sku.value = '';
|
|
|
return;
|
|
|
}
|
|
|
- querySku.value = true;
|
|
|
- res.data[0].customername = res.data[0].customername || res.data[0].name;
|
|
|
- res.data[0].customerphonenumber = res.data[0].customerphonenumber || res.data[0].phonenumber;
|
|
|
- res.data[0].enterprisename = res.data[0].enterprisename || res.data[0].enterprisename;
|
|
|
- ["customername", 'customerphonenumber', 'sa_customersid', 'phonenumber', 'enterprisename', 'cardno', 'itemid', 'itemname', 'itemno', 'model', 'unitname', 'spec'].forEach(key => {
|
|
|
- form[key] = res.data[0][key] || '';
|
|
|
- });
|
|
|
- uni.showToast({ title: '已将产品信息写入', icon: 'none' });
|
|
|
+ changeItem(res.data[0]);
|
|
|
})
|
|
|
} else {
|
|
|
form.sku = '';
|
|
|
+ sku.value = '';
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-let products = ref([]); // 产品列表
|
|
|
-function closePopup() {
|
|
|
- products.value = [];
|
|
|
-}
|
|
|
function changeItem(item) {
|
|
|
- item.customername = item.customername || item.name;
|
|
|
- item.customerphonenumber = item.customerphonenumber || item.phonenumber;
|
|
|
-
|
|
|
- if (item.itemid == detail.itemid) {
|
|
|
- handle();
|
|
|
- } else {
|
|
|
- uni.showModal({
|
|
|
- title: '提示',
|
|
|
- content: `当前选择的产品与工单中的产品不一致,是否继续?`,
|
|
|
- success: function ({ confirm }) {
|
|
|
- if (confirm) handle()
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
-
|
|
|
- function handle() {
|
|
|
- item.enterprisename = item.enterprisename || item.enterprisename;
|
|
|
- ['enterprisename', "customername", 'customerphonenumber', 'sa_customersid', 'sku', 'cardno', 'itemid', 'itemname', 'itemno', 'model', 'phonenumber', 'unitname', 'spec'].forEach(key => {
|
|
|
- form[key] = item[key] || '';
|
|
|
- });
|
|
|
- uni.showToast({ title: '已将产品信息写入', icon: 'none' });
|
|
|
- querySku.value = true;
|
|
|
- closePopup();
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-function phonenumberConfirm() {
|
|
|
- // 校验手机号
|
|
|
- const phoneRegex = /^1(3[0-9]|4[01456879]|5[0-35-9]|6[2567]|7[0-8]|8[0-9]|9[0-35-9])\d{8}$/;
|
|
|
- if (!phoneRegex.test(form.customerphonenumber)) {
|
|
|
- return uni.showToast({ title: '请输入正确的手机号', icon: 'none' });
|
|
|
- }
|
|
|
- uni.showLoading({ title: '查询中...' });
|
|
|
- $Http.basic({
|
|
|
- "id": 2025080813465203,
|
|
|
- "content": {
|
|
|
- "pageNumber": 1,
|
|
|
- "pageSize": 50,
|
|
|
- "where": {
|
|
|
- phonenumber: form.customerphonenumber,
|
|
|
- }
|
|
|
- }
|
|
|
- }).then(res => {
|
|
|
- uni.hideLoading();
|
|
|
- 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' });
|
|
|
- if (res.data.length == 1 && detail.itemid == res.data[0].itemid) {
|
|
|
- changeItem(res.data[0]);
|
|
|
- } else {
|
|
|
- products.value = res.data;
|
|
|
- }
|
|
|
- })
|
|
|
+ let list = ['sku', 'cardno', 'itemid', 'itemname', 'itemno', 'sa_customersid'];
|
|
|
+ list.forEach(key => {
|
|
|
+ if (key == 'sku') sku.value = item[key] || '';
|
|
|
+ form[key] = item[key] || '';
|
|
|
+ });
|
|
|
+ uFormRef.value.clearValidate('sku');
|
|
|
}
|
|
|
-
|
|
|
function openScan() {
|
|
|
uni.scanCode({
|
|
|
onlyFromCamera: true,
|
|
|
@@ -378,20 +293,6 @@ function openScan() {
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
-
|
|
|
-//去选择产品
|
|
|
-function toSelectProduct() {
|
|
|
- uni.navigateTo({
|
|
|
- url: '/pages/select/product'
|
|
|
- });
|
|
|
- $Http.onSelected = (item) => {
|
|
|
- ['enterprisename', 'sku', 'cardno', 'itemid', 'itemname', 'itemno', 'model', 'phonenumber', 'unitname', 'spec'].forEach(key => {
|
|
|
- form[key] = item[key] || '';
|
|
|
- });
|
|
|
- uni.navigateBack()
|
|
|
- delete $Http.onSelected
|
|
|
- }
|
|
|
-}
|
|
|
</script>
|
|
|
|
|
|
<style lang="scss" scoped>
|