排产基础数据提交

dev-scheduling
zhangdi 4 months ago
parent a258a2835a
commit 711059fe6a
  1. 44
      src/api/productionSchedulingPlan/basic.js
  2. 96
      src/views/productionSchedulingPlan/basic/equipmentCapacity.vue
  3. 25
      src/views/productionSchedulingPlan/basic/inspectionHours.vue
  4. 110
      src/views/productionSchedulingPlan/basic/nonSameFurnace.vue
  5. 71
      src/views/productionSchedulingPlan/basic/personnelCapacity.vue
  6. 40
      src/views/productionSchedulingPlan/basic/principalProducer.vue
  7. 25
      src/views/productionSchedulingPlan/basic/qualityGrade.vue
  8. 64
      src/views/productionSchedulingPlan/schedulingDashboard/index.vue
  9. 1
      src/views/productionSchedulingPlan/schedulingDashboard/index111.vue

@ -79,7 +79,7 @@ export const updateInspectionItem = row => {
// 质量等级 增删改查 // 质量等级 增删改查
export const getListGualityGrade = (current, size, params) => { export const getListGualityGrade = (current, size, params) => {
return request({ return request({
url: '/blade-scheduling/gualityGrade/page', url: '/blade-scheduling/qualityGrade/page',
method: 'get', method: 'get',
params: { params: {
...params, ...params,
@ -90,7 +90,7 @@ export const getListGualityGrade = (current, size, params) => {
}; };
export const removeGualityGrade = ids => { export const removeGualityGrade = ids => {
return request({ return request({
url: '/blade-scheduling/gualityGrade/remove', url: '/blade-scheduling/qualityGrade/remove',
method: 'post', method: 'post',
params: { params: {
ids, ids,
@ -100,7 +100,7 @@ export const removeGualityGrade = ids => {
export const addGualityGrade = row => { export const addGualityGrade = row => {
return request({ return request({
url: '/blade-scheduling/gualityGrade/submit', url: '/blade-scheduling/qualityGrade/submit',
method: 'post', method: 'post',
data: row, data: row,
}); });
@ -108,7 +108,7 @@ export const addGualityGrade = row => {
export const updateGualityGrade = row => { export const updateGualityGrade = row => {
return request({ return request({
url: '/blade-scheduling/gualityGrade/submit', url: '/blade-scheduling/qualityGrade/submit',
method: 'post', method: 'post',
data: row, data: row,
}); });
@ -227,3 +227,39 @@ export const updateDifferentFurnaceTank = row => {
data: row, data: row,
}); });
}; };
// 查询工艺能力
export const getCraftAbility = (params) => {
return request({
url: '/blade-scheduling/craftAbility/findList',
method: 'get',
params: params,
});
};
// 查询设备
export const getEquipment = (params) => {
return request({
url: '/blade-scheduling/equipment/findList',
method: 'get',
params: params,
});
};
// 工序
export const getProcessSet = (params) => {
return request({
url: '/blade-scheduling/processSet/findList',
method: 'get',
params: params,
});
};
// 作业中心
export const getWorkCenter = (params) => {
return request({
url: '/blade-scheduling/workCenter/findList',
method: 'get',
params: params,
});
};

@ -92,34 +92,58 @@ export default {
{ {
label: '作业中心', label: '作业中心',
prop: 'workCenterId', prop: 'workCenterId',
search: false, search: true,
sortable: true, sortable: true,
span: 12, span: 12,
width: 120, width: 120,
type: 'select',
filterable: true,
dicUrl: '/blade-scheduling/workCenter/findList',
props: {
label: 'wcName',
value: 'id',
},
change: val => {
this.onChangeData(val.item, 'workCenterId');
},
}, },
{ {
label: '工序', label: '作业中心',
prop: '', prop: 'workCenterName',
search: false, search: false,
sortable: true, sortable: true,
span: 12, span: 12,
hide: true,
display: false,
}, },
{ {
label: '设备编码', label: '设备名称',
prop: 'equipCode', prop: 'equipName',
search: false, search: true,
sortable: true, sortable: true,
span: 12, span: 12,
width: 120, width: 120,
type: 'select',
filterable: true,
dicUrl: '/blade-scheduling/equipment/findList',
props: {
label: 'deviceName',
value: 'deviceName',
},
change: val => {
this.onChangeData(val.item, 'equipName');
},
}, },
{ {
label: '设备名称', label: '设备编码',
prop: 'equipName', prop: 'equipCode',
search: false, search: true,
sortable: true, sortable: true,
span: 12, span: 12,
width: 120, width: 120,
disabled:true,
}, },
{ {
label: '设备分类', label: '设备分类',
prop: 'equipType', prop: 'equipType',
@ -146,15 +170,35 @@ export default {
sortable: true, sortable: true,
span: 12, span: 12,
width: 120, width: 120,
type: 'select',
filterable: true,
dicUrl: '/blade-scheduling/craftAbility/findList',
props: {
label: 'caName',
value: 'id',
},
change: val => {
this.onChangeData(val.item, 'craftId');
},
},
{
label: '工艺能力',
prop: 'craftName',
search: false,
sortable: true,
span: 12,
hide:true,
display:false
}, },
{ {
label: '额定加工能力(烧结-个/热表-面积)', label: '额定加工能力(烧结-个/热表-面积)',
prop: 'standardProcessAbility', prop: 'standardProcessAbility',
search: false, search: false,
sortable: true, sortable: true,
span: 12, span: 24,
width: 270, width: 270,
labelWidth:270,
type: 'number'
}, },
{ {
label: '额定工时(分钟)', label: '额定工时(分钟)',
@ -163,6 +207,8 @@ export default {
sortable: true, sortable: true,
span: 12, span: 12,
width: 180, width: 180,
labelWidth:180,
type: 'number'
}, },
{ {
label: '准备工时(分钟)', label: '准备工时(分钟)',
@ -171,6 +217,8 @@ export default {
sortable: true, sortable: true,
span: 12, span: 12,
width: 180, width: 180,
labelWidth:180,
type: 'number'
}, },
{ {
label: '轮次间隔(分钟)', label: '轮次间隔(分钟)',
@ -179,18 +227,13 @@ export default {
sortable: true, sortable: true,
span: 12, span: 12,
width: 180, width: 180,
labelWidth:180,
type: 'number'
}, },
{
label: '轮次间隔(分钟)',
prop: '',
search: false,
sortable: true,
span: 12,
width: 180,
},
{ {
label: '指定使用', label: '指定使用',
prop: '', prop: 'assignUse',
search: false, search: false,
sortable: true, sortable: true,
span: 12, span: 12,
@ -198,7 +241,7 @@ export default {
}, },
{ {
label: '备注', label: '备注',
prop: '', prop: 'remarks',
search: false, search: false,
sortable: true, sortable: true,
span: 12, span: 12,
@ -211,6 +254,17 @@ export default {
}; };
}, },
methods: { methods: {
onChangeData(val, type) {
if (type == 'workCenterId') {
this.form.workCenterName = val.wcCode;
}
if (type == 'equipName') {
this.form.equipCode = val.deviceCode;
}
if(type=='craftId'){
this.form.craftName=val.caName
}
},
rowSave(row, done, loading) { rowSave(row, done, loading) {
addEquipAbility(row).then( addEquipAbility(row).then(
() => { () => {

@ -54,7 +54,7 @@ export default {
calcHeight: 32, calcHeight: 32,
simplePage: false, simplePage: false,
searchShow: true, searchShow: true,
searchMenuSpan: 6, searchMenuSpan: 18,
searchIcon: true, searchIcon: true,
searchIndex: 3, searchIndex: 3,
tree: false, tree: false,
@ -91,40 +91,37 @@ export default {
column: [ column: [
{ {
label: '检验项目', label: '检验项目',
prop: '', prop: 'inspectionItem',
search: false, search: true,
sortable: true, sortable: true,
span: 12, span: 12,
}, },
{ {
label: '抽样数量(常规)', label: '抽样数量(常规)',
prop: '', prop: 'samplingQuantity',
search: false,
sortable: true,
span: 12,
},
{
label: '额定工时(分钟)',
prop: '',
search: false, search: false,
sortable: true, sortable: true,
span: 12, span: 12,
labelWidth:160,
}, },
{ {
label: '额定工时(分钟/每人每个)', label: '额定工时(分钟/每人每个)',
prop: '', prop: 'standardTime',
search: false, search: false,
sortable: true, sortable: true,
span: 12, span: 12,
labelWidth:220, width:240,
labelWidth:240,
type: 'number'
}, },
{ {
label: '准备工时(分钟)', label: '准备工时(分钟)',
prop: '', prop: 'prepareTime',
search: false, search: false,
sortable: true, sortable: true,
span: 12, span: 12,
labelWidth:180, labelWidth:180,
type: 'number'
}, },
{ {
label: '单位', label: '单位',

@ -90,50 +90,123 @@ export default {
align: 'center', align: 'center',
column: [ column: [
{ {
label: '工艺能力', label: '作业中心',
prop: 'workCenterId', prop: 'workCenterId',
search: true,
sortable: true,
span: 12,
width:120,
type: 'select',
filterable: true,
dicUrl: '/blade-scheduling/workCenter/findList',
props: {
label: 'wcName',
value: 'id',
},
change: (val,row) => {
this.onChangeData(val.item,'workCenterId')
},
},
{
label: '作业中心',
prop: 'workCenterName',
search: false, search: false,
sortable: true, sortable: true,
span: 12, span: 12,
hide:true,
display:false
}, },
{ {
label: '影响因素', label: '工序',
prop: 'processId', prop: 'processId',
search: true,
sortable: true,
span: 12,
type: 'select',
filterable: true,
dicUrl: '/blade-scheduling/processSet/findList',
props: {
label: 'name',
value: 'id',
},
change: (val,row) => {
this.onChangeData(val.item,'processId')
},
},
{
label: '工序',
prop: 'processName',
search: false,
sortable: true,
span: 12,
hide:true,
display:false,
},
{
label: '工艺能力',
prop: 'craftId',
search: true,
sortable: true,
span: 12,
width:120,
type: 'select',
filterable: true,
dicUrl: '/blade-scheduling/craftAbility/findList',
props: {
label: 'caName',
value: 'id',
},
change: (val,row) => {
this.onChangeData(val.item,'craftId')
},
},
{
label: '工艺能力',
prop: 'craftName',
search: false, search: false,
sortable: true, sortable: true,
span: 12, span: 12,
hide:true,
display:false
},
{
label: '影响因素',
search: false,
span: 12,
children: [ children: [
{ {
label: '键位', label: '键位',
prop: 'workCenterId', prop: 'keyBinding',
search: false, search: false,
sortable: true, sortable: true,
span: 12, span: 12,
}, },
{ {
label: '生产厂家', label: '生产厂家',
prop: 'workCenterId', prop: 'factory',
search: false, search: false,
sortable: true, sortable: true,
span: 12, span: 12,
width:140,
}, },
{ {
label: '检验编号', label: '检验编号',
prop: 'workCenterId', prop: 'inspectionCode',
search: false, search: false,
sortable: true, sortable: true,
span: 12, span: 12,
width:140,
}, },
{ {
label: '材料', label: '材料',
prop: 'workCenterId', prop: 'material',
search: false, search: false,
sortable: true, sortable: true,
span: 12, span: 12,
}, },
{ {
label: '厚度(镀层)', label: '厚度(镀层)',
prop: 'workCenterId', prop: 'thickness',
search: false, search: false,
sortable: true, sortable: true,
span: 12, span: 12,
@ -141,32 +214,34 @@ export default {
}, },
{ {
label: '钝化', label: '钝化',
prop: 'workCenterId', prop: 'passivation',
search: false, search: false,
sortable: true, sortable: true,
span: 12, span: 12,
}, },
{ {
label: '硬度', label: '硬度',
prop: 'workCenterId', prop: 'hardness',
search: false, search: false,
sortable: true, sortable: true,
span: 12, span: 12,
}, },
{ {
label: '生产标识', label: '生产标识',
prop: 'workCenterId', prop: 'productionIdent',
search: false, search: false,
sortable: true, sortable: true,
span: 12, span: 12,
width:140,
}, },
{ {
label: '结构/单件面积', label: '结构/单件面积',
prop: 'workCenterId', prop: 'singleArea',
search: false, search: false,
sortable: true, sortable: true,
span: 12, span: 12,
width:150 width:150,
type: 'number'
}, },
], ],
}, },
@ -177,6 +252,17 @@ export default {
}; };
}, },
methods: { methods: {
onChangeData(val,type){
if(type=='workCenterId'){
this.form.workCenterName=val.wcCode
}
if(type=='processId'){
this.form.processName=val.name
}
if(type=='craftId'){
this.form.craftName=val.caName
}
},
rowSave(row, done, loading) { rowSave(row, done, loading) {
addDifferentFurnaceTank(row).then( addDifferentFurnaceTank(row).then(
() => { () => {

@ -92,23 +92,80 @@ export default {
{ {
label: '作业中心', label: '作业中心',
prop: 'workCenterId', prop: 'workCenterId',
search: true,
sortable: true,
span: 12,
type: 'select',
filterable: true,
dicUrl: '/blade-scheduling/workCenter/findList',
props: {
label: 'wcName',
value: 'id',
},
change: (val,row) => {
this.onChangeData(val.item,'workCenterId')
},
},
{
label: '作业中心',
prop: 'workCenterName',
search: false, search: false,
sortable: true, sortable: true,
span: 12, span: 12,
hide:true,
display:false
}, },
{ {
label: '工序', label: '工序',
prop: 'processId', prop: 'processId',
search: true,
sortable: true,
span: 12,
type: 'select',
filterable: true,
dicUrl: '/blade-scheduling/processSet/findList',
props: {
label: 'name',
value: 'id',
},
change: (val,row) => {
this.onChangeData(val.item,'processId')
},
},
{
label: '工序',
prop: 'processName',
search: false, search: false,
sortable: true, sortable: true,
span: 12, span: 12,
hide:true,
display:false
}, },
{ {
label: '工艺能力', label: '工艺能力',
prop: 'craftId', prop: 'craftId',
search: true,
sortable: true,
span: 12,
type: 'select',
filterable: true,
dicUrl: '/blade-scheduling/craftAbility/findList',
props: {
label: 'caName',
value: 'id',
},
change: (val,row) => {
this.onChangeData(val.item,'craftId')
},
},
{
label: '工艺能力',
prop: 'craftName',
search: false, search: false,
sortable: true, sortable: true,
span: 12, span: 12,
hide:true,
display:false
}, },
{ {
label: '额定工时(分钟/每人每个)', label: '额定工时(分钟/每人每个)',
@ -117,6 +174,7 @@ export default {
sortable: true, sortable: true,
span: 12, span: 12,
labelWidth: 220, labelWidth: 220,
type: 'number'
}, },
{ {
label: '准备工时(分钟)', label: '准备工时(分钟)',
@ -125,6 +183,7 @@ export default {
sortable: true, sortable: true,
span: 12, span: 12,
labelWidth: 180, labelWidth: 180,
type: 'number'
}, },
], ],
}, },
@ -133,7 +192,19 @@ export default {
}; };
}, },
methods: { methods: {
onChangeData(val,type){
if(type=='workCenterId'){
this.form.workCenterName=val.wcCode
}
if(type=='processId'){
this.form.processName=val.name
}
if(type=='craftId'){
this.form.craftName=val.caName
}
},
rowSave(row, done, loading) { rowSave(row, done, loading) {
addPersonAbility(row).then( addPersonAbility(row).then(
() => { () => {
this.onLoad(this.page); this.onLoad(this.page);

@ -89,47 +89,58 @@ export default {
searchMenuPosition: 'right', searchMenuPosition: 'right',
align: 'center', align: 'center',
column: [ column: [
{ {
label: '工序', label: '工序',
prop: 'processId', prop: 'processId',
search: false, search: true,
sortable: true, sortable: true,
span: 12, span: 12,
type: 'select',
filterable: true,
dicUrl: '/blade-scheduling/processSet/findList',
props: {
label: 'name',
value: 'id',
},
change: (val, row) => {
this.onChangeData(val.item, 'processId');
},
}, },
{ {
label: '工艺能力', label: '工',
prop: 'processId', prop: 'processName',
search: false, search: false,
sortable: true, sortable: true,
span: 12, span: 12,
hide: true,
display: false,
}, },
{ {
label: '主生产者(人/设备)', label: '主生产者(人/设备)',
prop: 'mainProducer', prop: 'mainProducer',
search: false, search: true,
sortable: true, sortable: true,
span: 12, span: 12,
labelWidth:220, searchLabelWidth: 150,
labelWidth: 160,
type: 'select', type: 'select',
dicData: [ dicData: [
{ {
label: '人', label: '人',
value:'人' value: '人',
}, },
{ {
label: '设备', label: '设备',
value:'设备' value: '设备',
} },
] ],
}, },
{ {
label: '备注', label: '备注',
prop: '', prop: 'remarks',
search: false, search: false,
sortable: true, sortable: true,
span: 12, span: 12,
labelWidth:180,
}, },
], ],
}, },
@ -138,6 +149,11 @@ export default {
}; };
}, },
methods: { methods: {
onChangeData(val, type) {
if (val&&type == 'processId') {
this.form.processName = val.name;
}
},
rowSave(row, done, loading) { rowSave(row, done, loading) {
addMainProducer(row).then( addMainProducer(row).then(
() => { () => {

@ -91,31 +91,32 @@ export default {
column: [ column: [
{ {
label: '质量等级', label: '质量等级',
prop: 'workCenterId', prop: 'qualityGrade',
search: false, search: false,
sortable: true, sortable: true,
span: 12, span: 12,
}, },
{ {
label: '军品', label: '类型',
prop: 'processId', prop: 'type',
search: false, search: true,
sortable: true, sortable: true,
span: 12, span: 12,
type:'select',
dicData:[
{
label:'军品',
value:1
}, },
{ {
label:'商飞', label:'商飞',
prop: 'craftId', value:2
search: false,
sortable: true,
span: 12,
}, },
{ {
label:'宇航', label:'宇航',
prop: 'standardTime', value:3
search: false, }
sortable: true, ]
span: 12,
}, },
], ],

@ -29,7 +29,15 @@
</el-col> </el-col>
<el-col :span="4"> <el-col :span="4">
<el-form-item label="工序:"> <el-form-item label="工序:">
<el-input v-model="formLabelAlign.processName" placeholder="请输入"></el-input> <!-- <el-input v-model="formLabelAlign.processName" placeholder="请输入"></el-input> -->
<el-select v-model="formLabelAlign.processName" filterable placeholder="请选择">
<el-option
v-for="(item, index) in selectProcessOptions"
:label="item.name"
:value="item.id"
:key="index"
></el-option>
</el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="4"> <el-col :span="4">
@ -75,10 +83,11 @@
<!-- 左侧信息列表 - 展示车间订单号等信息 --> <!-- 左侧信息列表 - 展示车间订单号等信息 -->
<div class="info-list"> <div class="info-list">
<div class="info-item-title"> <div class="info-item-title">
<div class="info-title-cell">车间订单号</div> <div class="info-title-cell info-title-no">车间订单号</div>
<div class="info-title-cell">零件号</div> <div class="info-title-cell info-title-no">零件号</div>
<div class="info-title-cell">批次号</div> <div class="info-title-cell">批次号</div>
<div class="info-title-cell">数量</div> <div class="info-title-cell info-title-num">数量</div>
<div class="info-title-cell">质量等级</div>
</div> </div>
<div <div
v-for="(order, index) in currentPageOrders" v-for="(order, index) in currentPageOrders"
@ -90,10 +99,11 @@
}" }"
> >
<div class="info-item"> <div class="info-item">
<div class="info-cell">{{ order.woCode }}</div> <div class="info-cell info-title-no">{{ order.woCode }}</div>
<div class="info-cell">{{ order.partCode }}</div> <div class="info-cell info-title-no">{{ order.partCode }}</div>
<div class="info-cell">{{ order.batchNo }}</div> <div class="info-cell">{{ order.batchNo }}</div>
<div class="info-cell">{{ order.makeQty }}</div> <div class="info-cell info-title-num">{{ order.makeQty }}</div>
<div class="info-cell">{{ order.productIdent }}</div>
</div> </div>
</div> </div>
</div> </div>
@ -201,7 +211,6 @@
@size-change="handleSizeChange" @size-change="handleSizeChange"
@current-change="handleCurrentChange" @current-change="handleCurrentChange"
:current-page="currentPage" :current-page="currentPage"
:page-size="pageSize" :page-size="pageSize"
layout="total, prev, pager, next, jumper" layout="total, prev, pager, next, jumper"
:total="totalOrders" :total="totalOrders"
@ -280,8 +289,12 @@
</template> </template>
<script> <script>
import { getData, selectEquip, selectTeam } from '@/api/productionSchedulingPlan/scheduling'; import {
getData,
selectEquip,
selectTeam,
} from '@/api/productionSchedulingPlan/scheduling';
import { getProcessSet } from '@/api/productionSchedulingPlan/basic';
export default { export default {
name: 'GanttChart', name: 'GanttChart',
data() { data() {
@ -318,6 +331,7 @@ export default {
rowHeights: {}, rowHeights: {},
selectTeamOptions: [], selectTeamOptions: [],
selectEquipOptions: [], selectEquipOptions: [],
selectProcessOptions: [],
// //
currentTimePosition: 0, currentTimePosition: 0,
@ -343,6 +357,7 @@ export default {
this.formLabelAlign.startTime = new Date().toISOString().substr(0, 10); this.formLabelAlign.startTime = new Date().toISOString().substr(0, 10);
this.getSelectTeam(); this.getSelectTeam();
this.getSelectEquip(); this.getSelectEquip();
this.getProcessSet();
this.getData(); this.getData();
this.calcCurrentTimePosition(); this.calcCurrentTimePosition();
// 线 // 线
@ -405,6 +420,11 @@ export default {
this.selectTeamOptions = res.data.data; this.selectTeamOptions = res.data.data;
}); });
}, },
getProcessSet() {
getProcessSet().then(res => {
this.selectProcessOptions = res.data.data;
});
},
// //
processData(rawData) { processData(rawData) {
@ -579,12 +599,12 @@ export default {
const totalSpacing = totalLayers * 4; const totalSpacing = totalLayers * 4;
const availableHeight = rowHeight - totalSpacing; const availableHeight = rowHeight - totalSpacing;
const layerHeight = availableHeight / totalLayers; const layerHeight = availableHeight / totalLayers;
return layerIndex * (layerHeight + 4) + 2; return layerIndex * (layerHeight + 18) + 2;
}, },
getLayerTaskHeight(totalLayers, device) { getLayerTaskHeight(totalLayers, device) {
const rowHeight = this.getRowHeight(device); const rowHeight = this.getRowHeight(device);
if (totalLayers <= 1) { if (totalLayers <= 1) {
return rowHeight - 4; return rowHeight - 18;
} else { } else {
const totalSpacing = totalLayers * 4; const totalSpacing = totalLayers * 4;
const availableHeight = rowHeight - totalSpacing; const availableHeight = rowHeight - totalSpacing;
@ -688,7 +708,7 @@ export default {
/* 左侧信息列表样式 */ /* 左侧信息列表样式 */
.info-list { .info-list {
width: 400px; width: 450px;
background-color: #f8f9fa; background-color: #f8f9fa;
border-right: 1px solid #eee; border-right: 1px solid #eee;
flex-shrink: 0; flex-shrink: 0;
@ -707,6 +727,15 @@ export default {
text-align: center; text-align: center;
line-height: 36px; line-height: 36px;
border-right: 1px solid #eee; border-right: 1px solid #eee;
font-size:14px;
}
.info-title-num {
width: 50px;
flex: none !important;
}
.info-title-no {
width: 125px;
flex: none !important;
} }
.info-item { .info-item {
@ -723,7 +752,7 @@ export default {
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
font-size:13px; font-size: 10px;
} }
.timeline-container { .timeline-container {
@ -833,7 +862,7 @@ export default {
transform: translateX(-50%); transform: translateX(-50%);
z-index: 10; z-index: 10;
height: 100vh; height: 100vh;
border-left:1px dashed #ccc border-left: 1px dashed #ccc;
} }
/* 图表内容区域 */ /* 图表内容区域 */
@ -841,6 +870,7 @@ export default {
flex: 1; flex: 1;
position: relative; position: relative;
overflow-y: auto; overflow-y: auto;
overflow-x: auto;
} }
.grid-lines { .grid-lines {
@ -864,6 +894,8 @@ export default {
position: relative; position: relative;
width: 100%; width: 100%;
height: 100%; height: 100%;
/* overflow:hidden; */
overflow-x: hidden;
} }
.device-task-row { .device-task-row {
@ -893,7 +925,7 @@ export default {
} }
.task-label { .task-label {
font-size: 13px; font-size: 10px;
color: white; color: white;
white-space: nowrap; white-space: nowrap;
overflow: hidden; overflow: hidden;

@ -282,6 +282,7 @@
<span class="label">实际开始时间</span> <span class="label">实际开始时间</span>
<span class="value">{{ tooltipData.factStartTime || '-' }}</span> <span class="value">{{ tooltipData.factStartTime || '-' }}</span>
</li> </li>
<li class="detail-item"> <li class="detail-item">
<span class="label">计划完成时间</span> <span class="label">计划完成时间</span>
<span class="value">{{ tooltipData.planEndTime || '-' }}</span> <span class="value">{{ tooltipData.planEndTime || '-' }}</span>

Loading…
Cancel
Save