<template>
|
<div class="divBox relative vehicle-queue">
|
<el-card class="box-card">
|
<div
|
slot="header"
|
class="clearfix"
|
>
|
<el-tabs
|
v-model="tableFrom.areaId"
|
@tab-click="handleChangeArea"
|
>
|
<el-tab-pane
|
v-for="(item, index) in headeNum"
|
:key="index"
|
:label="item.name"
|
:name="item.id.toString()"
|
/>
|
</el-tabs>
|
|
<div
|
v-if="stsList.length > 0"
|
class="sts-contanier"
|
>
|
<div
|
v-for="item in stsList"
|
:key="item.title"
|
class="sts-box"
|
>
|
<div class="sts-num">
|
{{ item.num }}
|
</div>
|
<div class="sts-title">
|
{{ item.title }}
|
</div>
|
</div>
|
</div>
|
<div class="container mt-1">
|
<el-form
|
inline
|
size="small"
|
>
|
<el-form-item label="排队号码">
|
<el-input
|
v-model="tableFrom.queueNumber"
|
placeholder="请输入排队号码"
|
class="selWidth"
|
size="small"
|
clearable
|
/>
|
</el-form-item>
|
<el-form-item label="手机号">
|
<el-input
|
v-model="tableFrom.phone"
|
placeholder="请输入手机号"
|
class="selWidth"
|
size="small"
|
clearable
|
/>
|
</el-form-item>
|
|
<el-form-item>
|
<el-button
|
v-hasPermi="['admin:vehicle:queue']"
|
size="small"
|
type="primary"
|
class="mr10"
|
@click="getList(1)"
|
>
|
查询
|
</el-button>
|
</el-form-item>
|
</el-form>
|
</div>
|
</div>
|
<el-table
|
:key="tableKey"
|
v-loading="listLoading"
|
:data="tableData.data"
|
style="width: 100%"
|
size="mini"
|
:highlight-current-row="true"
|
:cell-style="{ textAlign: 'center' }"
|
:header-cell-style="{ fontWeight: 'bold', textAlign: 'center' }"
|
>
|
<el-table-column
|
prop="queueNumber"
|
label="排队号码"
|
min-width="80"
|
/>
|
<el-table-column
|
prop="sort"
|
label="当前排序"
|
width="70"
|
/>
|
<el-table-column
|
prop="name"
|
label="姓名"
|
min-width="80"
|
/>
|
<el-table-column
|
prop="licensePlate"
|
label="车牌号"
|
width="90"
|
/>
|
<el-table-column
|
prop="phone"
|
label="手机号"
|
min-width="100"
|
/>
|
<el-table-column
|
prop="idCard"
|
label="身份证号"
|
min-width="150"
|
/>
|
<el-table-column
|
prop="loadingAreaName"
|
label="装卸区域"
|
min-width="70"
|
/>
|
<el-table-column
|
prop="orderTypeName"
|
label="订单类型"
|
min-width="70"
|
/>
|
<el-table-column
|
prop="loadUnloadQty"
|
label="装卸数量"
|
min-width="70"
|
/>
|
<el-table-column
|
prop="unitName"
|
label="单位"
|
min-width="50"
|
/>
|
<el-table-column
|
prop="vehicleStatusName"
|
label="车辆状态"
|
min-width="100"
|
>
|
<template slot-scope="scope">
|
<div class="center">
|
<div>{{ scope.row.vehicleStatusName }}</div>
|
<template
|
v-if="
|
scope.row.vehicleStatusCode == 1256 ||
|
scope.row.vehicleStatusCode == 1257
|
"
|
>
|
<el-tooltip
|
v-if="handleCompareTime(currentTime, scope.row.callTime)"
|
:content="getOverTip(currentTime, scope.row.callTime)"
|
placement="top"
|
>
|
<img
|
class="over-img"
|
src="../../../assets/imgs/over.svg"
|
alt=""
|
>
|
</el-tooltip>
|
</template>
|
</div>
|
</template>
|
</el-table-column>
|
|
<el-table-column
|
prop="goodsStatusName"
|
label="货物状态"
|
min-width="70"
|
/>
|
<el-table-column
|
prop="reasonName"
|
label="事由"
|
min-width="60"
|
/>
|
|
<el-table-column
|
label="登记时间"
|
width="135"
|
align="center"
|
>
|
<template slot-scope="scope">
|
<span>{{ scope.row.registerTime | vformatDate }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column
|
label="操作"
|
min-width="200"
|
fixed="right"
|
align="center"
|
>
|
<template slot-scope="scope">
|
<!-- <el-button
|
type="text"
|
size="small"
|
class="mr10"
|
@click="handleCreateCode(scope.row)"
|
>生成二维码</el-button
|
> -->
|
<el-button
|
v-hasPermi="['admin:vehicle:print']"
|
type="text"
|
size="small"
|
class="mr10"
|
@click="handlePrintVehicle(scope.row)"
|
>
|
打印
|
</el-button>
|
<el-button
|
v-hasPermi="['admin:vehicle:sort']"
|
type="text"
|
size="small"
|
class="mr10"
|
@click="handleChangeSort(scope.row)"
|
>
|
调整排序
|
</el-button>
|
<el-dropdown trigger="click">
|
<span class="el-dropdown-link">
|
更多<i class="el-icon-arrow-down el-icon--right" />
|
</span>
|
<el-dropdown-menu slot="dropdown">
|
<el-dropdown-item
|
v-if="scope.row.vehicleStatusCode == 1256"
|
@click.native="handleMoreAction(0, scope.row)"
|
>
|
发送短信提醒
|
</el-dropdown-item>
|
<el-dropdown-item
|
v-if="
|
checkPermi(['admin:vehicle:call']) &&
|
scope.row.vehicleStatusCode == 1255
|
"
|
@click.native="handleMoreAction(1, scope.row)"
|
>
|
手动叫号
|
</el-dropdown-item>
|
<el-dropdown-item
|
v-if="
|
checkPermi(['admin:vehicle:pass']) &&
|
scope.row.vehicleStatusCode == 1256
|
"
|
@click.native="handleMoreAction(2, scope.row)"
|
>
|
标记为已过号
|
</el-dropdown-item>
|
<el-dropdown-item
|
v-if="
|
checkPermi(['admin:vehicle:reQueue']) &&
|
scope.row.vehicleStatusCode == 1257
|
"
|
@click.native="handleMoreAction(3, scope.row)"
|
>
|
重新排队
|
</el-dropdown-item>
|
</el-dropdown-menu>
|
</el-dropdown>
|
</template>
|
</el-table-column>
|
</el-table>
|
<div class="block">
|
<el-pagination
|
:page-sizes="[20, 40, 60, 80]"
|
:page-size="tableFrom.limit"
|
:current-page="tableFrom.page"
|
layout="total, sizes, prev, pager, next, jumper"
|
:total="tableData.total"
|
@size-change="handleSizeChange"
|
@current-change="pageChange"
|
/>
|
</div>
|
<el-dialog
|
class="change-sort"
|
title="调整排序"
|
:visible.sync="editDialogConfig.visible"
|
destroy-on-close
|
:close-on-click-modal="false"
|
>
|
<edit
|
v-if="editDialogConfig.visible"
|
:edit-data="editDialogConfig.editData"
|
:is-re-queue="editDialogConfig.isReQueue"
|
@hideEditDialog="hideEditDialog"
|
@editSuccess="handleReloadData"
|
/>
|
</el-dialog>
|
</el-card>
|
<el-card v-show="false">
|
<div class="print-dom">
|
<div
|
v-if="printInfo"
|
id="printArea"
|
class="print-dom-box"
|
>
|
<div class="title">
|
出入证信息
|
</div>
|
<div class="code-title">
|
排队号码
|
</div>
|
<div class="code-code">
|
{{ printInfo.queueNumber }}
|
</div>
|
<div class="code-wait">
|
前方还有{{ printInfo.currentWaitNum }}辆车排队中...
|
</div>
|
<div class="qrcode-code">
|
<qrcode
|
v-if="printInfo.visible"
|
:size="160"
|
:qr-url="printInfo.url"
|
/>
|
</div>
|
<div class="qrcode-text">
|
微信扫码查看排队进度
|
</div>
|
<div class="line" />
|
<div class="cell">
|
<div class="cell-label">
|
姓名
|
</div>
|
<div class="cell-value">
|
{{ printInfo.name }}
|
</div>
|
</div>
|
<div class="cell">
|
<div class="cell-label">
|
车牌号
|
</div>
|
<div class="cell-value">
|
{{ printInfo.licensePlate }}
|
</div>
|
</div>
|
<div class="cell">
|
<div class="cell-label">
|
手机号
|
</div>
|
<div class="cell-value">
|
{{ printInfo.phone }}
|
</div>
|
</div>
|
<div class="cell">
|
<div class="cell-label">
|
身份证号码
|
</div>
|
<div class="cell-value">
|
{{ printInfo.idCard }}
|
</div>
|
</div>
|
<div class="cell">
|
<div class="cell-label">
|
装卸数量
|
</div>
|
<div class="cell-value">
|
{{ printInfo.loadUnloadQty }}
|
</div>
|
</div>
|
<div class="cell">
|
<div class="cell-label">
|
单位
|
</div>
|
<div class="cell-value">
|
{{ printInfo.unitName }}
|
</div>
|
</div>
|
<div class="cell">
|
<div class="cell-label">
|
装卸区域
|
</div>
|
<div class="cell-value">
|
{{ printInfo.loadingAreaName }}
|
</div>
|
</div>
|
<div class="cell">
|
<div class="cell-label">
|
登记时间
|
</div>
|
<div class="cell-value">
|
{{ printInfo.registerTime }}
|
</div>
|
</div>
|
<div class="cell">
|
<div class="cell-label">
|
备注
|
</div>
|
<div class="cell-value over-line">
|
{{ printInfo.remark }}
|
</div>
|
</div>
|
</div>
|
</div>
|
</el-card>
|
<!-- 二维码 -->
|
<el-dialog
|
class="qrcode-dialog"
|
:visible.sync="qrcodeDialogConfig.visible"
|
title="二维码"
|
destroy-on-close
|
:close-on-click-modal="false"
|
width="380px"
|
>
|
<div class="qrcodebox-container">
|
<qrcode
|
v-if="qrcodeDialogConfig.visible"
|
:qr-url="qrcodeDialogConfig.url"
|
:show-text="qrcodeDialogConfig.text"
|
/>
|
</div>
|
</el-dialog>
|
</div>
|
</template>
|
|
<script>
|
import {
|
getVehicleQueueListApi,
|
putQueueCallNumberApi,
|
putQueuePassNumberApi,
|
getVehicleStsInfoApi,
|
getPrintVehcicleInfoApi,
|
sendSmsApi,
|
} from "@/api/vehicle";
|
import * as systemGroupDataApi from "@/api/systemGroupData.js";
|
import edit from "./edit";
|
import { formatDates } from "@/utils/index";
|
import qrcode from "@/components/qrcode/index.vue";
|
import { checkPermi } from "@/utils/permission"; // 权限判断函数
|
import printJS from "print-js";
|
import printCss from "../registration/printCss";
|
|
const tipsArr = ["发送短信提醒成功", "手动叫号成功", "标记已过号成功"];
|
const modelArr = ["发送短信提醒", "手动叫号", "标记已过号"];
|
export default {
|
name: "Queuing",
|
components: { edit, qrcode },
|
data() {
|
return {
|
headeNum: [],
|
listLoading: true,
|
tableData: {
|
data: [],
|
total: 0,
|
},
|
qrcodeDialogConfig: {
|
visible: false,
|
text: "",
|
url: "",
|
},
|
tableFrom: {
|
page: 1,
|
limit: 20,
|
areaId: "",
|
phone: "",
|
queueNumber: "",
|
},
|
editDialogConfig: {
|
visible: false,
|
isReQueue: false,
|
data: {},
|
},
|
stsList: [],
|
currentTime: undefined,
|
tableKey: 0,
|
// websocket ---
|
// 重连-弹窗数据
|
reconnectFlag: false, // 失败弹窗标识
|
reconnectFlagWeb: false, // 无法重连弹窗标识
|
reconnectNum: 0, // 重连次数初始值
|
|
isBegin: true, // 是否初次分页
|
heartTimeout: 30000, // 心跳检查时间--
|
heartTimeoutObj: null,
|
heartServerTimeoutObj: null,
|
|
overTimeObj: null,
|
|
// wsUrl: "wss://car-manager.truekey.mobi/admin/lineup",
|
wsUrl: "ws://1.15.17.182:9031/admin/lineup",
|
ws: null,
|
lockReconnect: false, // 是否连接成功
|
|
showPrint: false,
|
printInfo: undefined,
|
};
|
},
|
mounted() {
|
if (process.env.NODE_ENV === "production") {
|
let url = "http://1.15.17.182:9031/time";
|
// let url = "https://car-manager.truekey.mobi/time";
|
fetch(url, {
|
method: "GET",
|
headers: {
|
"Content-Type": "application/json",
|
},
|
})
|
.then((data) => {
|
return data.json();
|
})
|
.then((res) => {
|
this.currentTime = res.currentTime;
|
this.goodHeade();
|
});
|
} else {
|
this.currentTime = this.getCurrentDate();
|
this.goodHeade();
|
}
|
|
this.createWebSocket();
|
this.checkOverNum();
|
},
|
methods: {
|
// 初始化
|
reset() {
|
this.getList(1);
|
this.getStsInfo(this.tableFrom.areaId);
|
},
|
checkPermi,
|
//调整排序
|
handleChangeSort(item) {
|
this.editDialogConfig.editData = item;
|
this.editDialogConfig.isReQueue = false;
|
this.editDialogConfig.visible = true;
|
},
|
//关闭弹窗
|
hideEditDialog() {
|
this.editDialogConfig.visible = false;
|
},
|
handleReloadData() {
|
this.editDialogConfig.visible = false;
|
this.getList(1);
|
},
|
//切换区域
|
handleChangeArea(tab) {
|
this.tableFrom.areaId = tab.name;
|
this.getList(1);
|
this.getStsInfo();
|
},
|
handlePrintVehicle(item) {
|
let that = this;
|
getPrintVehcicleInfoApi({ queueNumber: item.queueNumber }).then((res) => {
|
that.printInfo = undefined;
|
let newEl = {};
|
newEl.queueNumber = res.queueNumber || "-";
|
if (res.currentWaitNum && res.currentWaitNum > 0) {
|
newEl.currentWaitNum = res.currentWaitNum;
|
} else {
|
newEl.currentWaitNum = 0;
|
}
|
newEl.name = res.name || "-";
|
newEl.licensePlate = res.licensePlate || "-";
|
newEl.phone = res.phone || "-";
|
newEl.idCard = res.idCard || "-";
|
newEl.loadUnloadQty = res.loadUnloadQty || "-";
|
newEl.unitName = res.unitName || "-";
|
newEl.loadingAreaName = res.loadingAreaName || "-";
|
newEl.registerTime = res.registerTime || "-";
|
newEl.remark = res.remark || "-";
|
// newEl.url = `https://car-manager.truekey.mobi/driver/javaMobile/queryResult/${res.linkCode}`;
|
newEl.url = `http://1.15.17.182:9033/driver/javaMobile/queryResult/${res.linkCode}`;
|
newEl.visible = true;
|
|
setTimeout(() => {
|
that.printInfo = newEl;
|
setTimeout(() => {
|
that.startPrint();
|
}, 200);
|
}, 200);
|
});
|
},
|
startPrint() {
|
printJS({
|
printable: "printArea",
|
type: "html",
|
maxWidth: "100%",
|
// targetStyles: ['*'],
|
style: printCss(),
|
scanStyles: false,
|
// style:".title { font-size: 20px}"
|
});
|
},
|
|
handleMoreAction(type, item) {
|
let that = this;
|
if (type == 0) {
|
this.$modalSure("发送短信提醒吗?").then(() => {
|
sendSmsApi(item.id)
|
.then(() => {
|
that.getList(1);
|
that.listLoading = false;
|
that.$message.success(tipsArr[type]);
|
})
|
.catch(() => {
|
that.listLoading = false;
|
});
|
});
|
} else if (type == 3) {
|
//重新排队 默认延后5辆车
|
let pItem = JSON.parse(JSON.stringify(item));
|
pItem.sort = item.sort + 5;
|
this.editDialogConfig.editData = pItem;
|
this.editDialogConfig.isReQueue = true;
|
this.editDialogConfig.visible = true;
|
} else {
|
this.$modalSure(`${modelArr[type]}吗?`).then(() => {
|
that.listLoading = true;
|
const api = ["", putQueueCallNumberApi, putQueuePassNumberApi][type];
|
api(type == 1 ? item.id : item.masterId)
|
.then(() => {
|
this.getList(1);
|
that.listLoading = false;
|
that.$message.success(tipsArr[type]);
|
})
|
.catch(() => {
|
that.listLoading = false;
|
});
|
});
|
}
|
},
|
checkOverNum() {
|
let that = this;
|
if (that.overTimeObj) {
|
clearTimeout(that.overTimeObj);
|
that.overTimeObj = null;
|
}
|
|
that.overTimeObj = setTimeout(function () {
|
//赋值当前时间,刷新列表显示
|
that.reloadOverTime();
|
}, 60000);
|
},
|
reloadOverTime() {
|
let that = this;
|
let url = "http://1.15.17.182:9031/time";
|
// let url = "https://car-manager.truekey.mobi/time";
|
fetch(url, {
|
method: "GET",
|
headers: {
|
"Content-Type": "application/json",
|
},
|
})
|
.then((data) => {
|
return data.json();
|
})
|
.then((res) => {
|
this.currentTime = res.currentTime;
|
setTimeout(() => {
|
that.tableKey += 1;
|
that.checkOverNum();
|
}, 200);
|
});
|
},
|
handleCompareTime(date1, date2) {
|
let time1 = new Date(date1).getTime()
|
? new Date(date1).getTime()
|
: new Date().getTime(); //当前时间
|
let time2 = new Date(date2).getTime();
|
if (time1 > time2 + this.overtime * 60 * 1000) {
|
return true;
|
}
|
return false;
|
},
|
getOverTip(date1, date2) {
|
let time1 = new Date(date1).getTime()
|
? new Date(date1).getTime()
|
: new Date().getTime(); //当前时间
|
let time2 = new Date(date2).getTime();
|
|
let over = (time1 - time2) / 1000 / 60;
|
return `入厂超时,已等待司机入厂${Math.ceil(over)}分钟`;
|
},
|
getCurrentDate() {
|
const date = new Date();
|
return formatDates(date, "yyyy-MM-dd HH:mm:ss");
|
},
|
// 获取区域列表
|
goodHeade() {
|
// 获取超时时长
|
systemGroupDataApi
|
.groupDataList({ gid: 84 })
|
.then((data) => {
|
data.list.forEach((_lItem) => {
|
_lItem.value = JSON.parse(_lItem.value);
|
const _fields = _lItem.value.fields;
|
_fields.map((item) => {
|
if (_lItem.status) {
|
this.overtime = item.value;
|
}
|
});
|
});
|
})
|
.catch((res) => {
|
this.$message.error(res.message);
|
});
|
|
systemGroupDataApi
|
.groupDataList({ gid: 74 })
|
.then((data) => {
|
const _selfList = [];
|
data.list.forEach((_lItem) => {
|
_lItem.value = JSON.parse(_lItem.value);
|
const _fields = _lItem.value.fields;
|
const _rowData = {};
|
_fields.map((item) => {
|
_rowData[item.name] = item.value;
|
});
|
_rowData.id = _lItem.id;
|
if (_lItem.status) {
|
_selfList.push(_rowData);
|
}
|
});
|
|
this.headeNum = _selfList;
|
this.tableFrom.areaId = this.headeNum[0].id.toString();
|
this.getList(1);
|
this.getStsInfo(this.tableFrom.areaId);
|
})
|
.catch((res) => {
|
this.$message.error(res.message);
|
});
|
},
|
// 列表
|
getList(page) {
|
this.listLoading = true;
|
this.tableFrom.page = page ? page : this.tableFrom.page;
|
|
getVehicleQueueListApi(this.tableFrom)
|
.then((res) => {
|
this.tableData.data = res.list;
|
this.tableData.total = res.total;
|
this.listLoading = false;
|
})
|
.catch((res) => {
|
this.listLoading = false;
|
this.$message.error(res.message);
|
});
|
},
|
getStsInfo() {
|
getVehicleStsInfoApi({
|
areaId: this.tableFrom.areaId,
|
})
|
.then((res) => {
|
this.stsList = [
|
{ title: "区域最大数量", num: res.maxVehicleCount },
|
{ title: "等待数量", num: res.waitingVehicleCount },
|
{ title: "区域数量", num: res.currentVehicleCount },
|
{ title: "已发数量", num: res.shippedVehicleCount },
|
{
|
title: "登记数量",
|
num: res.currentLevelVehicleCount,
|
},
|
];
|
})
|
.catch(() => {});
|
},
|
pageChange(page) {
|
this.tableFrom.page = page;
|
this.getList();
|
},
|
handleSizeChange(val) {
|
this.tableFrom.limit = val;
|
this.getList();
|
},
|
|
// websocket
|
createWebSocket: function () {
|
this.lockReconnect = false;
|
let that = this;
|
try {
|
// console.log('websocket创建连接-----》成功')
|
if ("WebSocket" in window) {
|
that.ws = new WebSocket(that.wsUrl);
|
} else if ("MozWebSocket" in window && window.MozWebSocket) {
|
that.ws = new window.MozWebSocket(that.wsUrl);
|
} else {
|
alert(
|
"您的浏览器不支持websocket协议,建议使用新版谷歌、火狐等浏览器,请勿使用IE10以下浏览器,360浏览器请使用极速模式,不要使用兼容模式!"
|
);
|
}
|
if (that.ws) {
|
that.initEventHandle();
|
}
|
} catch (e) {
|
// console.log('websocket创建连接-----》失败')
|
that.lockReconnect = false;
|
that.reconnect();
|
}
|
},
|
initEventHandle() {
|
let that = this;
|
this.ws.onclose = () => {
|
that.lockReconnect = false;
|
that.reconnect();
|
};
|
this.ws.onerror = function () {
|
that.lockReconnect = false;
|
that.reconnect();
|
};
|
this.ws.onopen = () => {
|
that.ws.send("open_" + new Date() + Math.floor(Math.random() * 1000)); //发送日志
|
that.heartCheck();
|
};
|
this.ws.onmessage = (event) => {
|
//如果获取到消息,心跳检测重置
|
// console.log('websocket链接成功-----------》22',new Date())
|
that.heartCheck();
|
if (event.data === "pong") {
|
// console.log('ws-心跳检测成功')
|
}
|
if (event.data === "update") {
|
this.reset();
|
}
|
};
|
},
|
//没连接上会一直重连,设置延迟避免请求过多
|
reconnect() {
|
if (this.setTimerOut) {
|
clearTimeout(this.setTimerOut);
|
this.setTimerOut = null;
|
}
|
this.reconnectNum = this.reconnectNum + 1;
|
if (this.lockReconnect) {
|
return;
|
}
|
if (this.reconnectNum > 3 && this.reconnectNum <= 240) {
|
this.reconnectFlag = true;
|
this.lockReconnect = false;
|
this.setTimerOut = setTimeout(() => {
|
this.createWebSocket();
|
}, 10000);
|
} else if (this.reconnectNum > 240) {
|
this.reconnectFlag = false;
|
this.reconnectFlagWeb = true;
|
this.lockReconnect = false;
|
this.setTimerOut = setTimeout(() => {
|
this.createWebSocket();
|
}, 10000);
|
} else {
|
this.setTimerOut = setTimeout(() => {
|
this.createWebSocket();
|
this.isBegin = true;
|
this.reconnectFlag = false;
|
this.reconnectFlagWeb = false;
|
this.lockReconnect = false;
|
}, 10000);
|
}
|
},
|
heartCheck() {
|
let that = this;
|
if (that.heartTimeoutObj) {
|
clearTimeout(that.heartTimeoutObj);
|
that.heartTimeoutObj = null;
|
}
|
if (that.heartServerTimeoutObj) {
|
clearTimeout(that.heartServerTimeoutObj);
|
that.heartServerTimeoutObj = null;
|
}
|
that.heartTimeoutObj = setTimeout(function () {
|
//onmessage拿到返回的心跳就说明连接正常
|
// console.log(vm.ws)
|
that.ws.send("ping");
|
that.heartServerTimeoutObj = setTimeout(function () {
|
//如果超过一定时间还没重置,说明后端主动断开了
|
//如果onclose会执行reconnect,我们执行ws.close()就行了.如果直接执行reconnect 会触发onclose导致重连两次
|
that.ws.close();
|
}, that.heartTimeout * 2);
|
}, that.heartTimeout);
|
},
|
},
|
};
|
</script>
|
|
<style scoped lang="scss">
|
.sts-contanier {
|
display: flex;
|
justify-content: space-between;
|
margin: 40px 0;
|
.sts-box {
|
display: flex;
|
flex-direction: column;
|
align-items: center;
|
|
.sts-num {
|
font-size: 50px;
|
}
|
.sts-title {
|
font-size: 12px;
|
}
|
}
|
}
|
|
.el-dropdown-link {
|
cursor: pointer;
|
color: #409eff;
|
font-size: 12px;
|
}
|
.el-icon-arrow-down {
|
font-size: 12px;
|
}
|
|
.el-table__body {
|
width: 100%;
|
table-layout: fixed !important;
|
}
|
.taoBaoModal {
|
// z-index: 3333 !important;
|
}
|
.demo-table-expand {
|
::v-deep label {
|
width: 82px;
|
}
|
}
|
.demo-table-expand {
|
::v-deep .el-form-item__content {
|
width: 77%;
|
}
|
}
|
.selWidth {
|
width: 320px !important;
|
}
|
.seachTiele {
|
line-height: 30px;
|
}
|
.relative {
|
position: relative;
|
}
|
|
.vehicle-queue {
|
::v-deep .el-dialog {
|
width: 25% !important;
|
}
|
}
|
.qrcode-dialog {
|
::v-deep .el-dialog {
|
width: 340px !important;
|
}
|
}
|
.qrcodebox-container {
|
width: 300px !important;
|
}
|
.over-img {
|
margin-bottom: 2px;
|
margin-left: 2px;
|
width: 15px;
|
height: 15px;
|
}
|
.center {
|
display: flex;
|
align-items: center;
|
justify-content: center;
|
}
|
</style>
|