You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							151 lines
						
					
					
						
							4.1 KiB
						
					
					
				
			
		
		
	
	
							151 lines
						
					
					
						
							4.1 KiB
						
					
					
				<template> | 
						|
  <div> | 
						|
    <el-form ref="artFrom" :model="page" label-width="80px" label-position="right" class="tabform" | 
						|
             @submit.native.prevent inline> | 
						|
      <el-form-item label="输入搜索"> | 
						|
        <el-input clearable v-model="page.params.siteName" placeholder="请输入油站名称" | 
						|
                  class="form_content_width"></el-input> | 
						|
      </el-form-item> | 
						|
      <el-form-item> | 
						|
        <el-button type="primary" @click="userSearchs">查询</el-button> | 
						|
        <el-button type="primary" @click="submit">确定选择</el-button> | 
						|
      </el-form-item> | 
						|
    </el-form> | 
						|
    <el-table max-height="500" @selection-change="selectionChange" v-loading="loading" ref="table" :data="tableList" | 
						|
              :row-key="(row) => row.siteId" highlight-current-row empty-text="暂无数据" class="mt14"> | 
						|
      <el-table-column type="selection" reserve-selection width="55"> | 
						|
      </el-table-column> | 
						|
      <el-table-column label="油站名称" prop="siteName"></el-table-column> | 
						|
      <el-table-column label="渠道" prop="channel"></el-table-column> | 
						|
    </el-table> | 
						|
    <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" | 
						|
                   :current-page="page.currentPage" :page-sizes="[10, 15, 20, 30]" :page-size="page.pageSize" | 
						|
                   layout="total, sizes, prev, pager, next, jumper" :total="page.totalCount" /> | 
						|
  </div> | 
						|
</template> | 
						|
<script> | 
						|
import productApi from '@/api/product/productAttr.js' | 
						|
 | 
						|
export default { | 
						|
  name: 'OilStationSelection', | 
						|
  props: { | 
						|
    OilStationSelectionList: { | 
						|
      type: Array, | 
						|
      default: () => [] | 
						|
    }, | 
						|
    selectAttrId: { | 
						|
      type: String, | 
						|
      default: () => '' | 
						|
    } | 
						|
  }, | 
						|
  data() { | 
						|
    return { | 
						|
      selectionList: [], | 
						|
      loading: false, | 
						|
      tableList: [], | 
						|
      page: { | 
						|
        'currentPage': 1, | 
						|
        'pageSize': 10, | 
						|
        'totalCount': 0, | 
						|
        'params': { | 
						|
          'siteName': '' | 
						|
        } | 
						|
      } | 
						|
    } | 
						|
  }, | 
						|
  watch: { | 
						|
    OilStationSelectionList: { | 
						|
      handler(n, o) { | 
						|
        this.$refs.table.clearSelection() | 
						|
        n.forEach(element => { | 
						|
          this.$refs.table.toggleRowSelection(element) | 
						|
        }) | 
						|
      }, | 
						|
      deep: true | 
						|
    } | 
						|
  }, | 
						|
  created() { | 
						|
    this.init() | 
						|
  }, | 
						|
  methods: { | 
						|
    submit() { | 
						|
      this.$emit('submit', this.getSelectionList()) | 
						|
    }, | 
						|
    getSelectionList() { | 
						|
      return this.selectionList | 
						|
    }, | 
						|
    selectionChange(e) { | 
						|
      this.selectionList = e | 
						|
    }, | 
						|
    userSearchs() { | 
						|
      this.getByPage() | 
						|
    }, | 
						|
    isStrictPromise(value) { | 
						|
      return !!value | 
						|
        && typeof value === 'object' | 
						|
        && typeof value.then === 'function' | 
						|
        && typeof value.finally === 'function' | 
						|
    }, | 
						|
    loadingFn(callback) { | 
						|
      this.loading = true | 
						|
      if (this.isStrictPromise(callback)) { | 
						|
        callback.finally(() => { | 
						|
          this.loading = false | 
						|
        }) | 
						|
      } | 
						|
 | 
						|
    }, | 
						|
    getByPage() { | 
						|
      this.loadingFn(productApi.getAllSites(this.page).then(res => { | 
						|
        if (res.code === 20000) { | 
						|
          this.tableList = res.data.list | 
						|
          this.page.totalCount = parseInt(res.data.totalCount) | 
						|
 | 
						|
        } else { | 
						|
          this.tableList = [] | 
						|
          this.page.totalCount = 0 | 
						|
        } | 
						|
      })) | 
						|
    }, | 
						|
    handleCurrentChange(val) { | 
						|
      this.page.currentPage = val | 
						|
      this.getByPage() | 
						|
    }, | 
						|
    handleSizeChange(val) { | 
						|
      this.page.pageSize = val | 
						|
      this.getByPage() | 
						|
    }, | 
						|
    del(e) { | 
						|
      productApi.delete(e).then(res => { | 
						|
        if (res.code == 20000) { | 
						|
          this.$message.success('操作成功') | 
						|
          this.handleCurrentChange() | 
						|
        } | 
						|
      }) | 
						|
    }, | 
						|
    edit(row) { | 
						|
      let data = Object.assign({}, row, { | 
						|
        name: this.selectAttrId.split('/')[1] || '', | 
						|
        spec: [{ | 
						|
          value: row.attributeName, | 
						|
          detail: row.attributeContent.split(',') | 
						|
        }] | 
						|
      }) | 
						|
      this.$parent.$parent.selection = [data] | 
						|
      this.$parent.$parent.addAttr('typeUpdate') | 
						|
    }, | 
						|
    init() { | 
						|
      // this.getByPage(); | 
						|
 | 
						|
      // if (this.selectAttrId && this.selectAttrId.indexOf("/") !== -1) { | 
						|
      //     this.page.params.typeId = this.selectAttrId.split("/")[0] || ""; | 
						|
      //     this.getByPage(); | 
						|
      // } else { | 
						|
      //     this.$message.warning("初始化出错") | 
						|
      // } | 
						|
    } | 
						|
  } | 
						|
} | 
						|
</script> | 
						|
 | 
						|
<style></style>
 | 
						|
 |