This commit is contained in:
jiangrui 2021-04-13 00:33:29 +08:00
parent 56ddb245bf
commit 43554abf23
19 changed files with 903 additions and 233 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

@ -2,7 +2,11 @@
<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');
// return callback(new Error(""));
// } 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 { } else {
this.convenience.residentInformation = res.d.id 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() {
this.$refs.convenienceForm.validate(valid => {
if (valid) {
this.convenience.residentInformation = this.searchInput;
add(this.convenience).then(res => { add(this.convenience).then(res => {
if (res.c === 200) { if (res.c === 200) {
this.$notify.success('创建成功') this.$notify.success("创建成功");
this.$router.push('/convenience/list') 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
> >
@ -32,7 +32,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"
@ -44,7 +44,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}")
@ -57,7 +57,10 @@
<p>流水号{{ item.serialNumber }}</p> <p>流水号{{ item.serialNumber }}</p>
<p> <p>
阶段{{ item.phase | phaseFilter }} 阶段{{ item.phase | phaseFilter }}
<i class="icon_timeout" v-if="timers&&timers[index].status !== null"></i> <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
? "" ? ""
@ -77,10 +80,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"
}} }}
@ -88,13 +93,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>
@ -200,7 +220,7 @@ export default {
filters: { filters: {
sponsorFilter(status) { sponsorFilter(status) {
const statusMap = { const statusMap = {
SELF: "居民", SELF: "群众",
STAFF: "工作人员" STAFF: "工作人员"
}; };
return statusMap[status]; return statusMap[status];
@ -216,10 +236,10 @@ 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];
@ -309,6 +329,7 @@ export default {
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;
// console.log(now);
const arr = []; const arr = [];
tempData.map((item, index) => { tempData.map((item, index) => {
let msec = []; let msec = [];
@ -326,7 +347,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,
@ -336,11 +357,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,

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>