|
@@ -1,7 +1,12 @@
|
|
|
<template>
|
|
|
<div class="workMeeting">
|
|
|
<div class="page-query-core">
|
|
|
- <query :show="['company', 'floor', 'time']" :query-data.sync="queryData" :reset="reset" :search="search"></query>
|
|
|
+ <query
|
|
|
+ :show="['company', 'floor', 'time']"
|
|
|
+ :query-data.sync="queryData"
|
|
|
+ :reset="reset"
|
|
|
+ :search="search"
|
|
|
+ ></query>
|
|
|
<card :title="'核心指标'">
|
|
|
<CoreData :data-list="coreData"></CoreData>
|
|
|
</card>
|
|
@@ -15,88 +20,138 @@
|
|
|
<a-row>
|
|
|
<a-col :span="2">
|
|
|
<a-menu
|
|
|
- style="width: 100%"
|
|
|
- :default-selected-keys="defaultSelectedKeys"
|
|
|
- mode="inline"
|
|
|
- @click="huiyiClick"
|
|
|
+ style="width: 100%"
|
|
|
+ :default-selected-keys="defaultSelectedKeys"
|
|
|
+ mode="inline"
|
|
|
+ @click="huiyiClick"
|
|
|
>
|
|
|
<!-- style="width: 100px" -->
|
|
|
<!-- :open-keys.sync="openKeys" -->
|
|
|
- <a-menu-item v-for="(item, index) in tabsArr" :key="index + ''">
|
|
|
+ <a-menu-item
|
|
|
+ v-for="(item, index) in tabsArr"
|
|
|
+ :key="index + ''"
|
|
|
+ >
|
|
|
{{ item.title }}
|
|
|
</a-menu-item>
|
|
|
</a-menu>
|
|
|
</a-col>
|
|
|
- <a-col :span="22">
|
|
|
+ <a-col :span="3">
|
|
|
+ <div class="week-box" v-for="n in timeArr" :key="n">
|
|
|
+ <div class="week">{{ n.weekday }}</div>
|
|
|
+ <div class="date">{{ n.date }}</div>
|
|
|
+ </div>
|
|
|
+ </a-col>
|
|
|
+ <a-col :span="19">
|
|
|
<timeline
|
|
|
- v-for="(item, index) in tabsItemArr"
|
|
|
- :key="index"
|
|
|
- v-bind="{
|
|
|
- startTime: 8,
|
|
|
- endTime: 17,
|
|
|
- huiyiInfo: item.shiyong,
|
|
|
- }"
|
|
|
- :style="{ height: '60px' }"
|
|
|
+ v-for="(item, index) in tabsItemArr"
|
|
|
+ :key="index"
|
|
|
+ v-bind="{
|
|
|
+ startTime: 8,
|
|
|
+ endTime: 17,
|
|
|
+ huiyiInfo: item.shiyong,
|
|
|
+ }"
|
|
|
+ :style="{ height: '60px' }"
|
|
|
></timeline>
|
|
|
</a-col>
|
|
|
</a-row>
|
|
|
<div class="workMeeting-left-detail">
|
|
|
<a-descriptions :column="2" :colon="false">
|
|
|
- <a-descriptions-item >
|
|
|
+ <a-descriptions-item>
|
|
|
<template #label>
|
|
|
- <span class="workMeeting-left-detail-label">会议主题:</span>
|
|
|
+ <span class="workMeeting-left-detail-label"
|
|
|
+ >会议主题:</span
|
|
|
+ >
|
|
|
</template>
|
|
|
- <div class="workMeeting-left-detail-content">智慧楼宇产品会议</div>
|
|
|
+ <div class="workMeeting-left-detail-content">
|
|
|
+ 智慧楼宇产品会议
|
|
|
+ </div>
|
|
|
</a-descriptions-item>
|
|
|
- <a-descriptions-item >
|
|
|
+ <a-descriptions-item>
|
|
|
<template #label>
|
|
|
- <span class="workMeeting-left-detail-label">会议配置:</span>
|
|
|
+ <span class="workMeeting-left-detail-label"
|
|
|
+ >会议配置:</span
|
|
|
+ >
|
|
|
</template>
|
|
|
- <div class="workMeeting-left-detail-content">智慧会议场景配置1</div>
|
|
|
+ <div class="workMeeting-left-detail-content">
|
|
|
+ 智慧会议场景配置1
|
|
|
+ </div>
|
|
|
</a-descriptions-item>
|
|
|
- <a-descriptions-item >
|
|
|
+ <a-descriptions-item>
|
|
|
<template #label>
|
|
|
- <span class="workMeeting-left-detail-label">预约部门:</span>
|
|
|
+ <span class="workMeeting-left-detail-label"
|
|
|
+ >预约部门:</span
|
|
|
+ >
|
|
|
</template>
|
|
|
- <div class="workMeeting-left-detail-content">北京电信规划设计院-创新产品研发中心</div>
|
|
|
+ <div class="workMeeting-left-detail-content">
|
|
|
+ 北京电信规划设计院-创新产品研发中心
|
|
|
+ </div>
|
|
|
</a-descriptions-item>
|
|
|
<a-descriptions-item>
|
|
|
<template #label>
|
|
|
- <span class="workMeeting-left-detail-label">会议成本:</span>
|
|
|
+ <span class="workMeeting-left-detail-label"
|
|
|
+ >会议成本:</span
|
|
|
+ >
|
|
|
</template>
|
|
|
- <div class="workMeeting-left-detail-content" style="background-color: #ffffff">30元/小时</div>
|
|
|
+ <div
|
|
|
+ class="workMeeting-left-detail-content"
|
|
|
+ style="background-color: #ffffff"
|
|
|
+ >
|
|
|
+ 30元/小时
|
|
|
+ </div>
|
|
|
</a-descriptions-item>
|
|
|
- <a-descriptions-item >
|
|
|
+ <a-descriptions-item>
|
|
|
<template #label>
|
|
|
- <span class="workMeeting-left-detail-label">参会人员:</span>
|
|
|
+ <span class="workMeeting-left-detail-label"
|
|
|
+ >参会人员:</span
|
|
|
+ >
|
|
|
</template>
|
|
|
- <div style="width: 100%;vertical-align: top">
|
|
|
- <div style="display: inline-block;vertical-align: top;margin: 1px 3px">
|
|
|
- <a-avatar src="https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png" />
|
|
|
+ <div style="width: 100%; vertical-align: top">
|
|
|
+ <div
|
|
|
+ style="
|
|
|
+ display: inline-block;
|
|
|
+ vertical-align: top;
|
|
|
+ margin: 1px 3px;
|
|
|
+ "
|
|
|
+ >
|
|
|
+ <a-avatar
|
|
|
+ src="https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png"
|
|
|
+ />
|
|
|
<div>张三</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</a-descriptions-item>
|
|
|
- <a-descriptions-item >
|
|
|
+ <a-descriptions-item>
|
|
|
<template #label>
|
|
|
- <span class="workMeeting-left-detail-label">会议费用:</span>
|
|
|
+ <span class="workMeeting-left-detail-label"
|
|
|
+ >会议费用:</span
|
|
|
+ >
|
|
|
</template>
|
|
|
- <div class="workMeeting-left-detail-content" style="background-color: #ffffff">35元/小时</div>
|
|
|
+ <div
|
|
|
+ class="workMeeting-left-detail-content"
|
|
|
+ style="background-color: #ffffff"
|
|
|
+ >
|
|
|
+ 35元/小时
|
|
|
+ </div>
|
|
|
</a-descriptions-item>
|
|
|
</a-descriptions>
|
|
|
</div>
|
|
|
</card>
|
|
|
-
|
|
|
</div>
|
|
|
</a-col>
|
|
|
<a-col :span="6">
|
|
|
<div class="workMeeting-right ioc-card-content">
|
|
|
<card title="成本趋势">
|
|
|
<template #title-extra>
|
|
|
- <div style="font-size: 18px;color: #4D4D4D;margin-top: 3px">成本集中</div>
|
|
|
+ <div style="font-size: 18px; color: #4d4d4d; margin-top: 3px">
|
|
|
+ 成本集中
|
|
|
+ </div>
|
|
|
</template>
|
|
|
<div class="cben">
|
|
|
- <WorkMeetingCostTrend ref="WorkMeetingCostTrend" :queryData="queryData" :height="475" />
|
|
|
+ <WorkMeetingCostTrend
|
|
|
+ ref="WorkMeetingCostTrend"
|
|
|
+ :queryData="queryData"
|
|
|
+ :height="475"
|
|
|
+ />
|
|
|
</div>
|
|
|
</card>
|
|
|
</div>
|
|
@@ -132,16 +187,43 @@ export default {
|
|
|
}
|
|
|
let timeRange = this.$util.dateUtil.getNearlyMonthRange();
|
|
|
return {
|
|
|
+ timeArr: [
|
|
|
+ {
|
|
|
+ id: 1,
|
|
|
+ weekday: "周一",
|
|
|
+ date: "",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ id: 2,
|
|
|
+ weekday: "周二",
|
|
|
+ date: "",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ id: 3,
|
|
|
+ weekday: "周三",
|
|
|
+ date: "",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ id: 4,
|
|
|
+ weekday: "周四",
|
|
|
+ date: "",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ id: 5,
|
|
|
+ weekday: "周五",
|
|
|
+ date: "",
|
|
|
+ },
|
|
|
+ ],
|
|
|
queryData: {
|
|
|
- companyId: '0',
|
|
|
- floorId: '0',
|
|
|
+ companyId: "0",
|
|
|
+ floorId: "0",
|
|
|
timeRange: timeRange,
|
|
|
},
|
|
|
columns: [
|
|
|
- {title: "序号", dataIndex: "index", key: "1", width: 48},
|
|
|
- {title: "姓名", dataIndex: "name", key: "2", width: 60},
|
|
|
- {title: "部门", dataIndex: "department", key: "3", width: 80},
|
|
|
- {title: "最后进入时间", dataIndex: "time", key: "4", width: 90},
|
|
|
+ { title: "序号", dataIndex: "index", key: "1", width: 48 },
|
|
|
+ { title: "姓名", dataIndex: "name", key: "2", width: 60 },
|
|
|
+ { title: "部门", dataIndex: "department", key: "3", width: 80 },
|
|
|
+ { title: "最后进入时间", dataIndex: "time", key: "4", width: 90 },
|
|
|
],
|
|
|
listData: listData,
|
|
|
coreData: [
|
|
@@ -520,19 +602,33 @@ export default {
|
|
|
mounted() {
|
|
|
this.changeTab(1);
|
|
|
this.init();
|
|
|
+ this.setDate();
|
|
|
},
|
|
|
methods: {
|
|
|
init() {
|
|
|
- this.$store.loadingStore().loadingWithApi(this.getCoreData(), 2000)
|
|
|
+ this.$store.loadingStore().loadingWithApi(this.getCoreData(), 2000);
|
|
|
},
|
|
|
- reset() {
|
|
|
-
|
|
|
+ setDate() {
|
|
|
+ this.timeArr = this.timeArr.map((v) => {
|
|
|
+ return {
|
|
|
+ id: v.id,
|
|
|
+ weekday: v.weekday,
|
|
|
+ date: this.$moment().weekday(v.id).format("YYYY/MM/DD"),
|
|
|
+ };
|
|
|
+ });
|
|
|
+ // for(let i=1;i<=5;i++){
|
|
|
+ // this.timeArr.push({
|
|
|
+ // weekday:this.$moment().weekday(i).format(),
|
|
|
+ // date:this.$moment().weekday(i).format("YYYY/MM/DD")
|
|
|
+ // })
|
|
|
+ // }
|
|
|
},
|
|
|
+ reset() {},
|
|
|
search() {
|
|
|
this.$util.asyncPromise(
|
|
|
- this.getCoreData(),
|
|
|
- this.$refs.WorkMeetingCostTrend.getData(),
|
|
|
- )
|
|
|
+ this.getCoreData(),
|
|
|
+ this.$refs.WorkMeetingCostTrend.getData()
|
|
|
+ );
|
|
|
},
|
|
|
handleChange(value) {
|
|
|
console.log(`selected ${value}`);
|
|
@@ -547,23 +643,22 @@ export default {
|
|
|
this.tabsItemArr = this.tabsArr[index].content;
|
|
|
},
|
|
|
getCoreData() {
|
|
|
- return apiWorkMeeting.getCoreData(this.queryData).then(res=>{
|
|
|
- this.coreData[0].num = res.list[0].value
|
|
|
- this.coreData[0].historyNum = res.list[0].compare
|
|
|
- this.coreData[1].num = res.list[1].value
|
|
|
- this.coreData[1].historyNum = res.list[1].compare
|
|
|
- this.coreData[2].num = res.list[2].value
|
|
|
- this.coreData[2].historyNum = res.list[2].compare
|
|
|
- this.coreData[3].num = res.list[3].value
|
|
|
- this.coreData[3].historyNum = res.list[3].compare
|
|
|
- this.coreData[4].content = res.worthAttention
|
|
|
- })
|
|
|
- }
|
|
|
+ return apiWorkMeeting.getCoreData(this.queryData).then((res) => {
|
|
|
+ this.coreData[0].num = res.list[0].value;
|
|
|
+ this.coreData[0].historyNum = res.list[0].compare;
|
|
|
+ this.coreData[1].num = res.list[1].value;
|
|
|
+ this.coreData[1].historyNum = res.list[1].compare;
|
|
|
+ this.coreData[2].num = res.list[2].value;
|
|
|
+ this.coreData[2].historyNum = res.list[2].compare;
|
|
|
+ this.coreData[3].num = res.list[3].value;
|
|
|
+ this.coreData[3].historyNum = res.list[3].compare;
|
|
|
+ this.coreData[4].content = res.worthAttention;
|
|
|
+ });
|
|
|
+ },
|
|
|
},
|
|
|
};
|
|
|
</script>
|
|
|
|
|
|
-
|
|
|
<style lang="less" scoped>
|
|
|
.workMeeting {
|
|
|
.workMeeting-left {
|
|
@@ -571,13 +666,38 @@ export default {
|
|
|
padding: 2px 15px;
|
|
|
border-radius: 4px;
|
|
|
margin-right: 6px;
|
|
|
+ .ant-col-3 {
|
|
|
+ .week-box {
|
|
|
+ height: 60px;
|
|
|
+ width: 100%;
|
|
|
+ position: relative;
|
|
|
+ color: rgb(77, 77, 77,0.2);;
|
|
|
+ .week {
|
|
|
+ width: 80%;
|
|
|
+ height: 50%;
|
|
|
+ position: absolute;
|
|
|
+ top: 0;
|
|
|
+ right: 0;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ }
|
|
|
+ .date {
|
|
|
+ width: 80%;
|
|
|
+ height: 50%;
|
|
|
+ position: absolute;
|
|
|
+ right: 0;
|
|
|
+ bottom: 0;
|
|
|
+ margin: 0 auto;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
.workMeeting-left-detail {
|
|
|
margin-top: 30px;
|
|
|
padding: 0 20px;
|
|
|
margin-bottom: 12px;
|
|
|
.workMeeting-left-detail-label {
|
|
|
vertical-align: top;
|
|
|
- color: #B2B2B2;
|
|
|
+ color: #b2b2b2;
|
|
|
}
|
|
|
.workMeeting-left-detail-content {
|
|
|
width: 100%;
|
|
@@ -602,6 +722,4 @@ export default {
|
|
|
margin-left: 6px;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
-</style>
|
|
|
+</style>
|