新增打卡页面
This commit is contained in:
@@ -259,4 +259,22 @@ export function fileController(params) {
|
|||||||
method: 'POST',
|
method: 'POST',
|
||||||
data: params
|
data: params
|
||||||
})
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 新增打卡
|
||||||
|
export function insertPositionData(params) {
|
||||||
|
return myAxios({
|
||||||
|
url: `${sx}/energy-effcicency-net-service/clock/insertPositionData`,
|
||||||
|
method: 'POST',
|
||||||
|
data: params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 查询打卡
|
||||||
|
export function getPositionData(params) {
|
||||||
|
return myAxios({
|
||||||
|
url: `${sx}/energy-effcicency-net-service/clock/getPositionData`,
|
||||||
|
method: 'POST',
|
||||||
|
data: params
|
||||||
|
})
|
||||||
}
|
}
|
||||||
@@ -29,6 +29,30 @@ export default {
|
|||||||
}
|
}
|
||||||
if (binding.modifiers.floatNo0) { // 数字+小数点>0
|
if (binding.modifiers.floatNo0) { // 数字+小数点>0
|
||||||
onlyFloat0(input)
|
onlyFloat0(input)
|
||||||
|
}
|
||||||
|
// v-input.maxYearDay
|
||||||
|
if (binding.modifiers.maxYearDay) { // 正数加最大366天
|
||||||
|
if(String(Number(input.value))!='NaN'){
|
||||||
|
if(Number(input.value)>366){
|
||||||
|
input.value=366
|
||||||
|
}else if(Number(input.value)<0){
|
||||||
|
input.value=0
|
||||||
|
}else{
|
||||||
|
input.value=parseInt(input.value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// v-input.maxDayHour
|
||||||
|
if (binding.modifiers.maxDayHour) { // 正数加最大24
|
||||||
|
if(String(Number(input.value))!='NaN'){
|
||||||
|
if(Number(input.value)>24){
|
||||||
|
input.value=24
|
||||||
|
}else if(Number(input.value)<0){
|
||||||
|
input.value=0
|
||||||
|
}else{
|
||||||
|
input.value=parseInt(input.value);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
input.dispatchEvent(new Event('input'))
|
input.dispatchEvent(new Event('input'))
|
||||||
}
|
}
|
||||||
|
|||||||
+10
-1
@@ -546,6 +546,15 @@ export default [
|
|||||||
keepAlive: false
|
keepAlive: false
|
||||||
},
|
},
|
||||||
component: () => import('@/views/industrialReport/components/utilize.vue')
|
component: () => import('@/views/industrialReport/components/utilize.vue')
|
||||||
}
|
},
|
||||||
|
{
|
||||||
|
path: '/clockIn',
|
||||||
|
name: 'clockIn',
|
||||||
|
meta: {
|
||||||
|
title: '打卡',
|
||||||
|
keepAlive: false
|
||||||
|
},
|
||||||
|
component: () => import('@/views/energyEfficiency/clockIn/index.vue')
|
||||||
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
@@ -524,7 +524,7 @@ export default {
|
|||||||
const data = {
|
const data = {
|
||||||
taskId: JSON.parse(sessionStorage.getItem('tidCid')).taskId,
|
taskId: JSON.parse(sessionStorage.getItem('tidCid')).taskId,
|
||||||
customerId: res.data.customerId,
|
customerId: res.data.customerId,
|
||||||
item: res.data,
|
item: {...res.data, ...JSON.parse(sessionStorage.getItem('tidCid')).item},
|
||||||
buildId: this.buildId,
|
buildId: this.buildId,
|
||||||
equipId: JSON.parse(sessionStorage.getItem('tidCid')).equipId,
|
equipId: JSON.parse(sessionStorage.getItem('tidCid')).equipId,
|
||||||
}
|
}
|
||||||
@@ -625,6 +625,15 @@ export default {
|
|||||||
},
|
},
|
||||||
//提交页面信息
|
//提交页面信息
|
||||||
saveAllInfo() {
|
saveAllInfo() {
|
||||||
|
let item = JSON.parse(sessionStorage.getItem('tidCid')).item
|
||||||
|
if(!item.isPosition){
|
||||||
|
this.$notify({
|
||||||
|
message: '请在完成打卡之后提交',
|
||||||
|
duration: 1000,
|
||||||
|
type: 'warning'
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
taskList({ consName: this.item.customerName }).then((res) => {
|
taskList({ consName: this.item.customerName }).then((res) => {
|
||||||
this.records = res.data.list[0]
|
this.records = res.data.list[0]
|
||||||
if (!this.records.buildId) {
|
if (!this.records.buildId) {
|
||||||
|
|||||||
@@ -0,0 +1,339 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<van-form ref="form" @submit="save">
|
||||||
|
<div class="cont">
|
||||||
|
<div class="container">
|
||||||
|
<div class="part">
|
||||||
|
<div class="nengyuan">
|
||||||
|
<van-cell-group>
|
||||||
|
<van-field
|
||||||
|
v-model="formData.lgitude"
|
||||||
|
label="经度"
|
||||||
|
input-align="right"
|
||||||
|
placeholder="请输入"
|
||||||
|
required
|
||||||
|
/>
|
||||||
|
<van-field
|
||||||
|
v-model="formData.ltitude"
|
||||||
|
label="纬度"
|
||||||
|
input-align="right"
|
||||||
|
placeholder="请输入"
|
||||||
|
required
|
||||||
|
/>
|
||||||
|
<van-field
|
||||||
|
v-model="formData.addressName"
|
||||||
|
label="定位地址"
|
||||||
|
input-align="right"
|
||||||
|
placeholder="请输入"
|
||||||
|
required
|
||||||
|
/>
|
||||||
|
<van-field
|
||||||
|
v-model="formData.clockType"
|
||||||
|
label="打卡类型"
|
||||||
|
input-align="right"
|
||||||
|
placeholder="请输入"
|
||||||
|
required
|
||||||
|
/>
|
||||||
|
<van-field
|
||||||
|
v-model="formData.clockNum"
|
||||||
|
label="打卡人数"
|
||||||
|
input-align="right"
|
||||||
|
placeholder="请输入"
|
||||||
|
v-input.numNo0
|
||||||
|
type="number"
|
||||||
|
required
|
||||||
|
/>
|
||||||
|
<!-- <van-field
|
||||||
|
v-model="formData.clockTime"
|
||||||
|
label="打卡时间"
|
||||||
|
input-align="right"
|
||||||
|
placeholder="请输入"
|
||||||
|
readonly
|
||||||
|
/> -->
|
||||||
|
<van-field
|
||||||
|
v-model="formData.remark"
|
||||||
|
label="备注"
|
||||||
|
input-align="right"
|
||||||
|
placeholder="请输入"
|
||||||
|
/>
|
||||||
|
</van-cell-group>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="container">
|
||||||
|
<div class="part part1">
|
||||||
|
<div class="title">
|
||||||
|
<div class="tit"></div>
|
||||||
|
<div class="titInfo">打卡照片</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="pic">
|
||||||
|
<Uploader
|
||||||
|
type="text1"
|
||||||
|
:value="text1"
|
||||||
|
:maxCount="1"
|
||||||
|
:deletable="showSubmit"
|
||||||
|
@afterRead="afterRead"
|
||||||
|
@delImg="delImg"
|
||||||
|
@onUpload="onUpload"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="footer-btn" v-if="showSubmit">
|
||||||
|
<van-button native-type="submit">提交</van-button>
|
||||||
|
</div>
|
||||||
|
</van-form>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { Notify } from 'vant'
|
||||||
|
import Uploader from '@/views/facilityManage/common-vue/uploader.vue'
|
||||||
|
import {
|
||||||
|
getLocationMessage,
|
||||||
|
getPosition,
|
||||||
|
// chooseAlbumAndTakePhoto,
|
||||||
|
} from '@/utils/dsbridge'
|
||||||
|
import { format } from '@/utils/timeUtil.js'
|
||||||
|
import { insertPositionData, getPositionData } from '@/api/api.js'
|
||||||
|
import { downloadUrl } from '@/settings'
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
Uploader,
|
||||||
|
},
|
||||||
|
computed:{
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
text1: [],
|
||||||
|
|
||||||
|
formData: {
|
||||||
|
lgitude: '',
|
||||||
|
ltitude: '',
|
||||||
|
addressName: '',
|
||||||
|
clockType: '',
|
||||||
|
clockNum: '',
|
||||||
|
remark: '',
|
||||||
|
fileName: '',
|
||||||
|
fileId: ''
|
||||||
|
},
|
||||||
|
showSubmit: false,
|
||||||
|
taskId: '',
|
||||||
|
customerId: '',
|
||||||
|
animation: null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
document.title = '打卡信息收集'
|
||||||
|
this.taskId = JSON.parse(sessionStorage.getItem('tidCid')).taskId
|
||||||
|
this.customerId = JSON.parse(sessionStorage.getItem('tidCid')).customerId
|
||||||
|
this.getHistory()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
// 查询打卡记录
|
||||||
|
getHistory(){
|
||||||
|
this.text1 = []
|
||||||
|
getPositionData({taskId: this.taskId}).then(res => {
|
||||||
|
console.log(res.code , res.data);
|
||||||
|
if(res.code == 0&&res.data){
|
||||||
|
for (const key in this.formData) {
|
||||||
|
if (Object.hasOwnProperty.call(this.formData, key)) {
|
||||||
|
this.formData[key] = res.data[key]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (res.data.fileId) {
|
||||||
|
this.$set(this.text1,0, {
|
||||||
|
fileName: res.data.fileName,
|
||||||
|
fileId: res.data.fileId,
|
||||||
|
url: `${downloadUrl}${res.data.fileId}`
|
||||||
|
})
|
||||||
|
console.log(this.text1);
|
||||||
|
}
|
||||||
|
this.$forceUpdate()
|
||||||
|
this.showSubmit = false
|
||||||
|
}else{
|
||||||
|
this.showSubmit = true
|
||||||
|
this.getLocation()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 获取当前位置
|
||||||
|
getLocation() {
|
||||||
|
if (process.env.NODE_ENV === 'development') {
|
||||||
|
this.formData.lgitude = 31.560001
|
||||||
|
this.formData.ltitude = 118.708980
|
||||||
|
this.formData.addressName = '江苏省南京市江宁区'
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
// this.formData.clockTime = format(new Date().getTime())
|
||||||
|
} catch (error) {}
|
||||||
|
getPosition((data) => {
|
||||||
|
if (data) {
|
||||||
|
console.log(data, '位置信息')
|
||||||
|
this.formData.lgitude = data.longitude
|
||||||
|
this.formData.ltitude = data.latitude
|
||||||
|
} else {
|
||||||
|
Notify({ type: 'warning', message: '未获取到位置信息' })
|
||||||
|
}
|
||||||
|
})
|
||||||
|
getLocationMessage((data) => {
|
||||||
|
if (data) {
|
||||||
|
this.formData.addressName = data
|
||||||
|
} else {
|
||||||
|
Notify({ type: 'warning', message: '未获取到定位信息' })
|
||||||
|
}
|
||||||
|
})
|
||||||
|
this.animation = requestAnimationFrame(this.getLocation)
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 图片方法
|
||||||
|
*/
|
||||||
|
//浏览器 ios 会走这个方法
|
||||||
|
afterRead(data, type) {
|
||||||
|
this[type].push({
|
||||||
|
fileName: data.original_name,
|
||||||
|
fileId: data.attach_id,
|
||||||
|
url: `${downloadUrl}${data.attach_id}`
|
||||||
|
})
|
||||||
|
|
||||||
|
this.formData.fileName = data.original_name
|
||||||
|
this.formData.fileId = data.attach_id
|
||||||
|
},
|
||||||
|
//安卓会调用的方法
|
||||||
|
onUpload(data, type) {
|
||||||
|
this[type].push(data[0])
|
||||||
|
this.formData.fileName = data[0].fileName
|
||||||
|
this.formData.fileId = data[0].fileId
|
||||||
|
},
|
||||||
|
delImg(file, detail, type) {
|
||||||
|
if(!this.showSubmit) return
|
||||||
|
if (type == 'text1') {
|
||||||
|
this.delIsObj(this.text1)
|
||||||
|
this.text1.splice(detail.index, 1)
|
||||||
|
this.formData.fileName = ''
|
||||||
|
this.formData.fileId = ''
|
||||||
|
}
|
||||||
|
},
|
||||||
|
//判断删除的list中是否为对象格式
|
||||||
|
delIsObj(delList) {
|
||||||
|
const list = delList.map((ele) => {
|
||||||
|
if (ele instanceof Object) {
|
||||||
|
return ele.url
|
||||||
|
}
|
||||||
|
return ele
|
||||||
|
})
|
||||||
|
return list
|
||||||
|
},
|
||||||
|
// 保存
|
||||||
|
save() {
|
||||||
|
let params = {
|
||||||
|
...this.formData,
|
||||||
|
// clockAbout: JSON.stringify(this.text1),
|
||||||
|
taskId: this.taskId,
|
||||||
|
customerId: this.customerId,
|
||||||
|
}
|
||||||
|
insertPositionData(params).then((res) => {
|
||||||
|
if (res.code == 0) {
|
||||||
|
this.$toast('打卡成功')
|
||||||
|
this.$router.push({
|
||||||
|
name: 'taskManage',
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
},
|
||||||
|
beforeDestroy(){
|
||||||
|
if(this.animation){
|
||||||
|
cancelAnimationFrame(this.animation)
|
||||||
|
this.animation = null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style lang="less" scoped>
|
||||||
|
/deep/.van-field__label {
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
.cont {
|
||||||
|
height: calc(100vh - 50px);
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
.pic-style {
|
||||||
|
display: inline-block;
|
||||||
|
margin: 10px 0 10px 20px;
|
||||||
|
}
|
||||||
|
.part {
|
||||||
|
width: 100%;
|
||||||
|
padding: 15px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
.nengyuan {
|
||||||
|
width: 100%;
|
||||||
|
border-radius: 10px;
|
||||||
|
background: #fff;
|
||||||
|
box-sizing: border-box;
|
||||||
|
overflow: hidden;
|
||||||
|
} // .faqi {
|
||||||
|
// background-color: #63cbb6;
|
||||||
|
// color: #fff;
|
||||||
|
// border-radius: 8px;
|
||||||
|
// margin-top: 20px;
|
||||||
|
// }
|
||||||
|
.title1 {
|
||||||
|
width: 100%;
|
||||||
|
height: 30px;
|
||||||
|
line-height: 30px;
|
||||||
|
display: flex;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
.titInfo {
|
||||||
|
font-size: 14px;
|
||||||
|
color: #10968b;
|
||||||
|
margin-left: 10px;
|
||||||
|
}
|
||||||
|
.titInfo1 {
|
||||||
|
margin-left: 15px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.part1 {
|
||||||
|
padding: 0 15px;
|
||||||
|
.title {
|
||||||
|
width: 100%;
|
||||||
|
height: 30px;
|
||||||
|
line-height: 30px;
|
||||||
|
display: flex;
|
||||||
|
.tit {
|
||||||
|
height: 15px;
|
||||||
|
width: 4px;
|
||||||
|
background: #2c827c;
|
||||||
|
margin-top: 7.5px;
|
||||||
|
border-radius: 5px;
|
||||||
|
}
|
||||||
|
.titInfo {
|
||||||
|
font-size: 14px;
|
||||||
|
color: #10968b;
|
||||||
|
margin-left: 10px;
|
||||||
|
}
|
||||||
|
.titInfo1 {
|
||||||
|
margin-left: 15px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.part2 {
|
||||||
|
padding: 5px 15px;
|
||||||
|
}
|
||||||
|
.footer-btn {
|
||||||
|
height: 35px;
|
||||||
|
padding: 0 0.4rem;
|
||||||
|
/deep/ .van-button {
|
||||||
|
width: 100%;
|
||||||
|
background: #34baae;
|
||||||
|
border-radius: 10px;
|
||||||
|
line-height: 35px;
|
||||||
|
text-align: center;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -187,6 +187,12 @@
|
|||||||
|
|
||||||
<div class="list-bot">
|
<div class="list-bot">
|
||||||
<div>
|
<div>
|
||||||
|
<button
|
||||||
|
@click="goClockIn(item)"
|
||||||
|
style="margin-left: 10px;"
|
||||||
|
>
|
||||||
|
打卡
|
||||||
|
</button>
|
||||||
<button
|
<button
|
||||||
@click="togenReport(item)"
|
@click="togenReport(item)"
|
||||||
style="margin-left: 10px;"
|
style="margin-left: 10px;"
|
||||||
@@ -432,7 +438,8 @@ export default {
|
|||||||
},
|
},
|
||||||
// 存储当前tid,cid,客户详情信息
|
// 存储当前tid,cid,客户详情信息
|
||||||
setCurrentTidCidPersonInfo(item) {
|
setCurrentTidCidPersonInfo(item) {
|
||||||
const data = {taskId:item.id, taskType:item.taskType, customerId:item.customerId, buildId:item.buildId, equipId:item.equipId,enterpriseSystemId:item.enterpriseSystemId, item}
|
const data = {taskId:item.id, taskType:item.taskType, customerId:item.customerId, buildId:item.buildId, equipId:item.equipId,enterpriseSystemId:item.enterpriseSystemId,
|
||||||
|
item: JSON.parse(JSON.stringify(item))}
|
||||||
sessionStorage.setItem('tidCid', JSON.stringify(data))
|
sessionStorage.setItem('tidCid', JSON.stringify(data))
|
||||||
sessionStorage.setItem('enterpriseSystemId', item.enterpriseSystemId)
|
sessionStorage.setItem('enterpriseSystemId', item.enterpriseSystemId)
|
||||||
sessionStorage.setItem('taskType', item.taskType)
|
sessionStorage.setItem('taskType', item.taskType)
|
||||||
@@ -518,6 +525,12 @@ export default {
|
|||||||
this.page.pageNum = 1
|
this.page.pageNum = 1
|
||||||
this.allPage = 0
|
this.allPage = 0
|
||||||
this.getTaskList()
|
this.getTaskList()
|
||||||
|
},
|
||||||
|
goClockIn(item){
|
||||||
|
this.setCurrentTidCidPersonInfo(item)
|
||||||
|
this.$router.push({
|
||||||
|
name: 'clockIn',
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -72,7 +72,9 @@ export default {
|
|||||||
const res = await uploadFile(params)
|
const res = await uploadFile(params)
|
||||||
if (res.code == 0) {
|
if (res.code == 0) {
|
||||||
this.fileList.push({
|
this.fileList.push({
|
||||||
url:`${downloadUrl}${res.data.attach_id}`
|
fileName: res.data.original_name,
|
||||||
|
fileId: res.data.attach_id,
|
||||||
|
url:`${downloadUrl}${res.data.attach_id}`
|
||||||
})
|
})
|
||||||
this.$emit('onUpload', this.fileList, this.type)
|
this.$emit('onUpload', this.fileList, this.type)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user