Commit 0a022266 authored by honghuiliu's avatar honghuiliu 💬

Merge remote-tracking branch 'origin/master'

parents 46eb31dc 4a311364
...@@ -69,11 +69,11 @@ function checkCode(res,url) { ...@@ -69,11 +69,11 @@ function checkCode(res,url) {
} }
export default { export default {
post(url,data, config = { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' }){ post(url,data, config = { 'Content-Type': 'application/json; charset=UTF-8' }){
let record = id; let record = id;
if(list.indexOf(url)==-1){ if(list.indexOf(url)==-1){
let token = myPublic.getStorage('token'); let token = myPublic.getStorage('qsh-wc-token');
config['token'] = token; url = url+'?access_token='+token;
} }
console.log(`request`,record,url+' ',data); console.log(`request`,record,url+' ',data);
console.time(`request ${record}`); console.time(`request ${record}`);
...@@ -82,7 +82,7 @@ export default { ...@@ -82,7 +82,7 @@ export default {
method: 'post', method: 'post',
baseURL: API_HOST, baseURL: API_HOST,
url, url,
data: qs.stringify(data), data: JSON.stringify(data),
headers: config headers: config
}).then(response =>{ }).then(response =>{
return checkStatus(response,url,record); return checkStatus(response,url,record);
......
...@@ -14,6 +14,10 @@ export default { ...@@ -14,6 +14,10 @@ export default {
}, },
//工单列表 //工单列表
getPatrolList(params) { getPatrolList(params) {
return http.post('web/toilet/getPatrolList', params) return http.post('web/patrol/getPatrolList', params)
},
//工单详情
getPatrolDetail(params) {
return http.post('web/patrol/getPatrolDetail', params)
} }
} }
...@@ -47,41 +47,41 @@ ...@@ -47,41 +47,41 @@
site_id:'', site_id:'',
time:myPublic.dateFormat.format(Date.now(), 'HH:mm:ss YYYY年MM月DD日'), time:myPublic.dateFormat.format(Date.now(), 'HH:mm:ss YYYY年MM月DD日'),
list:[ list:[
{ // {
longitude:119.779647, // longitude:119.779647,
latitude:30.24369, // latitude:30.24369,
name:'青山湖国家森林公园', // name:'青山湖国家森林公园',
address:'浙江省杭州市临安区老圣园路北', // address:'浙江省杭州市临安区老圣园路北',
type:1 // type:1
}, // },
{ // {
longitude:119.821796, // longitude:119.821796,
latitude:30.254114, // latitude:30.254114,
name:'青山湖街道', // name:'青山湖街道',
address:'浙江省杭州市临安区', // address:'浙江省杭州市临安区',
type:1 // type:1
}, // },
{ // {
longitude:119.790127, // longitude:119.790127,
latitude:30.255317, // latitude:30.255317,
name:'灵山', // name:'灵山',
address:'浙江省杭州市临安区', // address:'浙江省杭州市临安区',
type:2 // type:2
}, // },
{ // {
longitude:119.852565, // longitude:119.852565,
latitude:30.2528, // latitude:30.2528,
name:'青山湖互通', // name:'青山湖互通',
address:'浙江省杭州市临安区', // address:'浙江省杭州市临安区',
type:1 // type:1
}, // },
{ // {
longitude:119.823904, // longitude:119.823904,
latitude:30.24808, // latitude:30.24808,
name:'青山中学', // name:'青山中学',
address:'浙江省杭州市临安区', // address:'浙江省杭州市临安区',
type:1 // type:1
}, // },
] ]
}); });
const user = computed(()=>{ const user = computed(()=>{
...@@ -98,13 +98,24 @@ ...@@ -98,13 +98,24 @@
getList(); getList();
} }
function getList() { function getList() {
let p = {
page:1,
page_size:99
};
api.toiletList(p).then((res)=>{
if(res.code==0){
if(Array.isArray(res.data.list)){
state.list = [...res.data.list];
for (let item of state.list) { for (let item of state.list) {
const marker = new BMapGL.Point(item.longitude, item.latitude); const marker = new BMapGL.Point(item.lng, item.lat);
mapShow(marker, item, function (i) { mapShow(marker, item, function (i) {
}); });
} }
} }
}
});
}
function mapShow(coordinate, item, callBack) { function mapShow(coordinate, item, callBack) {
const now = Date.now(); const now = Date.now();
let str = `<img src="${require("@/assets/img/e.png")}" />`; let str = `<img src="${require("@/assets/img/e.png")}" />`;
...@@ -172,8 +183,8 @@ ...@@ -172,8 +183,8 @@
} }
} }
function seeDetail(item){ function seeDetail(item){
state.site_id = item.ID;
state.show = true; state.show = true;
state.site_id = item.site_id||'12';
} }
onMounted(()=>{ onMounted(()=>{
nextTick(()=>{ nextTick(()=>{
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
</div> </div>
<div class="row"> <div class="row">
<span class="icon icon-17"></span> <span class="icon icon-17"></span>
<input class="input" type="password" v-model="password" placeholder="请输入密码" /> <input class="input" type="password" v-model="password" placeholder="请输入密码" @keyup.enter="submit"/>
</div> </div>
<div class="opt"> <div class="opt">
<span class="btn" @click="submit">登录</span> <span class="btn" @click="submit">登录</span>
...@@ -57,7 +57,6 @@ ...@@ -57,7 +57,6 @@
if(res.data){ if(res.data){
myPublic.setStorage("qsh-wc-token",res.data); myPublic.setStorage("qsh-wc-token",res.data);
await router.replace({path:"/home"}); await router.replace({path:"/home"});
window.reload();
} }
} }
}) })
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
</div> </div>
<div class="row-one"> <div class="row-one">
<span class="row-name">巡检公厕单位</span> <span class="row-name">巡检公厕单位</span>
<span class="row-content">{{detail.name}}</span> <span class="row-content">{{detail.toiletId}}</span>
</div> </div>
<div class="row-one"> <div class="row-one">
<span class="row-name">巡检类型</span> <span class="row-name">巡检类型</span>
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
</div> </div>
<div class="row-one baseline"> <div class="row-one baseline">
<span class="row-name">巡检内容</span> <span class="row-name">巡检内容</span>
<div class="row-content"> <div class="row-content" v-if="detail.content">
<template v-for="item in detail.content"> <template v-for="item in detail.content">
<div class="check-one"> <div class="check-one">
<el-checkbox v-model="item.check" :label="item.title" size="large" :disabled="true"/> <el-checkbox v-model="item.check" :label="item.title" size="large" :disabled="true"/>
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
</div> </div>
</div> </div>
<div class="row-one"> <div class="row-one">
<span class="row-name">附件</span> <span class="row-name">巡检图片</span>
<div class="row-content"> <div class="row-content">
<photo-provider> <photo-provider>
<photo-consumer v-for="(url,index) in fileList" :key="url" :src="url"> <photo-consumer v-for="(url,index) in fileList" :key="url" :src="url">
...@@ -44,11 +44,11 @@ ...@@ -44,11 +44,11 @@
</div> </div>
<div class="row-one"> <div class="row-one">
<span class="row-name">站点巡检人</span> <span class="row-name">站点巡检人</span>
<span class="row-content">{{detail.staff}}</span> <span class="row-content">{{detail.partolName}}</span>
</div> </div>
<div class="row-one"> <div class="row-one">
<span class="row-name">提交时间</span> <span class="row-name">提交时间</span>
<span class="row-content">{{detail.create_time}}</span> <span class="row-content">{{detail.CreatedAt}}</span>
</div> </div>
</div> </div>
</div> </div>
...@@ -60,6 +60,7 @@ ...@@ -60,6 +60,7 @@
import {ElMessage} from "element-plus" import {ElMessage} from "element-plus"
import {Close} from "@element-plus/icons-vue" import {Close} from "@element-plus/icons-vue"
import api from "@/api/methods/index" import api from "@/api/methods/index"
import myPublic from "@/utils/public"
export default { export default {
name: 'order-detail', name: 'order-detail',
emits: ['update:modelValue'], emits: ['update:modelValue'],
...@@ -76,10 +77,10 @@ ...@@ -76,10 +77,10 @@
setup(props, {emit}) { setup(props, {emit}) {
const state = reactive({ const state = reactive({
detail: { detail: {
title:'2022年6月22日公厕巡检工作', title:'',
type:1, type:1,
name:'三号路公共厕所【GC-004】', name:'',
staff:'罗小飞', partolName:'',
content:[ content:[
{ {
title:'检查格栅井', title:'检查格栅井',
...@@ -148,7 +149,7 @@ ...@@ -148,7 +149,7 @@
], ],
description:'泵站清淤很多、泵站清淤很多、泵站清淤很多、泵站清淤很多、泵站清淤很多、泵站清淤很多、\n' + description:'泵站清淤很多、泵站清淤很多、泵站清淤很多、泵站清淤很多、泵站清淤很多、泵站清淤很多、\n' +
'泵站清淤很多。', '泵站清淤很多。',
create_time:'2022-06-22 10:00' CreatedAt:'2022-06-22 10:00'
}, },
typeList:[ typeList:[
{ {
...@@ -233,7 +234,12 @@ ...@@ -233,7 +234,12 @@
} }
} }
function getDetail(){ function getDetail(){
api.getPatrolDetail({id:props.order_id}).then((res)=>{
if(res.code==0){
res.data.CreatedAt = myPublic.dateFormat.format(res.data.CreatedAt)
Object.assign(state.detail,{...res.data});
}
});
} }
function closeBox(){ function closeBox(){
emit('update:modelValue',false) emit('update:modelValue',false)
......
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
点位名称 点位名称
</div> </div>
<div class="table-content-cell cell"> <div class="table-content-cell cell">
{{detail.name}}
</div> </div>
</div> </div>
<div class="table-row"> <div class="table-row">
...@@ -39,7 +39,7 @@ ...@@ -39,7 +39,7 @@
公厕类型 公厕类型
</div> </div>
<div class="table-content-cell cell"> <div class="table-content-cell cell">
{{wcTypeChange(detail.type).text}}
</div> </div>
</div> </div>
<div class="table-row"> <div class="table-row">
...@@ -47,7 +47,7 @@ ...@@ -47,7 +47,7 @@
管理人员 管理人员
</div> </div>
<div class="table-content-cell cell"> <div class="table-content-cell cell">
{{detail.manager}}
</div> </div>
</div> </div>
<div class="table-row"> <div class="table-row">
...@@ -55,7 +55,7 @@ ...@@ -55,7 +55,7 @@
联系电话 联系电话
</div> </div>
<div class="table-content-cell cell"> <div class="table-content-cell cell">
{{detail.managerPhone}}
</div> </div>
</div> </div>
<div class="table-row"> <div class="table-row">
...@@ -63,7 +63,7 @@ ...@@ -63,7 +63,7 @@
地址 地址
</div> </div>
<div class="table-content-cell cell"> <div class="table-content-cell cell">
{{detail.address}}
</div> </div>
</div> </div>
</div> </div>
...@@ -179,12 +179,12 @@ ...@@ -179,12 +179,12 @@
<div class="filter-one"> <div class="filter-one">
<p class="filter-name">类型筛选</p> <p class="filter-name">类型筛选</p>
<div class="filter-content"> <div class="filter-content">
<el-select v-model="filter.type" class="m-2" placeholder="请选择类型" @change="()=>getList()"> <el-select v-model="filter.order_type" class="m-2" placeholder="请选择类型" @change="()=>getOrderList()">
<el-option <el-option
v-for="item in [{name:'全部类型',value:'',prop:''},...typeList]" v-for="item in typeList_order"
:key="item.prop" :key="item.value"
:label="item.name" :label="item.name"
:value="item.prop" :value="item.value"
/> />
</el-select> </el-select>
</div> </div>
...@@ -193,7 +193,7 @@ ...@@ -193,7 +193,7 @@
<p class="filter-name">时间筛选</p> <p class="filter-name">时间筛选</p>
<div class="filter-content"> <div class="filter-content">
<el-date-picker <el-date-picker
v-model="filter.time" v-model="filter.time_order"
type="datetimerange" type="datetimerange"
format="YYYY-MM-DD HH:mm" format="YYYY-MM-DD HH:mm"
value-format="YYYY-MM-DD HH:mm" value-format="YYYY-MM-DD HH:mm"
...@@ -202,7 +202,7 @@ ...@@ -202,7 +202,7 @@
end-placeholder="结束时间" end-placeholder="结束时间"
:teleported="false" :teleported="false"
:editable="true" :editable="true"
@change="()=>getList()" @change="()=>getOrderList()"
/> />
</div> </div>
</div> </div>
...@@ -225,8 +225,8 @@ ...@@ -225,8 +225,8 @@
<div class="cell flex_2"> <div class="cell flex_2">
<span class="type" :style="{backgroundColor:typeChange(item.type).color}">{{typeChange(item.type).text}}</span> <span class="type" :style="{backgroundColor:typeChange(item.type).color}">{{typeChange(item.type).text}}</span>
</div> </div>
<div class="cell flex_2">{{item.staff}}</div> <div class="cell flex_2">{{item.partolName}}</div>
<div class="cell flex_2">{{item.create_time}}</div> <div class="cell flex_2">{{item.CreatedAt}}</div>
<div class="cell"> <div class="cell">
<span class="opt" @click="seeDetail(item)">查看</span> <span class="opt" @click="seeDetail(item)">查看</span>
</div> </div>
...@@ -242,7 +242,7 @@ ...@@ -242,7 +242,7 @@
:background="background" :background="background"
layout="sizes, prev, pager, next" layout="sizes, prev, pager, next"
:total="list.total" :total="list.total"
@size-change="()=>getOrderList(list.page)" @size-change="()=>getOrderList()"
@current-change="()=>getOrderList()" @current-change="()=>getOrderList()"
/> />
</div> </div>
...@@ -260,6 +260,7 @@ ...@@ -260,6 +260,7 @@
import {ref,reactive, toRefs, onMounted,nextTick,defineAsyncComponent} from "vue" import {ref,reactive, toRefs, onMounted,nextTick,defineAsyncComponent} from "vue"
import {ElMessage} from "element-plus" import {ElMessage} from "element-plus"
import api from "@/api/methods/index" import api from "@/api/methods/index"
import myPublic from "@/utils/public"
export default { export default {
name: 'site-detail', name: 'site-detail',
emits: ['update:modelValue'], emits: ['update:modelValue'],
...@@ -269,7 +270,7 @@ ...@@ -269,7 +270,7 @@
default: false default: false
}, },
site_id: { site_id: {
type: String, type: Number,
default: '' default: ''
}, },
}, },
...@@ -278,7 +279,6 @@ ...@@ -278,7 +279,6 @@
show:false, show:false,
order_id:'', order_id:'',
detail: { detail: {
name: '三号路公共厕所GC-004',
poster: [ poster: [
require("@/assets/img/banner-1.png"), require("@/assets/img/banner-1.png"),
require("@/assets/img/banner-1.png"), require("@/assets/img/banner-1.png"),
...@@ -322,7 +322,9 @@ ...@@ -322,7 +322,9 @@
myChart:null, myChart:null,
filter:{ filter:{
type:'', type:'',
time:['',''] order_type:'',
time:['',''],
time_order:['','']
}, },
typeList:[ typeList:[
{ {
...@@ -390,83 +392,40 @@ ...@@ -390,83 +392,40 @@
create_time:'2022-09-01 10:00' create_time:'2022-09-01 10:00'
} }
], ],
list:{ typeList_order:[
page:1,
pageSize:15,
total:20,
data:[
{
title:'2022年6月22日公厕巡检工作',
type:1,
name:'三号路公共厕所【GC-004】',
staff:'罗小飞',
create_time:'2022-06-22 10:00'
},
{
title:'2022年6月21日公厕巡检工作',
type:1,
name:'三号路公共厕所【GC-004】',
staff:'罗小飞',
create_time:'2022-06-21 10:00'
},
{
title:'2022年6月20日公厕巡检工作',
type:1,
name:'三号路公共厕所【GC-004】',
staff:'罗小飞',
create_time:'2022-06-20 10:00'
},
{
title:'2022年6月19日公厕巡检工作',
type:2,
name:'三号路公共厕所【GC-004】',
staff:'罗小飞',
create_time:'2022-06-19 10:00'
},
{
title:'2022年6月18日公厕巡检工作',
type:1,
name:'三号路公共厕所【GC-004】',
staff:'罗小飞',
create_time:'2022-06-18 10:00'
},
{
title:'2022年6月17日公厕巡检工作',
type:1,
name:'三号路公共厕所【GC-004】',
staff:'罗小飞',
create_time:'2022-06-17 10:00'
},
{ {
title:'2022年6月16日公厕巡检工作', name:'全部类型',
type:2, value:'',
name:'三号路公共厕所【GC-004】',
staff:'罗小飞',
create_time:'2022-06-16 10:00'
}, },
{ {
title:'2022年6月14日公厕巡检工作', name:'一体化设备',
type:1, value:1,
name:'三号路公共厕所【GC-004】',
staff:'罗小飞',
create_time:'2022-06-14 10:00'
}, },
{ {
title:'2022年6月13日公厕巡检工作', name:'玻璃钢',
type:1, value:2,
name:'三号路公共厕所【GC-004】', }
staff:'罗小飞', ],
create_time:'2022-06-13 10:00' list:{
}, page:1,
pageSize:15,
total:20,
data:[
] ]
} }
}); });
const chart = ref(null); const chart = ref(null);
function getDetail() { function getDetail() {
api.getToiletDetail({id:props.site_id}).then((res)=>{
if(res.code==0){
Object.assign(state.detail,{...res.data});
if(state.detail.type==1){ if(state.detail.type==1){
state.tabs.find(one=>one.value=='process').show = true; state.tabs.find(one=>one.value=='process').show = true;
} }
} }
});
}
function typeChange(type=1) { function typeChange(type=1) {
switch (type) { switch (type) {
case 1: case 1:
...@@ -484,6 +443,9 @@ ...@@ -484,6 +443,9 @@
function tabActive(item) { function tabActive(item) {
if (state.tab != item.value) { if (state.tab != item.value) {
state.tab = item.value; state.tab = item.value;
if(item.value=='base'){
initGauge();
}
if(item.value=='history'){ if(item.value=='history'){
getList(); getList();
} }
...@@ -493,6 +455,7 @@ ...@@ -493,6 +455,7 @@
} }
} }
function initGauge(){ function initGauge(){
nextTick(()=>{
state.myChart = echarts.init(chart.value); state.myChart = echarts.init(chart.value);
let option = { let option = {
series: [ series: [
...@@ -582,7 +545,10 @@ ...@@ -582,7 +545,10 @@
} }
] ]
}; };
state.myChart.clear();
state.myChart.setOption(option); state.myChart.setOption(option);
state.myChart.resize();
})
} }
function getList(){ function getList(){
...@@ -590,19 +556,45 @@ ...@@ -590,19 +556,45 @@
function getOrderList(page=1){ function getOrderList(page=1){
let p = { let p = {
page:page, page:page,
pageSize:state.list.pageSize page_size:state.list.pageSize,
}; };
if(state.filter.time_order[0]&&state.filter.time_order[1]){
p.start_time = state.filter.time_order[0];
p.end_time = state.filter.time_order[1];
}
if(state.filter.order_type){
p.type = state.filter.order_type;
}
state.list.page = page; state.list.page = page;
api.getPatrolList(p).then((res)=>{
if(res.code==0){
if(Array.isArray(res.data.list)){
res.data.list.forEach((item)=>{
item.CreatedAt = myPublic.dateFormat.format(item.CreatedAt);
})
state.list.data = res.data.list;
state.list.total = res.data.total;
}
}
})
} }
function seeDetail(item){ function seeDetail(item){
state.order_id = item.order_id; state.order_id = item.ID;
state.show = true; state.show = true;
} }
onMounted(async () => { function wcTypeChange(type=1) {
switch (type) {
case 1:
return {text:'有动力',color:'#3396fb'};
case 2:
return {text:'无动力',color:'#f78131'};
default:
return {text:'...',color:'#f78131'};
}
}
onMounted(() => {
getDetail(); getDetail();
await nextTick(()=>{
initGauge(); initGauge();
})
}); });
return { return {
...toRefs(state), ...toRefs(state),
...@@ -612,7 +604,8 @@ ...@@ -612,7 +604,8 @@
typeChange, typeChange,
getList, getList,
getOrderList, getOrderList,
seeDetail seeDetail,
wcTypeChange
} }
}, },
components: { components: {
......
...@@ -62,7 +62,7 @@ module.exports = { ...@@ -62,7 +62,7 @@ module.exports = {
port:80, port:80,
proxy: { proxy: {
'/api': { '/api': {
target: 'http://qsh-wc-test.linanquan.com/api', target: 'http://127.0.0.1:9801',
changeOrigin: true, changeOrigin: true,
pathRewrite: { pathRewrite: {
// '^/apis': ''表示把/apis替换为‘’(空字符串),这样既能使用代理, // '^/apis': ''表示把/apis替换为‘’(空字符串),这样既能使用代理,
......
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