更新任务列表等

This commit is contained in:
24kycj
2024-11-09 14:41:39 +08:00
parent 343822e81e
commit 10ec7b1ba0
9 changed files with 323 additions and 114 deletions
+9 -1
View File
@@ -6,7 +6,15 @@
<script> <script>
export default { export default {
name: 'App' name: 'App',
mounted() {
if (this.$store.getters.token) {
this.$store.dispatch('chat/initWebSocket') // 初始化websocket
}
},
methods: {
}
} }
</script> </script>
<style lang="scss"> <style lang="scss">
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 307 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 235 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 140 KiB

+16 -8
View File
@@ -164,7 +164,17 @@
<div v-for="(item, index) in soonList" :key="index" class="flex_box wook_soon_item"> <div v-for="(item, index) in soonList" :key="index" class="flex_box wook_soon_item">
<div class="wook_soon_label">{{ item.name }}</div> <div class="wook_soon_label">{{ item.name }}</div>
<div class="wook_soon_input"> <div class="wook_soon_input">
<el-input v-model="item.val" placeholder="请输入"></el-input> <div v-if="scope.row.type == 1">
<input
type="file"
accept="image/*"
:ref="item.name"
:data-name="item.name" />
</div>
<div v-if="scope.row.type == 3 || scope.row.type == 4 || scope.row.type == 5">
<el-input clearable :disabled="csvIsExist" v-model="item.val" placeholder="请输入"></el-input>
</div>
</div> </div>
<div @click="openFile2" v-if="item.type == 3 || item.type == 4 || item.type == 5" class="wook_soon_add">添加字段</div> <div @click="openFile2" v-if="item.type == 3 || item.type == 4 || item.type == 5" class="wook_soon_add">添加字段</div>
</div> </div>
@@ -313,6 +323,8 @@ export default {
upload_disk: '', upload_disk: '',
soonImg: '', soonImg: '',
showList: true, showList: true,
csvIsExist: false,
// 高级设置
setShow: false, setShow: false,
setForm: { setForm: {
priority: 2, priority: 2,
@@ -682,26 +694,22 @@ export default {
this.file_name3 = this.$refs.refFile3.files[0].name this.file_name3 = this.$refs.refFile3.files[0].name
}, },
csvLoad() { csvLoad() {
let that = this
let selectedFile = this.$refs.refFile2.files[0] let selectedFile = this.$refs.refFile2.files[0]
let reader = new FileReader() let reader = new FileReader()
reader.readAsText(selectedFile) reader.readAsText(selectedFile)
let _this = this
reader.onload = function () { reader.onload = function () {
//let flag = true; //校验结果 //let flag = true; //校验结果
let first_line = this.result.split('\n')[0].replace('\r', '').split(',') //第一行 let first_line = this.result.split('\n')[0].replace('\r', '').split(',') //第一行
let second_line = this.result.split('\n')[1].replace('\r', '').split(',') //第二行 let second_line = this.result.split('\n')[1].replace('\r', '').split(',') //第二行
let i = 0 let i = 0
for (let item of first_line) { for (let item of first_line) {
_this.$set(_this.form, item, second_line[i]) that.$set(that.soonform, item, second_line[i])
i++ i++
} }
_this.csvIsExist = true that.csvIsExist = true
} }
}, },
format(percentage) {
let mb = (this.size_form * 931.3).toFixed(0)
return (this.size / (1024 * 1024)).toFixed(1) + 'MB / ' + mb + 'MB'
},
genTaskUUID() { genTaskUUID() {
var myDate = new Date() var myDate = new Date()
var dateStr = var dateStr =
+7 -4
View File
@@ -7,14 +7,15 @@ let isConnect = false
const getDefaultState = () => { const getDefaultState = () => {
return { return {
reconnections: 0, reconnections: 0,
taskList: []
} }
} }
const state = getDefaultState() const state = getDefaultState()
const mutations = { const mutations = {
set_client_id: (state, client_id) => { setData: (state, obj) => {
state.client_id = client_id state[obj.name] = obj.data
}, },
} }
@@ -43,8 +44,10 @@ const actions = {
// 接收消息 // 接收消息
websocketonmessage({ commit, dispatch }, e) { websocketonmessage({ commit, dispatch }, e) {
const data = JSON.parse(e.data) // 转json对象 const data = JSON.parse(e.data) // 转json对象
if (data.state) { if (data.resp_name) {
if (data.resp_name === 'task_list') {
commit('chat/setData', { name: 'taskList', data: data.resp_info.task_list })
}
} else { } else {
if (data.type === 'init') { if (data.type === 'init') {
state.pingNum = 0 state.pingNum = 0
+119
View File
@@ -355,3 +355,122 @@ export function removeClass(ele, cls) {
ele.className = ele.className.replace(reg, ' ') ele.className = ele.className.replace(reg, ' ')
} }
} }
/**
* 乘法
* @param arg1
* @param arg2
* @returns {Number}
*/
export function accMul(arg1, arg2) {
var m = 0
const s1 = arg1.toString()
const s2 = arg2.toString()
try {
m += s1.split('.')[1].length
} catch (e) {
console.log(e)
}
try {
m += s2.split('.')[1].length
} catch (e) {
console.log(e)
}
return (Number(s1.replace('.', '')) * Number(s2.replace('.', ''))) / Math.pow(10, m)
}
/**
* 除法
* @param arg1
* @param arg2
* @returns {Number}
*/
export function accDiv(arg1, arg2) {
var t1 = 0
var t2 = 0
var r1
var r2
try {
t1 = arg1.toString().split('.')[1].length
} catch (e) {
console.log(e)
}
try {
t2 = arg2.toString().split('.')[1].length
} catch (e) {
console.log(e)
}
r1 = Number(arg1.toString().replace('.', ''))
r2 = Number(arg2.toString().replace('.', ''))
return (r1 / r2) * Math.pow(10, t2 - t1)
}
/**
* 加法
* @param arg1
* @param arg2
* @returns {Number}
*/
export function accAdd(arg1, arg2) {
var r1, r2, m, c
try {
r1 = arg1.toString().split('.')[1].length
} catch (e) {
r1 = 0
}
try {
r2 = arg2.toString().split('.')[1].length
} catch (e) {
r2 = 0
}
c = Math.abs(r1 - r2)
m = Math.pow(10, Math.max(r1, r2))
if (c > 0) {
var cm = Math.pow(10, c)
if (r1 > r2) {
arg1 = Number(arg1.toString().replace('.', ''))
arg2 = Number(arg2.toString().replace('.', '')) * cm
} else {
arg1 = Number(arg1.toString().replace('.', '')) * cm
arg2 = Number(arg2.toString().replace('.', ''))
}
} else {
arg1 = Number(arg1.toString().replace('.', ''))
arg2 = Number(arg2.toString().replace('.', ''))
}
return (arg1 + arg2) / m
}
/**
* 减法
* @param arg1
* @param arg2
* @returns
*/
export function accSub(arg1, arg2) {
var r1, r2, m, n
try {
r1 = arg1.toString().split('.')[1].length
} catch (e) {
r1 = 0
}
try {
r2 = arg2.toString().split('.')[1].length
} catch (e) {
r2 = 0
}
m = Math.pow(10, Math.max(r1, r2))
// last modify by deeka
// 动态控制精度长度
n = r1 >= r2 ? r1 : r2
return ((arg1 * m - arg2 * m) / m).toFixed(n)
}
/** * 文件大小 字节转换单位 * @param size * @returns {string|*} */
export const filterSize = (size) => {
if (!size) return '0kb';
if (size < pow1024(1)) return size + ' B';
if (size < pow1024(2)) return (size / pow1024(1)).toFixed(2) + ' KB';
if (size < pow1024(3)) return (size / pow1024(2)).toFixed(2) + ' MB';
if (size < pow1024(4)) return (size / pow1024(3)).toFixed(2) + ' GB';
return (size / pow1024(4)).toFixed(2) + ' TB'
}
export const pow1024 = (num) => {
return Math.pow(1024, num)
}
+146 -75
View File
@@ -16,12 +16,7 @@
<div>系统设置</div> <div>系统设置</div>
</div> </div>
<div class="top_left_line"></div> <div class="top_left_line"></div>
<el-switch <el-switch class="top_left_status" v-model="workStatus" active-color="#07C160" inactive-color="#aaa"> </el-switch>
class="top_left_status"
v-model="workStatus"
active-color="#07C160"
inactive-color="#aaa">
</el-switch>
<div class="flex_box top_left_option"> <div class="flex_box top_left_option">
<div class="top_left_text">完成拷贝数:</div> <div class="top_left_text">完成拷贝数:</div>
<div class="top_left_num">9</div> <div class="top_left_num">9</div>
@@ -43,10 +38,10 @@
<!-- 左侧 --> <!-- 左侧 -->
<div class="device_left"> <div class="device_left">
<div class="flex_box device_left_top"> <div class="flex_box device_left_top">
<img class="flex_shrink device_img" src="@/assets/images/device1.png" /> <img class="flex_shrink device_img" src="@/assets/images/device.png" />
<div class="flex_box flex_row_between device_info"> <div class="flex_box flex_row_between device_info">
<div class="device_info_box"> <div class="device_info_box">
<div class="device_info_main" :class="{'device_info_main1': infoStatus===1}"> <div class="device_info_main" :class="{ device_info_main1: infoStatus === 1 }">
<div class="device_info_item"> <div class="device_info_item">
<div class="device_info_text">系统序列号4F524201</div> <div class="device_info_text">系统序列号4F524201</div>
<div class="device_info_text">主机名DGF031</div> <div class="device_info_text">主机名DGF031</div>
@@ -103,12 +98,7 @@
<div class="flex_box device_run"> <div class="flex_box device_run">
<div class="flex_box device_run_input"> <div class="flex_box device_run_input">
<el-select v-model="runVal" placeholder="请选择"> <el-select v-model="runVal" placeholder="请选择">
<el-option <el-option v-for="item in runList" :key="item.value" :label="item.label" :value="item.value"> </el-option>
v-for="item in runList"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select> </el-select>
</div> </div>
<el-button @click="handleRun" type="primary" class="device_run_btn">执行</el-button> <el-button @click="handleRun" type="primary" class="device_run_btn">执行</el-button>
@@ -154,7 +144,10 @@
</div> </div>
<div class="notice_list"> <div class="notice_list">
<div v-for="(item, index) in noticeList" :key="index" class="flex_box flex_row_between notice_item"> <div v-for="(item, index) in noticeList" :key="index" class="flex_box flex_row_between notice_item">
<div class="notice_content"><span>{{ index+1 }}</span>{{ item.message }}</div> <div class="notice_content">
<span>{{ index + 1 }}</span
>{{ item.message }}
</div>
<div class="notice_time">{{ item.createtime }}</div> <div class="notice_time">{{ item.createtime }}</div>
</div> </div>
</div> </div>
@@ -166,22 +159,63 @@
<div class="flex_box work_top"> <div class="flex_box work_top">
<div class="work_top_text">作业列表</div> <div class="work_top_text">作业列表</div>
</div> </div>
<el-table max-height="250" class="work_table" :data="workList" empty-text="暂无作业列表"> <el-table max-height="250" class="work_table" :data="taskList" empty-text="暂无作业列表">
<el-table-column type="index" width="50" label="序号"></el-table-column> <el-table-column type="expand">
<el-table-column prop="task_uuid" label="作业ID"></el-table-column>
<el-table-column prop="username" label="用户"></el-table-column>
<el-table-column prop="DataSource" label="来源"></el-table-column>
<el-table-column prop="PrinterType" label="类型">
<template slot-scope="scope"> <template slot-scope="scope">
<div class="work_status_box"> <el-table max-height="250" :data="scope.row.ass_task">
<div>{{typeList[scope.row.PrinterType]}}</div> <el-table-column width="50" label=""></el-table-column>
<el-table-column type="index" width="80" label="序号">
<template slot-scope="child">
<div>{{ scope.$index+1 }}_{{ child.$index+1 }}</div>
</template>
</el-table-column>
<el-table-column prop="task_label" label="子任务名称"></el-table-column>
<el-table-column prop="task_size" label="大小">
<template slot-scope="child">
<div>{{ filterSize(child.row.task_size) }}</div>
</template>
</el-table-column>
<el-table-column prop="start_time" label="开始时间"></el-table-column>
<el-table-column prop="finish_time" label="结束时间"></el-table-column>
<el-table-column label="进度">
<template slot-scope="child">
<div class="work_progress">
<el-progress :text-inside="true" :percentage="child.row.copy_scheduler" status="success"></el-progress>
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="TaskCapacity" label="大小"></el-table-column> <el-table-column prop="task_status" label="状态">
<template slot-scope="child">
<div class="flex_box work_status_box">
<div>{{ statusList[child.row.task_status] }}</div>
<!-- <i class="el-icon-caret-bottom"></i> -->
</div>
</template>
</el-table-column>
</el-table>
</template>
</el-table-column>
<el-table-column type="index" width="80" label="序号"></el-table-column>
<el-table-column prop="task_uuid" label="作业ID"></el-table-column>
<el-table-column prop="task_name" label="任务名称"></el-table-column>
<!-- <el-table-column prop="DataSource" label="来源"></el-table-column> -->
<el-table-column label="类型">
<template slot-scope="scope">
<div>{{ typeList[scope.row.ass_task[0].cd_type] }}</div>
</template>
</el-table-column>
<el-table-column prop="task_size" label="大小">
<template slot-scope="scope">
<div>{{ filterSize(scope.row.task_size) }}</div>
</template>
</el-table-column>
<!-- <el-table-column prop="CreateTime" label="开始时间"></el-table-column> --> <!-- <el-table-column prop="CreateTime" label="开始时间"></el-table-column> -->
<!-- <el-table-column prop="FinishTime" label="结束时间"></el-table-column> --> <!-- <el-table-column prop="FinishTime" label="结束时间"></el-table-column> -->
<el-table-column prop="JobCompletion" label="完成"></el-table-column> <el-table-column label="完成">
<template slot-scope="scope">
<div>{{ scope.row.finish_freq }}/{{ scope.row.total_freq }}</div>
</template>
</el-table-column>
<el-table-column prop="task_status" label="状态"> <el-table-column prop="task_status" label="状态">
<template slot-scope="scope"> <template slot-scope="scope">
<div class="flex_box work_status_box"> <div class="flex_box work_status_box">
@@ -209,8 +243,9 @@
<script> <script>
let that let that
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
import UserInfo from '@/components/userInfo/userInfo.vue'; import { accAdd, filterSize } from '@/utils'
import WorkAdd from '@/components/workAdd/workAdd.vue'; import UserInfo from '@/components/userInfo/userInfo.vue'
import WorkAdd from '@/components/workAdd/workAdd.vue'
export default { export default {
name: 'dashboard', name: 'dashboard',
@@ -226,28 +261,28 @@ export default {
runList: [ runList: [
{ {
value: 1, value: 1,
label: '重启设备', label: '重启设备'
}, },
{ {
value: 2, value: 2,
label: '清除错误', label: '清除错误'
}, },
{ {
value: 3, value: 3,
label: '校准光盘桶', label: '校准光盘桶'
}, },
{ {
value: 4, value: 4,
label: '校准打印机', label: '校准打印机'
}, },
{ {
value: 5, value: 5,
label: '自动设置刻录机', label: '自动设置刻录机'
}, },
{ {
value: 6, value: 6,
label: '设置左右盘仓', label: '设置左右盘仓'
}, }
], ],
// 剩余容量 // 剩余容量
progressW: 75, progressW: 75,
@@ -262,7 +297,7 @@ export default {
id: 2, id: 2,
message: '[2024-11-07 17:53:13][文件刻录 20241107175313][开始执行文件刻录任务]', message: '[2024-11-07 17:53:13][文件刻录 20241107175313][开始执行文件刻录任务]',
createtime: '2024 10-13' createtime: '2024 10-13'
}, }
// { // {
// id: 3, // id: 3,
// message: '[2024-11-07 17:52:28][文件刻录 20241107175228][接收到任务]', // message: '[2024-11-07 17:52:28][文件刻录 20241107175228][接收到任务]',
@@ -270,15 +305,35 @@ export default {
// }, // },
], ],
// 作业列表 // 作业列表
workList: [], taskList: [],
typeList: ['', '文件刻录', '光盘拷贝', '定期归档', '光盘读取'], typeList: ['', 'CD', 'DVD', 'DVD_DL', 'BD', 'BD_DL', 'BD_TL', 'BD_QL'],
statusList: ['', '新建', '等待中', '文件准备中', '正在刻录', '正在打印', '已失败', '已取消', '已完成'], statusList: {
'0': '新建',
'1': '等待中',
'2': '文件准备中',
'3': '正在刻录',
'4': '正在打印',
'5': '已失败',
'6': '已取消',
'7': '已完成'
},
} }
}, },
watch: { watch: {
'$store.state.chat.taskItem': { '$store.state.chat.taskList': {
handler(val) { handler(val) {
this.workList.push(val) if (val && val.length) {
let list = []
val.forEach((item) => {
let task_size = 0
item.ass_task.forEach((item2) => {
task_size = accAdd(task_size, item2.task_size)
})
item.task_size = task_size
list.push(item)
})
this.taskList = list
}
}, },
deep: true, deep: true,
immediate: true immediate: true
@@ -293,7 +348,7 @@ export default {
methods: { methods: {
// 执行 // 执行
handleRun() { handleRun() {
const index = that.runList.findIndex(item => item.value == that.runVal) const index = that.runList.findIndex((item) => item.value == that.runVal)
that.$message({ that.$message({
message: that.runList[index].label, message: that.runList[index].label,
type: 'success' type: 'success'
@@ -303,10 +358,13 @@ export default {
showWork() { showWork() {
that.$refs.workAdd.show() that.$refs.workAdd.show()
}, },
filterSize(size) {
return filterSize(size)
},
// 退出登录 // 退出登录
goOut() { goOut() {
this.$store.dispatch('FedLogOut').then(() => { this.$store.dispatch('FedLogOut').then(() => {
location.reload()// In order to re-instantiate the vue-router object to avoid bugs location.reload()
}) })
} }
} }
@@ -325,12 +383,12 @@ export default {
cursor: pointer; cursor: pointer;
padding: 0 16px; padding: 0 16px;
height: 30px; height: 30px;
background: #00C325; background: #00c325;
border-radius: 6px; border-radius: 6px;
margin-right: 16px; margin-right: 16px;
font-weight: 500; font-weight: 500;
font-size: 15px; font-size: 15px;
color: #FFFFFF; color: #ffffff;
img { img {
width: 18px; width: 18px;
height: 18px; height: 18px;
@@ -347,7 +405,7 @@ export default {
margin-right: 16px; margin-right: 16px;
font-weight: 500; font-weight: 500;
font-size: 15px; font-size: 15px;
color: #00C325; color: #00c325;
img { img {
width: 18px; width: 18px;
height: 18px; height: 18px;
@@ -357,7 +415,7 @@ export default {
.top_left_line { .top_left_line {
width: 2px; width: 2px;
height: 30px; height: 30px;
background: #E0E0E0; background: #e0e0e0;
margin: 0 16px; margin: 0 16px;
} }
.top_left_status { .top_left_status {
@@ -375,23 +433,23 @@ export default {
.top_left_num { .top_left_num {
padding: 0 10px; padding: 0 10px;
height: 28px; height: 28px;
background: #00C325; background: #00c325;
border-radius: 6px; border-radius: 6px;
font-weight: 500; font-weight: 500;
font-size: 15px; font-size: 15px;
color: #FFFFFF; color: #ffffff;
line-height: 28px; line-height: 28px;
margin-left: 12px; margin-left: 12px;
} }
.top_left_num1 { .top_left_num1 {
background: #B8B8B8; background: #b8b8b8;
} }
} }
} }
} }
.device_box { .device_box {
padding: 16px; padding: 16px;
background-color: #F8F8F8; background-color: #f8f8f8;
.device_left { .device_left {
width: 50%; width: 50%;
padding: 0 45px; padding: 0 45px;
@@ -485,7 +543,7 @@ export default {
} }
.device_status { .device_status {
height: 44px; height: 44px;
background: #FFFFFF; background: #ffffff;
border-radius: 4px; border-radius: 4px;
margin-bottom: 24px; margin-bottom: 24px;
padding: 0 18px; padding: 0 18px;
@@ -493,13 +551,13 @@ export default {
width: 22px; width: 22px;
height: 22px; height: 22px;
border-radius: 50%; border-radius: 50%;
background: #E54D4D; background: #e54d4d;
margin-right: 18px; margin-right: 18px;
} }
.device_status_text { .device_status_text {
font-weight: 500; font-weight: 500;
font-size: 19px; font-size: 19px;
color: #E54D4D; color: #e54d4d;
line-height: 30px; line-height: 30px;
} }
} }
@@ -507,13 +565,13 @@ export default {
width: 100%; width: 100%;
height: 44px; height: 44px;
overflow: hidden; overflow: hidden;
background: #FFFFFF; background: #ffffff;
box-shadow: 0px 5 9px 2px rgba(102, 102, 102, 0.18); box-shadow: 0px 5 9px 2px rgba(102, 102, 102, 0.18);
border-radius: 6px; border-radius: 6px;
.device_run_input { .device_run_input {
width: calc(100% - 140px); width: calc(100% - 140px);
height: 44px; height: 44px;
border: 2px solid #00BCC3; border: 2px solid #00bcc3;
overflow: hidden; overflow: hidden;
border-radius: 6px 0 0 6px; border-radius: 6px 0 0 6px;
.el-select { .el-select {
@@ -542,12 +600,12 @@ export default {
.device_run_btn { .device_run_btn {
width: 140px; width: 140px;
height: 44px; height: 44px;
background: #00BCC3; background: #00bcc3;
border-radius: 0px 6px 6px 0px; border-radius: 0px 6px 6px 0px;
font-weight: 500; font-weight: 500;
font-size: 19px; font-size: 19px;
margin: 0; margin: 0;
color: #FFFFFF; color: #ffffff;
} }
} }
} }
@@ -555,7 +613,7 @@ export default {
width: 50%; width: 50%;
.device_right_top { .device_right_top {
height: 200px; height: 200px;
background: #FFFFFF; background: #ffffff;
border-radius: 4px; border-radius: 4px;
margin-bottom: 18px; margin-bottom: 18px;
padding: 0 24px; padding: 0 24px;
@@ -581,14 +639,14 @@ export default {
} }
.device_right_top_progress { .device_right_top_progress {
height: 18px; height: 18px;
background: #FFFFFF; background: #ffffff;
border-radius: 3px; border-radius: 3px;
border: 2px solid #707070; border: 2px solid #707070;
margin: 2px 0 2px; margin: 2px 0 2px;
.device_right_top_progress_box { .device_right_top_progress_box {
width: 0; width: 0;
height: 15px; height: 15px;
background: #00C325; background: #00c325;
transition: all 0.5s; transition: all 0.5s;
} }
} }
@@ -597,17 +655,17 @@ export default {
.device_right_top_line { .device_right_top_line {
width: 2px; width: 2px;
height: 150px; height: 150px;
background: #E1F5E5; background: #e1f5e5;
margin: 0 24px; margin: 0 24px;
} }
} }
.notice_box { .notice_box {
background: #FFFFFF; background: #ffffff;
border-radius: 6px; border-radius: 6px;
.notice_top { .notice_top {
height: 75px; height: 75px;
padding: 0 30px; padding: 0 30px;
border-bottom: 2px solid #E1F5E5; border-bottom: 2px solid #e1f5e5;
.notice_title { .notice_title {
font-weight: 500; font-weight: 500;
font-size: 19px; font-size: 19px;
@@ -621,7 +679,7 @@ export default {
.notice_all { .notice_all {
font-weight: 500; font-weight: 500;
font-size: 19px; font-size: 19px;
color: #00C325; color: #00c325;
cursor: pointer; cursor: pointer;
img { img {
width: 28px; width: 28px;
@@ -652,14 +710,14 @@ export default {
} }
.notice_item { .notice_item {
height: 42px; height: 42px;
background-color: #F8F8F8; background-color: #f8f8f8;
margin-bottom: 3px; margin-bottom: 3px;
cursor: pointer; cursor: pointer;
&:hover { &:hover {
background-color: #FFE6E6; background-color: #ffe6e6;
.notice_content, .notice_content,
.notice_time { .notice_time {
color: #FF0000; color: #ff0000;
} }
} }
.notice_content { .notice_content {
@@ -692,26 +750,26 @@ export default {
.work_top_text { .work_top_text {
width: 132px; width: 132px;
height: 72px; height: 72px;
background: linear-gradient( 180deg, #C1FFCD 0%, #FFFFFF 100%); background: linear-gradient(180deg, #c1ffcd 0%, #ffffff 100%);
font-weight: bold; font-weight: bold;
font-size: 19px; font-size: 19px;
color: #00C325; color: #00c325;
line-height: 72px; line-height: 72px;
text-align: center; text-align: center;
} }
} }
.work_table { .work_table {
background-color: #F8F8F8; background-color: #f8f8f8;
::v-deep { ::v-deep {
tr { tr {
background-color: #F8F8F8; background-color: #f8f8f8;
} }
td.el-table__cell { td.el-table__cell {
background-color: #F8F8F8; background-color: #f8f8f8;
border-bottom: 3px solid #ffffff; border-bottom: 3px solid #ffffff;
} }
th.el-table__cell { th.el-table__cell {
background-color: #F2F9F4; background-color: #f2f9f4;
border-bottom: 3px solid #ffffff; border-bottom: 3px solid #ffffff;
} }
.el-table__cell { .el-table__cell {
@@ -723,6 +781,19 @@ export default {
color: #000000; color: #000000;
} }
} }
.work_progress {
width: 80%;
::v-deep {
.el-progress-bar__outer {
height: 16px!important;
line-height: 16px!important;
.el-progress-bar__innerText {
font-size: 12px!important;
color: #fff!important;
}
}
}
}
.work_status_box { .work_status_box {
font-weight: 500; font-weight: 500;
font-size: 14px; font-size: 14px;
@@ -733,7 +804,7 @@ export default {
} }
.footer_box { .footer_box {
height: 36px; height: 36px;
background: #DCF5E1; background: #dcf5e1;
font-weight: 500; font-weight: 500;
font-size: 14px; font-size: 14px;
color: #666666; color: #666666;
@@ -746,7 +817,7 @@ export default {
.footer_text { .footer_text {
cursor: pointer; cursor: pointer;
&:hover { &:hover {
color: #00C325; color: #00c325;
} }
} }
} }