This commit is contained in:
许允枞 2024-11-25 16:48:58 +08:00
parent e7cdede96b
commit 9ed929cf3f
11 changed files with 2352 additions and 583 deletions

View File

@ -364,6 +364,22 @@
"navigationBarTitleText": "", "navigationBarTitleText": "",
"enablePullDownRefresh": true "enablePullDownRefresh": true
} }
},
{
"path": "pages/index/oldOrder",
"style": {
"navigationBarTitleText": "",
"enablePullDownRefresh": true,
"navigationStyle": "custom"
}
},
{
"path": "pages/index/oldOrderProject",
"style": {
"navigationBarTitleText": "",
"enablePullDownRefresh": true,
"navigationStyle": "custom"
}
} }
], ],
"globalStyle": { "globalStyle": {

View File

@ -7,7 +7,7 @@
<uni-icons type="left" size="18"></uni-icons> <uni-icons type="left" size="18"></uni-icons>
</view> </view>
<view class="t-title"> <view class="t-title">
<text>{{title}}</text> <text>{{ title }}</text>
</view> </view>
<view class="t-you"></view> <view class="t-you"></view>
</view> </view>
@ -25,7 +25,6 @@
<uni-icons type="scan" size="20" color="#ffffff"></uni-icons> <uni-icons type="scan" size="20" color="#ffffff"></uni-icons>
<text style="margin-left: 10px;">行驶证扫描</text> <text style="margin-left: 10px;">行驶证扫描</text>
</view> </view>
</u-upload> </u-upload>
<!-- 名称 --> <!-- 名称 -->
@ -84,7 +83,7 @@
</view> </view>
<view class="list-box"> <view class="list-box">
<view class="l-left" @click="handleClick"> <view class="l-left" @click="handleClick">
<text style="color: red;font-weight: bold;text-align: center;">*</text> <text style="color: red;font-weight: bold;text-align: center;">*</text>
商品选择 商品选择
<text class="xixi">点击选择</text> <text class="xixi">点击选择</text>
@ -128,6 +127,32 @@
</view> </view>
<!-- <view class="list-box">-->
<!-- <view class="l-left">是否补录</view>-->
<!-- <view class="l-right">-->
<!-- <u-radio-group-->
<!-- v-model="radioValue"-->
<!-- iconPlacement="right"-->
<!-- @change="handleRadioChange"-->
<!-- >-->
<!-- <u-radio label="否" name="0" style="padding-right: 10rpx"></u-radio>-->
<!-- <u-radio label="是" name="1"></u-radio>-->
<!-- </u-radio-group>-->
<!-- </view>-->
<!-- </view>-->
<!-- <view class="list-box" v-if="radioValue === '1'">-->
<!-- <view class="l-left" @click="showRecord = true">-->
<!-- <text style="color: red;font-weight: bold;text-align: center;">*</text>-->
<!-- 选择补录时间-->
<!-- <text class="xixi">点击选择</text>-->
<!-- </view>-->
<!-- <view class="l-right">-->
<!-- <input type="text" v-model="recordTimeStr" placeholder="请选择补录时间">-->
<!-- </view>-->
<!-- </view>-->
<view class="list-box" @click="toSelectProject()" v-if="isInsert"> <view class="list-box" @click="toSelectProject()" v-if="isInsert">
<view class="l-left">检测流程</view> <view class="l-left">检测流程</view>
<view class="l-right"> <view class="l-right">
@ -144,20 +169,32 @@
<view class="dlanniu" @click="edit()" v-else> <view class="dlanniu" @click="edit()" v-else>
<text>确认修改</text> <text>确认修改</text>
</view> </view>
<u-picker :show="show" :columns="columns" :defaultIndex="kehuDefaultIndex" @confirm="confirms" @cancel="cancels" keyName="label"></u-picker> <u-picker :show="show" :columns="columns" :defaultIndex="kehuDefaultIndex" @confirm="confirms" @cancel="cancels"
keyName="label"></u-picker>
<u-picker :show="showgoods" ref="uPicker" :columns="goodsone" :defaultIndex="goodsDefaultIndex" @confirm="confirmgoods" @cancel="cancelgoods" <u-picker :show="showgoods" ref="uPicker" :columns="goodsone" :defaultIndex="goodsDefaultIndex"
@confirm="confirmgoods" @cancel="cancelgoods"
@change="changeHandler" keyName="label"></u-picker> @change="changeHandler" keyName="label"></u-picker>
<u-picker :show="shownature" :columns="nature" @confirm="confirmsnature" @cancel="cancelsnature" <u-picker :show="shownature" :columns="nature" @confirm="confirmsnature" @cancel="cancelsnature"
keyName="label"></u-picker> keyName="label"></u-picker>
<u-picker :show="showxin" :columns="xinlist" :defaultIndex="xinDefaultIndex" @confirm="confirmxin" @cancel="cancelxin" <u-picker :show="showxin" :columns="xinlist" :defaultIndex="xinDefaultIndex" @confirm="confirmxin"
@cancel="cancelxin"
keyName="label"></u-picker> keyName="label"></u-picker>
<u-picker :show="showzhi" :columns="zhilist" @confirm="confirmzhi" @cancel="cancelzhi" <u-picker :show="showzhi" :columns="zhilist" @confirm="confirmzhi" @cancel="cancelzhi"
keyName="label"></u-picker> keyName="label"></u-picker>
<u-picker :show="showLeadMan" :columns="leadManList" :defaultIndex="defaultIndex" @confirm="confirmLeadMan" @cancel="cancelLeadMan" <u-picker :show="showLeadMan" :columns="leadManList" :defaultIndex="defaultIndex" @confirm="confirmLeadMan"
@cancel="cancelLeadMan"
keyName="nickname"></u-picker> keyName="nickname"></u-picker>
<!-- <u-datetime-picker-->
<!-- :show="showRecord"-->
<!-- v-model="recordTime"-->
<!-- :formatter="formatter"-->
<!-- @cancel="cancelRecord"-->
<!-- @confirm="confirmRecord"-->
<!-- mode="datetime"-->
<!-- ></u-datetime-picker>-->
</view> </view>
</view> </view>
@ -181,12 +218,13 @@ export default {
title: '新增线下订单', title: '新增线下订单',
customerSource: '', customerSource: '',
buyName: '', buyName: '',
nickname:'', nickname: '',
buyPhone: '', buyPhone: '',
userAddress: '', userAddress: '',
carNum: '', carNum: '',
carStatus: '', carStatus: '',
carIdNo: '', carIdNo: '',
radioValue: '0',
carModel: '', carModel: '',
carNature: '', carNature: '',
show: false, show: false,
@ -194,12 +232,13 @@ export default {
showgoods: false, showgoods: false,
showxin: false, showxin: false,
showzhi: false, showzhi: false,
showRecord: false,
showLeadMan: false, showLeadMan: false,
skuId: 0, skuId: 0,
inspectionWorkNodes: [], inspectionWorkNodes: [],
defaultIndex:[0], defaultIndex: [0],
kehuDefaultIndex:[0], kehuDefaultIndex: [0],
goodsDefaultIndex:[0,0], goodsDefaultIndex: [0, 0],
columns: [], columns: [],
options: [], options: [],
nature: [], nature: [],
@ -208,6 +247,7 @@ export default {
columnData: [], columnData: [],
xinlist: [], xinlist: [],
zhilist: [], zhilist: [],
recordTime: Number(new Date()),
baseUrl: this.$baseImageUrl, baseUrl: this.$baseImageUrl,
goodsId: '', goodsId: '',
msg: '3', msg: '3',
@ -223,11 +263,12 @@ export default {
naturetext: '', naturetext: '',
customerData: [], customerData: [],
inspectionWorkNodeStr: "", inspectionWorkNodeStr: "",
leadManId:undefined, leadManId: undefined,
leadManList: [], leadManList: [],
isInsert:true, isInsert: true,
inspectionId: undefined, inspectionId: undefined,
xinDefaultIndex:[0] xinDefaultIndex: [0],
recordTimeStr: '',
} }
}, },
onLoad(options) { onLoad(options) {
@ -240,7 +281,7 @@ export default {
this.inspectionWorkNodes[i].orderNum = i + 1 this.inspectionWorkNodes[i].orderNum = i + 1
} }
}); });
if (options.inspectionInfoId){ if (options.inspectionInfoId) {
this.isInsert = false this.isInsert = false
this.inspectionId = options.inspectionInfoId this.inspectionId = options.inspectionInfoId
this.title = '修改线下订单' this.title = '修改线下订单'
@ -262,6 +303,23 @@ export default {
}) })
} }
}, },
handleRadioChange(newValue) {
if (newValue === '0') {
this.recordTime = ''
}
},
formatter(type, value) {
if (type === 'year') {
return `${value}`
}
if (type === 'month') {
return `${value}`
}
if (type === 'day') {
return `${value}`
}
return value
},
changeHandler(e) { changeHandler(e) {
const { const {
columnIndex, columnIndex,
@ -302,12 +360,44 @@ export default {
this.leadManId = e.value[0].id this.leadManId = e.value[0].id
this.showLeadMan = false this.showLeadMan = false
}, },
confirmRecord(e) {
//
this.recordTime = e.value
this.recordTimeStr = this.formatTimestamp(e)
this.showRecord = false
},
cancelzhi() { cancelzhi() {
this.showzhi = false this.showzhi = false
}, },
formatTimestamp(e) {
if (!e || !e.value) {
console.error('Invalid input');
return null;
}
const timestamp = parseInt(e.value, 10); //
if (isNaN(timestamp)) {
console.error('Invalid timestamp');
return null;
}
const date = new Date(timestamp); // Date
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, '0'); // 0 1
const day = String(date.getDate()).padStart(2, '0');
const hours = String(date.getHours()).padStart(2, '0');
const minutes = String(date.getMinutes()).padStart(2, '0');
// const seconds = String(date.getSeconds()).padStart(2, '0');
// YYYY-MM-DD HH:mm:ss
return `${year}-${month}-${day} ${hours}:${minutes}`;
},
cancelLeadMan() { cancelLeadMan() {
this.showLeadMan = false this.showLeadMan = false
}, },
cancelRecord() {
this.showRecord = false
},
/*获取引车员信息*/ /*获取引车员信息*/
getLeadeMan() { getLeadeMan() {
request({ request({
@ -368,7 +458,7 @@ export default {
}, },
toSelectProject() { toSelectProject() {
uni.navigateTo({ uni.navigateTo({
url: '/pages/index/selectProject' url: `/pages/index/selectProject?selectProject=${JSON.stringify(this.inspectionWorkNodes)}`
}) })
}, },
async getgoodes() { async getgoodes() {
@ -387,6 +477,9 @@ export default {
return return
} }
this.inspectionWorkNodes.map(item => {
item.id = undefined
})
let data = { let data = {
partnerId: uni.getStorageSync('partnerId'), partnerId: uni.getStorageSync('partnerId'),
buyName: this.buyName, buyName: this.buyName,
@ -401,7 +494,8 @@ export default {
skuId: this.skuId, skuId: this.skuId,
carNature: this.carNature, carNature: this.carNature,
inspectionWorkNodes: this.inspectionWorkNodes, inspectionWorkNodes: this.inspectionWorkNodes,
leadManId: this.leadManId leadManId: this.leadManId,
startTime: this.recordTime,
} }
let res = await request({ let res = await request({
@ -478,7 +572,7 @@ export default {
}, 2000); }, 2000);
}, },
/*根据工单Id查询工单详情*/ /*根据工单Id查询工单详情*/
getInspectionInfo(){ getInspectionInfo() {
request({ request({
url: '/system/info/' + this.inspectionId, url: '/system/info/' + this.inspectionId,
method: 'get' method: 'get'
@ -502,7 +596,7 @@ export default {
const index = subArray.findIndex(item => item.id === res.data.leadManId); const index = subArray.findIndex(item => item.id === res.data.leadManId);
if (index !== -1) { if (index !== -1) {
// //
return { subArrayIndex, itemIndex: index }; return {subArrayIndex, itemIndex: index};
} else { } else {
// null undefined // null undefined
return null; return null;
@ -520,7 +614,7 @@ export default {
const index = subArray.findIndex(item => item.label === res.data.customerSource); const index = subArray.findIndex(item => item.label === res.data.customerSource);
if (index !== -1) { if (index !== -1) {
// //
return { subArrayIndex, itemIndex: index }; return {subArrayIndex, itemIndex: index};
} else { } else {
// null undefined // null undefined
return null; return null;
@ -536,14 +630,14 @@ export default {
const index = subArray.findIndex(item => item.label === res.data.carStatus); const index = subArray.findIndex(item => item.label === res.data.carStatus);
if (index !== -1) { if (index !== -1) {
// //
return { subArrayIndex, itemIndex: index }; return {subArrayIndex, itemIndex: index};
} else { } else {
// null undefined // null undefined
return null; return null;
} }
}) })
.filter(item => item !== null); // .filter(item => item !== null); //
let a = [kehuResult[0]] let a = [kehuResult[0]]
this.xinDefaultIndex = [a.itemIndex] this.xinDefaultIndex = [a.itemIndex]
}, 1000); }, 1000);
}) })

1094
pages/index/oldOrder.vue Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,332 @@
<template>
<view class="content">
<view style="width: 100%; height: 44px;"></view>
<view class="top-heder">
<view class="t-left" @click="getback()">
<uni-icons type="left" size="18"></uni-icons>
</view>
<view class="t-title">
<text>选择检测项目</text>
</view>
<view class="t-you"></view>
</view>
<view class="cont_box">
<view class="title_">
可选检测项目
</view>
<view class="box_">
<view class="box_button " :class="{ 'box_button_x' :isItemSelected(item) }"
v-for="item in inpectionProjects" @click="clickProject(item)">{{ item.projectName }}
</view>
</view>
<view class="title_">
已选检测项目
</view>
<view style="margin-bottom: 15px;" v-for="(item,index) in selectProject" :key="index">
<view class="steps_">
<view class="index_">{{ index + 1 }}</view>
<view style="font-size: 20px; font-weight: bold;">{{ item.projectName }}</view>
</view>
<view class="list-box">
<view class="l-left" @click="selectUser(item,index)">
<text style="color: red;font-weight: bold;text-align: center;">*</text>
选择检测人员
<text class="xixi">点击选择</text>
</view>
<view class="l-right">
<input type="text" v-model="item.dealUserName" placeholder="请选择检测人员">
</view>
</view>
<u-picker :show="item.show" :columns="columns" @confirm="confirms(item, $event)" @cancel="cancels(item)" :title="'选择'+item.projectName+'的检测人员'"
:key="index"
keyName="nickname"></u-picker>
<view class="xb_" v-if="index != selectProject.length - 1 "></view>
</view>
</view>
<view class="dlanniu" @click="sureChoose()">
<text>确定选择</text>
</view>
</view>
</template>
<script>
import request from '../../utils/request';
export default {
data() {
return {
iconSize: 130,
inpectionProjects: [],
selectProject: [],
show: false,
columns: [],
nickname: '',
}
},
onShow() {
this.getProjects()
},
onLoad(options) {
if (options.selectProject) {
this.selectProject = JSON.parse(options.selectProject)
}
},
methods: {
sureChoose() {
if (this.selectProject.length == 0) {
uni.showToast({
title: '请选择项目!',
icon: 'none'
})
return
}
let hasInvalidItem = false;
this.selectProject.forEach(item => {
if (item.dealUserId == undefined || item.dealUserName == '') {
hasInvalidItem = true;
return
}
})
if (hasInvalidItem) {
uni.showToast({
title: '请选择补录人员!',
icon: 'none'
})
return;
}
this.selectProject.map(item => {
item.projectId = item.id
// item.id = undefined
})
uni.$emit('selectProject', this.selectProject);
this.getback()
},
isItemSelected(item) {
return this.selectProject.findIndex(project => project.id === item.id) > -1;
},
getback() {
uni.navigateBack()
},
confirms(item, e) {
console.log('e', e)
if (e.value[0] != undefined) {
this.selectProject[e.value[0].index].dealUserId = e.value[0].id
this.selectProject[e.value[0].index].dealUserName = e.value[0].nickname
}
item.show = false
// this.show = false
this.$forceUpdate(); //
},
cancels(item) {
console.log('关闭前 show:', item.show); // show
item.show = false; // false u-picker
// this.show = false
this.$nextTick(() => {
console.log('关闭后 show:', item.show); // show
this.$forceUpdate(); //
});
},
selectUser(item, index) {
this.columns = []
// item.columns = []
request({
url: '/system/user/selectByRoleId',
method: 'get',
params: {
roleId: item.roleId
}
}).then(res => {
res.data.map(item => {
item.index = index
})
this.columns.push(res.data)
// item.columns.push(res.data)
})
item.show = true
// this.show = true
console.log('item', item)
},
async getProjects() {
let res = await request({
url: '/inspection/dl-inspection-project/page',
method: 'get',
params: {
pageNo: 1,
pageSize: 100
}
})
this.inpectionProjects = res.data.records
},
clickProject(data) {
let idx = this.selectProject.findIndex(project => project.id === data.id)
if (idx > -1) {
// 使splice
this.selectProject.splice(idx, 1);
} else {
this.selectProject.push(data)
data.show = false
}
}
}
}
</script>
<style scoped>
.steps_ {
display: flex;
align-items: center;
}
.cont_box {
box-sizing: border-box;
padding: 10px;
}
.title_ {
font-weight: bold;
margin-bottom: 5px;
}
.box_ {
width: 100%;
display: flex;
flex-wrap: wrap;
}
.xixi {
font-size: 12px;
color: #0D2E8D;
margin-left: 10px;
}
.box_button_x {
border-radius: 6px;
border: 1px solid #0D2E8D;
display: flex;
align-items: center;
justify-content: center;
font-size: 18px;
box-sizing: border-box;
padding: 10px 15px;
margin-right: 15px;
margin-bottom: 15px;
background: #0D2E8D;
color: #fff;
}
.list-box {
display: flex;
align-items: center;
justify-content: space-between;
box-sizing: border-box;
padding: 15px 5px;
border-bottom: 1px solid #EEEEEE;
}
.l-left {
font-size: 16px;
font-weight: 400;
color: #333333;
}
.l-right {
font-size: 16px;
font-weight: 400;
color: #999999;
text-align: right;
}
.box_button {
border-radius: 6px;
border: 1px solid #999;
display: flex;
align-items: center;
justify-content: center;
font-size: 18px;
box-sizing: border-box;
padding: 10px 15px;
margin-right: 15px;
margin-bottom: 15px;
}
.dlanniu {
width: 80%;
height: 45px;
background: linear-gradient(180deg, #3F61C0 0%, #0D2E8D 100%);
border-radius: 50px;
display: flex;
align-items: center;
justify-content: center;
margin: 20px auto;
color: white;
}
.t-you {
height: 100%;
width: 20%;
}
.content {
box-sizing: border-box;
width: 100%;
height: calc(100vh);
background: white;
}
.top-heder {
width: 100%;
height: 46px;
background: white;
display: flex;
align-items: center;
justify-content: space-between;
box-sizing: border-box;
padding: 5px 15px;
}
.t-title {
font-size: 17px;
font-weight: bold;
color: #333333;
}
.t-left {
width: 10%;
}
.index_ {
width: 35px;
height: 35px;
display: flex;
align-items: center;
justify-content: center;
color: #fff;
font-weight: bold;
font-size: 18px;
background: #0D2E8D;
border-radius: 50%;
margin-right: 10px;
}
.xb_ {
width: 35px;
height: 35px;
display: flex;
align-items: center;
justify-content: center;
color: #0D2E8D;
font-size: 22px;
font-weight: bold;
}
</style>

View File

@ -1,487 +1,488 @@
<template> <template>
<view class="content"> <view class="content">
<view class="top-heder"> <view class="top-heder">
<view class="t-left" @click="getback()"> <view class="t-left" @click="getback()">
<uni-icons type="left" size="18"></uni-icons> <uni-icons type="left" size="18"></uni-icons>
</view> </view>
<view class="t-title"> <view class="t-title">
<text>上门取车</text> <text>上门取车</text>
</view> </view>
<view class="t-you"></view> <view class="t-you"></view>
</view> </view>
<view class="x-box"> <view class="x-box">
<view class="box-top"> <view class="box-top">
<view style="width: 100%;"> <view style="width: 100%;">
<view class="touxiang"> <view class="touxiang">
<image src="../../static/detection/touxiang.png" mode=""></image> <image src="../../static/detection/touxiang.png" mode=""></image>
</view> </view>
<view v-if="workerName" class="h-title">{{workerName}} </view> <view v-if="workerName" class="h-title">{{ workerName }}</view>
<view class="sanniu" @click="getWorker()"> <view class="sanniu" @click="getWorker()">
<text>选择上门员工</text> <text>选择上门员工</text>
</view> </view>
</view> </view>
</view> </view>
<!-- <view class="box-dis"> <!-- <view class="box-dis">
<view class="ds-right"> <view class="ds-right">
<view class="h-title">{{orderInfo.goodsTitle}} </view> <view class="h-title">{{orderInfo.goodsTitle}} </view>
<view class="dis-hui"> <view class="dis-hui">
<text>上门时间</text> <text>上门时间</text>
<text>{{orderInfo.appointmentDay?orderInfo.appointmentDay:""}}{{orderInfo.appointmentTime?orderInfo.appointmentTime:""}}</text> <text>{{orderInfo.appointmentDay?orderInfo.appointmentDay:""}}{{orderInfo.appointmentTime?orderInfo.appointmentTime:""}}</text>
</view> </view>
<view class="dis-hui"> <view class="dis-hui">
<text>手机号</text> <text>手机号</text>
<text>{{orderInfo.userPhone}}</text> <text>{{orderInfo.userPhone}}</text>
</view> </view>
<view class="dis-hui"> <view class="dis-hui">
<text>地址</text> <text>地址</text>
<text>{{orderInfo.adressDetail}}</text> <text>{{orderInfo.adressDetail}}</text>
</view> </view>
</view> </view>
</view> --> </view> -->
</view> </view>
<view class="x-box"> <view class="x-box">
<view class="h-title">{{orderInfo.goodsTitle}}</view> <view class="h-title">{{ orderInfo.goodsTitle }}</view>
<view class="on-input"> <view class="on-input">
<view class="o-left">上门时间</view> <view class="o-left">上门时间</view>
<view class="o-right">{{orderInfo.appointmentDay?orderInfo.appointmentDay:""}} <view class="o-right">{{ orderInfo.appointmentDay ? orderInfo.appointmentDay : "" }}
{{orderInfo.appointmentTime?orderInfo.appointmentTime:""}}</view> {{ orderInfo.appointmentTime ? orderInfo.appointmentTime : "" }}
</view> </view>
<view class="on-input"> </view>
<view class="o-left">手机号</view> <view class="on-input">
<view class="o-right">{{orderInfo.userPhone}}</view> <view class="o-left">手机号</view>
</view> <view class="o-right">{{ orderInfo.userPhone }}</view>
<view class="on-input"> </view>
<view class="o-left">地址</view> <view class="on-input">
<view class="o-right">{{orderInfo.adressDetail}}</view> <view class="o-left">地址</view>
</view> <view class="o-right">{{ orderInfo.adressDetail }}</view>
</view>
</view>
<view class="annniu">
<view @click="takeOut()" class="">确认提交</view>
</view> </view>
<view class="annniu"> <u-picker :show="show" :columns="columns" keyName="label" @close="close" @confirm="confirm" @change="change"
<view @click="takeOut()" class="">确认提交</view> @cancel="cancel"></u-picker>
</view> <u-popup :show="xling" @close="closexl" :round="10" @open="openxl">
<u-picker :show="show" :columns="columns" keyName="label" @close="close" @confirm="confirm" @change="change" <view class="popup-box">
@cancel="cancel"></u-picker> <view class="sousuo">
<u-popup :show="xling" @close="closexl" :round="10" @open="openxl"> <uni-icons type="search" size="22"></uni-icons>
<view class="popup-box"> <input type="text" v-model="searchValue" placeholder="请输入招待员信息">
<view class="sousuo"> <text @click="getWorker()">搜索</text>
<uni-icons type="search" size="22"></uni-icons> </view>
<input type="text" v-model="searchValue" placeholder="请输入招待员信息"> <view class="list-box">
<text @click="getWorker()">搜索 </text> <scroll-view class="list_scroll" scroll-y="true">
</view> <view class="list-qiu" v-for="(item,index) in workerList" :key="index">
<view class="list-box"> <view class="">{{ item.nickname }}
<scroll-view class="list_scroll" scroll-y="true"> <text class="tel">{{ item.nickname }}</text>
<view class="list-qiu" v-for="(item,index) in workerList" :key="index"> </view>
<view class="">{{item.workName}} <text class="tel">{{item.workPhone}}</text> </view> <view class="banniu">
<view class="banniu"> <text @click="sureWorkerFun(item)">选择</text>
<text @click="sureWorkerFun(item)">选择</text> </view>
</view> </view>
</view> <view class="ckgd" @click="jiazai()">
<view class="ckgd" @click="jiazai()"> <text>点击加载更多</text>
<text>点击加载更多</text> </view>
</view> </scroll-view>
</scroll-view> </view>
</view> </view>
</view> </u-popup>
</u-popup> </view>
</view>
</template> </template>
<script> <script>
import config from '@/config' import config from '@/config'
import request from '../../utils/request'; import request from '../../utils/request';
export default {
data() {
return {
baseUrl: this.$baseUrl,
show: false,
xling: false,
lei: '请选择车辆类型',
workerId: '', export default {
columns: [], data() {
workerList: [], return {
cph: '', baseUrl: this.$baseUrl,
orderId: '', show: false,
id: '', xling: false,
partnerId: uni.getStorageSync("partnerId"), lei: '请选择车辆类型',
orderInfo: {},
searchValue: '',
sureWorker: {},
pageNum: 1, //
pageSize: 10, //
workerName: ''
}
},
onLoad(opion) { workerId: '',
this.id = opion.id columns: [],
this.getindex() workerList: [],
}, cph: '',
methods: { orderId: '',
getback() { id: '',
uni.navigateBack() partnerId: uni.getStorageSync("partnerId"),
}, orderInfo: {},
async takeOut() { searchValue: '',
if (!this.sureWorker.id) { sureWorker: {},
uni.showToast({ pageNum: 1, //
title: "请选择招待员", pageSize: 10, //
icon: "error" workerName: ''
}) }
return },
}
onLoad(opion) {
this.id = opion.id
this.getindex()
},
methods: {
getback() {
uni.navigateBack()
},
async takeOut() {
if (!this.sureWorker.id) {
uni.showToast({
title: "请选择招待员",
icon: "error"
})
return
}
let res = await request({ let res = await request({
url: '/partnerOwn/partner/designatePickCarWorker', url: '/partnerOwn/partner/designatePickCarWorker',
method: 'post', method: 'post',
params: { params: {
pickCarId: this.id, pickCarId: this.id,
workerId: this.workerId workerId: this.workerId
}, },
}) })
if (res.code == 200) { if (res.code == 200) {
uni.showToast({ uni.showToast({
title: "指派成功" title: "指派成功"
}) })
uni.navigateBack() uni.navigateBack()
} else { } else {
uni.showToast({ uni.showToast({
title: "异常错误", title: "异常错误",
icon: "error" icon: "error"
}) })
} }
}, },
async sureWorkerFun(data) { async sureWorkerFun(data) {
this.sureWorker = data this.sureWorker = data
this.workerName = data.workName this.workerName = data.nickname
this.workerId = data.id this.workerId = data.id
this.xling = false this.xling = false
}, },
async getWorker() { async getWorker() {
this.xling = true this.xling = true
let res = await request({ let res = await request({
url: '/partnerOwn/partner/getWorkList', url: '/partnerOwn/partner/getWorkList',
method: 'get', method: 'get',
params: { params: {
partnerId: this.partnerId, partnerId: this.partnerId,
workName: this.searchValue, workName: this.searchValue,
pageSize: this.pageSize, pageSize: this.pageSize,
pageNum: this.pageNum pageNum: this.pageNum
}, },
}) })
if (res.code == 200) { if (res.code == 200) {
this.workerList = this.workerList.concat(res.rows) this.workerList = this.workerList.concat(res.rows)
} else { } else {
uni.showToast({ uni.showToast({
title: "获取员工失败", title: "获取员工失败",
icon: 'none' icon: 'none'
}) })
} }
}, },
jiazai() { jiazai() {
this.pageNum++; this.pageNum++;
this.getWorker() this.getWorker()
}, },
async getindex() { async getindex() {
// //
let res = await request({ let res = await request({
url: '/partnerOwn/partner/getPickCarDetail?dataId=' + this.id, url: '/partnerOwn/partner/getPickCarDetail?dataId=' + this.id,
method: 'get', method: 'get',
}) })
this.orderInfo = res.data this.orderInfo = res.data
this.workerName = res.data.workerName this.workerName = res.data.workerName
}, },
closexl(e) { closexl(e) {
this.xling = false this.xling = false
}, },
openxl(e) { openxl(e) {
}, },
close(e) { close(e) {
}, },
change(e) { change(e) {
}, },
cancel(e) { cancel(e) {
this.show = false this.show = false
}, },
} }
} }
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
image { image {
width: 100%; width: 100%;
height: 100%; height: 100%;
} }
.content { .content {
box-sizing: border-box; box-sizing: border-box;
width: 100%; width: 100%;
height: calc(100vh); height: calc(100vh);
background: #F4F4F4; background: #F4F4F4;
} }
.top-heder { .top-heder {
width: 100%; width: 100%;
// height: 46px; // height: 46px;
background: white; background: white;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
box-sizing: border-box; box-sizing: border-box;
padding: 5px 15px; padding: 5px 15px;
padding-top: 45px; padding-top: 45px;
padding-bottom: 15px; padding-bottom: 15px;
margin-bottom: 10px; margin-bottom: 10px;
} }
.ckgd { .ckgd {
width: 100%; width: 100%;
text-align: center; text-align: center;
color: #0D2E8D; color: #0D2E8D;
margin-top: 20px; margin-top: 20px;
} }
.t-title { .t-title {
font-size: 17px; font-size: 17px;
font-weight: bold; font-weight: bold;
color: #333333; color: #333333;
} }
.t-left { .t-left {
width: 10%; width: 10%;
} }
.t-you { .t-you {
height: 100%; height: 100%;
width: 10%; width: 10%;
} }
.x-box { .x-box {
width: 95%; width: 95%;
margin: 10px auto; margin: 10px auto;
ackground: #FFFFFF; ackground: #FFFFFF;
border-radius: 8px; border-radius: 8px;
box-sizing: border-box; box-sizing: border-box;
padding: 10px; padding: 10px;
background: white; background: white;
} }
.touxiang { .touxiang {
width: 50px; width: 50px;
height: 50px; height: 50px;
border-radius: 50%; border-radius: 50%;
overflow: hidden; overflow: hidden;
margin: 10px auto; margin: 10px auto;
} }
.sanniu { .sanniu {
width: 105px; width: 105px;
height: 35px; height: 35px;
background: #0D2E8D; background: #0D2E8D;
border-radius: 50px; border-radius: 50px;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
font-size: 15px; font-size: 15px;
font-weight: 400; font-weight: 400;
color: #FFFFFF; color: #FFFFFF;
line-height: 15px; line-height: 15px;
margin: 0 auto; margin: 0 auto;
} }
.annniu { .annniu {
width: 90%; width: 90%;
height: 45px; height: 45px;
background: linear-gradient(180deg, #3F61C0 0%, #0D2E8D 100%); background: linear-gradient(180deg, #3F61C0 0%, #0D2E8D 100%);
border-radius: 50px; border-radius: 50px;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
font-size: 15px; font-size: 15px;
font-weight: 400; font-weight: 400;
color: #FFFFFF; color: #FFFFFF;
line-height: 15px; line-height: 15px;
margin: 15px auto; margin: 15px auto;
} }
.banniu { .banniu {
width: 20%; width: 20%;
height: 30px; height: 30px;
background: linear-gradient(180deg, #3F61C0 0%, #0D2E8D 100%); background: linear-gradient(180deg, #3F61C0 0%, #0D2E8D 100%);
border-radius: 50px; border-radius: 50px;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
font-size: 15px; font-size: 15px;
font-weight: 400; font-weight: 400;
color: #FFFFFF; color: #FFFFFF;
} }
.box {} .box {
}
.box-dis { .box-dis {
box-sizing: border-box; box-sizing: border-box;
padding: 15px; padding: 15px;
// border-bottom: 1px solid #EEEEEE; // border-bottom: 1px solid #EEEEEE;
display: flex; display: flex;
} }
.shop-img { .shop-img {
width: 80px; width: 80px;
height: 80px; height: 80px;
border-radius: 8px; border-radius: 8px;
overflow: hidden; overflow: hidden;
margin-right: 10px; margin-right: 10px;
} }
.dis-hui { .dis-hui {
width: 100%; width: 100%;
display: flex; display: flex;
align-items: center; align-items: center;
font-size: 15px; font-size: 15px;
font-weight: 400; font-weight: 400;
color: #999999; color: #999999;
margin-bottom: 5px; margin-bottom: 5px;
} }
.h-title { .h-title {
font-size: 16px; font-size: 16px;
font-weight: bold; font-weight: bold;
color: #333333; color: #333333;
text-align: center; text-align: center;
margin-bottom: 5px; margin-bottom: 5px;
} }
.box-top { .box-top {
box-sizing: border-box; box-sizing: border-box;
padding: 15px; padding: 15px;
// border-bottom: 1px solid #EEEEEE; // border-bottom: 1px solid #EEEEEE;
width: 100%; width: 100%;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-around; justify-content: space-around;
} }
.t-input { .t-input {
width: 90%; width: 90%;
margin: 20px auto; margin: 20px auto;
border: 1px solid #0D2E8D; border: 1px solid #0D2E8D;
border-radius: 6px; border-radius: 6px;
box-sizing: border-box; box-sizing: border-box;
padding: 2px 5px; padding: 2px 5px;
} }
.on-input { .on-input {
width: 100%; width: 100%;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
margin: 15px auto; margin: 15px auto;
} }
.bottom-input { .bottom-input {
border-top: 1px solid #F4F4F4; border-top: 1px solid #F4F4F4;
box-sizing: border-box; box-sizing: border-box;
padding-top: 20px; padding-top: 20px;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
width: 100%; width: 100%;
} }
.o-left { .o-left {
font-size: 15px; font-size: 15px;
font-weight: 400; font-weight: 400;
color: #666666; color: #666666;
} }
.o-right { .o-right {
font-size: 15px; font-size: 15px;
font-weight: 400; font-weight: 400;
color: #333333; color: #333333;
} }
.o-zui { .o-zui {
font-size: 20px; font-size: 20px;
font-weight: 500; font-weight: 500;
color: #333333; color: #333333;
} }
.popup-box { .popup-box {
overflow: hidden; overflow: hidden;
border-radius: 8px; border-radius: 8px;
box-sizing: border-box; box-sizing: border-box;
padding: 15px; padding: 15px;
width: 100%; width: 100%;
background-color: white; background-color: white;
} }
.sousuo { .sousuo {
width: 95%; width: 95%;
margin: 0 auto; margin: 0 auto;
margin-left: 0px; margin-left: 0px;
height: 30px; height: 30px;
background: #F0F0F0; background: #F0F0F0;
border-radius: 50px; border-radius: 50px;
color: #999999; color: #999999;
box-sizing: border-box; box-sizing: border-box;
padding: 0 10px; padding: 0 10px;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
input { input {
width: 80%; width: 80%;
} }
} }
.list-box { .list-box {
width: 100%; width: 100%;
height: 300px; height: 300px;
overflow: hidden; overflow: hidden;
box-sizing: border-box; box-sizing: border-box;
} }
.list_scroll { .list_scroll {
height: 100%; // height: 100%; //
display: flex; display: flex;
flex-direction: column; flex-direction: column;
} }
.list-qiu { .list-qiu {
width: 95%; width: 95%;
border-bottom: 1px solid #EEEEEE; border-bottom: 1px solid #EEEEEE;
box-sizing: border-box; box-sizing: border-box;
padding: 10px 5px; padding: 10px 5px;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
} }
.tel { .tel {
margin-left: 5px; margin-left: 5px;
font-size: 15px; font-size: 15px;
font-weight: 400; font-weight: 400;
color: #666666; color: #666666;
} }
</style> </style>

View File

@ -10,6 +10,65 @@
<view class="t-you"></view> <view class="t-you"></view>
</view> </view>
<view class="x-box"> <view class="x-box">
<view class="box-dis">
<view class="shop-img">
<image :src="baseImageUrl+detailData.goodsImage" mode=""></image>
</view>
<view class="ds-right">
<view class="h-title">{{ detailData.carNum }}</view>
<view class="dis-hui">
<text>车型</text>
<text>{{ detailData.carType }}</text>
</view>
<!-- <view class="dis-hui">-->
<!-- <text>预约人</text>-->
<!-- <text>{{ detailData.buyUserName }}</text>-->
<!-- </view>-->
<!-- <view class="dis-hui">-->
<!-- <text>手机号</text>-->
<!-- <text>{{ detailData.buyUserPhone }}</text>-->
<!-- </view>-->
<!-- <view class="dis-hui" style="display: flex; justify-content: space-between; align-items: center;">-->
<!-- <text>引车员</text>-->
<!-- <text>{{ detailData.leadManName }}</text>-->
<!-- <text style="margin-left: auto; color: blue;" @tap="selectLeadMan">更换引车员</text>-->
<!-- </view>-->
<view class="dis-hui">
<text>商品</text>
<text>{{ detailData.goodsName }}</text>
</view>
<view class="dis-hui">
<text>商品价格</text>
<text>{{ detailData.goodsPrice / 100 }}</text>
</view>
</view>
</view>
<view class="r-two-box">
<view class="h-two-box"
style="margin-bottom: 10px;border-bottom: 1px solid #DDDDDD;box-sizing: border-box;padding-bottom: 10px">
<view class="h-two-l">
<view class="h_title"> 引车员</view>
<view class="h_name">{{ detailData.leadManName }}</view>
</view>
<view class="h-two-r" @tap="selectLeadMan">
<image src="../..//static/imgs/t_.png" mode=""></image>
<text>更换引车员</text>
</view>
</view>
<view class="h-two-box">
<view class="h-two-l">
<view class="h_title"> 客户信息</view>
<view class="h_name">{{ detailData.buyUserName }} {{ detailData.buyUserPhone }}</view>
</view>
<view class="h-two-r" @click="callUser(detailData.buyUserPhone)">
<image src="../..//static/imgs/b_.png" mode=""></image>
<text>拨打电话</text>
</view>
</view>
</view>
<view class="box-top"> <view class="box-top">
<view style=" width: 100%;"> <view style=" width: 100%;">
<!-- <view class="touxiang" v-if="!detailData.workerAvatar">--> <!-- <view class="touxiang" v-if="!detailData.workerAvatar">-->
@ -18,51 +77,33 @@
<!-- <view class="touxiang" v-else>--> <!-- <view class="touxiang" v-else>-->
<!-- <image :src="baseImageUrl+detailData.workerAvatar" mode=""></image>--> <!-- <image :src="baseImageUrl+detailData.workerAvatar" mode=""></image>-->
<!-- </view>--> <!-- </view>-->
<view class="sanniu"> <!-- <view class="sanniu">-->
<text>{{ detailData.workerName }}</text> <!-- <text>{{ detailData.workerName }}</text>-->
<!-- </view>-->
<view class="steps-container">
<view
v-for="(item, index) in detailData.workNodes"
:key="index"
class="step-item"
>
<!-- 圆形图标 -->
<view
class="step-circle"
:class="{'circle-blue': item.type === '1', 'circle-yellow': item.type === '0'}">
</view>
<!-- 项目信息 -->
<view class="step-content">{{ item.projectName }}</view>
</view>
</view> </view>
</view> </view>
</view> </view>
<view class="box-dis">
<view class="shop-img">
<image :src="baseImageUrl+detailData.goodsImage" mode=""></image>
</view>
<view class="ds-right">
<view class="h-title">{{ detailData.goodsName }}</view>
<view class="dis-hui">
<text>预约人</text>
<text>{{ detailData.buyUserName }}</text>
</view>
<view class="dis-hui">
<text>手机号</text>
<text>{{ detailData.buyUserPhone }}</text>
</view>
<view class="dis-hui" style="display: flex; justify-content: space-between; align-items: center;">
<text>引车员</text>
<text>{{ detailData.leadManName }}</text>
<text style="margin-left: auto; color: blue;" @tap="selectLeadMan">更换引车员</text>
</view>
<view class="dis-hui"> <!-- <view class="bd-tel" >-->
<text>车型</text> <!-- <uni-icons type="phone" color="#0D2E8D" size="16"></uni-icons>-->
<text>{{ detailData.carType }}</text> <!-- <text>联系用户</text>-->
</view> <!-- </view>-->
<view class="dis-hui">
<text>车牌号</text>
<text>{{ detailData.carNum }}</text>
</view>
<view class="dis-hui">
<text>商品价格</text>
<text>{{ detailData.goodsPrice / 100 }}</text>
</view>
</view>
</view>
<view class="bd-tel" @click="callUser(detailData.buyUserPhone)">
<uni-icons type="phone" color="#0D2E8D" size="16"></uni-icons>
<text>联系用户</text>
</view>
</view> </view>
<view class="x-box" v-if="roleSelect == 'shop'"> <view class="x-box" v-if="roleSelect == 'shop'">
<view class="h-title">订单详情</view> <view class="h-title">订单详情</view>
@ -95,32 +136,33 @@
</view> </view>
</view> </view>
<view class="" v-for="(item,index) in detailData.stepInfos" :key="index"> <view class="" style="margin-bottom: 10px" v-for="(item,index) in detailData.stepInfos" :key="index">
<view class="x-box">
<view class="h-title" style="display: flex;align-items: center;justify-content: space-between;"> <view class="p_titel" style="display: flex;justify-content: space-between;">
<view style="width: 10%;"> <view style="margin-right: -15px; display: flex; ">
<view class="qiu_">{{ index + 1 }}</view> <view class="qiu_">{{ index + 1 }}</view>
<view style="margin-left: 10px">
<view class="jc_title">
{{ item.title }}
</view>
<view class="jc_name">施工人员:
{{ item.nickname }}
</view>
</view> </view>
<text style="width:30%;box-sizing: border-box;padding-left: 5px;"> {{ item.title }}</text>
<text class="times">{{ item.createTime }}</text>
<text class="times">施工人员:
{{ item.nickname }}
</text>
</view> </view>
<view class=""> <text class="times">{{ item.createTime }}</text>
<view style="margin-bottom: 5px; box-sizing: border-box;padding-left: 10%">{{ item.content }}</view>
</view>
<view class="p_box" v-if="index+1 <detailData.stepInfos.length || (item.images.length > 0 || item.content)">
<view class="g_hui" v-if="item.images.length > 0 || item.content">
<view style="margin-bottom: 10px; box-sizing: border-box;" v-if="item.content">{{ item.content }}</view>
<view style="display: flex" v-if="item.images"> <view style="display: flex" v-if="item.images">
<!-- <view v-for="it in item.images.split(',')">--> <u-album :urls="item.imageList" :singleSize="70"></u-album>
<!-- <image :src="baseImageUrl+'/'+it" style="width: 28vw; height: 12vh; margin-right: 1vw; " ></image>-->
<!-- </view>-->
<u-album :urls="item.imageList" :singleSize="70" style="padding-left: 40px"></u-album>
</view> </view>
</view> </view>
<view style="display: flex;align-items: center;">
<view class="xb_" v-if="index != detailData.stepInfos.length - 1 "></view>
</view>
</view> </view>
</view> </view>
@ -157,17 +199,19 @@
</view> </view>
</view> </view>
<view class="t-title" v-if="geindex == 1">重审/退办</view> <view v-if="isExamine">
<view class="on-inputx" v-if="geindex == 1"> <view class="t-title" v-if="geindex == 1">重审/退办</view>
<view class="anniu" :class="{'an':isRetrial == item.value}" v-for="(item,index) in cstb" <view class="on-inputx" v-if="geindex == 1">
:key="index" @click="shenmowanyi(item.value,index)"> <view class="anniu" :class="{'an':isRetrial == item.value}" v-for="(item,index) in cstb"
<text>{{ item.text }}</text> :key="index" @click="shenmowanyi(item.value,index)">
<text>{{ item.text }}</text>
</view>
</view> </view>
</view> <view class="t-title" v-if="tbindex == 1 && isRetrial == 1 && isPass != '1'">选择复检的项目</view>
<view class="t-title" v-if="tbindex == 1 && isRetrial == 1 && isPass != '1'">选择复检的项目</view> <view class="box_ on-inputx" v-if="tbindex == 1 && isRetrial == 1 && isPass != '1'">
<view class="box_ on-inputx" v-if="tbindex == 1 && isRetrial == 1 && isPass != '1'"> <view class="box_button " :class="{ 'box_button_x' :csId.includes(item.id) }"
<view class="box_button " :class="{ 'box_button_x' :csId.includes(item.id) }" v-for="item in selectProject" @click="clickProject(item)">{{ item.projectName }}
v-for="item in selectProject" @click="clickProject(item)">{{ item.projectName }} </view>
</view> </view>
</view> </view>
<view class="bottomx" @click="submit()"> <view class="bottomx" @click="submit()">
@ -283,10 +327,12 @@ export default {
lei: '请选择车辆类型', lei: '请选择车辆类型',
defaultIndex: [0], defaultIndex: [0],
columns: [], columns: [],
isExamine: false,
cph: '', cph: '',
fileList1: [], fileList1: [],
fileList2: [], fileList2: [],
shelist: [], shelist: [],
type: 1,
isPass: "1", isPass: "1",
remark: '', remark: '',
csId: [], csId: [],
@ -317,6 +363,9 @@ export default {
this.inspectionInfoId = option.inspectionInfoId this.inspectionInfoId = option.inspectionInfoId
this.workNodeId = option.workNodeId this.workNodeId = option.workNodeId
this.workNodeStatus = option.workNodeStatus this.workNodeStatus = option.workNodeStatus
if (this.workNodeStatus == '1') {
this.isExamines()
}
}, },
onShow() { onShow() {
@ -412,6 +461,15 @@ export default {
this.getindex() this.getindex()
}) })
}, },
//退
isExamines() {
request({
url: '/system/info/isExamine',
method: 'get'
}).then(res => {
this.isExamine = res.data
})
},
// //
getProject() { getProject() {
request({ request({
@ -484,11 +542,12 @@ export default {
id: this.workNodeId, id: this.workNodeId,
remark: this.remark, remark: this.remark,
dealImages: this.fileList2.join(","), dealImages: this.fileList2.join(","),
type: this.type,
} }
let status = 0 let status = 0
if (this.isPass == '1') { if (this.isPass == '1') {
status = 3 status = 3
} else if (this.tbindex == 1 && this.isRetrial == 1) { } else if (this.isExamine && this.tbindex == 1 && this.isRetrial == 1) {
if (this.csId == '' || this.csId == undefined) { if (this.csId == '' || this.csId == undefined) {
uni.showToast({ uni.showToast({
title: '请选择要复检的项目', title: '请选择要复检的项目',
@ -511,7 +570,7 @@ export default {
}) })
uni.navigateBack(); uni.navigateBack();
return return
} else if (this.tbindex == 2 && this.isRetrial == 2) { } else if (this.isExamine && this.tbindex == 2 && this.isRetrial == 2) {
// //
uni.navigateTo({ uni.navigateTo({
url: '/pages/index/Neworder?inspectionInfoId=' + this.inspectionInfoId url: '/pages/index/Neworder?inspectionInfoId=' + this.inspectionInfoId
@ -654,6 +713,7 @@ export default {
Nnimamadewen(value, index) { Nnimamadewen(value, index) {
this.isPass = value this.isPass = value
this.geindex = index this.geindex = index
this.type = value
}, },
shenmowanyi(value, index) { shenmowanyi(value, index) {
this.tbindex = value this.tbindex = value
@ -814,6 +874,33 @@ image {
// justify-content: center; // justify-content: center;
} }
.p_box {
position: relative;
width: 90%;
margin: 0 auto;
box-sizing: border-box;
padding: 10px;
//border-left: 1px dashed #DEE1EA;
border-left: 1px dashed #0d2e8d;
}
.g_hui {
background: #F4F5F8;
border-radius: 16rpx 16rpx 16rpx 16rpx;
box-sizing: border-box;
padding: 10px;
}
.p_titel {
width: 90%;
margin: 0 auto;
box-sizing: border-box;
position: relative;
}
.bottomx { .bottomx {
margin: 0 auto; margin: 0 auto;
width: 225px; width: 225px;
@ -915,20 +1002,25 @@ image {
.box-dis { .box-dis {
box-sizing: border-box; box-sizing: border-box;
padding: 15px; padding: 15px 0px;
// border-bottom: 1px solid #EEEEEE; // border-bottom: 1px solid #EEEEEE;
display: flex; display: flex;
align-items: center; align-items: center;
} }
.shop-img { .shop-img {
width: 125px; width: 150px;
height: 125px; height: 150px;
border-radius: 8px; border-radius: 8px;
overflow: hidden; overflow: hidden;
margin-right: 10px; margin-right: 10px;
} }
.ds-right {
width: 55%;
}
.dis-hui { .dis-hui {
width: 100%; width: 100%;
display: flex; display: flex;
@ -940,7 +1032,7 @@ image {
} }
.times { .times {
width: 30%;
font-size: 14px; font-size: 14px;
font-weight: 600; font-weight: 600;
color: #999999; color: #999999;
@ -956,12 +1048,13 @@ image {
.box-top { .box-top {
box-sizing: border-box; box-sizing: border-box;
padding: 15px; //padding: 15px;
border-bottom: 1px solid #EEEEEE; border-bottom: 1px solid #EEEEEE;
width: 100%; width: 100%;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-around; justify-content: space-around;
margin-bottom: 15px;
} }
.t-input { .t-input {
@ -1172,14 +1265,19 @@ image {
} }
.qiu_ { .qiu_ {
width: 35px; width: 25px;
height: 35px; height: 25px;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
border-radius: 50%; border-radius: 50%;
color: #fff; color: #fff;
background: #0D2E8D; background: #0174F6;
margin-left: -13px;
margin-top: 5px;
//position: absolute;
//left: -10x;
//top: 0px;
} }
.xb_ { .xb_ {
@ -1194,4 +1292,97 @@ image {
font-size: 40px; font-size: 40px;
font-weight: bold; font-weight: bold;
} }
.steps-container {
display: flex;
flex-wrap: wrap; /* 自动换行 */
justify-content: space-between; /* 均匀分布 */
gap: 10px; /* 控制横向和纵向间距 */
}
.step-item {
display: flex;
align-items: center; /* 图标和文字垂直居中对齐 */
width: 31%; /* 每行展示三个 */
text-align: left;
margin-bottom: 20px;
}
.step-circle {
width: 20px;
height: 20px;
border-radius: 50%;
background: linear-gradient(to right, #F1F1F1, #858899);
box-shadow: 0px 0px 0px 2px rgba(0, 0, 0, 0.3);
flex-shrink: 0;
margin-right: 5px; /* 圆点和文字的间距 */
}
.circle-blue {
background: linear-gradient(to right, #80BCFF, #0174F6) !important;
box-shadow: 0px 0px 0px 2px rgba(0, 0, 0, 0.3);
}
.circle-yellow {
background: linear-gradient(to right, #FFD78C, #FFB323) !important;
}
.step-content {
font-size: 14px;
line-height: 24px; /* 与图标高度对齐 */
color: #333;
}
.r-two-box {
width: 100%;
background: #F4F5F8;
border-radius: 8px;
box-sizing: border-box;
padding: 10px;
margin-bottom: 15px;
}
.h-two-box {
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
}
.h-two-r {
display: flex;
align-items: center;
font-size: 30rpx;
color: #0174F6;
image {
width: 30rpx;
height: 30rpx;
margin-right: 5px;
}
}
.h_title {
font-size: 24rpx;
color: #999999;
margin-bottom: 5px;
}
.h_name {
font-size: 28rpx;
color: #333333;
}
.jc_title {
font-weight: bold;
font-size: 28rpx;
color: #333333;
}
.jc_name {
font-weight: 500;
font-size: 28rpx;
color: #9AA0B0;
}
</style> </style>

View File

@ -16,7 +16,7 @@
可选检测项目 可选检测项目
</view> </view>
<view class="box_"> <view class="box_">
<view class="box_button " :class="{ 'box_button_x' :selectProject.indexOf(item)>-1 }" <view class="box_button " :class="{ 'box_button_x' :isItemSelected(item) }"
v-for="item in inpectionProjects" @click="clickProject(item)">{{ item.projectName }} v-for="item in inpectionProjects" @click="clickProject(item)">{{ item.projectName }}
</view> </view>
</view> </view>
@ -64,6 +64,11 @@
this.getProjects() this.getProjects()
}, },
onLoad(options) {
if (options.selectProject) {
this.selectProject = JSON.parse(options.selectProject)
}
},
methods: { methods: {
sureChoose() { sureChoose() {
if (this.selectProject.length == 0) { if (this.selectProject.length == 0) {
@ -75,11 +80,14 @@
} }
this.selectProject.map(item => { this.selectProject.map(item => {
item.projectId = item.id item.projectId = item.id
item.id = undefined // item.id = undefined
}) })
uni.$emit('selectProject', this.selectProject); uni.$emit('selectProject', this.selectProject);
this.getback() this.getback()
}, },
isItemSelected(item) {
return this.selectProject.findIndex(project => project.id === item.id) > -1;
},
getback() { getback() {
uni.navigateBack() uni.navigateBack()
}, },
@ -96,7 +104,7 @@
this.inpectionProjects = res.data.records this.inpectionProjects = res.data.records
}, },
clickProject(data) { clickProject(data) {
let idx = this.selectProject.indexOf(data) let idx = this.selectProject.findIndex(project => project.id === data.id)
if (idx > -1) { if (idx > -1) {
// 使splice // 使splice
this.selectProject.splice(idx, 1); this.selectProject.splice(idx, 1);

View File

@ -20,7 +20,7 @@
</view> </view>
<!-- 提成记录列表 --> <!-- 提成记录列表 -->
<view v-for="item in list" :key="item.node_id" class="list-item"> <view v-for="item in list" class="list-item">
<view class="row"> <view class="row">
<span class="label">项目名称:</span> <span class="label">项目名称:</span>
<span class="project-name">{{ item.projectName }}</span> <span class="project-name">{{ item.projectName }}</span>

View File

@ -38,7 +38,7 @@
<view class="m-top"> <view class="m-top">
<view class="top-left"> <view class="top-left">
<view class="dhei">{{ item.goodsName }}</view> <view class="dhei">{{ item.goodsName }}</view>
<text class="xhui">当前检测{{ item.workerName }}</text> <text class="xhui">接待{{ item.workerName }}</text>
<text class="xhui" style="margin-left: 50rpx;">检测项目{{ item.projectName }}</text> <text class="xhui" style="margin-left: 50rpx;">检测项目{{ item.projectName }}</text>
</view> </view>
<view @click="callUser(item.buyPhone)" class="top-right"> <view @click="callUser(item.buyPhone)" class="top-right">
@ -73,8 +73,11 @@
</view> </view>
<view class="bottom-di"> <view class="bottom-di">
<view class="button-container"> <view class="button-container">
<u-button class="button" v-if="item.workNodeStatus === '0'" @click="orderTaking(item)" size="10">同意</u-button> <u-button class="button" v-if="item.workNodeStatus === '0'" @click="orderTaking(item)" size="10">同意
<u-button class="button" v-if="item.workNodeStatus === '1'" @click="cancelAnOrder(item)" size="10">取消接单</u-button> </u-button>
<u-button class="button" v-if="item.workNodeStatus === '1'" @click="cancelAnOrder(item)" size="10">
取消接单
</u-button>
<u-button class="button" @click="godetails(item)" size="10">查看详情</u-button> <u-button class="button" @click="godetails(item)" size="10">查看详情</u-button>
</view> </view>
</view> </view>
@ -84,9 +87,15 @@
</view> </view>
</view> </view>
<view class="lanniu" @click="gogogo"> <view class="lanniu-container" v-if="isExamine">
<text>+ 添加线下订单</text> <view class="lanniu" @click="gogogo">
<text>+ 添加线下订单</text>
</view>
<view class="lanniu" @click="gogogoOldOrder">
<text>+ 补录</text>
</view>
</view> </view>
<view style="width: 100%; height: 50px;"></view> <view style="width: 100%; height: 50px;"></view>
<tabBar :msg="msg"></tabBar> <tabBar :msg="msg"></tabBar>
@ -101,13 +110,14 @@ import tabBar from '../../components/staffTabBer/tabBar.vue'
export default { export default {
data() { data() {
return { return {
msgSocket: this.$msgSocket, msgSocket: this.$msgSocket,
imgurl: this.$imgeUrl, imgurl: this.$imgeUrl,
baseUrl: this.$baseUrl, baseUrl: this.$baseUrl,
infoDatas: {}, infoDatas: {},
partnerId: uni.getStorageSync("partnerId"), partnerId: uni.getStorageSync("partnerId"),
goodsTitle: '', goodsTitle: '',
tapindex: 0, tapindex: 0,
isExamine:false,
msg: '1', msg: '1',
carNum: '', carNum: '',
pageNum: 1,// pageNum: 1,//
@ -131,18 +141,19 @@ export default {
} }
}, },
onLoad() { onLoad() {
this.$startSocketConnect(uni.getStorageSync('userId')) this.$startSocketConnect(uni.getStorageSync('userId'))
this.msgInfo() this.msgInfo()
}, },
onShow() { onShow() {
this.getList() this.getList()
this.isExamines()
}, },
watch: { watch: {
msgSocket(newVal, oldVal) { msgSocket(newVal, oldVal) {
console.log('msgSocket值发生变化', newVal, oldVal) console.log('msgSocket值发生变化', newVal, oldVal)
this.msgInfo() this.msgInfo()
}, },
deep: true, deep: true,
}, },
onReachBottom() { onReachBottom() {
if (this.pageNum >= this.totalPages) { if (this.pageNum >= this.totalPages) {
@ -160,18 +171,27 @@ export default {
tabBar, tabBar,
}, },
methods: { methods: {
msgInfo() { msgInfo() {
console.log(this.msgSocket, 'msgSocket') console.log(this.msgSocket, 'msgSocket')
if (this.msgSocket) { if (this.msgSocket) {
console.log('消息回调启动成功') console.log('消息回调启动成功')
this.msgSocket.onMessage(res => { this.msgSocket.onMessage(res => {
this.pageNum = 1 this.pageNum = 1
this.totalPages =0 this.totalPages = 0
this.getList() this.getList()
}) })
} }
}, },
/*判断是否是收费登陆人*/
isExamines() {
request({
url: '/system/info/isExamine',
method: 'get'
}).then(res => {
this.isExamine = res.data
})
},
callUser(phone) { callUser(phone) {
uni.makePhoneCall({ uni.makePhoneCall({
phoneNumber: phone // phoneNumber: phone //
@ -205,41 +225,41 @@ export default {
}, },
godetails(item) { godetails(item) {
uni.navigateTo({ uni.navigateTo({
url: "/pages/index/orderdetails?inspectionInfoId=" + item.id +"&workNodeId=" + item.workNodeId + "&workNodeStatus=" + item.workNodeStatus url: "/pages/index/orderdetails?inspectionInfoId=" + item.id + "&workNodeId=" + item.workNodeId + "&workNodeStatus=" + item.workNodeStatus
}) })
}, },
orderTaking(data){ orderTaking(data) {
request({ request({
url:'/system/info/orderTaking', url: '/system/info/orderTaking',
method:'post', method: 'post',
params:{ params: {
inspectionId:data.id, inspectionId: data.id,
workNodeId:data.workNodeId workNodeId: data.workNodeId
} }
}).then(res=>{ }).then(res => {
if(res.code == 200){ if (res.code == 200) {
uni.showToast({ uni.showToast({
title:'接单成功', title: '接单成功',
icon:'none' icon: 'none'
}) })
// this.tapindex = 1 // this.tapindex = 1
this.getList() this.getList()
} }
}) })
}, },
cancelAnOrder(data){ cancelAnOrder(data) {
request({ request({
url:'/system/info/cancelAnOrder', url: '/system/info/cancelAnOrder',
method:'post', method: 'post',
params:{ params: {
inspectionId:data.id, inspectionId: data.id,
workNodeId:data.workNodeId workNodeId: data.workNodeId
} }
}).then(res=>{ }).then(res => {
if(res.code == 200){ if (res.code == 200) {
uni.showToast({ uni.showToast({
title:'取消接单成功', title: '取消接单成功',
icon:'none' icon: 'none'
}) })
this.getList() this.getList()
} }
@ -250,6 +270,11 @@ export default {
url: '/pages/index/Neworder' url: '/pages/index/Neworder'
}) })
}, },
gogogoOldOrder() {
uni.navigateTo({
url: '/pages/index/oldOrder'
})
},
tapqh(index) { tapqh(index) {
this.tapindex = index this.tapindex = index
this.infoDatas = [] this.infoDatas = []
@ -456,11 +481,19 @@ export default {
font-weight: 600; font-weight: 600;
color: #FF571A; color: #FF571A;
} }
.lanniu-container {
.lanniu {
width: 90%; width: 90%;
position: fixed; position: fixed;
bottom: 60px; bottom: 60px;
display: flex;
align-items: center;
justify-content: space-between; /* 控制子元素之间的间距,可以改为 center/space-around */
transform: translate(-50%);
left: 50%;
z-index: 9999999999999999999999999999999999999999999999999999999;
}
.lanniu {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
@ -469,11 +502,11 @@ export default {
height: 44px; height: 44px;
border-radius: 8px; border-radius: 8px;
font-weight: bold; font-weight: bold;
transform: translate(-50%); flex: 1; /* 子元素均分宽度 */
left: 50%; margin: 0 5px; /* 控制子元素之间的间距 */
z-index: 9999999999999999999999999999999999999999999999999999999;
} }
.csz { .csz {
font-size: 20px; font-size: 20px;
font-weight: bold; font-weight: bold;

BIN
static/imgs/b_.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 495 B

BIN
static/imgs/t_.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 676 B