IDCDatasync-vue/src/views/system/IdcTableUniqueFieldList.vue
2025-01-15 20:19:34 +08:00

240 lines
7.9 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<a-card :bordered="false">
<!-- 查询区域 -->
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :sm="8">
<a-form-item label="源表名称">
<a-input placeholder="请输入源表名称" v-model="queryParam.tableName"/>
</a-form-item>
</a-col>
<a-col :sm="8">
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
<a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
<a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
</span>
</a-col>
</a-row>
</a-form>
</div>
<!-- 查询区域-END -->
<!-- 操作按钮区域 -->
<div class="table-operator">
<a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
<a-button type="primary" icon="download" @click="handleExportXls('表索引')">导出</a-button>
<a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
<a-button type="primary" icon="import">导入</a-button>
</a-upload>
<!-- 高级查询区域 -->
<j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>
<!-- <a-dropdown v-if="selectedRowKeys.length > 0">
<a-menu slot="overlay">
<a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
</a-menu>
<a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
</a-dropdown>-->
</div>
<!-- table区域-begin -->
<div>
<div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
<i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>项
<a style="margin-left: 24px" @click="onClearSelected">清空</a>
</div>
<a-table
ref="table"
size="middle"
:scroll="{x:true}"
bordered
rowKey="id"
:columns="columns"
:dataSource="dataSource"
:pagination="ipagination"
:loading="loading"
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
class="j-table-force-nowrap"
@change="handleTableChange">
<template slot="htmlSlot" slot-scope="text">
<div v-html="text"></div>
</template>
<template slot="imgSlot" slot-scope="text">
<span v-if="!text" style="font-size: 12px;font-style: italic;">无图片</span>
<img v-else :src="getImgView(text)" height="25px" alt="" style="max-width:80px;font-size: 12px;font-style: italic;"/>
</template>
<template slot="fileSlot" slot-scope="text">
<span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span>
<a-button
v-else
:ghost="true"
type="primary"
icon="download"
size="small"
@click="downloadFile(text)">
下载
</a-button>
</template>
<span slot="action" slot-scope="text, record">
<a @click="handleEdit(record)">编辑</a>
<a-divider type="vertical" />
<a-dropdown>
<a class="ant-dropdown-link">更多 <a-icon type="down" /></a>
<a-menu slot="overlay">
<a-menu-item>
<a @click="handleDetail(record)">详情</a>
</a-menu-item>
<a-menu-item>
<a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
<a>删除</a>
</a-popconfirm>
</a-menu-item>
</a-menu>
</a-dropdown>
</span>
</a-table>
</div>
<idc-table-unique-field-modal ref="modalForm" @ok="modalFormOk"></idc-table-unique-field-modal>
</a-card>
</template>
<script>
import '@/assets/less/TableExpand.less'
import { mixinDevice } from '@/utils/mixin'
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import IdcTableUniqueFieldModal from './modules/IdcTableUniqueFieldModal'
import JSuperQuery from '@/components/jeecg/JSuperQuery.vue'
import {deleteAction} from "@api/manage";
export default {
name: 'IdcTableUniqueFieldList',
mixins:[JeecgListMixin, mixinDevice],
components: {
IdcTableUniqueFieldModal,
JSuperQuery,
},
data () {
return {
description: '表索引管理页面',
// 表头
columns: [
{
title: '#',
dataIndex: '',
key:'rowIndex',
width:60,
align:"center",
customRender:function (t,r,index) {
return parseInt(index)+1;
}
},
{
title:'用户',
align:"center",
dataIndex: 'sourceOwner'
},
{
title:'源库名称',
align:"center",
dataIndex: 'sourceName'
},
{
title:'源表名',
align:"center",
dataIndex: 'tableName'
},
{
title:'字段名',
align:"center",
dataIndex: 'fieldName'
},
{
title:'统计依据字段',
align:"center",
dataIndex: 'statisticalValue'
},
{
title:'统计依据类型',
align:"center",
dataIndex: 'statisticalType'
},
{
title: '操作',
dataIndex: 'action',
align:"center",
fixed:"right",
width:147,
scopedSlots: { customRender: 'action' }
}
],
url: {
list: "/IdcTableUniqueField/idcTableUniqueField/list",
delete: "/IdcTableUniqueField/idcTableUniqueField/delete",
deleteBatch: "/IdcTableUniqueField/idcTableUniqueField/deleteBatch",
exportXlsUrl: "/IdcTableUniqueField/idcTableUniqueField/exportXls",
importExcelUrl: "IdcTableUniqueField/idcTableUniqueField/importExcel",
},
dictOptions:{},
superFieldList:[],
}
},
created() {
this.getSuperFieldList();
},
computed: {
importExcelUrl: function(){
return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
},
},
methods: {
initDictConfig(){
},
getSuperFieldList(){
let fieldList=[];
fieldList.push({type:'string',value:'sourceId',text:'源库ID'})
fieldList.push({type:'string',value:'tableName',text:'源表名'})
fieldList.push({type:'string',value:'fieldName',text:'字段名'})
fieldList.push({type:'string',value:'sourceOwner',text:'用户'})
this.superFieldList = fieldList
},
handleDelete(id) {
if(!this.url.delete){
this.$message.error("请设置url.delete属性!")
return
}
const that = this
this.$confirm({
title: '提示',
content: (<p>您确认要执行删除吗<br />如果依据字段为空同步方式将改为全量同步<br />确认后将删除已同步的数据</p>),
onOk() {
deleteAction(that.url.delete, {id: id}).then((res) => {
if (res.success) {
that.$message.success(res.message);
that.loadData();
} else {
that.$message.warning(res.message);
}
});
},
onCancel() {
that.$destroyAll();
},
});
},
}
}
</script>
<style scoped>
@import '~@assets/less/common.less';
</style>