|
|
@@ -1,106 +1,200 @@
|
|
|
<template>
|
|
|
- <el-form ref="form" label-width="84px" class="camera-from">
|
|
|
- <div class="el-form-item">
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="项目编号" class="mandatory">
|
|
|
- <el-input
|
|
|
- v-model="bindFire.projectSn"
|
|
|
- maxlength="18"
|
|
|
- placeholder="请输入项目编号"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="起火对象" class="mandatory">
|
|
|
- <el-input
|
|
|
- v-model="bindFire.projectName"
|
|
|
- maxlength="50"
|
|
|
- placeholder="请输入起火对象"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- </div>
|
|
|
- <el-form-item label="详细地址" class="mandatory">
|
|
|
- <el-input
|
|
|
- v-model="bindFire.mapUrl"
|
|
|
- placeholder="输入名称搜索"
|
|
|
- clearable
|
|
|
- readonly
|
|
|
- class="mandatory"
|
|
|
- >
|
|
|
- <template #append>
|
|
|
- <el-button :icon="Search" @click="searchAMapAddress" />
|
|
|
- </template>
|
|
|
- </el-input>
|
|
|
- </el-form-item>
|
|
|
-
|
|
|
- <el-form-item label="起火地址" class="mandatory">
|
|
|
- <el-input
|
|
|
- v-model="bindFire.projectAddress"
|
|
|
- maxlength="50"
|
|
|
- placeholder="请输入起火地址"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="起火场所" class="mandatory">
|
|
|
- <el-cascader
|
|
|
- style="width: 100%"
|
|
|
- v-model="projectSite"
|
|
|
- placeholder="起火场所"
|
|
|
- :options="place"
|
|
|
- :props="{ expandTrigger: 'hover' }"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- <div class="el-form-item">
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="承办单位" class="mandatory">
|
|
|
- <companySelect v-model="bindFire.deptId" hideAll :notUpdate="true" disabled />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="承办人员" class="mandatory" placeholder="请输入承办人员">
|
|
|
- <el-input v-model="bindFire.organizerUsers" maxlength="50" />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- </div>
|
|
|
- <div class="el-form-item">
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="事故日期" class="mandatory" placeholder="请选择事故日期">
|
|
|
- <el-date-picker
|
|
|
- type="date"
|
|
|
- v-model="accidentDate"
|
|
|
- style="width: 100%"
|
|
|
- :disabled-date="(date) => date.getTime() > new Date().getTime()"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="火灾原因" class="mandatory">
|
|
|
- <el-cascader
|
|
|
+ <el-form ref="form" label-width="84px" class="camera-from scene-edit-dialog">
|
|
|
+ <!-- 新增模式:仅保留起火对象与场景选择 -->
|
|
|
+ <template v-if="isAddMode">
|
|
|
+ <el-form-item label="起火对象" class="mandatory">
|
|
|
+ <el-input
|
|
|
+ v-model="bindFire.projectName"
|
|
|
+ maxlength="50"
|
|
|
+ placeholder="请输入起火对象"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ <!-- 起火场景:复用 scene.vue 的筛选与表格 -->
|
|
|
+ <el-form-item label="起火场景" class="mandatory scene-form-item">
|
|
|
+ <div class="scene-form-item-content" style="width: 100%">
|
|
|
+ <div class="dialog-filter-row">
|
|
|
+ <div class="filter-item">
|
|
|
+ <span class="label">类型:</span>
|
|
|
+ <el-select
|
|
|
+ v-model="query.type"
|
|
|
+ filterable
|
|
|
+ placeholder="请选择类型"
|
|
|
+ style="width: 200px"
|
|
|
+ @change="fetchTableData"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="opt in typeOptions"
|
|
|
+ :key="opt.value"
|
|
|
+ :label="opt.label"
|
|
|
+ :value="opt.value"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ </div>
|
|
|
+ <div class="filter-item">
|
|
|
+ <span class="label">标题:</span>
|
|
|
+ <el-input
|
|
|
+ v-model="query.modelTitle"
|
|
|
+ placeholder="请输入标题"
|
|
|
+ clearable
|
|
|
+ @input="onTitleInput"
|
|
|
+ >
|
|
|
+ </el-input>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <el-table
|
|
|
+ ref="tableRef"
|
|
|
+ :data="tableData"
|
|
|
+ border
|
|
|
+ height="420"
|
|
|
style="width: 100%"
|
|
|
- v-model="fireReason"
|
|
|
- placeholder="火灾原因:"
|
|
|
- :options="reason"
|
|
|
- :props="{ expandTrigger: 'hover' }"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
-
|
|
|
- </div>
|
|
|
- <div class="el-form-item">
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="首页显示" class="mandatory">
|
|
|
- <el-switch v-model="bindFire.mapShow" :disabled="!bindFire.latAndLong" />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- </div>
|
|
|
- <!-- 地图弹窗:与 basicInfo.vue 一致的选择逻辑 -->
|
|
|
- <creatMap v-model="showMapDialog" @confirm="handleMapConfirm" />
|
|
|
+ :row-class-name="rowClassName"
|
|
|
+ v-loading="tableLoading"
|
|
|
+ @selection-change="onSelectionChange"
|
|
|
+ >
|
|
|
+ <el-table-column type="selection" width="48" :selectable="isRowSelectable" />
|
|
|
+ <el-table-column label="标题" min-width="140">
|
|
|
+ <template #default="{ row }">
|
|
|
+ {{ row.name }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="类型" width="120">
|
|
|
+ <template #default="{ row }">
|
|
|
+ {{ SceneTypeDesc[row.type] || (query.type === 1 ? 'Mesh场景' : '点云场景') }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="所属组织" width="180">
|
|
|
+ <template #default="{ row }">
|
|
|
+ {{ row.deptName }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="拍摄时间" width="200">
|
|
|
+ <template #default="{ row }">
|
|
|
+ {{ row.createTime }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+
|
|
|
+ <div style="display:flex; justify-content:flex-end; margin-top: 12px;">
|
|
|
+ <el-pagination
|
|
|
+ background
|
|
|
+ layout="prev, pager, next, jumper"
|
|
|
+ :current-page="pager.page"
|
|
|
+ :page-size="pager.pageSize"
|
|
|
+ :total="pager.total"
|
|
|
+ @current-change="onPageChange"
|
|
|
+ @size-change="onSizeChange"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </el-form-item>
|
|
|
+ </template>
|
|
|
+
|
|
|
+ <!-- 编辑模式:保持原表单 -->
|
|
|
+ <template v-else>
|
|
|
+ <div class="el-form-item">
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="项目编号" class="mandatory">
|
|
|
+ <el-input
|
|
|
+ v-model="bindFire.projectSn"
|
|
|
+ maxlength="18"
|
|
|
+ placeholder="请输入项目编号"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="起火对象" class="mandatory">
|
|
|
+ <el-input
|
|
|
+ v-model="bindFire.projectName"
|
|
|
+ maxlength="50"
|
|
|
+ placeholder="请输入起火对象"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </div>
|
|
|
+ <el-form-item label="详细地址" class="mandatory">
|
|
|
+ <el-input
|
|
|
+ v-model="bindFire.mapUrl"
|
|
|
+ placeholder="输入名称搜索"
|
|
|
+ clearable
|
|
|
+ readonly
|
|
|
+ class="mandatory"
|
|
|
+ >
|
|
|
+ <template #append>
|
|
|
+ <el-button :icon="Search" @click="searchAMapAddress" />
|
|
|
+ </template>
|
|
|
+ </el-input>
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ <el-form-item label="起火地址" class="mandatory">
|
|
|
+ <el-input
|
|
|
+ v-model="bindFire.projectAddress"
|
|
|
+ maxlength="50"
|
|
|
+ placeholder="请输入起火地址"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="起火场所" class="mandatory">
|
|
|
+ <el-cascader
|
|
|
+ style="width: 100%"
|
|
|
+ v-model="projectSite"
|
|
|
+ placeholder="起火场所"
|
|
|
+ :options="place"
|
|
|
+ :props="{ expandTrigger: 'hover' }"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <div class="el-form-item">
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="承办单位" class="mandatory">
|
|
|
+ <companySelect v-model="bindFire.deptId" hideAll :notUpdate="true" disabled />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="承办人员" class="mandatory" placeholder="请输入承办人员">
|
|
|
+ <el-input v-model="bindFire.organizerUsers" maxlength="50" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </div>
|
|
|
+ <div class="el-form-item">
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="事故日期" class="mandatory" placeholder="请选择事故日期">
|
|
|
+ <el-date-picker
|
|
|
+ type="date"
|
|
|
+ v-model="accidentDate"
|
|
|
+ style="width: 100%"
|
|
|
+ :disabled-date="(date) => date.getTime() > new Date().getTime()"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="火灾原因" class="mandatory">
|
|
|
+ <el-cascader
|
|
|
+ style="width: 100%"
|
|
|
+ v-model="fireReason"
|
|
|
+ placeholder="火灾原因:"
|
|
|
+ :options="reason"
|
|
|
+ :props="{ expandTrigger: 'hover' }"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+
|
|
|
+ </div>
|
|
|
+ <div class="el-form-item">
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="首页显示" class="mandatory">
|
|
|
+ <el-switch v-model="bindFire.mapShow" :disabled="!bindFire.latAndLong" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </div>
|
|
|
+ <!-- 地图弹窗:与 basicInfo.vue 一致的选择逻辑 -->
|
|
|
+ <creatMap v-model="showMapDialog" @confirm="handleMapConfirm" />
|
|
|
+ </template>
|
|
|
</el-form>
|
|
|
</template>
|
|
|
|
|
|
<script setup lang="ts">
|
|
|
import companySelect from "@/components/company-select/index.vue";
|
|
|
-import { ref } from "vue";
|
|
|
+import { ref, computed, nextTick, onMounted } from "vue";
|
|
|
import { Fire, setFire, addFire } from "@/app/fire/store/fire";
|
|
|
import { reason, place } from "@/app/fire/constant/fire";
|
|
|
import { ElMessage } from "element-plus";
|
|
|
@@ -110,6 +204,9 @@ import { QuiskExpose } from "@/helper/mount";
|
|
|
import { user } from "@/store/user";
|
|
|
import { Search } from "@element-plus/icons-vue";
|
|
|
import creatMap from "../newFireDetails/components/creatMap.vue";
|
|
|
+import { getScenePagging, Scene } from "@/store/scene";
|
|
|
+import { SceneTypeDesc } from "@/constant/scene";
|
|
|
+import { getCaseScenes } from "@/store/case";
|
|
|
|
|
|
const props = defineProps<{ fire?: Fire }>();
|
|
|
|
|
|
@@ -127,11 +224,155 @@ const accidentDate = ref(
|
|
|
bindFire.value.accidentDate ? new Date(bindFire.value.accidentDate) : new Date()
|
|
|
);
|
|
|
|
|
|
-// 地图弹窗开关(对齐 basicInfo.vue 的逻辑)
|
|
|
+// 模式判断:新增 or 编辑
|
|
|
+const isAddMode = computed(() => !props.fire || !props.fire.id);
|
|
|
+
|
|
|
+// 地图弹窗开关(仅编辑模式使用)
|
|
|
const showMapDialog = ref(false);
|
|
|
|
|
|
+// ===== 新增模式:场景列表选择(复用 scene.vue 的逻辑) =====
|
|
|
+// isObj使用1/2;searchType默认传2;关键字使用modelTitle
|
|
|
+const query = ref<{ type: number; modelTitle: string; searchType: string }>({ type: 1, modelTitle: '', searchType: '2' });
|
|
|
+const typeOptions = ref([
|
|
|
+ { label: 'Mesh场景', value: 1 },
|
|
|
+ { label: '点云场景', value: 0 },
|
|
|
+]);
|
|
|
+const tableRef = ref<any>(null);
|
|
|
+const tableData = ref<Scene[]>([]);
|
|
|
+const selectedRows = ref<Scene[]>([]);
|
|
|
+const tableLoading = ref(false);
|
|
|
+const pager = ref({ page: 1, pageSize: 40, total: 0 });
|
|
|
+let titleDebounceTimer: any = null;
|
|
|
+
|
|
|
+const rowKey = (row: any) => `${Number(row?.type)}__${String(row?.num)}`;
|
|
|
+const isRowSelectable = (_row: any) => true;
|
|
|
+const rowClassName = () => '';
|
|
|
+const preselectRows = () => {
|
|
|
+ nextTick(() => {
|
|
|
+ try {
|
|
|
+ tableRef.value?.clearSelection?.();
|
|
|
+ (tableData.value || []).forEach((r: any) => {
|
|
|
+ const exists = (selectedRows.value || []).some((s: any) => rowKey(s) === rowKey(r));
|
|
|
+ if (exists) {
|
|
|
+ tableRef.value?.toggleRowSelection?.(r, true);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ } catch (e) {
|
|
|
+ // 忽略选择异常
|
|
|
+ }
|
|
|
+ });
|
|
|
+};
|
|
|
+
|
|
|
+const fetchTableData = async () => {
|
|
|
+ if (!isAddMode.value) return;
|
|
|
+ tableLoading.value = true;
|
|
|
+ try {
|
|
|
+ const params: any = {
|
|
|
+ isObj: Number(query.value.type),
|
|
|
+ searchType: query.value.searchType,
|
|
|
+ modelTitle: query.value.modelTitle,
|
|
|
+ sceneName: query.value.modelTitle,
|
|
|
+ deptId: '',
|
|
|
+ snCode: '',
|
|
|
+ cameraType: '',
|
|
|
+ pageNum: pager.value.page,
|
|
|
+ pageSize: pager.value.pageSize,
|
|
|
+ };
|
|
|
+ const data = await getScenePagging(params);
|
|
|
+ const list = (data as any)?.list || [];
|
|
|
+ const total = (data as any)?.total || list.length || 0;
|
|
|
+ pager.value.total = total;
|
|
|
+ tableData.value = list;
|
|
|
+ preselectRows();
|
|
|
+ } catch (e) {
|
|
|
+ console.error('获取场景分页失败', e);
|
|
|
+ pager.value.total = 0;
|
|
|
+ tableData.value = [];
|
|
|
+ } finally {
|
|
|
+ tableLoading.value = false;
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+const onTitleInput = () => {
|
|
|
+ if (!isAddMode.value) return;
|
|
|
+ if (titleDebounceTimer) clearTimeout(titleDebounceTimer);
|
|
|
+ titleDebounceTimer = setTimeout(() => {
|
|
|
+ pager.value.page = 1;
|
|
|
+ fetchTableData();
|
|
|
+ }, 300);
|
|
|
+};
|
|
|
+
|
|
|
+const onSelectionChange = (rows: Scene[]) => {
|
|
|
+ const map = new Map<string, any>();
|
|
|
+ (selectedRows.value || []).forEach((r: any) => map.set(rowKey(r), r));
|
|
|
+ (rows || []).forEach((r: any) => map.set(rowKey(r), r));
|
|
|
+ selectedRows.value = Array.from(map.values());
|
|
|
+};
|
|
|
+
|
|
|
+const onPageChange = (page: number) => {
|
|
|
+ pager.value.page = page;
|
|
|
+ fetchTableData();
|
|
|
+};
|
|
|
+
|
|
|
+const onSizeChange = (size: number) => {
|
|
|
+ pager.value.pageSize = size;
|
|
|
+ pager.value.page = 1;
|
|
|
+ fetchTableData();
|
|
|
+};
|
|
|
+
|
|
|
+onMounted(() => {
|
|
|
+ if (isAddMode.value) {
|
|
|
+ fetchTableData();
|
|
|
+ }
|
|
|
+});
|
|
|
+
|
|
|
defineExpose<QuiskExpose>({
|
|
|
async submit() {
|
|
|
+ // 新增:仅校验起火对象,并构建 sceneNumParam
|
|
|
+ if (isAddMode.value) {
|
|
|
+ if (!bindFire.value.projectName || !bindFire.value.projectName.trim()) {
|
|
|
+ ElMessage.error("起火对象不能为空!");
|
|
|
+ throw "起火对象不能为空!";
|
|
|
+ } else if (!selectedRows.value || selectedRows.value.length === 0) {
|
|
|
+ ElMessage.error("请至少添加一个场景");
|
|
|
+ throw "请至少添加一个场景";
|
|
|
+ }
|
|
|
+
|
|
|
+ const mergedList = Array.from(selectedRows.value || []) as any[];
|
|
|
+ const sceneNumParam = getCaseScenes(mergedList as any[]);
|
|
|
+
|
|
|
+ // 原本参数除起火对象均为空,新增 sceneNumParam
|
|
|
+ const payload: any = {
|
|
|
+ projectName: bindFire.value.projectName,
|
|
|
+ projectSn: "",
|
|
|
+ projectAddress: "",
|
|
|
+ mapUrl: "",
|
|
|
+ latAndLong: "",
|
|
|
+ latlng: "",
|
|
|
+ projectSite: "",
|
|
|
+ projectSiteCode: "",
|
|
|
+ organizerUsers: "",
|
|
|
+ fireReason: "",
|
|
|
+ accidentDate: "",
|
|
|
+ deptId: "",
|
|
|
+ field1: "",
|
|
|
+ field2: "",
|
|
|
+ field3: "",
|
|
|
+ field4: "",
|
|
|
+ field5: "",
|
|
|
+ field6: "",
|
|
|
+ field7: "",
|
|
|
+ field8: "",
|
|
|
+ field9: "",
|
|
|
+ field10: "",
|
|
|
+ sceneNumParam,
|
|
|
+ };
|
|
|
+
|
|
|
+ await addFire(payload as any);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 编辑:保持原校验与提交流程
|
|
|
if (!bindFire.value.latAndLong || !bindFire.value.latAndLong.trim()) {
|
|
|
ElMessage.error("详细地址不能为空");
|
|
|
throw "详细地址不能为空!";
|
|
|
@@ -163,21 +404,11 @@ defineExpose<QuiskExpose>({
|
|
|
|
|
|
bindFire.value.accidentDate = dateFormat(accidentDate.value, "yyyy-MM-dd");
|
|
|
bindFire.value.projectSiteCode = getCode(place, bindFire.value.projectSite);
|
|
|
-
|
|
|
- // 保存数据
|
|
|
- if (bindFire.value.id) {
|
|
|
- await setFire(bindFire.value);
|
|
|
- } else {
|
|
|
- await addFire(bindFire.value as any);
|
|
|
- }
|
|
|
-
|
|
|
- // 保存成功后,刷新fireDetails页面的数据
|
|
|
- // 通过事件总线或全局事件触发刷新
|
|
|
- window.location.reload()
|
|
|
+ await setFire(bindFire.value);
|
|
|
},
|
|
|
});
|
|
|
|
|
|
-// 打开地图弹窗选择地址(与 basicInfo.vue 一致)
|
|
|
+// 打开地图弹窗选择地址(仅编辑模式使用)
|
|
|
const searchAMapAddress = async () => {
|
|
|
showMapDialog.value = true;
|
|
|
};
|
|
|
@@ -185,12 +416,57 @@ const searchAMapAddress = async () => {
|
|
|
// 处理地图弹窗的确认事件(与 basicInfo.vue 一致)
|
|
|
const handleMapConfirm = (LocationInfo: any) => {
|
|
|
const { cityname, adname, address, name, location } = LocationInfo || {};
|
|
|
- // 拼接显示地址
|
|
|
bindFire.value.mapUrl = `${cityname || ''}${adname || ''}${address || ''}${name || ''}`;
|
|
|
- // 写入经纬度
|
|
|
if (location && typeof location.lat !== 'undefined' && typeof location.lng !== 'undefined') {
|
|
|
bindFire.value.latlng = bindFire.value.latAndLong = `${location.lat},${location.lng}`;
|
|
|
}
|
|
|
showMapDialog.value = false;
|
|
|
};
|
|
|
</script>
|
|
|
+
|
|
|
+<style lang="scss" scoped>
|
|
|
+.scene-edit-dialog :deep(.el-dialog__body) {
|
|
|
+ padding-top: 8px;
|
|
|
+}
|
|
|
+
|
|
|
+.dialog-filter-row {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ gap: 16px;
|
|
|
+ margin-bottom: 10px;
|
|
|
+}
|
|
|
+
|
|
|
+.dialog-filter-row .filter-item {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+}
|
|
|
+.dialog-filter-row .filter-item .label {
|
|
|
+ width: 60px;
|
|
|
+ margin-right: 8px;
|
|
|
+ color: rgba(0,0,0,.85);
|
|
|
+}
|
|
|
+.live-search-tip {
|
|
|
+ margin-left: 8px;
|
|
|
+ color: #f56c6c;
|
|
|
+ font-size: 12px;
|
|
|
+}
|
|
|
+.scene-form-item{
|
|
|
+ flex-direction: column;
|
|
|
+ gap: 12px;
|
|
|
+ .scene-form-item-content{
|
|
|
+ border: 1px solid #f5f5f5;
|
|
|
+ padding: 10px;
|
|
|
+ :deep(.el-table-column--selection ) {
|
|
|
+ .cell {
|
|
|
+ width: 30px;
|
|
|
+ margin-left: 4px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+/* 已导入的行:选中且置灰不可操作 */
|
|
|
+.is-imported-row {
|
|
|
+ opacity: 0.6;
|
|
|
+ pointer-events: none;
|
|
|
+}
|
|
|
+</style>
|