|
@@ -0,0 +1,544 @@
|
|
|
|
|
+<template>
|
|
|
|
|
+ <Navbar title="资产图片导入" />
|
|
|
|
|
+ <div class="container-box">
|
|
|
|
|
+ <div class="step">
|
|
|
|
|
+ <label>1. 选择公司</label>
|
|
|
|
|
+ <a-select
|
|
|
|
|
+ v-model:value="company"
|
|
|
|
|
+ style="width: 200px; margin: 0 12px"
|
|
|
|
|
+ :options="companies"
|
|
|
|
|
+ />
|
|
|
|
|
+ <a-button @click="downloadBtn">下载导入模板</a-button>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="step">
|
|
|
|
|
+ <label style="margin-bottom: 12px">2. 上传资产图片Excel和图片文件</label>
|
|
|
|
|
+ <div>
|
|
|
|
|
+ <ImagesUpload />
|
|
|
|
|
+ <p class="pStyle">支持拓展名:.png .jpg .jpeg .gif</p>
|
|
|
|
|
+ <p class="pStyle">
|
|
|
|
|
+ <a @click="viewImage">查看上传的图片</a>
|
|
|
|
|
+ </p>
|
|
|
|
|
+ <div style="display: flex">
|
|
|
|
|
+ <a-upload
|
|
|
|
|
+ v-model:file-list="excelFiles"
|
|
|
|
|
+ :max-count="1"
|
|
|
|
|
+ :before-upload="beforeUpload"
|
|
|
|
|
+ :show-upload-list="{ showRemoveIcon: false }"
|
|
|
|
|
+ @change="excelFileChange"
|
|
|
|
|
+ >
|
|
|
|
|
+ <a-button>
|
|
|
|
|
+ <upload-outlined />
|
|
|
|
|
+ 上传资产图片Excel
|
|
|
|
|
+ </a-button>
|
|
|
|
|
+ </a-upload>
|
|
|
|
|
+ <a-button
|
|
|
|
|
+ style="margin-left: 8px"
|
|
|
|
|
+ type="primary"
|
|
|
|
|
+ @click="testImport"
|
|
|
|
|
+ >
|
|
|
|
|
+ 测试导入
|
|
|
|
|
+ </a-button>
|
|
|
|
|
+ <a-button
|
|
|
|
|
+ style="margin-left: 8px"
|
|
|
|
|
+ type="primary"
|
|
|
|
|
+ @click="importImageExcel"
|
|
|
|
|
+ >
|
|
|
|
|
+ 正式导入
|
|
|
|
|
+ </a-button>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <p class="pStyle">支持拓展名:.xlsx</p>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="step">
|
|
|
|
|
+ <label style="margin-bottom: 12px">3. 资产图片</label>
|
|
|
|
|
+ <ul class="siteList">
|
|
|
|
|
+ <li class="site">
|
|
|
|
|
+ <span class="labels">
|
|
|
|
|
+ <label>资产名称</label>
|
|
|
|
|
+ </span>
|
|
|
|
|
+ <a-input
|
|
|
|
|
+ v-model:value="assetName"
|
|
|
|
|
+ style="width: 70%; height: 30px"
|
|
|
|
|
+ placeholder="请输入资产名称"
|
|
|
|
|
+ @change="searchDatas"
|
|
|
|
|
+ />
|
|
|
|
|
+ </li>
|
|
|
|
|
+ <li class="site">
|
|
|
|
|
+ <span class="labels">
|
|
|
|
|
+ <label>资产编号</label>
|
|
|
|
|
+ </span>
|
|
|
|
|
+ <a-input
|
|
|
|
|
+ v-model:value="assetNo"
|
|
|
|
|
+ style="width: 70%; height: 30px"
|
|
|
|
|
+ placeholder="请输入资产编号"
|
|
|
|
|
+ @change="searchDatas"
|
|
|
|
|
+ />
|
|
|
|
|
+ </li>
|
|
|
|
|
+ <li class="site">
|
|
|
|
|
+ <span class="labels">
|
|
|
|
|
+ <label>图片状态</label>
|
|
|
|
|
+ </span>
|
|
|
|
|
+ <a-select
|
|
|
|
|
+ v-model:value="imageStatus"
|
|
|
|
|
+ style="width: 70%"
|
|
|
|
|
+ placeholder="请选择图片状态"
|
|
|
|
|
+ :options="imageAllStatus"
|
|
|
|
|
+ @change="searchDatas"
|
|
|
|
|
+ />
|
|
|
|
|
+ </li>
|
|
|
|
|
+ </ul>
|
|
|
|
|
+ <CommonTable
|
|
|
|
|
+ ref="table"
|
|
|
|
|
+ class="table"
|
|
|
|
|
+ :total="assetTotal"
|
|
|
|
|
+ :is-loading="isLoading"
|
|
|
|
|
+ :columns="assetImageColumns"
|
|
|
|
|
+ :data-source="assetImageDatas"
|
|
|
|
|
+ @page-params="getPageParams"
|
|
|
|
|
+ @select-column="selectColumn"
|
|
|
|
|
+ >
|
|
|
|
|
+ <template #bodyCell="{ column, record }">
|
|
|
|
|
+ <template v-if="column.key === 'mainImageName'">
|
|
|
|
|
+ <a-image
|
|
|
|
|
+ v-if="record.mainImageName !== ''"
|
|
|
|
|
+ :width="50"
|
|
|
|
|
+ :src="
|
|
|
|
|
+ getThumbnailImageSrc(record.className, record.mainImageName)
|
|
|
|
|
+ "
|
|
|
|
|
+ />
|
|
|
|
|
+ </template>
|
|
|
|
|
+ <template v-if="column.key === 'otherImageName'">
|
|
|
|
|
+ <template v-if="record.otherImageName !== ''">
|
|
|
|
|
+ <div style="display: flex">
|
|
|
|
|
+ <a-image
|
|
|
|
|
+ v-for="item in record.otherImageNameArr"
|
|
|
|
|
+ :key="item"
|
|
|
|
|
+ :width="50"
|
|
|
|
|
+ :src="getThumbnailImageSrc(record.className, item)"
|
|
|
|
|
+ />
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </CommonTable>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <a-modal v-model:visible="downloadVisible" title="请选择下载数据范围">
|
|
|
|
|
+ <p>
|
|
|
|
|
+ 全部数据:下载当前选择公司的全部资产图片数据。<a
|
|
|
|
|
+ @click="downloadReport(0)"
|
|
|
|
|
+ >下载</a>
|
|
|
|
|
+ </p>
|
|
|
|
|
+ <p>
|
|
|
|
|
+ 无主图片:下载当前选择公司的资产中无主图片的数据。<a
|
|
|
|
|
+ @click="downloadReport(1)"
|
|
|
|
|
+ >下载</a>
|
|
|
|
|
+ </p>
|
|
|
|
|
+ <p>
|
|
|
|
|
+ 无主图片或其他图片:下载当前选择公司中资产无主图片或无其他图片的数据。<a
|
|
|
|
|
+ @click="downloadReport(2)"
|
|
|
|
|
+ >下载</a>
|
|
|
|
|
+ </p>
|
|
|
|
|
+ <template #footer>
|
|
|
|
|
+ <a-button @click="downloadVisible = false">取消</a-button>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </a-modal>
|
|
|
|
|
+ <a-modal v-model:visible="imagesVisible" width="800px" title="已上传图片数据">
|
|
|
|
|
+ <div class="operation">
|
|
|
|
|
+ <a-button
|
|
|
|
|
+ danger
|
|
|
|
|
+ :disabled="deleteParams.length > 0 ? false : true"
|
|
|
|
|
+ @click="deleteImageData"
|
|
|
|
|
+ >
|
|
|
|
|
+ 删除
|
|
|
|
|
+ {{ deleteParams.length > 0 ? `${deleteParams.length} 张资产图片` : "" }}
|
|
|
|
|
+ </a-button>
|
|
|
|
|
+ <a-input-search
|
|
|
|
|
+ v-model:value="imageNameParams"
|
|
|
|
|
+ placeholder="请输入图片名称进行搜索"
|
|
|
|
|
+ style="width: 30%"
|
|
|
|
|
+ @change="searchImage"
|
|
|
|
|
+ @search="searchImage"
|
|
|
|
|
+ />
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <CommonTable
|
|
|
|
|
+ ref="table"
|
|
|
|
|
+ :total="total"
|
|
|
|
|
+ :is-select="true"
|
|
|
|
|
+ :columns="viewColumns"
|
|
|
|
|
+ :is-loading="isLoading"
|
|
|
|
|
+ :data-source="viewDatas"
|
|
|
|
|
+ @select-column="selectColumn"
|
|
|
|
|
+ >
|
|
|
|
|
+ <template #bodyCell="{ column, record }">
|
|
|
|
|
+ <template v-if="column.key === 'imageName'">
|
|
|
|
|
+ <a-image
|
|
|
|
|
+ v-if="record.imageName !== ''"
|
|
|
|
|
+ :width="50"
|
|
|
|
|
+ :src="getImageSrc(record.className, record.imageName)"
|
|
|
|
|
+ />
|
|
|
|
|
+ <span>{{ record.imageName }}</span>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </CommonTable>
|
|
|
|
|
+ <template #footer>
|
|
|
|
|
+ <a-button @click="imagesVisible = false">取消</a-button>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </a-modal>
|
|
|
|
|
+ <Loading v-if="loading" />
|
|
|
|
|
+</template>
|
|
|
|
|
+
|
|
|
|
|
+<script setup>
|
|
|
|
|
+import Common from '../../common/Common';
|
|
|
|
|
+import { Notify } from 'pc-component-v3';
|
|
|
|
|
+import { message } from 'ant-design-vue';
|
|
|
|
|
+import ImagesUpload from './ImagesUpload.vue';
|
|
|
|
|
+import CommonTable from './CommonTable.vue';
|
|
|
|
|
+import { UploadOutlined } from '@ant-design/icons-vue';
|
|
|
|
|
+import { ref, reactive, onMounted, onBeforeUnmount } from 'vue';
|
|
|
|
|
+import {
|
|
|
|
|
+ debounce,
|
|
|
|
|
+ queryImages,
|
|
|
|
|
+ importExcel,
|
|
|
|
|
+ deleteImage,
|
|
|
|
|
+ imageColumns,
|
|
|
|
|
+ assetColumns,
|
|
|
|
|
+ queryAssetData,
|
|
|
|
|
+ deleteAssetData,
|
|
|
|
|
+ testImportExcel,
|
|
|
|
|
+ listClientCanAccess,
|
|
|
|
|
+} from './configData.js';
|
|
|
|
|
+import { getImageSrc, getThumbnailImageSrc } from '../../common/image-src.js';
|
|
|
|
|
+
|
|
|
|
|
+const total = ref(0);
|
|
|
|
|
+const company = ref('');
|
|
|
|
|
+const table = ref(null);
|
|
|
|
|
+const assetNo = ref('');
|
|
|
|
|
+const assetName = ref('');
|
|
|
|
|
+const imageStatus = ref(0);
|
|
|
|
|
+const assetTotal = ref(0);
|
|
|
|
|
+const companies = ref([]);
|
|
|
|
|
+const viewDatas = ref([]);
|
|
|
|
|
+const excelFiles = ref([]);
|
|
|
|
|
+const loading = ref(false);
|
|
|
|
|
+const isLoading = ref(false);
|
|
|
|
|
+const deleteParams = ref([]);
|
|
|
|
|
+const assetImageDatas = ref([]);
|
|
|
|
|
+const imageNameParams = ref('');
|
|
|
|
|
+const imagesVisible = ref(false);
|
|
|
|
|
+const downloadVisible = ref(false);
|
|
|
|
|
+const viewColumns = ref(imageColumns);
|
|
|
|
|
+const assetImageColumns = ref(assetColumns);
|
|
|
|
|
+const excelFile = ref(null);
|
|
|
|
|
+const pager = reactive({
|
|
|
|
|
+ start: 0,
|
|
|
|
|
+ length: 20,
|
|
|
|
|
+});
|
|
|
|
|
+const imageAllStatus = reactive([
|
|
|
|
|
+ {
|
|
|
|
|
+ value: 0,
|
|
|
|
|
+ label: '全部',
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ value: 1,
|
|
|
|
|
+ label: '缺图片(无主图片或无其他图片)',
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ value: 2,
|
|
|
|
|
+ label: '有图片(有主图片或有其他图片)',
|
|
|
|
|
+ },
|
|
|
|
|
+]);
|
|
|
|
|
+
|
|
|
|
|
+// 打开下载模板模态框
|
|
|
|
|
+const downloadBtn = () => {
|
|
|
|
|
+ if (!company.value) {
|
|
|
|
|
+ message.warning('请先选择公司!');
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ downloadVisible.value = true;
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+// 获取分页
|
|
|
|
|
+const getPageParams = (start, length) => {
|
|
|
|
|
+ pager.start = (start - 1) * length;
|
|
|
|
|
+ pager.length = length;
|
|
|
|
|
+ searchAsset();
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+// 查询回到第一页
|
|
|
|
|
+const searchDatas = debounce(() => {
|
|
|
|
|
+ table.value.backFirstPage();
|
|
|
|
|
+}, 600);
|
|
|
|
|
+
|
|
|
|
|
+// 查看上传的图片
|
|
|
|
|
+const viewImage = () => {
|
|
|
|
|
+ table.value.clear();
|
|
|
|
|
+ imagesVisible.value = true;
|
|
|
|
|
+ queryUploadImage();
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+// 查询上传图片接口
|
|
|
|
|
+const queryUploadImage = () => {
|
|
|
|
|
+ loading.value = true;
|
|
|
|
|
+ queryImages(imageNameParams.value).then(
|
|
|
|
|
+ successData => {
|
|
|
|
|
+ if (successData.errorCode == 0) {
|
|
|
|
|
+ successData.datas.forEach(item => {
|
|
|
|
|
+ item.id = item.imageName;
|
|
|
|
|
+ });
|
|
|
|
|
+ viewDatas.value = successData.datas;
|
|
|
|
|
+ total.value = viewDatas.value.length;
|
|
|
|
|
+ } else {
|
|
|
|
|
+ message.warning(successData.errorMessage);
|
|
|
|
|
+ }
|
|
|
|
|
+ loading.value = false;
|
|
|
|
|
+ },
|
|
|
|
|
+ errorData => {
|
|
|
|
|
+ Common.processException(errorData);
|
|
|
|
|
+ loading.value = false;
|
|
|
|
|
+ },
|
|
|
|
|
+ );
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+// 获取所选项的数据
|
|
|
|
|
+const selectColumn = rows => {
|
|
|
|
|
+ const names = [];
|
|
|
|
|
+ rows.forEach(item => {
|
|
|
|
|
+ names.push(item.imageName);
|
|
|
|
|
+ });
|
|
|
|
|
+ deleteParams.value = names;
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+// 删除上传的图片数据
|
|
|
|
|
+const deleteImageData = () => {
|
|
|
|
|
+ const params = JSON.parse(JSON.stringify(deleteParams.value));
|
|
|
|
|
+ loading.value = true;
|
|
|
|
|
+ deleteImage(params).then(
|
|
|
|
|
+ successData => {
|
|
|
|
|
+ if (successData.errorCode == 0) {
|
|
|
|
|
+ message.success('删除成功!');
|
|
|
|
|
+ queryUploadImage();
|
|
|
|
|
+ } else {
|
|
|
|
|
+ message.warning(successData.errorMessage);
|
|
|
|
|
+ }
|
|
|
|
|
+ deleteParams.value = [];
|
|
|
|
|
+ loading.value = false;
|
|
|
|
|
+ },
|
|
|
|
|
+ errorData => {
|
|
|
|
|
+ Common.processException(errorData);
|
|
|
|
|
+ loading.value = false;
|
|
|
|
|
+ },
|
|
|
|
|
+ );
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+// 根据图片名称查询图片信息
|
|
|
|
|
+const searchImage = debounce(() => {
|
|
|
|
|
+ queryUploadImage();
|
|
|
|
|
+}, 600);
|
|
|
|
|
+
|
|
|
|
|
+// 上传资产图片excel
|
|
|
|
|
+const excelFileChange = e => {
|
|
|
|
|
+ if (e.file.name.indexOf('.xlsx') == -1) {
|
|
|
|
|
+ excelFiles.value = [];
|
|
|
|
|
+ message.warning('请选择.xlsx格式的文件!');
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ excelFile.value = e.file;
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+// 测试导入
|
|
|
|
|
+const testImport = () => {
|
|
|
|
|
+ if (excelFiles.value.length > 0) {
|
|
|
|
|
+ const formData = new FormData();
|
|
|
|
|
+ formData.append('imageSheet', excelFile.value);
|
|
|
|
|
+ loading.value = true;
|
|
|
|
|
+ testImportExcel(formData).then(
|
|
|
|
|
+ successData => {
|
|
|
|
|
+ if (successData.errorCode == 0) {
|
|
|
|
|
+ message.success('测试导入资产excel成功,请点击正式导入!');
|
|
|
|
|
+ searchAsset();
|
|
|
|
|
+ } else {
|
|
|
|
|
+ message.warning(successData.errorMessage);
|
|
|
|
|
+ }
|
|
|
|
|
+ loading.value = false;
|
|
|
|
|
+ },
|
|
|
|
|
+ errorData => {
|
|
|
|
|
+ Common.processException(errorData);
|
|
|
|
|
+ loading.value = false;
|
|
|
|
|
+ },
|
|
|
|
|
+ );
|
|
|
|
|
+ }
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+// 正式导入
|
|
|
|
|
+const importImageExcel = () => {
|
|
|
|
|
+ loading.value = true;
|
|
|
|
|
+ importExcel().then(
|
|
|
|
|
+ successData => {
|
|
|
|
|
+ if (successData.errorCode == 0) {
|
|
|
|
|
+ message.success('正式导入资产图片Excel成功!');
|
|
|
|
|
+ searchAsset();
|
|
|
|
|
+ } else {
|
|
|
|
|
+ message.warning(successData.errorMessage);
|
|
|
|
|
+ }
|
|
|
|
|
+ loading.value = false;
|
|
|
|
|
+ },
|
|
|
|
|
+ errorData => {
|
|
|
|
|
+ Common.processException(errorData);
|
|
|
|
|
+ loading.value = false;
|
|
|
|
|
+ },
|
|
|
|
|
+ );
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+// 查询资产数据
|
|
|
|
|
+const searchAsset = () => {
|
|
|
|
|
+ const params = {
|
|
|
|
|
+ assetNo: assetNo.value,
|
|
|
|
|
+ type: imageStatus.value,
|
|
|
|
|
+ assetName: assetName.value,
|
|
|
|
|
+ ...pager,
|
|
|
|
|
+ };
|
|
|
|
|
+ loading.value = true;
|
|
|
|
|
+ queryAssetData(params).then(
|
|
|
|
|
+ successData => {
|
|
|
|
|
+ if (successData.errorCode == 0) {
|
|
|
|
|
+ successData.datas.forEach(item => {
|
|
|
|
|
+ if (item.otherImageName !== '') {
|
|
|
|
|
+ item.otherImageNameArr = item.otherImageName.split(',');
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+ assetImageDatas.value = successData.datas;
|
|
|
|
|
+ assetTotal.value = successData.total;
|
|
|
|
|
+ } else {
|
|
|
|
|
+ message.warning(successData.errorMessage);
|
|
|
|
|
+ }
|
|
|
|
|
+ loading.value = false;
|
|
|
|
|
+ },
|
|
|
|
|
+ errorData => {
|
|
|
|
|
+ Common.processException(errorData);
|
|
|
|
|
+ loading.value = false;
|
|
|
|
|
+ },
|
|
|
|
|
+ );
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+// 下载导入模板
|
|
|
|
|
+const downloadReport = type => {
|
|
|
|
|
+ const clientId = company.value;
|
|
|
|
|
+ let url;
|
|
|
|
|
+ if (type == 0) {
|
|
|
|
|
+ url = `/static/x-spreadsheet/index.html?processReportNo=20240308_095701&clientId=${clientId}`;
|
|
|
|
|
+ } else if (type == 1) {
|
|
|
|
|
+ url = `/static/x-spreadsheet/index.html?processReportNo=20240308_135134&clientId=${clientId}`;
|
|
|
|
|
+ } else {
|
|
|
|
|
+ url = `/static/x-spreadsheet/index.html?processReportNo=20240311_102330&clientId=${clientId}`;
|
|
|
|
|
+ }
|
|
|
|
|
+ window.open(url);
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+// 禁止自带默认上传
|
|
|
|
|
+const beforeUpload = file => {
|
|
|
|
|
+ return false;
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+onMounted(() => {
|
|
|
|
|
+ getClient();
|
|
|
|
|
+});
|
|
|
|
|
+
|
|
|
|
|
+// 关闭页面删除临时表数据
|
|
|
|
|
+onBeforeUnmount(() => {
|
|
|
|
|
+ loading.value = true;
|
|
|
|
|
+ deleteAssetData().then(
|
|
|
|
|
+ successData => {
|
|
|
|
|
+ loading.value = false;
|
|
|
|
|
+ },
|
|
|
|
|
+ errorData => {
|
|
|
|
|
+ Common.processException(errorData);
|
|
|
|
|
+ loading.value = false;
|
|
|
|
|
+ },
|
|
|
|
|
+ );
|
|
|
|
|
+});
|
|
|
|
|
+// 获取当前可访问公司
|
|
|
|
|
+const getClient = () => {
|
|
|
|
|
+ listClientCanAccess().then(
|
|
|
|
|
+ successData => {
|
|
|
|
|
+ if (successData.errorCode == 0) {
|
|
|
|
|
+ successData.datas.forEach(item => {
|
|
|
|
|
+ companies.value.push({ label: item.name, value: item.id });
|
|
|
|
|
+ });
|
|
|
|
|
+ } else {
|
|
|
|
|
+ Notify.error('错误', successData.errorMessage, false);
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ errorData => {
|
|
|
|
|
+ Common.processException(errorData);
|
|
|
|
|
+ },
|
|
|
|
|
+ );
|
|
|
|
|
+};
|
|
|
|
|
+</script>
|
|
|
|
|
+
|
|
|
|
|
+<style scoped>
|
|
|
|
|
+.step {
|
|
|
|
|
+ margin-bottom: 12px;
|
|
|
|
|
+}
|
|
|
|
|
+.step > label {
|
|
|
|
|
+ font-size: 16px;
|
|
|
|
|
+}
|
|
|
|
|
+.pStyle {
|
|
|
|
|
+ margin: 6px 0;
|
|
|
|
|
+ color: rgba(0, 0, 0, 0.65);
|
|
|
|
|
+}
|
|
|
|
|
+.table {
|
|
|
|
|
+ margin-top: 2px !important;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.siteList {
|
|
|
|
|
+ margin-bottom: 0 !important;
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ flex-wrap: wrap;
|
|
|
|
|
+ justify-content: space-between;
|
|
|
|
|
+}
|
|
|
|
|
+.siteList .site {
|
|
|
|
|
+ width: 300px;
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ justify-content: center;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ position: relative;
|
|
|
|
|
+}
|
|
|
|
|
+.siteList > li {
|
|
|
|
|
+ margin-bottom: 8px;
|
|
|
|
|
+ margin-left: 0px;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+@media (min-width: 500px) {
|
|
|
|
|
+ .siteList {
|
|
|
|
|
+ margin-left: 0;
|
|
|
|
|
+ margin-right: -20px;
|
|
|
|
|
+ justify-content: flex-start;
|
|
|
|
|
+ }
|
|
|
|
|
+ .siteList > li {
|
|
|
|
|
+ margin-right: 8px;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+.labels {
|
|
|
|
|
+ width: 80px;
|
|
|
|
|
+ text-align: center;
|
|
|
|
|
+}
|
|
|
|
|
+.labels > label {
|
|
|
|
|
+ font-weight: 400 !important;
|
|
|
|
|
+}
|
|
|
|
|
+.operation {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ justify-content: space-between;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+}
|
|
|
|
|
+.tablePaganations {
|
|
|
|
|
+ margin-top: 6px;
|
|
|
|
|
+}
|
|
|
|
|
+:deep(.ant-image-img) {
|
|
|
|
|
+ width: 50px !important;
|
|
|
|
|
+ height: 50px !important;
|
|
|
|
|
+}
|
|
|
|
|
+.ant-image {
|
|
|
|
|
+ margin-right: 6px !important;
|
|
|
|
|
+}
|
|
|
|
|
+</style>
|