Commit 37caa8cc authored by 李超鹏's avatar 李超鹏

update:add、update

scope:self-support
body:完工页面交互调试
parent 02d04def
...@@ -73,6 +73,21 @@ let orderApiFun = function(vm){ ...@@ -73,6 +73,21 @@ let orderApiFun = function(vm){
*/ */
let getWatermark= async (params = {}) => await vm.$u.get('wxh-worker-rest/rest/'+ vm.vuex_token+'/photo/watermark', params); let getWatermark= async (params = {}) => await vm.$u.get('wxh-worker-rest/rest/'+ vm.vuex_token+'/photo/watermark', params);
/**
* 获取订单的完工项目(配置+数据)
*/
let getCompleteConfigAndData= async (orderId) => await vm.$u.get('wxh-worker-rest/rest/'+ vm.vuex_token+'/order/'+ orderId +'/maintain/info');
/**
* 查询措施
*/
let getMeasure= async (params = {}) => await vm.$u.get('wxh-worker-rest/rest/service/'+ vm.vuex_token+'/measure/queryMeasureItems', params);
/**
* 保存售后记录
*/
let saveCompleteData = async (params = {},orderId) => await vm.$u.post('wxh-worker-rest/rest/'+ vm.vuex_token+'/order/'+ orderId +'/maintain/saveMaintainInfoV2', params);
const orderApi = { const orderApi = {
listByRecommendOrder, listByRecommendOrder,
listOrderCount, listOrderCount,
...@@ -84,13 +99,15 @@ let orderApiFun = function(vm){ ...@@ -84,13 +99,15 @@ let orderApiFun = function(vm){
listOrderRecord, listOrderRecord,
orderAccept, orderAccept,
orderGan, orderGan,
maintainWorkerCheckin,
feedbackConfig, feedbackConfig,
traceAndAppointment, traceAndAppointment,
rejectOrder, rejectOrder,
orderStandard, orderStandard,
saveImage, saveImage,
getWatermark getWatermark,
getCompleteConfigAndData,
getMeasure,
saveCompleteData
} }
return orderApi return orderApi
} }
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<template> <template>
<view class="list"> <view class="list">
<view v-for="(item,index) in settings" :key="index" <view v-for="(item,index) in settings" :key="index"
:class="{'txt':true,'active':checkStatus(item)}" @click="setValue(item)">{{item}} :class="{'txt':true,'active':checkStatus(item.key)}" @click="setValue(item.key)">{{item.label}}
</view> </view>
</view> </view>
</template> </template>
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
}, },
computed: { computed: {
settings() { settings() {
return this.item.settings || [] return this.item.fieldsOptions || []
} }
}, },
watch: {}, watch: {},
...@@ -51,22 +51,22 @@ ...@@ -51,22 +51,22 @@
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.list { .list {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
.txt{ .txt{
color:#666; color:#666;
padding:10rpx 30rpx; padding:10rpx 30rpx;
margin: 5rpx; margin: 5rpx;
background: #F4F5F7; background: #F4F5F7;
border-radius: 10rpx; border-radius: 10rpx;
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
line-height: 50rpx; line-height: 50rpx;
max-width: 48%; max-width: 48%;
&.active{ &.active{
background-color: #2272FF; background-color: #2272FF;
color:#fff; color:#fff;
} }
} }
} }
</style> </style>
...@@ -5,48 +5,48 @@ ...@@ -5,48 +5,48 @@
<view class="txt u-flex-1">{{item.fieldsTitle}}</view> <view class="txt u-flex-1">{{item.fieldsTitle}}</view>
<u-icon name="arrow-right" color="#666" size="28"></u-icon> <u-icon name="arrow-right" color="#666" size="28"></u-icon>
</view> --> </view> -->
<view class="pics u-flex u-flex-wrap"> <view class="pics u-flex u-flex-wrap">
<view class="img-list" v-for="(item,index) in imgList" :key="index"> <view class="img-list" v-for="(item,index) in imgList" :key="index">
<u-image class="pic" width="170" height="170" :src="item.path" @click.stop="prviewImage(item.path,index)"></u-image> <u-image class="pic" width="170" height="170" :src="item.path" @click.stop="prviewImage(item.path,index)"></u-image>
<view class="icon-del-box" @click.stop="delFile(index)"> <view class="icon-del-box" @click.stop="delFile(index)">
<view class="icon-del"></view> <view class="icon-del"></view>
<view class="icon-del rotate"></view> <view class="icon-del rotate"></view>
</view> </view>
</view> </view>
<view class="img-list" @click="choose"> <view class="img-list">
<u-image class="pic" width="170rpx" height="170" @click="selectUpload" src="https://gitee.com/xuqu/uView/blob/master/static/uview/example/min_button.png"></u-image> <u-image class="pic" width="170rpx" height="170" @click="selectUpload" src="https://gitee.com/xuqu/uView/blob/master/static/uview/example/min_button.png"></u-image>
</view> </view>
<!-- <u-image class="pic" v-for="item in 6" width="170rpx" height="170" src="'https://cdn.uviewui.com/uview/example/fade.jpg"></u-image> --> <!-- <u-image class="pic" v-for="item in 6" width="170rpx" height="170" src="'https://cdn.uviewui.com/uview/example/fade.jpg"></u-image> -->
</view> </view>
<u-action-sheet :list="list" v-model="maskShow" :cancel-btn="true" @click="uploadSelect"></u-action-sheet> <u-action-sheet :list="list" v-model="maskShow" :cancel-btn="true" @click="uploadSelect"></u-action-sheet>
</view> </view>
</template> </template>
<script> <script>
import objMixin from './objMixin' import arrMixin from './arrMixin'
import baseFile from '@/components/upload/index'; import baseFile from '@/components/upload/index';
export default { export default {
name: 'XhFiles', name: 'XhFiles',
components: {}, components: {},
mixins: [objMixin,baseFile], mixins: [arrMixin,baseFile],
props: { props: {
files: { files: {
type: Array, type: Array,
} }
}, },
filters:{}, filters:{},
data() { data() {
return { return {
maskShow:false, maskShow:false,
list: [ list: [
{ {
text: '相册' text: '相册'
}, },
{ {
text: '拍照' text: '拍照'
} }
], ],
takeStatus: false, takeStatus: false,
} }
}, },
computed: { computed: {
...@@ -54,34 +54,54 @@ ...@@ -54,34 +54,54 @@
return this.item.settings || [] return this.item.settings || []
} }
}, },
watch: { watch: {
'takeStatus': function(val, oldVal){ 'takeStatus': function(val, oldVal){
this.$emit('getTakeStatus', {status: val, index: this.itemIndex}) this.$emit('getTakeStatus', {status: val, index: this.itemIndex})
}, },
'files': { // 处理相机拍照返回的图片 'files': { // 处理相机拍照返回的图片
handler (val) { handler (val) {
this.imgList = val.map(v => { if(val && val.length > 0){
v.path = v.src val.forEach((item,index,array)=>{
return v item.path = item.src
}) this.imgList.push(item)
this.setValue() })
}, // this.imgList = val.map(v => {
deep:true, // v.path = v.src
immediate: true, // return v
} // })
this.setValue()
}
},
deep:true,
immediate: true,
},
// 'value'(val, oldVal){
// if(val){
// this.imgList = val.map(img =>{
// return {path:img}
// })
// }
// }
},
mounted() {
if(this.value){
this.imgList = this.value.map(img =>{
return {path: img}
})
}
this.setValue()
}, },
mounted() {},
methods: { methods: {
selectUpload(){ selectUpload(){
// 弹窗展示 // 弹窗展示
this.maskShow = true this.maskShow = true
}, },
uploadSelect(index) { uploadSelect(index) {
if (index === 0) { if (index === 0) {
this.uploadFile('photo') this.uploadFile('photo')
} else { } else {
this.uploadFile() this.uploadFile()
} }
}, },
async uploadFile(type){ async uploadFile(type){
const self = this const self = this
...@@ -89,8 +109,8 @@ ...@@ -89,8 +109,8 @@
// 直接打开相册 // 直接打开相册
let config = { let config = {
options:{ options:{
sourceType:['album'],//['album', 'camera'] sourceType:['album'],//['album', 'camera']
count: 5, count: 10,
sizeType: ['compressed'] sizeType: ['compressed']
} }
} }
...@@ -104,67 +124,67 @@ ...@@ -104,67 +124,67 @@
setValue() { setValue() {
const dataValue = [] const dataValue = []
this.imgList.map(item=>{ this.imgList.map(item=>{
dataValue.push(item.key) dataValue.push(item.src)
}) })
console.log(this.imgList)
this.valueChange(dataValue) this.valueChange(dataValue)
}, },
prviewImage(url, index) { prviewImage(url, index) {
uni.previewImage({ uni.previewImage({
urls: [url], urls: [url],
current: index current: index
}); });
}, },
delFile(index) { delFile(index) {
this.imgList.splice(index, 1) this.imgList.splice(index, 1)
this.setValue()
} }
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.pic{ .pic{
margin-right: 15rpx; // margin-right: 15rpx;
margin-bottom: 15rpx; // margin-bottom: 15rpx;
&:nth-child(3n){ &:nth-child(3n){
margin-right: 0; margin-right: 0;
} }
} }
.img-list { .img-list {
position: relative; position: relative;
margin: 8rpx; margin: 8rpx;
border: 1px solid #eee; border: 1px solid #eee;
width: 170rpx; width: 170rpx;
height: 170rpx; height: 170rpx;
.icon-del-box { .icon-del-box {
/* #ifndef APP-NVUE */ /* #ifndef APP-NVUE */
display: flex; display: flex;
/* #endif */ /* #endif */
align-items: center; align-items: center;
justify-content: center; justify-content: center;
position: absolute; position: absolute;
top: 10rpx; top: 10rpx;
right: 10rpx; right: 10rpx;
height: 40rpx; height: 40rpx;
width: 40rpx; width: 40rpx;
border-radius: 50%; border-radius: 50%;
background-color: rgba(0, 0, 0, 0.5); background-color: rgba(0, 0, 0, 0.5);
z-index: 2; z-index: 2;
transform: rotate(-45deg); transform: rotate(-45deg);
} }
.icon-del { .icon-del {
width: 30rpx; width: 30rpx;
height: 4rpx; height: 4rpx;
background-color: #fff; background-color: #fff;
border-radius: 2px; border-radius: 2px;
} }
.rotate { .rotate {
position: absolute; position: absolute;
transform: rotate(90deg); transform: rotate(90deg);
} }
} }
// .list { // .list {
// display: flex; // display: flex;
......
...@@ -16,8 +16,7 @@ ...@@ -16,8 +16,7 @@
return {} return {}
}, },
computed: { computed: {
type() { type() {
console.log(this.item)
if (this.item && this.item.fieldsType == 'password' || this.item.fieldsType == 'textarea') { if (this.item && this.item.fieldsType == 'password' || this.item.fieldsType == 'textarea') {
return this.item.fieldsType return this.item.fieldsType
} else { } else {
...@@ -32,7 +31,7 @@ ...@@ -32,7 +31,7 @@
</script> </script>
<style scoped> <style scoped>
.input-item{ .input-item{
background: #F4F5F7; background: #F4F5F7;
} }
</style> </style>
<!-- ******************* 定位 ******************* --> <!-- ******************* 定位 ******************* -->
<template> <template>
<view> <view>
<view class="list u-flex u-row-between"> <view class="list u-flex u-row-between">
<image class="item-image" :src="mixingImage" v-if="item.required"></image> <image class="item-image" :src="mixingImage" v-if="item.required"></image>
<view class="u-m-r-20">{{item.fieldsTitle}}</view> <view class="u-m-r-20">{{item.fieldsTitle}}</view>
<!-- <u-button type="primary" size="mini" @click="$u.debounce(getLocation,1000)">自动定位</u-button> --> <view class="u-flex-1 location-name">
<view class="u-flex-1 location-name"> <u-icon name="map" color="#2979ff" size="30"></u-icon>自动定位
<u-icon name="map" color="#2979ff" size="30"></u-icon>自动定位 </view>
</view> </view>
</view> <view class="u-flex-1 location">{{valueTxt || '正在获取中...'}}</view>
<view class="u-flex-1 location">{{valueTxt || '正在获取中...'}}</view>
</view> </view>
</template> </template>
<script> <script>
import objMixin from './objMixin' import arrMixin from './arrMixin'
export default { export default {
name: 'XhLocation', name: 'XhLocation',
components: {}, components: {},
mixins: [objMixin], mixins: [arrMixin],
props: {}, props: {},
filters:{}, filters:{},
data() { data() {
...@@ -28,18 +27,18 @@ ...@@ -28,18 +27,18 @@
valueTxt() { valueTxt() {
let str = '' let str = ''
const dataValue = this.dataValue const dataValue = this.dataValue
if(dataValue && dataValue.length>1){ if(dataValue && dataValue.length>1){
str = '经度:'+dataValue[0].toFixed(4)+','+'纬度:'+dataValue[1].toFixed(4) str = '经度:'+dataValue[0].toFixed(4)+','+'纬度:'+dataValue[1].toFixed(4)
} }
return str return str
}, },
mixingImage() { mixingImage() {
return process.uniEnv.qn_base_url + 'mixing.png' return process.uniEnv.qn_base_url + 'mixing.png'
} }
}, },
watch: {}, watch: {},
created() { created() {
this.getLocation() this.getLocation()
}, },
methods: { methods: {
getLocation() { getLocation() {
...@@ -69,18 +68,18 @@ ...@@ -69,18 +68,18 @@
font-size: 28rpx; font-size: 28rpx;
line-height: 40rpx; line-height: 40rpx;
color: #fa3534; color: #fa3534;
} }
.item-image { .item-image {
width: 24rpx; width: 24rpx;
height: 24rpx; height: 24rpx;
margin-right: 10rpx; margin-right: 10rpx;
} }
.location-name { .location-name {
color: #2272FF; color: #2272FF;
text-align: right; text-align: right;
} }
.location { .location {
background: #F4F5F7; background: #F4F5F7;
padding: 10rpx; padding: 10rpx;
} }
</style> </style>
<!-- ******************* 单级/多级 选择 ******************* --> <!-- ******************* 服务措施 ******************* -->
<template> <template>
<view class="picker-box"> <view class="picker-box">
<view class="u-flex u-row-between" @click="openPicker"> <view class="u-flex u-row-between" @click="openPicker">
......
<!-- ******************* 单选框 ******************* --> <!-- ******************* 单选框 ******************* -->
<template> <template>
<view class="list"> <view class="list">
<view v-for="(item,index) in settings" :key="index" :class="{'txt':true,'active':item===dataValue}" <view v-for="(item,index) in settings" :key="index" :class="{'txt':true,'active':item.key===dataValue}"
@click="setValue(item)">{{item}}</view> @click="setValue(item.key)">{{item.label}}</view>
</view> </view>
</template> </template>
...@@ -17,8 +17,8 @@ ...@@ -17,8 +17,8 @@
return {} return {}
}, },
computed: { computed: {
settings(){ settings(){
return this.item.settings || [] return this.item.fieldsOptions || []
} }
}, },
watch: {}, watch: {},
...@@ -33,23 +33,23 @@ ...@@ -33,23 +33,23 @@
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.list{ .list{
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
.txt{ .txt{
color:#666; color:#666;
padding:10rpx 30rpx; padding:10rpx 30rpx;
margin: 5rpx; margin: 5rpx;
background: #F4F5F7; background: #F4F5F7;
border-radius: 10rpx; border-radius: 10rpx;
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
line-height: 50rpx; line-height: 50rpx;
text-align: center; text-align: center;
max-width: 48%; max-width: 48%;
&.active{ &.active{
background-color: #2272FF; background-color: #2272FF;
color:#fff; color:#fff;
} }
} }
} }
</style> </style>
<!-- ******************* 单个下拉选择 ******************* --> <!-- ******************* 单个下拉选择 ******************* -->
<template> <template>
<view> <view>
<u-input v-model="dataValue" readOnly @click="show=true" type="select" /> <u-input :value="text" readOnly @click="show=true" type="select" />
<u-action-sheet :list="settings" v-model="show" @click="actionSheetCallback"></u-action-sheet> <u-action-sheet :list="settings" v-model="show" @click="actionSheetCallback"></u-action-sheet>
</view> </view>
</template> </template>
...@@ -28,22 +28,27 @@ ...@@ -28,22 +28,27 @@
}, },
settings() { settings() {
let result = [] let result = []
let settings = this.item.settings || [] let settings = this.item.fieldsOptions || []
result = settings.map(item => { result = settings.map(item => {
return { return {
text: item text: item.label,
id: item.key
} }
}) })
return result return result
},
text(){
let option = this.item.fieldsOptions.find(a=>{return a.key === this.dataValue})
return option?option.label:''
} }
}, },
watch: {}, watch: {},
mounted() {}, mounted() {},
methods: { methods: {
actionSheetCallback(index) { actionSheetCallback(index) {
let txt = this.settings[index].text; let id = this.settings[index].id;
this.dataValue = txt this.dataValue = id
this.valueChange(txt) this.valueChange(id)
} }
} }
} }
......
...@@ -2,8 +2,8 @@ ...@@ -2,8 +2,8 @@
<template> <template>
<view class="picker-box"> <view class="picker-box">
<view class="u-flex u-row-between" @click="openPicker"> <view class="u-flex u-row-between" @click="openPicker">
<view class="txt">{{item.fieldsTitle}}</view> <!-- <view class="txt">{{item.fieldsTitle}}</view> -->
<view class="txt u-flex-1">{{dataValue}}</view> <view class="txt u-flex-1">{{dataValue||'请选择时间'}}</view>
<u-icon name="arrow-right" color="#666" size="28"></u-icon> <u-icon name="arrow-right" color="#666" size="28"></u-icon>
</view> </view>
<u-picker :params="params" v-model="showPicker" mode="time" @confirm="pickerConfirm"></u-picker> <u-picker :params="params" v-model="showPicker" mode="time" @confirm="pickerConfirm"></u-picker>
...@@ -25,10 +25,9 @@ ...@@ -25,10 +25,9 @@
year: true, year: true,
month: true, month: true,
day: true, day: true,
hour: true, hour: false,
minute: true, minute: false,
second: true, second: false,
// 选择时间的时间戳
timestamp: true, timestamp: true,
} }
} }
...@@ -49,11 +48,8 @@ ...@@ -49,11 +48,8 @@
this.showPicker = true this.showPicker = true
}, },
pickerConfirm(data) { pickerConfirm(data) {
console.log(data, 'DATA')
let result = [] let result = []
let dataValue = data.year + '-' + data.month + '-' + data.day + ' ' + data.hour + ':' + data.minute + let dataValue = data.year + '-' + data.month + '-' + data.day
':' + data.second
console.log(dataValue, 'dataValue')
this.dataValue = dataValue this.dataValue = dataValue
this.valueChange(dataValue) this.valueChange(dataValue)
}, },
......
This diff is collapsed.
...@@ -377,7 +377,9 @@ ...@@ -377,7 +377,9 @@
filish(){ filish(){
// 去完工 // 去完工
uni.navigateTo({ uni.navigateTo({
url: 'pages/order/complete?orderId='+this.order.orderId url: 'pages/order/complete?orderId='+this.order.orderId
+ "&categoryId=" + this.order.categoryId
+ "&orderServiceType=" + this.order.orderServiceType
}) })
}, },
/** /**
......
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