|
@@ -0,0 +1,414 @@
|
|
|
|
+<template>
|
|
|
|
+ <div class="selfData-page">
|
|
|
|
+ <div class="header">
|
|
|
|
+ <div class="left">
|
|
|
|
+ <el-select
|
|
|
|
+ v-model="filterObj.source"
|
|
|
|
+ @change="filterChange"
|
|
|
|
+ placeholder="请选择渠道"
|
|
|
|
+ clearable
|
|
|
|
+ >
|
|
|
|
+ <el-option v-for="item in sourceOptions" :key="item" :label="$t('SystemManage.OperateAuth.set_assets_tab')" :value="1"/>
|
|
|
|
+ </el-select>
|
|
|
|
+
|
|
|
|
+ <el-select
|
|
|
|
+ v-model="filterObj.frequency"
|
|
|
|
+ @change="filterChange"
|
|
|
|
+ :placeholder="$t('Edb.InputHolderAll.input_fre')"
|
|
|
|
+ clearable
|
|
|
|
+ >
|
|
|
|
+ <el-option v-for="item in frequencyOptions" :key="item" :label="$t('SystemManage.OperateAuth.set_assets_tab')" :value="1"/>
|
|
|
|
+ </el-select>
|
|
|
|
+
|
|
|
|
+ <el-input
|
|
|
|
+ v-model="filterObj.keyWord"
|
|
|
|
+ :placeholder="$t('Edb.InputHolderAll.input_name_orid')"
|
|
|
|
+ style="width: 250px;"
|
|
|
|
+ @change="filterChange"
|
|
|
|
+ clearable
|
|
|
|
+ >
|
|
|
|
+ <i slot="prefix" class="el-input__icon el-icon-search"/>
|
|
|
|
+ </el-input>
|
|
|
|
+
|
|
|
|
+ <el-checkbox
|
|
|
|
+ v-model="filterObj.checkAll"
|
|
|
|
+ :indeterminate="filterObj.checkSome"
|
|
|
|
+ :disabled="tableData.length===0"
|
|
|
|
+ style="margin-left:20px"
|
|
|
|
+ @change="listCheckAllChange"
|
|
|
|
+ ><!-- 列表全选 -->{{$t('SystemManage.OperateAuth.all_select')}}</el-checkbox>
|
|
|
|
+ </div>
|
|
|
|
+
|
|
|
|
+ <el-button type="primary" @click="addToBaseHandle"><!-- 添加到指标库 -->{{$t('YsDataPage.add_base_btn')}}</el-button>
|
|
|
|
+ </div>
|
|
|
|
+
|
|
|
|
+ <div class="main">
|
|
|
|
+ <el-table
|
|
|
|
+ :data="tableData"
|
|
|
|
+ ref="table"
|
|
|
|
+ element-loading-text="加载中..."
|
|
|
|
+ v-loading="tableLoading"
|
|
|
|
+ border
|
|
|
|
+ style="margin:20px 0"
|
|
|
|
+ @selection-change="selectionChange"
|
|
|
|
+ @select="selectHandle"
|
|
|
|
+ @select-all="selectAllPageHandle"
|
|
|
|
+ @sort-change="handleSortChange"
|
|
|
|
+ >
|
|
|
|
+ <el-table-column
|
|
|
|
+ type="selection"
|
|
|
|
+ width="55"
|
|
|
|
+ />
|
|
|
|
+ <el-table-column
|
|
|
|
+ v-for="item in tableColums"
|
|
|
|
+ :key="item.label"
|
|
|
|
+ :label="item.label"
|
|
|
|
+ :prop="item.key"
|
|
|
|
+ :width="item.widthsty"
|
|
|
|
+ :min-width="item.minwidthsty"
|
|
|
|
+ :sortable="item.sortable?true:false"
|
|
|
|
+ align="center"
|
|
|
|
+ >
|
|
|
|
+ <template slot-scope="{row}">
|
|
|
|
+ <template v-if="item.key==='handle'">
|
|
|
|
+ <span
|
|
|
|
+ class="editsty"
|
|
|
|
+ @click="lookDataHandle"
|
|
|
|
+ >
|
|
|
|
+ <!-- 查看数据 -->{{$t('Edb.detail_lookdata_btn')}}
|
|
|
|
+ </span>
|
|
|
|
+
|
|
|
|
+ <span
|
|
|
|
+ class="editsty"
|
|
|
|
+ @click="addToBaseHandle('single')"
|
|
|
|
+ >
|
|
|
|
+ <!-- 添加到指标库 -->{{$t('YsDataPage.add_base_btn')}}
|
|
|
|
+ </span>
|
|
|
|
+ </template>
|
|
|
|
+
|
|
|
|
+ <span v-else>{{ row[item.key] }}</span>
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+
|
|
|
|
+ <div slot="empty" style="padding: 100px 0">
|
|
|
|
+ <tableNoData :text="$t('Table.prompt_slogan')" size="mini"/>
|
|
|
|
+ </div>
|
|
|
|
+ </el-table>
|
|
|
|
+
|
|
|
|
+ <div style="height:35px;margin: 20px 0;">
|
|
|
|
+ <m-page
|
|
|
|
+ :page_no="page_no"
|
|
|
|
+ :pageSize="pageSize"
|
|
|
|
+ :total="total"
|
|
|
|
+ @handleCurrentChange="pageChange"
|
|
|
|
+ />
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+
|
|
|
|
+ <!-- 查看数据弹窗 -->
|
|
|
|
+ <lookEdbDataDia
|
|
|
|
+ :isShow.sync="isLookDataDia"
|
|
|
|
+ />
|
|
|
|
+
|
|
|
|
+ <!-- 加入指标库弹窗 -->
|
|
|
|
+ <addToBaseDia
|
|
|
|
+ :isShow.sync="isAddToBaseDia"
|
|
|
|
+ :list="addToBaseList"
|
|
|
|
+ />
|
|
|
|
+ </div>
|
|
|
|
+</template>
|
|
|
|
+<script>
|
|
|
|
+import mPage from '@/components/mPage.vue';
|
|
|
|
+import lookEdbDataDia from './components/lookEdbDataDia.vue';
|
|
|
|
+import addToBaseDia from './components/addToBaseDia.vue';
|
|
|
|
+export default {
|
|
|
|
+ components: { mPage,lookEdbDataDia,addToBaseDia },
|
|
|
|
+ computed: {
|
|
|
|
+ tableColums() {
|
|
|
|
+ return [
|
|
|
|
+ {
|
|
|
|
+ label: this.$t('Edb.Detail.e_id'),
|
|
|
|
+ key: 'EdbCode',
|
|
|
|
+ widthsty: '120px',
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ label: this.$t('Edb.Detail.e_name'),
|
|
|
|
+ key: 'EdbName',
|
|
|
|
+ minwidthsty: '150px',
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ label: this.$t('Edb.Detail.e_fre'),
|
|
|
|
+ key: 'Frequency',
|
|
|
|
+ minwidthsty: '60px',
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ label: this.$t('Edb.Detail.e_unit'),
|
|
|
|
+ key: 'Unit',
|
|
|
|
+ minwidthsty: '50px',
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ label: '渠道',
|
|
|
|
+ key: 'Source',
|
|
|
|
+ minwidthsty: '50px',
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ label: '指标开始时间',
|
|
|
|
+ key: 'StartDate',
|
|
|
|
+ sortable:true,
|
|
|
|
+ minwidthsty: '100px',
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ label: '指标最新时间',
|
|
|
|
+ key: 'LatestDate',
|
|
|
|
+ sortable:true,
|
|
|
|
+ minwidthsty: '90px',
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ label: '入库时间',
|
|
|
|
+ sortable:true,
|
|
|
|
+ key: 'CreateTime'
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ label: this.$t('Table.column_operations'),
|
|
|
|
+ key: 'handle'
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ ]
|
|
|
|
+ },
|
|
|
|
+ },
|
|
|
|
+ data() {
|
|
|
|
+ return {
|
|
|
|
+ tableLoading: false,
|
|
|
|
+ total: 0,
|
|
|
|
+
|
|
|
|
+ tableData: [
|
|
|
|
+ { EdbCode: 'w102256',EdbName:'1dqwd',Frequency:'日度',Unit:'无',Source:'',StartDate:'',LatestDate:'',CreateTime:'' },
|
|
|
|
+ { EdbCode: 'w102256',EdbName:'1dqwd',Frequency:'日度',Unit:'无',Source:'',StartDate:'',LatestDate:'',CreateTime:'' },
|
|
|
|
+ { EdbCode: 'w102256',EdbName:'1dqwd',Frequency:'日度',Unit:'无',Source:'',StartDate:'',LatestDate:'',CreateTime:'' },
|
|
|
|
+ { EdbCode: 'w102256',EdbName:'1dqwd',Frequency:'日度',Unit:'无',Source:'',StartDate:'',LatestDate:'',CreateTime:'' },
|
|
|
|
+ ],
|
|
|
|
+
|
|
|
|
+ sourceOptions: [],
|
|
|
|
+ frequencyOptions: [],
|
|
|
|
+
|
|
|
|
+ isSelectAll: false, //真正意义上的全选或不全选
|
|
|
|
+ checkedList: [], //不全选勾选中的 或 全选取消勾的
|
|
|
|
+ selectionReactCancel:false,//手动设置选中中
|
|
|
|
+
|
|
|
|
+ filterObj: {
|
|
|
|
+ page_no: 1,
|
|
|
|
+ pageSize: 10,
|
|
|
|
+ source: '',
|
|
|
|
+ frequency: '',
|
|
|
|
+ keyWord: '',
|
|
|
|
+ sortParam:'',
|
|
|
|
+ sortType:'',
|
|
|
|
+ checkAll: true, //控制全选显示状态
|
|
|
|
+ checkSome: false
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ /* 查看数据弹窗 */
|
|
|
|
+ isLookDataDia: false,
|
|
|
|
+
|
|
|
|
+ /* 加入指标库弹窗 */
|
|
|
|
+ isAddToBaseDia: false,
|
|
|
|
+ addToType: 'multiple',
|
|
|
|
+ addToBaseList: []
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ mounted(){
|
|
|
|
+ },
|
|
|
|
+ methods:{
|
|
|
|
+
|
|
|
|
+ getTableData() {
|
|
|
|
+ this.tableLoading = true;
|
|
|
|
+ // let params = {
|
|
|
|
+ // Source: this.default_tab,
|
|
|
|
+ // UserId: this.searchForm.user || 0,
|
|
|
|
+ // CurrentIndex: this.page_no,
|
|
|
|
+ // PageSize: this.pageSize,
|
|
|
|
+ // Keyword: this.searchForm.key_word,
|
|
|
|
+ // Classify,
|
|
|
|
+ // SubSource: this.default_tab === 6 ? Number(this.default_sub_tab) : 0
|
|
|
|
+ // }
|
|
|
|
+ // operateAuthInterface.list(params).then(res => {
|
|
|
|
+ // this.tableLoading = false;
|
|
|
|
+ // if( res.Ret!==200 )return
|
|
|
|
+
|
|
|
|
+ // const { Data } = res;
|
|
|
|
+
|
|
|
|
+ // this.tableData = Data.List || [];
|
|
|
|
+ // this.total = Data.Paging.Totals;
|
|
|
|
+
|
|
|
|
+ // if(type==='pageChange'){
|
|
|
|
+ // //页码变化 选中项不做清空
|
|
|
|
+ // this.checkedSomeSelection()
|
|
|
|
+ // }else {
|
|
|
|
+ // this.listCheckAllChange(true)
|
|
|
|
+
|
|
|
|
+ // }
|
|
|
|
+ // });
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ /* 设置当页数据勾选状态 */
|
|
|
|
+ checkedSomeSelection() {
|
|
|
|
+ this.selectionReactCancel=true
|
|
|
|
+
|
|
|
|
+ if(!this.isSelectAll){
|
|
|
|
+ this.checkedList.map(_ =>{
|
|
|
|
+ let row = this.tableData.find(item => item.DataId==_.DataId)
|
|
|
|
+ if(row){ //设置部分选中
|
|
|
|
+ setTimeout(()=>{
|
|
|
|
+ this.$refs.table.toggleRowSelection(row,true)
|
|
|
|
+ },20)
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ }else{
|
|
|
|
+ this.$refs.table &&this.$refs.table.toggleAllSelection()
|
|
|
|
+ this.checkedList.map(_ =>{
|
|
|
|
+ let row = this.tableData.find(item => item.DataId==_.DataId)
|
|
|
|
+ if(row){ //设置部分不勾选
|
|
|
|
+ setTimeout(()=>{
|
|
|
|
+ this.$refs.table.toggleRowSelection(row,false)
|
|
|
|
+ },20)
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ setTimeout(()=>{
|
|
|
|
+ this.selectionReactCancel=false
|
|
|
|
+ },30)
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ //列表全选或全不选
|
|
|
|
+ listCheckAllChange(value){
|
|
|
|
+ this.checkedList = []
|
|
|
|
+ this.isSelectAll = value
|
|
|
|
+
|
|
|
|
+ value
|
|
|
|
+ ? (this.$refs.table && this.$refs.table.toggleAllSelection())
|
|
|
|
+ : (this.$refs.table && this.$refs.table.clearSelection())
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ selectionChange() {
|
|
|
|
+ if(this.selectionReactCancel) return
|
|
|
|
+
|
|
|
|
+ //设置全选框状态 选中 半选 不选
|
|
|
|
+ setTimeout(()=>{
|
|
|
|
+ let filterChecked = Array.from(new Set(this.checkedList))
|
|
|
|
+ //全选
|
|
|
|
+ if(
|
|
|
|
+ (filterChecked.length===this.total&&this.total>0 && (!this.isSelectAll))
|
|
|
|
+ || (filterChecked.length === 0 && this.isSelectAll)
|
|
|
|
+ ){
|
|
|
|
+ this.filterObj.checkAll = true
|
|
|
|
+ this.filterObj.checkSome = false
|
|
|
|
+ //不选
|
|
|
|
+ }else if(
|
|
|
|
+ (filterChecked.length === 0 && (!this.isSelectAll))
|
|
|
|
+ || (filterChecked.length === this.total && this.isSelectAll)
|
|
|
|
+ ){
|
|
|
|
+ this.filterObj.checkAll = false
|
|
|
|
+ this.filterObj.checkSome = false
|
|
|
|
+ //半选
|
|
|
|
+ }else{
|
|
|
|
+ this.filterObj.checkAll = false
|
|
|
|
+ this.filterObj.checkSome=true
|
|
|
|
+ }
|
|
|
|
+ },1)
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ //单选
|
|
|
|
+ selectHandle(selection,row){ //当前选中的项是进选中还是取消选中中
|
|
|
|
+ if(this.selectionReactCancel) return
|
|
|
|
+
|
|
|
|
+ //当前项是选中还是取消选
|
|
|
|
+ let haveChecked = selection.some(_ => _.DataId === row.DataId);
|
|
|
|
+
|
|
|
|
+ //全选取消选和不全选选中才有意义
|
|
|
|
+ if((haveChecked&&!this.isSelectAll) || (!haveChecked&&this.isSelectAll)) {
|
|
|
|
+ this.checkedList.push(row)
|
|
|
|
+ }else {
|
|
|
|
+ this.checkedList=this.checkedList.filter(_ => _.DataId!==row.DataId)
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ //整列选
|
|
|
|
+ selectAllPageHandle(selection){
|
|
|
|
+ if(this.selectionReactCancel) return
|
|
|
|
+
|
|
|
|
+ //当前页是选中还是取消
|
|
|
|
+ let haveChecked = selection && selection.length>0;
|
|
|
|
+
|
|
|
|
+ //全选取消选和不全选选中才有意义
|
|
|
|
+ if((haveChecked&&!this.isSelectAll) || (!haveChecked&&this.isSelectAll)) {
|
|
|
|
+ this.checkedList = [...this.checkedList,...this.tableData]
|
|
|
|
+ }else {
|
|
|
|
+
|
|
|
|
+ let pageIds = this.tableData.map(_ => _.DataId);
|
|
|
|
+ this.checkedList = this.checkedList.filter(_ => !pageIds.includes(_.DataId))
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ handleSortChange({prop,order}) {
|
|
|
|
+ const propMap={
|
|
|
|
+ 'StartDate':1,
|
|
|
|
+ 'EndDate':2,
|
|
|
|
+ 'ModifyTime':3
|
|
|
|
+ }
|
|
|
|
+ this.filterObj.sortParam = order?propMap[prop]||'':''
|
|
|
|
+ this.filterObj.sortType = order?order==='ascending'?1:2:''
|
|
|
|
+
|
|
|
|
+ this.filterChange()
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ // 页码改变
|
|
|
|
+ pageChange(page) {
|
|
|
|
+ this.filterObj.page_no = page;
|
|
|
|
+ this.getTableData('pageChange')
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ filterChange() {
|
|
|
|
+ this.filterObj.page_no = 1
|
|
|
|
+ this.getTableData('optionChange')
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ /* 查看数据 */
|
|
|
|
+ lookDataHandle() {
|
|
|
|
+ this.isLookDataDia = true
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ /* 添加到指标库 */
|
|
|
|
+ addToBaseHandle(type='multiple') {
|
|
|
|
+ if(type==='multiple' && !this.checkedList.length && !this.isSelectAll) return this.$message.warning('请选择指标')
|
|
|
|
+
|
|
|
|
+ this.addToType = type;
|
|
|
|
+ this.isAddToBaseDia = true
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ },
|
|
|
|
+}
|
|
|
|
+</script>
|
|
|
|
+<style scoped lang='scss'>
|
|
|
|
+.selfData-page {
|
|
|
|
+ min-height: calc(100vh - 120px);
|
|
|
|
+ display: flex;
|
|
|
|
+ flex-direction: column;
|
|
|
|
+ background-color: #fff;
|
|
|
|
+ border: 1px solid #c8cdd9;
|
|
|
|
+ border-radius: 4px;
|
|
|
|
+ box-shadow: 0 3px 6px rgba(0, 0, 0, .05);
|
|
|
|
+ padding: 20px;
|
|
|
|
+ box-sizing: border-box;
|
|
|
|
+
|
|
|
|
+ .header {
|
|
|
|
+ display: flex;
|
|
|
|
+ justify-content: space-between;
|
|
|
|
+ .left {
|
|
|
|
+ display: flex;
|
|
|
|
+ align-items: center;
|
|
|
|
+ gap: 10px;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+</style>
|