Commit ffae5126 authored by “yiyousong”'s avatar “yiyousong”
parents d88ba78d f889ca8e
......@@ -184,3 +184,11 @@ CREATE TABLE mortals_sys_app_category(
`updateTime` datetime COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='自助终端应用分类';
-- ----------------------------
2023-7-05
-- ----------------------------
ALTER TABLE mortals_sys_app_category ADD COLUMN `cover` varchar(256) DEFAULT '' COMMENT '封面' AFTER sort;
ALTER TABLE mortals_sys_app_category ADD COLUMN `remark` varchar(256) DEFAULT '' COMMENT '备注' AFTER cover;
......@@ -7,38 +7,46 @@ import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.app.model.vo.AppCategoryVo;
import lombok.Data;
/**
* 自助终端应用分类实体对象
*
* @author zxfei
* @date 2023-06-15
*/
* 自助终端应用分类实体对象
*
* @author zxfei
* @date 2023-07-05
*/
@Data
public class AppCategoryEntity extends AppCategoryVo {
private static final long serialVersionUID = 1L;
/**
* 站点Id
*/
* 站点Id
*/
private Long siteId;
/**
* 站点名称
*/
* 站点名称
*/
private String siteName;
/**
* 分类编码
*/
* 分类编码
*/
private String categoryCode;
/**
* 分类名称
*/
* 分类名称
*/
private String categoryName;
/**
* 排序字段
*/
* 排序字段
*/
private Integer sort;
/**
* 封面
*/
private String cover;
/**
* 备注
*/
private String remark;
@Override
public int hashCode() {
return this.getId().hashCode();
return this.getId().hashCode();
}
@Override
public boolean equals(Object obj) {
......@@ -46,7 +54,7 @@ public class AppCategoryEntity extends AppCategoryVo {
if (obj instanceof AppCategoryEntity) {
AppCategoryEntity tmp = (AppCategoryEntity) obj;
if (this.getId() == tmp.getId()) {
return true;
return true;
}
}
return false;
......@@ -54,14 +62,18 @@ public class AppCategoryEntity extends AppCategoryVo {
public void initAttrValue(){
this.siteId = -1L;
this.siteId = -1L;
this.siteName = "";
this.categoryCode = "";
this.siteName = "";
this.categoryName = "";
this.categoryCode = "";
this.sort = 0;
this.categoryName = "";
this.cover = "";
this.sort = 0;
this.remark = "";
}
}
\ No newline at end of file
......@@ -149,14 +149,6 @@ public class DeptServiceImpl extends AbstractCRUDCacheServiceImpl<DeptDao, DeptE
deptEntity.setCreateUserId(1L);
deptService.save(deptEntity, context);
}
/* else {
//更新
deptEntity.setName(deptName);
deptEntity.setSource(SourceEnum.政务网.getValue());
deptEntity.setUpdateTime(new Date());
deptEntity.setUpdateUserId(1L);
deptService.update(deptEntity, context);
}*/
sortN++;
}
} else {
......
......@@ -185,6 +185,7 @@ public class SiteServiceImpl extends AbstractCRUDCacheServiceImpl<SiteDao, SiteE
@Override
protected void saveAfter(SiteEntity entity, Context context) throws AppException {
super.saveAfter(entity, context);
//刷新站点树
//ThreadPool.getInstance().execute(new SyncTreeSiteThread(this,context));
Rest<String> rest = userFeign.synchSiteAuth();
......@@ -200,7 +201,7 @@ public class SiteServiceImpl extends AbstractCRUDCacheServiceImpl<SiteDao, SiteE
//更新同步部门相关
deptService.syncDeptBySiteId(entity, context);
log.info("站点更新4");
super.saveAfter(entity, context);
}
......@@ -324,6 +325,7 @@ public class SiteServiceImpl extends AbstractCRUDCacheServiceImpl<SiteDao, SiteE
@Override
protected void updateAfter(SiteEntity entity, Context context) throws AppException {
super.updateAfter(entity,context);
//刷新站点树
log.info("update1");
Rest<String> rest = userFeign.synchSiteAuth();
......
......@@ -69,13 +69,9 @@ public class WindowServiceImpl extends AbstractCRUDCacheServiceImpl<WindowDao, W
Map<Long, List<WorkmanEntity>> workmanCollect = workmanService.find(new WorkmanQuery()).stream().filter(f -> f.getWindowId() != null).collect(Collectors.groupingBy(x -> x.getWindowId()));
Map<Long, List<WindowBusinessEntity>> windowBusinessCollect = windowBusinessService.find(new WindowBusinessQuery())
.stream().filter(f -> f.getWindowId() != null).collect(Collectors.groupingBy(x -> x.getWindowId()));
Map<Long, List<WindowMatterEntity>> windowMatterCollect = windowMatterService.find(new WindowMatterQuery())
.stream().filter(f -> f.getWindowId() != null).collect(Collectors.groupingBy(x -> x.getWindowId()));
Map<Long, WindowHallEntity> windowHallMap = windowHallService.find(new WindowHallQuery()).parallelStream().collect(Collectors.toMap(x -> x.getWindowId(), y -> y, (o, n) -> n));
list.stream().peek(item -> {
if (!ObjectUtils.isEmpty(workmanCollect.get(item.getId()))) {
item.setWorkmanList(workmanCollect.get(item.getId()));
......@@ -83,7 +79,6 @@ public class WindowServiceImpl extends AbstractCRUDCacheServiceImpl<WindowDao, W
if (!ObjectUtils.isEmpty(windowBusinessCollect.get(item.getId()))) {
item.setWindowBusinessList(windowBusinessCollect.get(item.getId()));
}
if (!ObjectUtils.isEmpty(windowMatterCollect.get(item.getId()))) {
item.setWindowMatterList(windowMatterCollect.get(item.getId()));
}
......@@ -92,7 +87,6 @@ public class WindowServiceImpl extends AbstractCRUDCacheServiceImpl<WindowDao, W
item.setHallId(windowHallEntity.getHallId());
item.setHallName(windowHallEntity.getHallName());
}
}).count();
super.findAfter(params, pageInfo, context, list);
}
......@@ -109,7 +103,6 @@ public class WindowServiceImpl extends AbstractCRUDCacheServiceImpl<WindowDao, W
}
WindowBusinessQuery windowBusinessQuery = new WindowBusinessQuery();
//windowBusinessQuery.setSiteBusinessIdList(businessIdList);
//先删除后再新增
windowBusinessQuery.setWindowId(windowId);
Long[] ids = windowBusinessService.find(windowBusinessQuery).stream()
......@@ -215,6 +208,13 @@ public class WindowServiceImpl extends AbstractCRUDCacheServiceImpl<WindowDao, W
@Override
protected void saveAfter(WindowEntity entity, Context context) throws AppException {
super.saveAfter(entity, context);
//判断是否存在id,如果不存在 查询后获取
if(entity.newEntity()){
WindowEntity windowEntity = this.selectOne(new WindowQuery().siteId(entity.getSiteId()).fromnum(entity.getFromnum()));
if(!ObjectUtils.isEmpty(windowEntity)){
entity.setId(windowEntity.getId());
}
}
pushChangeMsg(entity.getId());
}
......
......@@ -167,10 +167,8 @@ public class WindowController extends BaseCRUDJsonBodyMappingController<WindowSe
*/
@Override
public void doImportDataBefore(List<WindowEntity> list, boolean updateSupport, Context context) throws AppException {
String siteId = request.getParameter("siteId");
String deptId = request.getParameter("deptId");
log.info("siteId:{}", siteId);
SiteEntity siteEntity = null;
DeptEntity deptEntity = null;
if (!ObjectUtils.isEmpty(siteId)) {
......
......@@ -9,32 +9,18 @@ import com.mortals.framework.annotation.UnAuth;
import com.mortals.framework.common.Rest;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.framework.util.DateUtils;
import com.mortals.framework.util.FileUtil;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.framework.web.BasePhpCRUDJsonMappingController;
import com.mortals.xhx.base.framework.annotation.Operlog;
import com.mortals.xhx.base.system.param.service.ParamService;
import com.mortals.xhx.base.system.role.model.RoleQuery;
import com.mortals.xhx.base.system.role.model.RoleUserEntity;
import com.mortals.xhx.base.system.role.model.RoleUserQuery;
import com.mortals.xhx.base.system.role.service.RoleService;
import com.mortals.xhx.base.system.role.service.RoleUserService;
import com.mortals.xhx.base.system.upload.service.UploadService;
import com.mortals.xhx.base.system.user.model.UserEntity;
import com.mortals.xhx.base.system.user.model.UserQuery;
import com.mortals.xhx.base.system.user.service.UserService;
import com.mortals.xhx.common.code.OnlineEnum;
import com.mortals.xhx.module.dept.model.DeptEntity;
import com.mortals.xhx.module.dept.service.DeptService;
import com.mortals.xhx.module.model.model.ModelQuery;
import com.mortals.xhx.module.model.service.ModelService;
import com.mortals.xhx.module.site.model.SiteEntity;
import com.mortals.xhx.module.site.service.SiteService;
import com.mortals.xhx.module.window.model.WindowEntity;
import com.mortals.xhx.module.window.service.WindowService;
import com.mortals.xhx.module.workman.model.WorkmanEntity;
import com.mortals.xhx.module.workman.model.WorkmanQuery;
import com.mortals.xhx.module.workman.service.WorkmanService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -45,7 +31,6 @@ import java.io.IOException;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 工作人员
......@@ -107,6 +92,13 @@ public class WorkmanController extends BaseCRUDJsonBodyMappingController<Workman
WorkmanEntity workmanEntity = this.service.doLogin(query.getLoginName(), query.getLoginPwd(), ip);
workmanEntity.setLastLoginAddress(ip);
workmanEntity.setLastLoginTime(new Date());
if(query.getWindowId()!=null) {
workmanEntity.setWindowId(query.getWindowId());
WindowEntity windowEntity = windowService.get(query.getWindowId());
if(windowEntity!=null){
workmanEntity.setWindowName(windowEntity.getName());
}
}
this.service.getDao().update(workmanEntity);
if (query.getSiteId() != workmanEntity.getSiteId()) {
throw new AppException("当前工作人员不在当前站点下!");
......
......@@ -11,3 +11,8 @@ export function getCustomer(params) {
export function windowList(params) {
return http.post(`${proURL}/base/window/list`, params);
}
// 图片作品
export function picInfoList(params) {
return http.post(`${baseURL}/eas/customer/work/design/picture/list`, params);
}
\ No newline at end of file
......@@ -60,7 +60,7 @@
methods: {
getData() {
this.queryform.dateTimeStart = this.time ? this.time[0] : null
this.queryform.dateTimeStart = this.time ? this.time[1] : null
this.queryform.dateTimeEnd = 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)
......@@ -128,7 +128,7 @@
let myChart = echarts.init(chartDom);
myChart.setOption({
title: {
text: '取号类型分析',
text: this.queryform.productId==1?'取号类型分析':'功能使用分布',
left: 'center'
},
tooltip: {
......
......@@ -13,10 +13,11 @@
</a-col>
<a-col :span="10">
<a-form layout="horizontal" :model="formState" :label-col="{span: 4}" :wrapper-col="{span: 20}">
<a-form-item label="流水号:">{{ formState.flownum }}</a-form-item>
<a-form-item label="关联排号:">{{ formState.device_name }}</a-form-item>
<a-form-item label="流水号:">{{ formState.flownum?formState.flownum:'--' }}</a-form-item>
<a-form-item label="关联排号:">{{ formState.device_name?formState.device_name:'--' }}</a-form-item>
<a-form-item label="受理区域:">
<a-tag v-for="(item, index) in formState.region" :key="index">{{ item }}</a-tag>
<span v-if="formState.region.length<1">--</span>
</a-form-item>
<a-form-item label="是否延时:">{{ formState.isweek_work ? '是' : '否' }}</a-form-item>
<a-form-item label="优先叫号:">{{ formState.first ? '是' : '否' }}</a-form-item>
......@@ -25,12 +26,13 @@
<a-col :span="10">
<a-form layout="horizontal" :model="formState" :label-col="{span: 4}" :wrapper-col="{span: 20}">
<a-form-item label="业务级别:">{{ formState.level ? '二级业务' : '一级业务' }}</a-form-item>
<a-form-item label="父级业务:">{{ formState.parent_name }}</a-form-item>
<a-form-item label="父级业务:">{{ formState.parent_name?formState.parent_name:'--' }}</a-form-item>
<a-form-item label="关联事项:">
<a-tag v-for="(item, index) in formState.matter" :key="index">{{ item.matterName }}</a-tag>
<span v-if="formState.matter.length<1">--</span>
</a-form-item>
<a-form-item label="是否预约:">{{ formState.canorder ? '允许' : '不允许'}}</a-form-item>
<a-form-item label="验证方式:">{{testWay.join(',')}}</a-form-item>
<a-form-item label="验证方式:">{{testWay.length>0?testWay.join(','):'--'}}</a-form-item>
</a-form>
</a-col>
</a-row>
......@@ -167,7 +169,7 @@ import {getBusInfoById} from '@/api/dataActuary.js'
margin-bottom: .9375rem;
}
.f_40{
font-size: 2.5rem;
font-size: 2rem;
}
.f_center{
text-align: center;
......
......@@ -78,7 +78,7 @@
</a-col>
<a-col :span="20">
<div class="table_title">排队业务分布情况</div>
<a-table :row-key="record => record.key" :dataSource="lineUp" :columns="lineUpColumns" :pagination="false" :scroll="{ x: 1400, y: 0 }"/>
<a-table :row-key="(record,index) => index" :dataSource="lineUp" :columns="lineUpColumns" :pagination="false" :scroll="{ x: 1400, y: 0 }"/>
</a-col>
</a-row>
</a-card>
......@@ -110,7 +110,7 @@
</a-col>
<a-col :span="20">
<div>预约业务分布情况</div>
<a-table :row-key="record => record.id" :dataSource="appointment" :columns="appointmentColumns" :pagination="false" :scroll="{ x: 1400, y: 0 }"/>
<a-table :row-key="(record,index) => index" :dataSource="appointment" :columns="appointmentColumns" :pagination="false" :scroll="{ x: 1400, y: 0 }"/>
</a-col>
</a-row>
</a-card>
......@@ -125,14 +125,14 @@
<template #extra>
<a-select
ref="select"
v-model:value="takeNumberTopDate"
v-model="takeNumberTopDate"
:options="options"
style="width: 120px"
@change="changeTakeNumberTopDate"
>
</a-select>
</template>
<a-table :row-key="record => record.index" :dataSource="takeNumberTop" :columns="takeNumberTopColumns" :pagination="false">
<a-table :row-key="(record,index) => index" :dataSource="takeNumberTop" :columns="takeNumberTopColumns" :pagination="false">
<span slot="index" slot-scope="text, record, index">
{{ index + 1 }}
</span>
......@@ -153,14 +153,14 @@
<template #extra>
<a-select
ref="select"
v-model:value="appointmentTopDate"
v-model="appointmentTopDate"
:options="options"
style="width: 120px"
@change="changeAppointmentTopDate"
>
</a-select>
</template>
<a-table :row-key="record => record.index" :dataSource="appointmentTop" :columns="appointmentTopColumns" :pagination="false">
<a-table :row-key="(record,index) => index" :dataSource="appointmentTop" :columns="appointmentTopColumns" :pagination="false">
<span slot="index" slot-scope="text, record, index">
{{ index + 1 }}
</span>
......@@ -183,14 +183,14 @@
<template #extra>
<a-select
ref="select"
v-model:value="takeNumberLessDate"
v-model="takeNumberLessDate"
:options="options"
style="width: 120px"
@change="changeTakeNumberLessDate"
>
</a-select>
</template>
<a-table :row-key="record => record.index" :dataSource="takeNumberLess" :columns="takeNumberLessColumns" :pagination="false">
<a-table :row-key="(record,index) => index" :dataSource="takeNumberLess" :columns="takeNumberLessColumns" :pagination="false">
<span slot="index" slot-scope="text, record, index">
{{ index + 1 }}
</span>
......@@ -211,14 +211,14 @@
<template #extra>
<a-select
ref="select"
v-model:value="appointmentLessDate"
v-model="appointmentLessDate"
:options="options"
style="width: 120px"
@change="changeAppointmentLessDate"
>
</a-select>
</template>
<a-table :row-key="record => record.index" :dataSource="appointmentLess" :columns="appointmentLessColumns" :pagination="false">
<a-table :row-key="(record,index) => index" :dataSource="appointmentLess" :columns="appointmentLessColumns" :pagination="false">
<span slot="index" slot-scope="text, record, index">
{{ index + 1 }}
</span>
......@@ -422,7 +422,7 @@ import moment from "moment"
key:'index',
title: '排名',
dataIndex: 'index',
scopedSlots: { customRender: 'index' },
// scopedSlots: { customRender: 'index' },
},
{
key:'businessName',
......@@ -433,16 +433,20 @@ import moment from "moment"
key:'number',
title: '办理数量',
dataIndex: 'nums',
scopedSlots: { customRender: 'nums' },
// scopedSlots: { customRender: 'nums' },
},
],
takeNumberTopDate: '0',
appointmentTopDate: '0',
takeNumberLessDate: '0',
appointmentLessDate: '0',
siteid:localStorage.getItem("siteId")
}
},
mounted(){
this.$bus.$on("changeSite", () => {
this.siteid = localStorage.getItem("siteId")
});
this.getAllData()
this.getTakeLineData()
this.getAppointmentData()
......@@ -451,11 +455,22 @@ import moment from "moment"
this.getTakeNumberLess()
this.getAppointmentLess()
},
watch:{
siteid(){
this.getAllData()
this.getTakeLineData()
this.getAppointmentData()
this.getTakeNumberTop()
this.getAppointmentTop()
this.getTakeNumberLess()
this.getAppointmentLess()
}
},
methods:{
//获取全部基本数据
async getAllData() {
this.nowDate= moment(new Date()).format('YYYY-MM-DD h:mm:ss')
const res = await getAllInfo()
const res = await getAllInfo({siteid:this.siteid})
if(res.code == 1){
this.situation= res.data
this.firstPie= {
......@@ -474,7 +489,7 @@ import moment from "moment"
},
// 排队取号
async getTakeLineData() {
const res = await getBusinessInfo()
const res = await getBusinessInfo({siteid:this.siteid})
if(res.code == 1){
let arr= res.data.info
let newArr= []
......@@ -503,7 +518,7 @@ import moment from "moment"
},
// 预约情况
async getAppointmentData() {
const res = await getWyInfo()
const res = await getWyInfo({siteid:this.siteid})
if(res.code == 1){
let arr= res.data.info
let newArr= []
......@@ -535,7 +550,7 @@ import moment from "moment"
if(val== undefined){
val = 0
}
const res = getTopBusiness({selected: val,sort: 'DESC'})
const res = await getTopBusiness({selected: val,sort: 'DESC',siteid:this.siteid})
if(res.code == 1) {
this.takeNumberTop= res.data
}
......@@ -545,7 +560,7 @@ import moment from "moment"
if(val== undefined){
val = 0
}
const res = getTopBusiness({selected: val,sort: 'ASC'})
const res = await getTopBusiness({selected: val,sort: 'ASC',siteid:this.siteid})
if(res.code == 1) {
this.takeNumberLess= res.data
}
......@@ -555,7 +570,7 @@ import moment from "moment"
if(val== undefined){
val = 0
}
const res = getTopWy({selected: val,sort: 'DESC'})
const res = await getTopWy({selected: val,sort: 'DESC',siteid:this.siteid})
if(res.code == 1) {
this.appointmentTop= res.data
}
......@@ -565,7 +580,7 @@ import moment from "moment"
if(val== undefined){
val = 0
}
const res = getTopWy({selected: val,sort: 'ASC'})
const res = await getTopWy({selected: val,sort: 'ASC',siteid:this.siteid})
if(res.code == 1) {
this.appointmentLess= res.data
}
......
......@@ -40,13 +40,13 @@ export default {
businessName: '',
dataSource: [],
sourceList:[],
dataList: [],
// dataList: [],
btnShow: false,
}
},
mounted() {
this.getList()
// this.getList()
},
created(){
},
......@@ -69,15 +69,15 @@ export default {
this.btnShow= false
this.businessName= ''
},
async getList(){
await axios.get('http://192.168.0.98:8090/inter/statistic/busList',{params: {siteid: 1}}).then((res)=>{
if(res && res.status==200){
res.data.data.forEach(item=>{
this.dataList.push(item.name)
})
}
})
},
// async getList(){
// await axios.get('http://192.168.0.98:8090/inter/statistic/busList',{params: {siteid: 1}}).then((res)=>{
// if(res && res.status==200){
// res.data.data.forEach(item=>{
// this.dataList.push(item.name)
// })
// }
// })
// },
onSearch: _.debounce(function(val){
this.dataSource= []
userSiteBus({siteid: localStorage.getItem('siteId'),bus_name:val}).then(res => {
......
......@@ -36,10 +36,10 @@
}" :scroll="{ y: 590 }" :pagination="tablePagination" @change="pagTableChange" :loading="tableLoading"
:columns="tableHeaders" :dataSource="tableList">
<template slot="zhenshixingming" slot-scope="text, record, index">
<a-button type="link" @click="openUserDetails">{{ text }}</a-button>
<a-button type="link" @click="openUserDetails(record)">{{ text?text:'--' }}</a-button>
</template>
<template slot="tupianzuopinshuliang" slot-scope="text, record, index">
<a-button type="link" @click="openPicWorks">{{ text }}</a-button>
<a-button type="link" @click="openPicWorks(record.id)">{{ (text || text==0)?text:'--' }}</a-button>
</template>
</a-table>
<PicWorks ref="PicWorks" />
......@@ -87,27 +87,36 @@ export default {
{
title: "真实姓名",
align: "center",
dataIndex: "custName"
dataIndex: "custName",
scopedSlots: {
customRender: "zhenshixingming",
},
},
{
title: "联系电话",
align: "center",
dataIndex: "contactTelphone",
customRender: (text) => `${text?text:'--'}`,
},
{
title: "单位名称",
align: "center",
dataIndex: "organization",
customRender: (text) => `${text?text:'--'}`,
},
{
title: "图片作品数量",
align: "center",
dataIndex: "customerDesignPictures",
scopedSlots: {
customRender: "tupianzuopinshuliang",
},
},
{
title: "视频作品数量",
align: "center",
dataIndex: "customerDesignVideos",
customRender: (text) => `${(text || text==0)?text:'--'}`,
},
{
title: "会员等级",
......@@ -119,6 +128,7 @@ export default {
title: "最近登录时间",
align: "center",
dataIndex: "lastLoginTime",
customRender: (text) => `${text?text:'--'}`,
},
{
title: "使用状态",
......@@ -264,14 +274,16 @@ export default {
return "type0";
}
},
openPicWorks() {
openPicWorks(id) {
this.$refs.PicWorks.modalInfo.title = "作品数量";
this.$refs.PicWorks.modalInfo.visible = true;
this.$refs.PicWorks.modalInfo.width = "32%";
this.$refs.PicWorks.modalInfo.id = id
},
openUserDetails() {
openUserDetails(record) {
this.$refs.UserDetails.modalInfo.title = "客户详情";
this.$refs.UserDetails.modalInfo.visible = true;
this.$refs.UserDetails.modalInfo.record = record;
},
},
};
......
......@@ -6,18 +6,18 @@
:visible="modalInfo.visible"
@close="modalClose"
>
<div class="headerInfo"><span>作品数量</span><i>4</i></div>
<div class="headerInfo"><span>作品数量</span><i>{{tableList.length}}</i></div>
<div class="zuoping_box">
<div class="_list" v-for="item of 5">
<div class="_list" v-for="item in tableList" :key="item.id">
<div class="_top">
<img class="logo_img" src="~@/assets/images/logo.png" alt="" />
<h1>
<p>我要开公司</p>
<p>创建于:2022-05-23 20:00:00</p>
<p>{{item.workDesignName}}</p>
<p>创建于:{{item.updateTimeStr}}</p>
</h1>
</div>
<div class="_bottom">
<img class="works_img" src="~@/assets/images/u22.png" alt="" />
<img class="works_img" :src="baseurl+'/'+item.previewUrl" alt="" />
</div>
</div>
</div>
......@@ -26,17 +26,41 @@
<script>
import modal from "../mixins/modal";
import {picInfoList} from "@/api/customer";
export default {
mixins: [modal],
name: "PortalAdminVuePicWorks",
data() {
return {};
return {
modalInfo:{},
tableList:[],
baseurl:'http://8.136.255.30'
};
},
mounted() {},
mounted() {
},
watch:{
'modalInfo.visible'(newval){
if(newval){
this.getPicInfo(this.modalInfo.id)
}
}
},
methods: {
async getPicInfo(id){
let res = await picInfoList({
customerId:id
});
console.log(res);
if (res.code == 1) {
let {data} = res.data;
this.tableList = data;
}
},
openPicWorks() {
this.$emit("openPicWorks");
},
......
......@@ -6,12 +6,60 @@
:visible="modalInfo.visible"
@close="modalClose"
>
<div class="box1" v-for="item of 3">
<p class="details1" v-for="item of 3">
<span>真实姓名</span><i>刘德华</i>
<div class="box1">
<p class="details1">
<span>真实姓名</span><i>{{modalInfo.record.custName}}</i>
</p>
<p class="details2" v-for="item of 3">
<span>图片作品数量</span><i @click="openPicWorks">4</i>
<p class="details1">
<span>性别</span><i>{{modalInfo.record.sex?modalInfo.record.sex%2==0?'':'':'--'}}</i>
</p>
<p class="details1">
<span>联系电话</span><i>{{modalInfo.record.contactTelphone}}</i>
</p>
<p class="details1">
<span>单位名称</span><i>{{modalInfo.record.organization}}</i>
</p>
<p class="details1">
<span>会员等级</span><i>{{modalInfo.record.memberLevel==0?'未开启':modalInfo.record.memberLevel==1?'试用客户':modalInfo.record.memberLevel==2?'VIP':modalInfo.record.memberLevel==3?'设计师':'--'}}</i>
</p>
<p class="details1">
<span>邮箱</span><i>{{modalInfo.record.mailbox?modalInfo.record.mailbox:'未填写'}}</i>
</p>
<p class="details1">
<span>职位</span><i>{{modalInfo.record.job?modalInfo.record.job:'未填写'}}</i>
</p>
<p class="details1">
<span>客户来源</span><i>{{modalInfo.record.customerSrc?modalInfo.record.customerSrc==1?'申请试用':'顾问签单':'未填写'}}</i>
</p>
<p class="details1">
<span>企业顾问</span><i>{{modalInfo.record.enterpriseConsultant}}</i>
</p>
<p class="details1">
<span>微信号</span><i>{{modalInfo.record.custName}}</i>
</p>
</div>
<div class="box1">
<p class="details1">
<span>登录账号</span><i>{{modalInfo.record.loginName}}</i>
</p>
<p class="details1">
<span>登录密码</span><i>{{modalInfo.record.password?modalInfo.record.password.replace(/\S/g, "*"):''}}</i>
</p>
</div>
<div class="box1">
<p class="details2">
<span>图片作品数量</span><i @click="openPicWorks(modalInfo.record.id)">{{modalInfo.record.customerDesignPictures}}</i>
</p>
<p class="details1">
<span>视屏作品数量</span><i>{{modalInfo.record.customerDesignVideos?modalInfo.record.customerDesignVideos:'0'}}</i>
</p>
</div>
<div class="box1">
<p class="details1">
<span>注册时间</span><i>{{modalInfo.record.createTime}}</i>
</p>
<p class="details1">
<span>最近登录时间</span><i>{{modalInfo.record.lastLoginTimeStr}}</i>
</p>
</div>
</a-drawer>
......@@ -24,14 +72,21 @@ export default {
name: "PortalAdminVueUserDetails",
data() {
return {};
return {
modalInfo:{
record:{
custName:''
}
}
};
},
mounted() {},
methods: {
openPicWorks() {
this.$emit("openPicWorks");
openPicWorks(id) {
this.modalInfo.visible = false
this.$emit("openPicWorks",id);
},
},
};
......
......@@ -174,7 +174,7 @@ export default {
{
title: "评价设备",
align: "center",
dataIndex: "pj_name",
dataIndex: "devicenum",
customRender: (text) => {
return text ? text : "--";
},
......
......@@ -4,7 +4,8 @@
<div>
<a-button
:loading="btnLoading"
type="primary" class="addclass"
type="primary"
class="addclass"
@click="handleExportTable"
>
<span>{{ tableSelectedRows.length ? "导出" : "导出全部" }}</span>
......@@ -28,7 +29,11 @@
v-model="searchForm.time"
>
</a-range-picker>
<a-select v-model="searchForm.sectionid" showSearch :option-filter-prop="'label'">
<a-select
v-model="searchForm.sectionid"
showSearch
:option-filter-prop="'label'"
>
<a-select-option value="" label="全部"> 全部部门 </a-select-option>
<a-select-option
v-for="(v, key) in depList"
......@@ -43,14 +48,15 @@
<a-select-option value=""> 全部 </a-select-option>
<a-select-option
v-for="(v, key) in statusItem"
:key="key"
:value="Number(key)"
>
{{ v }}
</a-select-option>
</a-select>
<a-button type="primary" class="addclass" @click="handleSearch">搜索</a-button>
<a-button type="primary" class="addclass" @click="handleSearch"
>搜索</a-button
>
<a-button @click="handleReset">重置</a-button>
</a-space>
</span>
......@@ -91,28 +97,28 @@
v-if="text.status == 0"
color="#108ee9"
>
{{statusItem[text.status]}}
{{ statusItem[text.status] }}
</a-tag>
<a-tag
@click="openDetails(text.id)"
v-else-if="text.status == 1"
color="#2db7f5"
>
{{statusItem[text.status]}}
{{ statusItem[text.status] }}
</a-tag>
<a-tag
@click="openDetails(text.id)"
v-else-if="text.status == 2"
color="#f50"
>
{{statusItem[text.status]}}
{{ statusItem[text.status] }}
</a-tag>
<a-tag
@click="openDetails(text.id)"
v-else-if="text.status == 3"
color="red"
>
{{statusItem[text.status]}}
{{ statusItem[text.status] }}
</a-tag>
</template>
</a-table>
......@@ -121,7 +127,7 @@
</template>
<script>
import { getOrderList,getDeptList } from "@/api/dataAdmin";
import { getOrderList, getDeptList } from "@/api/dataAdmin";
import { export2Excel } from "@/utils/js/exportExcel";
let tHeader = [
// 导出的表头名信息
......@@ -162,7 +168,7 @@ const style = {
2: "办理中",
3: "办理中",
4: "办理完成",
}
};
export default {
name: "PortalAdminVueMakeRecordReport",
data() {
......@@ -206,17 +212,31 @@ export default {
title: "办理地点",
align: "center",
dataIndex: "address",
customRender: (text, row) => {
return row.address || "--";
},
},
{
title: "预约编号",
align: "center",
dataIndex: "number",
customRender: (text,row) => {
return row.number || "--";
},
},
{
title: "排号编码",
align: "center",
dataIndex: "flownum",
customRender: (text,row) => {
return row.flownum || "--";
},
},
{
title: "预约时间",
align: "center",
dataIndex: "starttime",
customRender: (text,row) => {
customRender: (text, row) => {
return `${row.starttime}-${row.endtime}` || "--";
},
},
......@@ -230,8 +250,8 @@ export default {
{
title: "取消时间",
align: "center",
customRender: (text) => {
return text.canceltime || "--";
customRender: (text,row) => {
return row.canceltime || "--";
},
},
{
......@@ -271,7 +291,7 @@ export default {
searchForm: {
status: "",
title: "",
sectionid:"",
sectionid: "",
time: [
this.$moment(new Date()).format("YYYY-MM-DD"),
this.$moment(new Date()).format("YYYY-MM-DD"),
......@@ -284,22 +304,22 @@ export default {
tableSelectedKeys: [],
tableSelectedRows: [],
tableSourceData: [],
depList:[]//部门列表
depList: [], //部门列表
};
},
created() {
this.getOrderList();
this.getDeptList()
this.getDeptList();
},
methods: {
// 部门列表
getDeptList(){
getDeptList({page:1,size:-1}).then(res=>{
const {data} = res.data
if(res.code == 1){
this.depList = data
getDeptList() {
getDeptList({ page: 1, size: -1 }).then((res) => {
const { data } = res.data;
if (res.code == 1) {
this.depList = data;
}
})
});
},
// 获取报表数据
async getOrderList(search = {}) {
......@@ -320,7 +340,7 @@ export default {
return { ...v, ...v.people };
});
this.total = total;
return this.tableSourceData;
}
},
......@@ -388,7 +408,10 @@ export default {
for (let item of data) {
Object.keys(this.statusItem).forEach((key) => {
if (item.status == key) {
item.status = item.status==1?this.style[item.style]:this.statusItem[key];
item.status =
item.status == 1
? this.style[item.style]
: this.statusItem[key];
}
});
}
......@@ -400,7 +423,10 @@ export default {
for (let item of data) {
Object.keys(this.statusItem).forEach((key) => {
if (item.status == key) {
item.status = item.status==1?this.style[item.style]:this.statusItem[key];
item.status =
item.status == 1
? this.style[item.style]
: this.statusItem[key];
}
});
}
......@@ -425,5 +451,3 @@ export default {
cursor: pointer;
}
</style>
......@@ -67,8 +67,9 @@
:columns="tableHeaders"
:dataSource="tableSourceData"
>
<template slot="avater">
<a-avatar :size="40" icon="user" />
<template slot="avater" slot-scope="text">
<a-avatar v-if="!text" :size="40" icon="user" />
<img v-else :src="baseurl+text" style="width: 60px;height: 60px;">
</template>
<template slot="action" slot-scope="text">
<a-button type="link" @click="showDrawer(text)">详细信息</a-button>
......@@ -151,6 +152,7 @@ export default {
{
title: "用户头像",
align: "center",
dataIndex:"icon",
scopedSlots: {
customRender: "avater",
},
......@@ -198,6 +200,7 @@ export default {
tableSelectedRows: [],
tableSourceData: [],
userInfo: {}, // 用户信息
baseurl: process.env.VUE_APP_API_PHP_URL,
};
},
components: {
......
......@@ -315,6 +315,9 @@ export default {
"办理窗口",
"工作人员",
"办理结束时间",
"当前排号总时长",
"业务平均办理时长",
"业务平均等待时长",
"状态",
],
filterVal: [
......
......@@ -52,7 +52,7 @@
</div>
<div class="description_box" slot="description">
<div class="details">
<span><i class="lable">办理窗口:</i>{{ dataList.window_name || "--" }}</span>
<span><i class="lable">办理窗口:</i>{{ dataList.window_name + '-' + dataList.window_fromnum || "--" }}</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>
......
......@@ -287,6 +287,9 @@ export default {
"办理窗口",
"工作人员",
"办理结束时间",
"当前排号总时长",
"业务平均办理时长",
"业务平均等待时长",
"状态",
],
filterVal: [
......@@ -314,8 +317,8 @@ export default {
style: "", // 状态
time: [moment().format("YYYY-MM-DD"), moment().format("YYYY-MM-DD")], // 时间区间
flownum: "", // 排号编码
hallid:"",
sectionid:""
hallid: "",
sectionid: ""
},
//状态
style: [
......@@ -342,9 +345,9 @@ export default {
tableSelectedKeys: [],
tableSelectedRows: [],
// 大厅列表
datingList:[],
datingList: [],
// 部门列表
bumenList:[],
bumenList: [],
};
},
components: {
......
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