xu 5 months ago
parent
commit
6db6c6317a

+ 3 - 3
server/api/v1/storehouse/commodity.go

@@ -21,7 +21,7 @@ func (ca *CommodityApi) QueryAllCommodity(c *gin.Context) {
 }
 
 func (ca *CommodityApi) QueryCommodityList(c *gin.Context) {
-	var info request.PageInfo
+	var info request.SearchCommodityList
 	err := c.ShouldBindJSON(&info)
 	if err != nil {
 		response.FailWithMessage("参数解析失败", c)
@@ -37,8 +37,8 @@ func (ca *CommodityApi) QueryCommodityList(c *gin.Context) {
 	response.OkWithDetailed(response.PageResult{
 		List:     list,
 		Total:    total,
-		Page:     info.Page,
-		PageSize: info.PageSize,
+		Page:     info.PageInfo.Page,
+		PageSize: info.PageInfo.PageSize,
 	}, "获取成功", c)
 }
 

+ 6 - 1
server/dao/commodity.go

@@ -22,10 +22,15 @@ func QueryAllCommodity() (commodities []Commodity, err error) {
 	return commodities, err
 }
 
-func QueryCommodityList(limit, offset int) (commodities []Commodity, total int64, err error) {
+func QueryCommodityList(limit, offset int, name string) (commodities []Commodity, total int64, err error) {
 	// 创建db
 	db := global.GVA_DB.Model(&Commodity{})
 	// 如果有条件搜索 下方会自动创建搜索语句
+
+	if name != "" {
+		db = db.Where("name LIKE?", "%"+name+"%")
+	}
+
 	err = db.Count(&total).Error
 	if err != nil {
 		return

+ 5 - 0
server/model/common/request/common.go

@@ -103,6 +103,11 @@ type SearchSupplierList struct {
 	Name     string   `json:"name" form:"name"`
 }
 
+type SearchCommodityList struct {
+	PageInfo PageInfo `json:"pageInfo" form:"pageInfo"`
+	Name     string   `json:"name" form:"name"`
+}
+
 type CreateProcess struct {
 	Process      dao.Process        `json:"process" form:"process"`
 	ProcessNodes []dao.ProcessNodes `json:"processNodes" form:"processNodes"`

+ 1 - 0
server/router/admin/file.go

@@ -25,5 +25,6 @@ func (s *ProjectRouter) InitFileRouter(Router *gin.RouterGroup) {
 		fileRouterWithoutRecord.GET("queryNecessaryDocuments", fileApi.QueryNecessaryDocuments)
 		fileRouterWithoutRecord.GET("queryNecessaryDocumentByGenreId", fileApi.QueryNecessaryDocumentByGenreId)
 		fileRouterWithoutRecord.GET("fileDownload", fileApi.FileDownload)
+		fileRouterWithoutRecord.GET("filePreview", fileApi.FilePreview)
 	}
 }

+ 4 - 4
server/service/storehouse/commodity.go

@@ -11,10 +11,10 @@ func (cs *CommodityService) QueryAllCommodity() ([]dao.Commodity, error) {
 	return dao.QueryAllCommodity()
 }
 
-func (cs *CommodityService) QueryCommodityList(info request.PageInfo) (list interface{}, total int64, err error) {
-	limit := info.PageSize
-	offset := info.PageSize * (info.Page - 1)
-	return dao.QueryCommodityList(limit, offset)
+func (cs *CommodityService) QueryCommodityList(info request.SearchCommodityList) (list interface{}, total int64, err error) {
+	limit := info.PageInfo.PageSize
+	offset := info.PageInfo.PageSize * (info.PageInfo.Page - 1)
+	return dao.QueryCommodityList(limit, offset, info.Name)
 }
 
 func (cs *CommodityService) CreateCommodity(commodity dao.Commodity) error {

+ 303 - 7
web/src/view/storehouse/commodity/commodity.vue

@@ -5,9 +5,29 @@
       style="line-height: 60px"
     >
       <el-row>
-        <el-col :span="8" />
+        <el-col :span="8">
+          <el-form
+            inline
+            style="margin-top: 10px"
+          >
+            <el-form-item label="名称">
+              <el-input
+                v-model="searchCommodity.name"
+                placeholder="请输入名称"
+              />
+            </el-form-item>
+            <el-form-item>
+              <el-button @click="getData">搜索</el-button>
+            </el-form-item>
+          </el-form>
+
+        </el-col>
         <el-col :span="8" />
         <el-col :span="8">
+          <el-button
+            type="primary"
+            @click="isOpenCommodityAdd = true"
+          >商品新增</el-button>
           <el-button
             type="primary"
             @click="isOpenCommodityGenre = true"
@@ -16,6 +36,180 @@
       </el-row>
     </el-header>
     <el-main class="gva-table-box">
+      <el-table
+        :data="commodityListData"
+        style="height: 600px"
+      >
+        <el-table-column
+          prop="name"
+          label="商品名称"
+          align="center"
+        />
+        <el-table-column
+          prop="commodityGenre.name"
+          label="类型"
+          align="center"
+        />
+        <el-table-column
+          prop="supplier.name"
+          label="供应商"
+          align="center"
+        />
+        <el-table-column
+          prop="unitPrice"
+          label="单价"
+          align="center"
+        />
+        <el-table-column label="操作">
+          <template #default="scope">
+            <el-button
+              size="small"
+              type="primary"
+              @click="openCommodityEdit(scope.row)"
+            >编辑</el-button>
+            <el-button
+              size="small"
+              type="danger"
+              @click="commodityDelete(scope.row)"
+            >删除</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <!--      分页-->
+      <div class="gva-pagination">
+        <el-pagination
+          :current-page="searchCommodity.pageInfo.page"
+          :page-size="searchCommodity.pageInfo.pageSize"
+          :page-sizes="[10, 30, 50, 100]"
+          :total="total"
+          layout="total, sizes, prev, pager, next, jumper"
+          @current-change="handleCurrentChange"
+          @size-change="handleSizeChange"
+        />
+      </div>
+      <!--      修改-->
+      <el-drawer
+        v-model="isOpenCommodityEdit"
+        title="修改供应商信息"
+        direction="rtl"
+        size="30%"
+      >
+        <div>
+          <el-form
+            v-model="commodityEditData"
+            label-position="left"
+            label-width="auto"
+            style="max-width: 400px"
+          >
+            <el-form-item label="商品名称">
+              <el-input v-model="commodityEditData.name" />
+            </el-form-item>
+            <el-form-item label="商品类型">
+              <el-select
+                v-model="commodityEditData.genre"
+                style="width: 240px"
+              >
+                <el-option
+                  v-for="item in commodityGenreAllData"
+                  :key="item.ID"
+                  :label="item.name"
+                  :value="item.ID"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="供应商">
+              <el-select
+                v-model="commodityEditData.supplierId"
+                style="width: 240px"
+              >
+                <el-option
+                  v-for="item in supplierAllData"
+                  :key="item.ID"
+                  :label="item.name"
+                  :value="item.ID"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="单价">
+              <el-input
+                v-model="commodityEditData.unitPrice"
+                type="number"
+              />
+            </el-form-item>
+            <el-form-item label="备注">
+              <el-input v-model="commodityEditData.remark" />
+            </el-form-item>
+            <el-form-item>
+              <el-button
+                type="primary"
+                @click="commoditySubmit"
+              >提交</el-button>
+              <el-button @click="isOpenCommodityEdit = false">关闭</el-button>
+            </el-form-item>
+          </el-form>
+        </div>
+      </el-drawer>
+      <el-drawer
+        v-model="isOpenCommodityAdd"
+        title="新增供应商信息"
+        direction="rtl"
+        size="30%"
+      >
+        <div>
+          <el-form
+            v-model="commodityAddData"
+            label-position="left"
+            label-width="auto"
+            style="max-width: 400px"
+          >
+            <el-form-item label="商品名称">
+              <el-input v-model="commodityAddData.name" />
+            </el-form-item>
+            <el-form-item label="商品类型">
+              <el-select
+                v-model="commodityAddData.genre"
+                style="width: 240px"
+              >
+                <el-option
+                  v-for="item in commodityGenreAllData"
+                  :key="item.ID"
+                  :label="item.name"
+                  :value="item.ID"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="供应商">
+              <el-select
+                v-model="commodityAddData.supplierId"
+                style="width: 240px"
+              >
+                <el-option
+                  v-for="item in supplierAllData"
+                  :key="item.ID"
+                  :label="item.name"
+                  :value="item.ID"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="单价">
+              <el-input
+                v-model="commodityAddData.unitPrice"
+                type="number"
+              />
+            </el-form-item>
+            <el-form-item label="备注">
+              <el-input v-model="commodityAddData.remark" />
+            </el-form-item>
+            <el-form-item>
+              <el-button
+                type="primary"
+                @click="commodityAddSubmit"
+              >提交</el-button>
+              <el-button @click="isOpenCommodityAdd = false">关闭</el-button>
+            </el-form-item>
+          </el-form>
+        </div>
+      </el-drawer>
       <!--      商品类型-->
       <el-drawer
         v-model="isOpenCommodityGenre"
@@ -24,7 +218,10 @@
         size="50%"
       >
         <el-header>
-          <el-button @click="isOpenAddGenre = true">新增商品类型</el-button>
+          <el-button
+            type="primary"
+            @click="isOpenAddGenre = true"
+          >新增商品类型</el-button>
         </el-header>
         <el-main>
           <el-table :data="filterTableData">
@@ -38,11 +235,20 @@
             />
             <el-table-column align="right">
               <template #header>
-                <el-input v-model="searchCommodityGenre" />
+                <el-input
+                  v-model="searchCommodityGenre"
+                  placeholder="筛选"
+                />
               </template>
               <template #default="scope">
-                <el-button @click="openUpdateGenre(scope.row)">编辑</el-button>
-                <el-button @click="commodityGenreDeleteSubmit(scope.row)">删除</el-button>
+                <el-button
+                  type="primary"
+                  @click="openUpdateGenre(scope.row)"
+                >编辑</el-button>
+                <el-button
+                  type="danger"
+                  @click="commodityGenreDeleteSubmit(scope.row)"
+                >删除</el-button>
               </template>
             </el-table-column>
           </el-table>
@@ -97,19 +303,51 @@
 <script setup>
 import { ref, onMounted, computed } from 'vue'
 import {
-  createCommodityGenre,
+  createCommodityGenre, deleteCommodity,
   deleteCommodityGenre,
-  queryAllCommodityGenre,
+  queryAllCommodityGenre, queryAllSupplier, queryCommodityList, updateCommodity,
   updateCommodityGenre
 } from '@/api/storehouse'
 import { ElMessage, ElMessageBox } from 'element-plus'
 
 // 数据
 const commodityGenreAllData = ref()
+const commodityListData = ref()
+
+const searchCommodity = ref({
+  pageInfo: {
+    page: 1,
+    pageSize: 10,
+  },
+  name: ''
+})
+
+const total = ref(0)
+
+// 分页
+const handleSizeChange = (val) => {
+  searchCommodity.value.pageSize = val
+  getData()
+}
+
+const handleCurrentChange = (val) => {
+  searchCommodity.value.page = val
+  getData()
+}
+
+const supplierAllData = ref()
 const getData = async() => {
   await queryAllCommodityGenre().then(res => {
     commodityGenreAllData.value = res.data
   })
+  await queryCommodityList(searchCommodity.value).then(res => {
+    commodityListData.value = res.data.list
+    total.value = res.data.total
+  })
+  await queryAllSupplier().then(res => {
+    console.log(res.data)
+    supplierAllData.value = res.data
+  })
 }
 
 // 商品类型
@@ -198,6 +436,64 @@ const commodityGenreDeleteSubmit = (val) => {
     })
 }
 
+// 商品
+const isOpenCommodityEdit = ref(false)
+const commodityEditData = ref()
+const openCommodityEdit = (val) => {
+  commodityEditData.value = val
+  isOpenCommodityEdit.value = true
+}
+
+const commoditySubmit = async() => {
+  await updateCommodity(commodityEditData.value).then(res => {
+    if (res.code === 0) {
+      ElMessage.success('编辑成功')
+    } else {
+      ElMessage.error('编辑失败')
+    }
+  })
+}
+
+const commodityDelete = async(val) => {
+  ElMessageBox.confirm(
+    '将永久删除该信息。是否继续?',
+    '删除',
+    {
+      confirmButtonText: '确定',
+      cancelButtonText: '取消',
+      type: 'warning',
+    }
+  )
+    .then(async() => {
+      await deleteCommodity(val).then(res => {
+        if (res.code === 0) {
+          ElMessage.success('删除成功')
+          getData()
+        } else {
+          ElMessage.error('删除失败')
+        }
+      })
+    })
+    .catch(() => {
+      ElMessage({
+        type: 'info',
+        message: '删除已取消',
+      })
+    })
+}
+
+// 新增
+const commodityAddData = ref({
+  name: '',
+  genre: '',
+  supplierId: '',
+  unitPrice: 0,
+  remark: '',
+})
+const isOpenCommodityAdd = ref(false)
+
+const commodityAddSubmit = async() => {}
+
 onMounted(() => {
   getData()
 })