modified: .env.development
new file: src/api/chart/work/index.js
renamed: src/api/home.js -> src/api/home/index.js
modified: src/layout/components/Navbar.vue
modified: src/router/index.js
modified: src/views/CNAS/satisfactionSurveys/index.vue
modified: src/views/chart/work/index.vue
modified: src/views/home/index.vue
| | |
| | | ENV = 'development' |
| | | |
| | | # base api |
| | | VUE_APP_BASE_API = 'http://localhost:1234/' |
| | | VUE_APP_BASE_API = 'http://192.168.110.87:1234/' |
¶Ô±ÈÐÂÎļþ |
| | |
| | | import request from '@/utils/request' |
| | | |
| | | //è·åè´£ä»»äººé¡¹ç®æ°ç»è®¡ |
| | | export function getDutyMater(params) { |
| | | return request({ |
| | | url: '/work/dutyMater', |
| | | method: 'get', |
| | | params |
| | | }) |
| | | } |
| | | |
| | | //è·åè´£ä»»äººåæ¶ç |
| | | export function getDutyTimely(params) { |
| | | return request({ |
| | | url: '/work/dutytimely', |
| | | method: 'get', |
| | | params |
| | | }) |
| | | } |
| | | //è·åæ§è¡äººé¡¹ç®æ°ç»è®¡ |
| | | export function getExecuteMater(params) { |
| | | return request({ |
| | | url: '/work/executeMater', |
| | | method: 'get', |
| | | params |
| | | }) |
| | | } |
| | | |
| | | //è·åæ§è¡äººåæ¶ç |
| | | export function getExecuteTimely(params) { |
| | | return request({ |
| | | url: '/work/executetimely', |
| | | method: 'get', |
| | | params |
| | | }) |
| | | } |
| | |
| | | |
| | | <div class="right-menu"> |
| | | <div class="right-serves"> |
| | | <i class="el-icon-setting" /> |
| | | <i class="el-icon-bell" /> |
| | | <i class="el-icon-time" /> |
| | | <!-- <i class="el-icon-setting" /> --> |
| | | |
| | | <p @click="toMessage"><el-badge is-dot class="el-icon-bell message-icon"></el-badge></p> |
| | | <!-- <i class="el-icon-time" /> --> |
| | | </div> |
| | | <el-dropdown class="avatar-container" trigger="click"> |
| | | <div class="avatar-wrapper"> |
| | | <a class="user-avatar">{{ 'ä¸å¤©'.slice(0,1) }}</a> |
| | | </div> |
| | | <el-dropdown-menu slot="dropdown" class="user-dropdown"> |
| | | <router-link to="/"> |
| | | <el-dropdown-item> |
| | | ä¿®æ¹å¯ç |
| | | <p @click="dialogFormVisible = true">ä¿®æ¹å¯ç </p> |
| | | </el-dropdown-item> |
| | | </router-link> |
| | | <el-dropdown-item divided @click.native="logout"> |
| | | <span style="display:block;">éåºç»å½</span> |
| | | </el-dropdown-item> |
| | | </el-dropdown-menu> |
| | | </el-dropdown> |
| | | <el-dialog title="ä¿®æ¹å¯ç " :visible.sync="dialogFormVisible" :append-to-body="true"> |
| | | <el-form :model="form"> |
| | | <el-form-item label="æ§å¯ç " :label-width="formLabelWidth"> |
| | | <el-input v-model="form.oldPwd" autocomplete="off"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="æ°å¯ç " :label-width="formLabelWidth"> |
| | | <el-input maxlength="30" show-word-limit v-model="form.newPwd" autocomplete="off"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="确认å¯ç " :label-width="formLabelWidth"> |
| | | <el-input maxlength="30" show-word-limit v-model="form.confirmPwd" autocomplete="off"></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | <div slot="footer" class="dialog-footer"> |
| | | <el-button @click="reset()">å æ¶</el-button> |
| | | <el-button type="primary" @click="editPwd">ç¡® å®</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | </div> |
| | | </div> |
| | | </template> |
| | |
| | | // import Hamburger from '@/components/Hamburger' |
| | | |
| | | export default { |
| | | data(){ |
| | | return { |
| | | form: { |
| | | oldPwd: '', |
| | | newPwd: '', |
| | | confirmPwd: '' |
| | | }, |
| | | dialogFormVisible: false, |
| | | formLabelWidth: '120px' |
| | | } |
| | | }, |
| | | components: { |
| | | // Breadcrumb, |
| | | // Hamburger |
| | |
| | | ]) |
| | | }, |
| | | methods: { |
| | | reset(){ |
| | | this.dialogFormVisible = false; |
| | | this.form.oldPwd = ''; |
| | | this.form.newPwd = ''; |
| | | this.form.confirmPwd = ''; |
| | | }, |
| | | toMessage(){ |
| | | this.$router.push('/message/toDo'); |
| | | }, |
| | | editPwd(){ |
| | | console.log(1); |
| | | }, |
| | | toggleSideBar() { |
| | | this.$store.dispatch('app/toggleSideBar') |
| | | }, |
| | |
| | | border-bottom: 1px solid #f0f2f5; |
| | | // box-shadow: 0 0 0.857143rem rgba(0, 0, 0, 0.12); |
| | | // box-shadow: 0 1px 4px rgba(0,21,41,.08); |
| | | |
| | | .message-icon{ |
| | | margin-right: 10px; |
| | | cursor: pointer; |
| | | } |
| | | .v-modal{ |
| | | z-index: 8; |
| | | } |
| | | .hamburger-container { |
| | | line-height: 46px; |
| | | height: 100%; |
| | |
| | | { |
| | | path: '/message', |
| | | component: Layout, |
| | | redirect: '/message/message', |
| | | redirect: '/message/toDo', |
| | | name: 'Message', |
| | | meta: { title: 'æ¶æ¯å¾
å', icon: 'el-icon-s-help' }, |
| | | children: [ |
| | | { |
| | | path: 'message', |
| | | name: 'Message', |
| | | component: () => import('@/views/message/message/index'), |
| | | meta: { title: 'æçæ¶æ¯', icon: 'table' } |
| | | }, |
| | | { |
| | | path: 'toDo', |
| | | name: 'ToDo', |
| | | component: () => import('@/views/message/toDo/index'), |
| | | meta: { title: 'æçå¾
å', icon: 'tree' } |
| | | } |
| | | }, |
| | | { |
| | | path: 'message', |
| | | name: 'Message', |
| | | // hidden: true, |
| | | component: () => import('@/views/message/message/index'), |
| | | // meta: { title: 'æçæ¶æ¯', icon: 'table' } |
| | | }, |
| | | ] |
| | | }, |
| | | { |
| | |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .content-main { |
| | | .el-form .el-form-item .el-form-item__content { |
| | | width: 100% !important; |
| | | } |
| | | |
| | | .top-bar { |
| | | margin: -25px -15px; |
| | | background: #fff; |
| | |
| | | tr, |
| | | td { |
| | | padding: 10px; |
| | | } |
| | | </style> |
| | | <style > |
| | | .content-main { |
| | | .el-form .el-form-item .el-form-item__content { |
| | | width: 100% !important; |
| | | } |
| | | } |
| | | </style> |
| | |
| | | <el-row :gutter="10"> |
| | | <el-col :span="24"> |
| | | <el-card> |
| | | <el-form :inline="true" :model="formInline" class="demo-form-inline"> |
| | | <el-form-item> |
| | | <el-form :rules="rules" ref="formInline" :inline="true" |
| | | :model="formInline" class="demo-form-inline"> |
| | | <el-form-item prop="date"> |
| | | <p><span>*</span>æ£æµæ¥æ:</p> |
| | | <el-date-picker |
| | | v-model="dateTime" |
| | | v-model="formInline.date" |
| | | format="yyyy-MM-dd" |
| | | value-format="yyyy-MM-dd" |
| | | type="daterange" |
| | | range-separator="è³" |
| | | start-placeholder="å¼å§æ¥æ" |
| | | end-placeholder="ç»ææ¥æ"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-form-item prop="type"> |
| | | <p><span>*</span>æ£éªç±»å:</p> |
| | | <el-select v-model="formInline.region" placeholder="éè´å
¥åº"> |
| | | <el-option label="åºåä¸" value="shanghai"></el-option> |
| | | <el-option label="åºåäº" value="beijing"></el-option> |
| | | <el-select v-model="formInline.type" placeholder="éè´å
¥åº"> |
| | | <el-option label="åææ" value="0"></el-option> |
| | | <el-option label="æå" value="1"></el-option> |
| | | <el-option label="å§æå" value="2"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item class="buttons"> |
| | | <el-button>æ¸
空</el-button> |
| | | <el-button type="primary" @click="onSubmit">æ¥è¯¢</el-button> |
| | | <el-button @click="resetForm('formInline')">æ¸
空</el-button> |
| | | <el-button type="primary" @click="onSubmit('formInline')">æ¥è¯¢</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | </el-card> |
| | |
| | | <el-col :span="12"> |
| | | <el-card> |
| | | <p>è´è´£äººåæ¶ç</p> |
| | | <div id="leaderTimly" style="width:100%;height:400px;"></div> |
| | | <div id="leaderTimely" style="width:100%;height:400px;"></div> |
| | | </el-card> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-card> |
| | | <p>å®éªååæ¶ç</p> |
| | | <div id="testerTimly" style="width:100%;height:400px;"></div> |
| | | <div id="testerTimely" style="width:100%;height:400px;"></div> |
| | | </el-card> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <div class="work-foot"></div> |
| | | <div class="work-foot"> |
| | | <el-button type="primary">æ°æ®å¯¼åº</el-button> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import * as echarts from 'echarts'; |
| | | import { getDutyMater,getDutyTimely,getExecuteMater,getExecuteTimely |
| | | } from '@/api/chart/work/index' |
| | | export default { |
| | | data() { |
| | | return { |
| | | formInline: { |
| | | user: '', |
| | | region: '' |
| | | date: null, |
| | | type: '' |
| | | }, |
| | | dateTime: '', |
| | | rules: { |
| | | type: [ |
| | | { required: true, message: 'è¯·éæ©æ£æµç±»å', trigger: 'change' } |
| | | ], |
| | | date: [ |
| | | {required: true, message: 'è¯·éæ©æ¥æ', trigger: 'change' } |
| | | ] |
| | | }, |
| | | } |
| | | }, |
| | | mounted(){ |
| | | this.initLeaderStatiChart('leaderStati'); |
| | | this.initLeaderTimlyChart(); |
| | | this.initLeaderStatiChart('testerStati'); |
| | | this.initTesterTimlyChart(); |
| | | // this.initLeaderStatiChart(""); |
| | | this.initLeaderTimelyChart("leaderTimely"); |
| | | this.initTesterStatiChart("testerStati"); |
| | | this.initTesterTimelyChart("testerTimely"); |
| | | }, |
| | | methods: { |
| | | onSubmit() { |
| | | console.log('submit!'); |
| | | async queryData(){ |
| | | let date = this.formInline.date; |
| | | let obj = { |
| | | startTime : date[0], |
| | | endTime : date[1], |
| | | type : this.formInline.type |
| | | } |
| | | const dutyMater = await getDutyMater(obj); |
| | | const dutyTimely = await getDutyTimely(obj); |
| | | const executeMater = await getExecuteMater(obj); |
| | | const executeTimely = await getExecuteTimely(obj); |
| | | console.log("dm",dutyMater.data); |
| | | console.log("dt",dutyTimely.data); |
| | | console.log("em",executeMater.data.length); |
| | | console.log("et",executeTimely.data); |
| | | this.initLeaderStatiChart("leaderStati",dutyMater.data); |
| | | this.initLeaderTimelyChart("leaderTimely",dutyTimely.data); |
| | | this.initTesterStatiChart("testerStati",executeMater.data); |
| | | this.initTesterTimelyChart("testerTimely",executeTimely.data); |
| | | }, |
| | | initLeaderStatiChart(id){ |
| | | onSubmit(formName) { |
| | | this.$refs[formName].validate((valid) => { |
| | | if (valid) { |
| | | this.queryData(); |
| | | } else { |
| | | console.log('error submit!!'); |
| | | return false; |
| | | } |
| | | }); |
| | | }, |
| | | resetForm(formName) { |
| | | this.formInline.date = null; |
| | | this.formInline.type = null; |
| | | this.$refs[formName].resetFields(); |
| | | }, |
| | | initLeaderStatiChart(id,dutyMater){ |
| | | var chartDom = document.getElementById(id); |
| | | var myChart = echarts.init(chartDom); |
| | | window.addEventListener('resize', function() { |
| | | myChart.resize(); |
| | | }); |
| | | var option; |
| | | |
| | | let max = 0; |
| | | let xAxisData = []; |
| | | let data1 = []; |
| | | let data2 = []; |
| | | let data3 = []; |
| | | let data4 = []; |
| | | for (let i = 0; i < 10; i++) { |
| | | xAxisData.push('Class' + i); |
| | | data1.push(+(Math.random() * 2).toFixed(2)); |
| | | data2.push(+(Math.random() * 5).toFixed(2)); |
| | | data3.push(+(Math.random() + 0.3).toFixed(2)); |
| | | data4.push(+Math.random().toFixed(2)); |
| | | for(let i=0;i<dutyMater.length;i++){ |
| | | xAxisData.push(dutyMater[i].name); |
| | | data1.push(dutyMater[i].finsh); |
| | | data2.push(dutyMater[i].unfinish); |
| | | let sum = dutyMater[i].finsh + dutyMater[i].unfinish; |
| | | if( sum > max ){ |
| | | max = sum; |
| | | } |
| | | } |
| | | var emphasisStyle = { |
| | | itemStyle: { |
| | |
| | | }; |
| | | option = { |
| | | legend: { |
| | | data: ['bar', 'bar2'], |
| | | data: ['已宿', 'æªå®æ'], |
| | | left: 'center' |
| | | }, |
| | | tooltip: {}, |
| | |
| | | splitLine: { show: false }, |
| | | splitArea: { show: false } |
| | | }, |
| | | yAxis: {}, |
| | | yAxis: { |
| | | min: 0, |
| | | max: max, |
| | | interval: max, |
| | | }, |
| | | grid: { |
| | | bottom: 100 |
| | | }, |
| | | series: [ |
| | | { |
| | | name: 'bar', |
| | | name: '已宿', |
| | | barWidth: '20%', |
| | | type: 'bar', |
| | | stack: 'one', |
| | | emphasis: emphasisStyle, |
| | | data: data1 |
| | | data: data1, |
| | | itemStyle: { |
| | | color: '#80d9c5' |
| | | } |
| | | }, |
| | | { |
| | | name: 'bar2', |
| | | name: 'æªå®æ', |
| | | barWidth: '20%', |
| | | type: 'bar', |
| | | stack: 'one', |
| | | emphasis: emphasisStyle, |
| | | data: data2 |
| | | data: data2, |
| | | itemStyle: { |
| | | color: '#f2d09d' |
| | | }, |
| | | } |
| | | ] |
| | | }; |
| | | myChart.on('brushSelected', function (params) { |
| | | var brushed = []; |
| | | var brushComponent = params.batch[0]; |
| | | for (var sIdx = 0; sIdx < brushComponent.selected.length; sIdx++) { |
| | | var rawIndices = brushComponent.selected[sIdx].dataIndex; |
| | | brushed.push('[Series ' + sIdx + '] ' + rawIndices.join(', ')); |
| | | } |
| | | myChart.setOption({ |
| | | title: { |
| | | backgroundColor: '#333', |
| | | text: 'SELECTED DATA INDICES: \n' + brushed.join('\n'), |
| | | bottom: 0, |
| | | right: '10%', |
| | | width: 100, |
| | | textStyle: { |
| | | fontSize: 12, |
| | | color: '#fff' |
| | | } |
| | | } |
| | | option && myChart.setOption(option); |
| | | }, |
| | | initTesterStatiChart(id,executeMater){ |
| | | console.log("qqq----",executeMater); |
| | | var chartDom = document.getElementById(id); |
| | | var myChart = echarts.init(chartDom); |
| | | window.addEventListener('resize', function() { |
| | | myChart.resize(); |
| | | }); |
| | | var option; |
| | | |
| | | let xAxisData = []; |
| | | let data1 = []; |
| | | let data2 = []; |
| | | // for(let i=0;i<executeMater.length;i++){ |
| | | // xAxisData.push(executeMater[i].name); |
| | | // data1.push(executeMater[i].finsh); |
| | | // data2.push(executeMater[i].unfinsh); |
| | | // } |
| | | var emphasisStyle = { |
| | | itemStyle: { |
| | | shadowBlur: 10, |
| | | shadowColor: 'rgba(0,0,0,0.3)' |
| | | } |
| | | }; |
| | | option = { |
| | | legend: { |
| | | data: ['æ°æ®1', 'æ°æ®2'], |
| | | left: 'center' |
| | | }, |
| | | tooltip: {}, |
| | | xAxis: { |
| | | data: xAxisData, |
| | | name: 'å§å', |
| | | axisLine: { onZero: true }, |
| | | splitLine: { show: false }, |
| | | splitArea: { show: false } |
| | | }, |
| | | yAxis: { |
| | | min: 0, |
| | | max: 60, |
| | | interval: 10, |
| | | }, |
| | | grid: { |
| | | bottom: 100 |
| | | }, |
| | | series: [ |
| | | { |
| | | name: 'æ°æ®1', |
| | | type: 'bar', |
| | | stack: 'one', |
| | | emphasis: emphasisStyle, |
| | | data: data1, |
| | | itemStyle:{ |
| | | color: "#d97559" |
| | | } |
| | | }, |
| | | { |
| | | name: 'æ°æ®2', |
| | | type: 'bar', |
| | | stack: 'one', |
| | | emphasis: emphasisStyle, |
| | | data: data2, |
| | | itemStyle:{ |
| | | color: "#e4c477" |
| | | } |
| | | } |
| | | ] |
| | | }; |
| | | option && myChart.setOption(option); |
| | | }, |
| | | initLeaderTimelyChart(id,dutyTimely){ |
| | | var chartDom = document.getElementById(id); |
| | | var myChart = echarts.init(chartDom); |
| | | window.addEventListener('resize', function() { |
| | | myChart.resize(); |
| | | }); |
| | | var option; |
| | | option = { |
| | | tooltip: { |
| | | trigger: 'axis', |
| | | axisPointer: { |
| | | type: 'cross', |
| | | crossStyle: { |
| | | color: '#999' |
| | | } |
| | | } |
| | | }, |
| | | legend: { |
| | | data: ['æ ·åæ°', '宿忶ç'] |
| | | }, |
| | | xAxis: [ |
| | | { |
| | | name: 'å§å', |
| | | type: 'category', |
| | | data: ['æ²ç§',], |
| | | axisPointer: { |
| | | type: 'shadow' |
| | | }, |
| | | itemStyle: { |
| | | top: '20px' |
| | | } |
| | | } |
| | | ], |
| | | yAxis: [ |
| | | { |
| | | type: 'value', |
| | | name: 'æ°é', |
| | | min: 0, |
| | | max: 10, |
| | | interval: 1, |
| | | axisLabel: { |
| | | formatter: '{value}' |
| | | } |
| | | }, |
| | | { |
| | | type: 'value', |
| | | name: 'ç¾åæ¯', |
| | | min: 0, |
| | | max: 100, |
| | | interval: 10, |
| | | axisLabel: { |
| | | formatter: '{value} %' |
| | | } |
| | | } |
| | | ], |
| | | series: [ |
| | | { |
| | | name: 'æ ·åæ°', |
| | | type: 'bar', |
| | | barWidth: '20%', |
| | | tooltip: { |
| | | valueFormatter: function (value) { |
| | | return value; |
| | | } |
| | | }, |
| | | data: [4.0], |
| | | itemStyle: { |
| | | color: '#9fceff' |
| | | } |
| | | }, |
| | | { |
| | | name: '宿忶ç', |
| | | type: 'line', |
| | | tooltip: { |
| | | valueFormatter: function (value) { |
| | | return value + ' %'; |
| | | } |
| | | }, |
| | | data: [7.5], |
| | | itemStyle: { |
| | | color: '#d2eec5' |
| | | } |
| | | }, |
| | | ] |
| | | }; |
| | | |
| | | option && myChart.setOption(option); |
| | | }, |
| | | initTesterStatiChart(){ |
| | | |
| | | initTesterTimelyChart(id,executeTimely){ |
| | | var chartDom = document.getElementById(id); |
| | | var myChart = echarts.init(chartDom); |
| | | window.addEventListener('resize', function() { |
| | | myChart.resize(); |
| | | }); |
| | | var option; |
| | | option = { |
| | | tooltip: { |
| | | trigger: 'axis', |
| | | axisPointer: { |
| | | type: 'cross', |
| | | crossStyle: { |
| | | color: '#999' |
| | | } |
| | | } |
| | | }, |
| | | initLeaderTimlyChart(){ |
| | | |
| | | legend: { |
| | | data: ['é¡¹ç®æ°', '宿忶ç'], |
| | | show: true |
| | | }, |
| | | initTesterTimlyChart(){ |
| | | xAxis: [ |
| | | { |
| | | type: 'category', |
| | | data: ["","",""], |
| | | axisPointer: { |
| | | type: 'shadow' |
| | | } |
| | | } |
| | | ], |
| | | yAxis: [ |
| | | { |
| | | type: 'value', |
| | | name: '', |
| | | min: 0, |
| | | max: 50, |
| | | interval: 5, |
| | | axisLabel: { |
| | | formatter: '{value}' |
| | | } |
| | | }, |
| | | { |
| | | type: 'value', |
| | | name: '', |
| | | min: 0, |
| | | max: 100, |
| | | interval: 10, |
| | | axisLabel: { |
| | | formatter: '{value} %' |
| | | } |
| | | } |
| | | ], |
| | | series: [ |
| | | { |
| | | name: 'é¡¹ç®æ°', |
| | | type: 'bar', |
| | | tooltip: { |
| | | valueFormatter: function (value) { |
| | | return value ; |
| | | } |
| | | }, |
| | | data: [2.0, 4.9, 7.0], |
| | | itemStyle: { |
| | | color: '#5087ec' |
| | | } |
| | | }, |
| | | { |
| | | name: '宿忶ç', |
| | | type: 'line', |
| | | yAxisIndex: 1, |
| | | tooltip: { |
| | | valueFormatter: function (value) { |
| | | return value + ' %'; |
| | | } |
| | | }, |
| | | data: [2.0, 2.2, 3.3], |
| | | itemStyle: { |
| | | color: '#68bbc4' |
| | | } |
| | | } |
| | | ] |
| | | }; |
| | | |
| | | option && myChart.setOption(option); |
| | | }, |
| | | } |
| | | } |
| | |
| | | padding: 0; |
| | | .work-head{ |
| | | width:94%; |
| | | height:100; |
| | | height:100px; |
| | | margin: 5px 10px; |
| | | position: fixed; |
| | | z-index: 10; |
| | |
| | | } |
| | | } |
| | | .buttons{ |
| | | margin: 40px 0px 0px 900px; |
| | | margin: 40px 0px 0px 50%; |
| | | } |
| | | } |
| | | } |
| | | .work-center{ |
| | | margin: 0px 0px 5px 10px; |
| | | margin: 0px 0px 150px 10px; |
| | | padding: 18vh 0px 5px 0px; |
| | | .el-card{ |
| | | margin: 5px 0px; |
| | | height:500px; |
| | | p{ |
| | | font-size: 22px; |
| | | margin: 0; |
| | | padding: 0; |
| | | } |
| | | } |
| | | } |
| | | .work-foot{ |
| | | width:100%; |
| | | height:50px; |
| | | position: fixed; |
| | | bottom: 0px; |
| | | z-index: 10; |
| | | text-align: right; |
| | | .el-button{ |
| | | margin-right: 7%; |
| | | } |
| | | } |
| | | } |
| | |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-card :body-style="{ padding: '0px',height:'25vh' }"> |
| | | <p style="z-index: 10;position: absolute;font-size: 10px;margin-left: 10px;color: #ff0000;">æªæ£éª</p> |
| | | <p style="z-index: 2;position: absolute;font-size: 10px;margin-left: 10px;color: #ff0000;">æªæ£éª</p> |
| | | <el-table |
| | | :data="uncheckedData" |
| | | :cell-style="cell" |
| | |
| | | import * as echarts from 'echarts'; |
| | | import { getVerifiedTop3,getUncheckedTop4,getMatAndFinshQualified, |
| | | getCheckAndProjectNum,getTurno |
| | | } from '@/api/home' |
| | | } from '@/api/home/index' |
| | | export default { |
| | | name: "home", |
| | | data() { |
| | |
| | | insNum: 0, |
| | | insUnNum: 0, |
| | | insproNum: 0, |
| | | insproUnNum: 1110, |
| | | insproUnNum: 0, |
| | | radioType: "æ¬å¹´", |
| | | imgSrc: require("@/assets/404_images/bg.png"), |
| | | verifiedData: new Array(), |