<template>
|
<div class="main">
|
<div class="inner" ref="wraper">
|
<a-spin class="" :spinning="spinning" tip="拼命加载中...">
|
<a-card>
|
<advance-table
|
ref="table"
|
class="doc-center-table"
|
:data-source="dataSource"
|
:columns="columns"
|
:loading="loading"
|
title=""
|
row-key="id"
|
@search="onSearch"
|
@refresh="onRefresh"
|
@reset="onReset"
|
:format-conditions="true"
|
:scroll="{ x: 400, y }"
|
:pagination="{
|
current: pageCurr,
|
pageSize: pageSize,
|
total: total,
|
showSizeChanger: true,
|
showLessItems: true,
|
showQuickJumper: true,
|
pageSizeOptions: ['10', '20', '50', '100'],
|
showTotal: (total, range) =>
|
`第 ${range[0]}-${range[1]} 条,总计 ${total} 条`,
|
onChange: onPageChange,
|
onShowSizeChange: onSizeChange,
|
}"
|
:rowClassName="rowClassFn"
|
>
|
<template slot="dataIndex" slot-scope="{ index }">
|
{{ index + 1 }}
|
</template>
|
<template slot="title">
|
<a-space class="operator">
|
<span class="title">不良品中心</span>
|
<a-button type="primary" @click="uploadDefective"
|
>新增</a-button
|
>
|
</a-space>
|
</template>
|
<template slot="action" slot-scope="{ record }">
|
<a @click="viewLog(record)">处理记录</a>
|
<template v-if="record.nameList && record.nameList.length">
|
<a-divider type="vertical"></a-divider>
|
<a @click="showFileList(record)">附件</a>
|
</template>
|
<a-divider type="vertical"></a-divider>
|
<!-- TODO -->
|
<a v-if="record.confirmStatus < 2" @click="dispose(record)"
|
>处理</a
|
>
|
<a
|
v-else-if="record.confirmStatus == 2"
|
@click="stopDefective(record)"
|
>归档</a
|
>
|
</template>
|
</advance-table>
|
</a-card>
|
</a-spin>
|
</div>
|
<!-- 上传 -->
|
<a-modal
|
:visible="bomUploadShow"
|
:width="760"
|
title="上传不良品信息"
|
:destroyOnClose="true"
|
:maskClosable="false"
|
@cancel="bomUploadCancel"
|
@ok="bomUploadOk"
|
:footer="null"
|
>
|
<prod-upload @ok="bomUploadOk" @cancel="bomUploadCancel"></prod-upload>
|
</a-modal>
|
<!-- 处理 -->
|
<a-modal
|
:visible="disposeVisible"
|
:width="760"
|
title="处理不良品"
|
:destroyOnClose="true"
|
:maskClosable="false"
|
@cancel="disposeCancel"
|
@ok="disposeOk"
|
:footer="null"
|
>
|
<dispose-upload
|
:record="currentData"
|
@ok="disposeOk"
|
@cancel="disposeCancel"
|
></dispose-upload>
|
</a-modal>
|
<!-- 操作记录 -->
|
<a-modal
|
:visible="logVisible"
|
:width="760"
|
title="操作记录"
|
:destroyOnClose="true"
|
:maskClosable="false"
|
@cancel="logVisible = false"
|
:footer="null"
|
>
|
<div class="log-content" v-if="logVisible">
|
<a-timeline>
|
<a-timeline-item
|
v-for="(item, idx) in logList"
|
:key="'log_' + idx"
|
:color="
|
0 == item.confirmStatus || 3 == item.confirmStatus
|
? 'red'
|
: 'green'
|
"
|
>
|
<div>
|
<span class="user">{{ item.delName }}</span> 在
|
<span class="time">{{ item.recordTime }}</span>
|
<template v-if="0 == item.confirmStatus">
|
创建了不良品记录
|
<span class="rest">余({{ item.restProduct }})</span>
|
</template>
|
<template v-else-if="3 == item.confirmStatus">
|
归档了不良品记录
|
</template>
|
<template v-else>
|
{{ { "1": "处理", "2": "处理" }[item.confirmStatus] }}了
|
<span class="version">{{ item.delProduct }}</span
|
>个不良品 <span class="rest">余({{ item.restProduct }})</span>
|
<div class="">描述: {{ item.note }}</div>
|
<div
|
class="others"
|
v-if="item.hisNameList && item.hisNameList.length"
|
>
|
<div class="label">附件</div>
|
<div class="content">
|
<div
|
class="item"
|
v-for="file in item.hisNameList"
|
:key="file"
|
>
|
<div class="file-name">{{ file }}</div>
|
<div class="btn-list">
|
<a-button
|
class="btn"
|
v-if="canView(file)"
|
@click="view(file, item.delUrl)"
|
>预览</a-button
|
>
|
<a-button
|
class="btn"
|
type="primary"
|
@click="downloadOther(file, item.delUrl)"
|
>下载</a-button
|
>
|
</div>
|
</div>
|
</div>
|
</div>
|
</template>
|
</div>
|
</a-timeline-item>
|
</a-timeline>
|
</div>
|
</a-modal>
|
|
<!-- 附件 -->
|
<a-modal
|
:visible="otherFilesVisible"
|
:width="760"
|
title="附件"
|
:destroyOnClose="true"
|
:maskClosable="false"
|
@cancel="otherFilesVisible = false"
|
:footer="null"
|
>
|
<files-list v-if="otherFilesVisible" :list="fileList"></files-list>
|
</a-modal>
|
<a-modal
|
:width="600"
|
:visible="previewVisible"
|
:footer="null"
|
@cancel="handleCancel"
|
>
|
<img alt="example" style="width: 100%" :src="imgUrl" />
|
</a-modal>
|
<pop
|
:visible.sync="popVisible"
|
:x="popPosition.x"
|
:y="popPosition.y"
|
:position="popPosition.dir"
|
>
|
<pop-info :info="popInfo" v-if="popVisible"></pop-info>
|
</pop>
|
</div>
|
</template>
|
|
<script>
|
import AdvanceTable from "@/components/table/advance/AdvanceTable";
|
import ProdUpload from "./prodUpload";
|
import DisposeUpload from "./disposeUpload";
|
import DrawUpload from "@/pages/components/drawUpload";
|
import DownloadReason from "@/pages/components/downloadReason";
|
import DownloadLogs from "@/pages/components/downloadLogs";
|
|
import filesList from "@/pages/components/filesList";
|
|
import getWebUrl from "@/assets/js/tools/getWebUrl";
|
import { getUserList } from "../../permission/apis";
|
import { stopDefective } from "./apis";
|
import { mapGetters } from "vuex";
|
import checkPermit from "@/assets/js/tools/checkPermit";
|
import PERMITS from "@/assets/js/const/const_permits";
|
import Pop from "../components/pop";
|
import popInfo from './popInfo';
|
import offset from "@/assets/js/tools/offset";
|
|
import createWs from "@/assets/js/websocket";
|
import DiffList from "@/pages/components/diffList";
|
import FeedbackForm from "../components/feedbackForm.vue";
|
import OwnerDownload from "../components/ownerDownload";
|
import moment from "moment";
|
const WSMixin = createWs("defective");
|
|
export default {
|
name: "",
|
mixins: [WSMixin],
|
data() {
|
return {
|
popVisible: false,
|
popPosition: {
|
x: 0,
|
y: 0,
|
dir: "bottom",
|
},
|
popInfo: [],
|
previewVisible: false,
|
imgUrl: "",
|
fileList: [],
|
otherFilesVisible: false,
|
currentData: {},
|
logVisible: false,
|
disposeVisible: false,
|
logList: [],
|
|
ownerLogVisible: false,
|
reason: "",
|
reasonVisible: false,
|
oprateInfo: "",
|
downloadlogVisible: false,
|
tester: [],
|
downloadReasonVisible: false,
|
curObj: null,
|
errorVisible: false,
|
feedbackShow: false,
|
lockListVisible: false,
|
currentObj: null,
|
bomLockList: [],
|
otherLockList: [],
|
ecrList: [],
|
ecrListVisible: false,
|
fromProd: undefined,
|
prodList: [],
|
diffData: {},
|
bomUploadShow: false,
|
prodData: {},
|
userListAll: [],
|
mailList: [],
|
file: null,
|
// title: "",
|
fileUrl: "",
|
resList: [],
|
uploadShow: false,
|
customShow: false,
|
customProd: null,
|
editShow: false,
|
editObj: undefined,
|
selectedRowKeys: [],
|
selectedRows: [],
|
spinning: false,
|
loading: false,
|
pageCurr: 1,
|
pageSize: 10,
|
total: 0,
|
y: 400,
|
update: -1,
|
webUrl: getWebUrl(),
|
conditions: {},
|
columns: [
|
{
|
fixed: "left",
|
title: "序号",
|
dataIndex: "dataIndex",
|
key: "dataIndex",
|
align: "center",
|
width: 60,
|
noSearch: true,
|
scopedSlots: { customRender: "dataIndex" },
|
customCell: this.customCell,
|
|
},
|
{
|
title: "物料名称",
|
dataIndex: "productName",
|
key: "productName",
|
width: 130,
|
align: "center",
|
// searchAble: true,
|
noSearch: true,
|
customCell: this.customCell,
|
},
|
{
|
title: "型号",
|
dataIndex: "type",
|
key: "type",
|
align: "center",
|
width: 180,
|
noSearch: true,
|
customCell: this.customCell,
|
},
|
{
|
title: "厂商名称",
|
dataIndex: "provideName",
|
key: "provideName",
|
align: "center",
|
width: 180,
|
// searchAble: true,
|
noSearch: true,
|
customCell: this.customCell,
|
},
|
{
|
title: "入料时间",
|
dataIndex: "startTimeEx",
|
key: "startTimeEx",
|
align: "center",
|
width: 160,
|
searchAble: true,
|
dataType: "dateRange",
|
customCell: this.customCell,
|
},
|
{
|
title: "创建人",
|
dataIndex: "recorder",
|
align: "center",
|
width: 160,
|
searchAble: true,
|
dataType: "select",
|
search: {
|
default: "",
|
selectOptions: [],
|
},
|
customCell: this.customCell,
|
},
|
{
|
title: "状态",
|
dataIndex: "status",
|
align: "center",
|
searchAble: true,
|
dataType: "select",
|
search: {
|
default: "",
|
selectOptions: [
|
{
|
title: "全部",
|
value: "",
|
},
|
{
|
title: "未处理",
|
value: 0,
|
},
|
{
|
title: "处理中",
|
value: 1,
|
},
|
{
|
title: "已完成",
|
value: 2,
|
},
|
{
|
title: "归档",
|
value: 3,
|
},
|
],
|
},
|
customCell: this.customCell,
|
},
|
{
|
title: "总数量",
|
dataIndex: "sumProduct",
|
align: "center",
|
// searchAble: true,
|
noSearch: true,
|
// visible: false,
|
},
|
{
|
title: "不良数",
|
dataIndex: "badProduct",
|
align: "center",
|
// searchAble: true,
|
noSearch: true,
|
// visible: false,
|
customCell: this.customCell,
|
},
|
{
|
title: "不良描述",
|
dataIndex: "content",
|
align: "center",
|
// searchAble: true,
|
noSearch: true,
|
// visible: false,
|
customCell: this.customCell,
|
},
|
{
|
title: "操作",
|
dataIndex: "operation",
|
key: "operation",
|
align: "center",
|
width: 228,
|
fixed: "right",
|
scopedSlots: { customRender: "action" },
|
noSearch: true,
|
},
|
],
|
dataSource: [],
|
};
|
},
|
components: {
|
AdvanceTable,
|
// ChangeParts,
|
filesList,
|
ProdUpload,
|
DisposeUpload,
|
DrawUpload,
|
DiffList,
|
FeedbackForm,
|
DownloadReason,
|
DownloadLogs,
|
OwnerDownload,
|
Pop,
|
popInfo,
|
},
|
methods: {
|
cellMouseenter(e, obj) {
|
// console.log("enter", e, obj);
|
const wraper = this.$refs.wraper;
|
const { clientHeight, clientWidth } = wraper;
|
const { target, clientX, clientY } = e;
|
let { left: x, top: y } = offset(wraper);
|
x = clientX - x;
|
y = clientY - y;
|
// 如果clientHeight 小于380 * 2 则左右布局
|
let dir = "bottom";
|
if (clientHeight < 380 * 2) {
|
if (x + 420 + 18 > clientWidth) {
|
dir = "left";
|
} else {
|
dir = "right";
|
}
|
if (y < 180) {
|
y = 180;
|
} else if (y > clientHeight - 378) {
|
y = clientHeight / 2;
|
}
|
} else {
|
if (y + 18 + 360 > clientHeight) {
|
// y = clientHeight - 378;
|
dir = "top";
|
} else {
|
dir = "bottom";
|
}
|
if (x < 300) {
|
x = 300;
|
}
|
if (x + 300 > clientWidth) {
|
x = clientWidth - 300;
|
}
|
}
|
this.popPosition.x = x;
|
this.popPosition.y = y;
|
this.popPosition.dir = dir;
|
this.popInfo = obj;
|
this.popVisible = true;
|
},
|
cellMouseleave(e, obj) {
|
// console.log("leave", obj);
|
this.popVisible = false;
|
},
|
customCell(record) {
|
return {
|
on: {
|
mouseenter: (e) => this.cellMouseenter(e, record),
|
mouseleave: (e) => this.cellMouseleave(e, record),
|
},
|
};
|
},
|
rowClassFn(record) {
|
let classList = [];
|
classList.push("level-" + record.confirmStatus);
|
return classList;
|
},
|
dispose(record) {
|
this.currentData = record;
|
this.disposeVisible = true;
|
},
|
canView(fileName) {
|
let arr = fileName.split(".");
|
let fileType = arr.length ? arr[arr.length - 1].toLowerCase() : "";
|
return [
|
"bmp",
|
"jpg",
|
"jpeg",
|
"gif",
|
"png",
|
"pdf",
|
"doc",
|
"docx",
|
"dwg",
|
].some((v) => v == fileType);
|
},
|
view(fileName, url) {
|
let arr = fileName.split(".");
|
let fileType = arr.length ? arr[arr.length - 1].toLowerCase() : "";
|
switch (fileType) {
|
// 图片
|
case "bmp":
|
case "jpg":
|
case "jpeg":
|
case "gif":
|
case "png":
|
this.imgUrl = this.webUrl + url + fileName;
|
this.previewVisible = true;
|
break;
|
case "pdf":
|
window.open(this.webUrl + url + fileName);
|
break;
|
case "doc":
|
case "docx":
|
case "dwg":
|
this.dwgReview(url + fileName);
|
break;
|
default:
|
this.$message.warn("该类型文件暂不支持预览");
|
break;
|
}
|
},
|
handleCancel() {
|
this.previewVisible = false;
|
},
|
downloadOther(fileName, url) {
|
let link = document.createElement("a");
|
link.style.display = "none";
|
link.href = this.webUrl + url + fileName;
|
link.download = fileName;
|
document.body.appendChild(link);
|
link.click();
|
document.body.removeChild(link);
|
},
|
stopDefective(record) {
|
// console.log("record", record, "=============");
|
const self = this;
|
this.$confirm({
|
title: "请确认",
|
content: "请确认是否进行归档操作?",
|
onOk() {
|
stopDefective(record.id)
|
.then((res) => {
|
let { code, data } = res.data;
|
if (code && data) {
|
self.$message.success("操作成功");
|
} else {
|
self.$message.error("操作失败");
|
}
|
})
|
.catch((err) => {
|
console.log(err);
|
});
|
},
|
onCancel() {},
|
});
|
},
|
onSearch(conditions, searchOptions) {
|
// console.log(conditions);
|
// console.log(searchOptions);
|
this.pageCurr = 1;
|
this.conditions = conditions;
|
this.sendMessage();
|
},
|
onPageChange(page, pageSize) {
|
this.pageCurr = page;
|
this.pageSize = pageSize;
|
this.sendMessage();
|
},
|
onSizeChange(current, size) {
|
this.pageCurr = 1;
|
this.pageSize = size;
|
this.sendMessage();
|
},
|
onRefresh(conditions) {
|
this.conditions = conditions;
|
this.sendMessage();
|
},
|
onReset(conditions) {
|
this.conditions = conditions;
|
this.sendMessage();
|
},
|
showFileList(record) {
|
let { nameList, fileUrl } = record;
|
// let baseUrl = this.webUrl;
|
this.fileList = nameList.map((v) => fileUrl + v);
|
this.otherFilesVisible = true;
|
},
|
searchData(res) {
|
if (res) {
|
// res = res.data;
|
// console.log(res, "======");
|
let data = [];
|
let total = 0;
|
if (res.code && res.data) {
|
data = res.data2.list.map((v) => {
|
v.status = ["未处理", "处理中", "已完成", "归档"][v.confirmStatus];
|
v.recorder = v.senderName;
|
return v;
|
});
|
total = res.data2.total;
|
}
|
this.dataSource = data;
|
this.total = total;
|
if (-1 == this.update) {
|
this.update = Math.random();
|
}
|
}
|
},
|
resize() {
|
setTimeout(() => {
|
this.update = Math.random();
|
}, 200);
|
},
|
onWSOpen() {
|
this.$nextTick(() => {
|
this.sendMessage();
|
});
|
},
|
sendMessage() {
|
if (!this.isWSOpen) {
|
return false;
|
}
|
const { pageCurr, pageSize, conditions, columns } = this;
|
let params = {};
|
let col, index;
|
Object.keys(conditions).forEach((v) => {
|
switch (v) {
|
case "startTimeEx":
|
if (conditions[v]) {
|
if (conditions[v][0]) {
|
params["startTime"] =
|
moment(conditions[v][0]).format("YYYY-MM-DD") + " 00:00:00";
|
}
|
if (conditions[v][1]) {
|
params["endTime"] =
|
moment(conditions[v][1]).format("YYYY-MM-DD") + " 23:59:59";
|
}
|
}
|
break;
|
case "status":
|
if ("" !== conditions[v]) {
|
params["confirmStatus"] = conditions[v];
|
}
|
break;
|
case "recorder":
|
if ("" !== conditions[v]) {
|
params["senderId"] = conditions[v];
|
}
|
break;
|
default:
|
params[v] = conditions[v];
|
break;
|
}
|
});
|
let data = {
|
pageSize,
|
pageCurr,
|
...params,
|
};
|
// console.log("=====9=", data, JSON.stringify(data));
|
this.SOCKET.send(JSON.stringify(data));
|
},
|
onWSMessage(res) {
|
res = JSON.parse(res.data);
|
// // console.log(res, "=====111data");
|
this.searchData(res);
|
},
|
activeFN() {
|
this.resize();
|
},
|
uploadDefective() {
|
this.bomUploadShow = true;
|
},
|
disposeCancel() {
|
this.disposeVisible = false;
|
},
|
disposeOk() {
|
this.disposeVisible = false;
|
},
|
bomUploadCancel() {
|
this.bomUploadShow = false;
|
},
|
bomUploadOk() {
|
this.bomUploadShow = false;
|
// 调用sendMessage 更新列表
|
this.pageCurr = 1;
|
this.sendMessage();
|
},
|
viewLog(obj) {
|
// console.log(obj);
|
this.logList = obj.hisList;
|
this.logVisible = true;
|
},
|
logCancel() {
|
this.logVisible = false;
|
},
|
searchAllUserList() {
|
getUserList()
|
.then((res) => {
|
let rs = res.data;
|
if (rs.code && rs.data) {
|
let list = rs.data2
|
.map((v) => ({ title: v.name, value: v.id }))
|
.filter((v) => v.title != this.user.name);
|
list.unshift(
|
{ title: "全部", value: "" },
|
{ title: this.user.name, value: this.user.id }
|
);
|
this.columns.forEach((v) => {
|
if (v.dataIndex == "recorder") {
|
v.search.selectOptions = list;
|
}
|
});
|
}
|
})
|
.catch((error) => {
|
console.log(error);
|
});
|
},
|
},
|
watch: {
|
update(n) {
|
if (-1 != n && !this._inactive) {
|
this.$nextTick(() => {
|
const table = this.$refs.table;
|
const header = document.querySelectorAll(
|
".doc-center-table .ant-table-header"
|
)[0].clientHeight;
|
const bar = document.querySelectorAll(".header-bar")[0].clientHeight;
|
if (table.fullScreen) {
|
this.y = table.$el.clientHeight - bar - header - 64;
|
} else {
|
const wraper = this.$refs.wraper.clientHeight;
|
const card = document.querySelectorAll(".ant-card-body")[0];
|
const { paddingBottom, paddingTop } = getComputedStyle(card, null);
|
const h =
|
wraper -
|
header -
|
64 -
|
bar -
|
parseInt(paddingBottom) -
|
parseInt(paddingTop);
|
// console.log(h, "h",wraper, header, bar );
|
this.y = h;
|
}
|
});
|
}
|
},
|
affixed() {
|
setTimeout(() => {
|
this.update = Math.random();
|
}, 200);
|
},
|
},
|
computed: {
|
...mapGetters("account", [
|
"roles",
|
"projectManagerList",
|
"generalManagerList",
|
"permits",
|
"user",
|
]),
|
...mapGetters("setting", ["affixed"]),
|
canDownloadBom() {
|
return checkPermit(PERMITS.downloadBom, this.permits);
|
},
|
canFeedback() {
|
return checkPermit(PERMITS.feedback, this.permits);
|
},
|
abLabel() {
|
let num = this.abTbl.dataSource.length;
|
num = num > 99 ? "99+" : num;
|
return "异常(" + num + ")";
|
},
|
errorLabel() {
|
let num = this.errorTbl.dataSource.length;
|
num = num > 99 ? "99+" : num;
|
return "错误(" + num + ")";
|
},
|
abState() {
|
let result = false;
|
if (this.abTbl.dataSource.length != 0) {
|
if (this.abTbl.ignore) {
|
result = false;
|
} else {
|
result = true;
|
}
|
} else {
|
result = false;
|
}
|
|
return result;
|
},
|
submitState() {
|
let result = {
|
code: 0,
|
msg: "存在异常或错误的数据,请修复后再提交",
|
};
|
if (this.abState) {
|
result.code = 1;
|
} else {
|
result.code = 0;
|
}
|
|
if (this.errorTbl.dataSource.length != 0) {
|
result.code = 1;
|
}
|
|
return result;
|
},
|
isTester() {
|
return this.tester.some((v) => v == this.user.name);
|
},
|
},
|
mounted() {
|
this.searchAllUserList();
|
this.sendMessage();
|
window.addEventListener("resize", this.resize);
|
},
|
destroyed() {
|
window.removeEventListener("resize", this.resize);
|
},
|
};
|
</script>
|
|
<style scoped lang="less">
|
.main {
|
height: 100%;
|
position: relative;
|
|
.inner {
|
position: absolute;
|
left: 0;
|
top: 0;
|
right: 0;
|
bottom: 0;
|
}
|
}
|
|
.img-wraper {
|
width: 80px;
|
height: 50px;
|
display: inline-block;
|
|
.image-view {
|
width: 100%;
|
height: 100%;
|
|
/deep/img {
|
width: 100%;
|
height: 100%;
|
object-fit: contain;
|
}
|
}
|
}
|
|
/deep/table {
|
table-layout: fixed;
|
}
|
|
.text-right {
|
text-align: right;
|
|
span::after {
|
content: ":";
|
position: relative;
|
top: -0.5px;
|
margin: 0 8px 0 2px;
|
}
|
}
|
|
.upload {
|
padding: 10px 0;
|
}
|
|
.modal-footer {
|
text-align: right;
|
|
button + button {
|
margin-left: 8px;
|
}
|
}
|
|
.mt8 {
|
margin-top: 8px;
|
}
|
|
.from {
|
width: 100%;
|
}
|
|
.label {
|
display: flex;
|
justify-content: flex-end;
|
padding-right: 1em;
|
align-items: center;
|
}
|
|
.bom-list /deep/ .ant-card-body {
|
padding: 8px 24px;
|
}
|
|
.log-content {
|
max-height: 400px;
|
overflow-y: auto;
|
|
.user {
|
color: #23aaf2;
|
font-weight: 700;
|
}
|
|
.rest,
|
.time {
|
color: #f9be13;
|
font-weight: 700;
|
}
|
|
.version {
|
color: #0aedb2;
|
font-weight: 700;
|
}
|
|
.ant-timeline-item:first-of-type {
|
padding-top: 6px;
|
}
|
}
|
|
.table-title {
|
font-weight: 700;
|
color: #13c2c2;
|
}
|
|
.btn-grp .ant-btn {
|
min-width: 6.4em;
|
}
|
/deep/.level-1 > td {
|
background: #fec54b;
|
}
|
/deep/.level-1.level-1.level-1.ant-table-row-hover > td,
|
/deep/.level-1.level-1.level-1:hover > td {
|
background: #fcd583;
|
}
|
/deep/.level-0 > td {
|
background: #fca4b3;
|
}
|
/deep/.level-0.level-0.level-0.ant-table-row-hover > td,
|
/deep/.level-0.level-0.level-0:hover > td {
|
background: #f6c4cc;
|
}
|
/deep/.level-2 > td {
|
background: #7bfd7b;
|
}
|
/deep/.level-2.level-2.level-2.ant-table-row-hover > td,
|
/deep/.level-2.level-2.level-2:hover > td {
|
background: #b2fbbd;
|
}
|
.others {
|
display: flex;
|
align-items: flex-start;
|
.label {
|
margin-right: 0.4em;
|
&::after {
|
content: ":";
|
}
|
}
|
.content {
|
flex: 1;
|
.item {
|
display: flex;
|
align-items: center;
|
margin-bottom: 0.4em;
|
.file-name {
|
flex: 1;
|
text-align: right;
|
padding-right: 0.6em;
|
}
|
.btn {
|
& + .btn {
|
margin-left: 0.4em;
|
}
|
}
|
}
|
}
|
}
|
</style>
|
|
<style lang="less">
|
.full-modal {
|
height: 100%;
|
.ant-modal {
|
max-width: 100%;
|
height: 100%;
|
top: 0;
|
padding-bottom: 0;
|
margin: 0;
|
}
|
.ant-modal-content {
|
display: flex;
|
flex-direction: column;
|
height: 100%;
|
overflow: hidden;
|
// height: calc(100vh);
|
}
|
.ant-modal-body {
|
flex: 1;
|
}
|
}
|
</style>
|