Commit dd777f3c authored by “yiyousong”'s avatar “yiyousong”
parents 66397328 e09aecae
...@@ -62,48 +62,6 @@ ...@@ -62,48 +62,6 @@
</properties> </properties>
</profile> </profile>
<profile>
<id>yibin-test</id>
<properties>
<profiles.active>yibin-test</profiles.active>
<profiles.server.path>/base</profiles.server.path>
<profiles.publish.path>/home/publish</profiles.publish.path>
<profiles.rabbitmq.host>127.0.0.1</profiles.rabbitmq.host>
<profiles.rabbitmq.port>5672</profiles.rabbitmq.port>
<profiles.rabbitmq.username>taxi_mq</profiles.rabbitmq.username>
<profiles.rabbitmq.password>admin@2020</profiles.rabbitmq.password>
<profiles.rabbitmq.virtualhost>/</profiles.rabbitmq.virtualhost>
<profiles.nacos.server-addr>127.0.0.1:8848</profiles.nacos.server-addr>
<profiles.nacos.group>DEFAULT_GROUP</profiles.nacos.group>
<profiles.nacos.namespace>smart-gov</profiles.nacos.namespace>
<profiles.log.path>/home/mortals/app/logs</profiles.log.path>
<profiles.log.level>INFO</profiles.log.level>
<package.environment>test</package.environment>
<skipUi>false</skipUi>
</properties>
</profile>
<profile>
<id>product</id>
<properties>
<profiles.active>product</profiles.active>
<profiles.server.path>/base</profiles.server.path>
<profiles.server.port>17211</profiles.server.port>
<profiles.publish.path>/home/publish</profiles.publish.path>
<profiles.rabbitmq.host>192.168.0.251</profiles.rabbitmq.host>
<profiles.rabbitmq.port>5672</profiles.rabbitmq.port>
<profiles.rabbitmq.username>root_mq</profiles.rabbitmq.username>
<profiles.rabbitmq.password>xhx@2022</profiles.rabbitmq.password>
<profiles.rabbitmq.virtualhost>/</profiles.rabbitmq.virtualhost>
<profiles.nacos.server-addr>127.0.0.1:8848</profiles.nacos.server-addr>
<profiles.nacos.group>DEFAULT_GROUP</profiles.nacos.group>
<profiles.nacos.namespace>smart-gov</profiles.nacos.namespace>
<profiles.log.path>/home/mortals/app/logs</profiles.log.path>
<profiles.log.level>INFO</profiles.log.level>
<package.environment>build</package.environment>
<skipUi>true</skipUi>
</properties>
</profile>
<profile> <profile>
<id>yibin</id> <id>yibin</id>
<properties> <properties>
......
...@@ -496,11 +496,16 @@ public class SiteServiceImpl extends AbstractCRUDCacheServiceImpl<SiteDao, SiteE ...@@ -496,11 +496,16 @@ public class SiteServiceImpl extends AbstractCRUDCacheServiceImpl<SiteDao, SiteE
*/ */
@Override @Override
public Rest<List<SiteEntity>> getAreaSitesByAreaLevel(SiteQuery query, Context context) { public Rest<List<SiteEntity>> getAreaSitesByAreaLevel(SiteQuery query, Context context) {
if (!ObjectUtils.isEmpty(query.getSiteName())) {
SiteEntity siteEntity = this.selectOne(new SiteQuery().siteName(query.getSiteName()));
if (!ObjectUtils.isEmpty(siteEntity)) {
query.setAreaLevel(siteEntity.getAreaLevel());
}
}
//获取所有层级的区域 //获取所有层级的区域
List<AreaEntity> areaEntities = areaService.find(new AreaQuery().areaLevel(query.getAreaLevel())); List<AreaEntity> areaEntities = areaService.find(new AreaQuery().areaLevel(query.getAreaLevel()));
List<SiteEntity> list = new ArrayList<>(); List<SiteEntity> list = new ArrayList<>();
for (AreaEntity areaEntity : areaEntities) { for (AreaEntity areaEntity : areaEntities) {
List<SiteEntity> siteEntityList = this.find(new SiteQuery().areaCode(areaEntity.getAreaCode())); List<SiteEntity> siteEntityList = this.find(new SiteQuery().areaCode(areaEntity.getAreaCode()));
......
...@@ -158,14 +158,23 @@ public class SiteController extends BaseCRUDJsonBodyMappingController<SiteServic ...@@ -158,14 +158,23 @@ public class SiteController extends BaseCRUDJsonBodyMappingController<SiteServic
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
String busiDesc = "根据区域编码查询站点列表" + this.getModuleDesc(); String busiDesc = "根据区域编码查询站点列表" + this.getModuleDesc();
try { try {
// AreaEntity areaEntity = areaService.selectOne(new AreaQuery().name(site.getAreaName())); if (!ObjectUtils.isEmpty(site.getSiteName())) {
// if(!ObjectUtils.isEmpty(areaEntity)){ SiteEntity siteEntity = this.service.selectOne(new SiteQuery().siteName(site.getSiteName()));
// site.setAreaCode(areaEntity.getAreaCode()); if (!ObjectUtils.isEmpty(siteEntity)) {
// } site.setAreaCode(siteEntity.getAreaCode());
}
}
if (!ObjectUtils.isEmpty(site.getAreaName())) {
AreaEntity areaEntity = areaService.selectOne(new AreaQuery().name(site.getAreaName()));
if (!ObjectUtils.isEmpty(areaEntity)) {
site.setAreaCode(areaEntity.getAreaCode());
}
}
List<SiteEntity> siteEntityList = this.service.getFlatSitesByAreaCode(site.getAreaCode(), getContext()); List<SiteEntity> siteEntityList = this.service.getFlatSitesByAreaCode(site.getAreaCode(), getContext());
if(!ObjectUtils.isEmpty(site.getSiteName())){ if (!ObjectUtils.isEmpty(site.getSiteName())) {
siteEntityList=siteEntityList.stream().filter(item->site.getSiteName().equals(item.getSiteName())).collect(Collectors.toList()); siteEntityList = siteEntityList.stream().filter(item -> site.getSiteName().equals(item.getSiteName())).collect(Collectors.toList());
} }
recordSysLog(request, busiDesc + " 【成功】"); recordSysLog(request, busiDesc + " 【成功】");
......
package com.mortals.xhx.module.workman.service; package com.mortals.xhx.module.workman.service;
import com.mortals.framework.common.Rest; import com.mortals.framework.common.Rest;
import com.mortals.framework.exception.AppException; import com.mortals.framework.exception.AppException;
import com.mortals.framework.service.ICRUDCacheService; import com.mortals.framework.service.ICRUDCacheService;
import com.mortals.framework.service.ICRUDService; import com.mortals.framework.service.ICRUDService;
import com.mortals.xhx.base.system.user.model.UserEntity; import com.mortals.xhx.base.system.user.model.UserEntity;
import com.mortals.xhx.module.workman.dao.WorkmanDao;
import com.mortals.xhx.module.workman.model.WorkmanEntity; import com.mortals.xhx.module.workman.model.WorkmanEntity;
/** /**
* WorkmanService * WorkmanService
* * <p>
* 工作人员 service接口 * 工作人员 service接口
* *
* @author zxfei * @author zxfei
* @date 2022-01-12 * @date 2022-01-12
*/ */
public interface WorkmanService extends ICRUDCacheService<WorkmanEntity,Long> { public interface WorkmanService extends ICRUDCacheService<WorkmanEntity, Long> {
WorkmanDao getDao();
/** /**
* 工作人员登录 * 工作人员登录
* *
* @param loginName 登录用户名 * @param loginName 登录用户名
* @param password 登录密码 * @param password 登录密码
* @param ip ip地址 * @param ip ip地址
* @return * @return
* @throws AppException * @throws AppException
*/ */
WorkmanEntity doLogin(String loginName, String password,String ip) throws AppException; WorkmanEntity doLogin(String loginName, String password, String ip) throws AppException;
/** /**
...@@ -43,10 +47,7 @@ public interface WorkmanService extends ICRUDCacheService<WorkmanEntity,Long> { ...@@ -43,10 +47,7 @@ public interface WorkmanService extends ICRUDCacheService<WorkmanEntity,Long> {
boolean updateUserPwd(String loginName, String newPwd) throws AppException; boolean updateUserPwd(String loginName, String newPwd) throws AppException;
Rest<Void> doImportPic(String filePath) throws AppException; Rest<Void> doImportPic(String filePath) throws AppException;
} }
\ No newline at end of file
...@@ -265,7 +265,7 @@ public class WorkmanServiceImpl extends AbstractCRUDCacheServiceImpl<WorkmanDao, ...@@ -265,7 +265,7 @@ public class WorkmanServiceImpl extends AbstractCRUDCacheServiceImpl<WorkmanDao,
} }
public static void main(String[] args) throws Exception { public static void main(String[] args) throws Exception {
System.out.println(SecurityUtil.md5DoubleEncoding("")); System.out.println(SecurityUtil.md5DoubleEncoding("123456"));
} }
......
...@@ -97,8 +97,7 @@ public class WorkmanController extends BaseCRUDJsonBodyMappingController<Workman ...@@ -97,8 +97,7 @@ public class WorkmanController extends BaseCRUDJsonBodyMappingController<Workman
WorkmanEntity workmanEntity = this.service.doLogin(query.getLoginName(), query.getLoginPwd(), ip); WorkmanEntity workmanEntity = this.service.doLogin(query.getLoginName(), query.getLoginPwd(), ip);
workmanEntity.setLastLoginAddress(ip); workmanEntity.setLastLoginAddress(ip);
workmanEntity.setLastLoginTime(new Date()); workmanEntity.setLastLoginTime(new Date());
this.service.update(workmanEntity,getContext()); this.service.getDao().update(workmanEntity);
if (query.getSiteId() != workmanEntity.getSiteId()) { if (query.getSiteId() != workmanEntity.getSiteId()) {
throw new AppException("当前工作人员不在当前站点下!"); throw new AppException("当前工作人员不在当前站点下!");
} }
......
...@@ -3,7 +3,7 @@ POST {{baseUrl}}/workman/doLogin ...@@ -3,7 +3,7 @@ POST {{baseUrl}}/workman/doLogin
Content-Type: application/json Content-Type: application/json
{ {
"loginName":"gxj" , "loginName":"zengxia",
"loginPwd":"123456" "loginPwd":"123456"
} }
...@@ -20,12 +20,11 @@ Content-Type: application/json ...@@ -20,12 +20,11 @@ Content-Type: application/json
###工作人员更新与保存 ###工作人员更新与保存
POST {{baseUrl}}/workman/save POST {{baseUrl}}/workman/save
Authorization: {{authToken}}
Content-Type: application/json Content-Type: application/json
{ {
"loginName":"workman1", "loginName":"zengxia",
"loginPwd": "123456" "loginPwd": "123"
} }
> {% > {%
......
...@@ -7973,6 +7973,22 @@ ...@@ -7973,6 +7973,22 @@
"integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
"dev": true "dev": true
}, },
"v-viewer": {
"version": "1.6.4",
"resolved": "https://registry.npmmirror.com/v-viewer/-/v-viewer-1.6.4.tgz",
"integrity": "sha512-LVkiUHpmsbsZXebeNXnu8krRCi5i2n07FeLFxoIVGhw8lVvTBO0ffpbDC6mLEuacCjrIh09HjIqpciwUtWE8lQ==",
"requires": {
"throttle-debounce": "^2.0.1",
"viewerjs": "^1.5.0"
},
"dependencies": {
"throttle-debounce": {
"version": "2.3.0",
"resolved": "https://registry.npmmirror.com/throttle-debounce/-/throttle-debounce-2.3.0.tgz",
"integrity": "sha512-H7oLPV0P7+jgvrk+6mwwwBDmxTaxnu9HMXmloNLXwnNO0ZxZ31Orah2n8lU1eMPvsaowP2CX+USCgyovXfdOFQ=="
}
}
},
"validate-npm-package-license": { "validate-npm-package-license": {
"version": "3.0.4", "version": "3.0.4",
"resolved": "https://registry.npmmirror.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", "resolved": "https://registry.npmmirror.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
...@@ -7989,6 +8005,11 @@ ...@@ -7989,6 +8005,11 @@
"integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
"dev": true "dev": true
}, },
"viewerjs": {
"version": "1.11.3",
"resolved": "https://registry.npmmirror.com/viewerjs/-/viewerjs-1.11.3.tgz",
"integrity": "sha512-efG3U61Umuj/1x6JAtdvnY9m407C/RkrkFilsMcLEWKDivpjNU3/FeL+feCY1Vkur9aQeBJ+z6K4CCPP7hv6vA=="
},
"vue": { "vue": {
"version": "2.7.14", "version": "2.7.14",
"resolved": "https://registry.npmmirror.com/vue/-/vue-2.7.14.tgz", "resolved": "https://registry.npmmirror.com/vue/-/vue-2.7.14.tgz",
......
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
"lodash": "^4.17.21", "lodash": "^4.17.21",
"moment": "^2.29.4", "moment": "^2.29.4",
"qs": "^6.10.3", "qs": "^6.10.3",
"v-viewer": "^1.6.4",
"vue": "^2.6.14", "vue": "^2.6.14",
"vue-highlightjs": "^1.3.3", "vue-highlightjs": "^1.3.3",
"vue-router": "^3.5.1", "vue-router": "^3.5.1",
......
...@@ -18,4 +18,12 @@ export function getAccessAnalyse(params) { ...@@ -18,4 +18,12 @@ export function getAccessAnalyse(params) {
//路径分析 //路径分析
export function getWayAccessAnalyse(params) { export function getWayAccessAnalyse(params) {
return http.post(`${baseURL}/zwfw/act/analyse/wayAccessAnalyse`, params); return http.post(`${baseURL}/zwfw/act/analyse/wayAccessAnalyse`, params);
}
//使用习惯
export function getUsageCensus(params) {
return http.post(`${baseURL}/zwfw/act/analyse/usageCensus`, params);
}
//信息流分析
export function getInformationFlow(params) {
return http.post(`${baseURL}/zwfw/act/analyse/informationFlow`, params);
} }
\ No newline at end of file
...@@ -41,6 +41,10 @@ Vue.prototype.$codeMap = codeMap; ...@@ -41,6 +41,10 @@ Vue.prototype.$codeMap = codeMap;
Vue.prototype.$bus = new Vue(); Vue.prototype.$bus = new Vue();
Vue.config.productionTip = false; Vue.config.productionTip = false;
// 图片预约
import Viewer from 'v-viewer'
import 'viewerjs/dist/viewer.css'
Vue.use(Viewer);
new Vue({ new Vue({
router, router,
store, store,
......
...@@ -2,5 +2,7 @@ export default{ ...@@ -2,5 +2,7 @@ export default{
//排队叫号字典 //排队叫号字典
"queueState":{"0":"排队中","1":"办理中","4":"接待结束"}, "queueState":{"0":"排队中","1":"办理中","4":"接待结束"},
"takeNumWay":{"0":"现场取号","1":"在线取号"}, "takeNumWay":{"0":"现场取号","1":"在线取号"},
"wy_signin":{"0":"现场取号","1":"在线取号"},
"register_type":{"Applets":"小程序","wechat":"公众号","app":"自助服务终端"},
"politicalStatus":{"0":"中共党员","1":"中共预备党员","2":"共青团员","3":"普通居民","4":"其它"} "politicalStatus":{"0":"中共党员","1":"中共预备党员","2":"共青团员","3":"普通居民","4":"其它"}
} }
\ No newline at end of file
...@@ -3,38 +3,39 @@ ...@@ -3,38 +3,39 @@
<div class="page"> <div class="page">
<a-form-model :model="queryform" :label-col="labelCol" :wrapper-col="wrapperCol" layout="inline"> <a-form-model :model="queryform" :label-col="labelCol" :wrapper-col="wrapperCol" layout="inline">
<a-form-model-item> <a-form-model-item>
<a-select v-model="queryform.value" style="width: 200px" placeholder="选择产品"> <a-select v-model="queryform.productId" style="width: 200px" placeholder="选择产品">
<a-select-option value="jack"> <a-select-option :value="item.id" v-for="(item,index) in product" :key="index">
Jack {{item.title}}
</a-select-option> </a-select-option>
</a-select> </a-select>
</a-form-model-item> </a-form-model-item>
<a-form-model-item> <a-form-model-item>
<a-range-picker valueFormat="yyyy-MM-DD" v-model="queryform.value" style="width: 300px" /> <a-date-picker valueFormat="yyyy-MM-DD" v-model="time" style="width: 200px" :allowClear="false"/>
</a-form-model-item>
<a-form-model-item>
<a-select v-model="queryform.particleType" style="width: 200px" placeholder="选择时间粒度">
<a-select-option value="1">10分钟</a-select-option>
<a-select-option value="2">30分钟</a-select-option>
<a-select-option value="3">1小时</a-select-option>
</a-select>
</a-form-model-item> </a-form-model-item>
<a-form-model-item> <a-form-model-item>
<a-select v-model="queryform.value" style="width: 200px" placeholder="选择一级场景"> <a-select v-model="queryform.value" style="width: 200px" placeholder="选择一级场景">
<a-select-option value="jack">
Jack
</a-select-option>
</a-select> </a-select>
</a-form-model-item> </a-form-model-item>
<a-form-model-item> <a-form-model-item>
<a-select v-model="queryform.value" style="width: 200px" placeholder="选择二级场景"> <a-select v-model="queryform.value" style="width: 200px" placeholder="选择二级场景">
<a-select-option value="jack">
Jack
</a-select-option>
</a-select> </a-select>
</a-form-model-item> </a-form-model-item>
<a-form-model-item> <a-form-model-item>
<a-select v-model="queryform.value" style="width: 200px" placeholder="选择三级场景"> <a-select v-model="queryform.value" style="width: 200px" placeholder="选择三级场景">
<a-select-option value="jack">
Jack
</a-select-option>
</a-select> </a-select>
</a-form-model-item> </a-form-model-item>
<a-form-model-item> <a-form-model-item>
<a-button type="primary"> <a-button type="primary" @click="getData">
开始分析 开始分析
</a-button> </a-button>
</a-form-model-item> </a-form-model-item>
...@@ -42,33 +43,56 @@ ...@@ -42,33 +43,56 @@
<div class="table-box"> <div class="table-box">
<div class="mb"> <div class="mb">
<span style="margin-right: 30px;">指标筛选</span> <span style="margin-right: 30px;">指标筛选</span>
<a-checkbox-group v-model="queryform.value"> <a-checkbox-group @change="changeIndex" v-model="indexList">
<a-checkbox value="1">访问人数</a-checkbox> <a-checkbox value="accessCount">访问人数</a-checkbox>
<a-checkbox value="2">打开次数</a-checkbox> <a-checkbox value="accessCount1">打开次数</a-checkbox>
<a-checkbox value="3">访问页面数</a-checkbox> <a-checkbox value="pageDepth">访问页面数</a-checkbox>
</a-checkbox-group> </a-checkbox-group>
</div> </div>
<div class="mb"> <div class="mb">
<span style="margin-right: 30px;">对比筛选</span> <span style="margin-right: 30px;">对比筛选</span>
<a-checkbox-group v-model="queryform.value"> <a-checkbox @change="onChange">
<a-checkbox value="1">日对比</a-checkbox> 日对比
</a-checkbox-group> </a-checkbox>
</div> </div>
<a-table :columns="columns" :data-source="data" :scroll="{ y: 590 }" :pagination="pagination"> <a-table :columns="columns" :data-source="data" :scroll="{ y: 590 }" :pagination="false">
<template slot="访问人数" slot-scope="text, record, index">
<div>{{record.accessCount}}</div>
<div v-show="queryform.isRatio == 1">日对比:{{(record.accessRatio * 100).toFixed(2)}}%</div>
</template>
<template slot="打开次数" slot-scope="text, record, index">
<div>{{record.accessCount}}</div>
<div v-show="queryform.isRatio == 1">日对比:{{(record.accessRatio * 100).toFixed(2)}}%</div>
</template>
<template slot="访问页面数" slot-scope="text, record, index">
<div>{{record.pageDepth}}</div>
<div v-show="queryform.isRatio == 1">日对比:{{(record.depthRatio * 100).toFixed(2)}}%</div>
</template>
</a-table> </a-table>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import {getInformationFlow} from '@/api/dataActuary.js'
import moment from 'moment';
export default { export default {
data() { data() {
return { return {
queryform: { queryform: {
value: null productId: 1,
}, dateTimeStart:moment().format('yyyy-MM-DD'),
dateTimeEnd:moment().format('yyyy-MM-DD'),
particleType:'1',
isRatio:0
},
time:moment().format('yyyy-MM-DD'),
product:[{
title:'排队机',
id:1
}],
indexList:['accessCount','accessCount1','pageDepth'],
labelCol: { labelCol: {
span: 1 span: 1
}, },
...@@ -78,45 +102,55 @@ ...@@ -78,45 +102,55 @@
columns: [{ columns: [{
title: "序号", title: "序号",
width: "70px", width: "70px",
dataIndex: 'index',
customRender: (text, record, index) => `${index+1}`, customRender: (text, record, index) => `${index+1}`,
align: "center", align: "center",
}, },
{ {
title: "时间", title: "时间",
dataIndex: "title", dataIndex: "dateStr",
align: "center", align: "center",
}, },
{ {
title: '产品名称', title: '产品名称',
dataIndex: 'address', dataIndex: 'productName',
align: "center", align: "center",
}, },
{ {
title: '一级场景', title: '一级场景',
dataIndex: 'address1', dataIndex: 'firstName',
align: "center", align: "center",
}, },
{ {
title: '二级场景', title: '二级场景',
dataIndex: 'address2', dataIndex: 'secondName',
align: "center", align: "center",
}, },
{ {
title: '三级场景', title: '三级场景',
dataIndex: 'address3', dataIndex: 'thirdName',
align: "center", align: "center",
},{ },{
title: '访问人数', title: '访问人数',
dataIndex: 'address5', dataIndex: 'accessCount',
align: "center", align: "center",
scopedSlots: {
customRender: "访问人数",
},
},{ },{
title: '打开次数', title: '打开次数',
dataIndex: 'address4', dataIndex: 'accessCount1',
align: "center", align: "center",
scopedSlots: {
customRender: "打开次数",
},
},{ },{
title: '访问页面数', title: '访问页面数',
dataIndex: 'address8', dataIndex: 'pageDepth',
align: "center", align: "center",
scopedSlots: {
customRender: "访问页面数",
},
} }
], ],
data: [], data: [],
...@@ -126,8 +160,31 @@ ...@@ -126,8 +160,31 @@
showSizeChanger: true, showSizeChanger: true,
pageSizeOptions: ["10", "20", "50", "100"], //每页中显示的数据 pageSizeOptions: ["10", "20", "50", "100"], //每页中显示的数据
showTotal: total => `共有 ${total} 条数据`, //分页中显示总的数据 showTotal: total => `共有 ${total} 条数据`, //分页中显示总的数据
}, },
filterColumns:[]
} }
},
mounted() {
this.filterColumns = this.columns
this.getData()
},
methods:{
onChange(e){
this.queryform.isRatio = e.target.checked ? 1 : 0
this.getData()
},
changeIndex(e) {
e = e.concat(['index','dateStr','productName','firstName','secondName','thirdName'])
let columns = JSON.parse(JSON.stringify(this.filterColumns))
this.columns = columns.filter(item=> e.some(items=> item.dataIndex == items))
},
getData() {
this.queryform.dateTimeStart = this.time ? this.time : null
this.queryform.dateTimeStart = this.time ? this.time : null
getInformationFlow(this.queryform).then(res=>{
this.data = res.data
})
},
} }
}; };
</script> </script>
......
<template> <template>
<!-- 使用习惯分析 --> <!-- 使用习惯分析 -->
<div class="page"> <div class="page">
<a-form-model :model="queryform" :label-col="labelCol" :wrapper-col="wrapperCol" layout="inline"> <a-form-model :model="queryform" :label-col="labelCol" :wrapper-col="wrapperCol" layout="inline">
<a-form-model-item> <a-form-model-item>
<a-select v-model="queryform.value" style="width: 200px" placeholder="选择产品"> <a-select v-model="queryform.productId" style="width: 200px" placeholder="选择产品">
<a-select-option value="jack"> <a-select-option :value="item.id" v-for="(item,index) in product" :key="index">
Jack {{item.title}}
</a-select-option> </a-select-option>
</a-select> </a-select>
</a-form-model-item> </a-form-model-item>
<a-form-model-item> <a-form-model-item>
<a-range-picker valueFormat="yyyy-MM-DD" v-model="queryform.value" style="width: 300px" /> <a-range-picker valueFormat="yyyy-MM-DD" v-model="time" style="width: 300px" :allowClear="false"/>
</a-form-model-item> </a-form-model-item>
<a-form-model-item> <a-form-model-item>
<a-button type="primary"> <a-button type="primary" @click="getData">
开始分析 开始分析
</a-button> </a-button>
</a-form-model-item> </a-form-model-item>
</a-form-model> </a-form-model>
<div class="charts-box"> <div class="charts-box">
<div id="canal"></div> <!-- <div id="canal"></div> -->
<div id="type"></div> <div id="type"></div>
<div id="way"></div> <!-- <div id="way"></div> -->
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import * as echarts from 'echarts' import * as echarts from 'echarts'
import moment from 'moment';
import {getUsageCensus} from '@/api/dataActuary.js'
export default { export default {
data() { data() {
return { return {
queryform: { queryform: {
value: null productId: 1,
}, dateTimeStart: moment().format('yyyy-MM-DD'),
dateTimeEnd: moment().format('yyyy-MM-DD'),
pageCode: '/'
},
time: [moment().format('yyyy-MM-DD'), moment().format('yyyy-MM-DD')],
product: [{
title: '排队机',
id: 1
}],
labelCol: { labelCol: {
span: 1 span: 1
}, },
...@@ -42,12 +52,18 @@ ...@@ -42,12 +52,18 @@
}, },
} }
}, },
mounted() { mounted() {
this.initCanal() this.getData()
this.initType()
this.initWay()
}, },
methods: { methods: {
getData() {
this.queryform.dateTimeStart = this.time ? this.time[0] : null
this.queryform.dateTimeStart = this.time ? this.time[1] : null
getUsageCensus(this.queryform).then(res=>{
let data = res.data.map(({businessName,propValue})=>({name:businessName,value:propValue * 100}))
this.initType(data)
})
},
initWay(){ initWay(){
let chartDom = document.getElementById('way') let chartDom = document.getElementById('way')
let myChart = echarts.init(chartDom); let myChart = echarts.init(chartDom);
...@@ -104,7 +120,8 @@ ...@@ -104,7 +120,8 @@
}] }]
}) })
}, },
initType() { initType(data) {
console.log(data)
let chartDom = document.getElementById('type') let chartDom = document.getElementById('type')
let myChart = echarts.init(chartDom); let myChart = echarts.init(chartDom);
myChart.setOption({ myChart.setOption({
...@@ -123,7 +140,6 @@ ...@@ -123,7 +140,6 @@
}, },
color: ['#6395F9', '#64DAAB', '#647798', '#F6C02D', '#7567FA', '#75CBED'], color: ['#6395F9', '#64DAAB', '#647798', '#F6C02D', '#7567FA', '#75CBED'],
series: [{ series: [{
name: 'Access From',
type: 'pie', type: 'pie',
radius: '65%', radius: '65%',
label: { label: {
...@@ -136,27 +152,7 @@ ...@@ -136,27 +152,7 @@
length: 1 length: 1
} }
}, },
data: [{ data: data
value: 1048,
name: 'Search Engine'
},
{
value: 735,
name: 'Direct'
},
{
value: 580,
name: 'Email'
},
{
value: 484,
name: 'Union Ads'
},
{
value: 300,
name: 'Video Ads'
}
],
}] }]
}) })
}, },
...@@ -221,7 +217,7 @@ ...@@ -221,7 +217,7 @@
.charts-box { .charts-box {
flex: 1; flex: 1;
display: flex; display: flex;
justify-content: space-between; justify-content: center;
padding: 50px 0; padding: 50px 0;
#canal,#type,#way { #canal,#type,#way {
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
<script> <script>
import axios from 'axios' import axios from 'axios'
import * as echarts from 'echarts' import * as echarts from 'echarts'
import china from "@/assets/json/china.json";
let myChart= null let myChart= null
export default { export default {
props: { props: {
...@@ -26,9 +27,7 @@ export default { ...@@ -26,9 +27,7 @@ export default {
} }
}, },
created(){ created(){
axios.get('/static/json/china.json').then((chinaJson)=>{ echarts.registerMap('china', china);
echarts.registerMap('china', chinaJson.data);
})
}, },
watch:{ watch:{
datas: function(obj) { datas: function(obj) {
...@@ -53,7 +52,7 @@ export default { ...@@ -53,7 +52,7 @@ export default {
}, },
series: [ series: [
{ {
name: '中国', name: 'china',
type: 'map', type: 'map',
map: 'china', map: 'china',
label: { label: {
...@@ -64,7 +63,6 @@ export default { ...@@ -64,7 +63,6 @@ export default {
] ]
} }
// axios.get('https://geo.datav.aliyun.com/areas_v3/bound/100000_full.json').then((chinaJson)=>{ // axios.get('https://geo.datav.aliyun.com/areas_v3/bound/100000_full.json').then((chinaJson)=>{
// console.log(chinaJson.data)
// echarts.registerMap('china', chinaJson.data); // echarts.registerMap('china', chinaJson.data);
// myChart.setOption(option) // myChart.setOption(option)
// }) // })
......
...@@ -5,8 +5,8 @@ ...@@ -5,8 +5,8 @@
<a-button :loading="btnLoading" type="success" @click="handleExportTable"> <a-button :loading="btnLoading" type="success" @click="handleExportTable">
<span>{{ tableSelectedRows.length ? "导出" : "导出全部" }}</span> <span>{{ tableSelectedRows.length ? "导出" : "导出全部" }}</span>
</a-button> </a-button>
<div class="ml20">提交次数:{{ numObj ? numObj.count : 0 }}</div> <div class="ml20">提交总次数:{{ numObj ? numObj.count : 0 }}</div>
<div class="ml20">回复次数:{{ numObj ? numObj.reply_count : 0 }}</div> <div class="ml20">回复次数:{{ numObj ? numObj.reply_count : 0 }}</div>
</div> </div>
<a-form :model="queryform" layout="inline"> <a-form :model="queryform" layout="inline">
<a-form-item> <a-form-item>
...@@ -29,29 +29,29 @@ ...@@ -29,29 +29,29 @@
<a-button type="primary" @click="getlist">搜索</a-button> <a-button type="primary" @click="getlist">搜索</a-button>
</a-form-item> </a-form-item>
</a-form> </a-form>
</div> </div>
<div class="table-box"> <div class="table-box">
<a-table :dataSource="tabledataSource" :columns="tablecolumns" :pagination="pagination" :scroll="{ y: 590 }" <a-table :dataSource="tabledataSource" :columns="tablecolumns" :pagination="pagination" :scroll="{ y: 590 }"
:row-key="(record) => record.id" @change="changeTablePage" :row-selection="{ :row-key="(record) => record.id" @change="changeTablePage" :row-selection="{
selectedRowKeys: tableSelectedKeys, selectedRowKeys: tableSelectedKeys,
onChange: onSelectChange, onChange: onSelectChange,
}"> }">
<template slot="type" slot-scope="text, record, index"> <template slot="type" slot-scope="text, record, index">
<div>{{typeList.find(item=>record.type).label}}</div> <div>{{typeList.find(item=>record.type).label}}</div>
</template> </template>
<template slot="valid" slot-scope="text, record, index"> <template slot="valid" slot-scope="text, record, index">
<div>{{record.valid == 1 ? '' : ''}}</div> <div>{{record.valid == 1 ? '' : ''}}</div>
</template> </template>
<template slot="secrecy" slot-scope="text, record, index"> <template slot="secrecy" slot-scope="text, record, index">
<div>{{record.secrecy == 1 ? '' : ''}}</div> <div>{{record.secrecy == 1 ? '' : ''}}</div>
</template> </template>
<template slot="status" slot-scope="text, record, index"> <template slot="status" slot-scope="text, record, index">
<div>{{record.status == 1 ? '' : ''}}</div> <div>{{record.status == 1 ? '' : ''}}</div>
</template> </template>
<template slot="操作" slot-scope="text, record, index"> <template slot="操作" slot-scope="text, record, index">
<a-button type="link" @click="detail(record)">详情</a-button> <a-button type="link" @click="detail(record)">详情</a-button>
</template> </template>
</a-table> </a-table>
</div> </div>
<a-drawer title="详情" :visible="visible" width="100%" @close="visible = false"> <a-drawer title="详情" :visible="visible" width="100%" @close="visible = false">
<div class="content-box"> <div class="content-box">
...@@ -134,7 +134,7 @@ ...@@ -134,7 +134,7 @@
import image from '@/components/image/thumbImage' import image from '@/components/image/thumbImage'
import { import {
export2Excel export2Excel
} from "@/utils/js/exportExcel"; } from "@/utils/js/exportExcel";
import moment from 'moment' import moment from 'moment'
export default { export default {
data() { data() {
...@@ -145,7 +145,7 @@ ...@@ -145,7 +145,7 @@
size: 10, size: 10,
source: '', source: '',
keyword: null, keyword: null,
time: [moment().format('yyyy-MM-DD'),moment().format('yyyy-MM-DD')], time: [moment().format('yyyy-MM-DD'),moment().format('yyyy-MM-DD')],
reply:'' reply:''
}, },
deviceList: [{ deviceList: [{
...@@ -165,9 +165,9 @@ ...@@ -165,9 +165,9 @@
title: "序号", title: "序号",
width: "70px", width: "70px",
align: 'center', align: 'center',
customRender: (text, record, index) => customRender: (text, record, index) =>
(this.queryform.page - 1) * this.queryform.size + (this.queryform.page - 1) * this.queryform.size +
index + index +
1, 1,
}, },
...@@ -227,9 +227,9 @@ ...@@ -227,9 +227,9 @@
}, },
{ {
title: "所属部门", title: "所属部门",
dataIndex: "dept_name", dataIndex: "reply_dept",
align: 'center', align: 'center',
customRender: (text, record, index) => `${record.dept_name || '--'}` customRender: (text, record, index) => `${record.reply_dept || '--'}`
}, },
{ {
title: "操作", title: "操作",
...@@ -265,14 +265,14 @@ ...@@ -265,14 +265,14 @@
methods: { methods: {
getlist() { getlist() {
getImpossible(this.queryform).then(res => { getImpossible(this.queryform).then(res => {
this.tabledataSource = res.data.data this.tabledataSource = res.data.data
this.pagination.total = res.data.total this.pagination.total = res.data.total
}) })
}, },
changeTablePage(e) { changeTablePage(e) {
this.queryform.page = e.current this.queryform.page = e.current
this.queryform.size = e.pageSize this.queryform.size = e.pageSize
this.getlist() this.getlist()
}, },
onChange(e) { onChange(e) {
this.queryform.reply = e.target.checked ? 0 : '' this.queryform.reply = e.target.checked ? 0 : ''
...@@ -321,7 +321,7 @@ ...@@ -321,7 +321,7 @@
page: 1, page: 1,
size: -1 size: -1
}) })
); );
data = datas.data.data data = datas.data.data
if (!data.length) return; if (!data.length) return;
for (let item of data) { for (let item of data) {
...@@ -336,7 +336,7 @@ ...@@ -336,7 +336,7 @@
this.tHeader, this.tHeader,
this.filterVal, this.filterVal,
data, data,
"填单记录报表" + this.$moment().format("YYYYMMDDHHmmss") "办不成事报表" + this.$moment().format("YYYYMMDDHHmmss")
); );
this.btnLoading = false; this.btnLoading = false;
}, },
...@@ -347,13 +347,13 @@ ...@@ -347,13 +347,13 @@
.form-box { .form-box {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
margin-bottom: 10px; margin-bottom: 10px;
.num-dv{ .num-dv{
display: flex; display: flex;
align-items: center; align-items: center;
.ml20{ .ml20{
margin-left: 20px; margin-left: 20px;
} }
} }
} }
...@@ -367,25 +367,25 @@ ...@@ -367,25 +367,25 @@
margin-right: 10px; margin-right: 10px;
margin-bottom: 10px; margin-bottom: 10px;
} }
} }
/deep/.ant-spin-container{ /deep/.ant-spin-container{
display: block !important; display: block !important;
} }
/deep/.ant-drawer-body { /deep/.ant-drawer-body {
background: #f7f7f7; background: #f7f7f7;
padding: 15px; padding: 15px;
box-sizing: border-box; box-sizing: border-box;
min-height: calc(100vh - 55px); min-height: calc(100vh - 55px);
} }
/deep/td { /deep/td {
text-align: left; text-align: left;
} }
/deep/.ant-descriptions-item-label{ /deep/.ant-descriptions-item-label{
color: #1890ff; color: #1890ff;
} }
.btn-dv { .btn-dv {
......
...@@ -79,28 +79,28 @@ ...@@ -79,28 +79,28 @@
v-if="text.status == 0" v-if="text.status == 0"
color="#108ee9" color="#108ee9"
> >
未签到 {{statusItem[text.status]}}
</a-tag> </a-tag>
<a-tag <a-tag
@click="openDetails(text.id)" @click="openDetails(text.id)"
v-else-if="text.status == 1" v-else-if="text.status == 1"
color="#2db7f5" color="#2db7f5"
> >
排队中 {{statusItem[text.status]}}
</a-tag> </a-tag>
<a-tag <a-tag
@click="openDetails(text.id)" @click="openDetails(text.id)"
v-else-if="text.status == 2" v-else-if="text.status == 2"
color="#f50" color="#f50"
> >
超时未取号 {{statusItem[text.status]}}
</a-tag> </a-tag>
<a-tag <a-tag
@click="openDetails(text.id)" @click="openDetails(text.id)"
v-else-if="text.status == 3" v-else-if="text.status == 3"
color="red" color="red"
> >
已取消 {{statusItem[text.status]}}
</a-tag> </a-tag>
</template> </template>
</a-table> </a-table>
...@@ -144,6 +144,13 @@ let statusItem = { ...@@ -144,6 +144,13 @@ let statusItem = {
2: "超时未取号", 2: "超时未取号",
3: "预约取消", 3: "预约取消",
}; };
const style = {
0: "排队中",
1: "办理中",
2: "办理中",
3: "办理中",
4: "办理完成",
}
export default { export default {
name: "PortalAdminVueMakeRecordReport", name: "PortalAdminVueMakeRecordReport",
data() { data() {
...@@ -231,6 +238,7 @@ export default { ...@@ -231,6 +238,7 @@ export default {
filterVal, filterVal,
tableHeaders, tableHeaders,
statusItem, statusItem,
style,
btnLoading: false, btnLoading: false,
searchForm: { searchForm: {
status: "", status: "",
...@@ -268,10 +276,11 @@ export default { ...@@ -268,10 +276,11 @@ export default {
this.getOrderList(); this.getOrderList();
} }
this.tableSourceData = data.map((v) => { this.tableSourceData = data.map((v) => {
delete v.people.id; v.people && delete v.people.id;
return { ...v, ...v.people }; return { ...v, ...v.people };
}); });
this.total = total; this.total = total;
return this.tableSourceData; return this.tableSourceData;
} }
}, },
...@@ -339,7 +348,7 @@ export default { ...@@ -339,7 +348,7 @@ export default {
for (let item of data) { for (let item of data) {
Object.keys(this.statusItem).forEach((key) => { Object.keys(this.statusItem).forEach((key) => {
if (item.status == key) { if (item.status == key) {
item.status = this.statusItem[key]; item.status = item.status==1?this.style[item.style]:this.statusItem[key];
} }
}); });
} }
...@@ -351,7 +360,7 @@ export default { ...@@ -351,7 +360,7 @@ export default {
for (let item of data) { for (let item of data) {
Object.keys(this.statusItem).forEach((key) => { Object.keys(this.statusItem).forEach((key) => {
if (item.status == key) { if (item.status == key) {
item.status = this.statusItem[key]; item.status = item.status==1?this.style[item.style]:this.statusItem[key];
} }
}); });
} }
......
...@@ -48,8 +48,8 @@ ...@@ -48,8 +48,8 @@
<!-- <p v-for="item of 3">事项1:生育证津贴办理</p> --> <!-- <p v-for="item of 3">事项1:生育证津贴办理</p> -->
</div> </div>
<div class="right_"> <div class="right_">
<span class="status1" v-if="orderInfo.status != 1">未签到</span> <span class="status2" v-if="orderInfo.status == 1">{{style[orderInfo.style]}}</span>
<span class="status2" v-else>排队中</span> <span class="status1" v-else>{{statusItem[orderInfo.status]}}</span>
</div> </div>
</div> </div>
<div class="box2"> <div class="box2">
...@@ -130,12 +130,20 @@ let statusItem = { ...@@ -130,12 +130,20 @@ let statusItem = {
2: "超时未取号", 2: "超时未取号",
3: "预约取消", 3: "预约取消",
}; };
const style = {
0: "排队中",
1: "办理中",
2: "办理中",
3: "办理中",
4: "办理完成",
}
export default { export default {
name: "PortalAdminVueRecordReportdetails", name: "PortalAdminVueRecordReportdetails",
data() { data() {
return { return {
orderStatus, orderStatus,
statusItem, statusItem,
style,
orderInfo: {}, // 预约信息 orderInfo: {}, // 预约信息
}; };
}, },
......
...@@ -45,14 +45,14 @@ ...@@ -45,14 +45,14 @@
<div class="infoBox"> <div class="infoBox">
<span class="infoTitle imgBox">身份证人像面:</span> <span class="infoTitle imgBox">身份证人像面:</span>
<span class="infoContent"> <span class="infoContent">
<img v-if="userInfo.z_img" :src="userInfo.z_img" /> <thumbImage v-if="userInfo.z_img" :src="imgBase+'/'+userInfo.z_img" fileType="img" />
<span v-else>--</span> <span v-else>--</span>
</span> </span>
</div> </div>
<div class="infoBox"> <div class="infoBox">
<span class="infoTitle imgBox">身份证国徽面:</span> <span class="infoTitle imgBox">身份证国徽面:</span>
<span class="infoContent"> <span class="infoContent">
<img v-if="userInfo.b_img" :src="userInfo.z_img" /> <thumbImage v-if="userInfo.b_img" :src="imgBase+'/'+userInfo.b_img" fileType="img" />
<span v-else>--</span> <span v-else>--</span>
</span> </span>
</div> </div>
...@@ -92,8 +92,17 @@ ...@@ -92,8 +92,17 @@
</template> </template>
<script> <script>
import thumbImage from "@/components/image/thumbImage.vue"
export default { export default {
name: "FormDetails", name: "FormDetails",
components:{
thumbImage
},
data(){
return{
imgBase:process.env.VUE_APP_API_PHP_URL
}
},
props: { props: {
visible: { visible: {
type: Boolean, type: Boolean,
......
...@@ -161,7 +161,7 @@ export default { ...@@ -161,7 +161,7 @@ export default {
{ {
title: "是否实名认证", title: "是否实名认证",
align: "center", align: "center",
customRender: (text) => "--", customRender: (text) => text.idcard_IDCardNo?"实名认证":"未实名认证",
// customRender: (text) => text.create_time || "--", // customRender: (text) => text.create_time || "--",
}, },
{ {
......
...@@ -48,6 +48,7 @@ ...@@ -48,6 +48,7 @@
<img v-for="(item,index) in fromData.url" :key="index" <img v-for="(item,index) in fromData.url" :key="index"
:src="process.env.VUE_APP_API_BASE_URL+item"> :src="process.env.VUE_APP_API_BASE_URL+item">
</div> </div>
<div v-else>--</div>
</div> </div>
<div class="infoDetail"> <div class="infoDetail">
<div class="card"> <div class="card">
...@@ -81,7 +82,7 @@ ...@@ -81,7 +82,7 @@
<div class="cardTitle"> <div class="cardTitle">
回复内容<span>(必填)</span> 回复内容<span>(必填)</span>
</div> </div>
<div class="cardContent"></div> <div class="cardContent">{{ fromData.recontent }}</div>
</div> </div>
</div> </div>
</div> </div>
...@@ -90,9 +91,9 @@ ...@@ -90,9 +91,9 @@
position: 'absolute', right: 0, bottom: 0, width: '100%', borderTop: '1px solid #e9e9e9', position: 'absolute', right: 0, bottom: 0, width: '100%', borderTop: '1px solid #e9e9e9',
padding: '10px 16px', background: '#fff', textAlign: 'right', zIndex: 1, padding: '10px 16px', background: '#fff', textAlign: 'right', zIndex: 1,
}"> }">
<a-button type="primary" @click="onClose"> <!-- <a-button type="primary" @click="onClose">
确定 确定
</a-button> </a-button> -->
<a-button :style="{ marginRight: '8px' }" @click="onClose"> <a-button :style="{ marginRight: '8px' }" @click="onClose">
取消 取消
</a-button> </a-button>
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<div class="callRecord-Container"> <div class="callRecord-Container">
<div class="header_box"> <div class="header_box">
<div> <div>
<a-button type="success" @click="toexportTable"> <a-button type="success" @click="handleExportTable" :loading="btnLoading">
<span>{{ tableSelectedRows.length ? "导出" : "导出全部" }}</span> <span>{{ tableSelectedRows.length ? "导出" : "导出全部" }}</span>
</a-button> </a-button>
<b>建议次数:<i>{{JYCount}}</i></b> <b>建议次数:<i>{{JYCount}}</i></b>
...@@ -57,8 +57,38 @@ ...@@ -57,8 +57,38 @@
<script> <script>
import table from "@/mixins/table"; import table from "@/mixins/table";
import FormDetails from "./components/FormDetails.vue"; import FormDetails from "./components/FormDetails.vue";
import {getWLLZList,getWLLZCount,getWLLZInfo} from "@/api/dataAdmin" import {getWLLZList,getWLLZCount,getWLLZInfo} from "@/api/dataAdmin"
import {export2Excel} from "@/utils/js/exportExcel";
const tHeader = [
// 导出的表头名信息
"建议标题",
"建议类型",
"真实姓名",
"联系电话",
"是否公开",
"是否保密",
"提交日期",
"是否回复",
"回复人",
"回复时间",
"所属部门",
]
const filterVal = [
// 导出的表头字段名,需要导出表格字段名
"title",
"type",
"upname",
"upphone",
"valid",
"secrecy",
"create_time",
"status",
"reply_name",
"update_time",
"deptName",
]
export default { export default {
mixins: [table], mixins: [table],
name: "networkForm", name: "networkForm",
...@@ -139,7 +169,7 @@ export default { ...@@ -139,7 +169,7 @@ export default {
{ {
title: "所属部门", title: "所属部门",
align: "center", align: "center",
dataIndex: "dateName", dataIndex: "deptName",
}, },
{ {
title: "操作", title: "操作",
...@@ -159,6 +189,7 @@ export default { ...@@ -159,6 +189,7 @@ export default {
timeList:[],// 时间 timeList:[],// 时间
JYCount:0,//建议次数 JYCount:0,//建议次数
HFCount:0,//回复次数 HFCount:0,//回复次数
btnLoading: false,
}; };
}, },
components: { components: {
...@@ -186,66 +217,64 @@ export default { ...@@ -186,66 +217,64 @@ export default {
this.isReply = false this.isReply = false
this.togetWLLZCount() this.togetWLLZCount()
}, },
// 重写导出 // 导出
toexportTable() { async handleExportTable() {
let tableData = []; this.btnLoading = true;
if (this.tableSelectedRows.length == 0) { let obj = {
getWLLZList({ 1: "部门建议",
page:1, 2: "办事建议",
size:-1, 3: "网站建议",
status:this.isReply?0:"", 4: "我要就错",
type:this.nowType, 5: "我要投诉",
device:this.nowDevice, 6: "我要咨询",
keyword:this.searchName, };
time:this.timeList, let data = [];
}).then((res)=>{ if (this.tableSelectedKeys.length && this.tableSelectedRows.length) {
const {code,data} = res; // 深度克隆避免影响页面表格展示
if(code==1){ data = this.$_.cloneDeep(this.tableSelectedRows);
// 改变输出内容 data.forEach((item) => {
data.data.forEach(item => { Object.keys(obj).forEach((keys) => {
item.type = item.type==1?'部门建议':item.type==2?'办事建议':item.type==3?'网站建议':item.type==4?'我要就错':item.type==5?'我要投诉':'我要咨询'; if (item.type == keys) {
item.valid = item.valid==1?'':''; item.type = obj[keys];
item.secrecy = item.secrecy==1?'':''; }
item.status = item.status==1?'':''; });
}); item.valid == 1?item.valid = "":item.valid = ''
item.secrecy == 1?item.secrecy = "":item.secrecy = ''
tableData = JSON.parse(JSON.stringify(data.data)); item.status == 1?item.status = "":item.status = ''
let tableColumns = JSON.parse(JSON.stringify(this.tableHeaders)); });
let newTableData = tableData.map(item => { } else {
let obj = {}; let datas = this.$_.cloneDeep(
for (let key in item) { await getWLLZList({
obj[key] = item[key]; page: 1,
} size: -1,
return obj; status:this.isReply?0:"",
}) type:this.nowType,
let exprotExcelName = `${this.nowDay} / ${this.nowTime} / ${this.$route['meta']['title'] || '报表信息统计'}`; device:this.nowDevice,
this.exportExcel(tableColumns, newTableData, exprotExcelName); keyword:this.searchName,
} time:this.timeList,
}) })
} else { );
data = datas.data.data
tableData = JSON.parse(JSON.stringify(this.tableSelectedRows)); if (!data.length) return;
tableData.forEach(item => { for (let item of data) {
item.type = item.type==1?'部门建议':item.type==2?'办事建议':item.type==3?'网站建议':item.type==4?'我要就错':item.type==5?'我要投诉':'我要咨询'; Object.keys(obj).forEach((key) => {
item.valid = item.valid==1?'':''; if (item.type == key) {
item.secrecy = item.secrecy==1?'':''; item.type = obj[key];
item.status = item.status==1?'':''; }
}); });
item.valid == 1?item.valid = "":item.valid = ''
let tableColumns = JSON.parse(JSON.stringify(this.tableHeaders)); item.secrecy == 1?item.secrecy = "":item.secrecy = ''
let newTableData = tableData.map(item => { item.status == 1?item.status = "":item.status = ''
let obj = {}; }
for (let key in item) { }
obj[key] = item[key]; export2Excel(
} tHeader,
return obj; filterVal,
}) data,
let exprotExcelName = `${this.nowDay} / ${this.nowTime} / ${this.$route['meta']['title'] || '报表信息统计'}`; "网络理政报表" + this.$moment().format("YYYYMMDDHHmmss")
this.exportExcel(tableColumns, newTableData, exprotExcelName); );
} this.btnLoading = false;
},
},
changeReply(e){ changeReply(e){
this.isReply = e.target.checked this.isReply = e.target.checked
}, },
...@@ -294,7 +323,6 @@ export default { ...@@ -294,7 +323,6 @@ export default {
time:this.timeList, time:this.timeList,
} }
getWLLZList(params).then((res)=>{ getWLLZList(params).then((res)=>{
console.log(res);
const {code,data} = res; const {code,data} = res;
if(code==1){ if(code==1){
this.tableSourceData = data.data this.tableSourceData = data.data
......
<template> <template>
<div class="handling" ref="handling"> <div class="handling" ref="handling">
<a-drawer <a-drawer :destroyOnClose="true" :title="modalInfo.title" :width="modalInfo.width" :visible="modalInfo.visible"
:destroyOnClose="true" @close="modalClose" @getContainer="() => $refs.handling">
:title="modalInfo.title"
:width="modalInfo.width"
:visible="modalInfo.visible"
@close="modalClose"
@getContainer="() => $refs.handling"
>
<div class="headerInfo"> <div class="headerInfo">
<!-- 头部耗时部分 --> <!-- 头部耗时部分 -->
<p> <p>
<span <span>总耗时:{{ dataList.alltime || "--" }}
>总耗时:{{ dataList.alltime || "--" }} <i v-show="dataList.alltime &&
<i compareTime(dataList.p_alltime, dataList.alltime)
v-show=" " class="fa fa-long-arrow-down"></i>
dataList.alltime &&
compareTime(dataList.p_alltime, dataList.alltime)
"
class="fa fa-long-arrow-down"
></i>
</span> </span>
<span <span>等待时间:{{ dataList.waittime || "--" }}
>等待时间:{{ dataList.waittime || "--" }} <i v-show="dataList.waittime &&
<i compareTime(dataList.p_waittime, dataList.waittime)
v-show=" " class="fa fa-long-arrow-down"></i>
dataList.waittime &&
compareTime(dataList.p_waittime, dataList.waittime)
"
class="fa fa-long-arrow-down"
></i>
</span> </span>
<span <span>办理时间:{{ dataList.bltime || "--" }}
>办理时间:{{ dataList.bltime || "--" }} <i v-show="dataList.bltime &&
<i compareTime(dataList.p_bltime, dataList.bltime)
v-show=" " class="fa fa-long-arrow-down"></i>
dataList.bltime &&
compareTime(dataList.p_bltime, dataList.bltime)
"
class="fa fa-long-arrow-down"
></i>
</span> </span>
</p> </p>
<p> <p>
...@@ -49,12 +28,7 @@ ...@@ -49,12 +28,7 @@
</p> </p>
</div> </div>
<div :class="returnScolor">{{ $codeMap.queueState[dataList.style] }}</div> <div :class="returnScolor">{{ $codeMap.queueState[dataList.style] }}</div>
<a-steps <a-steps direction="vertical" size="small" :current="approveLs.length" class="steps_box">
direction="vertical"
size="small"
:current="approveLs.length"
class="steps_box"
>
<a-step :disabled="true" class="step_box"> <a-step :disabled="true" class="step_box">
<div class="icon_box" slot="icon"></div> <div class="icon_box" slot="icon"></div>
<div class="title_box" slot="title"> <div class="title_box" slot="title">
...@@ -62,27 +36,12 @@ ...@@ -62,27 +36,12 @@
</div> </div>
<div class="description_box" slot="description"> <div class="description_box" slot="description">
<div class="details"> <div class="details">
<span <span><i class="lable">申报人:</i>{{ dataList.people_name || "--" }}</span>
><i class="lable">申报人:</i <span><i class="lable">取号时间:</i>{{ dataList.taketime || "--" }}</span>
>{{ dataList.people_name || "--" }}</span <span><i class="lable">排队编码:</i>{{ dataList.flownum || "--" }}</span>
> <span><i class="lable">取号方式:</i>{{ dataList.wy_signin === 0 ? '现场取号' : '在线取号' || "--" }}</span>
<span <span><i class="lable">注册方式:</i>{{ $codeMap.register_type[dataList.register_type] || "--" }}</span>
><i class="lable">取号时间:</i <span><i class="lable">取号设备:</i>{{ dataList.take_name || "--" }}</span>
>{{ dataList.taketime || "--" }}</span
>
<span
><i class="lable">排队编码:</i
>{{ dataList.flownum || "--" }}</span
>
<span
><i class="lable">取号方式:</i
>{{ $codeMap.takeNumWay[dataList.wy_signin] || "--" }}</span
>
<span><i class="lable">注册方式:</i>{{ "--" }}</span>
<span
><i class="lable">取号设备:</i
>{{ dataList.take_name || "--" }}</span
>
</div> </div>
</div> </div>
</a-step> </a-step>
...@@ -93,22 +52,10 @@ ...@@ -93,22 +52,10 @@
</div> </div>
<div class="description_box" slot="description"> <div class="description_box" slot="description">
<div class="details"> <div class="details">
<span <span><i class="lable">办理窗口:</i>{{ dataList.window_name || "--" }}</span>
><i class="lable">办理窗口:</i <span><i class="lable">办理开始时间:</i>{{ dataList.calltime || "--" }}</span>
>{{ dataList.window_name || "--" }}</span <span><i class="lable">工作人员:</i>{{ dataList.workman_name || "--" }}</span>
> <span><i class="lable">叫号设备:</i>{{ dataList.call_name || "--" }}</span>
<span
><i class="lable">办理开始时间:</i
>{{ dataList.calltime || "--" }}</span
>
<span
><i class="lable">工作人员:</i
>{{ dataList.workman_name || "--" }}</span
>
<span
><i class="lable">叫号设备:</i
>{{ dataList.call_name || "--" }}</span
>
</div> </div>
</div> </div>
</a-step> </a-step>
...@@ -119,10 +66,7 @@ ...@@ -119,10 +66,7 @@
</div> </div>
<div class="description_box" slot="description"> <div class="description_box" slot="description">
<div class="details"> <div class="details">
<span <span><i class="lable">办理结束时间:</i>{{ dataList.endtime || "--" }}</span>
><i class="lable">办理结束时间:</i
>{{ dataList.endtime || "--" }}</span
>
</div> </div>
</div> </div>
</a-step> </a-step>
...@@ -176,7 +120,7 @@ export default { ...@@ -176,7 +120,7 @@ export default {
} }
}, },
}, },
mounted() {}, mounted() { },
methods: { methods: {
modalClose() { modalClose() {
...@@ -375,7 +319,7 @@ export default { ...@@ -375,7 +319,7 @@ export default {
} }
/deep/.ant-steps-item { /deep/.ant-steps-item {
& + .ant-steps-item { &+.ant-steps-item {
margin-top: 25px !important; margin-top: 25px !important;
} }
} }
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -282,7 +282,7 @@ ...@@ -282,7 +282,7 @@
<arguments> <arguments>
<argument></argument> <argument></argument>
</arguments> </arguments>
<workingDirectory>${project.parent.basedir}/portal-manager-ui/admin</workingDirectory> <workingDirectory>${project.parent.basedir}/${project.artifactId}-ui/admin</workingDirectory>
</configuration> </configuration>
</execution> </execution>
...@@ -298,7 +298,7 @@ ...@@ -298,7 +298,7 @@
<argument>run</argument> <argument>run</argument>
<arguments>${package.environment}</arguments> <arguments>${package.environment}</arguments>
</arguments> </arguments>
<workingDirectory>${project.parent.basedir}/portal-manager-ui/admin</workingDirectory> <workingDirectory>${project.parent.basedir}/${project.artifactId}-ui/admin</workingDirectory>
</configuration> </configuration>
</execution> </execution>
</executions> </executions>
......
...@@ -159,7 +159,6 @@ public class AccessLogFilter implements GlobalFilter, Ordered { ...@@ -159,7 +159,6 @@ public class AccessLogFilter implements GlobalFilter, Ordered {
ServerRequest serverRequest = ServerRequest.create(exchange, messageReaders); ServerRequest serverRequest = ServerRequest.create(exchange, messageReaders);
Mono<String> modifiedBody = serverRequest.bodyToMono(String.class) Mono<String> modifiedBody = serverRequest.bodyToMono(String.class)
.flatMap(body -> { .flatMap(body -> {
log.info("decoratedRequest 0001111");
accessLogPdu.setRequestData(body); accessLogPdu.setRequestData(body);
return Mono.just(body); return Mono.just(body);
}); });
...@@ -207,12 +206,11 @@ public class AccessLogFilter implements GlobalFilter, Ordered { ...@@ -207,12 +206,11 @@ public class AccessLogFilter implements GlobalFilter, Ordered {
*/ */
private ServerHttpRequestDecorator requestDecorate(ServerWebExchange exchange, HttpHeaders headers, private ServerHttpRequestDecorator requestDecorate(ServerWebExchange exchange, HttpHeaders headers,
CachedBodyOutputMessage outputMessage) { CachedBodyOutputMessage outputMessage) {
log.info("decoratedRequest 2");
return new ServerHttpRequestDecorator(exchange.getRequest()) { return new ServerHttpRequestDecorator(exchange.getRequest()) {
@Override @Override
public HttpHeaders getHeaders() { public HttpHeaders getHeaders() {
long contentLength = headers.getContentLength(); long contentLength = headers.getContentLength();
log.info("decoratedRequest contentLength:" + contentLength); log.debug("decoratedRequest contentLength:" + contentLength);
HttpHeaders httpHeaders = new HttpHeaders(); HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.putAll(super.getHeaders()); httpHeaders.putAll(super.getHeaders());
if (contentLength > 0) { if (contentLength > 0) {
......
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