Commit 13c22c40 authored by “yiyousong”'s avatar “yiyousong”
parents a14d1443 58dba73a
......@@ -11209,6 +11209,299 @@ data| object | 数据对象 |-
}
```
## 样表报表服务
### 查询样报服务列表
**请求URL:** sampleform/sample/bill/list
**请求方式:** POST
**内容类型:** application/json;charset=utf-8
**简要描述:** 查询样表报表服务
**请求参数:**
参数名称|类型|必填|描述
:---|:---|:---|:------
page|Integer|否|当前页
size|Integer|否|每页条数,值为-1,查询所有记录
siteId|Long|否|站点ID
matterName|String|否|事项名称,字段前后添加%%模糊查询
materialName|String|否|材料名称,字段前后添加%%模糊查询
operTimeStart|String|否|操作开始时间
operTimeEnd|String|否|操作结束时间
**请求样例:**
```
{
"siteId":1,
"matterName":"%xxxx%",
"materialName":"%xxxxx%",
"operTimeStart":"2023-02-23",
"operTimeEnd":"2023-02-24",
"page":1,
"size":10
}
```
**响应参数:**
参数名称|参数类型|描述
:---|:---|:------
code|Integer|结果码(-1.失败,1.成功)
msg|String|消息
data|object|数据对象
 per_page|Integer|每页条数
 total|Integer|总条数
 last_page|Integer|总页数
 current_page|Integer|当前页
 data|array|结果集列表|数组
  id|Long|主键,自增长
  siteId|Long|站点ID
  matterId|Long|事项id
  matterName|String|事项名称
  matterFullName|String|事项全称
  materialName|String|材料名称
  materialFullName|String|材料全称
  deviceCode|String|设备编码
  deviceName|String|设备名称
  operTime|Date|操作时间
  createTime|Date|创建时间
  createUserId|Long|创建用户
  updateTime|Date|修改时间
dict|object|字典对象
**响应消息样例:**
```
{
"code":1,
"data":{
}
}
```
### 查看样表报表服务
**请求URL:** sampleform/sample/bill/info
**请求方式:** GET
**内容类型:** application/json;charset=utf-8
**简要描述:** 查看样表服务,返回实例详细信息
**请求参数:**
参数名称|类型|必填|描述
:---|:---|:---|:------
id|Long|是|ID
**请求样例:**
```
http://localhost/sample/bill/info?id=549
```
**响应参数:**
参数名称 |参数类型|描述
:---|:---|:-------
code|Integer|结果码(-1.失败,1.成功)
msg|String|消息
data|object|数据对象
 id|Long|主键,自增长
 siteId|Long|站点ID
 matterId|Long|事项id
 matterName|String|事项名称
 matterFullName|String|事项全称
 materialName|String|材料名称
 materialFullName|String|材料全称
 deviceCode|String|设备编码
 deviceName|String|设备名称
 operTime|Date|操作时间
 createTime|Date|创建时间
 createUserId|Long|创建用户
 updateTime|Date|修改时间
dict|object|字典对象
**响应消息样例:**
```
{
"code": 1,
"data": {
"id":2816,
"siteId":644,
"matterId":9498,
"matterName":"56bz30",
"matterFullName":"9fyv44",
"materialName":"kiq3e4",
"materialFullName":"xbseak",
"deviceCode":"5plyd7",
"deviceName":"yt2qku",
"operTime":"2023-02-23",
"createTime":"2023-02-23",
"createUserId":644,
"updateTime":"2023-02-23"
}
}
```
## 填单报表列表
### 查询填单报表列表
**请求URL:** fm/matter/datum/print/list
**请求方式:** POST
**内容类型:** application/json;charset=utf-8
**简要描述:** 查询填单报表
**请求参数:**
参数名称|类型|必填|描述
:---|:---|:---|:------
page|Integer|否|当前页
size|Integer|否|每页条数,值为-1,查询所有记录
siteId|Long|否|站点ID
matterName|String|否|事项名,字段前后添加%%模糊查询
materialName|String|否|材料名,字段前后添加%%模糊查询
createTimeStart|String|否|操作开始时间
createTimeEnd|String|否|操作结束时间
type|Integer|否|打印类型(1.本地打印,2.在线打印)
**请求样例:**
```
{
"materialName":"%xxxxx%",
"createTimeStart":"2022-01-11",
"createTimeEnd":"2022-01-15",
"materialName":"%xxxxx%",
"siteId":1,
"page":1,
"type":1,
"page":1,
"size":10
}
```
**响应参数:**
参数名称|参数类型|描述
:---|:---|:------
code|Integer|结果码(-1.失败,1.成功)
msg|String|消息
data|object|数据对象
 per_page|Integer|每页条数
 total|Integer|总条数
 last_page|Integer|总页数
 current_page|Integer|当前页
 data|array|结果集列表|数组
  id|Long|主键,自增长
  siteId|Long|站点id
  orderId|String|打印订单
  materialId|Long|材料Id
  materialName|String|材料名
  printPage|Integer|材料页数
  type|Integer|打印类型(1.本地打印,2.在线打印)
  docPath|String|合成doc后地址
  formContent|String|提交的表单
  createTime|Date|创建时间
  createUserId|Long|创建用户
  updateTime|Date|修改时间
  idCard|String|身份证号
  idName|String|身份证名称
  mobile|String|手机号码
  matterId|Long|事项id
  matterName|String|事项名称
  matterCode|String|事项编码
  deviceCode|String|设备编码
  deviceName|String|设备名称
dict|object|字典对象
 type|object|字典属性对象,详见附录
**响应消息样例:**
```
{
"code":1,
"data":{
}
}
```
### 查看填单报表
**请求URL:** fm/matter/datum/print/info
**请求方式:** GET
**内容类型:** application/json;charset=utf-8
**简要描述:** 查看填单报表,返回实例详细信息
**请求参数:**
参数名称|类型|必填|描述
:---|:---|:---|:------
id|Long|是|ID
**请求样例:**
```
http://localhost/fm/matter/datum/print/info?id=549
```
**响应参数:**
参数名称 |参数类型|描述
:---|:---|:-------
code|Integer|结果码(-1.失败,1.成功)
msg|String|消息
data|object|数据对象
 id|Long|主键,自增长
 siteId|Long|站点id
 orderId|String|打印订单
 materialId|Long|材料Id
 materialName|String|材料名
 printPage|Integer|材料页数
 type|Integer|打印类型(1.本地打印,2.在线打印)
 docPath|String|合成doc后地址
 formContent|String|提交的表单
 createTime|Date|创建时间
 createUserId|Long|创建用户
 updateTime|Date|修改时间
 idCard|String|身份证号
 idName|String|身份证名称
 mobile|String|手机号码
 matterId|Long|事项id
 matterName|String|事项名称
 matterCode|String|事项编码
 deviceCode|String|设备编码
 deviceName|String|设备名称
dict|object|字典对象
 type|object|字典属性对象,详见附录
**响应消息样例:**
```
{
"code": 1,
"data": {
"id":9177,
"orderId":"dhhddy",
"materialId":2805,
"materialName":"hz30qw",
"page":7237,
"type":340,
"docPath":"aw74kl",
"formContent":"h719lm",
"createTime":"2022-12-09",
"createUserId":7489,
"updateTime":"2022-12-09"
}
}
```
## 字典附录
### isBusiness
......
......@@ -76,7 +76,9 @@ public class AppDatasetServiceImpl extends AbstractCRUDServiceImpl<AppDatasetDao
protected void removeAfter(Long[] ids, Context context, int result) throws AppException {
List<AppInfoFieldEntity> appInfoFieldlist = appInfoFieldService.find(new AppInfoFieldQuery().datasetIdList(Arrays.asList(ids)));
if (!ObjectUtils.isEmpty(appInfoFieldlist)) {
appInfoFieldService.removeList(appInfoFieldlist, context);
Long[] idList = appInfoFieldlist.stream().map(item -> item.getId()).toArray(Long[]::new);
appInfoFieldService.remove(idList, context);
}
super.removeAfter(ids, context, result);
}
......
......@@ -353,21 +353,25 @@ public class AppServiceImpl extends AbstractCRUDServiceImpl<AppDao, AppEntity, L
//删除模板属性
List<AppInfoTempleteFieldEntity> appInfoTempleteFieldDeleteList = appInfoTempleteFieldService.find(new AppInfoTempleteFieldQuery().appIdList(Arrays.asList(ids)));
if (!ObjectUtils.isEmpty(appInfoTempleteFieldDeleteList)) {
appInfoTempleteFieldService.removeList(appInfoTempleteFieldDeleteList, context);
Long[] idList = appInfoTempleteFieldDeleteList.stream().map(item -> item.getId()).toArray(Long[]::new);
appInfoTempleteFieldService.remove(idList, context);
}
//删除版本信息
List<AppVersionEntity> appVersionDeleteList = appVersionService.find(new AppVersionQuery().appIdList(Arrays.asList(ids)));
if (!ObjectUtils.isEmpty(appVersionDeleteList)) {
appVersionService.removeList(appVersionDeleteList, context);
Long[] idList = appVersionDeleteList.stream().map(item -> item.getId()).toArray(Long[]::new);
appVersionService.remove(idList, context);
}
//删除数据集
List<AppDatasetEntity> appDatasetDeleteList = appDatasetService.find(new AppDatasetQuery().appIdList(Arrays.asList(ids)));
if (!ObjectUtils.isEmpty(appDatasetDeleteList)) {
appDatasetService.removeList(appDatasetDeleteList, context);
Long[] idLists = appDatasetDeleteList.stream().map(item -> item.getId()).toArray(Long[]::new);
appDatasetService.remove(idLists, context);
List<AppInfoFieldEntity> appInfoFieldDeleteList = appInfoFieldService.find(new AppInfoFieldQuery().datasetIdList(appDatasetDeleteList.stream().map(AppDatasetEntity::getAppId).collect(Collectors.toList())));
if (!ObjectUtils.isEmpty(appInfoFieldDeleteList)) {
appInfoFieldService.removeList(appInfoFieldDeleteList, context);
Long[] idList = appInfoFieldDeleteList.stream().map(item -> item.getId()).toArray(Long[]::new);
appInfoFieldService.remove(idList, context);
}
}
......
......@@ -91,8 +91,8 @@ public class WindowServiceImpl extends AbstractCRUDCacheServiceImpl<WindowDao, W
if (ObjectUtils.isEmpty(windowId)) {
throw new AppException("请选择对应窗口");
}
List<Long> businessIdList =new ArrayList<>();
if(!ObjectUtils.isEmpty(businessIds)){
List<Long> businessIdList = new ArrayList<>();
if (!ObjectUtils.isEmpty(businessIds)) {
businessIdList = Arrays.asList(businessIds.split(",")).stream().map(Long::parseLong).collect(Collectors.toList());
}
WindowBusinessQuery windowBusinessQuery = new WindowBusinessQuery();
......@@ -124,7 +124,7 @@ public class WindowServiceImpl extends AbstractCRUDCacheServiceImpl<WindowDao, W
return null;
}
return windowBusinessEntity;
}).filter(f->f!=null).collect(Collectors.toList());
}).filter(f -> f != null).collect(Collectors.toList());
windowBusinessService.save(windowBusinessEntities, context);
}
......@@ -136,13 +136,22 @@ public class WindowServiceImpl extends AbstractCRUDCacheServiceImpl<WindowDao, W
WindowBusinessQuery windowBusinessQuery = new WindowBusinessQuery();
windowBusinessQuery.setWindowIdList(Arrays.asList(ids));
List<WindowBusinessEntity> windowBusinessEntities = windowBusinessService.find(windowBusinessQuery);
windowBusinessService.removeList(windowBusinessEntities, context);
log.info("remove windowBusinessEntities size:{}",windowBusinessEntities.size());
if (!ObjectUtils.isEmpty(windowBusinessEntities)) {
Long[] idList = windowBusinessEntities.stream().map(item -> item.getId()).toArray(Long[]::new);
//windowBusinessService.removeList(windowBusinessEntities, context);
windowBusinessService.remove(idList, context);
}
//级联删除窗口事项
WindowMatterQuery windowMatterQuery = new WindowMatterQuery();
windowMatterQuery.setWindowIdList(Arrays.asList(ids));
List<WindowMatterEntity> windowMatterEntities = windowMatterService.find(windowMatterQuery);
windowMatterService.removeList(windowMatterEntities, context);
log.info("remove windowMatterEntities size:{}",windowMatterEntities.size());
if (!ObjectUtils.isEmpty(windowMatterEntities)) {
Long[] idList = windowMatterEntities.stream().map(item -> item.getId()).toArray(Long[]::new);
windowMatterService.remove(idList, context);
//windowMatterService.removeList(windowMatterEntities, context);
}
}
Arrays.asList(ids).forEach(id -> {
pushChangeMsg(id);
......
......@@ -4,7 +4,7 @@ Content-Type: application/json
{
"loginName":"admin",
"password":"adsmile",
"password":"ybsmzx@2023",
"securityCode":"8888"
}
......@@ -87,7 +87,7 @@ Accept: application/json
###自助终端应用删除
GET {{baseUrl}}/app/delete?id=18
GET {{baseUrl}}/app/delete?id=14
Authorization: {{authToken}}
Accept: application/json
......
......@@ -21,5 +21,9 @@
"base-yibin-web": {
"baseUrl": "http://112.19.80.237:11078/base"
},
"base-yibin-php": {
"phpUrl": "http://112.19.80.237:8090"
}
}
\ No newline at end of file
......@@ -4,7 +4,7 @@ POST {{baseUrl}}/site/business/list
Content-Type: application/json
{
"idNotList": [11,18,17,14,27,26],
"idNotList": [11,18,17,14,27,28],
"siteId": 1,
"page":1,
"size":10
......
......@@ -103,4 +103,10 @@ GET {{baseUrl}}/test/syncDept
Accept: application/json
###testre
POST {{phpUrl}}/inter/take/takebusiness
Content-Type: application/x-www-form-urlencoded
businessid=125&matter=125&devicenum=C0-FB-F9-CD-3B-5D&peopleid=13
......@@ -4,7 +4,7 @@ POST {{baseUrl}}/window/business/list
Content-Type: application/json
{
"windowIdList":[3,4,5],
"siteBusinessId":58,
"page":1,
"size":10
}
......
......@@ -7,23 +7,97 @@ export function censusListInterface(params) {
}
/* 排号机部分 */
//排号机列表数据
export function getTaskList(params){
return http.get(`${BASEURL}/admin/take/takelist`,params)
export function getTaskList(params) {
return http.get(`${BASEURL}/admin/take/takelist`, params)
}
//排队办理记录报表接口
export function getQueueData(params){
return http.post(`${BASEURL}/inter/reportform/quelist`,params)
export function getQueueData(params) {
return http.post(`${BASEURL}/inter/reportform/quelist`, params)
}
//排号记录详情
export function getQueueInfo(params){
return http.post(`${BASEURL}/inter/reportform/queinfo`,params)
export function getQueueInfo(params) {
return http.post(`${BASEURL}/inter/reportform/queinfo`, params)
}
//业务事项关联
export function getBusinessEvent(params){
return http.post(`${baseURL}/basics_api/base/business/matter/list`,params)
export function getBusinessEvent(params) {
return http.get(`${BASEURL}/inter/reportform/busanalyse`, params)
}
//查询业务人员信息
<<<<<<< HEAD
export function getWorkerInfo(params){
return http.get(`${baseURL}/basics_api/base/workman/info`,params)
}
//评价数据列表
export function getEvaList(params){
return http.post(`${BASEURL}/bkb/evaluate/evaluatelist`,params)
}
// 评价数据详情
export function getEvaData(params){
return http.get(`${BASEURL}/bkb/evaluate/evaluatinfo`,params)
}
// 评价数据删除
export function getEvaDetil(params){
return http.get(`${BASEURL}/bkb/evaluate/evaluatedl`,params)
}
// 排号评价详情
export function getQueEvaData(params){
return http.get(`${BASEURL}/bkb/evaluate/queEvaluateInfo`,params)
}
// 短信月度账单
export function getSMSList(params){
return http.get(`${BASEURL}/inter/Recharge/smsMonthList`,params)
}
// 网络理政列表
export function getWLLZList(params){
return http.get(`${BASEURL}/wllz/index/list`,params)
}
// 网络理政统计
export function getWLLZCount(params){
return http.post(`${BASEURL}/wllz/complainapi/statisticsComplain`,params)
}
// 网络理政详情
export function getWLLZInfo(params){
return http.get(`${BASEURL}/wllz/index/complainInfo`,params)
}
// 样表列表
export function getBillList(params) {
return http.post(`${baseURL}/sampleform/sample/bill/list`, params);
}
// 填单列表
export function getPrintList(params) {
return http.post(`${baseURL}/fm/matter/datum/print/list`, params);
}
=======
export function getWorkerInfo(params) {
return http.get(`${baseURL}/basics_api/base/workman/info`, params)
}
//查询业务人员业务数据分析
export function getWorkmananalyse(params) {
return http.get(`${BASEURL}/inter/reportform/workmananalyse`, params)
}
//查询用户信息
export function getPeopleanalyse(params) {
return http.get(`${BASEURL}/inter/reportform/peopleanalyse`, params)
}
/* 呼叫部分 */
// 呼叫器列表
export function getCalllist(params) {
return http.get(`${baseURL}/zwfw_api/admin/call/calllist`, params)
}
// 呼叫记录报表
export function getCallQueList(params) {
return http.post(`${BASEURL}/inter/reportform/callQueList`, params)
}
>>>>>>> 0334a060231b88a82691e8a4f429b0ab38bdddc5
......@@ -6,7 +6,6 @@ export default {
nowWeek: "",
timer: null,
tableLoading: false,
tablePagination: {
current: 1,
pageSize: 10,
......@@ -16,11 +15,9 @@ export default {
showTotal: (total, range) => `共${total}条`,
pageSizeOptions: ["10", "20", "30"],
},
tableSourceData: [],
tableSelectedRows: [], //选中的数据
tableSelectedRows: [], //选中的数据
tableSelectedKeys: [], //选中的id
sourceInfoForm: {},
}
},
......@@ -39,25 +36,24 @@ export default {
},
methods: {
//导出
exportTable() {
let tableData = [];
exportTable(tHeader, filterVal, transformText) {
console.log(tHeader, filterVal)
let tableData = []; //列表数据
if (this.tableSelectedRows.length == 0) {
tableData = JSON.parse(JSON.stringify(this.tableSourceData));
tableData = this.downAllData()
} else {
tableData = JSON.parse(JSON.stringify(this.tableSelectedRows));
}
let tableColumns = JSON.parse(JSON.stringify(this.tableHeaders));
let newTableData = tableData.map(item => {
let obj = {};
for (let key in item) {
obj[key] = item[key];
}
return obj;
})
// let tableColumns = JSON.parse(JSON.stringify(this.tableHeaders));
console.log('表格数据', tableData)
// console.log('表头内容', tableColumns)
// let newTableData = tableData.map(item => {
// // console.log(item)
// })
let exprotExcelName = `${this.nowDay} / ${this.nowTime} / ${this.$route['meta']['title'] || '报表信息统计'}`;
this.exportExcel(tableColumns, newTableData, exprotExcelName);
this.exportExcel(tHeader, filterVal, tableData, exprotExcelName);
},
exportExcel(tableColumns, tableData, exprotExcelName) {
exportExcel(tHeader, filterVal, tableData, exprotExcelName) {
// console.log(tableColumns);
// console.log(tableData);
// console.log(exprotExcelName);
......@@ -67,6 +63,7 @@ export default {
for (let i = 0; i < tableColumns.length; i++) {
for (let key in item) {
if (tableColumns[i]["dataIndex"] == key) {
console.log(tableColumns[i]["dataIndex"])
if (j == 0) {
exportHeaderName.push(tableColumns[i]["title"]);
}
......@@ -87,8 +84,8 @@ export default {
{
sheetData: exportData,
sheetName: "sheet",
sheetHeader: exportHeaderName,
sheetFilter: exportHeaderName,
sheetHeader: tHeader,
sheetFilter: tHeader,
},
];
let toExcel = new this.$ExportJsonExcel(option);
......@@ -105,7 +102,8 @@ export default {
onSelectChange(selectedRowKeys, selectedRows) {
this.tableSelectedKeys = selectedRowKeys;
this.tableSelectedRows = selectedRows;
// console.log(this.tableSelectedKeys, this.tableSelectedRows);
// console.log('选中的ID', this.tableSelectedKeys);
// console.log('选中的行数据', this.tableSelectedRows);
},
pagTableChange(pagination) {
......
......@@ -2,25 +2,19 @@
<div class="callRecord-Container">
<div class="header_box">
<div>
<a-button type="success" @click="exportTable">
<a-button type="success" @click="toexportTable">
<span>{{ tableSelectedRows.length ? "导出" : "导出全部" }}</span>
</a-button>
<b>累计发送短信量:<i>589726</i></b>
<b>累计发送短信量:<i>{{allCount}}</i></b>
</div>
<span>
<a-select default-value="001">
<!-- <a-select-option
v-for="(item, index) of selectOptions"
:key="index"
:value="item.value"
>
{{ item.label }}
</a-select-option> -->
<a-select-option value="001"> 船山行政审批局 </a-select-option>
<a-space>
<a-select :value="nowSite" @change="changeSite">
<a-select-option v-for="item in siteList" :key="item.value" :value="item.value"> {{item.label}} </a-select-option>
</a-select>
<a-button type="primary">搜索</a-button>
<a-button type="primary" @click="togetSMSList()">搜索</a-button>
</a-space>
</span>
</div>
<div class="main">
......@@ -40,7 +34,7 @@
:dataSource="tableSourceData"
>
<template slot="operation" slot-scope="text, record, index">
<a-button type="link">查看明细</a-button>
<a-button type="link" @click="gotoSMSSystem()">查看明细</a-button>
</template>
</a-table>
</div>
......@@ -49,6 +43,7 @@
<script>
import table from "@/mixins/table";
import {getSMSList} from "@/api/dataAdmin"
export default {
mixins: [table],
name: "PortalAdminVuePickUpRecord",
......@@ -66,18 +61,18 @@ export default {
{
title: "月度时间",
align: "center",
dataIndex: "月度时间",
dataIndex: "month",
},
{
title: "发送量",
align: "center",
dataIndex: "发送量",
dataIndex: "send_num",
},
{
title: "账单生成时间",
align: "center",
dataIndex: "账单生成时间",
dataIndex: "update_time",
},
{
......@@ -91,21 +86,99 @@ export default {
},
],
searchName: undefined,
nowSite:null,
siteList:[],
allCount:0
};
},
components: {},
mounted() {
this.setMoment();
for (let key = 0; key < 20; key++) {
this.tableSourceData.push({
id: `00${key + 1}`,
月度时间: `2022-0${key + 1}`,
发送量: `585${key + 1}`,
账单生成时间: `2022-07-01 09:09:09`,
this.getSiteData()
this.togetSMSList()
},
methods: {
//导出
toexportTable() {
let tableData = [];
if (this.tableSelectedRows.length == 0) {
// 获取表信息
getSMSList({
siteid:this.nowSite,
page:1,
size:-1,
}).then((res)=>{
const {code,data} = res
if(code==1){
tableData = JSON.parse(JSON.stringify(data.list.data));
let tableColumns = JSON.parse(JSON.stringify(this.tableHeaders));
let newTableData = tableData.map(item => {
let obj = {};
for (let key in item) {
obj[key] = item[key];
}
return obj;
})
let exprotExcelName = `${this.nowDay} / ${this.nowTime} / ${this.$route['meta']['title'] || '报表信息统计'}`;
this.exportExcel(tableColumns, newTableData, exprotExcelName);
}
})
} else {
tableData = JSON.parse(JSON.stringify(this.tableSelectedRows));
let tableColumns = JSON.parse(JSON.stringify(this.tableHeaders));
let newTableData = tableData.map(item => {
let obj = {};
for (let key in item) {
obj[key] = item[key];
}
return obj;
})
let exprotExcelName = `${this.nowDay} / ${this.nowTime} / ${this.$route['meta']['title'] || '报表信息统计'}`;
this.exportExcel(tableColumns, newTableData, exprotExcelName);
}
},
gotoSMSSystem(){
window.location.href="http://sms.wx3.com.cn/admin"
},
changeSite(e){
this.nowSite = e
},
// 获取当前站点和站点列表
getSiteData(){
this.nowSite = JSON.parse(localStorage.getItem('siteId'))
this.siteList = []
JSON.parse(localStorage.getItem('siteList')).forEach(item => {
this.siteList.push({
label:item.siteName,
value:item.id
})
});
},
togetSMSList(){
// 获取表信息
getSMSList({
siteid:this.nowSite,
page:this.tablePagination.current,
size:this.tablePagination.pageSize,
}).then((res)=>{
const {code,data} = res
if(code==1){
console.log(res);
this.tableSourceData = data.list.data
this.allCount=data.all_num
this.tablePagination.total = data.list.total
}
})
}
},
methods: {},
watch:{
tablePagination(){
this.togetSMSList()
}
}
};
</script>
......
......@@ -3,74 +3,157 @@
<a-drawer
:destroyOnClose="true"
:title="modalInfo.title"
:width="modalInfo.width"
width="40%"
:visible="modalInfo.visible"
@close="modalClose"
@getContainer="() => $refs.handling"
>
<div v-if="modalInfo.show==1">
<div class="headerInfo">
<p>
<span v-for="item of 3"
>总耗时:13分15秒<i class="fa fa-long-arrow-down"></i
></span>
<span>总耗时:{{queEvaData.alltime}}<i class="fa fa-long-arrow-down"></i></span>
<span>等待时间:{{queEvaData.waittime}}<i class="fa fa-long-arrow-down"></i></span>
<span>办理时间:{{queEvaData.bltime}}<i class="fa fa-long-arrow-down"></i></span>
</p>
<p>
<span>平均耗时:{{queEvaData.p_alltime}}</span>
<span>平均等待时间:{{queEvaData.p_waittime}}</span>
<span>平均办理时间:{{queEvaData.p_bltime}}</span>
</p>
<p><span v-for="item of 3">平均耗时:14分0秒</span></p>
</div>
<div class="state">接件结束</div>
<div class="state" v-if="queEvaData.style==0">未办理</div>
<div class="state" v-if="queEvaData.style==1">办理中</div>
<div class="state" v-if="queEvaData.style==4">办理完成</div>
<a-steps
direction="vertical"
size="small"
:current="approveLs.length"
:current="3"
class="steps_box"
>
<!-- 排队中 -->
<a-step
v-for="(item, index) of approveLs"
:key="item.id"
:disabled="true"
@click.stop="drawerchange(item.id)"
class="step_box"
v-if="queEvaData.style>=0"
>
<div class="icon_box" slot="icon"></div>
<div class="title_box" slot="title">
<span class="title_name">{{
item.status == 1
? "办理中"
: item.status == 2
? "接件结束"
: "排队中"
}}</span>
<span class="title_name">排队中</span>
</div>
<div
class="description_box"
slot="description"
v-if="item.status == 0"
>
<div class="details">
<span v-for="item of 8"><i class="lable">申报人:</i>张三</span>
<span><i class="lable">申报人:</i>{{queEvaData.people_name}}</span>
<span><i class="lable">取号时间:</i>{{queEvaData.taketime}}</span>
<span><i class="lable">排队编码:</i>{{queEvaData.flownum}}</span>
<span><i class="lable">取号方式:</i>{{queEvaData.wy_signin>0?'在线取号':'现场取号'}}</span>
<span><i class="lable">注册方式:</i>--</span>
<span><i class="lable">取号设备:</i>{{queEvaData.take_name}}</span>
</div>
</div>
</a-step>
<!-- 办理中 -->
<a-step
:disabled="true"
class="step_box"
v-if="queEvaData.style>=1"
>
<div class="icon_box" slot="icon"></div>
<div class="title_box" slot="title">
<span class="title_name">办理中</span>
</div>
<div
class="description_box"
slot="description"
v-else-if="item.status == 1"
>
<div class="details">
<span v-for="item of 6"><i class="lable">办理窗口:</i>s003</span>
<span><i class="lable">办理窗口:</i>{{queEvaData.window_name}}</span>
<span><i class="lable">办理开始时间:</i>{{queEvaData.bltime}}</span>
<span><i class="lable">工作人员:</i>{{queEvaData.workman_name}}</span>
<span><i class="lable">叫号设备:</i>{{queEvaData.calltime}}</span>
</div>
</div>
</a-step>
<!-- 接件结束 -->
<a-step
:disabled="true"
class="step_box"
v-if="queEvaData.style>=1"
>
<div class="icon_box" slot="icon"></div>
<div class="title_box" slot="title">
<span class="title_name">接件结束</span>
</div>
<div
class="description_box"
slot="description"
v-else-if="item.status == 2"
>
<div class="details">
<span v-for="item of 2"
><i class="lable">办理结束时间:</i>2021-01-15 12:00:00</span
<span><i class="lable">办理结束时间:</i>{{queEvaData.endtime}}</span>
<span><i class="lable">评价选项:</i>{{queEvaData.option_id}}</span>
<span><i class="lable">评价时间:</i>{{queEvaData.pj_time}}</span>
<span style="width:100%"><i class="lable">评价指标:</i>
<i class="pjzb" v-for="(item,index) in queEvaData.content" :key="index">{{item}}</i>
</span>
<span><i class="lable">评价来源:</i>{{queEvaData.source}}</span>
<span><i class="lable">评价设备:</i>{{queEvaData.pj_name}}</span>
<span><i class="lable">评价人照片:</i>
<a-avatar v-if="!queEvaData.idcardData_PhotoFileName" shape="square" :size="40" icon="user" />
<img v-else :src="process.env.VUE_APP_API_BASE_URL+text" alt="" srcset="">
</span>
</div>
</div>
</a-step>
</a-steps>
</div>
<div v-else>
<a-steps
direction="vertical"
size="small"
:current="3"
class="steps_box"
>
<!-- 评价 -->
<a-step
:disabled="true"
class="step_box"
>
<div class="icon_box" slot="icon"></div>
<div class="title_box" slot="title">
<span class="title_name">评价</span>
</div>
<div
class="description_box"
slot="description"
>
<div class="details">
<span><i class="lable">评价人:</i>{{queEvaData.idcard_Name}}</span>
<span><i class="lable">手机号:</i>{{queEvaData.phone}}</span>
<span><i class="lable">身份证号:</i>{{queEvaData.idcard_IDCardNo}}</span>
<span><i class="lable">窗口编号:</i>{{queEvaData.window_fronum}}</span>
<span><i class="lable">评价选项:</i>{{queEvaData.option_id}}</span>
<span><i class="lable">评价时间:</i>{{queEvaData.create_time}}</span>
<span style="width:100%"><i class="lable">评价指标:</i>
<i class="pjzb" v-for="(item,index) in queEvaData.content" :key="index">{{item}}</i>
</span>
<span><i class="lable">评价来源:</i>{{queEvaData.source}}</span>
<span><i class="lable">评价设备:</i>--</span>
<span>
<i class="lable">评价人照片:</i>
<a-avatar v-if="!queEvaData.idcardData_PhotoFileName" shape="square" :size="40" icon="user" />
<img v-else :src="process.env.VUE_APP_API_BASE_URL+text" alt="" srcset="">
</span>
</div>
</div>
</a-step>
</a-steps>
</div>
</a-drawer>
</div>
</template>
......@@ -83,20 +166,7 @@ export default {
data() {
return {
approveLs: [
{
id: "001",
status: 0,
},
{
id: "002",
status: 1,
},
{
id: "003",
status: 2,
},
],
queEvaData:{}
};
},
filters: {
......@@ -130,6 +200,20 @@ export default {
</script>
<style lang="less" scoped>
.pjzb{
background: rgba(5, 149, 253, 0.1);
color: #0595FD;
border: 1px solid rgba(5, 149, 253, 1);
border-radius: 4px;
height: 24px;
line-height: 24px;
display: inline-block;
padding: 0 10px;
margin: 0 5px;
font-size: 12px;
text-align: center;
}
/deep/.ant-steps-icon {
top: -4px !important;
}
......
......@@ -2,50 +2,42 @@
<div class="callRecord-Container">
<div class="header_box">
<div>
<a-button type="success" @click="exportTable">
<a-button type="success" @click="toexportTable">
<span>{{ tableSelectedRows.length ? "导出" : "导出全部" }}</span>
</a-button>
<a-button type="danger" @click="exportTable">
<span>{{ tableSelectedRows.length ? "删除" : "删除全部" }}</span>
<a-button type="danger" @click="delTable">
<span>批量删除</span>
</a-button>
<b>评价次数:<i>233</i></b>
<sub>统计时间段:2020.09.09~2021.09.09</sub>
<b>评价次数:<i>{{evaCount}}</i></b>
<sub>统计时间段:{{evaDates[0]}}~{{evaDates[1]}}</sub>
</div>
<span>
<a-select placeholder="全部评价">
<!-- <a-select-option
v-for="(item, index) of selectOptions"
:key="index"
:value="item.value"
>
{{ item.label }}
</a-select-option> -->
<a-select-option value="001"> 满意 </a-select-option>
<a-select-option value="002"> 非常满意 </a-select-option>
<a-select-option value="003"> 不满意 </a-select-option>
<a-space>
<a-select placeholder="全部评价" @change="changeEvaChoose" mode="multiple">
<a-select-option value="非常满意"> 非常满意 </a-select-option>
<a-select-option value="基本满意"> 基本满意 </a-select-option>
<a-select-option value="满意"> 满意 </a-select-option>
<a-select-option value="不满意"> 不满意 </a-select-option>
<a-select-option value="非常不满意"> 非常不满意 </a-select-option>
</a-select>
<a-select placeholder="全部来源">
<!-- <a-select-option
v-for="(item, index) of selectOptions"
:key="index"
:value="item.value"
>
{{ item.label }}
</a-select-option> -->
<a-select-option value="001"> 设备001 </a-select-option>
<a-select-option value="002"> 设备002 </a-select-option>
<a-select placeholder="全部来源" @change="changeEvaFrom" mode="multiple">
<a-select-option value="1"> 窗口评价 </a-select-option>
<a-select-option value="2"> 自助服务终端 </a-select-option>
<a-select-option value="3"> 背靠背评价 </a-select-option>
<a-select-option value="4"> 微官网 </a-select-option>
<a-select-option value="5"> 好差评 </a-select-option>
<a-select-option value="6"> 一体化评价 </a-select-option>
</a-select>
<a-range-picker format="YYYY年MM月DD日" class="range_picker_style" @change="rangePickerChange"
<a-range-picker :allowClear="false" format="YYYY年MM月DD日" class="range_picker_style" @change="rangePickerChange"
v-model="BegindAndEndTime">
</a-range-picker>
<a-input v-model="searchName" placeholder="请输入评价人姓名或窗口编号搜索">
<a-icon slot="prefix" type="search" />
</a-input>
<a-button type="primary">搜索</a-button>
<a-button type="primary" @click="togetevalist()">搜索</a-button>
</a-space>
</span>
</div>
<div class="main">
......@@ -55,14 +47,18 @@
}" :scroll="{ y: 590 }" :pagination="tablePagination" @change="pagTableChange" :loading="tableLoading"
:columns="tableHeaders" :dataSource="tableSourceData">
<template slot="评价人照片" slot-scope="text, record, index">
<a-avatar shape="square" :size="40" icon="user" />
<a-avatar v-if="!text" shape="square" :size="40" icon="user" />
<img v-else :src="process.env.VUE_APP_API_BASE_URL+text" alt="" srcset="">
</template>
<template slot="操作" slot-scope="text, record, index">
<a-button type="link" style="color:#FF7370;">删除</a-button>
<a-button type="link" @click="openHandlingDetails">详情</a-button>
<a-button type="link" @click="openHandlingDetails(record)">详情</a-button>
</template>
</a-table>
<HandlingDetails ref="HandlingDetails"/>
<a-modal v-model="visible" title="系统提示" @ok="togetEvaDetil()">
{{content}}
</a-modal>
</div>
</div>
</template>
......@@ -70,6 +66,8 @@
<script>
import table from "@/mixins/table";
import HandlingDetails from "./components/HandlingDetails.vue";
import { getEvaList, getEvaData, getEvaDetil, getQueEvaData } from "@/api/dataAdmin";
export default {
mixins: [table],
name: "departmentEvaluation",
......@@ -87,47 +85,71 @@ export default {
{
title: "部门名称",
align: "center",
dataIndex: "部门名称",
dataIndex: "section",
},
{
title: "评价选项",
align: "center",
dataIndex: "评价选项",
dataIndex: "option_id",
},
{
title: "评价人",
align: "center",
dataIndex: "评价人",
dataIndex: "idcard_Name",
},
{
title: "身份证号",
align: "center",
dataIndex: "身份证号",
dataIndex: "idcard_IDCardNo",
},
{
title: "手机号",
align: "center",
dataIndex: "手机号",
dataIndex: "phone",
},
{
title: "评价时间",
align: "center",
dataIndex: "评价时间",
dataIndex: "create_time",
},
{
title: "评价来源",
align: "center",
dataIndex: "评价来源",
dataIndex: "pjxt",
customRender: (text, record, index) => {
if(text == 1){
return '窗口评价'
}else if(text == 2){
return '自助服务终端'
}else if(text == 3){
return '背靠背评价'
}else if(text == 4){
return '微官网'
}else if(text == 5){
return '好差评'
}else{
return '一体化评价'
}
},
},
{
title: "评价设备",
align: "center",
dataIndex: "评价设备",
dataIndex: "source",
customRender: (text, record, index) => {
if(text == 1){
return '安卓'
}else if(text == 2){
return '导视机'
}else{
return '微信'
}
},
},
{
title: "评价人照片",
align: "center",
dataIndex: "评价人照片",
dataIndex: "picture",
scopedSlots: {
customRender: "评价人照片",
},
......@@ -143,6 +165,15 @@ export default {
],
BegindAndEndTime: [],
searchName: undefined,
//删除窗口判断
visible: false,
tableSourceData:[],
evaCount:0,//评价次数
evaChoose:[],//评价选项
evaFrom:[0],// 评价来源
evaDates:[],// 评价日期
content:'此操作将删除该评价信息,是否继续?',
delId:null,//当前删除id
};
},
components: {
......@@ -150,25 +181,151 @@ export default {
},
mounted() {
this.setMoment();
for (let key = 0; key < 20; key++) {
this.tableSourceData.push({
id: `00${key + 1}`,
部门名称: `财政局`,
评价选项: `非常满意`,
评价人: `唐三`,
身份证号: `510311199909099999`,
手机号: `138888888888`,
联系电话: `138808888${key + 1}`,
评价时间: `2021-09-09 09:09:09${key + 1}`,
评价来源: `背靠背评价器`,
评价设备: `1楼背靠背评价器`,
// 评价人照片: `111`,
// 设置默认时间为今天
this.evaDates=[this.$moment(new Date()).format("YYYY-MM-DD"),this.$moment(new Date()).format("YYYY-MM-DD")]
this.togetevalist()
},
methods: {
//导出
toexportTable() {
let tableData = [];
// 拼接评价选项
let chooseStr = this.evaChoose.join(',')
// 要先拼接评价来源
let fromString = this.evaFrom.join(',')
if (this.tableSelectedRows.length == 0) {
getEvaList({
page:1,
size:-1,
type:'bmpj',
option_id:chooseStr,
pjxt:fromString,//传0代表全部
time:this.evaDates,
info:this.searchName
}).then((res)=>{
const{code,data} = res;
if(code == 1){
tableData = JSON.parse(JSON.stringify(data.data.data));
tableData.forEach((item)=>{
item.pjxt = item.pjxt == 1?'窗口评价':item.pjxt == 2?'自助服务终端':item.pjxt == 3?'背靠背评价':item.pjxt == 4?'微官网':item.pjxt == 5?'好差评':'一体化评价'
item.source = item.source == 1?'安卓': item.source == 2?'导视机':'微信'
})
let tableColumns = JSON.parse(JSON.stringify(this.tableHeaders));
let newTableData = tableData.map(item => {
let obj = {};
for (let key in item) {
obj[key] = item[key];
}
return obj;
})
let exprotExcelName = `${this.nowDay} / ${this.nowTime} / ${this.$route['meta']['title'] || '报表信息统计'}`;
this.exportExcel(tableColumns, newTableData, exprotExcelName);
}
})
} else {
tableData = JSON.parse(JSON.stringify(this.tableSelectedRows));
tableData.forEach((item)=>{
item.pjxt = item.pjxt == 1?'窗口评价':item.pjxt == 2?'自助服务终端':item.pjxt == 3?'背靠背评价':item.pjxt == 4?'微官网':item.pjxt == 5?'好差评':'一体化评价'
item.source = item.source == 1?'安卓': item.source == 2?'导视机':'微信'
})
let tableColumns = JSON.parse(JSON.stringify(this.tableHeaders));
let newTableData = tableData.map(item => {
let obj = {};
for (let key in item) {
obj[key] = item[key];
}
return obj;
})
let exprotExcelName = `${this.nowDay} / ${this.nowTime} / ${this.$route['meta']['title'] || '报表信息统计'}`;
this.exportExcel(tableColumns, newTableData, exprotExcelName);
}
},
delTable(){
// console.log(this.tableSelectedRows);
this.visible = true;
if(!this.tableSelectedRows.length){
this.content = '一条评论都没有选中'
}else{
this.content = '此操作将删除这些评价信息,是否继续?'
let arr = []
this.tableSelectedRows.forEach(item => {
arr.push(item.id)
});
this.delId = arr
}
},
methods: {
togetEvaDetil(){
getEvaDetil({
id:this.delId
}).then(res=>{
{
this.delId=null
this.visible = false;
// 要刷新页面
this.togetevalist()
}
})
},
togetQueEvaData(record){
getQueEvaData({
id:record.id
}).then(res=>{
console.log(res);
const {code,data} = res
if(code==1){
this.$refs.HandlingDetails.queEvaData = data
}
})
},
togetEvaData(id){
getEvaData({
id:id
}).then(res=>{
console.log(res);
const {code,data} = res
if(code==1){
this.$refs.HandlingDetails.queEvaData = data
}
})
},
togetevalist(){
// 拼接评价选项
let chooseStr = this.evaChoose.join(',')
// 要先拼接评价来源
let fromString = this.evaFrom.join(',')
getEvaList({
page:this.tablePagination.current,
size:this.tablePagination.pageSize,
type:'bmpj',
option_id:chooseStr,
pjxt:fromString,//传0代表全部
time:this.evaDates,
info:this.searchName
}).then((res)=>{
console.log(11111,res);
const{code,data} = res;
if(code == 1){
this.tableSourceData = data.data.data
this.evaCount = data.count
this.tablePagination.total = data.count
}
})
},
changeEvaFrom(val){
if(val.length){
this.evaFrom = val;
}else{
this.evaFrom = [0]
}
},
changeEvaChoose(val){
this.evaChoose = val
},
rangePickerChange(val) {
console.log(val);
this.evaDates = [this.$moment(val[0]).format("YYYY-MM-DD"),this.$moment(val[1]).format("YYYY-MM-DD")]
},
QueueState(type) {
switch (type) {
......@@ -182,11 +339,31 @@ export default {
}
},
//详情模块
openHandlingDetails() {
this.$refs.HandlingDetails.modalInfo.title = "办理明细";
openHandlingDetails(record) {
// 判断为窗口屏或者其他状况,调用不同接口
// if(record.pjxt==1){
// this.$refs.HandlingDetails.modalInfo.title = "办理明细";
// this.$refs.HandlingDetails.modalInfo.show = 1;
// this.togetQueEvaData(record)
// }else{
this.$refs.HandlingDetails.modalInfo.title = "评价详情";
this.$refs.HandlingDetails.modalInfo.show = 2;
this.togetEvaData(record.id)
// }
this.$refs.HandlingDetails.modalInfo.visible = true;
},
//删除模态框
showModal(record) {
this.visible = true;
this.delId = record.id
},
},
watch:{
tablePagination(){
this.togetevalist()
}
}
};
</script>
......
......@@ -2,50 +2,42 @@
<div class="callRecord-Container">
<div class="header_box">
<div>
<a-button type="success" @click="exportTable">
<a-button type="success" @click="toexportTable">
<span>{{ tableSelectedRows.length ? "导出" : "导出全部" }}</span>
</a-button>
<a-button type="danger" @click="exportTable">
<span>{{ tableSelectedRows.length ? "删除" : "删除全部" }}</span>
<a-button type="danger" @click="delTable">
<span>批量删除</span>
</a-button>
<b>评价次数:<i>233</i></b>
<sub>统计时间段:2020.09.09~2021.09.09</sub>
<b>评价次数:<i>{{evaCount}}</i></b>
<sub>统计时间段:{{evaDates[0]}}~{{evaDates[1]}}</sub>
</div>
<span>
<a-select placeholder="全部评价">
<!-- <a-select-option
v-for="(item, index) of selectOptions"
:key="index"
:value="item.value"
>
{{ item.label }}
</a-select-option> -->
<a-select-option value="001"> 满意 </a-select-option>
<a-select-option value="002"> 非常满意 </a-select-option>
<a-select-option value="003"> 不满意 </a-select-option>
<a-space>
<a-select placeholder="全部评价" @change="changeEvaChoose" mode="multiple">
<a-select-option value="非常满意"> 非常满意 </a-select-option>
<a-select-option value="基本满意"> 基本满意 </a-select-option>
<a-select-option value="满意"> 满意 </a-select-option>
<a-select-option value="不满意"> 不满意 </a-select-option>
<a-select-option value="非常不满意"> 非常不满意 </a-select-option>
</a-select>
<a-select placeholder="全部来源">
<!-- <a-select-option
v-for="(item, index) of selectOptions"
:key="index"
:value="item.value"
>
{{ item.label }}
</a-select-option> -->
<a-select-option value="001"> 设备001 </a-select-option>
<a-select-option value="002"> 设备002 </a-select-option>
<a-select placeholder="全部来源" @change="changeEvaFrom" mode="multiple">
<a-select-option value="1"> 窗口评价 </a-select-option>
<a-select-option value="2"> 自助服务终端 </a-select-option>
<a-select-option value="3"> 背靠背评价 </a-select-option>
<a-select-option value="4"> 微官网 </a-select-option>
<a-select-option value="5"> 好差评 </a-select-option>
<a-select-option value="6"> 一体化评价 </a-select-option>
</a-select>
<a-range-picker format="YYYY年MM月DD日" class="range_picker_style" @change="rangePickerChange"
<a-range-picker :allowClear="false" format="YYYY年MM月DD日" class="range_picker_style" @change="rangePickerChange"
v-model="BegindAndEndTime">
</a-range-picker>
<a-input v-model="searchName" placeholder="请输入评价人姓名或窗口编号搜索">
<a-icon slot="prefix" type="search" />
</a-input>
<a-button type="primary">搜索</a-button>
<a-button type="primary" @click="togetevalist()">搜索</a-button>
</a-space>
</span>
</div>
<div class="main">
......@@ -55,16 +47,17 @@
}" :scroll="{ y: 590 }" :pagination="tablePagination" @change="pagTableChange" :loading="tableLoading"
:columns="tableHeaders" :dataSource="tableSourceData">
<template slot="评价人照片" slot-scope="text, record, index">
<a-avatar shape="square" :size="40" icon="user" />
<a-avatar v-if="!text" shape="square" :size="40" icon="user" />
<img v-else :src="process.env.VUE_APP_API_BASE_URL+text" alt="" srcset="">
</template>
<template slot="操作" slot-scope="text, record, index">
<a-button type="link" style="color:#FF7370;" @click="showModal(record)">删除</a-button>
<a-button type="link" @click="openHandlingDetails">详情</a-button>
<a-button type="link" @click="openHandlingDetails(record)">详情</a-button>
</template>
</a-table>
<HandlingDetails ref="HandlingDetails" />
<a-modal v-model="visible" title="系统提示" @ok="handleOk">
此操作将删除该评价信息,是否继续?
<a-modal v-model="visible" title="系统提示" @ok="togetEvaDetil()">
{{content}}
</a-modal>
</div>
</div>
......@@ -73,6 +66,8 @@
<script>
import table from "@/mixins/table";
import HandlingDetails from "./components/HandlingDetails.vue";
import { getEvaList, getEvaData, getEvaDetil, getQueEvaData } from "@/api/dataAdmin";
export default {
mixins: [table],
name: "matterEvaluation",
......@@ -90,47 +85,71 @@ export default {
{
title: "排队编号",
align: "center",
dataIndex: "排队编号",
dataIndex: "flounum",
},
{
title: "评价选项",
align: "center",
dataIndex: "评价选项",
dataIndex: "option_id",
},
{
title: "评价人",
align: "center",
dataIndex: "评价人",
dataIndex: "idcard_Name",
},
{
title: "身份证号",
align: "center",
dataIndex: "身份证号",
dataIndex: "idcard_IDCardNo",
},
{
title: "手机号",
align: "center",
dataIndex: "手机号",
dataIndex: "phone",
},
{
title: "评价时间",
align: "center",
dataIndex: "评价时间",
dataIndex: "create_time",
},
{
title: "评价来源",
align: "center",
dataIndex: "评价来源",
dataIndex: "pjxt",
customRender: (text, record, index) => {
if(text == 1){
return '窗口评价'
}else if(text == 2){
return '自助服务终端'
}else if(text == 3){
return '背靠背评价'
}else if(text == 4){
return '微官网'
}else if(text == 5){
return '好差评'
}else{
return '一体化评价'
}
},
},
{
title: "评价设备",
align: "center",
dataIndex: "评价设备",
dataIndex: "source",
customRender: (text, record, index) => {
if(text == 1){
return '安卓'
}else if(text == 2){
return '导视机'
}else{
return '微信'
}
},
},
{
title: "评价人照片",
align: "center",
dataIndex: "评价人照片",
dataIndex: "picture",
scopedSlots: {
customRender: "评价人照片",
},
......@@ -148,6 +167,13 @@ export default {
searchName: undefined,
//删除窗口判断
visible: false,
tableSourceData:[],
evaCount:0,//评价次数
evaChoose:[],//评价选项
evaFrom:[0],// 评价来源
evaDates:[],// 评价日期
content:'此操作将删除该评价信息,是否继续?',
delId:null,//当前删除id
};
},
components: {
......@@ -155,25 +181,150 @@ export default {
},
mounted() {
this.setMoment();
for (let key = 0; key < 20; key++) {
this.tableSourceData.push({
id: `00${key + 1}`,
排队编号: `V00${key + 1}`,
评价选项: `非常满意`,
评价人: `唐三`,
身份证号: `510311199909099999`,
手机号: `138888888888`,
联系电话: `138808888${key + 1}`,
评价时间: `2021-09-09 09:09:09${key + 1}`,
评价来源: `自助服务终端`,
评价设备: `1楼自助服务终端`,
// 评价人照片: `111`,
// 设置默认时间为今天
this.evaDates=[this.$moment(new Date()).format("YYYY-MM-DD"),this.$moment(new Date()).format("YYYY-MM-DD")]
this.togetevalist()
},
methods: {
//导出
toexportTable() {
let tableData = [];
// 拼接评价选项
let chooseStr = this.evaChoose.join(',')
// 要先拼接评价来源
let fromString = this.evaFrom.join(',')
if (this.tableSelectedRows.length == 0) {
getEvaList({
page:1,
size:-1,
type:'phpj',
option_id:chooseStr,
pjxt:fromString,//传0代表全部
time:this.evaDates,
info:this.searchName
}).then((res)=>{
const{code,data} = res;
if(code == 1){
tableData = JSON.parse(JSON.stringify(data.data.data));
tableData.forEach((item)=>{
item.pjxt = item.pjxt == 1?'窗口评价':item.pjxt == 2?'自助服务终端':item.pjxt == 3?'背靠背评价':item.pjxt == 4?'微官网':item.pjxt == 5?'好差评':'一体化评价'
item.source = item.source == 1?'安卓': item.source == 2?'导视机':'微信'
})
let tableColumns = JSON.parse(JSON.stringify(this.tableHeaders));
let newTableData = tableData.map(item => {
let obj = {};
for (let key in item) {
obj[key] = item[key];
}
return obj;
})
let exprotExcelName = `${this.nowDay} / ${this.nowTime} / ${this.$route['meta']['title'] || '报表信息统计'}`;
this.exportExcel(tableColumns, newTableData, exprotExcelName);
}
})
} else {
tableData = JSON.parse(JSON.stringify(this.tableSelectedRows));
tableData.forEach((item)=>{
item.pjxt = item.pjxt == 1?'窗口评价':item.pjxt == 2?'自助服务终端':item.pjxt == 3?'背靠背评价':item.pjxt == 4?'微官网':item.pjxt == 5?'好差评':'一体化评价'
item.source = item.source == 1?'安卓': item.source == 2?'导视机':'微信'
})
let tableColumns = JSON.parse(JSON.stringify(this.tableHeaders));
let newTableData = tableData.map(item => {
let obj = {};
for (let key in item) {
obj[key] = item[key];
}
return obj;
})
let exprotExcelName = `${this.nowDay} / ${this.nowTime} / ${this.$route['meta']['title'] || '报表信息统计'}`;
this.exportExcel(tableColumns, newTableData, exprotExcelName);
}
},
delTable(){
this.visible = true;
if(!this.tableSelectedRows.length){
this.content = '一条评论都没有选中'
}else{
this.content = '此操作将删除这些评价信息,是否继续?'
let arr = []
this.tableSelectedRows.forEach(item => {
arr.push(item.id)
});
this.delId = arr
}
},
methods: {
togetEvaDetil(){
getEvaDetil({
id:this.delId
}).then(res=>{
{
this.delId=null
this.visible = false;
// 要刷新页面
this.togetevalist()
}
})
},
togetQueEvaData(record){
getQueEvaData({
id:record.id
}).then(res=>{
console.log(res);
const {code,data} = res
if(code==1){
this.$refs.HandlingDetails.queEvaData = data
}
})
},
togetEvaData(id){
getEvaData({
id:id
}).then(res=>{
console.log(res);
const {code,data} = res
if(code==1){
this.$refs.HandlingDetails.queEvaData = data
}
})
},
togetevalist(){
// 拼接评价选项
let chooseStr = this.evaChoose.join(',')
// 要先拼接评价来源
let fromString = this.evaFrom.join(',')
getEvaList({
page:this.tablePagination.current,
size:this.tablePagination.pageSize,
type:'phpj',
option_id:chooseStr,
pjxt:fromString,//传0代表全部
time:this.evaDates,
info:this.searchName
}).then((res)=>{
console.log(11111,res);
const{code,data} = res;
if(code == 1){
this.tableSourceData = data.data.data
this.evaCount = data.count
this.tablePagination.total = data.count
}
})
},
changeEvaFrom(val){
if(val.length){
this.evaFrom = val;
}else{
this.evaFrom = [0]
}
},
changeEvaChoose(val){
this.evaChoose = val
},
rangePickerChange(val) {
console.log(val);
this.evaDates = [this.$moment(val[0]).format("YYYY-MM-DD"),this.$moment(val[1]).format("YYYY-MM-DD")]
},
QueueState(type) {
......@@ -188,21 +339,31 @@ export default {
}
},
//详情模块
openHandlingDetails() {
openHandlingDetails(record) {
// 判断为窗口屏或者其他状况,调用不同接口
// if(record.pjxt==1){
this.$refs.HandlingDetails.modalInfo.title = "办理明细";
this.$refs.HandlingDetails.modalInfo.show = 1;
this.togetQueEvaData(record)
// }else{
// this.$refs.HandlingDetails.modalInfo.title = "评价详情";
// this.$refs.HandlingDetails.modalInfo.show = 2;
// this.togetEvaData(record.id)
// }
this.$refs.HandlingDetails.modalInfo.visible = true;
},
//删除模态框
showModal(record) {
console.log(record)
this.visible = true;
},
//
handleOk(e) {
console.log(e);
this.visible = false;
this.delId = record.id
},
},
watch:{
tablePagination(){
this.togetevalist()
}
}
};
</script>
......
......@@ -2,50 +2,42 @@
<div class="callRecord-Container">
<div class="header_box">
<div>
<a-button type="success" @click="exportTable">
<a-button type="success" @click="toexportTable">
<span>{{ tableSelectedRows.length ? "导出" : "导出全部" }}</span>
</a-button>
<a-button type="danger" @click="exportTable">
<span>{{ tableSelectedRows.length ? "删除" : "删除全部" }}</span>
<a-button type="danger" @click="delTable">
<span>批量删除</span>
</a-button>
<b>评价次数:<i>233</i></b>
<sub>统计时间段:2020.09.09~2021.09.09</sub>
<b>评价次数:<i>{{evaCount}}</i></b>
<sub>统计时间段:{{evaDates[0]}}~{{evaDates[1]}}</sub>
</div>
<span>
<a-select placeholder="全部评价">
<!-- <a-select-option
v-for="(item, index) of selectOptions"
:key="index"
:value="item.value"
>
{{ item.label }}
</a-select-option> -->
<a-select-option value="001"> 满意 </a-select-option>
<a-select-option value="002"> 非常满意 </a-select-option>
<a-select-option value="003"> 不满意 </a-select-option>
<a-space>
<a-select placeholder="全部评价" @change="changeEvaChoose" mode="multiple">
<a-select-option value="非常满意"> 非常满意 </a-select-option>
<a-select-option value="基本满意"> 基本满意 </a-select-option>
<a-select-option value="满意"> 满意 </a-select-option>
<a-select-option value="不满意"> 不满意 </a-select-option>
<a-select-option value="非常不满意"> 非常不满意 </a-select-option>
</a-select>
<a-select placeholder="全部来源">
<!-- <a-select-option
v-for="(item, index) of selectOptions"
:key="index"
:value="item.value"
>
{{ item.label }}
</a-select-option> -->
<a-select-option value="001"> 设备001 </a-select-option>
<a-select-option value="002"> 设备002 </a-select-option>
<a-select placeholder="全部来源" @change="changeEvaFrom" mode="multiple">
<a-select-option value="1"> 窗口评价 </a-select-option>
<a-select-option value="2"> 自助服务终端 </a-select-option>
<a-select-option value="3"> 背靠背评价 </a-select-option>
<a-select-option value="4"> 微官网 </a-select-option>
<a-select-option value="5"> 好差评 </a-select-option>
<a-select-option value="6"> 一体化评价 </a-select-option>
</a-select>
<a-range-picker format="YYYY年MM月DD日" class="range_picker_style" @change="rangePickerChange"
<a-range-picker :allowClear="false" format="YYYY年MM月DD日" class="range_picker_style" @change="rangePickerChange"
v-model="BegindAndEndTime">
</a-range-picker>
<a-input v-model="searchName" placeholder="请输入评价人姓名或窗口编号搜索">
<a-icon slot="prefix" type="search" />
</a-input>
<a-button type="primary">搜索</a-button>
<a-button type="primary" @click="togetevalist()">搜索</a-button>
</a-space>
</span>
</div>
<div class="main">
......@@ -55,16 +47,17 @@
}" :scroll="{ y: 590 }" :pagination="tablePagination" @change="pagTableChange" :loading="tableLoading"
:columns="tableHeaders" :dataSource="tableSourceData">
<template slot="评价人照片" slot-scope="text, record, index">
<a-avatar shape="square" :size="40" icon="user" />
<a-avatar v-if="!text" shape="square" :size="40" icon="user" />
<img v-else :src="process.env.VUE_APP_API_BASE_URL+text" alt="" srcset="">
</template>
<template slot="操作" slot-scope="text, record, index">
<a-button type="link" style="color:#FF7370;" @click="showModal(record)">删除</a-button>
<a-button type="link" @click="openHandlingDetails">详情</a-button>
<a-button type="link" @click="openHandlingDetails(record)">详情</a-button>
</template>
</a-table>
<HandlingDetails ref="HandlingDetails" />
<a-modal v-model="visible" title="系统提示" @ok="handleOk">
此操作将删除该评价信息,是否继续?
<a-modal v-model="visible" title="系统提示" @ok="togetEvaDetil()">
{{content}}
</a-modal>
</div>
</div>
......@@ -73,6 +66,8 @@
<script>
import table from "@/mixins/table";
import HandlingDetails from "./components/HandlingDetails.vue";
import { getEvaList, getEvaData, getEvaDetil, getQueEvaData } from "@/api/dataAdmin";
export default {
mixins: [table],
name: "windowsEvaluation",
......@@ -90,47 +85,71 @@ export default {
{
title: "窗口编号",
align: "center",
dataIndex: "窗口编号",
dataIndex: "window",
},
{
title: "评价选项",
align: "center",
dataIndex: "评价选项",
dataIndex: "option_id",
},
{
title: "评价人",
align: "center",
dataIndex: "评价人",
dataIndex: "idcard_Name",
},
{
title: "身份证号",
align: "center",
dataIndex: "身份证号",
dataIndex: "idcard_IDCardNo",
},
{
title: "手机号",
align: "center",
dataIndex: "手机号",
dataIndex: "phone",
},
{
title: "评价时间",
align: "center",
dataIndex: "评价时间",
dataIndex: "create_time",
},
{
title: "评价来源",
align: "center",
dataIndex: "评价来源",
dataIndex: "pjxt",
customRender: (text, record, index) => {
if(text == 1){
return '窗口评价'
}else if(text == 2){
return '自助服务终端'
}else if(text == 3){
return '背靠背评价'
}else if(text == 4){
return '微官网'
}else if(text == 5){
return '好差评'
}else{
return '一体化评价'
}
},
},
{
title: "评价设备",
align: "center",
dataIndex: "评价设备",
dataIndex: "source",
customRender: (text, record, index) => {
if(text == 1){
return '安卓'
}else if(text == 2){
return '导视机'
}else{
return '微信'
}
},
},
{
title: "评价人照片",
align: "center",
dataIndex: "评价人照片",
dataIndex: "picture",
scopedSlots: {
customRender: "评价人照片",
},
......@@ -145,9 +164,16 @@ export default {
},
],
BegindAndEndTime: [],
searchName: undefined,
searchName: undefined,// 搜索内容
//删除窗口判断
visible: false,
tableSourceData:[],
evaCount:0,//评价次数
evaChoose:[],//评价选项
evaFrom:[0],// 评价来源
evaDates:[],// 评价日期
content:'此操作将删除该评价信息,是否继续?',
delId:null,//当前删除id
};
},
components: {
......@@ -155,25 +181,147 @@ export default {
},
mounted() {
this.setMoment();
for (let key = 0; key < 20; key++) {
this.tableSourceData.push({
id: `00${key + 1}`,
窗口编号: `A000${key + 1}`,
评价选项: `非常满意`,
评价人: `唐三`,
身份证号: `510311199909099999`,
手机号: `138888888888`,
联系电话: `138808888${key + 1}`,
评价时间: `2021-09-09 09:09:09${key + 1}`,
评价来源: `窗口评价器`,
评价设备: `1楼0${key + 1}号窗口评价器`,
// 评价人照片: `111`,
// 设置默认时间为今天
this.evaDates=[this.$moment(new Date()).format("YYYY-MM-DD"),this.$moment(new Date()).format("YYYY-MM-DD")]
this.togetevalist()
},
methods: {
//导出
toexportTable() {
let tableData = [];
// 拼接评价选项
let chooseStr = this.evaChoose.join(',')
// 要先拼接评价来源
let fromString = this.evaFrom.join(',')
if (this.tableSelectedRows.length == 0) {
getEvaList({
page:1,
size:-1,
type:'ckpj',
option_id:chooseStr,
pjxt:fromString,//传0代表全部
time:this.evaDates,
info:this.searchName
}).then((res)=>{
const{code,data} = res;
if(code == 1){
tableData = JSON.parse(JSON.stringify(data.data.data));
tableData.forEach((item)=>{
item.pjxt = item.pjxt == 1?'窗口评价':item.pjxt == 2?'自助服务终端':item.pjxt == 3?'背靠背评价':item.pjxt == 4?'微官网':item.pjxt == 5?'好差评':'一体化评价'
item.source = item.source == 1?'安卓': item.source == 2?'导视机':'微信'
})
let tableColumns = JSON.parse(JSON.stringify(this.tableHeaders));
let newTableData = tableData.map(item => {
let obj = {};
for (let key in item) {
obj[key] = item[key];
}
return obj;
})
let exprotExcelName = `${this.nowDay} / ${this.nowTime} / ${this.$route['meta']['title'] || '报表信息统计'}`;
this.exportExcel(tableColumns, newTableData, exprotExcelName);
}
})
} else {
tableData = JSON.parse(JSON.stringify(this.tableSelectedRows));
tableData.forEach((item)=>{
item.pjxt = item.pjxt == 1?'窗口评价':item.pjxt == 2?'自助服务终端':item.pjxt == 3?'背靠背评价':item.pjxt == 4?'微官网':item.pjxt == 5?'好差评':'一体化评价'
item.source = item.source == 1?'安卓': item.source == 2?'导视机':'微信'
})
let tableColumns = JSON.parse(JSON.stringify(this.tableHeaders));
let newTableData = tableData.map(item => {
let obj = {};
for (let key in item) {
obj[key] = item[key];
}
return obj;
})
let exprotExcelName = `${this.nowDay} / ${this.nowTime} / ${this.$route['meta']['title'] || '报表信息统计'}`;
this.exportExcel(tableColumns, newTableData, exprotExcelName);
}
},
delTable(){
this.visible = true;
if(!this.tableSelectedRows.length){
this.content = '一条评论都没有选中'
}else{
this.content = '此操作将删除这些评价信息,是否继续?'
let arr = []
this.tableSelectedRows.forEach(item => {
arr.push(item.id)
});
this.delId = arr
}
},
methods: {
togetEvaDetil(){
getEvaDetil({
id:this.delId
}).then(res=>{
{
this.delId=null
this.visible = false;
// 要刷新页面
this.togetevalist()
}
})
},
togetQueEvaData(record){
getQueEvaData({
id:record.id
}).then(res=>{
const {code,data} = res
if(code==1){
this.$refs.HandlingDetails.queEvaData = data
}
})
},
togetEvaData(id){
getEvaData({
id:id
}).then(res=>{
const {code,data} = res
if(code==1){
this.$refs.HandlingDetails.queEvaData = data
}
})
},
togetevalist(){
// 拼接评价选项
let chooseStr = this.evaChoose.join(',')
// 要先拼接评价来源
let fromString = this.evaFrom.join(',')
getEvaList({
page:this.tablePagination.current,
size:this.tablePagination.pageSize,
type:'ckpj',
option_id:chooseStr,
pjxt:fromString,//传0代表全部
time:this.evaDates,
info:this.searchName
}).then((res)=>{
const{code,data} = res;
if(code == 1){
this.tableSourceData = data.data.data
this.evaCount = data.count
this.tablePagination.total = data.count
}
})
},
changeEvaFrom(val){
if(val.length){
this.evaFrom = val;
}else{
this.evaFrom = [0]
}
},
changeEvaChoose(val){
this.evaChoose = val
},
rangePickerChange(val) {
console.log(val);
this.evaDates = [this.$moment(val[0]).format("YYYY-MM-DD"),this.$moment(val[1]).format("YYYY-MM-DD")]
},
QueueState(type) {
......@@ -188,21 +336,31 @@ export default {
}
},
//详情模块
openHandlingDetails() {
openHandlingDetails(record) {
// 判断为窗口屏或者其他状况,调用不同接口
if(record.pjxt==1){
this.$refs.HandlingDetails.modalInfo.title = "办理明细";
this.$refs.HandlingDetails.modalInfo.show = 1;
this.togetQueEvaData(record)
}else{
this.$refs.HandlingDetails.modalInfo.title = "评价详情";
this.$refs.HandlingDetails.modalInfo.show = 2;
this.togetEvaData(record.id)
}
this.$refs.HandlingDetails.modalInfo.visible = true;
},
//删除模态框
showModal(record) {
console.log(record)
this.visible = true;
},
//
handleOk(e) {
console.log(e);
this.visible = false;
this.delId = record.id
},
},
watch:{
tablePagination(){
this.togetevalist()
}
}
};
</script>
......
......@@ -2,34 +2,36 @@
<div class="callRecord-Container">
<div class="header_box">
<div>
<a-button type="success" @click="exportTable">
<a-button type="success" @click="toexportTable">
<span>{{ tableSelectedRows.length ? "导出" : "导出全部" }}</span>
</a-button>
<b>填单次数:<i>233</i></b>
<sub>统计时间段:2020.09.09~2021.09.09</sub>
<b>填单次数:<i>{{tablePagination.total}}</i></b>
<sub>统计时间段:{{BegindAndEndTime[0]}}~{{BegindAndEndTime[1]}}</sub>
</div>
<span>
<a-input-group compact>
<a-select default-value="Zhejiang" style="width:25%">
<a-select-option value="Zhejiang">
<a-space>
<!-- <a-input-group compact> -->
<a-select :default-value="1" style="width:25%" @change="changeSearchType">
<a-select-option :value="1">
按事项
</a-select-option>
<a-select-option value="Jiangsu">
<a-select-option :value="2">
按材料
</a-select-option>
</a-select>
<a-input style="width:74.3%" v-model="searchName" placeholder="请输入评价人姓名或窗口编号搜索">
<a-input style="width:73%" v-model="searchName" placeholder="请输入评价人姓名或窗口编号搜索">
<a-icon slot="prefix" type="search" />
</a-input>
</a-input-group>
<a-range-picker format="YYYY年MM月DD日" class="range_picker_style" @change="rangePickerChange"
v-model="BegindAndEndTime">
<!-- </a-input-group> -->
<a-range-picker format="YYYY年MM月DD日" class="range_picker_style" @change="rangePickerChange">
</a-range-picker>
<a-select placeholder="全部状态">
<a-select-option value="001"> 打印 </a-select-option>
<a-select-option value="002"> 在线提交 </a-select-option>
<a-select placeholder="全部状态" @change="changeStatu">
<a-select-option :value="0"> 全部类型 </a-select-option>
<a-select-option :value="1"> 打印 </a-select-option>
<a-select-option :value="2"> 在线提交 </a-select-option>
</a-select>
<a-button type="primary">搜索</a-button>
<a-button type="primary" @click="togetPrintList">搜索</a-button>
</a-space>
</span>
</div>
<div class="main">
......@@ -40,18 +42,18 @@
:columns="tableHeaders" :dataSource="tableSourceData">
<template slot="事项名称" slot-scope="text, record, index">
<div>
机动车登记证、行驶证核发
{{record.matterName?record.matterName:'--'}}
</div>
<div class="tabFont">
事项全称:机动车登记证、行驶证审查、办理、核发
事项全称:{{record.matterFullName?record.matterFullName:"--"}}
</div>
</template>
<template slot="材料名称" slot-scope="text, record, index">
<div>
分公司登记申请书
{{record.materialName?record.materialName:'--'}}
</div>
<div class="tabFont">
样表全称:分公司登记、变更、注销一张表申请书
样表全称:{{record.materialFullName?record.materialFullName:"--"}}
</div>
</template>
</a-table>
......@@ -61,6 +63,8 @@
<script>
import table from "@/mixins/table";
import { getPrintList } from "@/api/dataAdmin";
export default {
mixins: [table],
......@@ -78,7 +82,7 @@ export default {
},
{
title: "事项名称",
// align: "center",
align: "center",
dataIndex: "事项名称",
width: 300,
scopedSlots: {
......@@ -87,8 +91,8 @@ export default {
},
{
title: "材料名称",
// align: "center",
dataIndex: "材料名称",
align: "center",
dataIndex: "materialName",
width: 300,
scopedSlots: {
customRender: "材料名称",
......@@ -97,41 +101,47 @@ export default {
{
title: "用户姓名",
align: "center",
dataIndex: "用户姓名",
dataIndex: "idName",
},
{
title: "身份证号",
align: "center",
dataIndex: "身份证号",
dataIndex: "idCard",
},
{
title: "手机号码",
align: "center",
dataIndex: "手机号码",
dataIndex: "mobile",
},
{
title: "设备名称",
align: "center",
dataIndex: "设备名称",
dataIndex: "deviceName",
},
{
title: "结果类型",
align: "center",
dataIndex: "结果类型",
dataIndex: "type",
customRender: (text, record, index) => {
return text==1?'本地打印':'在线打印'
},
{
title: "操作时间",
align: "center",
dataIndex: "操作时间",
},
{
title: "累计耗时",
title: "操作时间",
align: "center",
dataIndex: "累计耗时",
dataIndex: "createTime",
},
// {
// title: "累计耗时",
// align: "center",
// dataIndex: "累计耗时",
// },
],
BegindAndEndTime: [],
searchName: undefined,
searchType:1,
siteId:undefined,
statu:undefined
};
},
components: {
......@@ -139,22 +149,109 @@ export default {
},
mounted() {
this.setMoment();
for (let key = 0; key < 20; key++) {
this.tableSourceData.push({
id: `00${key + 1}`,
用户姓名: `唐${key + 1}`,
身份证号: `510311199909093333`,
手机号码: `13888888888`,
设备名称: `一楼数字填单机`,
结果类型: `打印`,
操作时间: `2021-09-09 09:09:0${key + 1}`,
累计耗时: `10分20秒`,
});
this.BegindAndEndTime=[this.$moment(new Date()).format("YYYY-MM-DD"),this.$moment(new Date()).format("YYYY-MM-DD")]
this.siteId = JSON.parse(localStorage.getItem('siteId'))
this.togetPrintList()
},
watch:{
tablePagination(){
this.togetPrintList()
}
},
methods: {
//导出
toexportTable() {
let tableData = [];
if (this.tableSelectedRows.length == 0) {
let pramse = {
page:this.tablePagination.current,
size:this.tablePagination.pageSize,
siteId:this.siteId,
matterName:"%%",
materialName:"%%",
createTimeStart:this.BegindAndEndTime[0],
createTimeEnd:this.BegindAndEndTime[1],
}
if(this.statu && this.statu!=0){
pramse.type=this.statu
}
if(this.searchType==1 && this.searchName){
pramse.matterName = '%'+this.searchName+'%'
}else if(this.searchName){
pramse.materialName='%'+this.searchName+'%'
}
getPrintList(pramse).then((res)=>{
const{code,data} = res;
if(code == 1){
tableData = JSON.parse(JSON.stringify(data.data));
tableData.forEach(item => {
item.type = item.type==1?"本地打印":"在线打印"
});
let tableColumns = JSON.parse(JSON.stringify(this.tableHeaders));
let newTableData = tableData.map(item => {
let obj = {};
for (let key in item) {
obj[key] = item[key];
}
return obj;
})
let exprotExcelName = `${this.nowDay} / ${this.nowTime} / ${this.$route['meta']['title'] || '报表信息统计'}`;
this.exportExcel(tableColumns, newTableData, exprotExcelName);
}
})
} else {
tableData = JSON.parse(JSON.stringify(this.tableSelectedRows));
tableData.forEach(item => {
item.type = item.type==1?"本地打印":"在线打印"
});
let tableColumns = JSON.parse(JSON.stringify(this.tableHeaders));
let newTableData = tableData.map(item => {
let obj = {};
for (let key in item) {
obj[key] = item[key];
}
return obj;
})
let exprotExcelName = `${this.nowDay} / ${this.nowTime} / ${this.$route['meta']['title'] || '报表信息统计'}`;
this.exportExcel(tableColumns, newTableData, exprotExcelName);
}
},
changeStatu(val){
this.statu = val
},
changeSearchType(val){
this.searchType = val
},
togetPrintList(){
let pramse = {
page:this.tablePagination.current,
size:this.tablePagination.pageSize,
siteId:this.siteId,
matterName:"%%",
materialName:"%%",
createTimeStart:this.BegindAndEndTime[0],
createTimeEnd:this.BegindAndEndTime[1],
}
if(this.statu && this.statu!=0){
pramse.type=this.statu
}
if(this.searchType==1 && this.searchName){
pramse.matterName = '%'+this.searchName+'%'
}else if(this.searchName){
pramse.materialName='%'+this.searchName+'%'
}
getPrintList(pramse).then((res)=>{
const{code,data} = res;
if(code==1){
console.log(res);
this.tableSourceData = data.data
this.tablePagination.total = data.total
}
})
},
rangePickerChange(val) {
console.log(val);
this.BegindAndEndTime=[this.$moment(val[0]).format("YYYY-MM-DD"),this.$moment(val[1]).format("YYYY-MM-DD")]
},
QueueState(type) {
......
......@@ -10,61 +10,57 @@
</div>
<div class="card">
<div class="cardTitle">纠错标题 </div>
<div class="cardContent">关于《四川省2022年公共卫生特别服务岗项目实施方案》(川卫发〔2022〕7号)的问题</div>
<div class="cardContent">{{fromData.title}}</div>
</div>
<div class="infoDetail">
<div class="card">
<div class="cardTitle">建议类型 </div>
<div class="cardContent">部门建议</div>
<div class="cardContent">{{fromData.type==1?'部门建议':fromData.type==2?'办事建议':fromData.type==3?'网站建议':fromData.type==4?'我要就错':fromData.type==5?'我要投诉':'我要咨询'}}</div>
</div>
<div class="card">
<div class="cardTitle">真实姓名</div>
<div class="cardContent">刘昊然 </div>
<div class="cardContent">{{fromData.upname}} </div>
</div>
<div class="card">
<div class="cardTitle"> 身份证号 </div>
<div class="cardContent"> 513821196302302154</div>
<div class="cardContent">{{fromData.idcard}}</div>
</div>
<div class="card">
<div class="cardTitle"> 电子邮箱 </div>
<div class="cardContent">1512685492@qq.com</div>
<div class="cardContent">{{fromData.upmail}}</div>
</div>
</div>
<div class="card">
<div class="cardTitle"> 联系地址 </div>
<div class="cardContent">四川省成都市高新区天益街1号理想中心1708号</div>
<div class="cardContent">{{fromData.address}}</div>
</div>
<div class="card">
<div class="cardTitle"> 事件发生地 </div>
<div class="cardContent">四川省武侯区市武侯一路大地世纪6栋631号</div>
<div class="cardContent">{{fromData.thing_address}}</div>
</div>
<div class="card">
<div class="cardTitle"> 具体内容 </div>
<div class="cardContent">《四川省2022年新冠肺炎疫情防控应急岗位招募实施方案》(川卫人教函〔2022〕84号)有关规定,(二)就业支持政策其中:7.
享受应届毕业生相关政策。参加公卫特别岗项目前无工作经历的人员服务满3周年且年度考核合格的,两年内参加机关和企事业单位招录(聘)、自主创业、落户等方面可同等享受应届毕业生相关政策。问题:无工作经历的人员是指从大学毕业到考上本次岗位之间没有交社保为准吗?比如我毕业后找了份工作,而且有交社保一个月再辞职,然后考上本岗位是否能享受后面的应届毕业生身份?
</div>
<div class="cardContent">{{fromData.content}}</div>
</div>
<div class="card">
<div class="cardTitle"> 附件 </div>
<div class="cardContent">
<img src="@/assets/images/logo.png" alt="">
<img src="@/assets/images/logo.png" alt="">
<img src="@/assets/images/logo.png" alt="">
<img src="@/assets/images/logo.png" alt="">
<div class="cardContent" v-if="fromData.url">
<img v-for="(item,index) in fromData.url" :key="index"
:src="process.env.VUE_APP_API_BASE_URL+item">
</div>
</div>
<div class="infoDetail">
<div class="card">
<div class="cardTitle"> 是否公开 </div>
<div class="cardContent"></div>
<div class="cardContent">{{fromData.valid==1?'':''}}</div>
</div>
<div class="card">
<div class="cardTitle"> 是否保密 </div>
<div class="cardContent"></div>
<div class="cardContent">{{fromData.secrecy==1?'':''}}</div>
</div>
<div class="card">
<div class="cardTitle"> 提交日期 </div>
<div class="cardContent">2022-09-01 11:30:00 </div>
<div class="cardContent">{{fromData.create_time}}</div>
</div>
</div>
</div>
......@@ -78,17 +74,14 @@
所属部门<span>(非必选)</span>
</div>
<div class="cardContent">
市税务局
{{fromData.deptName?fromData.deptName:"--"}}
</div>
</div>
<div class="card">
<div class="cardTitle">
回复内容<span>(必填)</span>
</div>
<div class="cardContent">
《四川省2022年新冠肺炎疫情防控应急岗位招募实施方案》(川卫人教函〔2022〕84号)有关规定,(二)就业支持政策其中:7.
享受应届毕业生相关政策。参加公卫特别岗项目前无工作经历的人员服务满3周年且年度考核合格的,两年内参加机关和企事业单位招录(聘)、自主创业、落户等方面可同等享受应届毕业生相关政策。问题:无工作经历的人员是指从大学毕业到考上本次岗位之间没有交社保为准吗?比如我毕业后找了份工作,而且有交社保一个月再辞职,然后考上本岗位是否能享受后面的应届毕业生身份?
</div>
<div class="cardContent"></div>
</div>
</div>
</div>
......@@ -116,6 +109,7 @@ export default {
},
data() {
return {
fromData:{}
};
},
methods: {
......
......@@ -2,33 +2,41 @@
<div class="callRecord-Container">
<div class="header_box">
<div>
<a-button type="success" @click="exportTable">
<a-button type="success" @click="toexportTable">
<span>{{ tableSelectedRows.length ? "导出" : "导出全部" }}</span>
</a-button>
<b>建议次数:<i>233</i></b>
<b>回复次数:<i>233</i></b>
<sub>统计时间段:2020.09.09~2021.09.09</sub>
<b>建议次数:<i>{{JYCount}}</i></b>
<b>回复次数:<i>{{HFCount}}</i></b>
<sub>统计时间段:{{this.timeList[0]}}~{{this.timeList[1]}}</sub>
</div>
<span>
<a-checkbox>
<a-space>
<a-checkbox @change="changeReply">
只看未回复
</a-checkbox>
<a-select placeholder="全部类型">
<a-select-option value="001"> 打印 </a-select-option>
<a-select-option value="002"> 在线提交 </a-select-option>
<a-select placeholder="全部类型" @change="changeType">
<a-select-option value="1"> 部门建议 </a-select-option>
<a-select-option value="2"> 办事建议 </a-select-option>
<a-select-option value="3"> 网站建议 </a-select-option>
<a-select-option value="4"> 我要就错 </a-select-option>
<a-select-option value="5"> 我要投诉 </a-select-option>
</a-select>
<a-select placeholder="全部来源">
<a-select-option value="001"> 打印 </a-select-option>
<a-select-option value="002"> 在线提交 </a-select-option>
<a-select placeholder="全部来源" @change="changeDevice">
<a-select-option value="1"> 评价系统 </a-select-option>
<a-select-option value="2"> 导视系统 </a-select-option>
<a-select-option value="3"> 自助服务系统 </a-select-option>
<a-select-option value="4"> 微官网 </a-select-option>
<a-select-option value="5"> 数字填单系统 </a-select-option>
</a-select>
<a-range-picker style="width:250px;" format="YYYY年MM月DD日" class="range_picker_style"
@change="rangePickerChange" v-model="BegindAndEndTime">
@change="rangePickerChange">
</a-range-picker>
<a-input style="width:250px;" v-model="searchName" placeholder="请输入标题或姓名关键字搜索">
<a-icon slot="prefix" type="search" />
</a-input>
<a-button type="primary">搜索</a-button>
<a-button type="primary" @click="togetWLLZCount">搜索</a-button>
</a-space>
</span>
</div>
<div class="main">
......@@ -38,17 +46,18 @@
}" :scroll="{ y: 590 }" :pagination="tablePagination" @change="pagTableChange" :loading="tableLoading"
:columns="tableHeaders" :dataSource="tableSourceData">
<template slot="操作" slot-scope="text, record, index">
<a-button type="link" @click="showDrawer">详情</a-button>
<a-button type="link" @click="showDrawer(record)">详情</a-button>
</template>
</a-table>
</div>
<FormDetails @onClose="onClose" @showDrawer="showDrawer" :visible="visible"/>
<FormDetails ref="FormDetails" @onClose="onClose" @showDrawer="showDrawer" :visible="visible"/>
</div>
</template>
<script>
import table from "@/mixins/table";
import FormDetails from "./components/FormDetails.vue";
import {getWLLZList,getWLLZCount,getWLLZInfo} from "@/api/dataAdmin"
export default {
mixins: [table],
name: "networkForm",
......@@ -65,59 +74,71 @@ export default {
},
{
title: "建议标题",
// align: "center",
dataIndex: "建议标题",
align: "center",
dataIndex: "title",
width: "300px"
},
{
title: "建议类型",
align: "center",
dataIndex: "建议类型",
dataIndex: "type",
customRender: (text, record, index) => {
return text==1?'部门建议':text==2?'办事建议':text==3?'网站建议':text==4?'我要就错':text==5?'我要投诉':'我要咨询'
},
},
{
title: "真实姓名",
align: "center",
dataIndex: "真实姓名",
dataIndex: "upname",
},
{
title: "联系电话",
align: "center",
dataIndex: "联系电话",
dataIndex: "upphone",
},
{
title: "是否公开",
align: "center",
dataIndex: "是否公开",
dataIndex: "valid",
customRender: (text, record, index) => {
return text==1?'':''
},
},
{
title: "是否保密",
align: "center",
dataIndex: "是否保密",
dataIndex: "secrecy",
customRender: (text, record, index) => {
return text==1?'':''
},
},
{
title: "提交日期",
align: "center",
dataIndex: "提交日期",
dataIndex: "create_time",
},
{
title: "是否回复",
align: "center",
dataIndex: "是否回复",
dataIndex: "status",
customRender: (text, record, index) => {
return text==1?'':''
},
},
{
title: "回复人",
align: "center",
dataIndex: "回复人",
dataIndex: "reply_name",
},
{
title: "回复时间",
align: "center",
dataIndex: "回复时间",
dataIndex: "update_time",
},
{
title: "所属部门",
align: "center",
dataIndex: "所属部门",
dataIndex: "dateName",
},
{
title: "操作",
......@@ -128,9 +149,15 @@ export default {
},
},
],
BegindAndEndTime: [],
searchName: undefined,
visible: false,
nowSite:null,//当前站点
isReply:false,//是否回复
nowType:null,//当前类型
nowDevice:null,// 来源
timeList:[],// 时间
JYCount:0,//建议次数
HFCount:0,//回复次数
};
},
components: {
......@@ -138,41 +165,141 @@ export default {
},
mounted() {
this.setMoment();
for (let key = 0; key < 20; key++) {
this.tableSourceData.push({
id: `00${key + 1}`,
建议标题: `关于《四川省2022年公共卫生特别服务岗项目实施方案》(川卫发〔2022〕7号)的问题`,
建议类型: `部门建议`,
真实姓名: `刘德发`,
联系电话: `1388888888888`,
是否公开: `是`,
是否保密: `否`,
提交日期: `2022-09-26 11:00:00`,
是否回复: `是`,
回复人: `刘德华`,
回复时间: `2022-09-26 11:00:00`,
所属部门: `防疫指挥部`,
});
// 设置默认时间为今天
this.timeList=[this.$moment(new Date()).format("YYYY-MM-DD"),this.$moment(new Date()).format("YYYY-MM-DD")]
this.nowSite = localStorage.getItem('siteId');
this.togetWLLZCount()
},
watch:{
tablePagination(){
this.togetWLLZCount()
}
},
methods: {
rangePickerChange(val) {
console.log(val);
// 重写导出
toexportTable() {
let tableData = [];
if (this.tableSelectedRows.length == 0) {
getWLLZList({
page:1,
size:-1,
status:this.isReply?0:"",
type:this.nowType,
device:this.nowDevice,
keyword:this.searchName,
time:this.timeList,
}).then((res)=>{
const {code,data} = res;
if(code==1){
// 改变输出内容
data.data.forEach(item => {
item.type = item.type==1?'部门建议':item.type==2?'办事建议':item.type==3?'网站建议':item.type==4?'我要就错':item.type==5?'我要投诉':'我要咨询';
item.valid = item.valid==1?'':'';
item.secrecy = item.secrecy==1?'':'';
item.status = item.status==1?'':'';
});
tableData = JSON.parse(JSON.stringify(data.data));
let tableColumns = JSON.parse(JSON.stringify(this.tableHeaders));
let newTableData = tableData.map(item => {
let obj = {};
for (let key in item) {
obj[key] = item[key];
}
return obj;
})
let exprotExcelName = `${this.nowDay} / ${this.nowTime} / ${this.$route['meta']['title'] || '报表信息统计'}`;
this.exportExcel(tableColumns, newTableData, exprotExcelName);
}
})
} else {
tableData = JSON.parse(JSON.stringify(this.tableSelectedRows));
tableData.forEach(item => {
item.type = item.type==1?'部门建议':item.type==2?'办事建议':item.type==3?'网站建议':item.type==4?'我要就错':item.type==5?'我要投诉':'我要咨询';
item.valid = item.valid==1?'':'';
item.secrecy = item.secrecy==1?'':'';
item.status = item.status==1?'':'';
});
let tableColumns = JSON.parse(JSON.stringify(this.tableHeaders));
let newTableData = tableData.map(item => {
let obj = {};
for (let key in item) {
obj[key] = item[key];
}
return obj;
})
let exprotExcelName = `${this.nowDay} / ${this.nowTime} / ${this.$route['meta']['title'] || '报表信息统计'}`;
this.exportExcel(tableColumns, newTableData, exprotExcelName);
}
},
changeReply(e){
this.isReply = e.target.checked
},
changeType(e){
this.nowType = e
},
changeDevice(e){
this.nowDevice=e
},
QueueState(type) {
switch (type) {
case 0:
return "type1";
case 1:
return "type2";
default:
return "type0";
togetWLLZInfo(id){
getWLLZInfo({
id:id
}).then((res)=>{
console.log(res);
const{code,data}=res;
if(code==1){
this.$refs.FormDetails.fromData=data
}
})
},
togetWLLZCount(){
let option = {
siteid:this.nowSite,
time:this.timeList,
keyword:this.searchName,
type:this.nowType,
device:this.nowDevice,
status:this.isReply?0:"",//0处理,空为不处理
}
getWLLZCount(option).then((res)=>{
const {code,data} = res;
if(code==1){
this.JYCount = data.all_count,
this.HFCount = data.hf_count
}
})
let params = {
page:this.tablePagination.current,
size:this.tablePagination.pageSize,
status:this.isReply?0:"",
type:this.nowType,
device:this.nowDevice,
keyword:this.searchName,
time:this.timeList,
}
getWLLZList(params).then((res)=>{
console.log(res);
const {code,data} = res;
if(code==1){
this.tableSourceData = data.data
this.tablePagination.total = data.total
}
})
},
rangePickerChange(val) {
this.timeList = [this.$moment(val[0]).format("YYYY-MM-DD"),this.$moment(val[1]).format("YYYY-MM-DD")]
},
showDrawer() {
showDrawer(record) {
this.visible = true;
this.togetWLLZInfo(record.id)
},
onClose() {
this.visible = false;
......
......@@ -5,85 +5,93 @@
<a-button type="success" @click="exportTable">
<span>{{ tableSelectedRows.length ? "导出" : "导出全部" }}</span>
</a-button>
<b>叫号次数:<i>233次</i></b>
<sub>统计时间段:2020.09.09~2021.09.09</sub>
<b>叫号次数:<i>{{ tablePagination.total }}</i></b>
<sub>统计时间段:{{ searchForm.time[0] }}~{{ searchForm.time[1] }}</sub>
</div>
<span>
<a-select default-value="001">
<!-- <a-select-option
v-for="(item, index) of selectOptions"
:key="index"
:value="item.value"
>
{{ item.label }}
</a-select-option> -->
<a-select-option value="001"> 设备001 </a-select-option>
<a-select-option value="002"> 设备002 </a-select-option>
<a-select v-model="searchForm.id" style="width: 120px">
<a-select-option value=""> 全部设备 </a-select-option>
<a-select-option v-for="item in deviceData" :key="item.id" :value="item.id">
{{ item.name }}
</a-select-option>
</a-select>
<a-select default-value="001">
<!-- <a-select-option
v-for="(item, index) of selectOptions"
:key="index"
:value="item.value"
>
{{ item.label }}
</a-select-option> -->
<a-select-option value="001"> 状态001 </a-select-option>
<a-select-option value="002"> 状态002 </a-select-option>
<a-select v-model="searchForm.style" style="width: 120px">
<a-select-option value=""> 全部状态 </a-select-option>
<a-select-option v-for="v in style" :key="v.key" :value="v.key">{{
v.name
}}</a-select-option>
</a-select>
<a-range-picker
format="YYYY年MM月DD日"
class="range_picker_style"
@change="rangePickerChange"
v-model="BegindAndEndTime"
>
<a-range-picker valueFormat="YYYY-MM-DD" v-model="searchForm.time">
</a-range-picker>
<a-input
v-model="searchName"
placeholder="请输入排队编号或申报人姓名搜索"
>
<a-input v-model="searchForm.flownum" placeholder="请输入排队编号搜索">
<a-icon slot="prefix" type="search" />
</a-input>
<a-button type="primary" >搜索</a-button>
<a-button type="primary" @click="getDataList">搜索</a-button>
<a-button @click="resetBtn">重置</a-button>
</span>
</div>
<div class="main">
<a-table
size="small"
bordered
:row-key="(record) => record.id"
:row-selection="{
<a-table size="small" bordered :row-key="(record) => record.id" :row-selection="{
selectedRowKeys: tableSelectedKeys,
onChange: onSelectChange,
}"
:scroll="{ y: 590 }"
:pagination="tablePagination"
@change="pagTableChange"
:loading="tableLoading"
:columns="tableHeaders"
:dataSource="tableSourceData"
>
<template slot="shenbaoren" slot-scope="text, record, index">
<a-button type="link" @click="openDeclarant">{{ text }}</a-button>
}" :scroll="{ y: 590 }" :pagination="tablePagination" @change="changeTablePage" :loading="tableLoading"
:columns="tableHeaders" :dataSource="tableList">
<!-- 序号 -->
<span slot="num" slot-scope="text, record, index">{{
(tablePagination.current - 1) * tablePagination.pageSize + index + 1
}}</span>
<!-- 申报人 -->
<template slot="people_name" slot-scope="text">
<a v-if="text.people_name" @click="openDeclarant(text)">{{
text.people_name
}}</a>
<span v-else>--</span>
</template>
<!-- 联系方式 -->
<template slot="people_phone" slot-scope="text">
{{ text.people_phone ? text.people_phone : "--" }}
</template>
<!-- 取号设备 -->
<template slot="device_name" slot-scope="text">
{{ text.device_name ? text.device_name : "--" }}
</template>
<!-- 办理业务 -->
<template slot="business" slot-scope="text">
<a v-if="text.business" @click="openBusiness(text.business, text.businessid)">{{ text.business }}</a>
<span v-else>--</span>
</template>
<template slot="banliyewu" slot-scope="text, record, index">
<a-button type="link" @click="openBusiness">{{ text }}</a-button>
<!-- 办理开始时间 -->
<template slot="calltime" slot-scope="text">
{{ text.calltime ? text.calltime : "--" }}
</template>
<template slot="gongzuorenyuan" slot-scope="text, record, index">
<a-button type="link" @click="openWorkpeople">{{ text }}</a-button>
<!-- 办理窗口 -->
<template slot="window_name" slot-scope="text">
{{ text.window_name ? text.window_name : "--" }}
</template>
<template slot="zhuangtai" slot-scope="text, record, index">
<a-button type="link" :class="[QueueState(index)]">{{
text
}}</a-button>
<!-- 工作人员 -->
<template slot="workman_name" slot-scope="text">
<a v-if="text.workman_name" @click="openWorkpeople(text.workmanid)">{{
text.workman_name
}}</a>
<span v-else>--</span>
</template>
<template slot="operation" slot-scope="text, record, index">
<a-button type="link" @click="openHandlingDetails"
>详细信息{{ record.id }}</a-button
>
<!-- 办理结束时间 -->
<template slot="endtime" slot-scope="text">
{{ text.endtime ? text.endtime : "--" }}
</template>
<!-- 操作 -->
<template slot="action" slot-scope="text">
<a @click="openHandlingDetails(text.id)">详细信息</a>
</template>
<!-- 状态 -->
<template slot="style" slot-scope="text">
<span :class="{
'stand-line': text.style === 0,
'on-transact': text.style === 1,
'on-end': text.style === 4,
}">
{{ $codeMap.queueState[text.style] }}
</span>
</template>
</a-table>
<UserInfo ref="UserInfo" />
......@@ -96,10 +104,15 @@
<script>
import table from "@/mixins/table";
import moment from "moment";
import UserInfo from "./components/userInfo.vue";
import BusinessInfo from "./components/businessInfo.vue";
import WorkpeopleInfo from "./components/workpeopleInfo.vue";
import HandlingDetails from "./components/HandlingDetails.vue";
import {
getCalllist, getCallQueList, getBusinessEvent, getQueueInfo,
getWorkerInfo, getPeopleanalyse, getWorkmananalyse
} from "@/api/dataAdmin"
export default {
mixins: [table],
name: "PortalAdminVuecallRecord",
......@@ -108,95 +121,128 @@ export default {
tableHeaders: [
{
title: "序号",
dataIndex: "index",
width: "60px",
key: "index",
width: "65px",
align: "center",
customRender: (text, record, index) => `${index + 1}`,
scopedSlots: {
customRender: "num",
},
},
{
title: "排队编号",
align: "center",
dataIndex: "paiduibianhao",
dataIndex: "flownum",
},
{
title: "申报人",
align: "center",
dataIndex: "shenbaoren",
scopedSlots: {
customRender: "shenbaoren",
customRender: "people_name",
},
},
{
title: "联系方式",
align: "center",
dataIndex: "lianxifangshi",
scopedSlots: {
customRender: "people_phone",
},
},
{
title: "取号时间",
width: "115px",
align: "center",
dataIndex: "quhaoshijian",
dataIndex: "taketime",
},
{
title: "办理业务",
align: "center",
dataIndex: "banliyewu",
scopedSlots: {
customRender: "banliyewu",
customRender: "business",
},
},
{
title: "办理开始时间",
width: "115px",
width: "8%",
align: "center",
dataIndex: "banlikaishishijian",
scopedSlots: {
customRender: "calltime",
},
},
{
title: "呼叫设备",
align: "center",
dataIndex: "hujiaoshebei",
scopedSlots: {
customRender: "device_name",
},
},
{
title: "办理窗口",
align: "center",
dataIndex: "banlichuangkou",
scopedSlots: {
customRender: "window_name",
},
},
{
title: "工作人员",
align: "center",
dataIndex: "gongzuorenyuan",
scopedSlots: {
customRender: "gongzuorenyuan",
customRender: "workman_name",
},
},
{
title: "办理结束时间",
width: "115px",
width: "8%",
align: "center",
dataIndex: "banlijieshushijian",
scopedSlots: {
customRender: "endtime",
},
},
{
title: "状态",
align: "center",
dataIndex: "zhuangtai",
scopedSlots: {
customRender: "zhuangtai",
customRender: "style",
},
},
{
title: "操作",
align: "center",
width: "110px",
dataIndex: "operation",
scopedSlots: {
customRender: "operation",
customRender: "action",
},
},
],
BegindAndEndTime: [],
searchName: undefined,
//设备数据
deviceData: [],
// 搜索数据
searchForm: {
id: "", // 排队机id
style: "", // 状态
time: [moment().format("YYYY-MM-DD"), moment().format("YYYY-MM-DD")], // 时间区间
flownum: "", // 排号编码
},
//状态
style: [
{
key: 0,
name: "排队中",
},
{
key: 1,
name: "办理中",
},
{
key: 4,
name: "办理完成",
},
],
//Form数据列表
tableList: [],
obj: {
0: "排队中",
1: "办理中",
4: "办理完成",
},
};
},
components: {
......@@ -207,38 +253,90 @@ export default {
},
mounted() {
this.setMoment();
for (let key = 0; key < 20; key++) {
this.tableSourceData.push({
id: `00${key + 1}`,
paiduibianhao: `A0001${key + 1}`,
shenbaoren: `张三 00${key + 1}`,
lianxifangshi: `13080888888${key + 1}`,
quhaoshijian: `2021-01-15 12:00:00`,
hujiaoshebei: `一楼排队机 ${key + 1}`,
banliyewu: `公安户籍类 ${key + 1}`,
banlikaishishijian: `2021-01-15 12:00:00`,
banlichuangkou: `01/东区1 ${key + 1}`,
gongzuorenyuan: `刘明洋 ${key + 1}`,
banlijieshushijian: `2021-01-15 12:00:00`,
zhuangtai: `排队中 ${key + 1}`,
});
}
this.getCalllistArr()
this.getCallQueListArr()
},
methods: {
openDeclarant() {
//搜索按钮
getDataList() {
this.tablePagination.current = 1
this.getCallQueListArr();
},
//重置按钮
resetBtn() {
this.tablePagination.current = 1
this.searchForm = {
id: "", // 排队机id
style: "", // 状态
time: [moment().format("YYYY-MM-DD"), moment().format("YYYY-MM-DD")], // 时间区间
flownum: "", // 排号编码
}
this.getCallQueListArr()
},
//获取排号机设备列表
async getCalllistArr() {
await getCalllist({ page: 1, size: -1 }).then((res) => {
// console.log(res.data.data)
this.deviceData = res.data.data;
});
},
// 获取列表数据
getCallQueListArr() {
getCallQueList({
page: this.tablePagination.current,
size: this.tablePagination.pageSize,
...this.searchForm,
}).then((res) => {
this.tableList = res.data.data;
this.tablePagination.total = res.data.total;
});
},
//分页
changeTablePage(page) {
this.pagTableChange(page)
this.getCallQueListArr()
},
//用户模态框
async openDeclarant(item) {
await getPeopleanalyse({ peopleid: item.peopleid, time: this.searchForm.time }).then(res => {
if (res.code = 1) {
this.$refs.UserInfo.dataList = { ...item, ...res.data }
// console.log(this.$refs.UserInfo.dataList)
}
})
this.$refs.UserInfo.modalInfo.title = "用户信息";
this.$refs.UserInfo.modalInfo.width = "25%";
this.$refs.UserInfo.modalInfo.visible = true;
},
openBusiness() {
//业务关联模块
async openBusiness(business, id) {
await getBusinessEvent({ businessid: id, time: this.searchForm.time }).then(res => {
this.$refs.BusinessInfo.dataList = res.data
})
this.$refs.BusinessInfo.modalInfo.title = "业务分析";
this.$refs.BusinessInfo.title = business
this.$refs.BusinessInfo.modalInfo.visible = true;
},
openWorkpeople() {
//工作人员信息模态框
async openWorkpeople(id) {
let a, b = {}
await getWorkerInfo({ id }).then(res => {
a = res.data
})
await getWorkmananalyse({ workmanid: id, time: this.searchForm.time }).then(res => {
b = res.data
})
this.$refs.WorkpeopleInfo.infoData = { ...a, ...b }
console.log(this.$refs.WorkpeopleInfo.infoData)
this.$refs.WorkpeopleInfo.modalInfo.title = "工作人员信息";
this.$refs.WorkpeopleInfo.modalInfo.visible = true;
},
openHandlingDetails() {
//详情信息抽屉
async openHandlingDetails(id) {
//获取排队叫号对应ID详情
await getQueueInfo({ id }).then(res => {
this.$refs.HandlingDetails.dataList = res.data
})
this.$refs.HandlingDetails.modalInfo.title = "办理明细";
this.$refs.HandlingDetails.modalInfo.visible = true;
},
......
......@@ -5,21 +5,23 @@
:getContainer="() => $refs.businessModal">
<div class="content">
<h1>{{ title }}</h1>
<em>关联事项({{ dataList.length }}</em>
<em v-if="dataList.matterlist">关联事项({{ dataList.matterlist.length }}</em>
<p>
<!-- {{ item.shixiangmingcheng }} -->
<template v-for="item in dataList.matterlist">
<p>{{ item }}</p>
</template>
</p>
<h4>
<span>受理次数<br /><i>12</i></span>
<span>办结次数<br /><i>12</i></span>
<span>好评率<br /><i>99%</i></span>
<span>受理次数<br /><i>{{ dataList.slcount }}</i></span>
<span>办结次数<br /><i>{{ dataList.bjcount }}</i></span>
<span>好评率<br /><i>{{ dataList.hplv }}</i></span>
</h4>
</div>
<template slot="footer">
<a-button type="primary" ghost @click="lookDetails">查看业务分析</a-button>
</template>
</a-modal>
</div>
</div>
</template>
<script>
......@@ -33,7 +35,6 @@ export default {
dataList: []
};
},
mounted() { },
methods: {
lookDetails() {
......
......@@ -11,26 +11,26 @@
:getContainer="() => $refs.userModal"
>
<div class="content">
<h1>{{ useInfo.name }}</h1>
<h1>{{ dataList.people_name}}</h1>
<p>
<span>{{ defaultInfoForm.Gender }}</span>
<span>{{ defaultInfoForm.Age }}</span>
<span>{{ defaultInfoForm.Phone }}</span>
<span>{{ dataList.people_sex }}</span>
<span>{{ dataList.age }}</span>
<span>{{ dataList.people_phone }}</span>
</p>
<h2>
<span
>预约次数<br /><i>{{ defaultInfoForm.yuyuecishu }}</i></span
>预约次数<br /><i>{{ dataList.ordernum }}</i></span
>
<span
>排队次数<br /><i>{{ defaultInfoForm.paiduicishu }}</i></span
>排队次数<br /><i>{{ dataList.quenum }}</i></span
>
<span
>关联业务<br /><i>{{ defaultInfoForm.guanlianyewu }}</i></span
>关联业务<br /><i>{{ dataList.bus_num}}</i></span
>
</h2>
</div>
<template slot="footer">
<a-button type="primary" ghost>查看TA的数据画像</a-button>
<a-button type="primary" ghost @click="openBlockchain">查看TA的数据画像</a-button>
<a-button type="primary" ghost @click="openBlockchain"
>区块链信息</a-button
>
......@@ -48,7 +48,7 @@ export default {
name: "PortalAdminVueUserInfo",
data() {
return {
useInfo:[]
dataList:[],
};
},
components: {
......@@ -58,7 +58,8 @@ export default {
mounted() {},
methods: {
openBlockchain() {
this.$refs.Blockchain.modalInfo.visible = true;
// this.$refs.Blockchain.modalInfo.visible = true;
this.$message.warning('暂未开放')
},
},
};
......
......@@ -14,15 +14,15 @@
<span><i class="lable">工号:</i>{{ infoData.number || "--" }}</span>
<span><i class="lable">所属部门:</i>{{ infoData.deptName || "--" }}</span>
<span><i class="lable">政治面貌:</i>{{ $codeMap.politicalStatus[infoData.politicalstatus] || "--" }}</span>
<span><i class="lable">电话:</i>{{ infoData.phone || "--" }}</span>
<span><i class="lable">星级:</i>{{ infoData.starlevel || "--" }}</span>
<span><i class="lable">电话:</i>{{ infoData.mobile || "--" }}</span>
<span><i class="lable">星级:</i>{{ infoData.starlevel +'' || "--" }} </span>
</div>
</div>
</div>
<h2>
<span>受理业务<br /><i>{{ "--" }}</i></span>
<span>评价次数<br /><i>{{ "--" }}</i></span>
<span>好评率<br /><i>{{ "--" }}</i></span>
<span>受理业务<br /><i>{{ infoData.slbusiness || "0" }}</i></span>
<span>评价次数<br /><i>{{ infoData.pjnum || "0" }}</i></span>
<span>好评率<br /><i>{{ infoData.hplv || "0" }}</i></span>
</h2>
</div>
<template slot="footer">
......@@ -31,7 +31,7 @@
</template>
</a-modal>
<Blockchain ref="Blockchain" />
</div>
</div>
</template>
<script>
......@@ -98,7 +98,7 @@ export default {
.lable {
display: inline-block;
font-style: normal;
width: 100px;
width: 70px;
text-align: right;
}
}
......
......@@ -2,10 +2,10 @@
<div class="queueRecord-Container">
<div class="header_box">
<div>
<a-button type="success" @click="exportTable">
<a-button type="success" @click="exportTable(tHeader, filterVal, style, downAllData)">
<span>{{ tableSelectedRows.length ? "导出" : "导出全部" }}</span>
</a-button>
<b>叫号次数:<i>{{ tablePagination.total }}</i></b>
<b>叫号次数:<i>{{ tablePagination.total }}</i> </b>
<sub>统计时间段:{{ searchForm.time[0] }}~{{ searchForm.time[1] }}</sub>
</div>
<span>
......@@ -57,7 +57,7 @@
</template>
<!-- 办理业务 -->
<template slot="business" slot-scope="text">
<a v-if="text.business" @click="openBusiness(text.business, text.businessId)">{{ text.business }}</a>
<a v-if="text.business" @click="openBusiness(text.business, text.businessid)">{{ text.business }}</a>
<span v-else>--</span>
</template>
<!-- 办理开始时间 -->
......@@ -99,7 +99,7 @@
<WorkpeopleInfo ref="WorkpeopleInfo" />
<HandlingDetails ref="HandlingDetails" />
</div>
</div>
</div>
</template>
<script>
......@@ -109,7 +109,10 @@ import UserInfo from "./components/userInfo.vue";
import BusinessInfo from "./components/businessInfo.vue";
import WorkpeopleInfo from "./components/workpeopleInfo.vue";
import HandlingDetails from "./components/HandlingDetails.vue";
import { getTaskList, getQueueData, getQueueInfo, getBusinessEvent, getWorkerInfo } from "@/api/dataAdmin";
import {
getTaskList, getQueueData, getQueueInfo, getBusinessEvent,
getWorkerInfo, getPeopleanalyse, getWorkmananalyse
} from "@/api/dataAdmin";
export default {
mixins: [table],
name: "PortalAdminVueQueueRecord",
......@@ -209,6 +212,32 @@ export default {
},
},
],
tHeader: [// 导出的表头名信息
"排队编号",
"申报人",
"联系方式",
"取号时间",
"取号设备",
"办理业务",
"办理开始时间",
"办理窗口",
"工作人员",
"办理结束时间",
"状态",
],
filterVal: [// 导出的表头字段名,需要导出表格字段名
"flownum",
"people_name",
"people_phone",
"taketime",
"device_name",
"business",
"calltime",
"window_name",
"workman_name",
"endtime",
"style",
],
//设备数据
deviceData: [],
// 搜索数据
......@@ -235,6 +264,11 @@ export default {
],
//Form数据列表
tableList: [],
obj: {
0: "排队中",
1: "办理中",
4: "办理完成",
},
};
},
components: {
......@@ -289,8 +323,13 @@ export default {
this.getQueueDataArr()
},
//用户模态框
openDeclarant(item) {
console.log(item)
async openDeclarant(item) {
await getPeopleanalyse({ peopleid: item.peopleid, time: this.searchForm.time }).then(res => {
if (res.code = 1) {
this.$refs.UserInfo.dataList = { ...item, ...res.data }
// console.log(this.$refs.UserInfo.dataList)
}
})
this.$refs.UserInfo.modalInfo.title = "用户信息";
this.$refs.UserInfo.modalInfo.width = "25%";
this.$refs.UserInfo.modalInfo.visible = true;
......@@ -298,8 +337,8 @@ export default {
//业务关联模块
async openBusiness(business, id) {
let siteId = localStorage.getItem('siteId')
await getBusinessEvent({ siteId, page: 1, size: -1, siteBusinessId: id }).then(res => {
this.$refs.BusinessInfo.dataList = res.data.data
await getBusinessEvent({ businessid: id, time: this.searchForm.time }).then(res => {
this.$refs.BusinessInfo.dataList = res.data
})
this.$refs.BusinessInfo.modalInfo.title = "业务分析";
this.$refs.BusinessInfo.title = business
......@@ -307,10 +346,15 @@ export default {
},
//工作人员信息模态框
async openWorkpeople(id) {
let a, b = {}
await getWorkerInfo({ id }).then(res => {
console.log(res.data)
this.$refs.WorkpeopleInfo.infoData = res.data
a = res.data
})
await getWorkmananalyse({ workmanid: id, time: this.searchForm.time }).then(res => {
b = res.data
})
this.$refs.WorkpeopleInfo.infoData = { ...a, ...b }
console.log(this.$refs.WorkpeopleInfo.infoData)
this.$refs.WorkpeopleInfo.modalInfo.title = "工作人员信息";
this.$refs.WorkpeopleInfo.modalInfo.visible = true;
},
......@@ -323,7 +367,17 @@ export default {
this.$refs.HandlingDetails.modalInfo.title = "办理明细";
this.$refs.HandlingDetails.modalInfo.visible = true;
},
//获取全部数据
downAllData() {
getQueueData({
page: 1,
size: -1,
...this.searchForm,
}).then(res => {
return res
});
}
},
};
</script>
......
......@@ -2,31 +2,31 @@
<div class="callRecord-Container">
<div class="header_box">
<div>
<a-button type="success" @click="exportTable">
<a-button type="success" @click="toexportTable">
<span>{{ tableSelectedRows.length ? "导出" : "导出全部" }}</span>
</a-button>
<b>查看样表次数:<i>233次</i></b>
<sub>统计时间段:2020.09.09~2021.09.09</sub>
<b>查看样表次数:<i>{{tablePagination.total}}</i></b>
<sub>统计时间段:{{BegindAndEndTime[0]}}~{{BegindAndEndTime[1]}}
</sub>
</div>
<span>
<a-input-group compact>
<a-select default-value="Zhejiang" style="width:25%">
<a-select-option value="Zhejiang">
<!-- <a-input-group compact> -->
<a-select :default-value="1" style="width:25%" @change="changeSearchType">
<a-select-option :value="1">
按事项
</a-select-option>
<a-select-option value="Jiangsu">
<a-select-option :value="2">
按材料
</a-select-option>
</a-select>
<a-input style="width:74.2%" v-model="searchName" placeholder="请输入评价人姓名或窗口编号搜索">
<a-input style="width:73%" v-model="searchName" placeholder="请输入评价人姓名或窗口编号搜索">
<a-icon slot="prefix" type="search" />
</a-input>
</a-input-group>
<a-range-picker format="YYYY年MM月DD日" class="range_picker_style" @change="rangePickerChange"
v-model="BegindAndEndTime">
<!-- </a-input-group> -->
<a-range-picker format="YYYY年MM月DD日" class="range_picker_style" @change="rangePickerChange">
</a-range-picker>
<a-button type="primary">搜索</a-button>
<a-button type="primary" @click="togetBillList">搜索</a-button>
</span>
</div>
<div class="main">
......@@ -37,18 +37,18 @@
:columns="tableHeaders" :dataSource="tableSourceData">
<template slot="事项名称" slot-scope="text, record, index">
<div>
机动车登记证、行驶证核发
{{record.matterName}}
</div>
<div class="tabFont">
事项全称:机动车登记证、行驶证审查、办理、核发
事项全称:{{record.matterFullName}}
</div>
</template>
<template slot="材料名称" slot-scope="text, record, index">
<div>
分公司登记申请书
{{record.materialName}}
</div>
<div class="tabFont">
样表全称:分公司登记、变更、注销一张表申请书
样表全称:{{record.materialFullName}}
</div>
</template>
</a-table>
......@@ -58,6 +58,8 @@
<script>
import table from "@/mixins/table";
import { getBillList } from "@/api/dataAdmin";
export default {
mixins: [table],
......@@ -75,16 +77,16 @@ export default {
},
{
title: "事项名称",
// align: "center",
dataIndex: "事项名称",
align: "center",
dataIndex: "matterName",
scopedSlots: {
customRender: "事项名称",
},
},
{
title: "材料名称",
// align: "center",
dataIndex: "材料名称",
align: "center",
dataIndex: "materialName",
scopedSlots: {
customRender: "材料名称",
},
......@@ -92,12 +94,12 @@ export default {
{
title: "设备名称",
align: "center",
dataIndex: "设备名称",
dataIndex: "deviceName",
},
{
title: "操作时间",
align: "center",
dataIndex: "操作时间",
dataIndex: "operTime",
},
{
title: "查看时间",
......@@ -105,8 +107,10 @@ export default {
dataIndex: "查看时间",
},
],
BegindAndEndTime: [],
BegindAndEndTime: [],//时间段
searchName: undefined,
searchType:1,
siteId:undefined,
};
},
components: {
......@@ -114,18 +118,90 @@ export default {
},
mounted() {
this.setMoment();
for (let key = 0; key < 20; key++) {
this.tableSourceData.push({
id: `00${key + 1}`,
设备名称: `一楼样表填单机`,
操作时间: `2021-09-09 09:09:09${key + 1}`,
查看时间: `10分20秒`,
});
}
this.BegindAndEndTime=[this.$moment(new Date()).format("YYYY-MM-DD"),this.$moment(new Date()).format("YYYY-MM-DD")]
this.siteId = localStorage.getItem('siteId')
this.togetBillList()
},
methods: {
//导出
toexportTable() {
let tableData = [];
if (this.tableSelectedRows.length == 0) {
let pramse = {
page:1,
size:-1,
siteId:this.siteId,
matterName:"%%",
materialName:"%%",
operTimeStart:this.BegindAndEndTime[0],
operTimeEnd:this.BegindAndEndTime[1]
}
if(this.searchType==1 && this.searchName){
pramse.matterName = '%'+this.searchName+'%'
}else if(this.searchName){
pramse.materialName='%'+this.searchName+'%'
}
getBillList(pramse).then((res)=>{
const{code,data} = res;
if(code == 1){
tableData = JSON.parse(JSON.stringify(data.data));
let tableColumns = JSON.parse(JSON.stringify(this.tableHeaders));
let newTableData = tableData.map(item => {
let obj = {};
for (let key in item) {
obj[key] = item[key];
}
return obj;
})
let exprotExcelName = `${this.nowDay} / ${this.nowTime} / ${this.$route['meta']['title'] || '报表信息统计'}`;
this.exportExcel(tableColumns, newTableData, exprotExcelName);
}
})
} else {
tableData = JSON.parse(JSON.stringify(this.tableSelectedRows));
let tableColumns = JSON.parse(JSON.stringify(this.tableHeaders));
let newTableData = tableData.map(item => {
let obj = {};
for (let key in item) {
obj[key] = item[key];
}
return obj;
})
let exprotExcelName = `${this.nowDay} / ${this.nowTime} / ${this.$route['meta']['title'] || '报表信息统计'}`;
this.exportExcel(tableColumns, newTableData, exprotExcelName);
}
},
togetBillList(){
let pramse = {
page:this.tablePagination.current,
size:this.tablePagination.pageSize,
siteId:this.siteId,
matterName:"%%",
materialName:"%%",
operTimeStart:this.BegindAndEndTime[0],
operTimeEnd:this.BegindAndEndTime[1]
}
if(this.searchType==1 && this.searchName){
pramse.matterName = '%'+this.searchName+'%'
}else if(this.searchName){
pramse.materialName='%'+this.searchName+'%'
}
getBillList(pramse).then((res)=>{
const{code,data} = res;
if(code==1){
this.tableSourceData = data.data
this.tablePagination.total = data.total
}
})
},
changeSearchType(val){
this.searchType = val
},
rangePickerChange(val) {
console.log(val);
this.BegindAndEndTime=[this.$moment(val[0]).format("YYYY-MM-DD"),this.$moment(val[1]).format("YYYY-MM-DD")]
},
QueueState(type) {
......
......@@ -116,7 +116,7 @@
<profiles.log.level>INFO</profiles.log.level>
<profiles.log.path>/home/mortals/app/logs</profiles.log.path>
<package.environment>yibin</package.environment>
<skipUi>false</skipUi>
<skipUi>true</skipUi>
</properties>
</profile>
......
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