master
271556543@qq.com 4 years ago
parent bddf3f3711
commit 865132c2be

@ -1,4 +1,4 @@
const mode = 'development';
const mode = process.env.NODE_ENV;
let ROOTPATH = ''; //域名
switch (mode) {
case 'development':

@ -7,7 +7,8 @@
<view class="user-info" v-if="detail.customer">
<view class="top">
<view class="left">
<u-image src="/static/logo.png" width="104" height="104" shape="circle"></u-image>
<u-image :src="detail.customer.sex === '男' ? vuex_male_img : vuex_female_img" width="104"
height="104" shape="circle"></u-image>
</view>
<view class="center">
<view class="name">{{detail.customer.name}}</view>
@ -57,7 +58,7 @@
</view>
<!-- 今日护理 -->
<view class="today-nursing">
<view class="today-nursing" v-show="detail.status !== 0">
<view class="title">
今日护理
</view>
@ -65,12 +66,12 @@
<view class="line"></view>
<view class="content">
<view class="content-item" v-for="(item,index) in detail.sku" :key='item.id'>
<u-checkbox v-model="form[index].isSelect" shape="circle" :name="item.sku_info.name">
{{item.sku_info.name}}
<view class="content-item" v-for="(item,index) in skuList" :key='item.sku_id'>
<u-checkbox v-model="item.isSelect" shape="circle" :name="item.name">
{{item.name}}
</u-checkbox>
<view class="input">
<u-input v-model="form[index].time" :custom-style="inputStyle" placeholder="请输入"
<u-input v-model="item.time" :custom-style="inputStyle" placeholder="请输入"
placeholder-style="color:#A7AFBC;" input-align="center" :clearable="false" type="number"
height="40">
</u-input>
@ -82,22 +83,27 @@
<!-- 打卡 -->
<view class="clock">
<view class="btn">
<view class="btn" v-if="detail.status === 1 && detail.logs_count < 3"
@click="$u.throttle(clockIn,1000)">
<view class="text1">过程打卡</view>
<view class="text2">3</view>
<view class="text2">{{detail.logs_count + 1}}</view>
</view>
<view class="btn" @click="$u.throttle(sign)">
<view class="btn" v-if="detail.status === 0 && flag" @click="$u.throttle(sign,1000)">
<view class="text1">签到</view>
<view class="text2">{{$u.timeFormat(time,'hh:MM:ss')}}</view>
</view>
<view class="btn">
<view class="btn" v-if="detail.status === 1" @click="$u.throttle(signOut,1000)">
<view class="text1">签退</view>
<view class="text2">{{$u.timeFormat(time,'hh:MM:ss')}}</view>
</view>
<view class="btn">
<view class="btn" v-if="detail.status === 0 && !flag"
@click="$u.throttle(refreshLoaction,1000),flag = true">
<view class="text1">更新定位</view>
<view class="text2">{{$u.timeFormat(time,'hh:MM:ss')}}</view>
</view>
<view class="btn" v-if="detail.status === 2">
<view class="text1">护理已完成</view>
</view>
</view>
<!-- 打卡信息 -->
@ -117,7 +123,8 @@
export default {
data() {
return {
type: '',
id: '',
flag: false, //()
qqmapsdk: null,
inputStyle: {
fontSize: "24rpx",
@ -145,10 +152,11 @@
type: '',
upload_list: [],
},
subForm: {
id: '',
sku_time_list: []
},
skuList: [],
// subForm: {
// id: '',
// sku_time_list: []
// },
detail: {},
time: new Date(),
@ -166,13 +174,16 @@
id
})
this.detail = res
this.subForm.schedule_list_id = res.sku.map(item => {
this.skuList = res.sku.map(item => {
return {
isSelect: false,
sku_id: item.id,
time: ''
id: item.id,
name: item.sku_info?.name,
isSelect: item.time ? true : false,
sku_id: item.sku_id,
time: item.time || ''
}
})
this.form.schedule_list_id = this.id
},
//
@ -183,6 +194,8 @@
this.location.lat = res[1]?.latitude
this.location.lng = res[1]?.longitude
this.location.time = this.time
this.form.lat = this.location.lat
this.form.lng = this.location.lng
this.qqmapsdk.reverseGeocoder({
location: {
@ -191,6 +204,7 @@
},
success: (res) => {
this.location.address = res.result.address
this.form.address = this.location.address
resolve(res)
},
fail: (err) => {
@ -253,87 +267,128 @@
},
//
sign() {
//
clock(type) {
let title;
switch (type) {
case 1:
title = '签到成功'
break;
case 2:
title = `${this.detail.logs_count+1}次打卡成功`
break;
case 3:
title = '签退成功'
break;
default:
title = '操作成功'
}
this.uploadImgs().then(res => {
this.form.upload_list = res.map(item => {
return {
upload_id: JSON.parse(item.data).id
}
})
this.form.type = type
console.log(this.form);
this.$u.api.processSave(this.form).then(res => {
uni.showToast({
icon: 'success',
title
})
this.getDeatil(this.id)
}).catch(err => {
uni.showToast({
title: '操作失败,请重试'
})
})
})
},
// save(type) {
// this.$u.api.nurseSave({
// id: this.detail.id,
// sku_time_list: this.form.filter(item => {
// return item.isSelect
// }),
// logs: [{
// lat: this.location.lat,
// lng: this.location.lng,
// address: this.location.address,
// type
// }]
// }).then(res => {
// if (type === 1) {
// uni.showToast({
// icon: 'success',
// title: ''
// })
// }
// if (type === 2) {
// uni.showToast({
// icon: 'success',
// title: ''
// })
// }
// })
// },
// punch() {
// this.$u.throttle(() => {
// this.type = 1
// this.isClick = true
// this.save(1)
// setTimeout(() => {
// this.isClick = false
// }, 10000)
// }, 10000)
// },
//
// locate() {
// this.$u.throttle(() => {
// this.type = 2
// this.isClick = true
// setTimeout(() => {
// this.isClick = false
// }, 10000)
// uni.getLocation().then(res => {
// this.location.lat = res[1]?.latitude
// this.location.lng = res[1]?.longitude
// this.location.time = this.time
// new Promise((reject, resolve) => {
// this.qqmapsdk.reverseGeocoder({
// location: {
// latitude: this.location.lat,
// longitude: this.location.lng
// },
// success: (r) => {
// reject(r)
// }
// })
// }).then(res => {
// this.location.address = res.result.address
// this.save(2)
// })
// })
// }, 10000)
// },
//
saveSku() {
return new Promise((resolve, reject) => {
let list = this.skuList.filter(item => {
return item.isSelect
})
this.$u.api.nurseSave({
id: this.id,
sku_time_list: list
}).then(res => {
resolve(res)
}).catch(err => {
reject(err)
})
})
},
//
sign() {
this.clock(1)
},
//
clockIn() {
//
let flag = false
for (let i of this.skuList) {
if (i.isSelect && i.time) {
flag = true
}
}
if (!flag) {
uni.showToast({
icon: 'none',
title: `请选择并填写服务项目与时间`
})
return
}
this.saveSku().then(res => {
this.clock(2)
}).catch(err => {
console.log(err);
uni.showToast({
icon: 'none',
title: '请重试'
})
})
},
//退
signOut() {
if (this.detail.logs_count < 3) {
uni.showToast({
icon: 'none',
title: `请先完成3次打卡再签退。当前完成打卡次数${this.detail.logs_count}`
})
return
}
//
let flag = false
for (let i of this.skuList) {
if (i.isSelect && i.time) {
flag = true
}
}
if (!flag) {
uni.showToast({
icon: 'none',
title: `请选择并填写服务项目与时间`
})
return
}
this.saveSku().then(() => {
this.clock(3)
}).catch(err => {
console.log(err);
uni.showToast({
icon: 'none',
title: '请重试'
})
})
}
},
computed: {
ageComputed() {
@ -353,6 +408,7 @@
this.load()
this.getDeatil(option.id)
this.id = option.id
this.getLoaction()

@ -55,12 +55,12 @@
<view class="title">
<view class="title-text">数据展示</view>
<view class="more">
<!-- <view class="more">
<view class="more-text">更多</view>
<view class="icon">
<u-icon name="arrow-right" color="#A7AFBC" size="24"></u-icon>
</view>
</view>
</view> -->
</view>
<view class="data-content">
@ -120,12 +120,12 @@
<view class="info-remind">
<view class="title">
<view class="title-text">信息提醒</view>
<view class="more">
<!-- <view class="more">
<view class="more-text">更多</view>
<view class="icon">
<u-icon name="arrow-right" color="#A7AFBC" size="24"></u-icon>
</view>
</view>
</view> -->
</view>
<scroll-view :scroll-y="true" style="height: 320rpx;">

@ -6,7 +6,8 @@
<!-- 搜索 -->
<view class="search">
<view class="input-content">
<u-input placeholder="请输入要搜索的内容" height="30" :custom-style="inputStyle"></u-input>
<u-input :value="select.keyword" placeholder="请输入要搜索的内容" height="30" :custom-style="inputStyle"
@input="searchInput"></u-input>
</view>
<view class="icon">
<u-icon name="search" size="46" color="#ABAEBE"></u-icon>
@ -15,7 +16,7 @@
<!-- 下拉菜单 -->
<view class="drop-down">
<u-dropdown @open="calendarShow" @close="calendarHide" ref="dropdown">
<u-dropdown @open="calendarShow" @close="calendarHide" ref="uDropdown">
<u-dropdown-item v-model="select.status" :title="statusComputed(select.status)"
:options="optionsStatus" @change='nursingList = [],select.page = 1,getList()'>
</u-dropdown-item>
@ -35,9 +36,9 @@
<view class="time">{{item.start_time}}</view>
<view class="status">
<view class="status-icon"
:class="{icon1:item.status === 0,icon2:item.status === 1,icon3:item.status === 2}">
:class="{icon1:item.status === 0,icon2:item.status === 2,icon3:item.status === 1}">
</view>
<view v-if="item.status === 2" class="status-text"></view>
<view v-if="item.status === 1" class="status-text"></view>
<view v-else-if="item.status === 0" class="status-text">待护理</view>
<view v-else class="status-text">已完成</view>
</view>
@ -164,6 +165,7 @@
lng: '',
start_time: '',
end_time: '',
keyword: '',
},
}
},
@ -181,11 +183,17 @@
this.select.page = 1
this.select.start_time = e.startDate
this.select.end_time = `${e.endDate} 23:59:59`
this.$refs['dropdown'].close()
this.nursingList = []
this.getList()
},
searchInput(e) {
this.select.keyword = e
this.nursingList = []
this.select.page = 1
this.$u.debounce(this.getList, 1000)
},
async getList() {
this.$u.throttle(async () => {
let res = await this.$u.api.nurseList(this.select)
@ -230,7 +238,14 @@
}
}
},
onShow() {
watch: {
isShowCalendar(val) {
if (!val) {
this.$refs.uDropdown.close()
}
},
},
mounted() {
uni.getLocation().then(res => {
this.select.lat = res[1]?.latitude
this.select.lng = res[1]?.longitude
@ -261,7 +276,7 @@
justify-content: space-between !important;
}
/deep/.u-flex {
/deep/.u-dropdown__menu__item .u-flex {
flex: 1;
}

@ -35,7 +35,7 @@
<view>
<u-icon name="map" size="28" color="#1479FF"></u-icon>
</view>
<view class="text">{{selectMarker.info.customer.address}}</view>
<view class="text">{{selectMarker.info.customer_address.address}}</view>
</view>
</view>
@ -155,8 +155,8 @@
this.covers = res.data.map((item, index) => {
return {
id: index,
latitude: Number(item.customer.lat),
longitude: Number(item.customer.lng),
latitude: Number(item.customer_address.lat),
longitude: Number(item.customer_address.lng),
width: 14,
height: 18,
iconPath: this.iconMap.get(item.status),
@ -188,7 +188,7 @@
uni.openLocation({
latitude: this.selectMarker.latitude,
longitude: this.selectMarker.longitude,
name: this.selectMarker.info.customer.address
name: this.selectMarker.info.customer_address.address
})
})
}

@ -11,70 +11,79 @@
</view>
<view class="nursing-list">
<view v-if="nursingList && nursingList.length > 0">
<view v-for="(item,index) in nursingList" :key="item.id" class="list-item" @click="toDetail(item)">
<view class="top">
<view class="time">{{item.start_time}}</view>
<view class="status">
<view class="status-icon"
:class="{icon1:item.status === 0,icon2:item.status === 2,icon3:item.status === 1}">
<scroll-view scroll-y="true" style="height: 1130rpx;" :refresher-enabled="true"
:refresher-triggered="refreshStatus" @refresherrefresh="getToday"
@refresherrestore="refreshStatus = 'restore'">
<view v-if="nursingList && nursingList.length > 0">
<view v-for="(item,index) in nursingList" :key="item.id" class="list-item"
@click="toDetail(item)">
<view class="top">
<view class="time">{{item.start_time}}</view>
<view class="status">
<view class="status-icon"
:class="{icon1:item.status === 0,icon2:item.status === 2,icon3:item.status === 1}">
</view>
<view v-if="item.status === 1" class="status-text"></view>
<view v-else-if="item.status === 0" class="status-text">待护理</view>
<view v-else class="status-text">已完成</view>
</view>
<view v-if="item.status === 1" class="status-text"></view>
<view v-else-if="item.status === 0" class="status-text">待护理</view>
<view v-else class="status-text">已完成</view>
</view>
</view>
<view class="line"></view>
<view class="line"></view>
<view class="center">
<view class="avatar">
<u-image :src="item.customer.sex === '男' ? vuex_male_img : vuex_female_img" height="104"
width="104" shape="circle"></u-image>
</view>
<view class="user-info">
<view class="name">{{item.customer.name}}</view>
<view class="tel">
<view>
<u-icon name="phone" size="28" color="#1479FF"></u-icon>
</view>
<view class="text">{{item.customer.phone|| '无'}}</view>
<view class="center">
<view class="avatar">
<u-image :src="item.customer.sex === '男' ? vuex_male_img : vuex_female_img"
height="104" width="104" shape="circle"></u-image>
</view>
<view class="address">
<view>
<u-icon name="map" size="28" color="#1479FF"></u-icon>
<view class="user-info">
<view class="name">{{item.customer.name}}</view>
<view class="tel">
<view>
<u-icon name="phone" size="28" color="#1479FF"></u-icon>
</view>
<view class="text">{{item.customer.phone|| '无'}}</view>
</view>
<view class="address">
<view>
<u-icon name="map" size="28" color="#1479FF"></u-icon>
</view>
<view class="text">{{item.customer_address.address || '无'}}</view>
</view>
<view class="text">{{item.customer_address.address || '无'}}</view>
</view>
</view>
<view class="sex">
<view class="sex-text">
{{item.customer.sex}}
<view class="sex">
<view class="sex-text">
{{item.customer.sex}}
</view>
</view>
</view>
</view>
<view class="bottom">
<view class="distance">
<view class="distance-icon">
<u-image src="/static/todayNursing/distance.png" height="42" width="42"></u-image>
<view class="bottom">
<view class="distance">
<view class="distance-icon">
<u-image src="/static/todayNursing/distance.png" height="42" width="42">
</u-image>
</view>
<view class="distance-text">{{item.distance}}公里</view>
</view>
<view class="distance-text">{{item.distance}}公里</view>
</view>
<view class="to-there" @click.stop="toThere(item)">
<view class="to-there-text">去那里</view>
<view class="to-there-icon">
<u-image src="/static/todayNursing/to-there.png" height="46" width="46"></u-image>
<view class="to-there" @click.stop="toThere(item)">
<view class="to-there-text">去那里</view>
<view class="to-there-icon">
<u-image src="/static/todayNursing/to-there.png" height="46" width="46">
</u-image>
</view>
</view>
</view>
</view>
</view>
</view>
<view v-else class="nursing-list-nodata">
<u-empty mode="list" text="暂无护理">
</u-empty>
</view>
<view v-else class="nursing-list-nodata">
<u-empty mode="list" text="暂无护理">
</u-empty>
</view>
</scroll-view>
</view>
</view>
</view>
@ -84,6 +93,7 @@
export default {
data() {
return {
refreshStatus: false,
select: {
page: 1,
page_size: 999,
@ -114,11 +124,14 @@
},
async getToday() {
this.refreshStatus = true
let res = await this.$u.api.nurseList(this.select)
console.log(res);
this.nursingList = res.data
this.refreshStatus = false
},
toThere(item) {
this.$u.throttle(() => {
uni.openLocation({

Loading…
Cancel
Save