2025-11-26 16:28:14 +08:00
|
|
|
|
<template>
|
2025-11-28 12:58:45 +08:00
|
|
|
|
<div class="task-manage-page">
|
|
|
|
|
|
<div class="toolbar-container">
|
|
|
|
|
|
<div class="search-box">
|
2025-11-26 16:28:14 +08:00
|
|
|
|
<el-input
|
|
|
|
|
|
v-model="searchKeyword"
|
|
|
|
|
|
placeholder="请输入关键词进行搜索"
|
|
|
|
|
|
prefix-icon="el-icon-search"
|
|
|
|
|
|
clearable
|
|
|
|
|
|
size="small"
|
2025-12-05 10:46:19 +08:00
|
|
|
|
@keyup.enter.native="handleSearch"
|
2025-11-26 16:28:14 +08:00
|
|
|
|
></el-input>
|
2025-12-05 10:46:19 +08:00
|
|
|
|
<el-button
|
|
|
|
|
|
class="forest-btn search-btn"
|
|
|
|
|
|
size="small"
|
|
|
|
|
|
icon="el-icon-search"
|
|
|
|
|
|
@click="handleSearch"
|
|
|
|
|
|
>搜索</el-button>
|
2025-11-26 16:28:14 +08:00
|
|
|
|
</div>
|
2025-11-28 12:58:45 +08:00
|
|
|
|
<div class="toolbar-actions">
|
|
|
|
|
|
<el-button class="forest-btn" size="medium" icon="el-icon-download" @click="openBatchDownloadDialog">
|
2025-12-05 10:46:19 +08:00
|
|
|
|
批量数据下载
|
2025-11-28 12:58:45 +08:00
|
|
|
|
</el-button>
|
|
|
|
|
|
<el-button class="forest-btn ghost" size="medium" icon="el-icon-copy-document" @click="ExchangeData()">
|
|
|
|
|
|
任务数据复制
|
2025-11-26 16:28:14 +08:00
|
|
|
|
</el-button>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<el-table
|
|
|
|
|
|
id="tableStyle"
|
|
|
|
|
|
:data="filteredData"
|
|
|
|
|
|
:height="720"
|
|
|
|
|
|
stripe
|
|
|
|
|
|
border
|
|
|
|
|
|
highlight-current-row
|
|
|
|
|
|
header-cell-class-name="sinCl"
|
|
|
|
|
|
:default-sort = "{prop: 'date', order: 'descending'}"
|
|
|
|
|
|
>
|
|
|
|
|
|
<el-table-column
|
|
|
|
|
|
label="序号"
|
|
|
|
|
|
sortable
|
|
|
|
|
|
type="index"
|
|
|
|
|
|
min-width="80"
|
|
|
|
|
|
></el-table-column>
|
|
|
|
|
|
<el-table-column
|
|
|
|
|
|
prop="taskName"
|
|
|
|
|
|
label="任务名称"
|
|
|
|
|
|
sortable
|
|
|
|
|
|
min-width="80"
|
|
|
|
|
|
></el-table-column>
|
|
|
|
|
|
<el-table-column
|
|
|
|
|
|
prop="databaseName"
|
|
|
|
|
|
label="数据库名称"
|
|
|
|
|
|
sortable
|
|
|
|
|
|
min-width="95"
|
|
|
|
|
|
></el-table-column>
|
|
|
|
|
|
<el-table-column
|
|
|
|
|
|
prop="introduction"
|
|
|
|
|
|
label="任务备注"
|
|
|
|
|
|
sortable
|
|
|
|
|
|
min-width="120"
|
|
|
|
|
|
></el-table-column>
|
|
|
|
|
|
<el-table-column
|
|
|
|
|
|
prop="createTime"
|
|
|
|
|
|
label="创建时间"
|
|
|
|
|
|
sortable
|
|
|
|
|
|
min-width="100"
|
|
|
|
|
|
></el-table-column>
|
|
|
|
|
|
<el-table-column
|
|
|
|
|
|
prop="modifyTime"
|
|
|
|
|
|
label="修改时间"
|
|
|
|
|
|
sortable
|
|
|
|
|
|
min-width="100"
|
|
|
|
|
|
></el-table-column>
|
|
|
|
|
|
<el-table-column
|
|
|
|
|
|
prop="operator"
|
|
|
|
|
|
label="操作人员"
|
|
|
|
|
|
min-width="80"
|
|
|
|
|
|
></el-table-column>
|
|
|
|
|
|
<el-table-column width="305" fixed="right" label="操作">
|
|
|
|
|
|
<template slot-scope="scope">
|
|
|
|
|
|
<el-button
|
|
|
|
|
|
type="text"
|
|
|
|
|
|
size="small"
|
|
|
|
|
|
@click.native.prevent="UploadShpData(scope.row.id)"
|
|
|
|
|
|
>上传shp数据</el-button
|
|
|
|
|
|
>
|
|
|
|
|
|
<el-button
|
|
|
|
|
|
type="text"
|
|
|
|
|
|
size="small"
|
|
|
|
|
|
@click.native.prevent="UploadXlsxData(scope.row.id)"
|
|
|
|
|
|
>上传xlsx文件</el-button
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
<el-button
|
|
|
|
|
|
@click.native.prevent="download(scope.row.id)"
|
|
|
|
|
|
type="text"
|
|
|
|
|
|
size="small"
|
|
|
|
|
|
>下载数据</el-button
|
|
|
|
|
|
>
|
|
|
|
|
|
<el-button type="text" size="small" @click="getTaskTpk(scope.row.id)"
|
|
|
|
|
|
>TPK管理</el-button
|
|
|
|
|
|
>
|
|
|
|
|
|
</template>
|
|
|
|
|
|
</el-table-column>
|
|
|
|
|
|
</el-table>
|
2025-12-05 10:46:19 +08:00
|
|
|
|
<!-- 分页组件 -->
|
|
|
|
|
|
<div class="pagination-container">
|
|
|
|
|
|
<el-pagination
|
|
|
|
|
|
@size-change="handleSizeChange"
|
|
|
|
|
|
@current-change="handleCurrentChange"
|
|
|
|
|
|
:current-page="pageNum"
|
|
|
|
|
|
:page-sizes="[10, 20, 50, 100]"
|
|
|
|
|
|
:page-size="pageSize"
|
|
|
|
|
|
layout="total, sizes, prev, pager, next, jumper"
|
|
|
|
|
|
:total="total"
|
|
|
|
|
|
></el-pagination>
|
|
|
|
|
|
</div>
|
2025-11-26 16:28:14 +08:00
|
|
|
|
<el-card class="box-card" v-show="tpkCardV">
|
|
|
|
|
|
<div slot="header" class="clearfix">
|
|
|
|
|
|
<span style="float: left; padding: 3px 0; font-size: 16px"
|
|
|
|
|
|
>{{ tpkTask }} TPK管理</span
|
|
|
|
|
|
>
|
|
|
|
|
|
<el-button
|
|
|
|
|
|
style="float: right; padding: 10px 0; color: #9dbbe7"
|
|
|
|
|
|
type="text"
|
|
|
|
|
|
@click="tpkCardV = false"
|
|
|
|
|
|
>关闭</el-button
|
|
|
|
|
|
>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<el-upload
|
|
|
|
|
|
accept=".tpk"
|
|
|
|
|
|
class="upload-demo"
|
|
|
|
|
|
action="tpk"
|
|
|
|
|
|
ref="uploadtpkfile"
|
|
|
|
|
|
:auto-upload="false"
|
|
|
|
|
|
:limit="1"
|
|
|
|
|
|
:before-upload="beforeTpkUpload"
|
|
|
|
|
|
:on-change="uploadTPK"
|
|
|
|
|
|
>
|
|
|
|
|
|
<el-button size="small" id="buttonStyle" plain>上传TPK文件</el-button>
|
|
|
|
|
|
</el-upload>
|
|
|
|
|
|
<div v-for="item in tpkDatas" :key="item.id" class="text">
|
|
|
|
|
|
{{ item.filename }}
|
|
|
|
|
|
<el-button
|
|
|
|
|
|
style="color: #9dbbe7"
|
|
|
|
|
|
type="text"
|
|
|
|
|
|
@click="deleteTpk(item.id)"
|
|
|
|
|
|
>删除</el-button
|
|
|
|
|
|
>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<el-pagination
|
|
|
|
|
|
:page-size="1"
|
|
|
|
|
|
:pager-count="5"
|
|
|
|
|
|
layout="prev, pager, next"
|
|
|
|
|
|
:total="tpkTotalP"
|
|
|
|
|
|
@current-change="getTaskTpkP"
|
|
|
|
|
|
>
|
|
|
|
|
|
</el-pagination>
|
|
|
|
|
|
</el-card>
|
|
|
|
|
|
<el-dialog
|
|
|
|
|
|
v-dialogDrag
|
|
|
|
|
|
class="taskDialog"
|
|
|
|
|
|
title="上传shp数据"
|
|
|
|
|
|
:visible.sync="UploadDialogVisible1"
|
|
|
|
|
|
:close-on-click-modal="false"
|
|
|
|
|
|
>
|
|
|
|
|
|
<div style="text-align: left; margin-top: 20px">
|
|
|
|
|
|
<el-form ref="shpform" :model="shpform" label-width="80px">
|
|
|
|
|
|
<el-form-item label="shp文件" style="margin-bottom: 10px !important">
|
|
|
|
|
|
<el-upload
|
|
|
|
|
|
accept=".shp"
|
|
|
|
|
|
class="upload-demo"
|
|
|
|
|
|
action="shp"
|
|
|
|
|
|
ref="uploadshpfile"
|
|
|
|
|
|
:auto-upload="false"
|
|
|
|
|
|
:limit="1"
|
|
|
|
|
|
:before-upload="beforeShpUpload"
|
|
|
|
|
|
:on-change="getFile"
|
|
|
|
|
|
:on-remove="removeFile"
|
|
|
|
|
|
>
|
|
|
|
|
|
<el-button size="small" id="buttonStyle" plain
|
|
|
|
|
|
>选择文件</el-button
|
|
|
|
|
|
>
|
|
|
|
|
|
</el-upload>
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item label="shx文件" style="margin-bottom: 10px !important">
|
|
|
|
|
|
<el-upload
|
|
|
|
|
|
accept=".shx"
|
|
|
|
|
|
class="upload-demo"
|
|
|
|
|
|
action="shx"
|
|
|
|
|
|
ref="uploadshxfile"
|
|
|
|
|
|
:auto-upload="false"
|
|
|
|
|
|
:limit="1"
|
|
|
|
|
|
:before-upload="beforeShxUpload"
|
|
|
|
|
|
:on-change="getShxFile"
|
|
|
|
|
|
:on-remove="removeShxFile"
|
|
|
|
|
|
>
|
|
|
|
|
|
<el-button size="small" id="buttonStyle" plain
|
|
|
|
|
|
>选择文件</el-button
|
|
|
|
|
|
>
|
|
|
|
|
|
</el-upload>
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item label="dbf文件" style="margin-bottom: 10px !important">
|
|
|
|
|
|
<el-upload
|
|
|
|
|
|
accept=".dbf"
|
|
|
|
|
|
class="upload-demo"
|
|
|
|
|
|
action="dbf"
|
|
|
|
|
|
ref="uploaddbffile"
|
|
|
|
|
|
:auto-upload="false"
|
|
|
|
|
|
:limit="1"
|
|
|
|
|
|
:before-upload="beforeDbfUpload"
|
|
|
|
|
|
:on-change="getDbfFile"
|
|
|
|
|
|
:on-remove="removeDbfFile"
|
|
|
|
|
|
>
|
|
|
|
|
|
<el-button size="small" id="buttonStyle" plain
|
|
|
|
|
|
>选择文件</el-button
|
|
|
|
|
|
>
|
|
|
|
|
|
</el-upload>
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item label="表">
|
|
|
|
|
|
<el-select
|
|
|
|
|
|
v-model="shpform.tableName"
|
|
|
|
|
|
style="width: 80%"
|
|
|
|
|
|
placeholder="请选择表"
|
|
|
|
|
|
clearable
|
|
|
|
|
|
>
|
|
|
|
|
|
<el-option
|
|
|
|
|
|
v-for="item in tableOptions"
|
|
|
|
|
|
:key="item.tableName"
|
|
|
|
|
|
:label="item.tableChineseName"
|
|
|
|
|
|
:value="item.tableName"
|
|
|
|
|
|
></el-option>
|
|
|
|
|
|
</el-select>
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
</el-form>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<el-button size="small" id="buttonStyle" @click="UploadShp1()"
|
|
|
|
|
|
>下一步</el-button
|
|
|
|
|
|
>
|
|
|
|
|
|
</el-dialog>
|
|
|
|
|
|
<el-dialog
|
|
|
|
|
|
v-dialogDrag
|
|
|
|
|
|
class="taskDialog"
|
|
|
|
|
|
title="上传shp数据"
|
|
|
|
|
|
:visible.sync="UploadDialogVisible2"
|
|
|
|
|
|
:close-on-click-modal="false"
|
|
|
|
|
|
>
|
|
|
|
|
|
<el-table
|
|
|
|
|
|
:data="shpData"
|
|
|
|
|
|
:height="340"
|
|
|
|
|
|
stripe
|
|
|
|
|
|
highlight-current-row
|
|
|
|
|
|
class="tb-edit"
|
|
|
|
|
|
style="width: 100%"
|
|
|
|
|
|
>
|
|
|
|
|
|
<el-table-column type="index" width="40"></el-table-column>
|
|
|
|
|
|
<el-table-column
|
|
|
|
|
|
prop="srcTableField"
|
|
|
|
|
|
label="源字段"
|
|
|
|
|
|
min-width="80"
|
|
|
|
|
|
></el-table-column>
|
|
|
|
|
|
<el-table-column prop="destTableField" label="目标字段" min-width="80">
|
|
|
|
|
|
<template slot-scope="scope">
|
|
|
|
|
|
<el-select
|
|
|
|
|
|
size="small"
|
|
|
|
|
|
v-model="scope.row.destTableField"
|
|
|
|
|
|
placeholder="请选择"
|
|
|
|
|
|
>
|
|
|
|
|
|
<el-option
|
|
|
|
|
|
v-for="item in destFieldsOptions"
|
|
|
|
|
|
:key="item"
|
|
|
|
|
|
:label="item"
|
|
|
|
|
|
:value="item"
|
|
|
|
|
|
></el-option>
|
|
|
|
|
|
</el-select>
|
|
|
|
|
|
</template>
|
|
|
|
|
|
</el-table-column>
|
|
|
|
|
|
<el-table-column fixed="right" width="120">
|
|
|
|
|
|
<template slot-scope="scope">
|
|
|
|
|
|
<el-button
|
|
|
|
|
|
@click.native.prevent="deleteField(scope.$index)"
|
|
|
|
|
|
type="text"
|
|
|
|
|
|
size="small"
|
|
|
|
|
|
>删除</el-button
|
|
|
|
|
|
>
|
|
|
|
|
|
</template>
|
|
|
|
|
|
</el-table-column>
|
|
|
|
|
|
</el-table>
|
|
|
|
|
|
<el-button size="small" @click="backShp1()">上一步</el-button>
|
|
|
|
|
|
<el-button id="buttonS" size="small" @click="UploadShp2()"
|
|
|
|
|
|
>完成</el-button
|
|
|
|
|
|
>
|
|
|
|
|
|
</el-dialog>
|
|
|
|
|
|
<el-dialog
|
|
|
|
|
|
v-dialogDrag
|
|
|
|
|
|
class="taskDialog"
|
|
|
|
|
|
title="下载数据"
|
|
|
|
|
|
:visible.sync="DownloadDialogVisible"
|
|
|
|
|
|
:close-on-click-modal="false"
|
|
|
|
|
|
>
|
|
|
|
|
|
<div style="text-align: left; margin-top: 20px">
|
|
|
|
|
|
<el-form ref="shpform" :model="shpform" label-width="120px">
|
|
|
|
|
|
<el-form-item label="表">
|
|
|
|
|
|
<el-select
|
|
|
|
|
|
v-model="shpform.tableName"
|
|
|
|
|
|
style="width: 90%"
|
|
|
|
|
|
placeholder="请选择表"
|
|
|
|
|
|
clearable
|
|
|
|
|
|
>
|
|
|
|
|
|
<el-option
|
|
|
|
|
|
v-for="item in tableOptions"
|
|
|
|
|
|
:key="item.tableName"
|
|
|
|
|
|
:label="item.tableChineseName"
|
|
|
|
|
|
:value="item.tableName"
|
|
|
|
|
|
></el-option>
|
|
|
|
|
|
</el-select>
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item label="dbf属性表编码">
|
|
|
|
|
|
<el-select
|
|
|
|
|
|
v-model="shpform.codeType"
|
|
|
|
|
|
style="width: 90%"
|
|
|
|
|
|
placeholder="请选择编码方式"
|
|
|
|
|
|
clearable
|
|
|
|
|
|
>
|
|
|
|
|
|
<el-option
|
|
|
|
|
|
v-for="item in codeOptions"
|
|
|
|
|
|
:key="item.label"
|
|
|
|
|
|
:label="item.label"
|
|
|
|
|
|
:value="item.value"
|
|
|
|
|
|
></el-option>
|
|
|
|
|
|
</el-select>
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
</el-form>
|
|
|
|
|
|
<div style="text-align: center; margin-bottom: 10px">
|
|
|
|
|
|
ArcGIS:10-10.2版本默认dbf编码为gbk;10.2.1+的版本默认dbf编码为utf-8。
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<el-button size="small" @click="DownloadData()">确定</el-button>
|
|
|
|
|
|
</el-dialog>
|
|
|
|
|
|
<el-dialog
|
|
|
|
|
|
v-dialogDrag
|
|
|
|
|
|
class="taskDialog"
|
|
|
|
|
|
title="上传xlsx文件"
|
|
|
|
|
|
:visible.sync="UploadDialogVisible3"
|
|
|
|
|
|
:close-on-click-modal="false"
|
|
|
|
|
|
>
|
|
|
|
|
|
<div style="text-align: left; margin-top: 20px">
|
|
|
|
|
|
<el-form ref="xlsxform" :model="xlsxform" label-width="80px">
|
|
|
|
|
|
<el-form-item label="xlsx文件">
|
|
|
|
|
|
<el-upload
|
|
|
|
|
|
accept=".xlsx, .xls"
|
|
|
|
|
|
class="upload-demo"
|
|
|
|
|
|
action="xlsx"
|
|
|
|
|
|
ref="uploadxlsxfile"
|
|
|
|
|
|
:auto-upload="false"
|
|
|
|
|
|
:limit="1"
|
|
|
|
|
|
:before-upload="beforeXlsxUpload"
|
|
|
|
|
|
:on-change="getFile"
|
|
|
|
|
|
:on-remove="removeFile"
|
|
|
|
|
|
>
|
|
|
|
|
|
<el-button size="small" type="primary" plain>选择文件</el-button>
|
|
|
|
|
|
</el-upload>
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item label="表">
|
|
|
|
|
|
<el-select
|
|
|
|
|
|
v-model="shpform.tableName"
|
|
|
|
|
|
style="width: 60%; margin-bottom: 10px"
|
|
|
|
|
|
placeholder="请选择表"
|
|
|
|
|
|
clearable
|
|
|
|
|
|
>
|
|
|
|
|
|
<el-option
|
|
|
|
|
|
v-for="item in tableOptions"
|
|
|
|
|
|
:key="item.tableName"
|
|
|
|
|
|
:label="item.tableChineseName"
|
|
|
|
|
|
:value="item.tableName"
|
|
|
|
|
|
></el-option>
|
|
|
|
|
|
</el-select>
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
</el-form>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<el-button size="small" @click="UploadShp3()">下一步</el-button>
|
|
|
|
|
|
</el-dialog>
|
|
|
|
|
|
<el-dialog
|
|
|
|
|
|
v-dialogDrag
|
|
|
|
|
|
class="taskDialog"
|
|
|
|
|
|
title="上传xlsx文件"
|
|
|
|
|
|
:visible.sync="UploadDialogVisible4"
|
|
|
|
|
|
:close-on-click-modal="false"
|
|
|
|
|
|
>
|
|
|
|
|
|
<el-table
|
|
|
|
|
|
:data="shpData"
|
|
|
|
|
|
:height="340"
|
|
|
|
|
|
stripe
|
|
|
|
|
|
highlight-current-row
|
|
|
|
|
|
class="tb-edit"
|
|
|
|
|
|
style="width: 100%"
|
|
|
|
|
|
>
|
|
|
|
|
|
<el-table-column type="index" width="40"></el-table-column>
|
|
|
|
|
|
<el-table-column
|
|
|
|
|
|
prop="srcTableField"
|
|
|
|
|
|
label="源字段"
|
|
|
|
|
|
min-width="80"
|
|
|
|
|
|
></el-table-column>
|
|
|
|
|
|
<el-table-column prop="destTableField" label="目标字段" min-width="80">
|
|
|
|
|
|
<template slot-scope="scope">
|
|
|
|
|
|
<el-select
|
|
|
|
|
|
size="small"
|
|
|
|
|
|
v-model="scope.row.destTableField"
|
|
|
|
|
|
placeholder="请选择"
|
|
|
|
|
|
>
|
|
|
|
|
|
<el-option
|
|
|
|
|
|
v-for="item in destFieldsOptions"
|
|
|
|
|
|
:key="item"
|
|
|
|
|
|
:label="item"
|
|
|
|
|
|
:value="item"
|
|
|
|
|
|
></el-option>
|
|
|
|
|
|
</el-select>
|
|
|
|
|
|
</template>
|
|
|
|
|
|
</el-table-column>
|
|
|
|
|
|
<el-table-column fixed="right" width="120">
|
|
|
|
|
|
<template slot-scope="scope">
|
|
|
|
|
|
<el-button
|
|
|
|
|
|
@click.native.prevent="deleteField(scope.$index)"
|
|
|
|
|
|
type="text"
|
|
|
|
|
|
size="small"
|
|
|
|
|
|
>删除</el-button
|
|
|
|
|
|
>
|
|
|
|
|
|
</template>
|
|
|
|
|
|
</el-table-column>
|
|
|
|
|
|
</el-table>
|
|
|
|
|
|
<el-button size="small" @click="backShp2()">上一步</el-button>
|
|
|
|
|
|
<el-button type="primary" size="small" @click="UploadShp4()"
|
|
|
|
|
|
>完成</el-button
|
|
|
|
|
|
>
|
|
|
|
|
|
</el-dialog>
|
|
|
|
|
|
<!--复制任务数据-->
|
|
|
|
|
|
<el-dialog
|
|
|
|
|
|
v-dialogDrag
|
|
|
|
|
|
class="taskDialog"
|
|
|
|
|
|
title="任务数据复制"
|
|
|
|
|
|
:visible.sync="ExchangeDialogVisible1"
|
|
|
|
|
|
:close-on-click-modal="false"
|
|
|
|
|
|
>
|
|
|
|
|
|
<div style="text-align: left">
|
|
|
|
|
|
<el-form ref="exchangeform" :model="exchangeform" label-width="80px">
|
|
|
|
|
|
<el-form-item label="源任务" style="margin-top: 20px">
|
|
|
|
|
|
<el-select
|
|
|
|
|
|
v-model="exchangeform.srcTask"
|
|
|
|
|
|
style="width: 90%"
|
|
|
|
|
|
placeholder="请选择任务"
|
|
|
|
|
|
clearable
|
|
|
|
|
|
>
|
|
|
|
|
|
<el-option
|
|
|
|
|
|
v-for="item in srcTaskOptions"
|
|
|
|
|
|
:key="item.id"
|
|
|
|
|
|
:label="item.taskName"
|
|
|
|
|
|
:value="item.id"
|
|
|
|
|
|
></el-option>
|
|
|
|
|
|
</el-select>
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item label="目标任务">
|
|
|
|
|
|
<el-select
|
|
|
|
|
|
v-model="exchangeform.destTask"
|
|
|
|
|
|
style="width: 90%"
|
|
|
|
|
|
placeholder="请选择任务"
|
|
|
|
|
|
clearable
|
|
|
|
|
|
>
|
|
|
|
|
|
<el-option
|
|
|
|
|
|
v-for="item in destTaskOptions"
|
|
|
|
|
|
:key="item.id"
|
|
|
|
|
|
:label="item.taskName"
|
|
|
|
|
|
:value="item.id"
|
|
|
|
|
|
></el-option>
|
|
|
|
|
|
</el-select>
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item label="是否抽查">
|
|
|
|
|
|
<el-checkbox v-model="exchangeform.isSelective"></el-checkbox>
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item
|
|
|
|
|
|
label="抽查方式"
|
|
|
|
|
|
v-show="exchangeform.isSelective == true"
|
|
|
|
|
|
>
|
|
|
|
|
|
<el-select
|
|
|
|
|
|
v-model="exchangeType"
|
|
|
|
|
|
style="width: 90%"
|
|
|
|
|
|
placeholder="请选择抽查方式"
|
|
|
|
|
|
clearable
|
|
|
|
|
|
>
|
|
|
|
|
|
<el-option
|
|
|
|
|
|
v-for="item in exTypeOptions"
|
|
|
|
|
|
:key="item.value"
|
|
|
|
|
|
:label="item.label"
|
|
|
|
|
|
:value="item.value"
|
|
|
|
|
|
></el-option>
|
|
|
|
|
|
</el-select>
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
<!-- todo:添加where语句抽查输入框 -->
|
|
|
|
|
|
<el-form-item
|
|
|
|
|
|
label="抽查数量"
|
|
|
|
|
|
v-show="exchangeform.isSelective == true && exchangeType === 2"
|
|
|
|
|
|
>
|
|
|
|
|
|
<el-input
|
|
|
|
|
|
style="width: 90%"
|
|
|
|
|
|
v-model="exchangeform.selectDataNum"
|
|
|
|
|
|
></el-input>
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item
|
|
|
|
|
|
label="抽查比例"
|
|
|
|
|
|
v-show="exchangeform.isSelective == true && exchangeType === 1"
|
|
|
|
|
|
>
|
|
|
|
|
|
<el-input
|
|
|
|
|
|
style="width: 87%"
|
|
|
|
|
|
v-model="exchangeform.selectDataNum"
|
|
|
|
|
|
></el-input>
|
|
|
|
|
|
%
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item
|
|
|
|
|
|
label="抽查语句"
|
|
|
|
|
|
v-show="exchangeform.isSelective == true"
|
|
|
|
|
|
>
|
|
|
|
|
|
<el-input
|
|
|
|
|
|
style="width: 90%"
|
|
|
|
|
|
v-model="exchangeform.selectWhereClause"
|
|
|
|
|
|
></el-input>
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
</el-form>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<el-button size="small" id="buttonStyle" @click="exchangeData1()"
|
|
|
|
|
|
>下一步</el-button
|
|
|
|
|
|
>
|
|
|
|
|
|
</el-dialog>
|
|
|
|
|
|
<el-dialog
|
|
|
|
|
|
v-dialogDrag
|
|
|
|
|
|
class="taskDialog"
|
|
|
|
|
|
title="任务数据复制"
|
|
|
|
|
|
:visible.sync="ExchangeDialogVisible2"
|
|
|
|
|
|
:close-on-click-modal="false"
|
|
|
|
|
|
>
|
|
|
|
|
|
<div style="text-align: left">
|
|
|
|
|
|
<el-form
|
|
|
|
|
|
ref="exchangeform"
|
|
|
|
|
|
:model="exchangeformTable"
|
|
|
|
|
|
label-width="80px"
|
|
|
|
|
|
>
|
|
|
|
|
|
<el-form-item label="源表">
|
|
|
|
|
|
<el-select
|
|
|
|
|
|
v-model="exchangeformTable.srcTable"
|
|
|
|
|
|
style="width: 90%; margin-bottom: 10px"
|
|
|
|
|
|
placeholder="请选择表"
|
|
|
|
|
|
@change="changeTable()"
|
|
|
|
|
|
clearable
|
|
|
|
|
|
>
|
|
|
|
|
|
<el-option
|
|
|
|
|
|
v-for="item in tableOptions1"
|
|
|
|
|
|
:key="item.tableName"
|
|
|
|
|
|
:label="item.tableChineseName"
|
|
|
|
|
|
:value="item.tableName"
|
|
|
|
|
|
></el-option>
|
|
|
|
|
|
</el-select>
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item label="目标表">
|
|
|
|
|
|
<el-select
|
|
|
|
|
|
v-model="exchangeformTable.destTable"
|
|
|
|
|
|
style="width: 90%; margin-bottom: 10px"
|
|
|
|
|
|
placeholder="请选择表"
|
|
|
|
|
|
clearable
|
|
|
|
|
|
>
|
|
|
|
|
|
<el-option
|
|
|
|
|
|
v-for="item in tableOptions2"
|
|
|
|
|
|
:key="item.tableName"
|
|
|
|
|
|
:label="item.tableChineseName"
|
|
|
|
|
|
:value="item.tableName"
|
|
|
|
|
|
></el-option>
|
|
|
|
|
|
</el-select>
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
</el-form>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<el-button
|
|
|
|
|
|
size="small"
|
|
|
|
|
|
id="buttonStyle"
|
|
|
|
|
|
@click="
|
|
|
|
|
|
ExchangeDialogVisible1 = true;
|
|
|
|
|
|
ExchangeDialogVisible2 = false;
|
|
|
|
|
|
"
|
|
|
|
|
|
>上一步</el-button
|
|
|
|
|
|
>
|
|
|
|
|
|
<el-button id="buttonStyle" size="small" @click="exchangeData2()"
|
|
|
|
|
|
>下一步</el-button
|
|
|
|
|
|
>
|
|
|
|
|
|
</el-dialog>
|
|
|
|
|
|
<!-- 批量数据下载 -->
|
|
|
|
|
|
<el-dialog
|
|
|
|
|
|
v-dialogDrag
|
|
|
|
|
|
title="批量数据下载"
|
|
|
|
|
|
:visible.sync="batchDownloadDialogVisible"
|
|
|
|
|
|
:close-on-click-modal="false"
|
|
|
|
|
|
width="500px"
|
|
|
|
|
|
>
|
|
|
|
|
|
<!-- 全选 / 全不选 按钮 -->
|
|
|
|
|
|
<div style="margin-bottom: 10px; text-align: right;">
|
|
|
|
|
|
<el-button type="text" @click="selectAll">全选</el-button>
|
|
|
|
|
|
<el-button type="text" @click="clearAll">全不选</el-button>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 可滚动内容区域 -->
|
|
|
|
|
|
<div style="max-height: 600px; overflow-y: auto; padding-right: 10px;">
|
|
|
|
|
|
<el-checkbox-group v-model="batchDownloadSelectedTasks" style="width: 100%">
|
|
|
|
|
|
<el-checkbox
|
|
|
|
|
|
v-for="task in tasksData"
|
|
|
|
|
|
:key="task.id"
|
|
|
|
|
|
:label="task.id"
|
|
|
|
|
|
>
|
|
|
|
|
|
{{ task.taskName }}
|
|
|
|
|
|
</el-checkbox>
|
|
|
|
|
|
</el-checkbox-group>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 固定底部按钮 -->
|
|
|
|
|
|
<span slot="footer" class="dialog-footer">
|
|
|
|
|
|
<el-button size="small" @click="batchDownloadDialogVisible = false">取消</el-button>
|
|
|
|
|
|
<el-button type="primary" size="small" @click="batchDownload">下载</el-button>
|
|
|
|
|
|
</span>
|
|
|
|
|
|
</el-dialog>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- -->
|
|
|
|
|
|
<el-dialog
|
|
|
|
|
|
v-dialogDrag
|
|
|
|
|
|
class="taskDialog"
|
|
|
|
|
|
title="任务数据复制"
|
|
|
|
|
|
:visible.sync="ExchangeDialogVisible3"
|
|
|
|
|
|
:close-on-click-modal="false"
|
|
|
|
|
|
>
|
|
|
|
|
|
<el-table
|
|
|
|
|
|
:data="shpData"
|
|
|
|
|
|
:height="340"
|
|
|
|
|
|
stripe
|
|
|
|
|
|
highlight-current-row
|
|
|
|
|
|
class="tb-edit"
|
|
|
|
|
|
style="width: 100%"
|
|
|
|
|
|
>
|
|
|
|
|
|
<el-table-column type="index" width="40"></el-table-column>
|
|
|
|
|
|
<el-table-column
|
|
|
|
|
|
prop="srcTableField"
|
|
|
|
|
|
label="源字段"
|
|
|
|
|
|
min-width="80"
|
|
|
|
|
|
></el-table-column>
|
|
|
|
|
|
<el-table-column prop="destTableField" label="目标字段" min-width="80">
|
|
|
|
|
|
<template slot-scope="scope">
|
|
|
|
|
|
<el-select
|
|
|
|
|
|
size="small"
|
|
|
|
|
|
v-model="scope.row.destTableField"
|
|
|
|
|
|
placeholder="请选择"
|
|
|
|
|
|
>
|
|
|
|
|
|
<el-option
|
|
|
|
|
|
v-for="item in destFieldsOptions"
|
|
|
|
|
|
:key="item"
|
|
|
|
|
|
:label="item"
|
|
|
|
|
|
:value="item"
|
|
|
|
|
|
></el-option>
|
|
|
|
|
|
</el-select>
|
|
|
|
|
|
</template>
|
|
|
|
|
|
</el-table-column>
|
|
|
|
|
|
<el-table-column fixed="right" width="120">
|
|
|
|
|
|
<template slot-scope="scope">
|
|
|
|
|
|
<el-button
|
|
|
|
|
|
@click.native.prevent="deleteField(scope.$index)"
|
|
|
|
|
|
type="text"
|
|
|
|
|
|
size="small"
|
|
|
|
|
|
>删除</el-button
|
|
|
|
|
|
>
|
|
|
|
|
|
</template>
|
|
|
|
|
|
</el-table-column>
|
|
|
|
|
|
</el-table>
|
|
|
|
|
|
<el-button
|
|
|
|
|
|
size="small"
|
|
|
|
|
|
@click="
|
|
|
|
|
|
ExchangeDialogVisible2 = true;
|
|
|
|
|
|
ExchangeDialogVisible3 = false;
|
|
|
|
|
|
"
|
|
|
|
|
|
>上一步</el-button
|
|
|
|
|
|
>
|
|
|
|
|
|
<el-button type="primary" size="small" @click="exchangeData3()"
|
|
|
|
|
|
>完成</el-button
|
|
|
|
|
|
>
|
|
|
|
|
|
</el-dialog>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
|
|
|
import { ajax as request } from "@/request.js";
|
|
|
|
|
|
import axios from "axios";
|
|
|
|
|
|
export default {
|
|
|
|
|
|
data() {
|
|
|
|
|
|
return {
|
|
|
|
|
|
tasksData: [],
|
|
|
|
|
|
srcTaskOptions: [],
|
|
|
|
|
|
destTaskOptions: [],
|
|
|
|
|
|
UploadDialogVisible1: false,
|
|
|
|
|
|
UploadDialogVisible2: false,
|
|
|
|
|
|
tableOptions: [],
|
|
|
|
|
|
tableOptions1: [],
|
|
|
|
|
|
tableOptions2: [],
|
|
|
|
|
|
codeOptions: [
|
|
|
|
|
|
{ value: false, label: "gbk" },
|
|
|
|
|
|
{ value: true, label: "utf-8" },
|
|
|
|
|
|
],
|
|
|
|
|
|
shpform: {
|
|
|
|
|
|
tableName: "",
|
|
|
|
|
|
codeType: "",
|
|
|
|
|
|
},
|
|
|
|
|
|
xlsxform: {
|
|
|
|
|
|
tableName: "",
|
|
|
|
|
|
},
|
|
|
|
|
|
taskIndex: "",
|
|
|
|
|
|
fileList: [],
|
|
|
|
|
|
dbfList: [],
|
|
|
|
|
|
shxList: [],
|
|
|
|
|
|
shpData: [],
|
|
|
|
|
|
srcFieldsOptions: [],
|
|
|
|
|
|
destFieldsOptions: [],
|
|
|
|
|
|
DownloadDialogVisible: false,
|
|
|
|
|
|
UploadDialogVisible3: false,
|
|
|
|
|
|
UploadDialogVisible4: false,
|
|
|
|
|
|
ExchangeDialogVisible1: false,
|
|
|
|
|
|
ExchangeDialogVisible2: false,
|
|
|
|
|
|
ExchangeDialogVisible3: false,
|
|
|
|
|
|
exchangeform: {
|
|
|
|
|
|
srcTask: "",
|
|
|
|
|
|
destTask: "",
|
|
|
|
|
|
isSelective: false,
|
|
|
|
|
|
selectDataNum: "",
|
|
|
|
|
|
selectWhereClause: "",
|
|
|
|
|
|
},
|
|
|
|
|
|
exchangeformTable: {
|
|
|
|
|
|
srcTable: "",
|
|
|
|
|
|
destTable: "",
|
|
|
|
|
|
},
|
|
|
|
|
|
tablemapping: [],
|
|
|
|
|
|
exTypeOptions: [
|
|
|
|
|
|
{ label: "按比例抽查", value: 1 },
|
|
|
|
|
|
{ label: "按数量抽查", value: 2 },
|
|
|
|
|
|
],
|
|
|
|
|
|
exchangeType: "",
|
|
|
|
|
|
tpkTotalP: 100,
|
|
|
|
|
|
tpkTask: "",
|
|
|
|
|
|
tpkTaskId: "",
|
|
|
|
|
|
tpkCardV: false,
|
|
|
|
|
|
currentPage: "",
|
|
|
|
|
|
tpkDatas: [],
|
|
|
|
|
|
searchKeyword: "", // 搜索关键词
|
|
|
|
|
|
filteredData: [], // 过滤后的数据
|
|
|
|
|
|
batchDownloadDialogVisible: false, // 批量下载对话框显示
|
|
|
|
|
|
batchDownloadSelectedTasks: [], // 勾选的任务ID
|
2025-12-05 10:46:19 +08:00
|
|
|
|
// 分页相关属性
|
|
|
|
|
|
pageNum: 1,
|
|
|
|
|
|
pageSize: 10,
|
|
|
|
|
|
total: 0,
|
|
|
|
|
|
totalPages: 0
|
2025-11-26 16:28:14 +08:00
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
},
|
|
|
|
|
|
methods: {
|
|
|
|
|
|
selectAll() {
|
|
|
|
|
|
// 将所有任务 id 填入选中数组
|
|
|
|
|
|
this.batchDownloadSelectedTasks = this.tasksData.map(task => task.id);
|
|
|
|
|
|
},
|
|
|
|
|
|
clearAll() {
|
|
|
|
|
|
// 清空选中数组
|
|
|
|
|
|
this.batchDownloadSelectedTasks = [];
|
|
|
|
|
|
},
|
|
|
|
|
|
// 打开批量下载对话框
|
|
|
|
|
|
openBatchDownloadDialog() {
|
|
|
|
|
|
this.batchDownloadSelectedTasks = [];
|
|
|
|
|
|
this.batchDownloadDialogVisible = true;
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
// 批量下载
|
|
|
|
|
|
batchDownload() {
|
|
|
|
|
|
if (this.batchDownloadSelectedTasks.length === 0) {
|
|
|
|
|
|
this.$message.info("请先选择任务");
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 关闭弹窗
|
|
|
|
|
|
this.batchDownloadDialogVisible = false;
|
|
|
|
|
|
|
|
|
|
|
|
// 构建下载链接
|
|
|
|
|
|
const taskIds = this.batchDownloadSelectedTasks.join(',');
|
|
|
|
|
|
const url = `/export/batchGdbExport?taskIds=${taskIds}`;
|
|
|
|
|
|
|
|
|
|
|
|
// 打开新窗口触发下载
|
|
|
|
|
|
window.open(url, "_blank");
|
|
|
|
|
|
|
|
|
|
|
|
this.$message.success("批量下载请求已发起");
|
|
|
|
|
|
},
|
2025-12-05 10:46:19 +08:00
|
|
|
|
// 搜索处理方法 - 搜索时重置到第一页并重新加载数据
|
2025-11-26 16:28:14 +08:00
|
|
|
|
handleSearch() {
|
2025-12-05 10:46:19 +08:00
|
|
|
|
this.pageNum = 1;
|
|
|
|
|
|
this.init();
|
|
|
|
|
|
},
|
|
|
|
|
|
// 分页大小改变处理
|
|
|
|
|
|
handleSizeChange(val) {
|
|
|
|
|
|
this.pageSize = val;
|
|
|
|
|
|
this.pageNum = 1;
|
|
|
|
|
|
this.init();
|
|
|
|
|
|
},
|
|
|
|
|
|
// 当前页改变处理
|
|
|
|
|
|
handleCurrentChange(val) {
|
|
|
|
|
|
this.pageNum = val;
|
|
|
|
|
|
this.init();
|
2025-11-26 16:28:14 +08:00
|
|
|
|
},
|
|
|
|
|
|
|
2025-12-05 10:46:19 +08:00
|
|
|
|
//读取数据库 初始化数据 - 使用分页接口获取数据
|
2025-11-26 16:28:14 +08:00
|
|
|
|
init() {
|
|
|
|
|
|
let that = this;
|
2025-12-05 10:46:19 +08:00
|
|
|
|
// 构建请求参数
|
|
|
|
|
|
const params = {
|
|
|
|
|
|
pageNum: that.pageNum,
|
|
|
|
|
|
pageSize: that.pageSize,
|
|
|
|
|
|
keyword: that.searchKeyword && that.searchKeyword.trim() ? that.searchKeyword.trim() : ''
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
request({
|
|
|
|
|
|
url: "/task/selectTaskHasCreatedPaginated",
|
|
|
|
|
|
method: "get",
|
|
|
|
|
|
params: params
|
|
|
|
|
|
}).then(function (response) {
|
|
|
|
|
|
if (response.data.success === true) {
|
|
|
|
|
|
const result = response.data.data;
|
|
|
|
|
|
|
|
|
|
|
|
// 从返回的数据结构中提取数据数组和分页信息
|
|
|
|
|
|
that.tasksData = result.data || [];
|
|
|
|
|
|
|
|
|
|
|
|
// 分页信息在 pageInfo 对象中
|
|
|
|
|
|
if (result.pageInfo) {
|
|
|
|
|
|
that.total = result.pageInfo.total || 0;
|
|
|
|
|
|
that.totalPages = result.pageInfo.totalPages || 0;
|
|
|
|
|
|
that.pageNum = result.pageInfo.pageNum || 1;
|
|
|
|
|
|
that.pageSize = result.pageInfo.pageSize || 10;
|
|
|
|
|
|
} else {
|
|
|
|
|
|
// 兼容旧格式(如果 pageInfo 不存在)
|
|
|
|
|
|
that.total = result.total || 0;
|
|
|
|
|
|
that.totalPages = result.totalPages || 0;
|
|
|
|
|
|
that.pageNum = result.pageNum || 1;
|
|
|
|
|
|
that.pageSize = result.pageSize || 10;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
that.filteredData = [...that.tasksData];
|
|
|
|
|
|
that.srcTaskOptions = that.tasksData;
|
|
|
|
|
|
that.destTaskOptions = that.tasksData;
|
|
|
|
|
|
} else if (response.data.status === "401") {
|
|
|
|
|
|
that.$alert(response.data.message);
|
|
|
|
|
|
that.$router.push({ path: "/login" });
|
|
|
|
|
|
} else {
|
|
|
|
|
|
that.$message.error(response.data.message || "获取数据失败");
|
|
|
|
|
|
}
|
|
|
|
|
|
}).catch(function (error) {
|
|
|
|
|
|
console.error("获取数据失败:", error);
|
|
|
|
|
|
that.$message.error("获取数据失败,请稍后重试");
|
|
|
|
|
|
});
|
2025-11-26 16:28:14 +08:00
|
|
|
|
},
|
|
|
|
|
|
beforeTpkUpload(file) {
|
|
|
|
|
|
if (file.type != "tpk") {
|
|
|
|
|
|
this.$message.error("请上传shp格式数据!");
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
return true;
|
|
|
|
|
|
},
|
|
|
|
|
|
beforeShpUpload(file) {
|
|
|
|
|
|
if (file.type != "shp") {
|
|
|
|
|
|
this.$message.error("请上传shp格式数据!");
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
return true;
|
|
|
|
|
|
},
|
|
|
|
|
|
beforeShxUpload(file) {
|
|
|
|
|
|
if (file.type != "shx") {
|
|
|
|
|
|
this.$message.error("请上传shx格式数据!");
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
return true;
|
|
|
|
|
|
},
|
|
|
|
|
|
beforeDbfUpload(file) {
|
|
|
|
|
|
if (file.type != "dbf") {
|
|
|
|
|
|
this.$message.error("请上传dbf格式数据!");
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
return true;
|
|
|
|
|
|
},
|
|
|
|
|
|
beforeXlsxUpload(file) {
|
|
|
|
|
|
if (file.type != "xlsx" && file.type != "xls") {
|
|
|
|
|
|
this.$message.error("请上传xlsx/xls格式文件!");
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
return true;
|
|
|
|
|
|
},
|
|
|
|
|
|
getFile(file) {
|
|
|
|
|
|
this.fileList = [];
|
|
|
|
|
|
this.fileList.push(file.raw);
|
|
|
|
|
|
},
|
|
|
|
|
|
removeFile() {
|
|
|
|
|
|
this.fileList = [];
|
|
|
|
|
|
},
|
|
|
|
|
|
getShxFile(file) {
|
|
|
|
|
|
this.shxList = [];
|
|
|
|
|
|
this.shxList.push(file.raw);
|
|
|
|
|
|
},
|
|
|
|
|
|
removeShxFile() {
|
|
|
|
|
|
this.shxList = [];
|
|
|
|
|
|
},
|
|
|
|
|
|
getDbfFile(file) {
|
|
|
|
|
|
this.dbfList = [];
|
|
|
|
|
|
this.dbfList.push(file.raw);
|
|
|
|
|
|
},
|
|
|
|
|
|
removeDbfFile() {
|
|
|
|
|
|
this.dbfList = [];
|
|
|
|
|
|
},
|
|
|
|
|
|
ExchangeData() {
|
|
|
|
|
|
this.ExchangeDialogVisible1 = true;
|
|
|
|
|
|
this.exchangeform.srcTask = "";
|
|
|
|
|
|
this.exchangeform.destTask = "";
|
|
|
|
|
|
this.exchangeform.isSelective = false;
|
|
|
|
|
|
this.exchangeform.selectDataNum = "";
|
|
|
|
|
|
},
|
|
|
|
|
|
exchangeData1() {
|
|
|
|
|
|
if (this.exchangeform.srcTask == "" || this.exchangeform.destTask == "") {
|
|
|
|
|
|
this.$message.info("请先选择任务");
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (this.exchangeform.srcTask == this.exchangeform.destTask) {
|
|
|
|
|
|
this.$message.error("源任务和目标任务重复");
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (
|
|
|
|
|
|
this.exchangeform.selectDataNum == "" &&
|
|
|
|
|
|
this.exchangeform.isSelective &&
|
|
|
|
|
|
this.exchangeType === 2
|
|
|
|
|
|
) {
|
|
|
|
|
|
this.$message.info("请输入抽查数量,为1-9999之间的整数");
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (
|
|
|
|
|
|
(this.exchangeform.selectDataNum < 1 ||
|
|
|
|
|
|
this.exchangeform.selectDataNum > 9999) &&
|
|
|
|
|
|
this.exchangeform.isSelective &&
|
|
|
|
|
|
this.exchangeType === 2
|
|
|
|
|
|
) {
|
|
|
|
|
|
this.$message.info("抽查数量为1-9999之间的整数");
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (
|
|
|
|
|
|
(this.exchangeform.selectDataNum > 100 ||
|
|
|
|
|
|
this.exchangeform.selectDataNum < 1) &&
|
|
|
|
|
|
this.exchangeform.isSelective &&
|
|
|
|
|
|
this.exchangeType === 1
|
|
|
|
|
|
) {
|
|
|
|
|
|
this.$message.info("抽查比例不可小于1%或大于100%");
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
this.ExchangeDialogVisible1 = false;
|
|
|
|
|
|
this.ExchangeDialogVisible2 = true;
|
|
|
|
|
|
this.exchangeformTable.srcTable = "";
|
|
|
|
|
|
this.exchangeformTable.destTable = "";
|
|
|
|
|
|
let that = this;
|
|
|
|
|
|
this.tablemapping = [];
|
|
|
|
|
|
that.tableOptions1 = [];
|
|
|
|
|
|
that.tableOptions2 = [];
|
|
|
|
|
|
// 请求任务列表
|
|
|
|
|
|
request({
|
|
|
|
|
|
url: "/import/getRootTablesName",
|
|
|
|
|
|
method: "post",
|
|
|
|
|
|
params: {
|
|
|
|
|
|
taskId: that.exchangeform.destTask,
|
|
|
|
|
|
},
|
|
|
|
|
|
}).then(function (response) {
|
|
|
|
|
|
if (response.data.success == true) {
|
|
|
|
|
|
that.tableOptions2 = response.data.data;
|
|
|
|
|
|
} else if (response.data.status == "401") {
|
|
|
|
|
|
that.$alert(response.data.message);
|
|
|
|
|
|
that.$router.push({ path: "/login" });
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
request({
|
|
|
|
|
|
url: "/import/getRootTablesName",
|
|
|
|
|
|
method: "post",
|
|
|
|
|
|
params: {
|
|
|
|
|
|
taskId: that.exchangeform.srcTask,
|
|
|
|
|
|
},
|
|
|
|
|
|
}).then(function (response) {
|
|
|
|
|
|
if (response.data.success == true) {
|
|
|
|
|
|
that.tableOptions1 = response.data.data;
|
|
|
|
|
|
} else if (response.data.status == "401") {
|
|
|
|
|
|
that.$alert(response.data.message);
|
|
|
|
|
|
that.$router.push({ path: "/login" });
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
request({
|
|
|
|
|
|
url: "/import/getTaskTableMapping",
|
|
|
|
|
|
method: "post",
|
|
|
|
|
|
params: {
|
|
|
|
|
|
srcTaskId: that.exchangeform.srcTask,
|
|
|
|
|
|
destTaskId: that.exchangeform.destTask,
|
|
|
|
|
|
},
|
|
|
|
|
|
}).then(function (response) {
|
|
|
|
|
|
if (response.data.success == true) {
|
|
|
|
|
|
that.tablemapping = response.data.data;
|
|
|
|
|
|
if (that.tablemapping.length > 0) {
|
|
|
|
|
|
that.exchangeformTable.srcTable = that.tablemapping[0].srcTable;
|
|
|
|
|
|
that.exchangeformTable.destTable = that.tablemapping[0].destTable;
|
|
|
|
|
|
}
|
|
|
|
|
|
} else if (response.data.status == "401") {
|
|
|
|
|
|
that.$alert(response.data.message);
|
|
|
|
|
|
that.$router.push({ path: "/login" });
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
},
|
|
|
|
|
|
changeTable() {
|
|
|
|
|
|
this.exchangeformTable.destTable = "";
|
|
|
|
|
|
if (this.tablemapping.length > 0) {
|
|
|
|
|
|
for (var i = 0; i < this.tablemapping.length; i++) {
|
|
|
|
|
|
if (
|
|
|
|
|
|
this.exchangeformTable.srcTable == this.tablemapping[0].srcTable
|
|
|
|
|
|
) {
|
|
|
|
|
|
this.exchangeformTable.destTable == this.tablemapping[0].destTable;
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
uploadTPK(file) {
|
|
|
|
|
|
let fd = new FormData();
|
|
|
|
|
|
fd.append("image", file.raw);
|
|
|
|
|
|
fd.append("taskId", this.tpkTaskId);
|
|
|
|
|
|
let that = this;
|
|
|
|
|
|
axios({
|
|
|
|
|
|
url: "/api/image/new",
|
|
|
|
|
|
method: "post",
|
|
|
|
|
|
data: fd,
|
|
|
|
|
|
headers: {
|
|
|
|
|
|
"Content-Type": "multipart/form-data",
|
|
|
|
|
|
},
|
|
|
|
|
|
}).then(function (response) {
|
|
|
|
|
|
if (response.data.success == true) {
|
|
|
|
|
|
that.$message.success("tpk文件上传成功");
|
|
|
|
|
|
that.$refs.uploadtpkfile.clearFiles();
|
|
|
|
|
|
that.getTaskTpkP(that.currentPage);
|
|
|
|
|
|
} else {
|
|
|
|
|
|
that.$notify.error({
|
|
|
|
|
|
title: "提示",
|
|
|
|
|
|
message: response.data.message,
|
|
|
|
|
|
});
|
|
|
|
|
|
that.$refs.uploadtpkfile.clearFiles();
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
},
|
|
|
|
|
|
getTaskTpk(taskId) {
|
|
|
|
|
|
let row = this.tasksData.find(item => item.id === taskId);
|
|
|
|
|
|
if (!row) return;
|
|
|
|
|
|
|
|
|
|
|
|
this.tpkCardV = true;
|
|
|
|
|
|
this.tpkTask = row.taskName;
|
|
|
|
|
|
this.tpkTaskId = taskId;
|
|
|
|
|
|
let that = this;
|
|
|
|
|
|
request({
|
|
|
|
|
|
url: "/images",
|
|
|
|
|
|
method: "get",
|
|
|
|
|
|
params: {
|
|
|
|
|
|
taskId: taskId,
|
|
|
|
|
|
page: "1",
|
|
|
|
|
|
},
|
|
|
|
|
|
}).then(function (response) {
|
|
|
|
|
|
if (response.data.success == true) {
|
|
|
|
|
|
that.tpkDatas = response.data.data.data;
|
|
|
|
|
|
that.tpkTotalP = response.data.data.total;
|
|
|
|
|
|
} else {
|
|
|
|
|
|
that.tpkDatas = [];
|
|
|
|
|
|
that.tpkTotalP = 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
},
|
|
|
|
|
|
//获取具体页tpk
|
|
|
|
|
|
getTaskTpkP(page1) {
|
|
|
|
|
|
this.currentPage = page1;
|
|
|
|
|
|
let that = this;
|
|
|
|
|
|
request({
|
|
|
|
|
|
url: "/images",
|
|
|
|
|
|
method: "get",
|
|
|
|
|
|
params: {
|
|
|
|
|
|
taskId: this.tpkTaskId,
|
|
|
|
|
|
page: page1,
|
|
|
|
|
|
},
|
|
|
|
|
|
}).then(function (response) {
|
|
|
|
|
|
if (response.data.success == true) {
|
|
|
|
|
|
that.tpkDatas = response.data.data.data;
|
|
|
|
|
|
that.tpkTotalP = response.data.data.total;
|
|
|
|
|
|
} else {
|
|
|
|
|
|
that.tpkDatas = [];
|
|
|
|
|
|
that.tpkTotalP = 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
},
|
|
|
|
|
|
deleteTpk(id) {
|
|
|
|
|
|
let that = this;
|
|
|
|
|
|
request({
|
|
|
|
|
|
url: "/image/delete",
|
|
|
|
|
|
method: "get",
|
|
|
|
|
|
params: {
|
|
|
|
|
|
ids: id,
|
|
|
|
|
|
},
|
|
|
|
|
|
}).then(function (response) {
|
|
|
|
|
|
if (response.data.success == true) {
|
|
|
|
|
|
that.$message.success("成功删除tpk文件");
|
|
|
|
|
|
that.getTaskTpkP(that.currentPage);
|
|
|
|
|
|
} else if (response.data.status == "401") {
|
|
|
|
|
|
that.$alert(response.data.message);
|
|
|
|
|
|
that.$router.push({ path: "/login" });
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
},
|
|
|
|
|
|
exchangeData2() {
|
|
|
|
|
|
if (
|
|
|
|
|
|
this.exchangeformTable.srcTable == "" ||
|
|
|
|
|
|
this.exchangeformTable.destTable == ""
|
|
|
|
|
|
) {
|
|
|
|
|
|
this.$message.info("请先选择表");
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
this.ExchangeDialogVisible2 = false;
|
|
|
|
|
|
this.ExchangeDialogVisible3 = true;
|
|
|
|
|
|
this.shpData = [];
|
|
|
|
|
|
this.destFieldsOptions = [];
|
|
|
|
|
|
|
|
|
|
|
|
let that = this;
|
|
|
|
|
|
request({
|
|
|
|
|
|
url: "/import/getTableFieldsName",
|
|
|
|
|
|
method: "post",
|
|
|
|
|
|
params: {
|
|
|
|
|
|
taskId: this.exchangeform.destTask,
|
|
|
|
|
|
tableName: this.exchangeformTable.destTable,
|
|
|
|
|
|
},
|
|
|
|
|
|
}).then(function (response) {
|
|
|
|
|
|
if (response.data.success == true) {
|
|
|
|
|
|
that.destFieldsOptions = response.data.data;
|
|
|
|
|
|
} else if (response.data.status == "401") {
|
|
|
|
|
|
that.$alert(response.data.message);
|
|
|
|
|
|
that.$router.push({ path: "/login" });
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
request({
|
|
|
|
|
|
url: "/import/getTaskTableFieldMapping",
|
|
|
|
|
|
method: "post",
|
|
|
|
|
|
params: {
|
|
|
|
|
|
srcTaskId: this.exchangeform.srcTask,
|
|
|
|
|
|
destTaskId: this.exchangeform.destTask,
|
|
|
|
|
|
srcTableName: this.exchangeformTable.srcTable,
|
|
|
|
|
|
destTableName: this.exchangeformTable.destTable,
|
|
|
|
|
|
},
|
|
|
|
|
|
}).then(function (response) {
|
|
|
|
|
|
if (response.data.success == true) {
|
|
|
|
|
|
that.shpData = response.data.data;
|
|
|
|
|
|
} else if (response.data.status == "401") {
|
|
|
|
|
|
that.$alert(response.data.message);
|
|
|
|
|
|
that.$router.push({ path: "/login" });
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
},
|
|
|
|
|
|
exchangeData3() {
|
|
|
|
|
|
for (var i = 0; i < this.shpData.length; i++) {
|
|
|
|
|
|
if (this.shpData[i].destTableField == "") {
|
|
|
|
|
|
this.$message.error("目标字段不可为空");
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
for (var i = 0; i < this.shpData.length; i++) {
|
|
|
|
|
|
for (var j = 0; j < this.shpData.length; j++) {
|
|
|
|
|
|
if (
|
|
|
|
|
|
this.shpData[i].destTableField == this.shpData[j].destTableField &&
|
|
|
|
|
|
i !== j
|
|
|
|
|
|
) {
|
|
|
|
|
|
this.$message.error("目标字段不可重复");
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
let that = this;
|
|
|
|
|
|
if (!that.exchangeform.isSelective) {
|
|
|
|
|
|
that.exchangeform.selectDataNum = "0";
|
|
|
|
|
|
}
|
|
|
|
|
|
let mynumber = that.exchangeform.selectDataNum;
|
|
|
|
|
|
if (that.exchangeform.isSelective) {
|
|
|
|
|
|
if (that.exchangeType === 1) {
|
|
|
|
|
|
mynumber = mynumber + "%";
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
//todo:where语句抽查 添加接口
|
|
|
|
|
|
request({
|
|
|
|
|
|
url: "/import/taskTableDataMigration",
|
|
|
|
|
|
method: "post",
|
|
|
|
|
|
params: {
|
|
|
|
|
|
srcTaskId: this.exchangeform.srcTask,
|
|
|
|
|
|
destTaskId: this.exchangeform.destTask,
|
|
|
|
|
|
srcTableName: this.exchangeformTable.srcTable,
|
|
|
|
|
|
destTableName: this.exchangeformTable.destTable,
|
|
|
|
|
|
isSelective: that.exchangeform.isSelective,
|
|
|
|
|
|
selectDataNum: mynumber,
|
|
|
|
|
|
whereClause: that.exchangeformTable.selectWhereClause,
|
|
|
|
|
|
fieldMapping: JSON.stringify(that.shpData),
|
|
|
|
|
|
},
|
|
|
|
|
|
}).then(function (response) {
|
|
|
|
|
|
if (response.data.success == true) {
|
|
|
|
|
|
that.$message.success("数据上传成功");
|
|
|
|
|
|
that.ExchangeDialogVisible3 = false;
|
|
|
|
|
|
} else if (response.data.status == "401") {
|
|
|
|
|
|
that.$alert(response.data.message);
|
|
|
|
|
|
that.$router.push({ path: "/login" });
|
|
|
|
|
|
} else if (response.data.status == "400") {
|
|
|
|
|
|
that.$message.error(response.data.message);
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
},
|
|
|
|
|
|
UploadShpData(taskId) {
|
|
|
|
|
|
this.shpform.tableName = "";
|
|
|
|
|
|
this.fileList = [];
|
|
|
|
|
|
if (this.$refs.uploadshpfile) {
|
|
|
|
|
|
this.$refs.uploadshpfile.clearFiles();
|
|
|
|
|
|
}
|
|
|
|
|
|
if (this.$refs.uploadshxfile) {
|
|
|
|
|
|
this.$refs.uploadshxfile.clearFiles();
|
|
|
|
|
|
}
|
|
|
|
|
|
if (this.$refs.uploaddbffile) {
|
|
|
|
|
|
this.$refs.uploaddbffile.clearFiles();
|
|
|
|
|
|
}
|
|
|
|
|
|
this.UploadDialogVisible1 = true;
|
|
|
|
|
|
this.taskIndex = taskId; // 存储任务ID而不是索引
|
|
|
|
|
|
let that = this;
|
|
|
|
|
|
that.tableOptions = [];
|
|
|
|
|
|
// 请求任务列表
|
|
|
|
|
|
request({
|
|
|
|
|
|
url: "/import/getRootTablesName",
|
|
|
|
|
|
method: "post",
|
|
|
|
|
|
params: {
|
|
|
|
|
|
taskId: taskId,
|
|
|
|
|
|
},
|
|
|
|
|
|
}).then(function (response) {
|
|
|
|
|
|
if (response.data.success == true) {
|
|
|
|
|
|
that.tableOptions = response.data.data;
|
|
|
|
|
|
} else if (response.data.status == "401") {
|
|
|
|
|
|
that.$alert(response.data.message);
|
|
|
|
|
|
that.$router.push({ path: "/login" });
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
},
|
|
|
|
|
|
UploadXlsxData(taskId) {
|
|
|
|
|
|
this.shpform.tableName = "";
|
|
|
|
|
|
this.fileList = [];
|
|
|
|
|
|
if (this.$refs.uploadxlsxfile) {
|
|
|
|
|
|
this.$refs.uploadxlsxfile.clearFiles();
|
|
|
|
|
|
}
|
|
|
|
|
|
this.UploadDialogVisible3 = true;
|
|
|
|
|
|
this.taskIndex = taskId; // 存储任务ID而不是索引
|
|
|
|
|
|
let that = this;
|
|
|
|
|
|
that.tableOptions = [];
|
|
|
|
|
|
// 请求任务列表
|
|
|
|
|
|
request({
|
|
|
|
|
|
url: "/import/getTablesName",
|
|
|
|
|
|
method: "post",
|
|
|
|
|
|
params: {
|
|
|
|
|
|
taskId: taskId,
|
|
|
|
|
|
},
|
|
|
|
|
|
}).then(function (response) {
|
|
|
|
|
|
if (response.data.success == true) {
|
|
|
|
|
|
that.tableOptions = response.data.data;
|
|
|
|
|
|
} else if (response.data.status == "401") {
|
|
|
|
|
|
that.$alert(response.data.message);
|
|
|
|
|
|
that.$router.push({ path: "/login" });
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
},
|
|
|
|
|
|
UploadShp1() {
|
|
|
|
|
|
let fd = new FormData();
|
|
|
|
|
|
this.destFieldsOptions = [];
|
|
|
|
|
|
this.shpData = [];
|
|
|
|
|
|
if (!this.fileList[0]) {
|
|
|
|
|
|
this.$message.info("请先选择shp文件");
|
|
|
|
|
|
return;
|
|
|
|
|
|
} else {
|
|
|
|
|
|
fd.append("shp", this.fileList[0]);
|
|
|
|
|
|
}
|
|
|
|
|
|
if (!this.shxList[0]) {
|
|
|
|
|
|
this.$message.info("请先选择shx文件");
|
|
|
|
|
|
return;
|
|
|
|
|
|
} else {
|
|
|
|
|
|
fd.append("shx", this.shxList[0]);
|
|
|
|
|
|
}
|
|
|
|
|
|
if (!this.dbfList[0]) {
|
|
|
|
|
|
this.$message.info("请先选择dbf文件");
|
|
|
|
|
|
return;
|
|
|
|
|
|
} else {
|
|
|
|
|
|
fd.append("dbf", this.dbfList[0]);
|
|
|
|
|
|
}
|
|
|
|
|
|
if (!this.shpform.tableName) {
|
|
|
|
|
|
this.$message.info("请先选择表");
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
fd.append("destTaskId", this.taskIndex); // 直接使用存储的任务ID
|
|
|
|
|
|
fd.append("destTableName", this.shpform.tableName);
|
|
|
|
|
|
let that = this;
|
|
|
|
|
|
request({
|
|
|
|
|
|
url: "/import/getTableFieldsName",
|
|
|
|
|
|
method: "post",
|
|
|
|
|
|
params: {
|
|
|
|
|
|
taskId: this.taskIndex, // 直接使用存储的任务ID
|
|
|
|
|
|
tableName: that.shpform.tableName,
|
|
|
|
|
|
},
|
|
|
|
|
|
}).then(function (response) {
|
|
|
|
|
|
if (response.data.success == true) {
|
|
|
|
|
|
that.destFieldsOptions = response.data.data;
|
|
|
|
|
|
} else if (response.data.status == "401") {
|
|
|
|
|
|
that.$alert(response.data.message);
|
|
|
|
|
|
that.$router.push({ path: "/login" });
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
axios({
|
|
|
|
|
|
url: "/api/import/getShpAndFieldMapping",
|
|
|
|
|
|
method: "post",
|
|
|
|
|
|
data: fd,
|
|
|
|
|
|
headers: {
|
|
|
|
|
|
"Content-Type": "multipart/form-data",
|
|
|
|
|
|
},
|
|
|
|
|
|
}).then(function (response) {
|
|
|
|
|
|
if (response.data.success == true) {
|
|
|
|
|
|
that.shpData = response.data.data;
|
|
|
|
|
|
that.UploadDialogVisible1 = false;
|
|
|
|
|
|
that.UploadDialogVisible2 = true;
|
|
|
|
|
|
} else {
|
|
|
|
|
|
if (response.data.status == 400) {
|
|
|
|
|
|
that.$notify.error({
|
|
|
|
|
|
title: "提示",
|
|
|
|
|
|
message: response.data.message,
|
|
|
|
|
|
});
|
|
|
|
|
|
} else {
|
|
|
|
|
|
that.$notify.error({
|
|
|
|
|
|
title: "提示",
|
|
|
|
|
|
message: "上传出错",
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
},
|
|
|
|
|
|
UploadShp2() {
|
|
|
|
|
|
for (var i = 0; i < this.shpData.length; i++) {
|
|
|
|
|
|
if (this.shpData[i].destTableField == "") {
|
|
|
|
|
|
this.$message.error("目标字段不可为空");
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
for (var i = 0; i < this.shpData.length; i++) {
|
|
|
|
|
|
for (var j = 0; j < this.shpData.length; j++) {
|
|
|
|
|
|
if (
|
|
|
|
|
|
this.shpData[i].destTableField == this.shpData[j].destTableField &&
|
|
|
|
|
|
i !== j
|
|
|
|
|
|
) {
|
|
|
|
|
|
this.$message.error("目标字段不可重复");
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
let fd = new FormData();
|
|
|
|
|
|
fd.append("destTaskId", this.taskIndex); // 直接使用存储的任务ID
|
|
|
|
|
|
fd.append("destTableName", this.shpform.tableName);
|
|
|
|
|
|
fd.append("fieldMapping", JSON.stringify(this.shpData));
|
|
|
|
|
|
|
|
|
|
|
|
fd.append("shp", this.fileList[0]);
|
|
|
|
|
|
|
|
|
|
|
|
fd.append("shx", this.shxList[0]);
|
|
|
|
|
|
|
|
|
|
|
|
fd.append("dbf", this.dbfList[0]);
|
|
|
|
|
|
|
|
|
|
|
|
let that = this;
|
|
|
|
|
|
axios({
|
|
|
|
|
|
url: "/api/import/shpDataMigration",
|
|
|
|
|
|
method: "post",
|
|
|
|
|
|
data: fd,
|
|
|
|
|
|
headers: {
|
|
|
|
|
|
"Content-Type": "multipart/form-data",
|
|
|
|
|
|
},
|
|
|
|
|
|
}).then(function (response) {
|
|
|
|
|
|
if (response.data.success == true) {
|
|
|
|
|
|
that.$message.success("数据上传成功");
|
|
|
|
|
|
that.UploadDialogVisible2 = false;
|
|
|
|
|
|
} else {
|
|
|
|
|
|
if (response.data.status == 400) {
|
|
|
|
|
|
that.$notify.error({
|
|
|
|
|
|
title: "提示",
|
|
|
|
|
|
message: response.data.message,
|
|
|
|
|
|
});
|
|
|
|
|
|
} else {
|
|
|
|
|
|
that.$notify.error({
|
|
|
|
|
|
title: "提示",
|
|
|
|
|
|
message: "上传出错",
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
},
|
|
|
|
|
|
backShp1() {
|
|
|
|
|
|
this.UploadDialogVisible1 = true;
|
|
|
|
|
|
this.UploadDialogVisible2 = false;
|
|
|
|
|
|
},
|
|
|
|
|
|
backShp2() {
|
|
|
|
|
|
this.UploadDialogVisible3 = true;
|
|
|
|
|
|
this.UploadDialogVisible4 = false;
|
|
|
|
|
|
},
|
|
|
|
|
|
deleteField(index) {
|
|
|
|
|
|
this.shpData.splice(index, 1);
|
|
|
|
|
|
},
|
|
|
|
|
|
UploadShp3() {
|
|
|
|
|
|
this.destFieldsOptions = [];
|
|
|
|
|
|
this.shpData = [];
|
|
|
|
|
|
let fd = new FormData();
|
|
|
|
|
|
if (!this.fileList[0]) {
|
|
|
|
|
|
this.$message.info("请先选择文件");
|
|
|
|
|
|
return;
|
|
|
|
|
|
} else {
|
|
|
|
|
|
fd.append("file", this.fileList[0]);
|
|
|
|
|
|
}
|
|
|
|
|
|
if (!this.shpform.tableName) {
|
|
|
|
|
|
this.$message.info("请先选择表");
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
fd.append("destTaskId", this.taskIndex); // 直接使用存储的任务ID
|
|
|
|
|
|
fd.append("destTableName", this.shpform.tableName);
|
|
|
|
|
|
let that = this;
|
|
|
|
|
|
request({
|
|
|
|
|
|
url: "/import/getTableFieldsName",
|
|
|
|
|
|
method: "post",
|
|
|
|
|
|
params: {
|
|
|
|
|
|
taskId: this.taskIndex, // 直接使用存储的任务ID
|
|
|
|
|
|
tableName: that.shpform.tableName,
|
|
|
|
|
|
},
|
|
|
|
|
|
}).then(function (response) {
|
|
|
|
|
|
if (response.data.success == true) {
|
|
|
|
|
|
that.destFieldsOptions = response.data.data;
|
|
|
|
|
|
} else if (response.data.status == "401") {
|
|
|
|
|
|
that.$alert(response.data.message);
|
|
|
|
|
|
that.$router.push({ path: "/login" });
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
axios({
|
|
|
|
|
|
url: "/api/import/getFileAndFieldMapping",
|
|
|
|
|
|
method: "post",
|
|
|
|
|
|
data: fd,
|
|
|
|
|
|
headers: {
|
|
|
|
|
|
"Content-Type": "multipart/form-data",
|
|
|
|
|
|
},
|
|
|
|
|
|
}).then(function (response) {
|
|
|
|
|
|
if (response.data.success == true) {
|
|
|
|
|
|
that.shpData = response.data.data;
|
|
|
|
|
|
that.UploadDialogVisible3 = false;
|
|
|
|
|
|
that.UploadDialogVisible4 = true;
|
|
|
|
|
|
} else {
|
|
|
|
|
|
if (response.data.status == 400) {
|
|
|
|
|
|
that.$notify.error({
|
|
|
|
|
|
title: "提示",
|
|
|
|
|
|
message: response.data.message,
|
|
|
|
|
|
});
|
|
|
|
|
|
} else {
|
|
|
|
|
|
that.$notify.error({
|
|
|
|
|
|
title: "提示",
|
|
|
|
|
|
message: "上传出错",
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
},
|
|
|
|
|
|
UploadShp4() {
|
|
|
|
|
|
for (var i = 0; i < this.shpData.length; i++) {
|
|
|
|
|
|
if (this.shpData[i].destTableField == "") {
|
|
|
|
|
|
this.$message.error("目标字段不可为空");
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
for (var i = 0; i < this.shpData.length; i++) {
|
|
|
|
|
|
for (var j = 0; j < this.shpData.length; j++) {
|
|
|
|
|
|
if (
|
|
|
|
|
|
this.shpData[i].destTableField == this.shpData[j].destTableField &&
|
|
|
|
|
|
i !== j
|
|
|
|
|
|
) {
|
|
|
|
|
|
this.$message.error("目标字段不可重复");
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
let fd = new FormData();
|
|
|
|
|
|
fd.append("destTaskId", this.taskIndex); // 直接使用存储的任务ID
|
|
|
|
|
|
fd.append("destTableName", this.shpform.tableName);
|
|
|
|
|
|
fd.append("fieldMapping", JSON.stringify(this.shpData));
|
|
|
|
|
|
fd.append("file", this.fileList[0]);
|
|
|
|
|
|
let that = this;
|
|
|
|
|
|
axios({
|
|
|
|
|
|
url: "/api/import/fileDataMigration",
|
|
|
|
|
|
method: "post",
|
|
|
|
|
|
data: fd,
|
|
|
|
|
|
headers: {
|
|
|
|
|
|
"Content-Type": "multipart/form-data",
|
|
|
|
|
|
},
|
|
|
|
|
|
}).then(function (response) {
|
|
|
|
|
|
if (response.data.success == true) {
|
|
|
|
|
|
that.$message.success("任务数据复制成功");
|
|
|
|
|
|
that.UploadDialogVisible4 = false;
|
|
|
|
|
|
} else {
|
|
|
|
|
|
if (response.data.status == 400) {
|
|
|
|
|
|
that.$notify.error({
|
|
|
|
|
|
title: "提示",
|
|
|
|
|
|
message: response.data.message,
|
|
|
|
|
|
});
|
|
|
|
|
|
} else {
|
|
|
|
|
|
that.$notify.error({
|
|
|
|
|
|
title: "提示",
|
|
|
|
|
|
message: "上传出错",
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
},
|
|
|
|
|
|
Download(taskId) {
|
|
|
|
|
|
this.DownloadDialogVisible = false;
|
|
|
|
|
|
this.shpform.tableName = "";
|
|
|
|
|
|
this.taskIndex = taskId; // 存储任务ID而不是索引
|
|
|
|
|
|
let that = this;
|
|
|
|
|
|
that.tableOptions = [];
|
|
|
|
|
|
// 请求任务列表
|
|
|
|
|
|
request({
|
|
|
|
|
|
url: "/import/getTablesName",
|
|
|
|
|
|
method: "post",
|
|
|
|
|
|
params: {
|
|
|
|
|
|
taskId: taskId,
|
|
|
|
|
|
},
|
|
|
|
|
|
}).then(function (response) {
|
|
|
|
|
|
if (response.data.success == true) {
|
|
|
|
|
|
that.tableOptions = response.data.data;
|
|
|
|
|
|
} else if (response.data.status == "401") {
|
|
|
|
|
|
that.$alert(response.data.message);
|
|
|
|
|
|
that.$router.push({ path: "/login" });
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
},
|
|
|
|
|
|
// DownloadData() {
|
|
|
|
|
|
// let that = this;
|
|
|
|
|
|
// if (this.shpform.tableName == "") {
|
|
|
|
|
|
// this.$message.info("请先选择表");
|
|
|
|
|
|
// return;
|
|
|
|
|
|
// }
|
|
|
|
|
|
// this.download(
|
|
|
|
|
|
// this.taskIndex, // 直接使用存储的任务ID
|
|
|
|
|
|
// this.shpform.tableName,
|
|
|
|
|
|
// this.shpform.codeType
|
|
|
|
|
|
// );
|
|
|
|
|
|
// },
|
|
|
|
|
|
download(taskId, tableName, codeType) {
|
|
|
|
|
|
let that = this;
|
|
|
|
|
|
request({
|
|
|
|
|
|
url: "/export/taskGdbExport",
|
|
|
|
|
|
method: "post",
|
|
|
|
|
|
params: {
|
|
|
|
|
|
taskId: this.taskIndex, // 直接使用存储的任务ID
|
|
|
|
|
|
tableName: that.shpform.tableName,
|
|
|
|
|
|
isHighVersion: that.shpform.codeType,
|
|
|
|
|
|
},
|
|
|
|
|
|
}).then(function (response) {
|
|
|
|
|
|
if (response.data.message != "数据为空") {
|
|
|
|
|
|
var exportURL =
|
|
|
|
|
|
"/export/taskGdbExport?taskId=" +
|
|
|
|
|
|
taskId;
|
|
|
|
|
|
window.open(exportURL, "_blank");
|
|
|
|
|
|
that.DownloadDialogVisible = false;
|
|
|
|
|
|
} else {
|
|
|
|
|
|
that.$message.info("数据为空!");
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
},
|
|
|
|
|
|
},
|
|
|
|
|
|
mounted() {
|
|
|
|
|
|
this.init();
|
|
|
|
|
|
},
|
|
|
|
|
|
watch: {
|
|
|
|
|
|
exchangeform: {
|
|
|
|
|
|
handler() {
|
|
|
|
|
|
if (this.exchangeform.isSelective) {
|
|
|
|
|
|
let reg = /\D/;
|
|
|
|
|
|
if (reg.test(this.exchangeform.selectDataNum)) {
|
|
|
|
|
|
if (this.exchangeform.selectDataNum != "")
|
|
|
|
|
|
this.$message.info("只可输入整数");
|
|
|
|
|
|
}
|
|
|
|
|
|
this.exchangeform.selectDataNum = this.exchangeform.selectDataNum
|
|
|
|
|
|
.toString()
|
|
|
|
|
|
.replace(/\D/, "");
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
deep: true,
|
|
|
|
|
|
},
|
|
|
|
|
|
},
|
|
|
|
|
|
};
|
|
|
|
|
|
</script>
|
|
|
|
|
|
<style lang="scss" scoped>
|
2025-11-28 12:58:45 +08:00
|
|
|
|
.task-manage-page {
|
|
|
|
|
|
padding: 24px 28px 40px;
|
|
|
|
|
|
background: linear-gradient(135deg, #edf7ef 0%, #fdfefe 100%);
|
|
|
|
|
|
min-height: calc(100vh - 120px);
|
|
|
|
|
|
box-sizing: border-box;
|
|
|
|
|
|
border-radius: 20px;
|
|
|
|
|
|
box-shadow: 0 14px 32px rgba(76, 175, 80, 0.12);
|
|
|
|
|
|
border: 1px solid rgba(129, 199, 132, 0.25);
|
2025-11-26 16:28:14 +08:00
|
|
|
|
}
|
2025-11-28 12:58:45 +08:00
|
|
|
|
|
|
|
|
|
|
.toolbar-container {
|
2025-11-26 16:28:14 +08:00
|
|
|
|
display: flex;
|
|
|
|
|
|
justify-content: space-between;
|
2025-11-28 12:58:45 +08:00
|
|
|
|
align-items: center;
|
|
|
|
|
|
margin-bottom: 20px;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.search-box {
|
|
|
|
|
|
flex: 0 0 auto;
|
2025-12-05 10:46:19 +08:00
|
|
|
|
display: flex;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
gap: 12px;
|
2025-11-28 12:58:45 +08:00
|
|
|
|
width: 450px;
|
2025-11-26 16:28:14 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2025-11-28 12:58:45 +08:00
|
|
|
|
:deep(.search-box .el-input) {
|
2025-12-05 10:46:19 +08:00
|
|
|
|
flex: 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.search-btn {
|
|
|
|
|
|
flex-shrink: 0;
|
|
|
|
|
|
padding: 0 20px;
|
|
|
|
|
|
min-width: 80px;
|
2025-11-28 12:58:45 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.toolbar-actions {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
gap: 16px;
|
|
|
|
|
|
flex: 0 0 auto;
|
2025-11-26 16:28:14 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2025-11-28 12:58:45 +08:00
|
|
|
|
.forest-btn {
|
|
|
|
|
|
background: linear-gradient(135deg, #4caf50 0%, #2e7d32 100%);
|
|
|
|
|
|
border: none;
|
|
|
|
|
|
color: #fff;
|
|
|
|
|
|
border-radius: 12px;
|
|
|
|
|
|
padding: 0 26px;
|
|
|
|
|
|
min-height: 38px;
|
|
|
|
|
|
font-weight: 600;
|
|
|
|
|
|
letter-spacing: 0.5px;
|
|
|
|
|
|
font-size: 15px;
|
|
|
|
|
|
box-shadow: 0 8px 18px rgba(76, 175, 80, 0.35);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.forest-btn.ghost {
|
|
|
|
|
|
background: rgba(255, 255, 255, 0.95);
|
|
|
|
|
|
color: #2e7d32;
|
|
|
|
|
|
border: 1px solid #66bb6a;
|
|
|
|
|
|
box-shadow: 0 5px 14px rgba(76, 175, 80, 0.2);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.forest-btn:hover {
|
|
|
|
|
|
filter: brightness(1.05);
|
2025-11-26 16:28:14 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2025-12-05 10:46:19 +08:00
|
|
|
|
.pagination-container {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
justify-content: flex-end;
|
|
|
|
|
|
margin-top: 20px;
|
|
|
|
|
|
padding: 16px 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-11-26 16:28:14 +08:00
|
|
|
|
#tableStyle {
|
|
|
|
|
|
margin-bottom: 30px;
|
2025-11-28 12:58:45 +08:00
|
|
|
|
background: rgba(255, 255, 255, 0.92);
|
|
|
|
|
|
border-radius: 16px;
|
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
|
border: 1px solid rgba(129, 199, 132, 0.3);
|
|
|
|
|
|
box-shadow: 0 14px 28px rgba(76, 175, 80, 0.12);
|
2025-11-26 16:28:14 +08:00
|
|
|
|
}
|
2025-11-28 12:58:45 +08:00
|
|
|
|
|
|
|
|
|
|
:deep(#tableStyle .el-table__header-wrapper th) {
|
|
|
|
|
|
background: linear-gradient(90deg, #e0f0e2, #f2fbf3) !important;
|
|
|
|
|
|
color: #1b5e20 !important;
|
|
|
|
|
|
font-weight: 600 !important;
|
|
|
|
|
|
border-bottom: 1px solid rgba(129, 199, 132, 0.35) !important;
|
|
|
|
|
|
font-size: 14px !important;
|
|
|
|
|
|
font-family: "Microsoft YaHei", "PingFang SC", "Helvetica Neue", Arial, sans-serif !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
:deep(#tableStyle .el-table__body-wrapper td) {
|
|
|
|
|
|
color: #2e4b31;
|
|
|
|
|
|
border-bottom: 1px solid rgba(76, 175, 80, 0.08);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
:deep(#tableStyle .el-table__body tr:hover > td) {
|
|
|
|
|
|
background: rgba(129, 199, 132, 0.15) !important;
|
|
|
|
|
|
color: #1b5e20;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
:deep(#tableStyle .el-table__row--striped td) {
|
|
|
|
|
|
background: rgba(233, 247, 235, 0.65);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
:deep(#tableStyle .el-table__row.current-row > td) {
|
|
|
|
|
|
background: rgba(76, 175, 80, 0.18) !important;
|
|
|
|
|
|
color: #1b5e20;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
:deep(#tableStyle .el-table__body tr) {
|
|
|
|
|
|
transition: transform 0.15s ease, box-shadow 0.15s ease;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
:deep(#tableStyle .el-table__body tr:hover) {
|
|
|
|
|
|
transform: translateY(-1px);
|
|
|
|
|
|
box-shadow: inset 0 2px 0 rgba(76, 175, 80, 0.15);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
:deep(#tableStyle .el-button--text) {
|
|
|
|
|
|
color: #2e7d32;
|
|
|
|
|
|
font-weight: 500;
|
|
|
|
|
|
padding: 6px 12px;
|
|
|
|
|
|
border-radius: 8px;
|
|
|
|
|
|
transition: all 0.3s ease;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
:deep(#tableStyle .el-button--text:hover) {
|
|
|
|
|
|
color: #1b5e20;
|
|
|
|
|
|
background: rgba(129, 199, 132, 0.2);
|
|
|
|
|
|
transform: translateY(-1px);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
>>> .el-pagination button {
|
|
|
|
|
|
background-color: #E8F5E9 !important;
|
|
|
|
|
|
color: #2E7D32 !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
>>> .el-pager li {
|
|
|
|
|
|
background: #E8F5E9 !important;
|
|
|
|
|
|
color: #2E7D32 !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-11-26 16:28:14 +08:00
|
|
|
|
.text {
|
|
|
|
|
|
font-size: 17px;
|
|
|
|
|
|
text-align: left;
|
2025-11-28 12:58:45 +08:00
|
|
|
|
color: #2e7d32;
|
2025-11-26 16:28:14 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.clearfix:before,
|
|
|
|
|
|
.clearfix:after {
|
|
|
|
|
|
display: table;
|
|
|
|
|
|
content: "";
|
|
|
|
|
|
}
|
|
|
|
|
|
.clearfix:after {
|
|
|
|
|
|
clear: both;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.box-card {
|
|
|
|
|
|
width: 480px;
|
|
|
|
|
|
position: absolute;
|
|
|
|
|
|
margin: auto;
|
|
|
|
|
|
top: 80px;
|
|
|
|
|
|
right: 0;
|
|
|
|
|
|
left: 0;
|
|
|
|
|
|
z-index: 999;
|
2025-11-28 12:58:45 +08:00
|
|
|
|
border-radius: 16px;
|
|
|
|
|
|
border: 1px solid rgba(129, 199, 132, 0.3);
|
|
|
|
|
|
box-shadow: 0 12px 28px rgba(76, 175, 80, 0.15);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
:deep(.box-card .el-card__header) {
|
|
|
|
|
|
background: linear-gradient(90deg, #e0f0e2, #f2fbf3);
|
|
|
|
|
|
color: #1b5e20;
|
|
|
|
|
|
border-bottom: 1px solid rgba(129, 199, 132, 0.25);
|
|
|
|
|
|
border-radius: 16px 16px 0 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.taskDialog :deep(.el-dialog) {
|
|
|
|
|
|
border-radius: 18px;
|
|
|
|
|
|
border: 1px solid rgba(129, 199, 132, 0.35);
|
|
|
|
|
|
box-shadow: 0 12px 30px rgba(76, 175, 80, 0.18);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.taskDialog :deep(.el-dialog__header) {
|
|
|
|
|
|
background: linear-gradient(135deg, #4caf50, #2e7d32);
|
|
|
|
|
|
color: #fff;
|
|
|
|
|
|
border-radius: 18px 18px 0 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.taskDialog :deep(.el-form-item__label) {
|
|
|
|
|
|
color: #1b5e20;
|
|
|
|
|
|
font-weight: 600;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.taskDialog :deep(.el-button--primary) {
|
|
|
|
|
|
background-color: #4caf50 !important;
|
|
|
|
|
|
border-color: #4caf50 !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.taskDialog :deep(.el-button--primary:hover) {
|
|
|
|
|
|
background-color: #66bb6a !important;
|
|
|
|
|
|
border-color: #66bb6a !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
</style>
|
|
|
|
|
|
|
|
|
|
|
|
<style>
|
|
|
|
|
|
/* 全局表格样式覆盖 - 确保主题样式生效 */
|
|
|
|
|
|
#tableStyle.el-table {
|
|
|
|
|
|
border: 1px solid rgba(129, 199, 132, 0.3) !important;
|
|
|
|
|
|
border-radius: 16px !important;
|
|
|
|
|
|
overflow: hidden !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#tableStyle.el-table.el-table--border {
|
|
|
|
|
|
border: 1px solid rgba(129, 199, 132, 0.3) !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#tableStyle.el-table.el-table--border::after,
|
|
|
|
|
|
#tableStyle.el-table.el-table--border::before {
|
|
|
|
|
|
background-color: rgba(129, 199, 132, 0.3) !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#tableStyle.el-table.el-table--border th {
|
|
|
|
|
|
border-right: 1px solid rgba(129, 199, 132, 0.25) !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#tableStyle.el-table.el-table--border th:last-child {
|
|
|
|
|
|
border-right: none !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#tableStyle.el-table.el-table--border td {
|
|
|
|
|
|
border-right: 1px solid rgba(76, 175, 80, 0.08) !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#tableStyle.el-table.el-table--border td:last-child {
|
|
|
|
|
|
border-right: none !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#tableStyle.el-table.el-table--striped .el-table__body tr.el-table__row--striped td {
|
|
|
|
|
|
background: rgba(233, 247, 235, 0.65) !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#tableStyle.el-table.el-table--striped .el-table__body tr.el-table__row--striped:hover td {
|
|
|
|
|
|
background: rgba(200, 230, 201, 0.5) !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* 表头样式全局覆盖 */
|
|
|
|
|
|
#tableStyle.el-table .el-table__header-wrapper th {
|
|
|
|
|
|
background: linear-gradient(90deg, #e0f0e2, #f2fbf3) !important;
|
|
|
|
|
|
color: #1b5e20 !important;
|
|
|
|
|
|
font-weight: 600 !important;
|
|
|
|
|
|
border-bottom: 1px solid rgba(129, 199, 132, 0.35) !important;
|
|
|
|
|
|
font-size: 14px !important;
|
|
|
|
|
|
font-family: "Microsoft YaHei", "PingFang SC", "Helvetica Neue", Arial, sans-serif !important;
|
|
|
|
|
|
padding: 12px 0 !important;
|
|
|
|
|
|
text-align: center !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#tableStyle.el-table .el-table__header-wrapper thead th {
|
|
|
|
|
|
background: linear-gradient(90deg, #e0f0e2, #f2fbf3) !important;
|
|
|
|
|
|
color: #1b5e20 !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#tableStyle.el-table .el-table__header th {
|
|
|
|
|
|
background: linear-gradient(90deg, #e0f0e2, #f2fbf3) !important;
|
|
|
|
|
|
color: #1b5e20 !important;
|
|
|
|
|
|
font-weight: 600 !important;
|
|
|
|
|
|
border-bottom: 1px solid rgba(129, 199, 132, 0.35) !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#tableStyle.el-table .el-table__header th .cell {
|
|
|
|
|
|
color: #1b5e20 !important;
|
|
|
|
|
|
font-weight: 600 !important;
|
|
|
|
|
|
font-family: "Microsoft YaHei", "PingFang SC", "Helvetica Neue", Arial, sans-serif !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* 覆盖自定义表头类名 sinCl */
|
|
|
|
|
|
#tableStyle.el-table .el-table__header th.sinCl {
|
|
|
|
|
|
background: linear-gradient(90deg, #e0f0e2, #f2fbf3) !important;
|
|
|
|
|
|
color: #1b5e20 !important;
|
|
|
|
|
|
font-weight: 600 !important;
|
|
|
|
|
|
border-bottom: 1px solid rgba(129, 199, 132, 0.35) !important;
|
|
|
|
|
|
font-size: 14px !important;
|
|
|
|
|
|
font-family: "Microsoft YaHei", "PingFang SC", "Helvetica Neue", Arial, sans-serif !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#tableStyle.el-table .el-table__header th.sinCl .cell {
|
|
|
|
|
|
color: #1b5e20 !important;
|
|
|
|
|
|
font-weight: 600 !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* 滚动条全局样式 */
|
|
|
|
|
|
#tableStyle.el-table.el-table--scrollable-x .el-table__body-wrapper {
|
|
|
|
|
|
scrollbar-width: thin !important;
|
|
|
|
|
|
scrollbar-color: rgba(76, 175, 80, 0.4) rgba(232, 245, 233, 0.5) !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#tableStyle.el-table.el-table--scrollable-x .el-table__body-wrapper::-webkit-scrollbar {
|
|
|
|
|
|
height: 8px !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#tableStyle.el-table.el-table--scrollable-x .el-table__body-wrapper::-webkit-scrollbar-track {
|
|
|
|
|
|
background: rgba(232, 245, 233, 0.5) !important;
|
|
|
|
|
|
border-radius: 4px !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#tableStyle.el-table.el-table--scrollable-x .el-table__body-wrapper::-webkit-scrollbar-thumb {
|
|
|
|
|
|
background: linear-gradient(90deg, #81c784, #66bb6a) !important;
|
|
|
|
|
|
border-radius: 4px !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#tableStyle.el-table.el-table--scrollable-x .el-table__body-wrapper::-webkit-scrollbar-thumb:hover {
|
|
|
|
|
|
background: linear-gradient(90deg, #66bb6a, #4caf50) !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#tableStyle.el-table.el-table--scrollable-y .el-table__body-wrapper {
|
|
|
|
|
|
scrollbar-width: thin !important;
|
|
|
|
|
|
scrollbar-color: rgba(76, 175, 80, 0.4) rgba(232, 245, 233, 0.5) !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#tableStyle.el-table.el-table--scrollable-y .el-table__body-wrapper::-webkit-scrollbar {
|
|
|
|
|
|
width: 8px !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#tableStyle.el-table.el-table--scrollable-y .el-table__body-wrapper::-webkit-scrollbar-track {
|
|
|
|
|
|
background: rgba(232, 245, 233, 0.5) !important;
|
|
|
|
|
|
border-radius: 4px !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#tableStyle.el-table.el-table--scrollable-y .el-table__body-wrapper::-webkit-scrollbar-thumb {
|
|
|
|
|
|
background: linear-gradient(180deg, #81c784, #66bb6a) !important;
|
|
|
|
|
|
border-radius: 4px !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#tableStyle.el-table.el-table--scrollable-y .el-table__body-wrapper::-webkit-scrollbar-thumb:hover {
|
|
|
|
|
|
background: linear-gradient(180deg, #66bb6a, #4caf50) !important;
|
2025-11-26 16:28:14 +08:00
|
|
|
|
}
|
|
|
|
|
|
</style>
|