From 1eb0eed9133cc73fd06d0ee98d7cc19bc87de761 Mon Sep 17 00:00:00 2001 From: Admin <978517621@qq.com> Date: 星期三, 29 六月 2022 18:46:28 +0800 Subject: [PATCH] 添加页面 --- src/views/specialWorkSystem/workPlan/workAppointSummary/index.vue | 465 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 459 insertions(+), 6 deletions(-) diff --git a/src/views/specialWorkSystem/workPlan/workAppointSummary/index.vue b/src/views/specialWorkSystem/workPlan/workAppointSummary/index.vue index 61c3448..29eeb55 100644 --- a/src/views/specialWorkSystem/workPlan/workAppointSummary/index.vue +++ b/src/views/specialWorkSystem/workPlan/workAppointSummary/index.vue @@ -1,13 +1,466 @@ <template> - <div>作业预约汇总</div> + <div class="home-container"> + <el-row> + <el-col :span="6"> + <div class="grid-content topInfo"> + <div>预约时间:</div> + <div class="block"> + <el-date-picker + v-model="searchTime" + type="date" + placeholder="" + size="large" + /> + </div> + </div> + </el-col> + <el-col :span="6"> + <div class="grid-content topInfo"> + <div>预约类型:</div> + <div> + <el-select v-model="typeValue" class="m-2" placeholder="Select" size="large"> + <el-option + v-for="item in reserveOptions" + :key="item.value" + :label="item.label" + :value="item.value" + /> + </el-select> + </div> + </div> + </el-col> + <el-col :span="6"></el-col> + <el-col :span="6"> + <div class="grid-content topInfo"> + <div style="margin-right: 20px"><el-button type="primary" plain>查询历史</el-button></div> + <div><el-button type="primary" @click="dialogChartsVisible = true">查看统计图表</el-button></div> + </div> + </el-col> + </el-row> + <el-row> + <el-table :data="tableData" border style="width: 100%"> + <el-table-column prop="id" label="编号" width="180" /> + <el-table-column prop="time" label="预约时间" width="180" /> + <el-table-column prop="department" label="预约部门" /> + <el-table-column prop="dirtyWork" label="动土作业" width="180" /> + <el-table-column prop="fireWork" label="动火作业" width="180" /> + <el-table-column prop="hangWork" label="吊装作业" /> + <el-table-column prop="spaceWork" label="受限空间作业" width="180" /> + <el-table-column prop="cut" label="断路" width="180" /> + <el-table-column prop="high" label="高处" /> + <el-table-column prop="block" label="盲板抽堵" width="180" /> + <el-table-column prop="tempUse" label="临时用电" width="180" /> + <el-table-column fixed label="操作"> + <template #default> + <el-button link type="primary" size="small">操作</el-button> + </template> + </el-table-column> + </el-table> + </el-row> + <el-dialog v-model="dialogChartsVisible" title="Shipping address"> + <el-row> + <div class="grid-content"> + <div>日期查询:</div> + <div class="block"> + <el-date-picker + v-model="dateRange" + type="daterange" + unlink-panels + range-separator="To" + start-placeholder="Start date" + end-placeholder="End date" + :shortcuts="shortcuts" + size="large" + /> + </div> + </div> + </el-row> + <el-row> + <div class="grid-content"> + <div>部门查询:</div> + <div> + <el-cascader + v-model="departmentName" + :options="departmentOptions" + :props="props" + @change="handleChange" + /> + </div> + </div> + </el-row> + <div id="main" style="width: 600px;height:400px;"></div> + </el-dialog> + </div> </template> -<script> - export default { - name: "index" - } +<script lang="ts"> + import { toRefs, reactive, defineComponent, ref } from 'vue'; + import { storeToRefs } from 'pinia'; + import { initBackEndControlRoutes } from '/@/router/backEnd'; + import {useUserInfo} from "/@/stores/userInfo"; + import { Session } from '/@/utils/storage'; + import * as echarts from 'echarts/core'; + import { TooltipComponent, TooltipComponentOption, GridComponent, GridComponentOption, LegendComponent, LegendComponentOption } from 'echarts/components'; + import { BarChart, BarSeriesOption } from 'echarts/charts'; + import { CanvasRenderer } from 'echarts/renderers'; + let global: any = { + homeChartOne: null, + homeChartTwo: null, + homeCharThree: null, + dispose: [null, '', undefined], + }; + + interface stateType { + homeOne: Array <type> + } + interface type { + id:number, + name: string + } + export default defineComponent({ + name: 'home', + setup() { + const userInfo = useUserInfo() + const { userInfos } = storeToRefs(userInfo); + const searchTime = ref(''); + const typeValue = ref(''); + const departmentName = ref(''); + const reserveOptions = [ + { + value: 'Option1', + label: 'Option1', + }, + { + value: 'Option2', + label: 'Option2', + }, + { + value: 'Option3', + label: 'Option3', + }, + { + value: 'Option4', + label: 'Option4', + }, + { + value: 'Option5', + label: 'Option5', + }, + ]; + const tableData = [ + { + id: '10801920', + time: '2022-06-29', + department: '电工部', + dirtyWork: '', + fireWork: '', + hangWork: '', + spaceWork: '', + cut: '', + high: '', + block: '', + tempUse: '' + }, + { + id: '10801920', + time: '2022-06-29', + department: '电工部', + dirtyWork: '', + fireWork: '', + hangWork: '', + spaceWork: '', + cut: '', + high: '', + block: '', + tempUse: '' + }, + { + id: '10801920', + time: '2022-06-29', + department: '', + dirtyWork: '', + fireWork: '', + hangWork: '', + spaceWork: '', + cut: '', + high: '', + block: '', + tempUse: '' + } + ]; + const dialogChartsVisible = ref(false); + const dateRange = ref('') + const shortcuts = [ + { + text: 'Last week', + value: () => { + const end = new Date() + const start = new Date() + start.setTime(start.getTime() - 3600 * 1000 * 24 * 7) + return [start, end] + }, + }, + { + text: 'Last month', + value: () => { + const end = new Date() + const start = new Date() + start.setTime(start.getTime() - 3600 * 1000 * 24 * 30) + return [start, end] + }, + }, + { + text: 'Last 3 months', + value: () => { + const end = new Date() + const start = new Date() + start.setTime(start.getTime() - 3600 * 1000 * 24 * 90) + return [start, end] + }, + }, + ]; + const props = { + expandTrigger: 'hover', + }; + const departmentOptions = [ + { + value: 'guide', + label: 'Guide', + children: [ + { + value: 'disciplines', + label: 'Disciplines', + children: [ + { + value: 'consistency', + label: 'Consistency', + }, + { + value: 'feedback', + label: 'Feedback', + } + ], + }, + { + value: 'navigation', + label: 'Navigation', + children: [ + { + value: 'side nav', + label: 'Side Navigation', + }, + { + value: 'top nav', + label: 'Top Navigation', + }, + ], + }, + ], + }, + { + value: 'component', + label: 'Component', + }, + { + value: 'resource', + label: 'Resource', + children: [ + { + value: 'axure', + label: 'Axure Components', + }, + { + value: 'sketch', + label: 'Sketch Templates', + }, + { + value: 'docs', + label: 'Design Documentation', + }, + ], + }, + ]; + const handleChange = (value) => { + console.log(value) + }; + const state = reactive<stateType>({ + homeOne:[{id:1,name:'基础数据权限管理系统'},{id:2,name:'双重预防系统'},{id:3,name:'系统2'},{id:4,name:'系统3'},{id:5,name:'系统4'}], + }); + + // 分布图 + echarts.use([ + TooltipComponent, + GridComponent, + LegendComponent, + BarChart, + CanvasRenderer + ]); + + type EChartsOption = echarts.ComposeOption< + | TooltipComponentOption + | GridComponentOption + | LegendComponentOption + | BarSeriesOption + >; + + const chartDom = document.getElementById('main')!; + const myChart = echarts.init(chartDom); + const option: EChartsOption = { + tooltip: { + trigger: 'axis', + axisPointer: { + // Use axis to trigger tooltip + type: 'shadow' // 'shadow' as default; can also be 'line' or 'shadow' + } + }, + legend: {}, + grid: { + left: '3%', + right: '4%', + bottom: '3%', + containLabel: true + }, + xAxis: { + type: 'value' + }, + yAxis: { + type: 'category', + data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] + }, + series: [ + { + name: 'Direct', + type: 'bar', + stack: 'total', + label: { + show: true + }, + emphasis: { + focus: 'series' + }, + data: [320, 302, 301, 334, 390, 330, 320] + }, + { + name: 'Mail Ad', + type: 'bar', + stack: 'total', + label: { + show: true + }, + emphasis: { + focus: 'series' + }, + data: [120, 132, 101, 134, 90, 230, 210] + }, + { + name: 'Affiliate Ad', + type: 'bar', + stack: 'total', + label: { + show: true + }, + emphasis: { + focus: 'series' + }, + data: [220, 182, 191, 234, 290, 330, 310] + }, + { + name: 'Video Ad', + type: 'bar', + stack: 'total', + label: { + show: true + }, + emphasis: { + focus: 'series' + }, + data: [150, 212, 201, 154, 190, 330, 410] + }, + { + name: 'Search Engine', + type: 'bar', + stack: 'total', + label: { + show: true + }, + emphasis: { + focus: 'series' + }, + data: [820, 832, 901, 934, 1290, 1330, 1320] + } + ] + }; + + option && myChart.setOption(option); + + // 折线图 + const renderMenu = async (value: string) => { + Session.set('projectId',value) + userInfos.value.projectId = value + await initBackEndControlRoutes(); + }; + return { + renderMenu, + searchTime, + typeValue, + reserveOptions, + tableData, + dialogChartsVisible, + dateRange, + shortcuts, + departmentName, + departmentOptions, + props, + handleChange, + ...toRefs(state), + }; + }, + }); </script> -<style scoped> +<style scoped lang="scss"> + $homeNavLengh: 8; + .home-container { + overflow: hidden; + padding: 20px 40px; + .el-col{ + display: flex; + align-items: center; + } + .grid-content{ + align-items: center; + } + .topInfo{ + display: flex; + align-items: center; + font-size: 16px; + font-weight: bold; + + .demo-datetime-picker { + display: flex; + width: 100%; + padding: 0; + flex-wrap: wrap; + } + .demo-datetime-picker .block { + padding: 30px 0; + text-align: center; + border-right: solid 1px var(--el-border-color); + flex: 1; + } + } + .el-button--text { + margin-right: 15px; + } + .el-select { + width: 300px; + } + .el-input { + width: 300px; + } + .dialog-footer button:first-child { + margin-right: 10px; + } + } </style> -- Gitblit v1.9.2