Browse Source

Merge branch 'test' of http://git.elinkit.com.cn:7070/r/epmet-oper-gov into test

shibei_master
jiangyy 4 years ago
parent
commit
595185b3a6
  1. 118
      src/assets/scss/people-info.scss
  2. 124
      src/views/main-shuju/main.vue
  3. 261
      src/views/modules/shequ/cpts/people-more.vue
  4. 101
      src/views/modules/shequ/cpts/xuqiu-info.vue
  5. 2
      src/views/modules/shequ/index.vue

118
src/assets/scss/people-info.scss

@ -0,0 +1,118 @@
@import "c/config";
@import "c/function";
.m-pop {
@include shield;
background-color: rgba(#000, 0.5);
overflow-y: auto;
.wrap {
position: relative;
margin: 120px auto;
padding: 20px;
width: 1000px;
background-color: #fff;
.title {
padding: 10px;
font-size: 22px;
font-family: PingFang SC;
font-weight: 800;
color: #333;
display: flex;
align-items: center;
img {
display: block;
margin-right: 5px;
}
span {
display: block;
}
}
.btn-close {
position: absolute;
top: -30px;
right: -30px;
cursor: pointer;
}
.list {
display: flex;
flex-wrap: wrap;
padding: 10px 30px;
.item {
position: relative;
box-sizing: border-box;
padding: 0 15px;
width: 33%;
color: #fff;
font-size: 18px;
font-family: PingFang SC;
font-weight: 400;
color: #333;
line-height: 24px;
margin: 20px 0;
&::before {
position: absolute;
left: 0;
top: 9px;
content: "";
display: block;
width: 7px;
height: 7px;
background: #ddd;
border-radius: 3px;
}
}
}
.line {
margin: 20px auto;
width: 900px;
height: 1px;
border: 1px dashed #ddd;
}
.tabs {
margin-top: 30px;
display: flex;
align-items: center;
padding-left: 20px;
.tab-btn {
width: 30px;
text-align: center;
cursor: pointer;
}
.tab {
margin: 0 5px;
min-width: 76px;
padding: 0 5px;
height: 30px;
background: #fff;
border: 1px solid #eee;
box-shadow: 0 0 10px 0 inset #ddd;
border-radius: 2px;
text-align: center;
font-size: 14px;
font-family: PingFang SC;
font-weight: 400;
color: #333;
line-height: 30px;
cursor: pointer;
transition: all ease 0.1s;
&.z-on {
background: linear-gradient(90deg, #1a5afd, #009cff);
box-shadow: none;
color: #ffffff;
border: 1px solid #1a5afd;
}
}
}
}
}

124
src/views/main-shuju/main.vue

@ -6,8 +6,8 @@
'g-bd', 'g-bd',
{ 'z-sidebar--fold': $store.state.sidebarFold }, { 'z-sidebar--fold': $store.state.sidebarFold },
{ {
'z-sidebar--noside':true 'z-sidebar--noside': true,
} },
]" ]"
> >
<template v-if="!loading"> <template v-if="!loading">
@ -23,29 +23,30 @@
</template> </template>
<script> <script>
import MainNavbar from './main-navbar' import MainNavbar from "./main-navbar";
import MainContent from './main-content' import MainContent from "./main-content";
import debounce from 'lodash/debounce' import debounce from "lodash/debounce";
import { mapGetters } from 'vuex' import { mapGetters } from "vuex";
import nextTick from 'dai-js/tools/nextTick' import nextTick from "dai-js/tools/nextTick";
import { requestPost } from "@/js/dai/request";
export default { export default {
provide() { provide() {
return { return {
// //
refresh() { refresh() {
this.$store.state.contentIsNeedRefresh = true this.$store.state.contentIsNeedRefresh = true;
this.$nextTick(() => { this.$nextTick(() => {
this.$store.state.contentIsNeedRefresh = false this.$store.state.contentIsNeedRefresh = false;
}) });
} },
} };
}, },
data() { data() {
return { return {
loading: true, loading: true,
userType: localStorage.getItem('userType') userType: localStorage.getItem("userType"),
} };
}, },
components: { components: {
MainNavbar, MainNavbar,
@ -53,105 +54,70 @@ export default {
}, },
watch: { watch: {
$route: 'routeHandle' $route: "routeHandle",
}, },
async created() { async created() {
this.windowResizeHandle() this.windowResizeHandle();
this.routeHandle(this.$route) this.routeHandle(this.$route);
Promise.all([this.getWorkUserInfo()]).then(() => { Promise.all([this.getWorkUserInfo()]).then(() => {
this.loading = false this.loading = false;
}) });
}, },
computed: {}, computed: {},
methods: { methods: {
changeCustomerName(customerName) { changeCustomerName(customerName) {
this.$refs['ref_navbar'].changeCustomerName(customerName) this.$refs["ref_navbar"].changeCustomerName(customerName);
}, },
// //
windowResizeHandle() { windowResizeHandle() {
this.$store.state.sidebarFold = this.$store.state.sidebarFold =
document.documentElement['clientWidth'] <= 992 || false document.documentElement["clientWidth"] <= 992 || false;
window.addEventListener( window.addEventListener(
'resize', "resize",
debounce(() => { debounce(() => {
this.$store.state.sidebarFold = this.$store.state.sidebarFold =
document.documentElement['clientWidth'] <= 992 || false document.documentElement["clientWidth"] <= 992 || false;
}, 150) }, 150)
) );
}, },
// , // ,
routeHandle(route) { routeHandle(route) {
if (!route.meta.isTab) { if (!route.meta.isTab) {
return false return false;
} }
var tab = this.$store.state.contentTabs.filter( var tab = this.$store.state.contentTabs.filter(
(item) => item.name === route.name (item) => item.name === route.name
)[0] )[0];
if (!tab) { if (!tab) {
tab = { tab = {
...window.SITE_CONFIG['contentTabDefault'], ...window.SITE_CONFIG["contentTabDefault"],
...route.meta, ...route.meta,
name: route.name, name: route.name,
params: { ...route.params }, params: { ...route.params },
query: { ...route.query } query: { ...route.query },
} };
this.$store.state.contentTabs = this.$store.state.contentTabs =
this.$store.state.contentTabs.concat(tab) this.$store.state.contentTabs.concat(tab);
} }
this.$store.state.mainShuju.activeName = tab.menuId this.$store.state.mainShuju.activeName = tab.menuId;
this.$store.state.mainShuju.contentTabsActiveName = tab.name this.$store.state.mainShuju.contentTabsActiveName = tab.name;
}, },
//
getUserInfo() {
const url = '/epmetuser/operuser/queryOperUserDto'
return this.$http
.get(url)
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.$store.state.user.id = res.data.id
this.$store.state.user.realName = res.data.realName
this.$store.state.user.superAdmin = res.data.superAdmin
this.$store.state.user.gender = data.gender
localStorage.setItem('customerId', '')
})
.catch(() => {})
},
// //
getWorkUserInfo() { async getWorkUserInfo() {
const url = '/epmetuser/customerstaff/staffbasicinfo' const url = "/epmetuser/customerstaff/staffbasicinfo";
let params = {} let params = {};
window.app.ajax.post(
url,
params,
(data, rspMsg) => {
this.$store.state.user = { ...data }
// this.$store.state.user.id = data.id
// this.$store.state.user.realName = data.realName
// this.$store.state.user.superAdmin = data.superAdmin
// this.$store.state.user.gender = data.gender
localStorage.setItem('roleList', data.roleList)
localStorage.setItem('customerId', data.customerId)
// this.$store.state.user.roleList = data.roleList
// this.$store.state.user.customerId = data.customerId
},
(rspMsg, data) => {
this.$message.error(rspMsg)
}
)
// return this.$http.get(url).then(({ data: res }) => {
// if (res.code !== 0) {
// return this.$message.error(res.msg)
// }
// }).catch(() => { }) const { data, code, msg } = await requestPost(url, params);
} if (code === 0) {
} this.$store.state.user = { ...data };
} localStorage.setItem("roleList", data.roleList);
localStorage.setItem("customerId", data.customerId);
}
},
},
};
</script> </script>
<style lang="scss" src="@/assets/scss/main-shuju.scss" scoped></style> <style lang="scss" src="@/assets/scss/main-shuju.scss" scoped></style>

261
src/views/modules/shequ/cpts/people-more.vue

@ -1,144 +1,109 @@
<template> <template>
<div class="m-pop"> <div class="m-pop">
<div class="wrap"> <div class="wrap">
<cpt-card> <div class="title">
<div class="title"> <span>更多信息</span>
<img src="@/assets/img/shuju/title-tip.png" /> </div>
<span>更多信息</span>
</div> <div class="btn-close" @click="handleClose">
<img src="@/assets/img/shuju/people/close.png" />
</div>
<div
:key="'fieldSubList' + index"
v-for="(fieldSubList, index) in fieldList"
>
<div class="list">
<div class="item" v-if="index == 0">
<span class="item-field">所属网格</span>
<span>{{ gridName }}</span>
</div>
<div class="item" v-if="index == 0">
<span class="item-field">所属小区</span>
<span>{{ xiaoquName }}</span>
</div>
<div class="item" v-if="index == 0">
<span class="item-field">所属楼宇</span>
<span>{{ louName }}-{{ danyuanName }}</span>
</div>
<div class="item" v-if="index == 0">
<span class="item-field">所属家庭</span>
<span>{{ homeName }}</span>
</div>
<div class="item" :key="field.itemId" v-for="field in fieldSubList">
<span class="item-field">{{ field.label }}</span>
<span
v-if="
field.itemType == 'select' ||
field.itemType == 'radio' ||
field.itemType == 'checkbox' ||
field.itemType == 'cascader'
"
>{{
info[field.columnName] == null
? "--"
: getOptionLabel(
field.options,
info[field.columnName],
field.itemType
)
}}</span
>
<div class="btn-close" @click="handleClose"> <span v-else>{{
<img src="@/assets/img/shuju/people/close.png" /> info[field.columnName] == null ? "--" : info[field.columnName]
}}</span>
</div>
</div> </div>
<div class="line"></div>
</div>
<div class="tabs">
<div <div
:key="'fieldSubList' + index" class="tab-btn"
v-for="(fieldSubList, index) in fieldList" @click="subStartGroupIndex"
v-if="groupList.length > 9"
> >
<div class="list"> <img src="@/assets/img/shuju/people/arrow-double-left.png" />
<div class="item" v-if="index == 0">
<span class="item-field">所属网格</span>
<span>{{ gridName }}</span>
</div>
<div class="item" v-if="index == 0">
<span class="item-field">所属小区</span>
<span>{{ xiaoquName }}</span>
</div>
<div class="item" v-if="index == 0">
<span class="item-field">所属楼宇</span>
<span>{{ louName }}-{{ danyuanName }}</span>
</div>
<div class="item" v-if="index == 0">
<span class="item-field">所属家庭</span>
<span>{{ homeName }}</span>
</div>
<div class="item" :key="field.itemId" v-for="field in fieldSubList">
<span class="item-field">{{ field.label }}</span>
<span
v-if="
field.itemType == 'select' ||
field.itemType == 'radio' ||
field.itemType == 'checkbox' ||
field.itemType == 'cascader'
"
>{{
info[field.columnName] == null
? "--"
: getOptionLabel(
field.options,
info[field.columnName],
field.itemType
)
}}</span
>
<span v-else>{{
info[field.columnName] == null ? "--" : info[field.columnName]
}}</span>
</div>
</div>
<div class="line"></div>
</div> </div>
<div
<div class="tabs"> v-show="index >= startGroupIndex && index < startGroupIndex + 9"
<div class="tab"
class="tab-btn" :class="groupIndex % groupList.length == index ? 'z-on' : ''"
@click="subStartGroupIndex" :key="'tab' + index"
v-if="groupList.length > 9" @click="groupIndex = index"
> v-for="(item, index) in groupList"
<img src="@/assets/img/shuju/people/arrow-double-left.png" /> >
</div> {{ item.label }}
<div </div>
v-show="index >= startGroupIndex && index < startGroupIndex + 9" <div
class="tab" class="tab-btn"
:class="groupIndex % groupList.length == index ? 'z-on' : ''" @click="addStartGroupIndex"
:key="'tab' + index" v-if="groupList.length > 9"
@click="groupIndex = index" >
v-for="(item, index) in groupList" <img src="@/assets/img/shuju/people/arrow-double-right.png" />
>
{{ item.label }}
</div>
<div
class="tab-btn"
@click="addStartGroupIndex"
v-if="groupList.length > 9"
>
<img src="@/assets/img/shuju/people/arrow-double-right.png" />
</div>
</div> </div>
</div>
<div
:key="'group' + index"
v-show="groupIndex % groupList.length == index"
v-for="(group, index) in groupList"
>
<div <div
:key="'group' + index" v-if="
v-show="groupIndex % groupList.length == index" group.tableName == 'ic_resi_demand' &&
v-for="(group, index) in groupList" Array.isArray(allInfo.ic_resi_demand) &&
allInfo.ic_resi_demand.length > 0
"
> >
<div <div
v-if=" class="list"
group.tableName == 'ic_resi_demand' && :key="'ic_resi_demand' + infoIndex"
Array.isArray(allInfo.ic_resi_demand) && v-for="(infoItem, infoIndex) in allInfo.ic_resi_demand"
allInfo.ic_resi_demand.length > 0
"
> >
<div
class="list"
:key="'ic_resi_demand' + infoIndex"
v-for="(infoItem, infoIndex) in allInfo.ic_resi_demand"
>
<div
class="item"
:key="field.itemId"
v-for="field in group.itemList"
>
<span class="item-field">{{ field.label }}</span>
<span
v-if="
field.itemType == 'select' ||
field.itemType == 'radio' ||
field.itemType == 'checkbox' ||
field.itemType == 'cascader'
"
>{{
infoItem[field.columnName] == null
? "--"
: getOptionLabel(
field.options,
infoItem[field.columnName],
field.itemType
)
}}</span
>
<span v-else>{{
infoItem[field.columnName] == null
? "--"
: infoItem[field.columnName]
}}</span>
</div>
</div>
</div>
<div class="list" v-else>
<div <div
class="item" class="item"
:key="field.itemId" :key="field.itemId"
@ -153,27 +118,55 @@
field.itemType == 'cascader' field.itemType == 'cascader'
" "
>{{ >{{
!allInfo[group.tableName] || infoItem[field.columnName] == null
allInfo[group.tableName][0][field.columnName] == null
? "--" ? "--"
: getOptionLabel( : getOptionLabel(
field.options, field.options,
allInfo[group.tableName][0][field.columnName], infoItem[field.columnName],
field.itemType field.itemType
) )
}}</span }}</span
> >
<span v-else>{{ <span v-else>{{
!allInfo[group.tableName] || infoItem[field.columnName] == null
allInfo[group.tableName][0][field.columnName] == null
? "--" ? "--"
: allInfo[group.tableName][0][field.columnName] : infoItem[field.columnName]
}}</span> }}</span>
</div> </div>
</div> </div>
</div> </div>
</cpt-card> <div class="list" v-else>
<div class="item" :key="field.itemId" v-for="field in group.itemList">
<span class="item-field">{{ field.label }}</span>
<span
v-if="
field.itemType == 'select' ||
field.itemType == 'radio' ||
field.itemType == 'checkbox' ||
field.itemType == 'cascader'
"
>{{
!allInfo[group.tableName] ||
allInfo[group.tableName][0][field.columnName] == null
? "--"
: getOptionLabel(
field.options,
allInfo[group.tableName][0][field.columnName],
field.itemType
)
}}</span
>
<span v-else>{{
!allInfo[group.tableName] ||
allInfo[group.tableName][0][field.columnName] == null
? "--"
: allInfo[group.tableName][0][field.columnName]
}}</span>
</div>
</div>
</div>
</div> </div>
</div> </div>
</template> </template>
@ -508,6 +501,6 @@ export default {
<style <style
lang="scss" lang="scss"
src="@/assets/scss/modules/visual/people.scss" src="@/assets/scss/people-info.scss"
scoped scoped
></style> ></style>

101
src/views/modules/shequ/cpts/xuqiu-info.vue

@ -8,11 +8,7 @@
:disabled="formType === 'detail'" :disabled="formType === 'detail'"
class="form" class="form"
> >
<el-form-item <el-form-item label="状态" label-width="150px" style="display: block">
label="状态"
label-width="150px"
style="display: block"
>
<span>{{ dataForm.statusName }}</span> <span>{{ dataForm.statusName }}</span>
</el-form-item> </el-form-item>
@ -48,11 +44,7 @@
<span>{{ dataForm.reportTypeName }}</span> <span>{{ dataForm.reportTypeName }}</span>
</el-form-item> </el-form-item>
<el-form-item <el-form-item label="上报人" label-width="150px" style="display: block">
label="上报人"
label-width="150px"
style="display: block"
>
<span>{{ dataForm.reportUserName }}</span> <span>{{ dataForm.reportUserName }}</span>
</el-form-item> </el-form-item>
@ -64,15 +56,12 @@
<span>{{ dataForm.reportTime }}</span> <span>{{ dataForm.reportTime }}</span>
</el-form-item> </el-form-item>
<el-form-item <el-form-item label="需求人" label-width="150px" style="display: block">
label="需求人"
label-width="150px"
style="display: block"
>
<span>{{ dataForm.demandUserName }}</span> <span>{{ dataForm.demandUserName }}</span>
</el-form-item> </el-form-item>
<el-form-item <el-form-item
v-if="dataForm.serviceShowName"
label="服务方" label="服务方"
label-width="150px" label-width="150px"
style="display: block" style="display: block"
@ -81,12 +70,68 @@
</el-form-item> </el-form-item>
<el-form-item <el-form-item
v-if="dataForm.wantServiceTime"
label="服务时间" label="服务时间"
label-width="150px" label-width="150px"
style="display: block" style="display: block"
> >
<span>{{ dataForm.wantServiceTime }}</span> <span>{{ dataForm.wantServiceTime }}</span>
</el-form-item> </el-form-item>
<el-form-item
v-if="
dataForm.serviceStartTime &&
dataForm.serviceEndTime &&
dataForm.status == 'finished'
"
label="实际服务时间"
label-width="150px"
style="display: block"
>
<span
>{{ dataForm.serviceStartTime }}{{
dataForm.serviceEndTime
}}</span
>
</el-form-item>
<el-form-item
v-if="dataForm.finishResult && dataForm.status == 'finished'"
label="完成情况"
label-width="150px"
style="display: block"
>
<span>{{
dataForm.finishResult == "resolved" ? "已解决" : "未解决"
}}</span>
</el-form-item>
<el-form-item
v-if="dataForm.score && dataForm.status == 'finished'"
label="评价得分"
label-width="150px"
style="display: block"
>
<span>{{ dataForm.score }}</span>
</el-form-item>
<el-form-item
v-if="dataForm.finishDesc && dataForm.status == 'finished'"
label="评价备注"
label-width="150px"
style="display: block"
>
<span>{{ dataForm.finishDesc }}</span>
</el-form-item>
<el-form-item
v-if="dataForm.cancelTime && dataForm.status == 'canceled'"
label="取消时间"
label-width="150px"
style="display: block"
>
<span>{{ dataForm.cancelTime }}</span>
</el-form-item>
</el-form> </el-form>
</div> </div>
<div class="div_btn"> <div class="div_btn">
@ -105,18 +150,7 @@ export default {
data() { data() {
return { return {
formType: "detail", // addeditdetail formType: "detail", // addeditdetail
dataForm: { dataForm: {},
neighborHoodId: "", // ID
buildingId: "", //ID
buildingUnitId: "", //ID
doorName: "", //
houseType: "", //
purpose: "", //
rentFlag: 1, //10
ownerPhone: "", //
ownerName: "", //
ownerIdCard: "", //
},
}; };
}, },
components: {}, components: {},
@ -138,18 +172,7 @@ export default {
}, },
resetData() { resetData() {
this.dataForm = { this.dataForm = {};
neighborHoodId: "", // ID
buildingId: "", //ID
buildingUnitId: "", //ID
doorName: "", //
houseType: "1", //
purpose: "1", //
rentFlag: 1, //10
ownerPhone: "", //
ownerName: "", //
ownerIdCard: "", //
};
}, },
// //
startLoading() { startLoading() {

2
src/views/modules/shequ/index.vue

@ -478,7 +478,7 @@ import { requestPost } from "@/js/dai/request";
import panChart from "@/views/modules/shequ/cpts/pan-chart"; import panChart from "@/views/modules/shequ/cpts/pan-chart";
import { mapGetters } from "vuex"; import { mapGetters } from "vuex";
import nextTick from "dai-js/tools/nextTick"; import nextTick from "dai-js/tools/nextTick";
import peopleMore from "@/views/modules/visual/basicinfo/cpts/people-more"; import peopleMore from "@/views/modules/shequ/cpts/people-more";
import fangwuInfo from "@/views/modules/shequ/cpts/fangwu-info"; import fangwuInfo from "@/views/modules/shequ/cpts/fangwu-info";
import xuqiuInfo from "@/views/modules/shequ/cpts/xuqiu-info"; import xuqiuInfo from "@/views/modules/shequ/cpts/xuqiu-info";

Loading…
Cancel
Save