| | |
| | | <template>
|
| | | <div class="all">
|
| | | <div class="cluster-content">
|
| | | <div class="cluster-center" ref="left">
|
| | | <div class="menu-item" @click="openRight(0)">
|
| | | <div class="con">
|
| | | <span class="icon iconfont"></span>
|
| | | <span class="menu-text">系统更新</span>
|
| | | <div class="push-log" v-loading="loading" :element-loading-text="loadingText">
|
| | | <div class="top">
|
| | | <div class="first">
|
| | | <div class="time-option">
|
| | | <div class="title">周期:</div>
|
| | |
|
| | | <div class="opts">
|
| | | <div
|
| | | :class="activeDateChoise == i ? 'opt-active' : ''"
|
| | | class="opt"
|
| | | v-for="(item, i) in dateArr"
|
| | | :key="i"
|
| | | @click="choseRange(item, i)"
|
| | | >
|
| | | {{ item }}
|
| | | </div>
|
| | | </div>
|
| | | </div>
|
| | | <div class="menu-item" @click="openRight(1)">
|
| | | <div class="con">
|
| | | <span class="icon iconfont"></span>
|
| | |
|
| | | <span class="menu-text">更新设置</span>
|
| | | </div>
|
| | | <div class="search">
|
| | | <el-input
|
| | | placeholder="搜索"
|
| | | v-model="fuzzySearch"
|
| | | size="small"
|
| | | class="input-with-select"
|
| | | >
|
| | | <el-button
|
| | | slot="append"
|
| | | icon="el-icon-search"
|
| | | @click="getOperationLog(1)"
|
| | | ></el-button>
|
| | | </el-input>
|
| | | </div>
|
| | | </div>
|
| | | <div class="cluster-right">
|
| | | <div class="net-set" v-if="activePage == 0">
|
| | | <el-radio-group v-model="radio2" size="medium">
|
| | | <el-radio-button label="检查更新"></el-radio-button>
|
| | | <el-radio-button label="上传更新"></el-radio-button>
|
| | | </el-radio-group>
|
| | | <div class="second">
|
| | | <div class="bar">
|
| | | <div class="name">状态:</div>
|
| | |
|
| | | <div class="update-center" v-if="radio2 == '检查更新'">
|
| | | <div class="spin-bg"></div>
|
| | | <div class="line"></div>
|
| | | <div class="desc">{{ "检查到最新版本:1.0.2" }}</div>
|
| | | <el-button type="primary" size="small">更新</el-button>
|
| | | </div>
|
| | | <div class="upload-center" v-if="radio2 == '上传更新'">
|
| | | <!-- uploadPlaceholder="上传升级文件" -->
|
| | | <div class="top">
|
| | | <div class="up-text">上传更新文件</div>
|
| | | <fileUploader
|
| | | single
|
| | | url="/data/api-v/sysset/patchUpdate"
|
| | | @complete="onFileUpload"
|
| | | @file-added="onFileAdded"
|
| | | />
|
| | | <el-button
|
| | | type="primary"
|
| | | size="small"
|
| | | style="width: 80px"
|
| | | @click="upgrade"
|
| | | :disabled="!fileAdded"
|
| | | :loading="upgrading"
|
| | | >升级</el-button
|
| | | >
|
| | | </div>
|
| | |
|
| | | <div class="update-center">
|
| | | <div class="spin-bg"></div>
|
| | | <div class="line"></div>
|
| | | <div class="desc">{{ "检查到最新版本:1.0.2" }}</div>
|
| | | <el-button type="primary" size="small">更新</el-button>
|
| | | </div>
|
| | | <!-- <span v-html="patchUpdateStatus"></span> -->
|
| | | </div>
|
| | |
|
| | | <div class="cur-version">当前版本:{{ "1.0.1" }}</div>
|
| | | </div>
|
| | |
|
| | | <div class="wifi" v-if="activePage == 1">
|
| | | <div class="content">
|
| | | <div class="title">系统更新设置</div>
|
| | |
|
| | | <div class="bar">
|
| | | <div class="name">自动清理软件包缓存</div>
|
| | | <el-switch
|
| | | v-model="sys_auto_clear"
|
| | | active-color="rgba(61, 104, 225, 1)"
|
| | | @change="switchChange('sys_auto_clear')"
|
| | | >
|
| | | </el-switch>
|
| | | </div>
|
| | |
|
| | | <div class="bar">
|
| | | <div class="name">更新提醒</div>
|
| | | <el-switch
|
| | | v-model="sys_remind"
|
| | | active-color="rgba(61, 104, 225, 1)"
|
| | | @change="switchChange('sys_remind')"
|
| | | >
|
| | | </el-switch>
|
| | | </div>
|
| | |
|
| | | <div class="bar" v-if="sys_remind">
|
| | | <div class="name">自动下载更新</div>
|
| | | <el-switch
|
| | | v-model="sys_auto_download"
|
| | | active-color="rgba(61, 104, 225, 1)"
|
| | | @change="switchChange('sys_auto_download')"
|
| | | >
|
| | | </el-switch>
|
| | | </div>
|
| | | </div>
|
| | |
|
| | | <div class="content">
|
| | | <div class="title">应用/算法更新设置</div>
|
| | |
|
| | | <div class="bar">
|
| | | <div class="name">自动清理软件包缓存</div>
|
| | | <el-switch
|
| | | v-model="app_auto_clear"
|
| | | active-color="rgba(61, 104, 225, 1)"
|
| | | @change="switchChange('app_auto_clear')"
|
| | | >
|
| | | </el-switch>
|
| | | </div>
|
| | |
|
| | | <div class="bar">
|
| | | <div class="name">更新提醒</div>
|
| | | <el-switch
|
| | | v-model="app_remind"
|
| | | active-color="rgba(61, 104, 225, 1)"
|
| | | @change="switchChange('app_remind')"
|
| | | >
|
| | | </el-switch>
|
| | | </div>
|
| | |
|
| | | <div class="bar" v-if="app_remind">
|
| | | <div class="name">自动下载更新</div>
|
| | | <el-switch
|
| | | v-model="app_auto_download"
|
| | | active-color="rgba(61, 104, 225, 1)"
|
| | | @change="switchChange('app_auto_download')"
|
| | | >
|
| | | </el-switch>
|
| | | </div>
|
| | | </div>
|
| | | <el-select
|
| | | v-model="level"
|
| | | placeholder="请选择"
|
| | | size="small"
|
| | | @change="levelChange"
|
| | | >
|
| | | <el-option label="全部" :value="''"> </el-option>
|
| | | <el-option
|
| | | v-for="item in levelOptions"
|
| | | :key="item.proc_name"
|
| | | :label="item.proc_name"
|
| | | :value="item.proc_name"
|
| | | >
|
| | | </el-option>
|
| | | </el-select>
|
| | | </div>
|
| | | </div>
|
| | | </div>
|
| | | <div class="table">
|
| | | <el-table
|
| | | class="tableBox"
|
| | | @cell-click="clickFaults"
|
| | | ref="multipleTable"
|
| | | :cell-style="styleFunc"
|
| | | highlight-current-row
|
| | | :data="tableData"
|
| | | :header-cell-style="{ background: '#f8f8f8', color: '#222222' }"
|
| | | style="width: 100%"
|
| | | v-if="!showSubTable"
|
| | | >
|
| | | <el-table-column :align="'center'" label="序号" type="index" width="50">
|
| | | </el-table-column>
|
| | | <el-table-column
|
| | | :align="'center'"
|
| | | sortable
|
| | | prop="add_time"
|
| | | label="状态"
|
| | | ></el-table-column>
|
| | | <el-table-column
|
| | | sortable
|
| | | :align="'center'"
|
| | | prop="userName"
|
| | | label="任务名称"
|
| | | ></el-table-column>
|
| | | <el-table-column
|
| | | :align="'center'"
|
| | | sortable
|
| | | prop="module"
|
| | | label="最近一次推送时间"
|
| | | ></el-table-column>
|
| | | <el-table-column
|
| | | :align="'center'"
|
| | | prop="procName"
|
| | | label="最近一次推送状态"
|
| | | ></el-table-column>
|
| | | <el-table-column
|
| | | :align="'center'"
|
| | | sortable
|
| | | prop="result"
|
| | | label="成功总量"
|
| | | ></el-table-column>
|
| | | <el-table-column
|
| | | :align="'center'"
|
| | | prop="msg"
|
| | | min-width="100px"
|
| | | label="失败总量"
|
| | | ></el-table-column>
|
| | | </el-table>
|
| | | |
| | | <div class="back" v-if="showSubTable" @click="showSubTable=false">
|
| | | <span class="icon iconfont"></span>
|
| | | <span class="title">事件推送日志</span>
|
| | | </div>
|
| | | <el-table
|
| | | class="tableBox"
|
| | | ref="multipleTable"
|
| | | :cell-style="styleFunc"
|
| | | highlight-current-row
|
| | | :data="subTableData"
|
| | | :header-cell-style="{ background: '#f8f8f8', color: '#222222' }"
|
| | | style="width: 100%"
|
| | | v-if="showSubTable"
|
| | | >
|
| | | <el-table-column :align="'center'" label="序号" type="index" width="50">
|
| | | </el-table-column>
|
| | | <el-table-column
|
| | | :align="'center'"
|
| | | sortable
|
| | | prop="add_time"
|
| | | label="推送时间"
|
| | | ></el-table-column>
|
| | | <el-table-column
|
| | | sortable
|
| | | :align="'center'"
|
| | | prop="userName"
|
| | | label="推送状态"
|
| | | ></el-table-column>
|
| | | <el-table-column
|
| | | :align="'center'"
|
| | | sortable
|
| | | prop="module"
|
| | | label="详细信息"
|
| | | ></el-table-column>
|
| | | <el-table-column
|
| | | :align="'center'"
|
| | | prop="procName"
|
| | | label="再次推送时间"
|
| | | ></el-table-column>
|
| | | <el-table-column
|
| | | :align="'center'"
|
| | | sortable
|
| | | prop="result"
|
| | | label="再次推送状态"
|
| | | ></el-table-column>
|
| | | |
| | | </el-table>
|
| | | </div>
|
| | |
|
| | | <el-pagination
|
| | | @size-change="handleSizeChange"
|
| | | @current-change="handleCurrentChange"
|
| | | :current-page="page"
|
| | | :page-sizes="[15, 30, 50, 100]"
|
| | | :page-size="15"
|
| | | layout="total, sizes, prev, pager, next, jumper"
|
| | | :total="total"
|
| | | >
|
| | | </el-pagination>
|
| | | </div>
|
| | | </template>
|
| | |
|
| | | <script>
|
| | | import { getDevInfo, doUpgrade } from "@/api/system";
|
| | | import FileUploader from "@/components/subComponents/FileUpload/index";
|
| | | import { deleteDate } from "@/api/system";
|
| | | import { pad0 } from "@/api/utils";
|
| | | import {} from "@/api/log";
|
| | |
|
| | | export default {
|
| | | components: {
|
| | | FileUploader,
|
| | | },
|
| | | data() {
|
| | | return {
|
| | | wifiList: [{ name: "无线网络1" }, { name: "无线网络2" }],
|
| | | radio2: "检查更新",
|
| | | activePage: 0,
|
| | | patchUpdateStatus: "",
|
| | | probeSum: 0,
|
| | | sys_auto_clear: false,
|
| | | sys_remind: false,
|
| | | sys_auto_download: false,
|
| | | app_auto_clear: false,
|
| | | app_remind: false,
|
| | | app_auto_download: false,
|
| | | timer: null,
|
| | | patchFile: {},
|
| | | loading: false,
|
| | | loadingText: "",showSubTable: false,
|
| | | tableData: [
|
| | | { msg: 2, userName: "车辆识别" },
|
| | | { userName: "人脸识别", msg: 4 },
|
| | | ],
|
| | | subTableData:[
|
| | |
|
| | | fileAdded: false,
|
| | | upgrading: false,
|
| | |
|
| | | ],
|
| | | dateArr: ["今日", "近三天", "近七天", "近一个月", "近六个月"],
|
| | | levelOptions: [],
|
| | | hostNameOptions: [],
|
| | | resultOptions: [
|
| | | {
|
| | | value: "",
|
| | | label: "全部",
|
| | | },
|
| | | {
|
| | | value: "成功",
|
| | | label: "成功",
|
| | | },
|
| | | {
|
| | | value: "失败",
|
| | | label: "失败",
|
| | | },
|
| | | ],
|
| | | value: "",
|
| | | page: 1,
|
| | | pageSize: 15,
|
| | | activeDateChoise: 0,
|
| | | hostName: "",
|
| | | result: "",
|
| | | level: "",
|
| | | timeStart: "",
|
| | | timeEnd: "",
|
| | | fuzzySearch: "",
|
| | | total: 0,
|
| | | };
|
| | | },
|
| | | mounted() {},
|
| | | mounted() {
|
| | | this.getTimeRange(24 * 60 * 60 * 1000);
|
| | | // this.getOperationLog();
|
| | | this.getOptions();
|
| | | },
|
| | | methods: {
|
| | | onFileUpload(file) {
|
| | | this.patchUpdateStatus = `<span style="color:green">上传成功, 点击升级按钮开始升级</span>`;
|
| | | this.patchFile = { ...file };
|
| | | this.fileAdded = true;
|
| | | styleFunc({ row, column, rowIndex, columnIndex }) {
|
| | | if (columnIndex == 6) {
|
| | | return { cursor: "pointer" };
|
| | | }
|
| | | return {};
|
| | | },
|
| | | onFileAdded() {
|
| | | this.patchUpdateStatus = "";
|
| | | handleSizeChange(val) {
|
| | | this.pageSize = val;
|
| | | // this.getOperationLog();
|
| | | },
|
| | | upgrade() {
|
| | | this.upgrading = true;
|
| | | this.patchUpdateStatus = `<span style="color:red">正在升级...</span>`;
|
| | | doUpgrade(this.patchFile)
|
| | | .then((rsp) => {
|
| | | this.upgrading = false;
|
| | | if (rsp && rsp.success) {
|
| | | clearTimeout(this.timer);
|
| | | this.doneUpgrade();
|
| | | }
|
| | | })
|
| | | .catch((err) => {
|
| | | if (err.code) {
|
| | | this.upgrading = false;
|
| | | this.patchUpdateStatus = `<span style="color:red">${err.data}</span>`;
|
| | | clearTimeout(this.timer);
|
| | | } else {
|
| | | this.probeServer(this.doneUpgrade);
|
| | | }
|
| | | });
|
| | | handleCurrentChange(val) {
|
| | | this.page = val;
|
| | | // this.getOperationLog();
|
| | | },
|
| | | doneUpgrade() {
|
| | | this.upgrading = false;
|
| | | this.patchUpdateStatus = `<span style="color:green">升级成功</span>`;
|
| | | let _this = this;
|
| | | this.$confirm("升级成功, 请重新登录系统", "成功", {
|
| | | type: "success",
|
| | | cancelButtonClass: "comfirm-class-cancle",
|
| | | confirmButtonClass: "comfirm-class-sure",
|
| | | }).then(() => {
|
| | | _this.reLogin();
|
| | | levelChange(val) {
|
| | | // this.getOperationLog(1);
|
| | | // this.hostName = "";
|
| | | // getOperations({
|
| | | // module: this.level,
|
| | | // }).then((res) => {
|
| | | // this.hostNameOptions = res.data;
|
| | | // });
|
| | | },
|
| | | getOptions() {
|
| | | getModules().then((res) => {
|
| | | this.levelOptions = res.data;
|
| | | });
|
| | | },
|
| | | reLogin() {
|
| | | this.$router.push("/");
|
| | | clickFaults(row, column, cell, event) {
|
| | | this.showSubTable=true
|
| | |
|
| | |
|
| | | },
|
| | | probeServer(cb) {
|
| | | this.probeSum++;
|
| | | let _this = this;
|
| | | if (this.probeSum > 60) {
|
| | | this.$confirm("连接服务器失败, 请刷新页面或联系管理员", "失败", {
|
| | | type: "error",
|
| | | cancelButtonClass: "comfirm-class-cancle",
|
| | | confirmButtonClass: "comfirm-class-sure",
|
| | | }).then(() => {
|
| | | cb();
|
| | | });
|
| | | return;
|
| | | choseRange(item, i) {
|
| | | switch (item) {
|
| | | case "今日":
|
| | | this.getTimeRange(24 * 60 * 60 * 1000);
|
| | | break;
|
| | | case "近三天":
|
| | | this.getTimeRange(24 * 60 * 60 * 1000 * 3);
|
| | | break;
|
| | | case "近七天":
|
| | | this.getTimeRange(24 * 60 * 60 * 1000 * 7);
|
| | | break;
|
| | | case "近一个月":
|
| | | this.getTimeRange(24 * 60 * 60 * 1000 * 30);
|
| | | break;
|
| | | case "近六个月":
|
| | | this.getTimeRange(24 * 60 * 60 * 1000 * 30 * 6);
|
| | | break;
|
| | | default:
|
| | | break;
|
| | | }
|
| | | this.timer = setTimeout(() => {
|
| | | getDevInfo()
|
| | | .then(() => {
|
| | | cb();
|
| | | })
|
| | | .catch((err) => {
|
| | | _this.probeServer(cb);
|
| | | });
|
| | | }, 10000);
|
| | | // this.getOperationLog(1);
|
| | | this.activeDateChoise = i;
|
| | | },
|
| | | openRight(typ) {
|
| | | const es = document.getElementsByClassName("menu-item");
|
| | | es[this.activePage].style.backgroundColor = "#f8f8f8";
|
| | | es[this.activePage].style.color = "rgba(54, 54, 54, 1)";
|
| | | es[typ].style.backgroundColor = "rgba(61, 104, 225, 1)";
|
| | | es[typ].style.color = "#fff";
|
| | | this.activePage = typ;
|
| | | getOperationLog(typ) {
|
| | | if (typ == 1) {
|
| | | this.page = 1;
|
| | | }
|
| | | // queryOperationLog({
|
| | | // timeStart: this.timeStart,
|
| | | // timeEnd: this.timeEnd,
|
| | | // page: this.page,
|
| | | // pageSize: this.pageSize,
|
| | | // module: this.level,
|
| | | // function: this.hostName,
|
| | | // result: this.result,
|
| | | // fuzzySearch: this.fuzzySearch,
|
| | | // }).then((res) => {
|
| | | // this.tableData = res.data.logs;
|
| | | // this.total = res.data.total;
|
| | | // });
|
| | | },
|
| | | switchChange(typ) {
|
| | | console.log(this[typ]);
|
| | | getTimeStr(date) {
|
| | | var month = pad0(date.getMonth() + 1); //月
|
| | | var day = pad0(date.getDate()); //日
|
| | | var hour = pad0(date.getHours()); //时
|
| | | var minute = pad0(date.getMinutes()); //分
|
| | | var second = pad0(date.getSeconds()); //秒
|
| | | return `${date.getFullYear()}-${month}-${day} ${hour}:${minute}:${second}`;
|
| | | },
|
| | | getTimeRange(gap) {
|
| | | var date = new Date(); //当前时间
|
| | | var preDay = new Date(new Date().getTime() - gap);
|
| | | this.timeStart = this.getTimeStr(preDay);
|
| | | this.timeEnd = this.getTimeStr(date);
|
| | | },
|
| | | },
|
| | | };
|
| | | </script>
|
| | | <style lang="scss">
|
| | | .all {
|
| | | .push-log {
|
| | | margin: 0 auto;
|
| | | padding: 10px 8px 10px 5px;
|
| | | background-color: rgba(248, 248, 248, 1);
|
| | | width: 100%;
|
| | | }
|
| | |
|
| | | .cluster-content {
|
| | | height: 100%;
|
| | | display: flex;
|
| | | flex-direction: row;
|
| | | flex: 1;
|
| | | flex-basis: auto;
|
| | | box-sizing: border-box;
|
| | | .cluster-center {
|
| | | height: 100%;
|
| | | width: 280px;
|
| | | overflow: auto;
|
| | | box-sizing: border-box;
|
| | | flex-shrink: 0;
|
| | | padding: 10px;
|
| | | border-right: 5px solid #f8f8f8;
|
| | |
|
| | | // background-color: lavender;
|
| | | .menu-item {
|
| | | background-color: #f8f8f8;
|
| | | height: 50px;
|
| | | margin-bottom: 10px;
|
| | | border-radius: 8px;
|
| | | line-height: 50px;
|
| | | box-sizing: border-box;
|
| | | font-size: 14px;
|
| | | cursor: pointer;
|
| | | padding: 0 20px;
|
| | | flex-direction: column;
|
| | | overflow: auto;
|
| | | .top {
|
| | | height: 100px;
|
| | | background: #fff;
|
| | | border-radius: 5px;
|
| | | .first {
|
| | | display: flex;
|
| | | justify-content: space-between;
|
| | | .con {
|
| | | .iconfont {
|
| | | height: 45px;
|
| | | padding: 0 20px;
|
| | | .time-option {
|
| | | display: flex;
|
| | | justify-content: space-between;
|
| | | align-items: center;
|
| | | .title {
|
| | | margin-right: 10px;
|
| | | min-width: fit-content;
|
| | | font-size: 14px;
|
| | | }
|
| | | .menu-text {
|
| | | font-size: 15px;
|
| | | .opts {
|
| | | display: flex;
|
| | | justify-content: space-between;
|
| | | .opt {
|
| | | min-width: fit-content;
|
| | | width: 50px;
|
| | | height: 32px;
|
| | | padding: 0 15px;
|
| | | border-radius: 4px;
|
| | | cursor: pointer;
|
| | | margin-right: 10px;
|
| | | line-height: 32px;
|
| | | font-size: 14px;
|
| | | }
|
| | | .opt:hover {
|
| | | background-color: rgba(61, 104, 225, 1);
|
| | | color: #fff;
|
| | | }
|
| | | .opt-active {
|
| | | color: #fff;
|
| | | background-color: rgba(61, 104, 225, 1);
|
| | | }
|
| | | }
|
| | | }
|
| | | .search {
|
| | | display: flex;
|
| | | align-items: center;
|
| | | }
|
| | | }
|
| | | .second {
|
| | | display: flex;
|
| | | margin: 10px 0;
|
| | | padding: 0 20px;
|
| | | |
| | | .bar {
|
| | | display: flex;
|
| | | align-items: baseline;
|
| | | width: fit-content;
|
| | | margin-right: 20px;
|
| | | min-width: 120px;
|
| | | .name {
|
| | | margin-right: 5px;
|
| | | min-width: fit-content;
|
| | | font-size: 14px;
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | | .cluster-right {
|
| | | flex: 1;
|
| | | flex-basis: auto;
|
| | | overflow: auto;
|
| | | box-sizing: border-box;
|
| | | position: relative;
|
| | | padding: 20px 40px;
|
| | | .el-form-item.is-required:not(.is-no-asterisk)
|
| | | > .el-form-item__label:before,
|
| | | .el-form-item.is-required:not(.is-no-asterisk)
|
| | | .el-form-item__label-wrap
|
| | | > .el-form-item__label:before {
|
| | | display: none;
|
| | | }
|
| | | .el-select {
|
| | | width: 100%;
|
| | | }
|
| | | .el-form-item {
|
| | | margin-bottom: 10px;
|
| | | height: 50px;
|
| | | background: #f8f8f8;
|
| | | padding: 4px 20px;
|
| | | -webkit-box-sizing: border-box;
|
| | | box-sizing: border-box;
|
| | | border-radius: 10px;
|
| | | .el-form-item__label {
|
| | | text-align: left;
|
| | | line-height: 42px;
|
| | | }
|
| | | }
|
| | | .el-form-item__content {
|
| | | line-height: 40px;
|
| | | position: relative;
|
| | | font-size: 14px;
|
| | | }
|
| | | .ip-input-container {
|
| | | max-width: none !important;
|
| | | }
|
| | | .net-set {
|
| | | display: flex;
|
| | | flex-direction: column;
|
| | | justify-content: space-between;
|
| | | height: 95%;
|
| | | // .el-radio-button__inner {
|
| | | // // color: #333333;
|
| | | // border: none;
|
| | | // }
|
| | | .update-center {
|
| | | height: 160px;
|
| | | .spin-bg {
|
| | | width: 70px;
|
| | | height: 70px;
|
| | | background: rgba(230, 230, 230, 1);
|
| | | margin: 0 auto;
|
| | | border-radius: 35px;
|
| | | }
|
| | | .line {
|
| | | width: 180px;
|
| | | height: 5px;
|
| | | background: #e6e6e6;
|
| | | border-radius: 5px;
|
| | | margin: 5px auto;
|
| | | }
|
| | | .desc {
|
| | | height: 20px;
|
| | | line-height: 20px;
|
| | | font-size: 14px;
|
| | | color: rgba(161, 161, 161, 1);
|
| | | margin-bottom: 10px;
|
| | | }
|
| | | .el-button {
|
| | | width: 120px;
|
| | | }
|
| | | .el-button--small {
|
| | | font-size: 14px;
|
| | | }
|
| | | }
|
| | | .upload-center {
|
| | | height: 340px;
|
| | |
|
| | | // margin: 0 auto;
|
| | | .update-center {
|
| | | height: 160px;
|
| | | .spin-bg {
|
| | | width: 70px;
|
| | | height: 70px;
|
| | | background: rgba(230, 230, 230, 1);
|
| | | margin: 0 auto;
|
| | | border-radius: 35px;
|
| | | }
|
| | | .line {
|
| | | width: 180px;
|
| | | height: 5px;
|
| | | background: #e6e6e6;
|
| | | border-radius: 5px;
|
| | | margin: 5px auto;
|
| | | }
|
| | | .desc {
|
| | | height: 20px;
|
| | | line-height: 20px;
|
| | | font-size: 14px;
|
| | | color: rgba(161, 161, 161, 1);
|
| | | margin-bottom: 10px;
|
| | | }
|
| | | .el-button {
|
| | | width: 120px;
|
| | | }
|
| | | .el-button--small {
|
| | | font-size: 14px;
|
| | | }
|
| | | }
|
| | | .top {
|
| | | display: flex;
|
| | | justify-content: space-evenly;
|
| | | align-items: center;
|
| | | background: rgba(248, 248, 248, 1);
|
| | | box-sizing: border-box;
|
| | | padding: 8px 10px;
|
| | | border-radius: 8px;
|
| | | .el-input--small .el-input__inner {
|
| | | border: none;
|
| | | }
|
| | | .uploader-btn {
|
| | | padding: 6px 8px;
|
| | | .el-icon-upload2 {
|
| | | font-size: 21px;
|
| | | font-weight: 600;
|
| | | }
|
| | | }
|
| | | }
|
| | | .up-text {
|
| | | height: 32px;
|
| | | line-height: 32px;
|
| | | font-size: 14px;
|
| | | min-width: 105px;
|
| | | margin-right: 5px;
|
| | | }
|
| | | .file-uploader {
|
| | | width: 100%;
|
| | | margin-right: 20px;
|
| | | min-width: 150px;
|
| | | }
|
| | | }
|
| | | .cur-version {
|
| | | font-size: 14px;
|
| | | }
|
| | | }
|
| | | .wifi {
|
| | | .content {
|
| | | margin-bottom: 20px;
|
| | | }
|
| | | .bar {
|
| | | display: flex;
|
| | | .table {
|
| | | margin-top: 16px;
|
| | | border-radius: 5px;
|
| | | padding: 12px;
|
| | | background-color: white;
|
| | | .back{
|
| | | display: flex;
|
| | | align-items: center;
|
| | | height: 50px;
|
| | | padding: 0 25px;
|
| | | background-color: #f8f8f8;
|
| | | justify-content: space-between;
|
| | | border-radius: 12px;
|
| | | margin-bottom: 10px;
|
| | | .name {
|
| | | font-size: 15px;
|
| | | .icon{
|
| | | cursor: pointer; margin:0 5px;font-size: 18px;
|
| | | }
|
| | | .title{
|
| | | cursor: pointer; line-height: 30px;font-size: 14px;
|
| | |
|
| | | }
|
| | | }
|
| | | .title {
|
| | | text-align: left;
|
| | | padding: 10px;
|
| | | font-size: 16px;
|
| | | .tableBox {
|
| | | th {
|
| | | padding: 0 !important;
|
| | | height: 40px;
|
| | | line-height: 40px;
|
| | | }
|
| | | td {
|
| | | padding: 0 !important;
|
| | | height: 34px;
|
| | | line-height: 34px;
|
| | | }
|
| | | }
|
| | |
|
| | | .save-btn {
|
| | | background-color: #3d68e1;
|
| | | width: 240px;
|
| | | height: 40px;
|
| | | margin: 0 auto;
|
| | | border-radius: 10px;
|
| | | color: #fff;
|
| | | line-height: 40px;
|
| | | font-size: 14px;
|
| | | margin-top: 20px;
|
| | | }
|
| | | }
|
| | | .el-pagination {
|
| | | padding: 20px 5px;
|
| | | height: 100%;
|
| | | box-sizing: border-box;
|
| | | background-color: white;
|
| | | }
|
| | | }
|
| | | </style>
|