This commit is contained in:
jr719 2021-04-12 00:28:15 +08:00
parent 2817066f5b
commit 866e452aa2
18 changed files with 1009 additions and 701 deletions

View File

@ -6,6 +6,30 @@
<script> <script>
export default { export default {
name: 'App' name: "App"
} };
</script> </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>

View File

@ -12,7 +12,7 @@
<!-- :on-exceed="handleExceed" <!-- :on-exceed="handleExceed"
:before-remove="beforeRemove" :before-remove="beforeRemove"
:on-preview="handlePreview" --> :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> </el-upload>
</template> </template>

View File

@ -37,7 +37,7 @@ export default {
const first = matched[0] const first = matched[0]
if (!this.isDashboard(first)) { 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) this.levelList = matched.filter(item => item.meta && item.meta.title && item.meta.breadcrumb !== false)
@ -70,9 +70,11 @@ export default {
<style lang="scss" scoped> <style lang="scss" scoped>
.app-breadcrumb.el-breadcrumb { .app-breadcrumb.el-breadcrumb {
display: inline-block; display: inline-block;
font-size: 14px; // font-size: 14px;
font-size: 16px;
line-height: 50px; line-height: 50px;
margin-left: 8px; // margin-left: 8px;
margin-left: 20px;
.no-redirect { .no-redirect {
color: #97a8be; color: #97a8be;

View File

@ -1,5 +1,6 @@
<template> <template>
<section class="app-main"> <section class="app-main">
<breadcrumb id="breadcrumb-container" class="breadcrumb-container" />
<transition name="fade-transform" mode="out-in"> <transition name="fade-transform" mode="out-in">
<keep-alive :include="cachedViews"> <keep-alive :include="cachedViews">
<router-view :key="key" /> <router-view :key="key" />
@ -9,8 +10,12 @@
</template> </template>
<script> <script>
import Breadcrumb from "@/components/Breadcrumb";
export default { export default {
name: 'AppMain', name: 'AppMain',
components: {
Breadcrumb,
},
computed: { computed: {
cachedViews() { cachedViews() {
return this.$store.state.tagsView.cachedViews return this.$store.state.tagsView.cachedViews
@ -55,4 +60,7 @@ export default {
padding-right: 15px; padding-right: 15px;
} }
} }
.app-breadcrumb.el-breadcrumb{
font-size: 16px !important;
}
</style> </style>

View File

@ -1,11 +1,11 @@
<template> <template>
<div class="navbar"> <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"> <div class="right-menu">
<template v-if="device!=='mobile'"> <!-- <template v-if="device!=='mobile'">
<search id="header-search" class="right-menu-item" /> <search id="header-search" class="right-menu-item" />
<error-log class="errLog-container right-menu-item hover-effect" /> <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" /> <size-select id="size-select" class="right-menu-item hover-effect" />
</el-tooltip> </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"> <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" /> <i class="el-icon-caret-bottom" />
</div> </div>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
@ -40,19 +48,19 @@
<span style="display:block;">Log Out</span> <span style="display:block;">Log Out</span>
</el-dropdown-item> </el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown> -->
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import { mapGetters } from 'vuex' import { mapGetters } from "vuex";
import Breadcrumb from '@/components/Breadcrumb' import Breadcrumb from "@/components/Breadcrumb";
import Hamburger from '@/components/Hamburger' import Hamburger from "@/components/Hamburger";
import ErrorLog from '@/components/ErrorLog' import ErrorLog from "@/components/ErrorLog";
import Screenfull from '@/components/Screenfull' import Screenfull from "@/components/Screenfull";
import SizeSelect from '@/components/SizeSelect' import SizeSelect from "@/components/SizeSelect";
import Search from '@/components/HeaderSearch' import Search from "@/components/HeaderSearch";
export default { export default {
components: { components: {
@ -64,22 +72,18 @@ export default {
Search Search
}, },
computed: { computed: {
...mapGetters([ ...mapGetters(["sidebar", "avatar", "device","name"])
'sidebar',
'avatar',
'device'
])
}, },
methods: { methods: {
toggleSideBar() { toggleSideBar() {
this.$store.dispatch('app/toggleSideBar') this.$store.dispatch("app/toggleSideBar");
}, },
async logout() { async logout() {
await this.$store.dispatch('user/logout') await this.$store.dispatch("user/logout");
this.$router.push(`/login?redirect=${this.$route.fullPath}`) this.$router.push(`/login?redirect=${this.$route.fullPath}`);
} }
} }
} };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@ -88,18 +92,18 @@ export default {
overflow: hidden; overflow: hidden;
position: relative; position: relative;
background: #fff; 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 { .hamburger-container {
line-height: 46px; line-height: 46px;
height: 100%; height: 100%;
float: left; float: left;
cursor: pointer; cursor: pointer;
transition: background .3s; transition: background 0.3s;
-webkit-tap-highlight-color:transparent; -webkit-tap-highlight-color: transparent;
&:hover { &:hover {
background: rgba(0, 0, 0, .025) background: rgba(0, 0, 0, 0.025);
} }
} }
@ -116,6 +120,8 @@ export default {
float: right; float: right;
height: 100%; height: 100%;
line-height: 50px; line-height: 50px;
display: flex;
align-items: center;
&:focus { &:focus {
outline: none; outline: none;
@ -131,13 +137,20 @@ export default {
&.hover-effect { &.hover-effect {
cursor: pointer; cursor: pointer;
transition: background .3s; transition: background 0.3s;
&:hover { &: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 { .avatar-container {
margin-right: 30px; margin-right: 30px;
@ -148,9 +161,9 @@ export default {
.user-avatar { .user-avatar {
cursor: pointer; cursor: pointer;
width: 40px; width: 28px;
height: 40px; height: 28px;
border-radius: 10px; border-radius: 28px;
} }
.el-icon-caret-bottom { .el-icon-caret-bottom {

View File

@ -5,7 +5,7 @@
<div :class="{hasTagsView:needTagsView}" class="main-container"> <div :class="{hasTagsView:needTagsView}" class="main-container">
<div :class="{'fixed-header':fixedHeader}"> <div :class="{'fixed-header':fixedHeader}">
<navbar /> <navbar />
<tags-view v-if="needTagsView" /> <!-- <tags-view v-if="needTagsView" /> -->
</div> </div>
<app-main /> <app-main />
<!-- <right-panel v-if="showSettings"> <!-- <right-panel v-if="showSettings">

View File

@ -72,6 +72,7 @@ export const constantRoutes = [
}, },
{ {
path: '/', path: '/',
name:'Dashboard',
component: Layout, component: Layout,
redirect: '/dashboard', redirect: '/dashboard',
children: [ children: [
@ -127,6 +128,7 @@ export const constantRoutes = [
path: '/workBook', path: '/workBook',
component: Layout, component: Layout,
name: 'WorkBook', name: 'WorkBook',
redirect: '/workBook/list',
meta: { meta: {
title: '工作手册', title: '工作手册',
icon: 'list', icon: 'list',

View File

@ -392,3 +392,19 @@ export function errorCodeMap(code) {
} }
return 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;
// }

View File

@ -6,14 +6,14 @@
<!-- bbc --> <!-- bbc -->
<el-form <el-form
ref="convenienceForm" ref="convenienceForm"
style="width:480px" style="width:680px"
:model="convenience" :model="convenience"
:rules="rules" :rules="rules"
label-width="80px" label-width="80px"
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="searchInput" placeholder="群众身份证号或者手机号" />
</el-form-item> </el-form-item>
<el-form-item label="办事项目"> <el-form-item label="办事项目">
@ -23,7 +23,7 @@
:options="typeOptions" :options="typeOptions"
:show-all-levels="false" :show-all-levels="false"
:props="{ emitPath: false }" :props="{ emitPath: false }"
placeholder="选择办事项目" placeholder="选择项目"
style="width:100%" style="width:100%"
clearable clearable
/> />
@ -34,6 +34,7 @@
v-model="convenience.remark" v-model="convenience.remark"
type="textarea" type="textarea"
placeholder="请输入" placeholder="请输入"
:autosize="{ minRows: 6, maxRows: 8 }"
/> />
</el-form-item> </el-form-item>
@ -57,7 +58,7 @@
</el-upload> --> </el-upload> -->
</el-form-item> </el-form-item>
<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-item>
</el-form> </el-form>
</div> </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

View File

@ -1,31 +1,12 @@
<template> <template>
<div class="app-container"> <div class="app-container" style="padding-top:15px">
<div class="filter-container"> <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 <el-button
type="primary" type="primary"
style="position:absolute;right:50px;top:120px" style="position:absolute;right:50px;top:120px"
@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>
<div style="margin-bottom:15px;margin-top:15px" /> <div style="margin-bottom:15px;margin-top:15px" />
<el-radio-group v-model="listQuery.phase"> <el-radio-group v-model="listQuery.phase">
@ -35,108 +16,25 @@
<el-radio-button label="PROCESSING">办理中</el-radio-button> <el-radio-button label="PROCESSING">办理中</el-radio-button>
<el-radio-button label="FINISH">已办结</el-radio-button> <el-radio-button label="FINISH">已办结</el-radio-button>
</el-radio-group> </el-radio-group>
<br> <br />
<br> <br />
<el-radio-group v-model="listQuery.status"> <el-radio-group v-model="listQuery.status">
<el-radio-button :label="undefined">全部状态</el-radio-button> <el-radio-button :label="undefined">全部状态</el-radio-button>
<el-radio-button label="MINE">我处理</el-radio-button> <el-radio-button label="MINE">我处理</el-radio-button>
<el-radio-button label="FORWARDED">已转交</el-radio-button> <el-radio-button label="FORWARDED">已转交</el-radio-button>
<el-radio-button <el-radio-button label="FORWARDED_APPLY"
label="FORWARDED_APPLY" >转交超限审批中</el-radio-button
>转交超限审批中</el-radio-button> >
<el-radio-button label="SUBMIT_APPLY">已提交审批</el-radio-button> <el-radio-button label="SUBMIT_APPLY">已提交审批</el-radio-button>
<el-radio-button label="WAIT_APPLY">待我审批</el-radio-button> <el-radio-button label="WAIT_APPLY">待我审批</el-radio-button>
</el-radio-group> </el-radio-group>
<br> <br />
<br> <br />
</div> </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 class="convenienceList">
<div <div
v-for="item in list" v-for="(item, index) in list"
:key="item.id" :key="item.id"
class="convenience_item" class="convenience_item"
@click=" @click="
@ -172,17 +70,19 @@
</div> </div>
<div style="flex:1"> <div style="flex:1">
<p style="font-size:20px;color:#ff6918"> <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>
<p> <p>
<!-- v-if="item.phase === 'PENDING_ORDER'" -->
<el-button <el-button
v-if="item.phase === 'PENDING_ORDER'" v-if="item.phase === 'PENDING_ORDER'"
style="margin-left:50px" style="margin-left:50px"
type="primary" type="primary"
size="mini" size="mini"
@click="handleUpdate(item, 5)" @click="handleUpdate(item, 5)"
>接单</el-button> >接单</el-button
>
</p> </p>
</div> </div>
</div> </div>
@ -276,10 +176,10 @@
<script> <script>
// import Pagination from "@/components/Pagination"; // import Pagination from "@/components/Pagination";
import { list, typeList, update } from '@/api/convenience' import { list, typeList, update } from "@/api/convenience";
import { parseTime } from '@/utils' import { parseTime } from "@/utils";
import { staffList } from '@/api/staff' import { staffList } from "@/api/staff";
import AliOss from '@/components/AliOSS/index.vue' import AliOss from "@/components/AliOSS/index.vue";
export default { export default {
components: { components: {
@ -289,48 +189,48 @@ 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 = {
PENDING_ORDER: '待接单', PENDING_ORDER: "待接单",
PREREQUISITES: '要件准备中', PREREQUISITES: "要件准备中",
PROCESSING: '办理中', PROCESSING: "办理中",
FINISH: '办结' FINISH: "办结"
} };
return statusMap[status] return statusMap[status];
}, },
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 = {
1: '建立工单', 1: "建立工单",
2: '撤销工单', 2: "撤销工单",
3: '沟通', 3: "沟通",
4: '调整工单类别', 4: "调整工单类别",
5: '接单', 5: "接单",
6: '要件齐备', 6: "要件齐备",
7: '办结', 7: "办结",
8: '转交超限审批提交', 8: "转交超限审批提交",
9: '转交超限审批撤销', 9: "转交超限审批撤销",
10: '转交超限审批', 10: "转交超限审批",
11: '发起审批', 11: "发起审批",
12: '撤销审批', 12: "撤销审批",
13: '审批操作', 13: "审批操作",
14: '转交' 14: "转交"
} };
return statusMap[status] return statusMap[status];
} }
}, },
data() { data() {
@ -361,68 +261,126 @@ export default {
}, },
msec: 0, msec: 0,
rules: { rules: {
ids: [{ required: true, message: '请选择操作对象', trigger: 'change' }] ids: [{ required: true, message: "请选择操作对象", trigger: "change" }]
} },
} timers: undefined,
timersInterval:undefined
};
}, },
watch: { watch: {
'listQuery.phase': { "listQuery.phase": {
// //
handler(val) { handler(val) {
this.listQuery.phase = val this.listQuery.phase = val;
this.getList() this.getList();
}, },
deep: true // true deep: true // true
}, },
'listQuery.status': { "listQuery.status": {
// //
handler(val) { handler(val) {
this.listQuery.status = val this.listQuery.status = val;
this.getList() this.getList();
}, },
deep: true // true deep: true // true
} }
}, },
created() { created() {
this.getList() this.getList();
this.getStaffList() this.getStaffList();
}, },
methods: { methods: {
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)
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;
tempData.map(item => { let arr = [];
tempData.map((item, index) => {
// console.log(item);
// PREREQUISITES: "", // PREREQUISITES: "",
// PROCESSING: "", // PROCESSING: "",
// FINISH: "" // FINISH: ""
let msec = [];
let obj = {};
switch (item.phase) { switch (item.phase) {
case 'PENDING_ORDER': case "PENDING_ORDER":
console.log(item.createDate) //
// this.countdown() // console.log(item.createDate)
this.msec = now - item.createDate // this.timers[index]++;
// this.timeFormat(now-item.createDate) msec = now - item.createDate;
// this.msec=item.createDate // msec++;
break // console.log(msec);
case 'PREREQUISITES': obj = {
this.msec = now - item.createDate time: msec,
break phase: item.phase
case 'PROCESSING': };
break
case 'FINISH': arr.push(obj);
break 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() { getTypeList() {
typeList().then(res => { typeList().then(res => {
console.log(res) // console.log(res);
}) });
}, },
getStaffList() { getStaffList() {
staffList().then(res => { staffList().then(res => {
@ -430,10 +388,10 @@ export default {
const obj = { const obj = {
label: item.name, label: item.name,
value: item.id value: item.id
} };
this.staffOptions.push(obj) this.staffOptions.push(obj);
}) });
}) });
}, },
handleTypeChange() {}, handleTypeChange() {},
resetPayload() { resetPayload() {
@ -445,140 +403,105 @@ export default {
attachmentList: undefined, attachmentList: undefined,
approve: undefined, approve: undefined,
evaluation: undefined evaluation: undefined
} };
}, },
handleUpdate(row, type) { handleUpdate(row, type) {
this.resetPayload() this.resetPayload();
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.applyForm.clearValidate() this.$refs.applyForm.clearValidate();
}) });
this.updateType = type this.updateType = type;
this.payload.id = row.id this.payload.id = row.id;
this.payload.version = row.version this.payload.version = row.version;
this.payload.type = type this.payload.type = type;
switch (type) { switch (type) {
case 5: case 5:
this.applyDialog = true this.applyDialog = true;
break break;
case 6: case 6:
this.applyDialog = true this.applyDialog = true;
break break;
case 11: case 11:
this.applyDialog = true this.applyDialog = true;
break break;
case 13: case 13:
this.applyDialog = true this.applyDialog = true;
break break;
case 14: case 14:
this.applyDialog = true this.applyDialog = true;
break break;
default: default:
this.updateData() this.updateData();
break break;
} }
}, },
updateData() { updateData() {
update(this.payload).then(res => { update(this.payload).then(res => {
if (res.c === 200) { if (res.c === 200) {
this.$notify.success('操作成功') this.$notify.success("操作成功");
this.getList() this.getList();
} }
}) });
}, },
apply() { apply() {
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.applyForm.validate(valid => { this.$refs.applyForm.validate(valid => {
if (valid) { if (valid) {
this.updateData() this.updateData();
this.applyDialog = false this.applyDialog = false;
} }
}) });
}, 100) }, 100);
}, },
handleFilterPhase(phase, event) { handleFilterPhase(phase, event) {
// console.log(event.target.tagName==='SPAN'); // console.log(event.target.tagName==='SPAN');
if (event.target.tagName === 'SPAN') { if (event.target.tagName === "SPAN") {
event.target.parentElement.setAttribute( event.target.parentElement.setAttribute(
'class', "class",
'el-button el-button--' + "el-button el-button--" +
(phase === undefined ? 'primary' : 'default') + (phase === undefined ? "primary" : "default") +
' el-button--medium is-round' " el-button--medium is-round"
) );
} else { } else {
event.target.setAttribute( event.target.setAttribute(
'class', "class",
'el-button el-button--' + "el-button el-button--" +
(phase === undefined ? 'primary' : 'default') + (phase === undefined ? "primary" : "default") +
' el-button--medium is-round' " el-button--medium is-round"
) );
} }
this.listQuery.phase = phase this.listQuery.phase = phase;
this.getList() this.getList();
}, },
handleFilterStatus(status) { handleFilterStatus(status) {
this.listQuery.status = status this.listQuery.status = status;
this.getList() this.getList();
}, },
handlePreview() {}, handlePreview() {},
handleRemove() {}, handleRemove() {},
beforeRemove() {}, beforeRemove() {},
handleExceed() {}, handleExceed() {},
timeFormat(timeStamp) { timeFormat(timeStamp) {
// console.log(timeStamp); const timeStr = `${
const timeStr = `${Math.floor(timeStamp / 3600)}:${Math.floor( Math.floor(timeStamp / 3600) < 9
((timeStamp % 86400) % 3600) / 60 ? "0" + Math.floor(timeStamp / 3600)
)}:${Math.floor(((timeStamp % 86400) % 3600) % 60)}` : Math.floor(timeStamp / 3600)
// console.log(time); }:${
// return time Math.floor(((timeStamp % 86400) % 3600) / 60) < 9
return timeStr ? "0" + Math.floor(((timeStamp % 86400) % 3600) / 60)
// console.log(Math.floor(timeStamp / 3600)); : Math.floor(((timeStamp % 86400) % 3600) / 60)
// this[obj].hour = Math.floor(timeStamp / 3600); }:${
// this[obj].minute = Math.floor(((timeStamp % 86400) % 3600) / 60); Math.floor(((timeStamp % 86400) % 3600) % 60) < 9
// this[obj].second = Math.floor(((timeStamp % 86400) % 3600) % 60); ? "0" + Math.floor(((timeStamp % 86400) % 3600) % 60)
: Math.floor(((timeStamp % 86400) % 3600) % 60)
}`;
return timeStr;
}, },
countdown(msec) { countdown(index, status) {
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;
// }
} }
} }
} };
</script> </script>
<style scope> <style scope>
@ -652,10 +575,10 @@ export default {
border: 0; border: 0;
font-size: 12px !important; 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; border-radius: 17px;
} }
.el-radio-button:last-child .el-radio-button__inner{ .el-radio-button:last-child .el-radio-button__inner {
border-radius: 17px; border-radius: 17px;
} }
</style> </style>

View File

@ -1,14 +1,14 @@
<template> <template>
<div class="dashboard-editor-container"> <div class="dashboard-editor-container">
<github-corner class="github-corner" /> <!-- <github-corner class="github-corner" /> -->
<panel-group @handleSetLineChartData="handleSetLineChartData" /> <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" /> <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"> <el-col :xs="24" :sm="24" :lg="8">
<div class="chart-wrapper"> <div class="chart-wrapper">
<raddar-chart /> <raddar-chart />
@ -24,9 +24,9 @@
<bar-chart /> <bar-chart />
</div> </div>
</el-col> </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;"> <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 /> <transaction-table />
</el-col> </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;"> <el-col :xs="{span: 24}" :sm="{span: 12}" :md="{span: 12}" :lg="{span: 6}" :xl="{span: 6}" style="margin-bottom:30px;">
<box-card /> <box-card />
</el-col> </el-col>
</el-row> </el-row> -->
</div> </div>
</template> </template>

View File

@ -60,7 +60,7 @@
/> />
<!-- style="width:290px" --> <!-- style="width:290px" -->
<!-- <el-button @click="handleSms">获取验证码</el-button> --> <!-- <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 }} {{ codeText }}
</button> </button>
</el-form-item> </el-form-item>
@ -134,7 +134,8 @@ export default {
redirect: undefined, redirect: undefined,
otherQuery: {}, otherQuery: {},
codeText: '获取验证码', codeText: '获取验证码',
time: 5 time: 5,
getCodeDisabled:false
} }
}, },
watch: { watch: {
@ -253,6 +254,7 @@ export default {
}, {}) }, {})
}, },
handleSms() { handleSms() {
this.getCodeDisabled=false;
const payload = { const payload = {
phone: this.loginForm.username, phone: this.loginForm.username,
category: 'SIGNIN' category: 'SIGNIN'
@ -266,6 +268,7 @@ export default {
} }
}).then(res => { }).then(res => {
if (res.data.c === 200) { if (res.data.c === 200) {
this.getCodeDisabled=true;
this.timer() this.timer()
this.$notify({ this.$notify({
title: '成功', title: '成功',
@ -277,12 +280,14 @@ export default {
}) })
}, },
timer() { timer() {
this.codeText = `${this.time}s 后重新获取`
var interval = setInterval(() => { var interval = setInterval(() => {
this.time-- this.time--
this.codeText = `${this.time}s 后重新获取` this.codeText = `${this.time}s 后重新获取`
if (this.time === 0) { if (this.time === 0) {
this.time = 5 this.time = 5
this.codeText = '获取验证码' this.codeText = '获取验证码'
this.getCodeDisabled=false
clearInterval(interval) clearInterval(interval)
} }
}, 1000) }, 1000)

Binary file not shown.

After

Width:  |  Height:  |  Size: 375 KiB

View File

@ -1,8 +1,16 @@
<template> <template>
<div class="app-container"> <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" v-loading="listLoading"
:data="list" :data="list"
border border
@ -45,13 +53,13 @@
<span>{{ scope.row.releaseTime }}</span> <span>{{ scope.row.releaseTime }}</span>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table> -->
</div> </div>
</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 {
components: { Pagination }, components: { Pagination },
@ -65,20 +73,35 @@ export default {
size: 10, size: 10,
keyword: undefined keyword: undefined
} }
} };
}, },
created() { created() {
this.getList() this.getList();
}, },
methods: { methods: {
getList() { getList() {
workBookList(this.listQuery).then(res => { workBookList(this.listQuery).then(res => {
console.log(res) console.log(res);
this.list = res.d.records this.list = res.d.records;
}) });
} }
} }
} };
</script> </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>