sunday
This commit is contained in:
parent
2817066f5b
commit
866e452aa2
28
src/App.vue
28
src/App.vue
|
@ -6,6 +6,30 @@
|
|||
|
||||
<script>
|
||||
export default {
|
||||
name: 'App'
|
||||
}
|
||||
name: "App"
|
||||
};
|
||||
</script>
|
||||
<style>
|
||||
.app-container .el-button--primary {
|
||||
border-radius: 21px;
|
||||
box-shadow: 1px 1px 2px 0px #4081ff;
|
||||
padding: 10px 38px;
|
||||
font-size: 18px;
|
||||
}
|
||||
.el-dialog .el-dialog__footer .el-button {
|
||||
border-radius: 18px;
|
||||
font-size: 14px;
|
||||
padding: 10px 20px;
|
||||
min-width: 98px;
|
||||
}
|
||||
.status_btn .el-button {
|
||||
padding: 7px 10px;
|
||||
font-size: 14px;
|
||||
border-radius: 15px;
|
||||
}
|
||||
.status_btn .el-button--success {
|
||||
padding: 7px 10px;
|
||||
font-size: 14px;
|
||||
border-radius: 15px;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
<!-- :on-exceed="handleExceed"
|
||||
:before-remove="beforeRemove"
|
||||
:on-preview="handlePreview" -->
|
||||
<el-button size="small" type="primary">点击上传</el-button>
|
||||
<el-button size="small" type="default" plain style="background:#fff;border:1px solid #4081ff;color:#4081ff">上传附件</el-button>
|
||||
</el-upload>
|
||||
</template>
|
||||
|
||||
|
|
|
@ -37,7 +37,7 @@ export default {
|
|||
const first = matched[0]
|
||||
|
||||
if (!this.isDashboard(first)) {
|
||||
matched = [{ path: '/dashboard', meta: { title: 'Dashboard' }}].concat(matched)
|
||||
matched = [{ path: '/dashboard', meta: { title: '首页' }}].concat(matched)
|
||||
}
|
||||
|
||||
this.levelList = matched.filter(item => item.meta && item.meta.title && item.meta.breadcrumb !== false)
|
||||
|
@ -70,9 +70,11 @@ export default {
|
|||
<style lang="scss" scoped>
|
||||
.app-breadcrumb.el-breadcrumb {
|
||||
display: inline-block;
|
||||
font-size: 14px;
|
||||
// font-size: 14px;
|
||||
font-size: 16px;
|
||||
line-height: 50px;
|
||||
margin-left: 8px;
|
||||
// margin-left: 8px;
|
||||
margin-left: 20px;
|
||||
|
||||
.no-redirect {
|
||||
color: #97a8be;
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
<template>
|
||||
<section class="app-main">
|
||||
<breadcrumb id="breadcrumb-container" class="breadcrumb-container" />
|
||||
<transition name="fade-transform" mode="out-in">
|
||||
<keep-alive :include="cachedViews">
|
||||
<router-view :key="key" />
|
||||
|
@ -9,8 +10,12 @@
|
|||
</template>
|
||||
|
||||
<script>
|
||||
import Breadcrumb from "@/components/Breadcrumb";
|
||||
export default {
|
||||
name: 'AppMain',
|
||||
components: {
|
||||
Breadcrumb,
|
||||
},
|
||||
computed: {
|
||||
cachedViews() {
|
||||
return this.$store.state.tagsView.cachedViews
|
||||
|
@ -55,4 +60,7 @@ export default {
|
|||
padding-right: 15px;
|
||||
}
|
||||
}
|
||||
.app-breadcrumb.el-breadcrumb{
|
||||
font-size: 16px !important;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
<template>
|
||||
<div class="navbar">
|
||||
<hamburger id="hamburger-container" :is-active="sidebar.opened" class="hamburger-container" @toggleClick="toggleSideBar" />
|
||||
<!-- <hamburger id="hamburger-container" :is-active="sidebar.opened" class="hamburger-container" @toggleClick="toggleSideBar" /> -->
|
||||
|
||||
<breadcrumb id="breadcrumb-container" class="breadcrumb-container" />
|
||||
<!-- <breadcrumb id="breadcrumb-container" class="breadcrumb-container" /> -->
|
||||
|
||||
<div class="right-menu">
|
||||
<template v-if="device!=='mobile'">
|
||||
<!-- <template v-if="device!=='mobile'">
|
||||
<search id="header-search" class="right-menu-item" />
|
||||
|
||||
<error-log class="errLog-container right-menu-item hover-effect" />
|
||||
|
@ -16,11 +16,19 @@
|
|||
<size-select id="size-select" class="right-menu-item hover-effect" />
|
||||
</el-tooltip>
|
||||
|
||||
</template>
|
||||
</template> -->
|
||||
|
||||
<el-dropdown class="avatar-container right-menu-item hover-effect" trigger="click">
|
||||
<!-- <div class="avatar-wrapper"> -->
|
||||
<img :src="avatar" class="user-avatar" />
|
||||
<span>{{name}}</span>
|
||||
<el-button icon="el-icon-switch-button" type="text" style="margin-left:26px;margin-right:20px">退出登录</el-button>
|
||||
<!-- <div><i ></i>退出登录</div> -->
|
||||
<!-- <i class="el-icon-caret-bottom" /> -->
|
||||
<!-- </div> -->
|
||||
|
||||
<!-- <el-dropdown class="avatar-container right-menu-item hover-effect" trigger="click">
|
||||
<div class="avatar-wrapper">
|
||||
<img :src="avatar+'?imageView2/1/w/80/h/80'" class="user-avatar">
|
||||
<img :src="avatar" class="user-avatar">
|
||||
<i class="el-icon-caret-bottom" />
|
||||
</div>
|
||||
<el-dropdown-menu slot="dropdown">
|
||||
|
@ -40,19 +48,19 @@
|
|||
<span style="display:block;">Log Out</span>
|
||||
</el-dropdown-item>
|
||||
</el-dropdown-menu>
|
||||
</el-dropdown>
|
||||
</el-dropdown> -->
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapGetters } from 'vuex'
|
||||
import Breadcrumb from '@/components/Breadcrumb'
|
||||
import Hamburger from '@/components/Hamburger'
|
||||
import ErrorLog from '@/components/ErrorLog'
|
||||
import Screenfull from '@/components/Screenfull'
|
||||
import SizeSelect from '@/components/SizeSelect'
|
||||
import Search from '@/components/HeaderSearch'
|
||||
import { mapGetters } from "vuex";
|
||||
import Breadcrumb from "@/components/Breadcrumb";
|
||||
import Hamburger from "@/components/Hamburger";
|
||||
import ErrorLog from "@/components/ErrorLog";
|
||||
import Screenfull from "@/components/Screenfull";
|
||||
import SizeSelect from "@/components/SizeSelect";
|
||||
import Search from "@/components/HeaderSearch";
|
||||
|
||||
export default {
|
||||
components: {
|
||||
|
@ -64,22 +72,18 @@ export default {
|
|||
Search
|
||||
},
|
||||
computed: {
|
||||
...mapGetters([
|
||||
'sidebar',
|
||||
'avatar',
|
||||
'device'
|
||||
])
|
||||
...mapGetters(["sidebar", "avatar", "device","name"])
|
||||
},
|
||||
methods: {
|
||||
toggleSideBar() {
|
||||
this.$store.dispatch('app/toggleSideBar')
|
||||
this.$store.dispatch("app/toggleSideBar");
|
||||
},
|
||||
async logout() {
|
||||
await this.$store.dispatch('user/logout')
|
||||
this.$router.push(`/login?redirect=${this.$route.fullPath}`)
|
||||
await this.$store.dispatch("user/logout");
|
||||
this.$router.push(`/login?redirect=${this.$route.fullPath}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
|
@ -88,18 +92,18 @@ export default {
|
|||
overflow: hidden;
|
||||
position: relative;
|
||||
background: #fff;
|
||||
box-shadow: 0 1px 4px rgba(0,21,41,.08);
|
||||
box-shadow: 0 1px 4px rgba(0, 21, 41, 0.08);
|
||||
|
||||
.hamburger-container {
|
||||
line-height: 46px;
|
||||
height: 100%;
|
||||
float: left;
|
||||
cursor: pointer;
|
||||
transition: background .3s;
|
||||
-webkit-tap-highlight-color:transparent;
|
||||
transition: background 0.3s;
|
||||
-webkit-tap-highlight-color: transparent;
|
||||
|
||||
&:hover {
|
||||
background: rgba(0, 0, 0, .025)
|
||||
background: rgba(0, 0, 0, 0.025);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -116,6 +120,8 @@ export default {
|
|||
float: right;
|
||||
height: 100%;
|
||||
line-height: 50px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
&:focus {
|
||||
outline: none;
|
||||
|
@ -131,13 +137,20 @@ export default {
|
|||
|
||||
&.hover-effect {
|
||||
cursor: pointer;
|
||||
transition: background .3s;
|
||||
transition: background 0.3s;
|
||||
|
||||
&:hover {
|
||||
background: rgba(0, 0, 0, .025)
|
||||
background: rgba(0, 0, 0, 0.025);
|
||||
}
|
||||
}
|
||||
}
|
||||
.user-avatar {
|
||||
cursor: pointer;
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
border-radius: 28px;
|
||||
margin-right: 13px;
|
||||
}
|
||||
|
||||
.avatar-container {
|
||||
margin-right: 30px;
|
||||
|
@ -148,9 +161,9 @@ export default {
|
|||
|
||||
.user-avatar {
|
||||
cursor: pointer;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
border-radius: 10px;
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
border-radius: 28px;
|
||||
}
|
||||
|
||||
.el-icon-caret-bottom {
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<div :class="{hasTagsView:needTagsView}" class="main-container">
|
||||
<div :class="{'fixed-header':fixedHeader}">
|
||||
<navbar />
|
||||
<tags-view v-if="needTagsView" />
|
||||
<!-- <tags-view v-if="needTagsView" /> -->
|
||||
</div>
|
||||
<app-main />
|
||||
<!-- <right-panel v-if="showSettings">
|
||||
|
|
|
@ -72,6 +72,7 @@ export const constantRoutes = [
|
|||
},
|
||||
{
|
||||
path: '/',
|
||||
name:'Dashboard',
|
||||
component: Layout,
|
||||
redirect: '/dashboard',
|
||||
children: [
|
||||
|
@ -127,6 +128,7 @@ export const constantRoutes = [
|
|||
path: '/workBook',
|
||||
component: Layout,
|
||||
name: 'WorkBook',
|
||||
redirect: '/workBook/list',
|
||||
meta: {
|
||||
title: '工作手册',
|
||||
icon: 'list',
|
||||
|
|
|
@ -392,3 +392,19 @@ export function errorCodeMap(code) {
|
|||
}
|
||||
return errorCodeMap[code]
|
||||
}
|
||||
// export function 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;
|
||||
// }
|
|
@ -6,14 +6,14 @@
|
|||
<!-- bbc -->
|
||||
<el-form
|
||||
ref="convenienceForm"
|
||||
style="width:480px"
|
||||
style="width:680px"
|
||||
:model="convenience"
|
||||
:rules="rules"
|
||||
label-width="80px"
|
||||
class="el-form"
|
||||
>
|
||||
<el-form-item label="受理人" prop="residentInformation">
|
||||
<el-input v-model="searchInput" placeholder="请输入受理人手机号或身份证号" />
|
||||
<el-input v-model="searchInput" placeholder="群众身份证号或者手机号" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="办事项目">
|
||||
|
@ -23,7 +23,7 @@
|
|||
:options="typeOptions"
|
||||
:show-all-levels="false"
|
||||
:props="{ emitPath: false }"
|
||||
placeholder="选择办事项目"
|
||||
placeholder="选择大项目"
|
||||
style="width:100%"
|
||||
clearable
|
||||
/>
|
||||
|
@ -34,6 +34,7 @@
|
|||
v-model="convenience.remark"
|
||||
type="textarea"
|
||||
placeholder="请输入"
|
||||
:autosize="{ minRows: 6, maxRows: 8 }"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
|
@ -57,7 +58,7 @@
|
|||
</el-upload> -->
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="handleAdd">发起办事</el-button>
|
||||
<el-button type="primary" @click="handleAdd">创建工单</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
|
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
After Width: | Height: | Size: 953 B |
Binary file not shown.
After Width: | Height: | Size: 1.2 KiB |
Binary file not shown.
After Width: | Height: | Size: 1.2 KiB |
|
@ -1,31 +1,12 @@
|
|||
<template>
|
||||
<div class="app-container">
|
||||
<div class="app-container" style="padding-top:15px">
|
||||
<div class="filter-container">
|
||||
<!-- <el-button
|
||||
class="filter-item"
|
||||
style="margin-left: 10px;"
|
||||
type="primary"
|
||||
icon="el-icon-edit"
|
||||
@click="handleJump('create')"
|
||||
>新增
|
||||
</el-button>
|
||||
<el-button
|
||||
class="filter-item"
|
||||
style="margin-left: 10px;"
|
||||
type="primary"
|
||||
@click="handleExport"
|
||||
>导出
|
||||
</el-button> -->
|
||||
<!-- <el-cascader
|
||||
v-model="selectType"
|
||||
:options="types"
|
||||
@change="handleTypeChange"
|
||||
></el-cascader> -->
|
||||
<el-button
|
||||
type="primary"
|
||||
style="position:absolute;right:50px;top:120px"
|
||||
@click="$router.push('/convenience/add')"
|
||||
><i class="el-icon-plus" /> 直接建立工单</el-button>
|
||||
><i class="el-icon-plus" /> 直接建立工单</el-button
|
||||
>
|
||||
<div class="title">工单列表</div>
|
||||
<div style="margin-bottom:15px;margin-top:15px" />
|
||||
<el-radio-group v-model="listQuery.phase">
|
||||
|
@ -35,108 +16,25 @@
|
|||
<el-radio-button label="PROCESSING">办理中</el-radio-button>
|
||||
<el-radio-button label="FINISH">已办结</el-radio-button>
|
||||
</el-radio-group>
|
||||
<br>
|
||||
<br>
|
||||
<br />
|
||||
<br />
|
||||
<el-radio-group v-model="listQuery.status">
|
||||
<el-radio-button :label="undefined">全部状态</el-radio-button>
|
||||
<el-radio-button label="MINE">我处理</el-radio-button>
|
||||
<el-radio-button label="FORWARDED">已转交</el-radio-button>
|
||||
<el-radio-button
|
||||
label="FORWARDED_APPLY"
|
||||
>转交超限审批中</el-radio-button>
|
||||
<el-radio-button label="FORWARDED_APPLY"
|
||||
>转交超限审批中</el-radio-button
|
||||
>
|
||||
<el-radio-button label="SUBMIT_APPLY">已提交审批</el-radio-button>
|
||||
<el-radio-button label="WAIT_APPLY">待我审批</el-radio-button>
|
||||
</el-radio-group>
|
||||
<br>
|
||||
<br>
|
||||
<br />
|
||||
<br />
|
||||
</div>
|
||||
|
||||
<!-- <el-table
|
||||
class="tb"
|
||||
v-loading="listLoading"
|
||||
:data="list"
|
||||
border
|
||||
fit
|
||||
highlight-current-row
|
||||
style="width: 100%;"
|
||||
>
|
||||
<el-table-column label="流水号" min-width="150px" align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-tag
|
||||
style="cursor: pointer"
|
||||
@click="
|
||||
$router.push({
|
||||
path: '/convenience/detail',
|
||||
query: { id: scope.row.id }
|
||||
})
|
||||
"
|
||||
>{{ scope.row.serialNumber }}</el-tag
|
||||
>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="阶段" min-width="150px" align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.phase | phaseFilter }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="发起人" min-width="150px" align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.sponsor | sponsorFilter }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="申办人" min-width="150px" align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.residentInformation.name }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="办理人" min-width="150px" align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.currentResponsiblePerson.name }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="申请事项" min-width="150px" align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{
|
||||
scope.row.eventType && scope.row.eventType.eventName
|
||||
}}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="创建时间" min-width="150px" align="center">
|
||||
<template slot-scope="scope">
|
||||
<span class="">{{
|
||||
scope.row.createDate | parseTime("{y}-{m}-{d} {h}:{i}:{s}")
|
||||
}}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="任务状态" min-width="150px" align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.statusList[0].status | statusFilter }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="操作" width="300px" fixed="right" align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
v-if="scope.row.phase === 'PENDING_ORDER'"
|
||||
type="primary"
|
||||
size="mini"
|
||||
@click="handleUpdate(scope.row, 5)"
|
||||
>接单</el-button
|
||||
>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table> -->
|
||||
|
||||
<div class="convenienceList">
|
||||
<div
|
||||
v-for="item in list"
|
||||
v-for="(item, index) in list"
|
||||
:key="item.id"
|
||||
class="convenience_item"
|
||||
@click="
|
||||
|
@ -172,17 +70,19 @@
|
|||
</div>
|
||||
<div style="flex:1">
|
||||
<p style="font-size:20px;color:#ff6918">
|
||||
<i class="icon_timer" />04:25:30
|
||||
<i class="icon_timer" />{{
|
||||
(timers && timeFormat(timers[index].time)) || "00:00:00"
|
||||
}}
|
||||
</p>
|
||||
<p>
|
||||
<!-- v-if="item.phase === 'PENDING_ORDER'" -->
|
||||
<el-button
|
||||
v-if="item.phase === 'PENDING_ORDER'"
|
||||
style="margin-left:50px"
|
||||
type="primary"
|
||||
size="mini"
|
||||
@click="handleUpdate(item, 5)"
|
||||
>接单</el-button>
|
||||
>接单</el-button
|
||||
>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -276,10 +176,10 @@
|
|||
|
||||
<script>
|
||||
// import Pagination from "@/components/Pagination";
|
||||
import { list, typeList, update } from '@/api/convenience'
|
||||
import { parseTime } from '@/utils'
|
||||
import { staffList } from '@/api/staff'
|
||||
import AliOss from '@/components/AliOSS/index.vue'
|
||||
import { list, typeList, update } from "@/api/convenience";
|
||||
import { parseTime } from "@/utils";
|
||||
import { staffList } from "@/api/staff";
|
||||
import AliOss from "@/components/AliOSS/index.vue";
|
||||
|
||||
export default {
|
||||
components: {
|
||||
|
@ -289,48 +189,48 @@ export default {
|
|||
filters: {
|
||||
sponsorFilter(status) {
|
||||
const statusMap = {
|
||||
SELF: '居民',
|
||||
STAFF: '工作人员'
|
||||
}
|
||||
return statusMap[status]
|
||||
SELF: "居民",
|
||||
STAFF: "工作人员"
|
||||
};
|
||||
return statusMap[status];
|
||||
},
|
||||
phaseFilter(status) {
|
||||
const statusMap = {
|
||||
PENDING_ORDER: '待接单',
|
||||
PREREQUISITES: '要件准备中',
|
||||
PROCESSING: '办理中',
|
||||
FINISH: '办结'
|
||||
}
|
||||
return statusMap[status]
|
||||
PENDING_ORDER: "待接单",
|
||||
PREREQUISITES: "要件准备中",
|
||||
PROCESSING: "办理中",
|
||||
FINISH: "办结"
|
||||
};
|
||||
return statusMap[status];
|
||||
},
|
||||
statusFilter(status) {
|
||||
const statusMap = {
|
||||
MINE: '待我处理',
|
||||
FORWARDED: '已转交',
|
||||
FORWARDED_APPLY: '转交超限审批中',
|
||||
SUBMIT_APPLY: '提交申请',
|
||||
WAIT_APPLY: '待审核'
|
||||
}
|
||||
return statusMap[status]
|
||||
MINE: "待我处理",
|
||||
FORWARDED: "已转交",
|
||||
FORWARDED_APPLY: "转交超限审批中",
|
||||
SUBMIT_APPLY: "提交申请",
|
||||
WAIT_APPLY: "待审核"
|
||||
};
|
||||
return statusMap[status];
|
||||
},
|
||||
typeFilter(status) {
|
||||
const statusMap = {
|
||||
1: '建立工单',
|
||||
2: '撤销工单',
|
||||
3: '沟通',
|
||||
4: '调整工单类别',
|
||||
5: '接单',
|
||||
6: '要件齐备',
|
||||
7: '办结',
|
||||
8: '转交超限审批提交',
|
||||
9: '转交超限审批撤销',
|
||||
10: '转交超限审批',
|
||||
11: '发起审批',
|
||||
12: '撤销审批',
|
||||
13: '审批操作',
|
||||
14: '转交'
|
||||
}
|
||||
return statusMap[status]
|
||||
1: "建立工单",
|
||||
2: "撤销工单",
|
||||
3: "沟通",
|
||||
4: "调整工单类别",
|
||||
5: "接单",
|
||||
6: "要件齐备",
|
||||
7: "办结",
|
||||
8: "转交超限审批提交",
|
||||
9: "转交超限审批撤销",
|
||||
10: "转交超限审批",
|
||||
11: "发起审批",
|
||||
12: "撤销审批",
|
||||
13: "审批操作",
|
||||
14: "转交"
|
||||
};
|
||||
return statusMap[status];
|
||||
}
|
||||
},
|
||||
data() {
|
||||
|
@ -361,68 +261,126 @@ export default {
|
|||
},
|
||||
msec: 0,
|
||||
rules: {
|
||||
ids: [{ required: true, message: '请选择操作对象', trigger: 'change' }]
|
||||
}
|
||||
}
|
||||
ids: [{ required: true, message: "请选择操作对象", trigger: "change" }]
|
||||
},
|
||||
timers: undefined,
|
||||
timersInterval:undefined
|
||||
};
|
||||
},
|
||||
watch: {
|
||||
'listQuery.phase': {
|
||||
"listQuery.phase": {
|
||||
// 深度监听,可监听到对象、数组的变化
|
||||
handler(val) {
|
||||
this.listQuery.phase = val
|
||||
this.getList()
|
||||
this.listQuery.phase = val;
|
||||
this.getList();
|
||||
},
|
||||
deep: true // true 深度监听
|
||||
},
|
||||
'listQuery.status': {
|
||||
"listQuery.status": {
|
||||
// 深度监听,可监听到对象、数组的变化
|
||||
handler(val) {
|
||||
this.listQuery.status = val
|
||||
this.getList()
|
||||
this.listQuery.status = val;
|
||||
this.getList();
|
||||
},
|
||||
deep: true // true 深度监听
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getList()
|
||||
this.getStaffList()
|
||||
this.getList();
|
||||
this.getStaffList();
|
||||
},
|
||||
methods: {
|
||||
getList() {
|
||||
this.listLoading = true
|
||||
this.listLoading = true;
|
||||
list(this.listQuery).then(res => {
|
||||
this.list = res.d.records
|
||||
this.listLoading = false
|
||||
|
||||
const tempData = res.d.records
|
||||
const now = Date.parse(new Date()).toString() / 1000
|
||||
tempData.map(item => {
|
||||
this.list = res.d.records;
|
||||
this.listLoading = false;
|
||||
clearInterval(this.timersInterval)
|
||||
const tempData = res.d.records;
|
||||
const now = Date.parse(new Date()).toString() / 1000;
|
||||
let arr = [];
|
||||
tempData.map((item, index) => {
|
||||
// console.log(item);
|
||||
// PREREQUISITES: "要件准备中",
|
||||
// PROCESSING: "办理中",
|
||||
// FINISH: "办结"
|
||||
let msec = [];
|
||||
let obj = {};
|
||||
switch (item.phase) {
|
||||
case 'PENDING_ORDER':
|
||||
console.log(item.createDate)
|
||||
// this.countdown()
|
||||
this.msec = now - item.createDate
|
||||
// this.timeFormat(now-item.createDate)
|
||||
// this.msec=item.createDate
|
||||
break
|
||||
case 'PREREQUISITES':
|
||||
this.msec = now - item.createDate
|
||||
break
|
||||
case 'PROCESSING':
|
||||
break
|
||||
case 'FINISH':
|
||||
break
|
||||
case "PENDING_ORDER":
|
||||
// 待接单
|
||||
// console.log(item.createDate)
|
||||
// this.timers[index]++;
|
||||
msec = now - item.createDate;
|
||||
// msec++;
|
||||
// console.log(msec);
|
||||
obj = {
|
||||
time: msec,
|
||||
phase: item.phase
|
||||
};
|
||||
|
||||
arr.push(obj);
|
||||
break;
|
||||
case "PREREQUISITES":
|
||||
// 要件准备
|
||||
// console.log(index);
|
||||
// console.log(now);
|
||||
// console.log(item.createDate);
|
||||
// console.log(item.acceptanceTime);
|
||||
// console.log(now - item.createDate - item.acceptanceTime);
|
||||
msec = now - item.createDate - item.acceptanceTime;
|
||||
obj = {
|
||||
time: msec,
|
||||
phase: item.phase
|
||||
};
|
||||
arr.push(obj);
|
||||
break;
|
||||
case "PROCESSING":
|
||||
// 办理中
|
||||
msec =
|
||||
now -
|
||||
item.createDate -
|
||||
item.acceptanceTime -
|
||||
item.prerequisitesTime;
|
||||
obj = {
|
||||
time: msec,
|
||||
phase: item.phase
|
||||
};
|
||||
arr.push(obj);
|
||||
break;
|
||||
case "FINISH":
|
||||
msec =
|
||||
item.acceptanceTime + item.prerequisitesTime + item.finishTime;
|
||||
obj = {
|
||||
time: msec,
|
||||
phase: item.phase
|
||||
};
|
||||
arr.push(obj);
|
||||
// 办结
|
||||
break;
|
||||
default:
|
||||
// console.log("default");
|
||||
break;
|
||||
}
|
||||
})
|
||||
})
|
||||
});
|
||||
// console.log(arr);
|
||||
this.timersInterval = setInterval(() => {
|
||||
// console.log(arr);
|
||||
if (arr.length > 0) {
|
||||
arr.map(item => {
|
||||
if (item.phase !== "FINISH") {
|
||||
item.time++;
|
||||
}
|
||||
});
|
||||
}
|
||||
this.timers = arr;
|
||||
}, 1000);
|
||||
});
|
||||
},
|
||||
getTypeList() {
|
||||
typeList().then(res => {
|
||||
console.log(res)
|
||||
})
|
||||
// console.log(res);
|
||||
});
|
||||
},
|
||||
getStaffList() {
|
||||
staffList().then(res => {
|
||||
|
@ -430,10 +388,10 @@ export default {
|
|||
const obj = {
|
||||
label: item.name,
|
||||
value: item.id
|
||||
}
|
||||
this.staffOptions.push(obj)
|
||||
})
|
||||
})
|
||||
};
|
||||
this.staffOptions.push(obj);
|
||||
});
|
||||
});
|
||||
},
|
||||
handleTypeChange() {},
|
||||
resetPayload() {
|
||||
|
@ -445,140 +403,105 @@ export default {
|
|||
attachmentList: undefined,
|
||||
approve: undefined,
|
||||
evaluation: undefined
|
||||
}
|
||||
};
|
||||
},
|
||||
handleUpdate(row, type) {
|
||||
this.resetPayload()
|
||||
this.resetPayload();
|
||||
this.$nextTick(() => {
|
||||
this.$refs.applyForm.clearValidate()
|
||||
})
|
||||
this.updateType = type
|
||||
this.payload.id = row.id
|
||||
this.payload.version = row.version
|
||||
this.payload.type = type
|
||||
this.$refs.applyForm.clearValidate();
|
||||
});
|
||||
this.updateType = type;
|
||||
this.payload.id = row.id;
|
||||
this.payload.version = row.version;
|
||||
this.payload.type = type;
|
||||
switch (type) {
|
||||
case 5:
|
||||
this.applyDialog = true
|
||||
break
|
||||
this.applyDialog = true;
|
||||
break;
|
||||
case 6:
|
||||
this.applyDialog = true
|
||||
break
|
||||
this.applyDialog = true;
|
||||
break;
|
||||
case 11:
|
||||
this.applyDialog = true
|
||||
break
|
||||
this.applyDialog = true;
|
||||
break;
|
||||
case 13:
|
||||
this.applyDialog = true
|
||||
break
|
||||
this.applyDialog = true;
|
||||
break;
|
||||
case 14:
|
||||
this.applyDialog = true
|
||||
break
|
||||
this.applyDialog = true;
|
||||
break;
|
||||
default:
|
||||
this.updateData()
|
||||
break
|
||||
this.updateData();
|
||||
break;
|
||||
}
|
||||
},
|
||||
updateData() {
|
||||
update(this.payload).then(res => {
|
||||
if (res.c === 200) {
|
||||
this.$notify.success('操作成功')
|
||||
this.getList()
|
||||
this.$notify.success("操作成功");
|
||||
this.getList();
|
||||
}
|
||||
})
|
||||
});
|
||||
},
|
||||
apply() {
|
||||
this.$nextTick(() => {
|
||||
this.$refs.applyForm.validate(valid => {
|
||||
if (valid) {
|
||||
this.updateData()
|
||||
this.applyDialog = false
|
||||
this.updateData();
|
||||
this.applyDialog = false;
|
||||
}
|
||||
})
|
||||
}, 100)
|
||||
});
|
||||
}, 100);
|
||||
},
|
||||
handleFilterPhase(phase, event) {
|
||||
// console.log(event.target.tagName==='SPAN');
|
||||
if (event.target.tagName === 'SPAN') {
|
||||
if (event.target.tagName === "SPAN") {
|
||||
event.target.parentElement.setAttribute(
|
||||
'class',
|
||||
'el-button el-button--' +
|
||||
(phase === undefined ? 'primary' : 'default') +
|
||||
' el-button--medium is-round'
|
||||
)
|
||||
"class",
|
||||
"el-button el-button--" +
|
||||
(phase === undefined ? "primary" : "default") +
|
||||
" el-button--medium is-round"
|
||||
);
|
||||
} else {
|
||||
event.target.setAttribute(
|
||||
'class',
|
||||
'el-button el-button--' +
|
||||
(phase === undefined ? 'primary' : 'default') +
|
||||
' el-button--medium is-round'
|
||||
)
|
||||
"class",
|
||||
"el-button el-button--" +
|
||||
(phase === undefined ? "primary" : "default") +
|
||||
" el-button--medium is-round"
|
||||
);
|
||||
}
|
||||
this.listQuery.phase = phase
|
||||
this.getList()
|
||||
this.listQuery.phase = phase;
|
||||
this.getList();
|
||||
},
|
||||
handleFilterStatus(status) {
|
||||
this.listQuery.status = status
|
||||
this.getList()
|
||||
this.listQuery.status = status;
|
||||
this.getList();
|
||||
},
|
||||
handlePreview() {},
|
||||
handleRemove() {},
|
||||
beforeRemove() {},
|
||||
handleExceed() {},
|
||||
timeFormat(timeStamp) {
|
||||
// console.log(timeStamp);
|
||||
const timeStr = `${Math.floor(timeStamp / 3600)}:${Math.floor(
|
||||
((timeStamp % 86400) % 3600) / 60
|
||||
)}:${Math.floor(((timeStamp % 86400) % 3600) % 60)}`
|
||||
// console.log(time);
|
||||
// return time
|
||||
return timeStr
|
||||
// console.log(Math.floor(timeStamp / 3600));
|
||||
// this[obj].hour = Math.floor(timeStamp / 3600);
|
||||
// this[obj].minute = Math.floor(((timeStamp % 86400) % 3600) / 60);
|
||||
// this[obj].second = Math.floor(((timeStamp % 86400) % 3600) % 60);
|
||||
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;
|
||||
},
|
||||
countdown(msec) {
|
||||
this.console.log(msec)
|
||||
|
||||
// if (phase === "PENDING_ORDER") {
|
||||
// this.acceptanceInterval = setInterval(() => {
|
||||
// this.timeFormat("acceptanceTime", this.acceptanceMsec);
|
||||
// this.acceptanceMsec++;
|
||||
// }, 1000);
|
||||
// // 当前阶段的时间加上
|
||||
// this.totalMsec = this.acceptanceMsec;
|
||||
// this.totalTimeInterval = setInterval(() => {
|
||||
// this.timeFormat("totalTime", this.totalMsec);
|
||||
// this.totalMsec++;
|
||||
// }, 1000);
|
||||
// } else if (phase === "PREREQUISITES") {
|
||||
// this.prerequisitesInterval = setInterval(() => {
|
||||
// this.timeFormat("prerequisitesTime", this.preMsec);
|
||||
// this.preMsec++;
|
||||
// }, 1000);
|
||||
// this.totalMsec = this.convenience.acceptanceTime + this.preMsec;
|
||||
// this.totalTimeInterval = setInterval(() => {
|
||||
// this.timeFormat("totalTime", this.totalMsec);
|
||||
// this.totalMsec++;
|
||||
// }, 1000);
|
||||
// } else if (phase === "PROCESSING") {
|
||||
// this.finishTimeInterval = setInterval(() => {
|
||||
// this.timeFormat("finishTime", this.finishMsec);
|
||||
// this.finishMsec++;
|
||||
// }, 1000);
|
||||
// this.totalMsec =
|
||||
// this.convenience.acceptanceTime +
|
||||
// this.convenience.prerequisitesTime +
|
||||
// this.finishMsec;
|
||||
// this.totalTimeInterval = setInterval(() => {
|
||||
// this.timeFormat("totalTime", this.totalMsec);
|
||||
// this.totalMsec++;
|
||||
// }, 1000);
|
||||
// } else if (phase === "FINISH") {
|
||||
// this.finishMsec;
|
||||
// }
|
||||
countdown(index, status) {
|
||||
//
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scope>
|
||||
|
@ -652,10 +575,10 @@ export default {
|
|||
border: 0;
|
||||
font-size: 12px !important;
|
||||
}
|
||||
.el-radio-button:first-child .el-radio-button__inner{
|
||||
.el-radio-button:first-child .el-radio-button__inner {
|
||||
border-radius: 17px;
|
||||
}
|
||||
.el-radio-button:last-child .el-radio-button__inner{
|
||||
.el-radio-button:last-child .el-radio-button__inner {
|
||||
border-radius: 17px;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
<template>
|
||||
<div class="dashboard-editor-container">
|
||||
<github-corner class="github-corner" />
|
||||
<!-- <github-corner class="github-corner" /> -->
|
||||
|
||||
<panel-group @handleSetLineChartData="handleSetLineChartData" />
|
||||
|
||||
<el-row style="background:#fff;padding:16px 16px 0;margin-bottom:32px;">
|
||||
<!-- <el-row style="background:#fff;padding:16px 16px 0;margin-bottom:32px;">
|
||||
<line-chart :chart-data="lineChartData" />
|
||||
</el-row>
|
||||
</el-row> -->
|
||||
|
||||
<el-row :gutter="32">
|
||||
<!-- <el-row :gutter="32">
|
||||
<el-col :xs="24" :sm="24" :lg="8">
|
||||
<div class="chart-wrapper">
|
||||
<raddar-chart />
|
||||
|
@ -24,9 +24,9 @@
|
|||
<bar-chart />
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-row> -->
|
||||
|
||||
<el-row :gutter="8">
|
||||
<!-- <el-row :gutter="8">
|
||||
<el-col :xs="{span: 24}" :sm="{span: 24}" :md="{span: 24}" :lg="{span: 12}" :xl="{span: 12}" style="padding-right:8px;margin-bottom:30px;">
|
||||
<transaction-table />
|
||||
</el-col>
|
||||
|
@ -36,7 +36,7 @@
|
|||
<el-col :xs="{span: 24}" :sm="{span: 12}" :md="{span: 12}" :lg="{span: 6}" :xl="{span: 6}" style="margin-bottom:30px;">
|
||||
<box-card />
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-row> -->
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
|
|
@ -60,7 +60,7 @@
|
|||
/>
|
||||
<!-- style="width:290px" -->
|
||||
<!-- <el-button @click="handleSms">获取验证码</el-button> -->
|
||||
<button class="btn_getCode" type="button" :disabled="time!=5" @click="handleSms">
|
||||
<button class="btn_getCode" type="button" :disabled="getCodeDisabled" @click="handleSms">
|
||||
{{ codeText }}
|
||||
</button>
|
||||
</el-form-item>
|
||||
|
@ -134,7 +134,8 @@ export default {
|
|||
redirect: undefined,
|
||||
otherQuery: {},
|
||||
codeText: '获取验证码',
|
||||
time: 5
|
||||
time: 5,
|
||||
getCodeDisabled:false
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
|
@ -253,6 +254,7 @@ export default {
|
|||
}, {})
|
||||
},
|
||||
handleSms() {
|
||||
this.getCodeDisabled=false;
|
||||
const payload = {
|
||||
phone: this.loginForm.username,
|
||||
category: 'SIGNIN'
|
||||
|
@ -266,6 +268,7 @@ export default {
|
|||
}
|
||||
}).then(res => {
|
||||
if (res.data.c === 200) {
|
||||
this.getCodeDisabled=true;
|
||||
this.timer()
|
||||
this.$notify({
|
||||
title: '成功',
|
||||
|
@ -277,12 +280,14 @@ export default {
|
|||
})
|
||||
},
|
||||
timer() {
|
||||
this.codeText = `${this.time}s 后重新获取`
|
||||
var interval = setInterval(() => {
|
||||
this.time--
|
||||
this.codeText = `${this.time}s 后重新获取`
|
||||
if (this.time === 0) {
|
||||
this.time = 5
|
||||
this.codeText = '获取验证码'
|
||||
this.getCodeDisabled=false
|
||||
clearInterval(interval)
|
||||
}
|
||||
}, 1000)
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 375 KiB |
|
@ -1,8 +1,16 @@
|
|||
<template>
|
||||
<div class="app-container">
|
||||
<div class="filter-container" />
|
||||
<!-- <div class="filter-container" /> -->
|
||||
<div class="workBookLayout">
|
||||
<div class="title">工作手册管理</div>
|
||||
<div class="text-center"style="padding:10% 0">
|
||||
<img class="img" src="./img/comingSoon.png" alt="" />
|
||||
<h2>业务正在努力开发中...</h2>
|
||||
<div style="color:#787878">该功能即将上线,请稍等</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<el-table
|
||||
<!-- <el-table
|
||||
v-loading="listLoading"
|
||||
:data="list"
|
||||
border
|
||||
|
@ -45,13 +53,13 @@
|
|||
<span>{{ scope.row.releaseTime }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-table> -->
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Pagination from '@/components/Pagination'
|
||||
import { workBookList } from '@/api/workBook'
|
||||
import Pagination from "@/components/Pagination";
|
||||
import { workBookList } from "@/api/workBook";
|
||||
|
||||
export default {
|
||||
components: { Pagination },
|
||||
|
@ -65,20 +73,35 @@ export default {
|
|||
size: 10,
|
||||
keyword: undefined
|
||||
}
|
||||
}
|
||||
};
|
||||
},
|
||||
created() {
|
||||
this.getList()
|
||||
this.getList();
|
||||
},
|
||||
methods: {
|
||||
getList() {
|
||||
workBookList(this.listQuery).then(res => {
|
||||
console.log(res)
|
||||
this.list = res.d.records
|
||||
})
|
||||
console.log(res);
|
||||
this.list = res.d.records;
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style></style>
|
||||
<style scoped>
|
||||
.workBookLayout {
|
||||
background: #fff;
|
||||
height: 100%;
|
||||
}
|
||||
.title {
|
||||
border-left: 5px solid #1890ff;
|
||||
padding-left: 8px;
|
||||
font-size: 18px;
|
||||
color: #000000;
|
||||
}
|
||||
.img {
|
||||
width: 486px;
|
||||
height: 268px;
|
||||
}
|
||||
</style>
|
||||
|
|
Loading…
Reference in New Issue