|
|
@@ -113,6 +113,9 @@
|
|
|
cache-key="systemRoleTable"
|
|
|
row-key="id"
|
|
|
class="table"
|
|
|
+ :row-class-name="getTableRowClassName"
|
|
|
+ @cell-mouse-enter="handleCellMouseEnter"
|
|
|
+ @cell-mouse-leave="handleCellMouseLeave"
|
|
|
>
|
|
|
<template v-slot:toolbar>
|
|
|
<div style="display: inline-block" v-if="!item.isSpecialField">
|
|
|
@@ -200,62 +203,128 @@
|
|
|
时间段: {{ item.startDate }} ----- {{ item.endDate }}
|
|
|
</div>
|
|
|
</template>
|
|
|
+ <template v-slot:name="{ row }">
|
|
|
+ <el-tooltip
|
|
|
+ :disabled="!isDeviceTypeLimitedRow(row)"
|
|
|
+ content="该工序已制定设备类型"
|
|
|
+ placement="top"
|
|
|
+ popper-class="device-limited-tooltip-popper"
|
|
|
+ >
|
|
|
+ <span class="device-limited-tooltip-wrap">
|
|
|
+ {{ row.name }}
|
|
|
+ <el-tag
|
|
|
+ v-if="isDeviceTypeLimitedRow(row)"
|
|
|
+ class="device-limited-tag"
|
|
|
+ effect="dark"
|
|
|
+ size="mini"
|
|
|
+ type="warning"
|
|
|
+ >
|
|
|
+ 禁填
|
|
|
+ </el-tag>
|
|
|
+ </span>
|
|
|
+ </el-tooltip>
|
|
|
+ </template>
|
|
|
<template v-slot:quantity="{ row }">
|
|
|
- <el-input
|
|
|
- v-model="row.quantity"
|
|
|
- :disabled="row.disposalStatus == 1"
|
|
|
- placeholder="请输入数量"
|
|
|
- type="number"
|
|
|
- @input="(e) => handleQuantityInput(e, row, item)"
|
|
|
- ></el-input>
|
|
|
+ <el-tooltip
|
|
|
+ :disabled="!isDeviceTypeLimitedRow(row)"
|
|
|
+ content="该工序已制定设备类型"
|
|
|
+ placement="top"
|
|
|
+ popper-class="device-limited-tooltip-popper"
|
|
|
+ >
|
|
|
+ <span class="device-limited-tooltip-wrap">
|
|
|
+ <el-input
|
|
|
+ v-model="row.quantity"
|
|
|
+ :disabled="isRowControlDisabled(row)"
|
|
|
+ placeholder="请输入数量"
|
|
|
+ type="number"
|
|
|
+ @input="(e) => handleQuantityInput(e, row, item)"
|
|
|
+ ></el-input>
|
|
|
+ </span>
|
|
|
+ </el-tooltip>
|
|
|
</template>
|
|
|
<template v-slot:weight="{ row }">
|
|
|
- <el-input
|
|
|
- v-model="row.weight"
|
|
|
- :disabled="row.disposalStatus == 1"
|
|
|
- placeholder="请输入重量"
|
|
|
- type="number"
|
|
|
- @input="(e) => handleWeightInput(e, row, item)"
|
|
|
- ></el-input>
|
|
|
+ <el-tooltip
|
|
|
+ :disabled="!isDeviceTypeLimitedRow(row)"
|
|
|
+ content="该工序已制定设备类型"
|
|
|
+ placement="top"
|
|
|
+ popper-class="device-limited-tooltip-popper"
|
|
|
+ >
|
|
|
+ <span class="device-limited-tooltip-wrap">
|
|
|
+ <el-input
|
|
|
+ v-model="row.weight"
|
|
|
+ :disabled="isRowControlDisabled(row)"
|
|
|
+ placeholder="请输入重量"
|
|
|
+ type="number"
|
|
|
+ @input="(e) => handleWeightInput(e, row, item)"
|
|
|
+ ></el-input>
|
|
|
+ </span>
|
|
|
+ </el-tooltip>
|
|
|
</template>
|
|
|
<template v-slot:teamTimeIds="{ row }">
|
|
|
- <el-select
|
|
|
- v-model="row.teamTimeIds"
|
|
|
- multiple
|
|
|
- placeholder="班次"
|
|
|
- :disabled="row.disposalStatus == 1"
|
|
|
- @change="(e) => shiftSelection(e, row, item)"
|
|
|
+ <el-tooltip
|
|
|
+ :disabled="!isDeviceTypeLimitedRow(row)"
|
|
|
+ content="该工序已制定设备类型"
|
|
|
+ placement="top"
|
|
|
+ popper-class="device-limited-tooltip-popper"
|
|
|
>
|
|
|
- <el-option
|
|
|
- v-for="item in shiftList"
|
|
|
- :key="item.id"
|
|
|
- :label="item.dutyName"
|
|
|
- :value="item.id"
|
|
|
- >
|
|
|
- </el-option>
|
|
|
- </el-select>
|
|
|
+ <span class="device-limited-tooltip-wrap">
|
|
|
+ <el-select
|
|
|
+ v-model="row.teamTimeIds"
|
|
|
+ multiple
|
|
|
+ placeholder="班次"
|
|
|
+ :disabled="isRowControlDisabled(row)"
|
|
|
+ @change="(e) => shiftSelection(e, row, item)"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in shiftList"
|
|
|
+ :key="item.id"
|
|
|
+ :label="item.dutyName"
|
|
|
+ :value="item.id"
|
|
|
+ >
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </span>
|
|
|
+ </el-tooltip>
|
|
|
</template>
|
|
|
<template v-slot:startTime="{ row }">
|
|
|
- <el-date-picker
|
|
|
- v-model="row.startTime"
|
|
|
- :disabled="row.disposalStatus == 1"
|
|
|
- @change="handleStartTimeChange(row, item)"
|
|
|
- class="w100"
|
|
|
- placeholder="开始时间"
|
|
|
- type="datetime"
|
|
|
- value-format="yyyy-MM-dd HH:mm:ss"
|
|
|
- ></el-date-picker>
|
|
|
+ <el-tooltip
|
|
|
+ :disabled="!isDeviceTypeLimitedRow(row)"
|
|
|
+ content="该工序已制定设备类型"
|
|
|
+ placement="top"
|
|
|
+ popper-class="device-limited-tooltip-popper"
|
|
|
+ >
|
|
|
+ <span class="device-limited-tooltip-wrap">
|
|
|
+ <el-date-picker
|
|
|
+ v-model="row.startTime"
|
|
|
+ :disabled="isRowControlDisabled(row)"
|
|
|
+ @change="handleStartTimeChange(row, item)"
|
|
|
+ class="w100"
|
|
|
+ placeholder="开始时间"
|
|
|
+ type="datetime"
|
|
|
+ value-format="yyyy-MM-dd HH:mm:ss"
|
|
|
+ ></el-date-picker>
|
|
|
+ </span>
|
|
|
+ </el-tooltip>
|
|
|
</template>
|
|
|
<template v-slot:endTime="{ row }">
|
|
|
- <el-date-picker
|
|
|
- v-model="row.endTime"
|
|
|
- :disabled="row.disposalStatus == 1"
|
|
|
- @change="handleEndTimeChange(row, item)"
|
|
|
- class="w100"
|
|
|
- placeholder="完成时间"
|
|
|
- type="datetime"
|
|
|
- value-format="yyyy-MM-dd HH:mm:ss"
|
|
|
- ></el-date-picker>
|
|
|
+ <el-tooltip
|
|
|
+ :disabled="!isDeviceTypeLimitedRow(row)"
|
|
|
+ content="该工序已制定设备类型"
|
|
|
+ placement="top"
|
|
|
+ popper-class="device-limited-tooltip-popper"
|
|
|
+ >
|
|
|
+ <span class="device-limited-tooltip-wrap">
|
|
|
+ <el-date-picker
|
|
|
+ v-model="row.endTime"
|
|
|
+ :disabled="isRowControlDisabled(row)"
|
|
|
+ @change="handleEndTimeChange(row, item)"
|
|
|
+ class="w100"
|
|
|
+ placeholder="完成时间"
|
|
|
+ type="datetime"
|
|
|
+ value-format="yyyy-MM-dd HH:mm:ss"
|
|
|
+ ></el-date-picker>
|
|
|
+ </span>
|
|
|
+ </el-tooltip>
|
|
|
</template>
|
|
|
|
|
|
<template v-slot:action="{ row }">
|
|
|
@@ -315,6 +384,7 @@
|
|
|
listByFactoryId
|
|
|
} from '@/api/mainData/index.js';
|
|
|
import { getUserInfo, listPlanDotLine } from '@/api/produceOrder/index.js';
|
|
|
+ import { listPlanTaskDeviceByPlanIdAndTaskId } from '@/api/productionPlan/planDotLine.js';
|
|
|
import chooseStation from '../chooseStation.vue';
|
|
|
|
|
|
export default {
|
|
|
@@ -376,7 +446,8 @@
|
|
|
time_calc_code: '0', // 是否进行时间赋值 0 否 1 是
|
|
|
validDate,
|
|
|
userTeamList: [],
|
|
|
- cachedUserData: null
|
|
|
+ cachedUserData: null,
|
|
|
+ planTaskDeviceMap: {}
|
|
|
};
|
|
|
},
|
|
|
computed: {
|
|
|
@@ -443,11 +514,14 @@
|
|
|
align: 'center',
|
|
|
fixed: 'left',
|
|
|
selectable: (row, index) => {
|
|
|
- return row.disposalStatus != 1;
|
|
|
+ return (
|
|
|
+ row.disposalStatus != 1 && !this.isDeviceTypeLimitedRow(row)
|
|
|
+ );
|
|
|
}
|
|
|
},
|
|
|
{
|
|
|
prop: 'name',
|
|
|
+ slot: 'name',
|
|
|
label: this.dynamicName,
|
|
|
align: 'center',
|
|
|
showOverflowTooltip: true,
|
|
|
@@ -556,6 +630,135 @@
|
|
|
const date = String(now.getDate()).padStart(2, '0');
|
|
|
return `${year}-${month}-${date}`;
|
|
|
},
|
|
|
+ normalizeDeviceCode(value) {
|
|
|
+ if (value === null || value === undefined || value === '') {
|
|
|
+ return '';
|
|
|
+ }
|
|
|
+ return String(value).trim();
|
|
|
+ },
|
|
|
+ normalizeDeviceAllowedCodes(list = []) {
|
|
|
+ const codes = new Set();
|
|
|
+ (Array.isArray(list) ? list : []).forEach((item) => {
|
|
|
+ [
|
|
|
+ item?.deviceCode,
|
|
|
+ item?.assetCode,
|
|
|
+ item?.extInfo?.deviceCode,
|
|
|
+ item?.extInfo?.assetCode
|
|
|
+ ].forEach((code) => {
|
|
|
+ const value = this.normalizeDeviceCode(code);
|
|
|
+ if (value) {
|
|
|
+ codes.add(value);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ });
|
|
|
+ return codes;
|
|
|
+ },
|
|
|
+ getPlanTaskDeviceParams(taskId = this.processId) {
|
|
|
+ return {
|
|
|
+ planId: this.current.productionPlanId || this.current.planId || '',
|
|
|
+ taskId
|
|
|
+ };
|
|
|
+ },
|
|
|
+ getPlanTaskDeviceKey(taskId = this.processId) {
|
|
|
+ const params = this.getPlanTaskDeviceParams(taskId);
|
|
|
+ return [params.planId, params.taskId].filter(Boolean).join('::');
|
|
|
+ },
|
|
|
+ getDeviceAllowedCodes(taskId = this.processId) {
|
|
|
+ const key = this.getPlanTaskDeviceKey(taskId);
|
|
|
+ return key ? this.planTaskDeviceMap[key] || new Set() : new Set();
|
|
|
+ },
|
|
|
+ async loadPlanTaskDevices(taskId = this.processId) {
|
|
|
+ const params = this.getPlanTaskDeviceParams(taskId);
|
|
|
+ const key = this.getPlanTaskDeviceKey(taskId);
|
|
|
+ if (!params.planId || !params.taskId || !key) {
|
|
|
+ return new Set();
|
|
|
+ }
|
|
|
+ if (this.planTaskDeviceMap[key]) {
|
|
|
+ return this.planTaskDeviceMap[key];
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ const list = await listPlanTaskDeviceByPlanIdAndTaskId(params);
|
|
|
+ const codes = this.normalizeDeviceAllowedCodes(list);
|
|
|
+ this.$set(this.planTaskDeviceMap, key, codes);
|
|
|
+ return codes;
|
|
|
+ } catch (err) {
|
|
|
+ this.$message.warning(err.message || '获取工序设备类型失败');
|
|
|
+ const codes = new Set();
|
|
|
+ this.$set(this.planTaskDeviceMap, key, codes);
|
|
|
+ return codes;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ isDeviceTypeLimitedRow(row) {
|
|
|
+ return !!row?.__deviceTypeLimited;
|
|
|
+ },
|
|
|
+ getRowDeviceCode(row) {
|
|
|
+ return this.normalizeDeviceCode(
|
|
|
+ row?.assetCode ||
|
|
|
+ row?.deviceCode ||
|
|
|
+ row?.extInfo?.assetCode ||
|
|
|
+ row?.extInfo?.deviceCode ||
|
|
|
+ ''
|
|
|
+ );
|
|
|
+ },
|
|
|
+ isDeviceCodeAllowed(row, codes) {
|
|
|
+ const code = this.getRowDeviceCode(row);
|
|
|
+ return !!code && codes.has(code);
|
|
|
+ },
|
|
|
+ isDeviceTypeLimitedSelection(item, process) {
|
|
|
+ const codes = this.getDeviceAllowedCodes(process?.id || this.processId);
|
|
|
+ if (!codes.size) return false;
|
|
|
+ if (item && typeof item === 'object') {
|
|
|
+ return !this.isDeviceCodeAllowed(item, codes);
|
|
|
+ }
|
|
|
+ const key =
|
|
|
+ item && typeof item === 'object' ? this.getRowUniqueKey(item) : item;
|
|
|
+ const row = (process?.list || []).find(
|
|
|
+ (rowItem) => String(this.getRowUniqueKey(rowItem)) === String(key)
|
|
|
+ );
|
|
|
+ return row ? !this.isDeviceCodeAllowed(row, codes) : false;
|
|
|
+ },
|
|
|
+ isRowControlDisabled(row) {
|
|
|
+ return row.disposalStatus == 1 || this.isDeviceTypeLimitedRow(row);
|
|
|
+ },
|
|
|
+ applyDeviceLimitToList(list = [], dataRow) {
|
|
|
+ if (!dataRow || dataRow.assignType != 1) return list;
|
|
|
+ const codes = this.getDeviceAllowedCodes(dataRow?.id || this.processId);
|
|
|
+ if (!codes.size) return list;
|
|
|
+ return (list || []).map((item) => ({
|
|
|
+ ...item,
|
|
|
+ __deviceTypeLimited: !this.isDeviceCodeAllowed(item, codes)
|
|
|
+ }));
|
|
|
+ },
|
|
|
+ clearDeviceLimitedSelection(process) {
|
|
|
+ if (!process) return;
|
|
|
+ const codes = this.getDeviceAllowedCodes(process.id || this.processId);
|
|
|
+ if (!codes.size) return;
|
|
|
+ const nextSelection = (process.selection || []).filter((item) => {
|
|
|
+ return !this.isDeviceTypeLimitedSelection(item, process);
|
|
|
+ });
|
|
|
+ this.$set(process, 'selection', nextSelection);
|
|
|
+ this.$nextTick(() => {
|
|
|
+ const tab = `tableRef${process.index}`;
|
|
|
+ this.$refs[tab]?.[0]?.setSelectedRowKeys?.(
|
|
|
+ this.getSelectionKeys(nextSelection)
|
|
|
+ );
|
|
|
+ });
|
|
|
+ },
|
|
|
+ getTableRowClassName({ row }) {
|
|
|
+ return this.isDeviceTypeLimitedRow(row)
|
|
|
+ ? 'device-type-limited-row'
|
|
|
+ : '';
|
|
|
+ },
|
|
|
+ handleCellMouseEnter(row, column, cell) {
|
|
|
+ if (this.isDeviceTypeLimitedRow(row) && cell) {
|
|
|
+ cell.setAttribute('title', '该工序已制定设备类型');
|
|
|
+ }
|
|
|
+ },
|
|
|
+ handleCellMouseLeave(row, column, cell) {
|
|
|
+ if (cell?.getAttribute?.('title') === '该工序已制定设备类型') {
|
|
|
+ cell.removeAttribute('title');
|
|
|
+ }
|
|
|
+ },
|
|
|
async workCenterData() {
|
|
|
const userData = await getUserInfo(this.$store.state.user.info.userId);
|
|
|
this.cachedUserData = userData;
|
|
|
@@ -774,7 +977,11 @@
|
|
|
// status: { code: 0, desc: '未派单' }
|
|
|
}));
|
|
|
|
|
|
- this.$set(process, 'list', [...oldList, ...newList]);
|
|
|
+ this.$set(
|
|
|
+ process,
|
|
|
+ 'list',
|
|
|
+ this.applyDeviceLimitToList([...oldList, ...newList], process)
|
|
|
+ );
|
|
|
|
|
|
const newIds = newList.map((i) => i.id || i.__tempKey);
|
|
|
if (!process.selection) process.selection = [];
|
|
|
@@ -785,6 +992,7 @@
|
|
|
this.$refs[tab]?.[0]?.setSelectedRowKeys?.(
|
|
|
this.getSelectionKeys(process.selection)
|
|
|
);
|
|
|
+ this.clearDeviceLimitedSelection(process);
|
|
|
});
|
|
|
},
|
|
|
|
|
|
@@ -985,6 +1193,14 @@
|
|
|
if (!row.selection || row.selection.length === 0) {
|
|
|
return this.$message.warning('请最少选择一条数据');
|
|
|
}
|
|
|
+ if (
|
|
|
+ row.selection.some((item) =>
|
|
|
+ this.isDeviceTypeLimitedSelection(item, row)
|
|
|
+ )
|
|
|
+ ) {
|
|
|
+ this.clearDeviceLimitedSelection(row);
|
|
|
+ return this.$message.warning('该工序已制定设备类型,请勿修改');
|
|
|
+ }
|
|
|
|
|
|
let assignees = [];
|
|
|
let changeIds = [];
|
|
|
@@ -1099,6 +1315,7 @@
|
|
|
let id = tab.name;
|
|
|
this.processId = id;
|
|
|
await this.FirstTaskIdFn(id);
|
|
|
+ await this.loadPlanTaskDevices(id);
|
|
|
let data = this.processList.find((item) => item.id == this.processId);
|
|
|
if (data && (data.type == 2 || data.type == 3 || data.type == 6)) {
|
|
|
this.$message.warning('请前往质检系统派单');
|
|
|
@@ -1121,20 +1338,21 @@
|
|
|
}
|
|
|
},
|
|
|
// 指派选择
|
|
|
- changeRadio(e, index) {
|
|
|
+ async changeRadio(e, index) {
|
|
|
let data = this.processList[index];
|
|
|
if (e == 1) {
|
|
|
this.dynamicName = '工位名称';
|
|
|
data.assignName = '工位';
|
|
|
- this.getAssignData(index, this.stationList);
|
|
|
+ await this.loadPlanTaskDevices(data.id || this.processId);
|
|
|
+ await this.getAssignData(index, this.stationList);
|
|
|
} else if (e == 2) {
|
|
|
this.dynamicName = '人员名称';
|
|
|
data.assignName = '人员';
|
|
|
- this.getAssignData(index, this.crewList);
|
|
|
+ await this.getAssignData(index, this.crewList);
|
|
|
} else {
|
|
|
this.dynamicName = '产线名称';
|
|
|
data.assignName = '产线';
|
|
|
- this.getAssignData(index, this.productionList);
|
|
|
+ await this.getAssignData(index, this.productionList);
|
|
|
}
|
|
|
},
|
|
|
async getAssignData(index, arr, type = 0) {
|
|
|
@@ -1144,6 +1362,7 @@
|
|
|
|
|
|
let list = JSON.parse(JSON.stringify(arr || []));
|
|
|
list = this.applyExecutionTimeToList(list, dataRow);
|
|
|
+ list = this.applyDeviceLimitToList(list, dataRow);
|
|
|
|
|
|
if (!this.form.teamId) return;
|
|
|
|
|
|
@@ -1161,8 +1380,12 @@
|
|
|
|
|
|
if (!res || res.length === 0) {
|
|
|
// 没有后台数据,合并新增工位
|
|
|
- const merged = [...list, ...localNewList];
|
|
|
+ const merged = this.applyDeviceLimitToList(
|
|
|
+ [...list, ...localNewList],
|
|
|
+ dataRow
|
|
|
+ );
|
|
|
this.$set(dataRow, 'list', merged);
|
|
|
+ this.clearDeviceLimitedSelection(dataRow);
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
@@ -1179,12 +1402,13 @@
|
|
|
const existingIds = new Set(
|
|
|
(dataRow.list || []).map((i) => i.id || i.__tempKey)
|
|
|
);
|
|
|
- const mergedList = [
|
|
|
+ let mergedList = [
|
|
|
...dataRow.list,
|
|
|
...syncedLocalNewList.filter(
|
|
|
(i) => !existingIds.has(i.id || i.__tempKey)
|
|
|
)
|
|
|
];
|
|
|
+ mergedList = this.applyDeviceLimitToList(mergedList, dataRow);
|
|
|
|
|
|
// 更新新增工位状态
|
|
|
mergedList.forEach((item) => {
|
|
|
@@ -1198,6 +1422,7 @@
|
|
|
});
|
|
|
|
|
|
this.$set(dataRow, 'list', mergedList);
|
|
|
+ this.clearDeviceLimitedSelection(dataRow);
|
|
|
} catch (err) {
|
|
|
this.tabLoading = false;
|
|
|
this.$message.warning(err.message);
|
|
|
@@ -1315,12 +1540,14 @@
|
|
|
this.compareEndSetTime(listArr[idx], dataRow);
|
|
|
}
|
|
|
});
|
|
|
+ listArr = this.applyDeviceLimitToList(listArr, dataRow);
|
|
|
// }
|
|
|
// });
|
|
|
|
|
|
// console.log(listArr,'listArr')
|
|
|
this.$set(dataRow, 'list', listArr);
|
|
|
this.$set(dataRow, 'radioBun', radioBun);
|
|
|
+ this.clearDeviceLimitedSelection(dataRow);
|
|
|
},
|
|
|
|
|
|
applyExecutionTimeToList(list, dataRow) {
|
|
|
@@ -1460,6 +1687,7 @@
|
|
|
},
|
|
|
// 默认选中当前更改数据
|
|
|
selectedListData(row, item) {
|
|
|
+ if (this.isDeviceTypeLimitedRow(row)) return;
|
|
|
this.$nextTick(() => {
|
|
|
const rowKey = this.getRowUniqueKey(row);
|
|
|
const selectedKeys = this.getSelectionKeys(item.selection || []);
|
|
|
@@ -1740,4 +1968,61 @@
|
|
|
.describe {
|
|
|
display: inline-block;
|
|
|
}
|
|
|
+
|
|
|
+ .device-limited-tooltip-wrap {
|
|
|
+ display: inline-block;
|
|
|
+ width: 100%;
|
|
|
+ }
|
|
|
+
|
|
|
+ .device-limited-tag {
|
|
|
+ margin-left: 8px;
|
|
|
+ border-color: #f59e0b;
|
|
|
+ background-color: #f59e0b;
|
|
|
+ color: #fff;
|
|
|
+ font-weight: 600;
|
|
|
+ }
|
|
|
+
|
|
|
+ ::v-deep .device-type-limited-row > td {
|
|
|
+ position: relative;
|
|
|
+ background-color: #fff7ed !important;
|
|
|
+ color: #9a3412;
|
|
|
+ cursor: not-allowed;
|
|
|
+ }
|
|
|
+
|
|
|
+ ::v-deep .device-type-limited-row:hover > td {
|
|
|
+ background-color: #ffedd5 !important;
|
|
|
+ }
|
|
|
+
|
|
|
+ ::v-deep .device-type-limited-row > td:first-child::before {
|
|
|
+ position: absolute;
|
|
|
+ top: 8px;
|
|
|
+ bottom: 8px;
|
|
|
+ left: 0;
|
|
|
+ width: 4px;
|
|
|
+ background-color: #f59e0b;
|
|
|
+ border-radius: 0 4px 4px 0;
|
|
|
+ content: '';
|
|
|
+ }
|
|
|
+</style>
|
|
|
+
|
|
|
+<style lang="scss">
|
|
|
+ .device-limited-tooltip-popper {
|
|
|
+ max-width: 260px;
|
|
|
+ padding: 9px 12px;
|
|
|
+ border: 1px solid #f59e0b !important;
|
|
|
+ background: #9a3412 !important;
|
|
|
+ color: #fff !important;
|
|
|
+ font-size: 13px;
|
|
|
+ font-weight: 600;
|
|
|
+ line-height: 1.4;
|
|
|
+ box-shadow: 0 8px 22px rgba(154, 52, 18, 0.28);
|
|
|
+ }
|
|
|
+
|
|
|
+ .device-limited-tooltip-popper[x-placement^='top'] .popper__arrow {
|
|
|
+ border-top-color: #f59e0b !important;
|
|
|
+ }
|
|
|
+
|
|
|
+ .device-limited-tooltip-popper[x-placement^='top'] .popper__arrow::after {
|
|
|
+ border-top-color: #9a3412 !important;
|
|
|
+ }
|
|
|
</style>
|