This commit is contained in:
jr719 2021-04-13 02:38:06 +08:00
commit 924d620b02
33 changed files with 895 additions and 806 deletions

View File

@ -32,4 +32,20 @@ export default {
font-size: 14px; font-size: 14px;
border-radius: 15px; border-radius: 15px;
} }
.appeal .el-button{
padding: 7px 10px;
font-size: 14px;
border-radius: 15px;
width: 63px;
}
.el-button--text{
padding: 5px 10px;
}
.el-loading-spinner {
top: 50%;
/* margin-top: -21px; */
width: 90%;
text-align: center;
position: fixed;
}
</style> </style>

View File

@ -54,25 +54,29 @@ export default {
console.log(fileList) console.log(fileList)
fileList.forEach(item => { fileList.forEach(item => {
if (item.status === 'ready') { if (item.status === 'ready') {
const suffix = item.name.split('.')[1] // const suffix = item.name.split('.')[1]
const suffix = item.name.substr(item.name.lastIndexOf('.')+1)
const fileName = UUID.generate() + '.' + suffix const fileName = UUID.generate() + '.' + suffix
item.name = fileName item.name = fileName
OSS(item.raw, fileName).then(res => { OSS(item.raw, fileName).then(res => {
this.$emit('input', res.url)
item.url = res.url this.$emit('input', 'http://storage.myntv.cn/'+res.name)
item.url = 'http://storage.myntv.cn/'+res.name
item.status = 'success' item.status = 'success'
const list = fileList.filter(item => item.status === 'success').map(item => item.url) const list = fileList.filter(item => item.status === 'success').map(item => item.url)
console.log(list);
this.$emit('input', list) this.$emit('input', list)
}) })
} }
}) })
} else { } else {
const suffix = file.name.split('.')[0] // const suffix = file.name.split('.')[0]
const suffix = item.name.substr(item.name.lastIndexOf('.')+1)
const fileName = UUID.generate() + '.' + suffix const fileName = UUID.generate() + '.' + suffix
file.name = fileName file.name = fileName
this.fileList = [file] this.fileList = [file]
OSS(file.raw, fileName).then(res => { OSS(file.raw, fileName).then(res => {
this.$emit('input', res.url) this.$emit('input', 'http://storage.myntv.cn/'+res.name)
}) })
} }
}, },

View File

@ -1,8 +1,12 @@
<template> <template>
<el-breadcrumb class="app-breadcrumb" separator="/"> <el-breadcrumb class="app-breadcrumb" separator="/">
<transition-group name="breadcrumb"> <transition-group name="breadcrumb">
<el-breadcrumb-item v-for="(item,index) in levelList" :key="item.path"> <el-breadcrumb-item v-for="(item, index) in levelList" :key="item.path">
<span v-if="item.redirect==='noRedirect'||index==levelList.length-1" class="no-redirect">{{ item.meta.title }}</span> <span
v-if="item.redirect === 'noRedirect' || index == levelList.length - 1"
class="no-redirect"
>{{ item.meta.title }}</span
>
<a v-else @click.prevent="handleLink(item)">{{ item.meta.title }}</a> <a v-else @click.prevent="handleLink(item)">{{ item.meta.title }}</a>
</el-breadcrumb-item> </el-breadcrumb-item>
</transition-group> </transition-group>
@ -10,61 +14,73 @@
</template> </template>
<script> <script>
import pathToRegexp from 'path-to-regexp' import pathToRegexp from "path-to-regexp";
export default { export default {
data() { data() {
return { return {
levelList: null levelList: null
} };
}, },
watch: { watch: {
$route(route) { $route(route) {
// if you go to the redirect page, do not update the breadcrumbs // if you go to the redirect page, do not update the breadcrumbs
if (route.path.startsWith('/redirect/')) { if (route.path.startsWith("/redirect/")) {
return return;
} }
this.getBreadcrumb() this.getBreadcrumb();
} }
}, },
created() { created() {
this.getBreadcrumb() this.getBreadcrumb();
}, },
methods: { methods: {
getBreadcrumb() { getBreadcrumb() {
// only show routes with meta.title // only show routes with meta.title
let matched = this.$route.matched.filter(item => item.meta && item.meta.title) let matched = this.$route.matched.filter(
const first = matched[0] item => item.meta && item.meta.title
);
const first = matched[0];
if (!this.isDashboard(first)) { if (!this.isDashboard(first)) {
matched = [{ path: '/dashboard', meta: { title: '首页' }}].concat(matched) matched = [{ path: "/dashboard", meta: { title: "首页" } }].concat(
matched
);
} }
this.levelList = matched.filter(item => item.meta && item.meta.title && item.meta.breadcrumb !== false) this.levelList = matched.filter(
item => item.meta && item.meta.title && item.meta.breadcrumb !== false
);
// console.log(this.levelList);
if (this.levelList.length > 1) {
this.levelList.splice(0, 1);
}
}, },
isDashboard(route) { isDashboard(route) {
const name = route && route.name const name = route && route.name;
if (!name) { if (!name) {
return false return false;
} }
return name.trim().toLocaleLowerCase() === 'Dashboard'.toLocaleLowerCase() return (
name.trim().toLocaleLowerCase() === "Dashboard".toLocaleLowerCase()
);
}, },
pathCompile(path) { pathCompile(path) {
// To solve this problem https://github.com/PanJiaChen/vue-element-admin/issues/561 // To solve this problem https://github.com/PanJiaChen/vue-element-admin/issues/561
const { params } = this.$route const { params } = this.$route;
var toPath = pathToRegexp.compile(path) var toPath = pathToRegexp.compile(path);
return toPath(params) return toPath(params);
}, },
handleLink(item) { handleLink(item) {
const { redirect, path } = item const { redirect, path } = item;
if (redirect) { if (redirect) {
this.$router.push(redirect) this.$router.push(redirect);
return return;
} }
this.$router.push(this.pathCompile(path)) this.$router.push(this.pathCompile(path));
} }
} }
} };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>

View File

@ -27,6 +27,7 @@ export default {
}, },
methods: { methods: {
linkProps(to) { linkProps(to) {
console.log(to);
if (this.isExternal) { if (this.isExternal) {
return { return {
href: to, href: to,

View File

@ -3,6 +3,7 @@
<logo v-if="showLogo" :collapse="isCollapse" /> <logo v-if="showLogo" :collapse="isCollapse" />
<el-scrollbar :id="activeMenu" wrap-class="scrollbar-wrapper"> <el-scrollbar :id="activeMenu" wrap-class="scrollbar-wrapper">
<!-- {{activeMenu}} --> <!-- {{activeMenu}} -->
<!-- dddd activeMenu-->
<el-menu <el-menu
:default-active="activeMenu" :default-active="activeMenu"
:collapse="isCollapse" :collapse="isCollapse"

View File

@ -112,7 +112,7 @@ export const constantRoutes = [
path: 'detail', path: 'detail',
component: () => import('@/views/convenience/detail'), component: () => import('@/views/convenience/detail'),
name: 'ConvenienceDetail', name: 'ConvenienceDetail',
meta: { title: '工单详情', icon: 'convenience', affix: true }, meta: { title: '工单详情', icon: 'convenience', affix: true ,activeMenu:'/convenience/list'},
hidden: true hidden: true
}, },
{ {

View File

@ -13,7 +13,10 @@
class="el-form" class="el-form"
> >
<el-form-item label="受理人" prop="residentInformation"> <el-form-item label="受理人" prop="residentInformation">
<el-input v-model="searchInput" placeholder="群众身份证号或者手机号" /> <el-input
v-model="convenience.residentInformation"
placeholder="群众身份证号或者手机号"
/>
</el-form-item> </el-form-item>
<el-form-item label="办事项目"> <el-form-item label="办事项目">
@ -65,9 +68,9 @@
</template> </template>
<script> <script>
import { add, typeList } from '@/api/convenience' import { add, typeList } from "@/api/convenience";
import { info } from '@/api/staff' import { info } from "@/api/staff";
import AliOss from '@/components/AliOSS/index.vue' import AliOss from "@/components/AliOSS/index.vue";
// import Pagination from "@/components/Pagination"; // import Pagination from "@/components/Pagination";
// import { list, typeList } from "@/api/convenience"; // import { list, typeList } from "@/api/convenience";
@ -79,70 +82,98 @@ export default {
}, },
data() { data() {
var checkInfo = (rule, value, callback) => { var checkInfo = (rule, value, callback) => {
info({ param: this.searchInput || undefined }).then(res => { // console.log(value);
if (!res.d) { // if (value === undefined) {
return callback(new Error('查无此人')) // console.log('if');
} else { // return callback(new Error(""));
this.convenience.residentInformation = res.d.id // } else {
} // console.log('else');
}) // info({ param: this.searchInput || undefined }).then(res => {
} // if (!res.d) {
// return callback(new Error(""));
// } else {
// this.convenience.residentInformation = res.d.id;
// }
// });
// }
if (value === "") {
callback(new Error("受理人不能为空"));
// console.log('value==<>');
} else {
info({ param: this.convenience.residentInformation || undefined }).then(
res => {
if (!res.d) {
return callback(new Error("查无此人"));
} else {
this.searchInput = res.d.id;
callback();
// this.convenience.residentInformation = res.d.id;
}
}
);
}
};
return { return {
convenience: { convenience: {
residentInformation: undefined, residentInformation: "",
eventTypeId: undefined, eventTypeId: undefined,
remark: undefined, remark: undefined,
sponsor: 'STAFF', sponsor: "STAFF",
attachment: undefined attachment: undefined
}, },
typeOptions: [], typeOptions: [],
rules: { rules: {
residentInformation: [{ validator: checkInfo, trigger: 'blur' }] residentInformation: [{ validator: checkInfo, trigger: "blur" }]
}, },
fileList: undefined, fileList: undefined,
searchInput: undefined searchInput: undefined
} };
}, },
mounted() { mounted() {
this.getTypeList() this.getTypeList();
}, },
methods: { methods: {
getTypeList() { getTypeList() {
typeList().then(res => { typeList().then(res => {
this.typeOptions = [] this.typeOptions = [];
res.d.map(i => { res.d.map(i => {
const children = [] const children = [];
i.eventTypesList.map(c => { i.eventTypesList.map(c => {
const level2 = { const level2 = {
label: c.eventName, label: c.eventName,
value: c.id value: c.id
} };
children.push(level2) children.push(level2);
}) });
const level1 = { const level1 = {
label: i.eventName, label: i.eventName,
children children
} };
this.typeOptions.push(level1) this.typeOptions.push(level1);
}) });
}) });
}, },
handleAdd() { handleAdd() {
add(this.convenience).then(res => { this.$refs.convenienceForm.validate(valid => {
if (res.c === 200) { if (valid) {
this.$notify.success('创建成功') this.convenience.residentInformation = this.searchInput;
this.$router.push('/convenience/list') add(this.convenience).then(res => {
if (res.c === 200) {
this.$notify.success("创建成功");
this.$router.push("/convenience/list");
}
});
} }
}) });
}, },
handlePreview() {}, handlePreview() {},
handleRemove() {}, handleRemove() {},
beforeRemove() {}, beforeRemove() {},
handleExceed() {} handleExceed() {}
} }
} };
</script> </script>
<style scope></style> <style scope></style>

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 770 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 726 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 725 B

View File

@ -3,7 +3,7 @@
<div class="filter-container"> <div class="filter-container">
<el-button <el-button
type="primary" type="primary"
style="position:absolute;right:50px;top:120px" style="position:absolute;right:50px;margin-top:80px"
@click="$router.push('/convenience/add')" @click="$router.push('/convenience/add')"
><i class="el-icon-plus" /> 直接建立工单</el-button> ><i class="el-icon-plus" /> 直接建立工单</el-button>
<div class="title">工单列表</div> <div class="title">工单列表</div>
@ -31,7 +31,7 @@
<br> <br>
</div> </div>
<div class="convenienceList"> <div class="convenienceList" v-loading="listLoading">
<div <div
v-for="(item, index) in list" v-for="(item, index) in list"
:key="item.id" :key="item.id"
@ -43,7 +43,7 @@
<div class="convenience_item_title" style="flex:1"> <div class="convenience_item_title" style="flex:1">
<i class="icon_list" /> <i class="icon_list" />
<div> <div>
<div class="cTitle">城乡养老保险个人变更登记</div> <div class="cTitle">{{ item.eventType.eventName }}</div>
<div class="createDate"> <div class="createDate">
{{ item.sponsor | sponsorFilter }}创建于{{ {{ item.sponsor | sponsorFilter }}创建于{{
item.createDate | parseTime("{y}-{m}-{d} {h}:{i}:{s}") item.createDate | parseTime("{y}-{m}-{d} {h}:{i}:{s}")
@ -56,13 +56,16 @@
<p>流水号{{ item.serialNumber }}</p> <p>流水号{{ item.serialNumber }}</p>
<p> <p>
阶段{{ item.phase | phaseFilter }} 阶段{{ item.phase | phaseFilter }}
<i v-if="timers&&timers[index].status !== null" class="icon_timeout" /> <i
class="icon_timeout"
v-if="timers && timers[index].status !== null"
></i>
<span style="color:#ff3000">{{ <span style="color:#ff3000">{{
timers && timers[index].status === null timers && timers[index].status === null
? "" ? ""
: timers&&timers[index].status : timers && timers[index].status
? "已超时" ? "已超时"
: "即将超时" : "即将超时"
}}</span> }}</span>
</p> </p>
</div> </div>
@ -76,10 +79,12 @@
</p> </p>
</div> </div>
<div style="flex:1"> <div style="flex:1">
<p>受理人{{ item.currentResponsiblePerson.name }}</p> <p>受理人{{ item.firstResponsiblePerson.name }}</p>
</div> </div>
<div style="flex:1"> <div
<p style="font-size:20px;color:#ff6918"> style="flex:1;align-items: center;justify-items: center;display: flex;"
>
<!-- <p style="font-size:20px;color:#ff6918">
<i class="icon_timer" />{{ <i class="icon_timer" />{{
(timers && timeFormat(timers[index].time)) || "00:00:00" (timers && timeFormat(timers[index].time)) || "00:00:00"
}} }}
@ -87,12 +92,28 @@
<p> <p>
<el-button <el-button
v-if="item.phase === 'PENDING_ORDER'" v-if="item.phase === 'PENDING_ORDER'"
style="margin-left:50px" style="margin-left:44px;font-size:14px;padding:7px 10px;width:70px"
type="primary" type="primary"
size="mini" size="mini"
@click="handleUpdate(item, 5)" @click="handleUpdate(item, 5)"
>接单</el-button> >接单</el-button
</p> >
</p> -->
<div style="font-size:20px;color:#ff6918">
<i class="icon_timer" />{{
(timers && timeFormat(timers[index].time)) || "00:00:00"
}}
<div>
<el-button
v-if="item.phase === 'PENDING_ORDER'"
style="margin-left:44px;font-size:14px;padding:7px 10px;width:70px;margin-top:12px"
type="primary"
size="mini"
@click.stop="handleUpdate(item, 5)"
>接单</el-button
>
</div>
</div>
</div> </div>
</div> </div>
</div> </div>
@ -198,10 +219,10 @@ export default {
filters: { filters: {
sponsorFilter(status) { sponsorFilter(status) {
const statusMap = { const statusMap = {
SELF: '居民', SELF: "群众",
STAFF: '工作人员' STAFF: "工作人员"
} };
return statusMap[status] return statusMap[status];
}, },
phaseFilter(status) { phaseFilter(status) {
const statusMap = { const statusMap = {
@ -214,13 +235,13 @@ export default {
}, },
statusFilter(status) { statusFilter(status) {
const statusMap = { const statusMap = {
MINE: '待我处理', MINE: "我处理",
FORWARDED: '已转交', FORWARDED: "已转交",
FORWARDED_APPLY: '转交超限审批中', FORWARDED_APPLY: "转交超限审批中",
SUBMIT_APPLY: '提交申请', SUBMIT_APPLY: "已提交审批",
WAIT_APPLY: '待审核' WAIT_APPLY: "待审核"
} };
return statusMap[status] return statusMap[status];
}, },
typeFilter(status) { typeFilter(status) {
const statusMap = { const statusMap = {
@ -302,12 +323,13 @@ export default {
getList() { getList() {
this.listLoading = true this.listLoading = true
list(this.listQuery).then(res => { list(this.listQuery).then(res => {
this.list = res.d.records this.list = res.d.records;
this.listLoading = false this.listLoading = false;
clearInterval(this.timersInterval) clearInterval(this.timersInterval);
const tempData = res.d.records const tempData = res.d.records;
const now = Date.parse(new Date()).toString() / 1000 const now = Date.parse(new Date()).toString() / 1000;
const arr = [] // console.log(now);
const arr = [];
tempData.map((item, index) => { tempData.map((item, index) => {
let msec = [] let msec = []
let obj = {} let obj = {}
@ -324,7 +346,7 @@ export default {
break break
case 'PREREQUISITES': case 'PREREQUISITES':
// //
msec = now - item.createDate - item.acceptanceTime msec = now - item.createDate;
obj = { obj = {
time: msec, time: msec,
phase: item.phase, phase: item.phase,
@ -334,11 +356,7 @@ export default {
break break
case 'PROCESSING': case 'PROCESSING':
// //
msec = msec = now - item.createDate;
now -
item.createDate -
item.acceptanceTime -
item.prerequisitesTime
obj = { obj = {
time: msec, time: msec,
phase: item.phase, phase: item.phase,

View File

@ -1,396 +1,64 @@
<template> <template>
<el-row :gutter="40" class="panel-group"> <!-- <el-row :gutter="40" class="panel-group">
<el-col <el-col
v-for="(value, key, index) in statisticalData" v-for="(value, key, index) in statisticalData"
:key="index" :key="index"
:xs="12" :xs="12"
:sm="12" :sm="12"
:lg="6" :lg="key==='all'?12:6"
class="card-panel-col" class="card-panel-col"
> >
<div class="card-panel"> <div class="card-panel">
<div class="card-panel-icon-wrapper icon-people"> <div class="card-panel-icon-wrapper icon-people">
<svg-icon icon-class="peoples" class-name="card-panel-icon" /> <svg-icon icon-class="peoples" class-name="card-panel-icon" />
<i class="icon_"></i>
</div> </div>
<div class="card-panel-description"> <div class="card-panel-description">
<div v-if="key==='all'">累计服务量 </div>
<div class="card-panel-text"> <div class="card-panel-text">
{{ key == "all" ? "总服务量" : key }} {{ key == "all" ? "总服务量" : key }}
</div> </div>
<div class="numText">{{value}}</div>
<count-to <count-to
:start-val="0" :start-val="0"
:end-val="value" :end-val="value"
:duration="2600" :duration="2600"
class="card-panel-num" class="card-panel-num"
/> />
</div> </div>
</div> </div>
</el-col> </el-col>
<!-- <el-col :xs="12" :sm="12" :lg="6" class="card-panel-col"> </el-row> -->
<div class="card-panel"> <el-row :gutter="20">
<div class="card-panel-icon-wrapper icon-people"> <el-col
<svg-icon icon-class="peoples" class-name="card-panel-icon" /> v-for="(value, key, index) in statisticalData"
</div> :key="index"
<div class="card-panel-description"> :xs="12"
<div class="card-panel-text"> :sm="12"
不满意率 :lg="key === 'all' ? 12 : 6"
>
<div class="countLayout">
<i :class="`countIcon icon_${index}`"></i>
<span v-if="key === 'all'" style="font-size:24px"
>累计服务量 <span style="color:#ff663d;font-size:49px;vertical-align: middle;">{{ value }}</span></span
>
<div
v-else
style="flex: 1;text-align: right;padding-right:51px;font-size:16px;"
>
<div style="margin-bottom:17px">{{ key }}</div>
<div style="font-size:20px;color:#787878;">
{{ formatUnit(key, value) }}
</div> </div>
<count-to
:start-val="0"
:end-val="102400"
:duration="2600"
class="card-panel-num"
/>
</div> </div>
</div> </div>
</el-col> </el-col>
<el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
<div class="card-panel">
<div class="card-panel-icon-wrapper icon-message">
<svg-icon icon-class="message" class-name="card-panel-icon" />
</div>
<div class="card-panel-description">
<div class="card-panel-text">
不满意量
</div>
<count-to
:start-val="0"
:end-val="81212"
:duration="3000"
class="card-panel-num"
/>
</div>
</div>
</el-col>
<el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
<div class="card-panel">
<div class="card-panel-icon-wrapper icon-money">
<svg-icon icon-class="money" class-name="card-panel-icon" />
</div>
<div class="card-panel-description">
<div class="card-panel-text">
平均办结时间
</div>
<count-to
:start-val="0"
:end-val="9280"
:duration="3200"
class="card-panel-num"
/>
</div>
</div>
</el-col>
<el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
<div class="card-panel">
<div class="card-panel-icon-wrapper icon-shopping">
<svg-icon icon-class="shopping" class-name="card-panel-icon" />
</div>
<div class="card-panel-description">
<div class="card-panel-text">
平均受理时间
</div>
<count-to
:start-val="0"
:end-val="13600"
:duration="3600"
class="card-panel-num"
/>
</div>
</div>
</el-col>
<el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
<div class="card-panel">
<div class="card-panel-icon-wrapper icon-shopping">
<svg-icon icon-class="shopping" class-name="card-panel-icon" />
</div>
<div class="card-panel-description">
<div class="card-panel-text">
按时办结率
</div>
<count-to
:start-val="0"
:end-val="13600"
:duration="3600"
class="card-panel-num"
/>
</div>
</div>
</el-col>
<el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
<div class="card-panel">
<div class="card-panel-icon-wrapper icon-shopping">
<svg-icon icon-class="shopping" class-name="card-panel-icon" />
</div>
<div class="card-panel-description">
<div class="card-panel-text">
按时办结量
</div>
<count-to
:start-val="0"
:end-val="13600"
:duration="3600"
class="card-panel-num"
/>
</div>
</div>
</el-col>
<el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
<div class="card-panel">
<div class="card-panel-icon-wrapper icon-shopping">
<svg-icon icon-class="shopping" class-name="card-panel-icon" />
</div>
<div class="card-panel-description">
<div class="card-panel-text">
按时受理率:
</div>
<count-to
:start-val="0"
:end-val="13600"
:duration="3600"
class="card-panel-num"
/>
</div>
</div>
</el-col>
<el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
<div class="card-panel">
<div class="card-panel-icon-wrapper icon-shopping">
<svg-icon icon-class="shopping" class-name="card-panel-icon" />
</div>
<div class="card-panel-description">
<div class="card-panel-text">
按时受理量
</div>
<count-to
:start-val="0"
:end-val="13600"
:duration="3600"
class="card-panel-num"
/>
</div>
</div>
</el-col>
<el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
<div class="card-panel">
<div class="card-panel-icon-wrapper icon-shopping">
<svg-icon icon-class="shopping" class-name="card-panel-icon" />
</div>
<div class="card-panel-description">
<div class="card-panel-text">
未办结率
</div>
<count-to
:start-val="0"
:end-val="13600"
:duration="3600"
class="card-panel-num"
/>
</div>
</div>
</el-col>
<el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
<div class="card-panel">
<div class="card-panel-icon-wrapper icon-shopping">
<svg-icon icon-class="shopping" class-name="card-panel-icon" />
</div>
<div class="card-panel-description">
<div class="card-panel-text">
未办结量
</div>
<count-to
:start-val="0"
:end-val="13600"
:duration="3600"
class="card-panel-num"
/>
</div>
</div>
</el-col>
<el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
<div class="card-panel">
<div class="card-panel-icon-wrapper icon-shopping">
<svg-icon icon-class="shopping" class-name="card-panel-icon" />
</div>
<div class="card-panel-description">
<div class="card-panel-text">
未受理率
</div>
<count-to
:start-val="0"
:end-val="13600"
:duration="3600"
class="card-panel-num"
/>
</div>
</div>
</el-col>
<el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
<div class="card-panel">
<div class="card-panel-icon-wrapper icon-shopping">
<svg-icon icon-class="shopping" class-name="card-panel-icon" />
</div>
<div class="card-panel-description">
<div class="card-panel-text">
未受理量
</div>
<count-to
:start-val="0"
:end-val="13600"
:duration="3600"
class="card-panel-num"
/>
</div>
</div>
</el-col>
<el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
<div class="card-panel">
<div class="card-panel-icon-wrapper icon-shopping">
<svg-icon icon-class="shopping" class-name="card-panel-icon" />
</div>
<div class="card-panel-description">
<div class="card-panel-text">
满意率
</div>
<count-to
:start-val="0"
:end-val="13600"
:duration="3600"
class="card-panel-num"
/>
</div>
</div>
</el-col>
<el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
<div class="card-panel">
<div class="card-panel-icon-wrapper icon-shopping">
<svg-icon icon-class="shopping" class-name="card-panel-icon" />
</div>
<div class="card-panel-description">
<div class="card-panel-text">
满意量
</div>
<count-to
:start-val="0"
:end-val="13600"
:duration="3600"
class="card-panel-num"
/>
</div>
</div>
</el-col>
<el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
<div class="card-panel">
<div class="card-panel-icon-wrapper icon-shopping">
<svg-icon icon-class="shopping" class-name="card-panel-icon" />
</div>
<div class="card-panel-description">
<div class="card-panel-text">
群众非常满意率
</div>
<count-to
:start-val="0"
:end-val="13600"
:duration="3600"
class="card-panel-num"
/>
</div>
</div>
</el-col>
<el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
<div class="card-panel">
<div class="card-panel-icon-wrapper icon-shopping">
<svg-icon icon-class="shopping" class-name="card-panel-icon" />
</div>
<div class="card-panel-description">
<div class="card-panel-text">
超时办结率
</div>
<count-to
:start-val="0"
:end-val="13600"
:duration="3600"
class="card-panel-num"
/>
</div>
</div>
</el-col>
<el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
<div class="card-panel">
<div class="card-panel-icon-wrapper icon-shopping">
<svg-icon icon-class="shopping" class-name="card-panel-icon" />
</div>
<div class="card-panel-description">
<div class="card-panel-text">
超时办结量
</div>
<count-to
:start-val="0"
:end-val="13600"
:duration="3600"
class="card-panel-num"
/>
</div>
</div>
</el-col>
<el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
<div class="card-panel">
<div class="card-panel-icon-wrapper icon-shopping">
<svg-icon icon-class="shopping" class-name="card-panel-icon" />
</div>
<div class="card-panel-description">
<div class="card-panel-text">
超时受理率
</div>
<count-to
:start-val="0"
:end-val="13600"
:duration="3600"
class="card-panel-num"
/>
</div>
</div>
</el-col>
<el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
<div class="card-panel">
<div class="card-panel-icon-wrapper icon-shopping">
<svg-icon icon-class="shopping" class-name="card-panel-icon" />
</div>
<div class="card-panel-description">
<div class="card-panel-text">
超时受理量
</div>
<count-to
:start-val="0"
:end-val="13600"
:duration="3600"
class="card-panel-num"
/>
</div>
</div>
</el-col>
<el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
<div class="card-panel">
<div class="card-panel-icon-wrapper icon-shopping">
<svg-icon icon-class="shopping" class-name="card-panel-icon" />
</div>
<div class="card-panel-description">
<div class="card-panel-text">
非常满意量
</div>
<count-to
:start-val="0"
:end-val="13600"
:duration="3600"
class="card-panel-num"
/>
</div>
</div>
</el-col> -->
</el-row> </el-row>
</template> </template>
<script> <script>
import CountTo from 'vue-count-to' import CountTo from "vue-count-to";
import { statisticalData } from '@/api/statisticalData' import { statisticalData } from "@/api/statisticalData";
export default { export default {
components: { components: {
@ -403,10 +71,10 @@ export default {
eventTypeId: undefined eventTypeId: undefined
}, },
statisticalData: undefined statisticalData: undefined
} };
}, },
created() { created() {
this.getStatisticalData() this.getStatisticalData();
}, },
methods: { methods: {
// handleSetLineChartData(type) { // handleSetLineChartData(type) {
@ -414,14 +82,141 @@ export default {
// } // }
getStatisticalData() { getStatisticalData() {
statisticalData(this.listQuery).then(res => { statisticalData(this.listQuery).then(res => {
this.statisticalData = res.d this.statisticalData = res.d;
}) });
} },
formatUnit(key, value) {
// console.log(key,value);
let str = '';
if (key.indexOf("率")!= -1) {
str = `${(value * 100).toFixed(2)}%`;
} else if (key.indexOf("时间")!= -1) {
str = this.timeFormat(value);
} else {
str = value;
}
console.log(str);
return str
},
timeFormat(timeStamp) {
const timeStr = `${
Math.floor(timeStamp / 3600) < 9
? '0' + Math.floor(timeStamp / 3600)
: Math.floor(timeStamp / 3600)
}:${
Math.floor(((timeStamp % 86400) % 3600) / 60) < 9
? '0' + Math.floor(((timeStamp % 86400) % 3600) / 60)
: Math.floor(((timeStamp % 86400) % 3600) / 60)
}:${
Math.floor(((timeStamp % 86400) % 3600) % 60) < 9
? '0' + Math.floor(((timeStamp % 86400) % 3600) % 60)
: Math.floor(((timeStamp % 86400) % 3600) % 60)
}`
return timeStr
},
} }
} };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.countLayout {
background: #fff;
margin-bottom: 18px;
display: flex;
align-items: center;
}
.countIcon {
display: inline-block;
background-size: cover !important;
width: 60px;
height: 60px;
margin: 38px 38px 38px 55px;
vertical-align: middle;
}
.icon_0 {
background: url("./img/icon_0.png") no-repeat;
}
.icon_1 {
background: url("./img/icon_1.png") no-repeat;
}
.icon_2 {
background: url("./img/icon_2.png") no-repeat;
}
.icon_3 {
background: url("./img/icon_3.png") no-repeat;
}
.icon_4 {
background: url("./img/icon_3.png") no-repeat;
}
.icon_5 {
background: url("./img/icon_4.png") no-repeat;
}
.icon_6 {
background: url("./img/icon_4.png") no-repeat;
}
.icon_7 {
background: url("./img/icon_5.png") no-repeat;
}
.icon_8 {
background: url("./img/icon_5.png") no-repeat;
}
.icon_9 {
background: url("./img/icon_6.png") no-repeat;
}
.icon_10 {
background: url("./img/icon_6.png") no-repeat;
}
.icon_11 {
background: url("./img/icon_7.png") no-repeat;
}
.icon_12 {
background: url("./img/icon_7.png") no-repeat;
}
.icon_13 {
background: url("./img/icon_8.png") no-repeat;
}
.icon_14 {
background: url("./img/icon_8.png") no-repeat;
}
.icon_15 {
background: url("./img/icon_9.png") no-repeat;
width: 63px;
height: 54px;
}
.icon_16 {
background: url("./img/icon_9.png") no-repeat;
width: 63px;
height: 54px;
}
.icon_17 {
background: url("./img/icon_10.png") no-repeat;
width: 63px;
height: 54px;
}
.icon_18 {
background: url("./img/icon_10.png") no-repeat;
width: 63px;
height: 54px;
}
.icon_19 {
background: url("./img/icon_11.png") no-repeat;
width: 63px;
height: 54px;
}
.icon_20 {
background: url("./img/icon_11.png") no-repeat;
width: 63px;
height: 54px;
}
// .icon_21{
// background:url('./img/icon_1.png')no-repeat;
// }
.numText {
font-size: 20px;
color: #787878;
font-family: PingFang-SC-Regular;
text-align: right;
}
.panel-group { .panel-group {
margin-top: 18px; margin-top: 18px;

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 427 B

View File

@ -2,8 +2,10 @@
<div <div
class="login-container" class="login-container"
style="display: flex; style="display: flex;
align-items: center;" align-items: center;flex-direction: column;
justify-content: center;"
> >
<div class="systemTitle"><i class="login_titleLine_left"/>壤塘家园定点服务系统 <i class="login_titleLine_left" style="transform: rotate(180deg);margin-left:29px"/></div>
<div <div
style="background: white; style="background: white;
width: 1053px; width: 1053px;
@ -444,5 +446,21 @@ $light_gray: #1890ff;
padding: 10px; padding: 10px;
cursor: pointer; cursor: pointer;
} }
.login_titleLine_left{
background: url('./img/login_titleLine_left.png')no-repeat;
background-size: cover;
display: inline-block;
width: 315px;
height: 1px;
margin-right: 29px;
vertical-align: middle;
}
.systemTitle{
font-size: 37px;
color: rgb(255, 255, 255);
margin-bottom: 63px;
min-width: 1098px;
margin: 63px auto;
}
} }
</style> </style>

View File

@ -58,7 +58,7 @@
</template> </template>
<script> <script>
import Pagination from '@/components/Pagination' // import Pagination from '@/components/Pagination'
import { workBookList } from '@/api/workBook' import { workBookList } from '@/api/workBook'
export default { export default {