jiangping
2023-09-15 b459b874c062b1124200f8a591b86d0558c3ffce
新增源数据惨淡
已添加3个文件
已修改8个文件
578 ■■■■■ 文件已修改
platform/.env.development 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
platform/src/api/business/baseData.js 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platform/src/api/business/goods.js 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platform/src/components/business/OperaBaseDataWindow.vue 246 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platform/src/views/business/baseData.vue 201 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platform/src/views/business/goods.vue 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/platform/src/main/java/com/doumee/api/business/BaseGoodsController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/dao/business/model/BaseGoods.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/BaseCategoryServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/BaseDataServiceImpl.java 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/BaseGoodsServiceImpl.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platform/.env.development
@@ -6,4 +6,4 @@
# ä»»åº·
# VUE_APP_API = 'http://192.168.0.15:10017/'
# ç„¦æ¾
VUE_APP_API = 'http://192.168.0.36:10011'
VUE_APP_API = 'http://localhost:10011'
platform/src/api/business/baseData.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
import request from '../../utils/request'
// æŸ¥è¯¢
export function fetchList (data) {
  return request.post('/business/baseData/page', data, {
    trim: true
  })
}
// å¯¼å‡ºExcel
export function exportExcel (data) {
  return request.post('/business/baseData/exportExcel', data, {
    trim: true,
    download: true
  })
}
// åˆ›å»º
export function create (data) {
  return request.post('/business/baseData/create', data)
}
// ä¿®æ”¹
export function updateById (data) {
  return request.post('/business/baseData/updateById', data)
}
// åˆ é™¤
export function deleteById (id) {
  return request.get(`/business/baseData/delete/${id}`)
}
// æ‰¹é‡åˆ é™¤
export function deleteByIdInBatch (ids) {
  return request.get('/business/baseData/delete/batch', {
    params: {
      ids
    }
  })
}
platform/src/api/business/goods.js
@@ -2,14 +2,14 @@
// æŸ¥è¯¢
export function fetchList (data) {
  return request.post('/business/goods/page', data, {
  return request.post('/business/baseGoods/page', data, {
    trim: true
  })
}
// å¯¼å‡ºExcel
export function exportExcel (data) {
  return request.post('/business/goods/exportExcel', data, {
  return request.post('/business/baseGoods/exportExcel', data, {
    trim: true,
    download: true
  })
@@ -17,7 +17,7 @@
// å¯¼å‡ºæ¨¡æ¿
export function exportDoc (params) {
  return request.get('/business/goods/export', params, {
  return request.get('/business/baseGoods/export', params, {
    trim: true,
    download: true
  })
@@ -25,22 +25,22 @@
// åˆ›å»º
export function create (data) {
  return request.post('/business/goods/create', data)
  return request.post('/business/baseGoods/create', data)
}
// ä¿®æ”¹
export function updateById (data) {
  return request.post('/business/goods/updateById', data)
  return request.post('/business/baseGoods/updateById', data)
}
// åˆ é™¤
export function deleteById (id) {
  return request.get(`/business/goods/delete/${id}`)
  return request.get(`/business/baseGoods/delete/${id}`)
}
// æ‰¹é‡åˆ é™¤
export function deleteByIdInBatch (ids) {
  return request.get('/business/goods/delete/batch', {
  return request.get('/business/baseGoods/delete/batch', {
    params: {
      ids
    }
@@ -49,15 +49,15 @@
// ä¿®æ”¹çŠ¶æ€
export function updateDisableById (data) {
  return request.post('/business/goods/updateDisableById', data)
  return request.post('/business/baseGoods/updateDisableById', data)
}
// åˆ—表 - å•†å“é€‰æ‹©
export function findListForGoodsId (goodsId) {
export function findListForbaseGoodsId (goodsId) {
  return request.get(`/business/category/findListForGoodsId?goodsId=${goodsId}`)
}
// æ ¹æ®ID查询
export function queryById (id) {
  return request.get(`business/goods/${id}`)
  return request.get(`business/baseGoods/${id}`)
}
platform/src/components/business/OperaBaseDataWindow.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,246 @@
<template>
  <GlobalWindow
    :title="title"
    :visible.sync="visible"
    :confirm-working="isWorking"
    @confirm="confirm"
  >
    <el-form :model="form" ref="form" :rules="rules">
      <el-form-item label="创建人编码" prop="creator">
        <el-input v-model="form.creator" placeholder="请输入创建人编码" v-trim/>
      </el-form-item>
      <el-form-item label="创建时间" prop="createDate">
        <el-date-picker v-model="form.createDate" value-format="yyyy-MM-dd" placeholder="请输入创建时间"></el-date-picker>
      </el-form-item>
      <el-form-item label="更新人编码" prop="editor">
        <el-input v-model="form.editor" placeholder="请输入更新人编码" v-trim/>
      </el-form-item>
      <el-form-item label="更新时间" prop="editDate">
        <el-date-picker v-model="form.editDate" value-format="yyyy-MM-dd" placeholder="请输入更新时间"></el-date-picker>
      </el-form-item>
      <el-form-item label="是否删除0否 1是" prop="isdeleted">
        <el-input v-model="form.isdeleted" placeholder="请输入是否删除0否 1是" v-trim/>
      </el-form-item>
      <el-form-item label="标题" prop="title">
        <el-input v-model="form.title" placeholder="请输入标题" v-trim/>
      </el-form-item>
      <el-form-item label="商品名称" prop="name">
        <el-input v-model="form.name" placeholder="请输入商品名称" v-trim/>
      </el-form-item>
      <el-form-item label="京东sku" prop="sku">
        <el-input v-model="form.sku" placeholder="请输入京东sku" v-trim/>
      </el-form-item>
      <el-form-item label="品牌" prop="brand">
        <el-input v-model="form.brand" placeholder="请输入品牌" v-trim/>
      </el-form-item>
      <el-form-item label="类别" prop="category">
        <el-input v-model="form.category" placeholder="请输入类别" v-trim/>
      </el-form-item>
      <el-form-item label="外链地址" prop="url">
        <el-input v-model="form.url" placeholder="请输入外链地址" v-trim/>
      </el-form-item>
      <el-form-item label="列表图" prop="imgurl">
        <el-input v-model="form.imgurl" placeholder="请输入列表图" v-trim/>
      </el-form-item>
      <el-form-item label="大图1" prop="bgImg">
        <el-input v-model="form.bgImg" placeholder="请输入大图1" v-trim/>
      </el-form-item>
      <el-form-item label="大图2" prop="bgImg2">
        <el-input v-model="form.bgImg2" placeholder="请输入大图2" v-trim/>
      </el-form-item>
      <el-form-item label="大图3" prop="bgImg3">
        <el-input v-model="form.bgImg3" placeholder="请输入大图3" v-trim/>
      </el-form-item>
      <el-form-item label="ä»·æ ¼" prop="price">
        <el-input v-model="form.price" placeholder="请输入价格" v-trim/>
      </el-form-item>
      <el-form-item label="采购价格" prop="saleprice">
        <el-input v-model="form.saleprice" placeholder="请输入采购价格" v-trim/>
      </el-form-item>
      <el-form-item label="属性1" prop="attr1">
        <el-input v-model="form.attr1" placeholder="请输入属性1" v-trim/>
      </el-form-item>
      <el-form-item label="属性2" prop="attr2">
        <el-input v-model="form.attr2" placeholder="请输入属性2" v-trim/>
      </el-form-item>
      <el-form-item label="属性3" prop="attr3">
        <el-input v-model="form.attr3" placeholder="请输入属性3" v-trim/>
      </el-form-item>
      <el-form-item label="属性4" prop="attr4">
        <el-input v-model="form.attr4" placeholder="请输入属性4" v-trim/>
      </el-form-item>
      <el-form-item label="属性5" prop="attr5">
        <el-input v-model="form.attr5" placeholder="请输入属性5" v-trim/>
      </el-form-item>
      <el-form-item label="属性6" prop="attr6">
        <el-input v-model="form.attr6" placeholder="请输入属性6" v-trim/>
      </el-form-item>
      <el-form-item label="属性7" prop="attr7">
        <el-input v-model="form.attr7" placeholder="请输入属性7" v-trim/>
      </el-form-item>
      <el-form-item label="属性8" prop="attr8">
        <el-input v-model="form.attr8" placeholder="请输入属性8" v-trim/>
      </el-form-item>
      <el-form-item label="属性9" prop="attr9">
        <el-input v-model="form.attr9" placeholder="请输入属性9" v-trim/>
      </el-form-item>
      <el-form-item label="属性10" prop="attr10">
        <el-input v-model="form.attr10" placeholder="请输入属性10" v-trim/>
      </el-form-item>
      <el-form-item label="属性11" prop="attr11">
        <el-input v-model="form.attr11" placeholder="请输入属性11" v-trim/>
      </el-form-item>
      <el-form-item label="属性12" prop="attr12">
        <el-input v-model="form.attr12" placeholder="请输入属性12" v-trim/>
      </el-form-item>
      <el-form-item label="属性13" prop="attr13">
        <el-input v-model="form.attr13" placeholder="请输入属性13" v-trim/>
      </el-form-item>
      <el-form-item label="属性14" prop="attr14">
        <el-input v-model="form.attr14" placeholder="请输入属性14" v-trim/>
      </el-form-item>
      <el-form-item label="属性15" prop="attr15">
        <el-input v-model="form.attr15" placeholder="请输入属性15" v-trim/>
      </el-form-item>
      <el-form-item label="属性16" prop="attr16">
        <el-input v-model="form.attr16" placeholder="请输入属性16" v-trim/>
      </el-form-item>
      <el-form-item label="属性17" prop="attr17">
        <el-input v-model="form.attr17" placeholder="请输入属性17" v-trim/>
      </el-form-item>
      <el-form-item label="属性18" prop="attr18">
        <el-input v-model="form.attr18" placeholder="请输入属性18" v-trim/>
      </el-form-item>
      <el-form-item label="属性19" prop="attr19">
        <el-input v-model="form.attr19" placeholder="请输入属性19" v-trim/>
      </el-form-item>
      <el-form-item label="属性20" prop="attr20">
        <el-input v-model="form.attr20" placeholder="请输入属性20" v-trim/>
      </el-form-item>
      <el-form-item label="属性21" prop="attr21">
        <el-input v-model="form.attr21" placeholder="请输入属性21" v-trim/>
      </el-form-item>
      <el-form-item label="属性22" prop="attr22">
        <el-input v-model="form.attr22" placeholder="请输入属性22" v-trim/>
      </el-form-item>
      <el-form-item label="属性23" prop="attr23">
        <el-input v-model="form.attr23" placeholder="请输入属性23" v-trim/>
      </el-form-item>
      <el-form-item label="属性24" prop="attr24">
        <el-input v-model="form.attr24" placeholder="请输入属性24" v-trim/>
      </el-form-item>
      <el-form-item label="属性25" prop="attr25">
        <el-input v-model="form.attr25" placeholder="请输入属性25" v-trim/>
      </el-form-item>
      <el-form-item label="属性26" prop="attr26">
        <el-input v-model="form.attr26" placeholder="请输入属性26" v-trim/>
      </el-form-item>
      <el-form-item label="属性27" prop="attr27">
        <el-input v-model="form.attr27" placeholder="请输入属性27" v-trim/>
      </el-form-item>
      <el-form-item label="属性28" prop="attr28">
        <el-input v-model="form.attr28" placeholder="请输入属性28" v-trim/>
      </el-form-item>
      <el-form-item label="属性29" prop="attr29">
        <el-input v-model="form.attr29" placeholder="请输入属性29" v-trim/>
      </el-form-item>
      <el-form-item label="属性30" prop="attr30">
        <el-input v-model="form.attr30" placeholder="请输入属性30" v-trim/>
      </el-form-item>
      <el-form-item label="属性31" prop="attr31">
        <el-input v-model="form.attr31" placeholder="请输入属性31" v-trim/>
      </el-form-item>
      <el-form-item label="属性32" prop="attr32">
        <el-input v-model="form.attr32" placeholder="请输入属性32" v-trim/>
      </el-form-item>
      <el-form-item label="属性33" prop="attr33">
        <el-input v-model="form.attr33" placeholder="请输入属性33" v-trim/>
      </el-form-item>
      <el-form-item label="属性34" prop="attr34">
        <el-input v-model="form.attr34" placeholder="请输入属性34" v-trim/>
      </el-form-item>
      <el-form-item label="处理状态 0待处理 1已处理" prop="status">
        <el-input v-model="form.status" placeholder="请输入处理状态 0待处理 1已处理" v-trim/>
      </el-form-item>
    </el-form>
  </GlobalWindow>
</template>
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
export default {
  name: 'OperaBaseDataWindow',
  extends: BaseOpera,
  components: { GlobalWindow },
  data () {
    return {
      // è¡¨å•数据
      form: {
        id: null,
        creator: '',
        createDate: '',
        editor: '',
        editDate: '',
        isdeleted: '',
        title: '',
        name: '',
        sku: '',
        brand: '',
        category: '',
        url: '',
        imgurl: '',
        bgImg: '',
        bgImg2: '',
        bgImg3: '',
        price: '',
        saleprice: '',
        attr1: '',
        attr2: '',
        attr3: '',
        attr4: '',
        attr5: '',
        attr6: '',
        attr7: '',
        attr8: '',
        attr9: '',
        attr10: '',
        attr11: '',
        attr12: '',
        attr13: '',
        attr14: '',
        attr15: '',
        attr16: '',
        attr17: '',
        attr18: '',
        attr19: '',
        attr20: '',
        attr21: '',
        attr22: '',
        attr23: '',
        attr24: '',
        attr25: '',
        attr26: '',
        attr27: '',
        attr28: '',
        attr29: '',
        attr30: '',
        attr31: '',
        attr32: '',
        attr33: '',
        attr34: '',
        status: ''
      },
      // éªŒè¯è§„则
      rules: {
      }
    }
  },
  created () {
    this.config({
      api: '/business/baseData',
      'field.id': 'id'
    })
  }
}
</script>
platform/src/views/business/baseData.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,201 @@
<template>
  <TableLayout :permissions="['business:basedata:query']">
    <!-- æœç´¢è¡¨å• -->
    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="80px" inline>
      <el-form-item label="商品名称" prop="name">
        <el-input v-model="searchForm.name" placeholder="请输入商品名称" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="京东sku" prop="sku">
        <el-input v-model="searchForm.sku" placeholder="请输入京东sku" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="品牌" prop="brand">
        <el-input v-model="searchForm.brand" placeholder="请输入品牌" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="类别" prop="category">
        <el-input v-model="searchForm.category" placeholder="请输入类别" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="状态" prop="status">
        <el-select v-model="searchForm.status" clearable placeholder="请选择">
          <el-option v-for="item in statusList" :key="item.id" :label="item.name" :value="item.id">
          </el-option>
        </el-select>
        <!-- <el-input v-model="searchForm.status" placeholder="请输入状态 0启用 1禁用" @keypress.enter.native="search"></el-input> -->
      </el-form-item>
      <section>
        <el-button type="primary" @click="search">搜索</el-button>
<!--
        <el-button type="primary" :loading="isWorking.export" v-permissions="['business:basedata:exportExcel']" @click="exportExcel">导出</el-button>
-->
        <el-button @click="reset">重置</el-button>
      </section>
    </el-form>
    <!-- è¡¨æ ¼å’Œåˆ†é¡µ -->
    <template v-slot:table-wrap>
      <ul class="toolbar" v-permissions="['business:basedata:create', 'business:basedata:delete']">
<!--
        <li><el-button type="primary" @click="$refs.operaBaseDataWindow.open('新建商品源数据信息表')" icon="el-icon-plus" v-permissions="['business:basedata:create']">新建</el-button></li>
-->
        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:basedata:delete']">批量删除</el-button></li>
      </ul>
      <el-table
        v-loading="isWorking.search"
        :data="tableData.list"
        stripe
        @selection-change="handleSelectionChange"
      >
        <el-table-column type="selection" width="55"></el-table-column>
        <el-table-column prop="id" label="主键" min-width="100px"></el-table-column>
        <el-table-column prop="createDate" label="创建时间" min-width="100px"></el-table-column>
        <el-table-column prop="name" label="商品主图" min-width="80px">
          <template slot-scope="{row}">
           <a :href="`${row.url}`" target="_blank">
             <div style="display: flex; align-items: center;">
               <div style="width: 70px; height: 70px; flex-shrink: 0;">
                 <el-image v-if="row.imgurl" style="width: 70px; height: 70px" :src="row.imgurl"
                           :preview-src-list="[row.imgurl]" fit="cover"></el-image>
               </div>
             </div> </a>
          </template>
        </el-table-column>
        <el-table-column prop="name" label="商品名称" min-width="100px">
          <template slot-scope="{row}">
           <a :href="`${row.url}`" target="_blank">{{row.name}}</a>
          </template>
        </el-table-column>
<!--        <el-table-column prop="title" label="标题" min-width="100px"></el-table-column>-->
        <el-table-column prop="sku" label="京东sku" min-width="100px"></el-table-column>
        <el-table-column prop="brand" label="品牌" min-width="100px"></el-table-column>
        <el-table-column prop="category" label="类别" min-width="100px"></el-table-column>
        <el-table-column prop="price" label="价格(元)" min-width="100px"></el-table-column>
        <el-table-column prop="saleprice" label="采购价格(元)" min-width="100px"></el-table-column>
        <el-table-column prop="bgImg" label="大图1" min-width="80px">
          <template slot-scope="{row}">
            <div style="display: flex; align-items: center;">
              <div style="width: 70px; height: 70px; flex-shrink: 0;">
                <el-image v-if="row.bgImg" style="width: 70px; height: 70px" :src="row.bgImg"
                          :preview-src-list="[row.bgImg]" fit="cover"></el-image>
              </div>
            </div>
          </template>
        </el-table-column>
        <el-table-column prop="bgImg2" label="大图2" min-width="80px">
          <template slot-scope="{row}">
            <div style="display: flex; align-items: center;">
              <div style="width: 70px; height: 70px; flex-shrink: 0;">
                <el-image v-if="row.bgImg2" style="width: 70px; height: 70px" :src="row.bgImg2"
                          :preview-src-list="[row.bgImg2]" fit="cover"></el-image>
              </div>
            </div>
          </template>
        </el-table-column>
        <el-table-column prop="bgImg3" label="大图3" min-width="80px">
          <template slot-scope="{row}">
            <div style="display: flex; align-items: center;">
              <div style="width: 70px; height: 70px; flex-shrink: 0;">
                <el-image v-if="row.bgImg3" style="width: 70px; height: 70px" :src="row.bgImg3"
                          :preview-src-list="[row.bgImg3]" fit="cover"></el-image>
              </div>
            </div>
          </template>
        </el-table-column>
<!--        <el-table-column prop="attr1" label="属性1" min-width="100px"></el-table-column>
        <el-table-column prop="attr2" label="属性2" min-width="100px"></el-table-column>
        <el-table-column prop="attr3" label="属性3" min-width="100px"></el-table-column>
        <el-table-column prop="attr4" label="属性4" min-width="100px"></el-table-column>
        <el-table-column prop="attr5" label="属性5" min-width="100px"></el-table-column>
        <el-table-column prop="attr6" label="属性6" min-width="100px"></el-table-column>
        <el-table-column prop="attr7" label="属性7" min-width="100px"></el-table-column>
        <el-table-column prop="attr8" label="属性8" min-width="100px"></el-table-column>
        <el-table-column prop="attr9" label="属性9" min-width="100px"></el-table-column>
        <el-table-column prop="attr10" label="属性10" min-width="100px"></el-table-column>
        <el-table-column prop="attr11" label="属性11" min-width="100px"></el-table-column>
        <el-table-column prop="attr12" label="属性12" min-width="100px"></el-table-column>
        <el-table-column prop="attr13" label="属性13" min-width="100px"></el-table-column>
        <el-table-column prop="attr14" label="属性14" min-width="100px"></el-table-column>
        <el-table-column prop="attr15" label="属性15" min-width="100px"></el-table-column>
        <el-table-column prop="attr16" label="属性16" min-width="100px"></el-table-column>
        <el-table-column prop="attr17" label="属性17" min-width="100px"></el-table-column>
        <el-table-column prop="attr18" label="属性18" min-width="100px"></el-table-column>
        <el-table-column prop="attr19" label="属性19" min-width="100px"></el-table-column>
        <el-table-column prop="attr20" label="属性20" min-width="100px"></el-table-column>
        <el-table-column prop="attr21" label="属性21" min-width="100px"></el-table-column>
        <el-table-column prop="attr22" label="属性22" min-width="100px"></el-table-column>
        <el-table-column prop="attr23" label="属性23" min-width="100px"></el-table-column>
        <el-table-column prop="attr24" label="属性24" min-width="100px"></el-table-column>
        <el-table-column prop="attr25" label="属性25" min-width="100px"></el-table-column>
        <el-table-column prop="attr26" label="属性26" min-width="100px"></el-table-column>
        <el-table-column prop="attr27" label="属性27" min-width="100px"></el-table-column>
        <el-table-column prop="attr28" label="属性28" min-width="100px"></el-table-column>
        <el-table-column prop="attr29" label="属性29" min-width="100px"></el-table-column>
        <el-table-column prop="attr30" label="属性30" min-width="100px"></el-table-column>
        <el-table-column prop="attr31" label="属性31" min-width="100px"></el-table-column>
        <el-table-column prop="attr32" label="属性32" min-width="100px"></el-table-column>
        <el-table-column prop="attr33" label="属性33" min-width="100px"></el-table-column>
        <el-table-column prop="attr34" label="属性34" min-width="100px"></el-table-column>
        --><el-table-column prop="status" label="处理状态" min-width="100px">
        <template slot-scope="{row}">
          {{row.status==1?"已处理":"未处理"}}
        </template>
      </el-table-column>
        <el-table-column
          v-if="containPermissions(['business:basedata:update', 'business:basedata:delete'])"
          label="操作"
          min-width="120"
          fixed="right"
        >
          <template slot-scope="{row}">
<!--
            <el-button type="text" @click="$refs.operaBaseDataWindow.open('编辑商品源数据信息表', row)" icon="el-icon-edit" v-permissions="['business:basedata:update']">编辑</el-button>
-->
            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:basedata:delete']">删除</el-button>
          </template>
        </el-table-column>
      </el-table>
      <pagination
        @size-change="handleSizeChange"
        @current-change="handlePageChange"
        :pagination="tableData.pagination"
      >
      </pagination>
    </template>
    <!-- æ–°å»º/修改 -->
    <OperaBaseDataWindow ref="operaBaseDataWindow" @success="handlePageChange"/>
  </TableLayout>
</template>
<script>
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import OperaBaseDataWindow from '@/components/business/OperaBaseDataWindow'
export default {
  name: 'BaseData',
  extends: BaseTable,
  components: { TableLayout, Pagination, OperaBaseDataWindow },
  data () {
    return {
      // æœç´¢
      searchForm: {
        name: '',
        sku: '',
        brand: '',
        category: '',
        status: null
      },
      statusList: [
        { name: '未处理', id: 0 },
        { name: '已处理', id: 1 }
      ]
    }
  },
  created () {
    this.config({
      module: '商品源数据信息表',
      api: '/business/baseData',
      'field.id': 'id',
      'field.main': 'id'
    })
    this.search()
  }
}
</script>
platform/src/views/business/goods.vue
@@ -58,18 +58,17 @@
          <template slot-scope="{row}">
            <div style="display: flex; align-items: center;">
              <div style="width: 70px; height: 70px; flex-shrink: 0;">
                <el-image v-if="row.imgurl" style="width: 70px; height: 70px" :src="row.prefixUrl + row.imgurl"
                  :preview-src-list="[row.prefixUrl + row.imgurl]" fit="cover"></el-image>
                <el-image v-if="row.imgurl" style="width: 70px; height: 70px" :src="row.fullImgUrl"
                  :preview-src-list="[row.fullImgUrl]" fit="cover"></el-image>
              </div>
              {{ row.name }}
              <span style="margin-left: 15px">{{ row.name }}</span>
            </div>
          </template>
        </el-table-column>
        <el-table-column prop="brandName" label="品牌" min-width="100px"></el-table-column>
        <el-table-column prop="categoryName" label="类别" min-width="100px"></el-table-column>
        <el-table-column prop="baseZdPrice" label="指导价(元)" min-width="100px"></el-table-column>
        <el-table-column prop="basePrice" label="采购价(元)" min-width="100px"></el-table-column>
        <el-table-column prop="price" label="入手价(元)" min-width="100px"></el-table-column>
        <el-table-column prop="zdPrice" label="指导价(元)" min-width="100px"></el-table-column>
        <el-table-column prop="price" label="采购价(元)" min-width="100px"></el-table-column>
        <el-table-column prop="createDate" label="创建时间" min-width="100px"></el-table-column>
        <el-table-column prop="status" label="状态" min-width="100px">
          <template slot-scope="{row}">
server/platform/src/main/java/com/doumee/api/business/BaseGoodsController.java
@@ -96,7 +96,7 @@
     * @param idList å®žä½“对象
     */
    @ApiOperation("根据ID查询")
    @PostMapping("/{status")
    @PostMapping("/{status}")
    @RequiresPermissions("business:basegoods:query")
    public ApiResponse updateStatusByIds(@RequestBody List<Integer> idList, @PathVariable Integer status){
        baseGoodsService.updateStatusByIds(idList,status);
server/service/src/main/java/com/doumee/dao/business/model/BaseGoods.java
@@ -74,7 +74,7 @@
    @ApiModelProperty(value = "所属品类编码(base_category)", example = "1")
    @ExcelColumn(name="所属品类编码(base_category)")
    @TableField(exist = false)
    private Integer categoryName;
    private String categoryName;
    @ApiModelProperty(value = "所属品牌编码(base_brand)", example = "1")
    @ExcelColumn(name="所属品牌编码(base_brand)")
server/service/src/main/java/com/doumee/service/business/impl/BaseCategoryServiceImpl.java
@@ -288,8 +288,8 @@
    }
    private String getPreUrl(){
        String prefixUrl = systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.FILE_DIR).getCode()
                + systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.CATEGORY_IMG).getCode();
        String prefixUrl = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode()
                + systemDictDataBiz.queryByCode(Constants.OSS, Constants.CATEGORY_IMG).getCode();
        return prefixUrl;
    }
}
server/service/src/main/java/com/doumee/service/business/impl/BaseDataServiceImpl.java
@@ -117,6 +117,7 @@
  
    @Override
    public PageData<BaseData> findPage(PageWrap<BaseData> pageWrap) {
        pageWrap.getModel().setIsdeleted(Constants.ZERO);
        IPage<BaseData> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        QueryWrapper<BaseData> queryWrapper = new QueryWrapper<>();
        Utils.MP.blankToNull(pageWrap.getModel());
@@ -141,19 +142,19 @@
            queryWrapper.lambda().eq(BaseData::getIsdeleted, pageWrap.getModel().getIsdeleted());
        }
        if (pageWrap.getModel().getTitle() != null) {
            queryWrapper.lambda().eq(BaseData::getTitle, pageWrap.getModel().getTitle());
            queryWrapper.lambda().like(BaseData::getTitle, pageWrap.getModel().getTitle());
        }
        if (pageWrap.getModel().getName() != null) {
            queryWrapper.lambda().eq(BaseData::getName, pageWrap.getModel().getName());
            queryWrapper.lambda().like(BaseData::getName, pageWrap.getModel().getName());
        }
        if (pageWrap.getModel().getSku() != null) {
            queryWrapper.lambda().eq(BaseData::getSku, pageWrap.getModel().getSku());
            queryWrapper.lambda().like(BaseData::getSku, pageWrap.getModel().getSku());
        }
        if (pageWrap.getModel().getBrand() != null) {
            queryWrapper.lambda().eq(BaseData::getBrand, pageWrap.getModel().getBrand());
            queryWrapper.lambda().like(BaseData::getBrand, pageWrap.getModel().getBrand());
        }
        if (pageWrap.getModel().getCategory() != null) {
            queryWrapper.lambda().eq(BaseData::getCategory, pageWrap.getModel().getCategory());
            queryWrapper.lambda().like(BaseData::getCategory, pageWrap.getModel().getCategory());
        }
        if (pageWrap.getModel().getUrl() != null) {
            queryWrapper.lambda().eq(BaseData::getUrl, pageWrap.getModel().getUrl());
@@ -363,7 +364,7 @@
                if(cModel!= null){
                    goods.setCategoryId(cModel.getId());
                }
                goods.setImgurl(getOssImgurl(ossModel, data.getImgurl()));
                goods.setImgurl(getOssImgurl(ossModel,ossModel.getGoodsFolder(), data.getImgurl()));
                goods.setPrice(Constants.formatBigdecimal(data.getSaleprice()).multiply(Constants.formatBigdecimal(cModel.getPriceRate())));
                //插入新商品数据
                baseGoodsMapper.insert(goods);
@@ -397,7 +398,7 @@
    private int addImg(int i,OssModel ossModel, Integer id,String bgImg) {
        if(StringUtils.isNotBlank(bgImg)){
            String img =getOssImgurl(ossModel,bgImg);
            String img =getOssImgurl(ossModel, ossModel.getGoodsFolder() ,bgImg);
            if(StringUtils.isNotBlank(img)){
                Multifile f = new Multifile();
                f.setFileurl(img);
@@ -585,7 +586,7 @@
        model.setIsdeleted(Constants.ZERO);
        model.setPinyin(PinYinUtil.getFullSpell(model.getName()));
        model.setShortPinyin(PinYinUtil.getFirstSpell(model.getName()));
        model.setImgurl(getOssImgurl(ossModel,img));
        model.setImgurl(getOssImgurl(ossModel, ossModel.getCateFolder() ,img));
        //插入新的品牌信息
        baseCategoryMapper.insert(model);
        //加入集合中
@@ -593,7 +594,7 @@
        return model;
    }
    private String getOssImgurl(OssModel ossModel, String img) {
    private String getOssImgurl(OssModel ossModel, String folder,String img) {
        if(StringUtils.isBlank(img)){
            return null;
        }
@@ -603,7 +604,7 @@
            nfix = StringUtils.defaultString(nfix,".jpg");
            String fileName = UUID.randomUUID() + nfix;
            String tempFileName = nowDate + "/" + fileName;
            String key = ossModel.getCateFolder() + tempFileName;// æ–‡ä»¶å
            String key =folder+ tempFileName;// æ–‡ä»¶å
            ALiYunUtil obs = new ALiYunUtil(ossModel.getEndpoint(), ossModel.getAccessId(), ossModel.getAccessKey());
            if (obs.uploadOnlineObject(img,ossModel.getBucket(), key,null)) {
server/service/src/main/java/com/doumee/service/business/impl/BaseGoodsServiceImpl.java
@@ -21,6 +21,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
@@ -321,30 +322,22 @@
    @Override
    public PageData<BaseGoods> findPage(PageWrap<BaseGoods> pageWrap) {
        pageWrap.getModel().setIsdeleted(Constants.ZERO);
        IPage<BaseGoods> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        MPJLambdaWrapper<BaseGoods> queryWrapper = new MPJLambdaWrapper<>();
        Utils.MP.blankToNull(pageWrap.getModel());
        if (pageWrap.getModel().getId() != null) {
            queryWrapper.like(BaseGoods::getId, pageWrap.getModel().getId());
        }
        if (pageWrap.getModel().getName() != null) {
            queryWrapper.eq(BaseGoods::getName, pageWrap.getModel().getName());
        }
        if (pageWrap.getModel().getStatus() != null) {
            queryWrapper.eq(BaseGoods::getStatus, pageWrap.getModel().getStatus());
        }
        if (pageWrap.getModel().getCategoryId() != null) {
            queryWrapper.eq(BaseGoods::getCategoryId, pageWrap.getModel().getCategoryId());
        }
        if (pageWrap.getModel().getBrandId() != null) {
            queryWrapper.eq(BaseGoods::getBrandId, pageWrap.getModel().getBrandId());
        }
        queryWrapper.leftJoin(Brand.class,Brand::getId,BaseGoods::getBrandId)
                    .leftJoin(BaseCategory.class,BaseCategory::getId,BaseGoods::getBaseDataId)
                    .leftJoin(BaseCategory.class,BaseCategory::getId,BaseGoods::getCategoryId)
                    .selectAll(BaseGoods.class)
                    .selectAs(Brand::getName,BaseGoods::getBrandName)
                    .selectAs(BaseCategory::getSortnum,BaseGoods::getCategoryName);
                    .selectAs(BaseCategory::getName,BaseGoods::getCategoryName)
                    .eq(BaseGoods::getIsdeleted, Constants.ZERO)
                    .like(StringUtils.isNotBlank(pageWrap.getModel().getName()), BaseGoods::getName,pageWrap.getModel().getName())
                    .eq(pageWrap.getModel().getId()!=null,BaseGoods::getId, pageWrap.getModel().getId())
                    .eq(pageWrap.getModel().getCategoryId()!=null,BaseGoods::getCategoryId, pageWrap.getModel().getCategoryId())
                    .eq(pageWrap.getModel().getBrandId()!=null,BaseGoods::getBrandId, pageWrap.getModel().getBrandId())
                    .eq(pageWrap.getModel().getStatus()!=null,BaseGoods::getStatus, pageWrap.getModel().getStatus());
        queryWrapper.orderByDesc(Goods::getId);
        PageData<BaseGoods> pageData =PageData.from(baseGoodsJoinMapper.selectJoinPage(page,BaseGoods.class,queryWrapper));
        String prefixUrl = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode()