Commit 8f578a52 authored by 郭晓清's avatar 郭晓清
parents 0185e547 407616aa
const UNI_APP = {
ucenterUrl: {
apiUrl: 'http://192.168.1.46', //php端域名请求头
xueUrl: 'http://192.168.1.46:8088', //学院
apiUrl: 'http://rest-u.yunya.com', //php端域名请求头
xueUrl: 'http://xue.yunya.com', //学院
// banshou: 'https://m.banshou.com', //扳手app
},
systemUrl: {
......
......@@ -5,8 +5,7 @@ const UNI_APP = {
banshou: 'https://m.test.ibanshou.cn', //扳手app
},
systemUrl: {
// apiUrl: 'https://system.dev.banshouhui.com', //java端域名请求头
apiUrl: 'http://apidoc.banshouhui.com:3000/mock/31', // mock端域名请求头
apiUrl: 'https://system.dev.banshouhui.com', //java端域名请求头
},
qn_base_url: 'https://qn-static.banshouhui.com/self-support/'
}
......
......@@ -37,7 +37,11 @@ let orderApiFun = function(vm){
let feedbackConfig = async (params = {}) => await vm.$u.get('/wxh-worker-rest/rst/order/v2/getFeedBack/' + vm.vuex_token, params)
/* 预约+过程反馈 接口 */
let traceAndAppointment = async (params = {}, orderId) => await vm.$u.post(`/wxh-worker-rest/rest/order/traceAndAppointment/trace/V2/`+vm.vuex_token+`/`+orderId, params)
let traceAndAppointment = async (params = {}, orderId) => await vm.$u.post('/wxh-worker-rest/rest/order/traceAndAppointment/trace/V2/' + vm.vuex_token + '/' + orderId, params)
/* 师傅拒单 */
let rejectOrder = async (params = {}, orderId) => await vm.$u.get('/wxh-worker-rest/rest/' + vm.vuex_token + '/order/' + orderId + '/workerReject/V2', params)
/**
* 查询工单操作记录列表接口
......@@ -88,6 +92,7 @@ let orderApiFun = function(vm){
maintainWorkerCheckin,
feedbackConfig,
traceAndAppointment,
rejectOrder,
orderStandard,
saveImage,
getWatermark,
......
......@@ -68,7 +68,7 @@ export default [{
"fieldsTitle": "电缆",
"fieldsName": "file",
"fieldsType": "file",
"key": "短裙",
"key": "电缆",
"icon": "https://cdn.uviewui.com/uview/common/classify/1/5.jpg",
"cat": 10
},
......@@ -76,7 +76,7 @@ export default [{
"fieldsTitle": "管材",
"fieldsName": "file",
"fieldsType": "file",
"key": "短裙",
"key": "管材",
"icon": "https://cdn.uviewui.com/uview/common/classify/1/5.jpg",
"cat": 10
},
......@@ -98,54 +98,30 @@ export default [{
"icon": "https://cdn.uviewui.com/uview/common/classify/1/7.jpg",
"cat": 10
},
{
"fieldsTitle": "多级选择",
"fieldsName": "mutiPicker",
"fieldsType": "mutipicker",
"required": true,
"key": "妈妈装",
"icon": "https://cdn.uviewui.com/uview/common/classify/1/8.jpg",
"cat": 10
},
{
"fieldsTitle": "时间选择",
"fieldsName": "time",
"fieldsType": "time",
"required": true,
"key": "牛仔裤",
"icon": "https://cdn.uviewui.com/uview/common/classify/1/9.jpg",
"cat": 10
},
// {
// "fieldsTitle": "多级选择",
// "fieldsName": "mutiPicker",
// "fieldsType": "mutipicker",
// "required": true,
// "key": "妈妈装",
// "icon": "https://cdn.uviewui.com/uview/common/classify/1/8.jpg",
// "cat": 10
// },
// {
// "fieldsTitle": "时间选择",
// "fieldsName": "time",
// "fieldsType": "time",
// "required": true,
// "key": "牛仔裤",
// "icon": "https://cdn.uviewui.com/uview/common/classify/1/9.jpg",
// "cat": 10
// },
{
"fieldsTitle": "备注",
"key": "备注",
"fieldsType": "textarea",
"icon": "https://cdn.uviewui.com/uview/common/classify/1/10.jpg",
"cat": 10
},
{
"fieldsTitle": "休闲裤",
"key": "休闲裤",
"icon": "https://cdn.uviewui.com/uview/common/classify/1/11.jpg",
"cat": 10
},
{
"fieldsTitle": "雪纺衫",
"key": "雪纺衫",
"icon": "https://cdn.uviewui.com/uview/common/classify/1/12.jpg",
"cat": 10
},
{
"fieldsTitle": "防晒衣",
"key": "防晒衣",
"icon": "https://cdn.uviewui.com/uview/common/classify/1/13.jpg",
"cat": 10
},
{
"fieldsTitle": "礼服/婚纱",
"key": "礼服婚纱",
"icon": "https://cdn.uviewui.com/uview/common/classify/1/14.jpg",
"cat": 10
}
]
},
......
<!-- 预约时间 -->
<template>
<view :class="{'con-box':titleShow}">
<view class="title" v-if="titleShow">{{'预约时间'}}</view>
<view class="title" v-if="titleShow">{{ '预约时间' }}</view>
<view class="u-m-t-40">
<view class="appoint-box">
<view class="select-date">
......@@ -24,11 +24,11 @@
<view class="select-time u-p-t-50">
<view class="u-flex u-row-between">
<view class="txt">选择时间</view>
<view class="txt active">{{ timeList[currentTime] }}</view>
<view class="txt active">{{ currentTimeTxt }}</view>
</view>
<view class="u-p-t-30 u-flex u-flex-wrap time-list">
<view @click="timeChange(item,index,timeList)"
:class="{'time-item':true,'active':index===currentTime}" v-for="(item,index) in timeList"
:class="{'time-item':true,'active': (currentTime && index===currentTime)}" v-for="(item,index) in timeList"
:key="index">
<text class="time">{{item}}</text>
</view>
......@@ -51,31 +51,39 @@
data() {
return {
currentDay: 0,
currentTime: 0,
currentTime: null,
dateList: [{
weekDay: '周三',
day: '21'
day: '21',
}, {
weekDay: '周',
day: '21'
weekDay: '周',
day: '22',
}, {
weekDay: '周',
day: '21'
weekDay: '周',
day: '23',
}, {
weekDay: '周',
day: '21'
weekDay: '周',
day: '24',
}, {
weekDay: '周',
day: '21'
weekDay: '周',
day: '25',
}, {
weekDay: '周',
day: '21'
weekDay: '周',
day: '26',
}, ],
timeList: ['06:00-08:00', '08:00-10:00', '10:00-12:00', '12:00-14:00', '14:00-16:00', '16:00-18:00',
'18:00-20:00', '20:00-22:00', '22:00-24:00'
]
],
}
},
computed: {
currentTimeTxt() {
if(this.currentTime != null) {
return this.timeList[this.currentTime]
}
return ''
},
},
methods: {
getDateList() {
// 获取日期
......
......@@ -29,7 +29,11 @@
name: 'XhFiles',
components: {},
mixins: [objMixin,baseFile],
props: {},
props: {
files: {
type: Array,
}
},
filters:{},
data() {
return {
......@@ -41,7 +45,8 @@
{
text: '拍照'
}
]
],
takeStatus: false,
}
},
computed: {
......@@ -49,7 +54,22 @@
return this.item.settings || []
}
},
watch: {},
watch: {
'takeStatus': function(val, oldVal){
this.$emit('getTakeStatus', {status: val, index: this.itemIndex})
},
'files': { // 处理相机拍照返回的图片
handler (val) {
this.imgList = val.map(v => {
v.path = v.src
return v
})
this.setValue()
},
deep:true,
immediate: true,
}
},
mounted() {},
methods: {
selectUpload(){
......@@ -79,7 +99,7 @@
return
}
// 使用拍照工具拍摄
this.takeStatus = true
},
setValue() {
const dataValue = []
......
......@@ -29,7 +29,7 @@
let str = ''
const dataValue = this.dataValue
if(dataValue && dataValue.length>1){
str = '经度:'+dataValue[0]+','+'维度:'+dataValue[1]
str = '经度:'+dataValue[0].toFixed(4)+','+'纬度:'+dataValue[1].toFixed(4)
}
return str
},
......
......@@ -73,11 +73,19 @@
auditDatetime: '2021.04.19 12:45:09', // 审核时间
submissionTime: '2021.04.19 16:24:48', // 提交时间
auditResults: {}, // 审核结果
orderBusinessType: 'R', // 业务类型 R 为抢单
orderBusinessType: 'R', // 业务类型 R 为抢单
orderId: '0', // 订单id
}
}
},
orderType: Number, // 0:待接单 1:'去预约', 2:'去签到', 3:'去完工', 4:'审核中', 5:'去处理', 6'已完工'
},
// waitAccept:待接单、
// waitAppointment:待预约、
// waitCheckIn:待签到、
// waitFinish:待完工、
// review: 审核中、
// exception:异常单、
// finish:已完工
type: String,
location: { // 当前坐标
type: Array,
default () {
......@@ -207,6 +215,20 @@
},
showDistance() {
return this.orderType == 0
},
types() {
return {
'waitAccept': 0, // 待接单、
'waitAppointment': 1, // 待预约、
'waitCheckIn': 2, // 待签到、
'waitFinish': 3, // 待完工、
'review': 4, // 审核中、
'exception': 5, // 异常单、
'finish': 6, //已完工
}
},
orderType() {
return this.types[this.type]
}
},
methods: {
......
<template>
<view class="no-order-view">
<view class="no-order-view" :style="customStyle">
<image class="no-order-image" :src="wudingdanImage"></image>
<text>当前暂无订单</text>
</view>
</template>
<script>
export default {
export default {
props: {
customStyle: {
type: String,
default: 'background-color: #FFFFFF'
}
},
computed: {
wudingdanImage() {
return process.uniEnv.qn_base_url + 'wudingdan.png'
......@@ -24,7 +30,6 @@
color: #666666;
font-size: 28rpx;
padding: 30rpx;
background-color: #ffffff;
border-radius: 12rpx;
min-height: 460rpx;
......
......@@ -26,7 +26,6 @@
standardId: '',
images: [],
files: [],
fileMaps: [],
keys: [],
token: '',
product: '',
......@@ -74,7 +73,7 @@
})
}
}
photo.allImages.unshift(photo.tempPath.mixWater)
if(photo.currentItem){
photo.currentItem.imageList.unshift(photo.tempPath.mixWater)
}
......@@ -139,34 +138,16 @@
self.confirmUpload(true)
},
submitFile() {
let self = this
if(self.keys.length) {
for (let s of self.keys) {
self.$u.api.saveImage({
"token": self.token,
"standardId": self.standardId,
"url": s,
}).then(async res =>{
console.log(res, "云服务保存图片");
if(res.result.code) {
// TODO 参数是否要来回传递
const photo = getApp().globalData.photo
photo.currentItemLength = photo.currentItemLength + 1
uni.hideLoading()
// 当前项的图片显示
// 拍照项张数目增加 等于10张
if(photo.currentItemLength<10){
this.$emit('changeType', 1)
}else{
this.$emit('finish')
}
} else {
uni.showToast({
title:'图片上传失败 '+ res.result.msg
})
}
})
}
const photo = getApp().globalData.photo
photo.currentItemLength = photo.currentItemLength + 1
uni.hideLoading()
// 当前项的图片显示
// 拍照项张数目增加 等于10张
photo.allImages.unshift(this.fileMaps[0])
if(photo.currentItemLength<10){
this.$emit('changeType', 1)
}else{
this.$emit('finish')
}
},
downloadImages() {
......
......@@ -6,7 +6,10 @@
<view class="order-pop-title">
<text>{{title}}</text>
</view>
<view class="line-view" />
<view class="line-view" />
<view v-if="count" class="order-content">
你本月还有<text class="order-content-count">{{count}}</text>次拒单机会
</view>
<view class="order-pop-text">
<text>{{message}}</text>
</view>
......@@ -16,7 +19,7 @@
取消
</u-button>
<u-button :custom-style="customStyleSave" shape="circle" type="primary" @click="handleClickSure">
确定
{{buttonText}}
</u-button>
</view>
</view>
......@@ -29,7 +32,12 @@
props: {
visible: Boolean,
title: String,
message: String,
message: String,
count: Number, // 剩余次数
buttonText: { // 确定按钮
type: String,
default: '查看'
},
},
data() {
return {}
......@@ -76,21 +84,31 @@
<style lang="scss" scoped>
.order-pop-view {
padding: 30rpx;
min-height: 520rpx;
.order-pop-title {
font-size: 40rpx;
margin-top: 40rpx;
margin-bottom: 40rpx;
margin-top: 30rpx;
margin-bottom: 34rpx;
text-align: center;
color: #333333;
}
.order-content {
text-align: center;
color: #333333;
font-size: 32rpx;
margin-top: 26rpx;
.order-content-count {
color: #FA5A49;
}
}
.order-pop-text {
color: #999999;
text-align: center;
margin-top: 40rpx;
margin-top: 30rpx;
font-size: 28rpx;
margin-bottom: 260rpx;
// margin-bottom: 180rpx;
}
.line-view {
......
......@@ -3,7 +3,7 @@
<u-navbar style="position: absolute;" title="入驻" background="{background: transparent}" :border-bottom="false"
back-icon-color="#ffffff" title-color="#ffffff"></u-navbar>
<image :src="url" style="width: 100%;" mode="widthFix"></image>
<view class="introduction">
<view :class="['introduction', {'active': type}]">
<slot></slot>
</view>
<view class="settle-bottom">
......@@ -18,6 +18,11 @@
index: {
type: Number,
default: 1
},
// 0: introduction距离底部168rpx 1: introduction距离底部0rpx
type: {
type: Number,
default: 0
}
},
data() {
......@@ -45,7 +50,10 @@
top: 370rpx;
bottom: 168rpx;
left: 30rpx;
right: 30rpx;
right: 30rpx;
&.active {
bottom: 0rpx;
}
}
.settle-bottom {
......
......@@ -111,7 +111,8 @@
created(e) {
const photo = getApp().globalData.photo
getApp().trackPage('拍照页')
photo.allImages = []
photo.allImages = []
photo.currentItemLength = 0
// this.ctx = uni.createCameraContext();
this.updateTime()
this.getLocation()
......
......@@ -26,8 +26,8 @@
"path": "pages/order/complete",
"style": {
"navigationBarTitleText": "订单-完工配置",
"navigationBarBackgroundColor": "#2272FF",
"navigationBarTextStyle": "white"
"navigationStyle": "custom",
"disableScroll": true
}
},{
"path": "pages/order/feedback",
......@@ -365,8 +365,8 @@
"query": "" //启动参数,在页面的onLoad函数里面得到
},
{
"name": "订单 - 过程反馈", //模式名称
"path": "pages/order/feedback", //启动页面,必选
"name": "订单 - 拒单", //模式名称
"path": "pages/order/refuse", //启动页面,必选
"query": "" //启动参数,在页面的onLoad函数里面得到
}
]
......
......@@ -37,8 +37,8 @@
</view>
<view v-else-if="!needSettled && orderList.length > 0" class="order-item-view">
<view v-for="(item, index) in orderList" :key="index">
<OrderCell :orderData="item" :orderType="0" :location="location" @click="handleClick"
@action="handleAction"> </OrderCell>
<OrderCell :orderData="item" type="waitAccept" :location="location" @click="handleClick(item.orderId)"
@action="handleAction(item.orderId)"> </OrderCell>
</view>
<u-loadmore :status="currentLoadStatus" bgColor="#f2f2f2"></u-loadmore>
</view>
......@@ -87,7 +87,7 @@
search: {
token: "",
pageNumber: 0,
pageSize: 10,
pageSize: 100,
},
bottomLoading: false
};
......@@ -143,12 +143,18 @@
},
methods: {
handleClick() { // 点击了cell
console.log('点击了cell')
handleClick(orderId) { // 点击了cell
console.log('点击了cell')
this.viewOderItem(orderId)
},
handleAction() { // 点击了按钮
handleAction(orderId) { // 点击了按钮
console.log('点击了按钮')
this.viewOderItem(orderId)
},
viewOderItem(orderId) { // 跳转工单详情页面
uni.navigateTo({
url: 'pages/order/detail?id=' + orderId
})
},
async initSettleInfo() {
let self = this;
......@@ -164,7 +170,6 @@
await app.getBaseInfo(self, callBack);
this.orderList = []
this.messageList = []
// 加载消息列表
self.loadMessageList();
self.loadOrderList();
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -62,7 +62,7 @@
<appoint-time @dateChange="dateChange" @timeChange="timeChange" @weekChange="weekChange"></appoint-time>
</view>
<view class="u-m-60">
<button class="btn" @click="submitFrom" :loading="submiting" :disabled="disabledSubmit">确定</button>
<button class="btn" @click="submitForm" :loading="submiting" :disabled="disabledSubmit">确定</button>
</view>
</view>
</template>
......@@ -89,7 +89,8 @@
title:'问题类型',
},
appoint:{
title:'预约时间',
'报单': '下次联系时间',
'改约': '预约时间',
}
},
config: null,
......@@ -117,11 +118,14 @@
disabledSubmit() {
let self = this
debugger
if(self.trace.reasonType
&& (self.trace.reasonType == '报备' || self.trace.reasonType == '改约')){
if(self.trace.reasonType && self.trace.reasonType == '报备'){
if(self.trace.reasonRelegation && self.trace.reason
&& self.trace.nextTraceDatetime && self.trace.appointmentDatetimeRange) {
return false
}
} else if(self.trace.reasonType && self.trace.reasonType == '改约') {
if(self.trace.reasonRelegation && self.trace.reason
&& self.trace.appointmentDatetimeRange) {
&& self.trace.appointmentDatetime && self.trace.appointmentDatetimeRange) {
return false
}
}
......@@ -212,12 +216,23 @@
dateChange(data){
// 点击日期选择
console.log(data,'week-data')
let self = this
if(self.trace.reasonType == '报备') {
self.trace.appointmentDatetime = null
self.trace.nextTraceDatetime = data.item.day
} else if(self.trace.reasonType == '改约') {
self.trace.appointmentDatetime = data.item.day
self.trace.nextTraceDatetime = null
}
},
timeChange(data){
// 时间段选择变化
console.log(data,'week-data')
this.trace.appointmentDatetimeRange = data.item
},
async submitFrom() {
async submitForm() {
let self = this
self.orderId = 666
if(!self.orderId) {
......
This diff is collapsed.
<!-- 过程反馈 -->
<template>
<view class="refuse-box bg">
<u-navbar back-icon-color="#FFFFFF" :background="background" title="拒单" title-color="#fff" :border-bottom="false"></u-navbar>
<u-navbar back-icon-color="#FFFFFF" :background="background" title-color="#fff" :border-bottom="false"></u-navbar>
<view class="title">拒单说明</view>
<view class="content">
<view class="con-box">
<view class="tit u-m-b-40 u-flex"><text class="txt label"></text>{{refuse.title}}</view>
<view class="u-flex u-flex-wrap">
<view :class="{'txt-item':true,'active':true}" v-for="(txt,index) in refuse.list" :key="index">
<view
:class="{
'txt-item':true,
'active': (formData.rejectReason == txt)}"
v-for="(txt,index) in refuse.list"
:key="index" @click="changeReason(txt)">
<text class="txt">{{txt}}</text>
</view>
</view>
</view>
<view class="con-box">
<view class="tit u-m-b-40">补充说明</view>
<u-input class="textarea" height="156" type="textarea" placeholder="请补充详细说明,以便于记录您的接单信用分"></u-input>
<view class="con-box" style="padding-top: 10rpx;">
<view class="tit u-m-b-20">补充说明</view>
<u-input v-model="formData.remark" class="textarea" height="156" type="textarea" placeholder="请补充详细说明,以便于记录您的接单信用分"></u-input>
</view>
</view>
<view class="u-m-60">
<button class="btn">确定</button>
<view class="bottm-btn-view">
<button :loading="submiting" :disabled="disabledSubmit" class="btn" @click="handleClickSubmit">确定</button>
</view>
<PopView title="拒单提示" message="确定“拒单”操作,将影响对您的派单频率,\n甚至进入黑名单,请谨慎操作"
:visible.sync="visibale" :count="count" @click="handleClick" buttonText="确定"/>
</view>
</template>
<script>
import PopView from "@/components/popView/index.vue"
export default {
data() {
return {
visibale: false,
orderId: '',
submiting: false,
background: {
backgroundColor: 'none',
},
refuse:{
title:'问题归属',
title:'拒单原因',
list:['时间不匹配', '技术不匹配', '价格过低', '距离太远', '其他'],
},
formData: {
rejectReason: '',
remark: ''
},
count: 0, // 剩余次数
};
},
components:{},
computed: {
disabledSubmit() {
return !this.formData.rejectReason
}
},
components:{
PopView
},
onLoad(e) {
this.orderId = 111
if(e && e.orderId) {
this.orderId = e.orderId
}
},
methods: {
changeReason(reason) {
this.formData.rejectReason = reason
},
handleClickSubmit() {
if (this.count > 0) {
this.visibale = true
} else {
let message = '本月无拒单机会,请联系客服'
uni.showToast({
icon: 'none',
title: message,
})
}
},
handleClick() {
this.visibale = false
this.submitForm()
},
async submitForm() {
let self = this
self.submiting = true
let res = await self.$u.api.rejectOrder(self.formData, self.orderId)
self.submiting = false
if(res && res.code == 200) {
let data = res.data
if(data.code == 200) {
uni.showToast({
title: "拒单成功",
})
} else {
let message = '本月无拒单机会,请联系客服'
uni.showToast({
icon: 'none',
title: message,
})
}
}
},
}
}
</script>
<style lang="scss">
<style lang="scss" scoped>
.bg {
width: 750rpx;
height: 100vh;
overflow: auto;
background-color: #F4F5F7;
background-image: linear-gradient(to top, #F4F5F7 0%, #2272FF 100%);
background-image: linear-gradient(to top, #F4F5F7 0%, #2272FF 50%);
background-size: 750rpx 600rpx;
background-repeat: no-repeat;
}
......@@ -63,9 +130,10 @@
border-radius: 12rpx;
padding-bottom: 60rpx;
background-color: #fff;
min-height: 800rpx;
}
.con-box{
padding:30rpx 30rpx 30rpx 20rpx;
padding: 30rpx;
// border-radius: 12rpx;
background-color: #FFFFFF;
.tit{
......@@ -79,10 +147,11 @@
margin-right:-20rpx;
.txt-item{
border-radius: 12rpx;
padding:24rpx 38rpx;
min-width: 196rpx;
padding-top:24rpx;
padding-bottom: 24rpx;
width: 196rpx;
text-align: center;
margin-right: 20rpx;
margin-right: 22rpx;
margin-bottom: 20rpx;
background-color: #F4F5F7;
&.active{
......@@ -99,6 +168,11 @@
line-height: 26rpx;
color: #333;
}
.label{
font-size:24rpx;
line-height: 40rpx;
color:#FA5A49
}
.textarea{
/deep/ .u-input{
......@@ -121,8 +195,13 @@
&::after{
content:'';
height:0;
border: none;
}
}
button[disabled]:not([type]) {
background: #D1D4D4;
color: #FFFFFF;
}
.width-320{
width:320rpx;
}
......@@ -139,4 +218,10 @@
margin-right: 10rpx;
color:#FA5A49
}
.bottm-btn-view {
width: 100%;
padding: 0 80rpx;
position: absolute;
bottom: 40rpx;
}
</style>
<template>
<view class="container u-row-between" v-if="info">
<Settle :index="pageIndex">
<Settle :index="pageIndex" :type="1">
<view class="content-view">
<!-- <view style="min-height: 120rpx;" v-if="status == 8"></view> -->
<view class="u-flex u-row-center">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment