This commit is contained in:
jacky 2024-04-09 09:04:19 +08:00
parent e350dbe696
commit b8eebd1d17
24 changed files with 0 additions and 5546 deletions

View File

@ -1,97 +0,0 @@
import service from '@/utils/request'
// @Tags CompanyPrice
// @Summary 创建公司报价
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body model.CompanyPrice true "创建公司报价"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"创建成功"}"
// @Router /companyPrice/createCompanyPrice [post]
export const createCompanyPrice = (data) => {
return service({
url: '/companyPrice/createCompanyPrice',
method: 'post',
data
})
}
// @Tags CompanyPrice
// @Summary 删除公司报价
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body model.CompanyPrice true "删除公司报价"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}"
// @Router /companyPrice/deleteCompanyPrice [delete]
export const deleteCompanyPrice = (params) => {
return service({
url: '/companyPrice/deleteCompanyPrice',
method: 'delete',
params
})
}
// @Tags CompanyPrice
// @Summary 批量删除公司报价
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body request.IdsReq true "批量删除公司报价"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}"
// @Router /companyPrice/deleteCompanyPrice [delete]
export const deleteCompanyPriceByIds = (params) => {
return service({
url: '/companyPrice/deleteCompanyPriceByIds',
method: 'delete',
params
})
}
// @Tags CompanyPrice
// @Summary 更新公司报价
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body model.CompanyPrice true "更新公司报价"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"更新成功"}"
// @Router /companyPrice/updateCompanyPrice [put]
export const updateCompanyPrice = (data) => {
return service({
url: '/companyPrice/updateCompanyPrice',
method: 'put',
data
})
}
// @Tags CompanyPrice
// @Summary 用id查询公司报价
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data query model.CompanyPrice true "用id查询公司报价"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"查询成功"}"
// @Router /companyPrice/findCompanyPrice [get]
export const findCompanyPrice = (params) => {
return service({
url: '/companyPrice/findCompanyPrice',
method: 'get',
params
})
}
// @Tags CompanyPrice
// @Summary 分页获取公司报价列表
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data query request.PageInfo true "分页获取公司报价列表"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}"
// @Router /companyPrice/getCompanyPriceList [get]
export const getCompanyPriceList = (params) => {
return service({
url: '/companyPrice/getCompanyPriceList',
method: 'get',
params
})
}

View File

@ -1,113 +0,0 @@
import service from '@/utils/request'
// @Tags Crawl100ppi
// @Summary 创建生意社爬虫数据
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body model.Crawl100ppi true "创建生意社爬虫数据"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"创建成功"}"
// @Router /crawl100ppi/createCrawl100ppi [post]
export const createCrawl100ppi = (data) => {
return service({
url: '/crawl100ppi/createCrawl100ppi',
method: 'post',
data
})
}
// @Tags Crawl100ppi
// @Summary 删除生意社爬虫数据
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body model.Crawl100ppi true "删除生意社爬虫数据"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}"
// @Router /crawl100ppi/deleteCrawl100ppi [delete]
export const deleteCrawl100ppi = (params) => {
return service({
url: '/crawl100ppi/deleteCrawl100ppi',
method: 'delete',
params
})
}
// @Tags Crawl100ppi
// @Summary 批量删除生意社爬虫数据
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body request.IdsReq true "批量删除生意社爬虫数据"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}"
// @Router /crawl100ppi/deleteCrawl100ppi [delete]
export const deleteCrawl100ppiByIds = (params) => {
return service({
url: '/crawl100ppi/deleteCrawl100ppiByIds',
method: 'delete',
params
})
}
// @Tags Crawl100ppi
// @Summary 更新生意社爬虫数据
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body model.Crawl100ppi true "更新生意社爬虫数据"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"更新成功"}"
// @Router /crawl100ppi/updateCrawl100ppi [put]
export const updateCrawl100ppi = (data) => {
return service({
url: '/crawl100ppi/updateCrawl100ppi',
method: 'put',
data
})
}
// @Tags Crawl100ppi
// @Summary 用id查询生意社爬虫数据
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data query model.Crawl100ppi true "用id查询生意社爬虫数据"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"查询成功"}"
// @Router /crawl100ppi/findCrawl100ppi [get]
export const findCrawl100ppi = (params) => {
return service({
url: '/crawl100ppi/findCrawl100ppi',
method: 'get',
params
})
}
// @Tags Crawl100ppi
// @Summary 分页获取生意社爬虫数据列表
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data query request.PageInfo true "分页获取生意社爬虫数据列表"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}"
// @Router /crawl100ppi/getCrawl100ppiList [get]
export const getCrawl100ppiList = (params) => {
return service({
url: '/crawl100ppi/getCrawl100ppiList',
method: 'get',
params
})
}
// @Tags Crawl100ppi
// @Summary 批量重新同步爬虫数据
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body request.IdsReq true "批量重新同步爬虫数据"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"同步成功"}"
// @Router /crawl100ppi/syncCrawl100ppi [put]
export const syncCrawl100ppi = (params) => {
return service({
url: '/crawl100ppi/syncCrawl100ppi',
method: 'put',
params
})
}

View File

@ -1,97 +0,0 @@
import service from '@/utils/request'
// @Tags CrawlFieldReplace
// @Summary 创建crawlFieldReplace表
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body model.CrawlFieldReplace true "创建crawlFieldReplace表"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"创建成功"}"
// @Router /crawlFieldReplace/createCrawlFieldReplace [post]
export const createCrawlFieldReplace = (data) => {
return service({
url: '/crawlFieldReplace/createCrawlFieldReplace',
method: 'post',
data
})
}
// @Tags CrawlFieldReplace
// @Summary 删除crawlFieldReplace表
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body model.CrawlFieldReplace true "删除crawlFieldReplace表"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}"
// @Router /crawlFieldReplace/deleteCrawlFieldReplace [delete]
export const deleteCrawlFieldReplace = (params) => {
return service({
url: '/crawlFieldReplace/deleteCrawlFieldReplace',
method: 'delete',
params
})
}
// @Tags CrawlFieldReplace
// @Summary 批量删除crawlFieldReplace表
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body request.IdsReq true "批量删除crawlFieldReplace表"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}"
// @Router /crawlFieldReplace/deleteCrawlFieldReplace [delete]
export const deleteCrawlFieldReplaceByIds = (params) => {
return service({
url: '/crawlFieldReplace/deleteCrawlFieldReplaceByIds',
method: 'delete',
params
})
}
// @Tags CrawlFieldReplace
// @Summary 更新crawlFieldReplace表
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body model.CrawlFieldReplace true "更新crawlFieldReplace表"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"更新成功"}"
// @Router /crawlFieldReplace/updateCrawlFieldReplace [put]
export const updateCrawlFieldReplace = (data) => {
return service({
url: '/crawlFieldReplace/updateCrawlFieldReplace',
method: 'put',
data
})
}
// @Tags CrawlFieldReplace
// @Summary 用id查询crawlFieldReplace表
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data query model.CrawlFieldReplace true "用id查询crawlFieldReplace表"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"查询成功"}"
// @Router /crawlFieldReplace/findCrawlFieldReplace [get]
export const findCrawlFieldReplace = (params) => {
return service({
url: '/crawlFieldReplace/findCrawlFieldReplace',
method: 'get',
params
})
}
// @Tags CrawlFieldReplace
// @Summary 分页获取crawlFieldReplace表列表
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data query request.PageInfo true "分页获取crawlFieldReplace表列表"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}"
// @Router /crawlFieldReplace/getCrawlFieldReplaceList [get]
export const getCrawlFieldReplaceList = (params) => {
return service({
url: '/crawlFieldReplace/getCrawlFieldReplaceList',
method: 'get',
params
})
}

View File

@ -1,97 +0,0 @@
import service from '@/utils/request'
// @Tags Product
// @Summary 创建产品表
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body model.Product true "创建产品表"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"创建成功"}"
// @Router /product/createProduct [post]
export const createProduct = (data) => {
return service({
url: '/product/createProduct',
method: 'post',
data
})
}
// @Tags Product
// @Summary 删除产品表
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body model.Product true "删除产品表"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}"
// @Router /product/deleteProduct [delete]
export const deleteProduct = (params) => {
return service({
url: '/product/deleteProduct',
method: 'delete',
params
})
}
// @Tags Product
// @Summary 批量删除产品表
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body request.IdsReq true "批量删除产品表"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}"
// @Router /product/deleteProduct [delete]
export const deleteProductByIds = (params) => {
return service({
url: '/product/deleteProductByIds',
method: 'delete',
params
})
}
// @Tags Product
// @Summary 更新产品表
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body model.Product true "更新产品表"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"更新成功"}"
// @Router /product/updateProduct [put]
export const updateProduct = (data) => {
return service({
url: '/product/updateProduct',
method: 'put',
data
})
}
// @Tags Product
// @Summary 用id查询产品表
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data query model.Product true "用id查询产品表"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"查询成功"}"
// @Router /product/findProduct [get]
export const findProduct = (params) => {
return service({
url: '/product/findProduct',
method: 'get',
params
})
}
// @Tags Product
// @Summary 分页获取产品表列表
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data query request.PageInfo true "分页获取产品表列表"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}"
// @Router /product/getProductList [get]
export const getProductList = (params) => {
return service({
url: '/product/getProductList',
method: 'get',
params
})
}

View File

@ -1,97 +0,0 @@
import service from '@/utils/request'
// @Tags ProductCategory
// @Summary 创建农资行情分类表
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body model.ProductCategory true "创建农资行情分类表"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"创建成功"}"
// @Router /productCategory/createProductCategory [post]
export const createProductCategory = (data) => {
return service({
url: '/productCategory/createProductCategory',
method: 'post',
data
})
}
// @Tags ProductCategory
// @Summary 删除农资行情分类表
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body model.ProductCategory true "删除农资行情分类表"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}"
// @Router /productCategory/deleteProductCategory [delete]
export const deleteProductCategory = (params) => {
return service({
url: '/productCategory/deleteProductCategory',
method: 'delete',
params
})
}
// @Tags ProductCategory
// @Summary 批量删除农资行情分类表
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body request.IdsReq true "批量删除农资行情分类表"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}"
// @Router /productCategory/deleteProductCategory [delete]
export const deleteProductCategoryByIds = (params) => {
return service({
url: '/productCategory/deleteProductCategoryByIds',
method: 'delete',
params
})
}
// @Tags ProductCategory
// @Summary 更新农资行情分类表
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body model.ProductCategory true "更新农资行情分类表"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"更新成功"}"
// @Router /productCategory/updateProductCategory [put]
export const updateProductCategory = (data) => {
return service({
url: '/productCategory/updateProductCategory',
method: 'put',
data
})
}
// @Tags ProductCategory
// @Summary 用id查询农资行情分类表
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data query model.ProductCategory true "用id查询农资行情分类表"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"查询成功"}"
// @Router /productCategory/findProductCategory [get]
export const findProductCategory = (params) => {
return service({
url: '/productCategory/findProductCategory',
method: 'get',
params
})
}
// @Tags ProductCategory
// @Summary 分页获取农资行情分类表列表
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data query request.PageInfo true "分页获取农资行情分类表列表"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}"
// @Router /productCategory/getProductCategoryList [get]
export const getProductCategoryList = (params) => {
return service({
url: '/productCategory/getProductCategoryList',
method: 'get',
params
})
}

View File

@ -1,97 +0,0 @@
import service from '@/utils/request'
// @Tags ProductPrice
// @Summary 创建产品价格
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body model.ProductPrice true "创建产品价格"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"创建成功"}"
// @Router /productPrice/createProductPrice [post]
export const createProductPrice = (data) => {
return service({
url: '/productPrice/createProductPrice',
method: 'post',
data
})
}
// @Tags ProductPrice
// @Summary 删除产品价格
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body model.ProductPrice true "删除产品价格"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}"
// @Router /productPrice/deleteProductPrice [delete]
export const deleteProductPrice = (params) => {
return service({
url: '/productPrice/deleteProductPrice',
method: 'delete',
params
})
}
// @Tags ProductPrice
// @Summary 批量删除产品价格
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body request.IdsReq true "批量删除产品价格"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}"
// @Router /productPrice/deleteProductPrice [delete]
export const deleteProductPriceByIds = (params) => {
return service({
url: '/productPrice/deleteProductPriceByIds',
method: 'delete',
params
})
}
// @Tags ProductPrice
// @Summary 更新产品价格
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body model.ProductPrice true "更新产品价格"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"更新成功"}"
// @Router /productPrice/updateProductPrice [put]
export const updateProductPrice = (data) => {
return service({
url: '/productPrice/updateProductPrice',
method: 'put',
data
})
}
// @Tags ProductPrice
// @Summary 用id查询产品价格
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data query model.ProductPrice true "用id查询产品价格"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"查询成功"}"
// @Router /productPrice/findProductPrice [get]
export const findProductPrice = (params) => {
return service({
url: '/productPrice/findProductPrice',
method: 'get',
params
})
}
// @Tags ProductPrice
// @Summary 分页获取产品价格列表
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data query request.PageInfo true "分页获取产品价格列表"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}"
// @Router /productPrice/getProductPriceList [get]
export const getProductPriceList = (params) => {
return service({
url: '/productPrice/getProductPriceList',
method: 'get',
params
})
}

View File

@ -1,97 +0,0 @@
import service from '@/utils/request'
// @Tags SourcePrice
// @Summary 创建nzhq_source_price表
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body model.SourcePrice true "创建nzhq_source_price表"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"创建成功"}"
// @Router /sourcePrice/createSourcePrice [post]
export const createSourcePrice = (data) => {
return service({
url: '/sourcePrice/createSourcePrice',
method: 'post',
data
})
}
// @Tags SourcePrice
// @Summary 删除nzhq_source_price表
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body model.SourcePrice true "删除nzhq_source_price表"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}"
// @Router /sourcePrice/deleteSourcePrice [delete]
export const deleteSourcePrice = (params) => {
return service({
url: '/sourcePrice/deleteSourcePrice',
method: 'delete',
params
})
}
// @Tags SourcePrice
// @Summary 批量删除nzhq_source_price表
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body request.IdsReq true "批量删除nzhq_source_price表"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}"
// @Router /sourcePrice/deleteSourcePrice [delete]
export const deleteSourcePriceByIds = (params) => {
return service({
url: '/sourcePrice/deleteSourcePriceByIds',
method: 'delete',
params
})
}
// @Tags SourcePrice
// @Summary 更新nzhq_source_price表
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body model.SourcePrice true "更新nzhq_source_price表"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"更新成功"}"
// @Router /sourcePrice/updateSourcePrice [put]
export const updateSourcePrice = (data) => {
return service({
url: '/sourcePrice/updateSourcePrice',
method: 'put',
data
})
}
// @Tags SourcePrice
// @Summary 用id查询nzhq_source_price表
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data query model.SourcePrice true "用id查询nzhq_source_price表"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"查询成功"}"
// @Router /sourcePrice/findSourcePrice [get]
export const findSourcePrice = (params) => {
return service({
url: '/sourcePrice/findSourcePrice',
method: 'get',
params
})
}
// @Tags SourcePrice
// @Summary 分页获取nzhq_source_price表列表
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data query request.PageInfo true "分页获取nzhq_source_price表列表"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}"
// @Router /sourcePrice/getSourcePriceList [get]
export const getSourcePriceList = (params) => {
return service({
url: '/sourcePrice/getSourcePriceList',
method: 'get',
params
})
}

View File

@ -1,97 +0,0 @@
import service from '@/utils/request'
// @Tags SystemArea
// @Summary 创建地区
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body model.SystemArea true "创建地区"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"创建成功"}"
// @Router /systemArea/createSystemArea [post]
export const createSystemArea = (data) => {
return service({
url: '/systemArea/createSystemArea',
method: 'post',
data
})
}
// @Tags SystemArea
// @Summary 删除地区
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body model.SystemArea true "删除地区"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}"
// @Router /systemArea/deleteSystemArea [delete]
export const deleteSystemArea = (params) => {
return service({
url: '/systemArea/deleteSystemArea',
method: 'delete',
params
})
}
// @Tags SystemArea
// @Summary 批量删除地区
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body request.IdsReq true "批量删除地区"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}"
// @Router /systemArea/deleteSystemArea [delete]
export const deleteSystemAreaByIds = (params) => {
return service({
url: '/systemArea/deleteSystemAreaByIds',
method: 'delete',
params
})
}
// @Tags SystemArea
// @Summary 更新地区
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body model.SystemArea true "更新地区"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"更新成功"}"
// @Router /systemArea/updateSystemArea [put]
export const updateSystemArea = (data) => {
return service({
url: '/systemArea/updateSystemArea',
method: 'put',
data
})
}
// @Tags SystemArea
// @Summary 用id查询地区
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data query model.SystemArea true "用id查询地区"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"查询成功"}"
// @Router /systemArea/findSystemArea [get]
export const findSystemArea = (params) => {
return service({
url: '/systemArea/findSystemArea',
method: 'get',
params
})
}
// @Tags SystemArea
// @Summary 分页获取地区列表
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data query request.PageInfo true "分页获取地区列表"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}"
// @Router /systemArea/getSystemAreaList [get]
export const getSystemAreaList = (params) => {
return service({
url: '/systemArea/getSystemAreaList',
method: 'get',
params
})
}

View File

@ -1,458 +0,0 @@
<template>
<div>
<div class="gva-search-box">
<el-form ref="elSearchFormRef" :inline="true" :model="searchInfo" class="demo-form-inline" :rules="searchRule"
@keyup.enter="onSubmit">
<el-form-item label="创建日期" prop="createdAt">
<template #label>
<span>
创建日期
<el-tooltip content="搜索范围是开始日期(包含)至结束日期(不包含)">
<el-icon>
<QuestionFilled />
</el-icon>
</el-tooltip>
</span>
</template>
<el-date-picker v-model="searchInfo.startCreatedAt" type="datetime" placeholder="开始日期"
:disabled-date="time=> searchInfo.endCreatedAt ? time.getTime() > searchInfo.endCreatedAt.getTime() : false"></el-date-picker>
<el-date-picker v-model="searchInfo.endCreatedAt" type="datetime" placeholder="结束日期"
:disabled-date="time=> searchInfo.startCreatedAt ? time.getTime() < searchInfo.startCreatedAt.getTime() : false"></el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="search" @click="onSubmit">查询</el-button>
<el-button icon="refresh" @click="onReset">重置</el-button>
</el-form-item>
</el-form>
</div>
<div class="gva-table-box">
<div class="gva-btn-list">
<el-button type="primary" icon="plus" @click="openDialog">新增</el-button>
<el-button icon="delete" style="margin-left: 10px;" :disabled="!multipleSelection.length"
@click="onDelete">删除</el-button>
</div>
<el-table ref="multipleTable" style="width: 100%" tooltip-effect="dark" :data="tableData" row-key="ID"
@selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" />
<el-table-column align="left" label="ID" prop="ID" width="80" />
<el-table-column align="left" label="产品" prop="productId" width="120">
<template #default="scope">{{ formatProduct(scope.row.productId) }}</template>
</el-table-column>
<el-table-column align="left" label="产品价格Id" prop="productPriceId" width="100" />
<el-table-column align="left" label="数据源Id" prop="sourceId" width="100" />
<el-table-column align="left" label="公司" prop="companyName" width="240" />
<el-table-column align="left" label="品牌" prop="producer" width="120" />
<el-table-column align="left" label="价格" prop="price" width="80" />
<el-table-column align="left" label="单位" prop="priceUnit" width="60" />
<el-table-column align="left" label="发布日期" width="100">
<template #default="scope">{{ formatOnlyDate(scope.row.publishDate) }}</template>
</el-table-column>
<el-table-column align="left" label="创建时间" width="180">
<template #default="scope">{{ formatDate(scope.row.createdAt) }}</template>
</el-table-column>
<el-table-column align="left" label="操作" fixed="right" min-width="240">
<template #default="scope">
<el-button type="primary" link class="table-button" @click="getDetails(scope.row)">
<el-icon style="margin-right: 5px">
<InfoFilled />
</el-icon>
查看详情
</el-button>
<el-button type="primary" link icon="edit" class="table-button"
@click="updateCompanyPriceFunc(scope.row)">变更</el-button>
<el-button type="primary" link icon="delete" @click="deleteRow(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
<div class="gva-pagination">
<el-pagination layout="total, sizes, prev, pager, next, jumper" :current-page="page" :page-size="pageSize"
:page-sizes="[10, 30, 50, 100]" :total="total" @current-change="handleCurrentChange"
@size-change="handleSizeChange" />
</div>
</div>
<el-drawer size="800" v-model="dialogFormVisible" :show-close="false" :before-close="closeDialog">
<template #header>
<div class="flex justify-between items-center">
<span class="text-lg">{{ type==='create'?'添加':'修改' }}</span>
<div>
<el-button type="primary" @click="enterDialog"> </el-button>
<el-button @click="closeDialog"> </el-button>
</div>
</div>
</template>
<el-form :model="formData" label-position="top" ref="elFormRef" :rules="rule" label-width="80px">
<el-form-item label="产品Id:" prop="productId">
<el-input v-model.number="formData.productId" :clearable="true" placeholder="请输入产品Id" />
</el-form-item>
<el-form-item label="产品价格Id:" prop="productPriceId">
<el-input v-model.number="formData.productPriceId" :clearable="true" placeholder="请输入产品价格Id" />
</el-form-item>
<el-form-item label="数据源Id:" prop="sourceId">
<el-input v-model.number="formData.sourceId" :clearable="true" placeholder="请输入数据源Id" />
</el-form-item>
<el-form-item label="公司:" prop="companyName">
<el-input v-model="formData.companyName" :clearable="true" placeholder="请输入公司" />
</el-form-item>
<el-form-item label="品牌:" prop="producer">
<el-input v-model="formData.producer" :clearable="true" placeholder="请输入品牌" />
</el-form-item>
<el-form-item label="价格:" prop="price">
<el-input-number v-model="formData.price" style="width:100%" :precision="2" :clearable="true" />
</el-form-item>
<el-form-item label="单位:" prop="priceUnit">
<el-input v-model="formData.priceUnit" :clearable="true" placeholder="请输入单位" />
</el-form-item>
<el-form-item label="发布日期:" prop="publishDate">
<el-date-picker v-model="formData.publishDate" type="date" style="width:100%" placeholder="选择日期" :clearable="true" />
</el-form-item>
</el-form>
</el-drawer>
<el-drawer size="800" v-model="detailShow" :before-close="closeDetailShow" destroy-on-close>
<template #header>
<div class="flex justify-between items-center">
<span class="text-lg">查看详情</span>
</div>
</template>
<el-descriptions :column="1" border>
<el-descriptions-item label="ID">
{{ formData.ID }}
</el-descriptions-item>
<el-descriptions-item label="产品">
{{ formatProduct(formData.productId) }}
</el-descriptions-item>
<el-descriptions-item label="产品价格Id">
{{ formData.productPriceId }}
</el-descriptions-item>
<el-descriptions-item label="数据源Id">
{{ formData.sourceId }}
</el-descriptions-item>
<el-descriptions-item label="公司">
{{ formData.companyName }}
</el-descriptions-item>
<el-descriptions-item label="品牌">
{{ formData.producer }}
</el-descriptions-item>
<el-descriptions-item label="价格">
{{ formData.price }}
</el-descriptions-item>
<el-descriptions-item label="单位">
{{ formData.priceUnit }}
</el-descriptions-item>
<el-descriptions-item label="发布日期">
{{ formatOnlyDate(formData.publishDate) }}
</el-descriptions-item>
<el-descriptions-item label="创建时间">
{{ formatDate(formData.createdAt) }}
</el-descriptions-item>
<el-descriptions-item label="更新时间">
{{ formatDate(formData.updatedAt) }}
</el-descriptions-item>
</el-descriptions>
</el-drawer>
</div>
</template>
<script setup>
import { getProductList } from '@/api/product'
import {
createCompanyPrice,
deleteCompanyPrice,
deleteCompanyPriceByIds,
updateCompanyPrice,
findCompanyPrice,
getCompanyPriceList
} from '@/api/companyPrice'
//
import { formatDate, formatOnlyDate } from '@/utils/format'
import { ElMessage, ElMessageBox } from 'element-plus'
import { ref, reactive } from 'vue'
defineOptions({
name: 'CompanyPrice'
})
//
const formData = ref({
productId: 0,
productPriceId: 0,
sourceId: 0,
companyName: '',
producer: '',
price: 0,
priceUnit: '',
publishDate: new Date(),
})
//
const rule = reactive({
})
const searchRule = reactive({
createdAt: [
{ validator: (rule, value, callback) => {
if (searchInfo.value.startCreatedAt && !searchInfo.value.endCreatedAt) {
callback(new Error('请填写结束日期'))
} else if (!searchInfo.value.startCreatedAt && searchInfo.value.endCreatedAt) {
callback(new Error('请填写开始日期'))
} else if (searchInfo.value.startCreatedAt && searchInfo.value.endCreatedAt && (searchInfo.value.startCreatedAt.getTime() === searchInfo.value.endCreatedAt.getTime() || searchInfo.value.startCreatedAt.getTime() > searchInfo.value.endCreatedAt.getTime())) {
callback(new Error('开始日期应当早于结束日期'))
} else {
callback()
}
}, trigger: 'change' }
],
})
const elFormRef = ref()
const elSearchFormRef = ref()
// =========== ===========
const page = ref(1)
const total = ref(0)
const pageSize = ref(10)
const tableData = ref([])
const searchInfo = ref({})
const productList = ref([])
const formatProduct = (id) => {
for (let i = 0; i < productList.value.length; i++) {
if (productList.value[i].ID === id) {
return productList.value[i].name
}
}
return id
}
//
const onReset = () => {
searchInfo.value = {}
getTableData()
}
//
const onSubmit = () => {
elSearchFormRef.value?.validate(async(valid) => {
if (!valid) return
page.value = 1
pageSize.value = 10
getTableData()
})
}
//
const handleSizeChange = (val) => {
pageSize.value = val
getTableData()
}
//
const handleCurrentChange = (val) => {
page.value = val
getTableData()
}
const getProductData = async() => {
const resp = await getProductList({ page: 1, pageSize: 100 })
if (resp.code === 0 && resp.data.list) {
productList.value = resp.data.list
}
}
getProductData()
//
const getTableData = async() => {
const table = await getCompanyPriceList({ page: page.value, pageSize: pageSize.value, ...searchInfo.value })
if (table.code === 0) {
tableData.value = table.data.list
total.value = table.data.total
page.value = table.data.page
pageSize.value = table.data.pageSize
}
}
getTableData()
// ============== ===============
//
const setOptions = async() => {
}
//
setOptions()
//
const multipleSelection = ref([])
//
const handleSelectionChange = (val) => {
multipleSelection.value = val
}
//
const deleteRow = (row) => {
ElMessageBox.confirm('确定要删除吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
deleteCompanyPriceFunc(row)
})
}
//
const onDelete = async() => {
ElMessageBox.confirm('确定要删除吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(async() => {
const IDs = []
if (multipleSelection.value.length === 0) {
ElMessage({
type: 'warning',
message: '请选择要删除的数据'
})
return
}
multipleSelection.value &&
multipleSelection.value.map(item => {
IDs.push(item.ID)
})
const res = await deleteCompanyPriceByIds({ IDs })
if (res.code === 0) {
ElMessage({
type: 'success',
message: '删除成功'
})
if (tableData.value.length === IDs.length && page.value > 1) {
page.value--
}
getTableData()
}
})
}
//
const type = ref('')
//
const updateCompanyPriceFunc = async(row) => {
const res = await findCompanyPrice({ ID: row.ID })
type.value = 'update'
if (res.code === 0) {
formData.value = res.data.recompanyPrice
dialogFormVisible.value = true
}
}
//
const deleteCompanyPriceFunc = async(row) => {
const res = await deleteCompanyPrice({ ID: row.ID })
if (res.code === 0) {
ElMessage({
type: 'success',
message: '删除成功'
})
if (tableData.value.length === 1 && page.value > 1) {
page.value--
}
getTableData()
}
}
//
const dialogFormVisible = ref(false)
//
const detailShow = ref(false)
//
const openDetailShow = () => {
detailShow.value = true
}
//
const getDetails = async(row) => {
//
const res = await findCompanyPrice({ ID: row.ID })
if (res.code === 0) {
formData.value = res.data.recompanyPrice
openDetailShow()
}
}
//
const closeDetailShow = () => {
detailShow.value = false
formData.value = {
productId: 0,
productPriceId: 0,
sourceId: 0,
companyName: '',
producer: '',
price: 0,
priceUnit: '',
publishDate: new Date(),
}
}
//
const openDialog = () => {
type.value = 'create'
dialogFormVisible.value = true
}
//
const closeDialog = () => {
dialogFormVisible.value = false
formData.value = {
productId: 0,
productPriceId: 0,
sourceId: 0,
companyName: '',
producer: '',
price: 0,
priceUnit: '',
publishDate: new Date(),
}
}
//
const enterDialog = async() => {
elFormRef.value?.validate(async(valid) => {
if (!valid) return
let res
switch (type.value) {
case 'create':
res = await createCompanyPrice(formData.value)
break
case 'update':
res = await updateCompanyPrice(formData.value)
break
default:
res = await createCompanyPrice(formData.value)
break
}
if (res.code === 0) {
ElMessage({
type: 'success',
message: '创建/更改成功'
})
closeDialog()
getTableData()
}
})
}
</script>
<style>
</style>

View File

@ -1,123 +0,0 @@
<template>
<div>
<div class="gva-form-box">
<el-form :model="formData" ref="elFormRef" label-position="right" :rules="rule" label-width="80px">
<el-form-item label="产品Id:" prop="productId">
<el-input v-model.number="formData.productId" :clearable="true" placeholder="请输入" />
</el-form-item>
<el-form-item label="产品价格Id:" prop="productPriceId">
<el-input v-model.number="formData.productPriceId" :clearable="true" placeholder="请输入" />
</el-form-item>
<el-form-item label="数据源Id:" prop="sourceId">
<el-input v-model.number="formData.sourceId" :clearable="true" placeholder="请输入" />
</el-form-item>
<el-form-item label="公司:" prop="companyName">
<el-input v-model="formData.companyName" :clearable="true" placeholder="请输入公司" />
</el-form-item>
<el-form-item label="品牌:" prop="producer">
<el-input v-model="formData.producer" :clearable="true" placeholder="请输入品牌" />
</el-form-item>
<el-form-item label="价格:" prop="price">
<el-input-number v-model="formData.price" :precision="2" :clearable="true"></el-input-number>
</el-form-item>
<el-form-item label="单位:" prop="priceUnit">
<el-input v-model="formData.priceUnit" :clearable="true" placeholder="请输入单位" />
</el-form-item>
<el-form-item label="发布日期:" prop="publishDate">
<el-date-picker v-model="formData.publishDate" type="date" placeholder="选择日期" :clearable="true"></el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="save">保存</el-button>
<el-button type="primary" @click="back">返回</el-button>
</el-form-item>
</el-form>
</div>
</div>
</template>
<script setup>
import {
createCompanyPrice,
updateCompanyPrice,
findCompanyPrice
} from '@/api/companyPrice'
defineOptions({
name: 'CompanyPriceForm'
})
//
import { getDictFunc } from '@/utils/format'
import { useRoute, useRouter } from "vue-router"
import { ElMessage } from 'element-plus'
import { ref, reactive } from 'vue'
const route = useRoute()
const router = useRouter()
const type = ref('')
const formData = ref({
productId: 0,
productPriceId: 0,
sourceId: 0,
companyName: '',
producer: '',
price: 0,
priceUnit: '',
publishDate: new Date(),
})
//
const rule = reactive({
})
const elFormRef = ref()
//
const init = async() => {
// urlID find createupdate idurl
if (route.query.id) {
const res = await findCompanyPrice({ ID: route.query.id })
if (res.code === 0) {
formData.value = res.data.recompanyPrice
type.value = 'update'
}
} else {
type.value = 'create'
}
}
init()
//
const save = async() => {
elFormRef.value?.validate(async(valid) => {
if (!valid) return
let res
switch (type.value) {
case 'create':
res = await createCompanyPrice(formData.value)
break
case 'update':
res = await updateCompanyPrice(formData.value)
break
default:
res = await createCompanyPrice(formData.value)
break
}
if (res.code === 0) {
ElMessage({
type: 'success',
message: '创建/更改成功'
})
}
})
}
//
const back = () => {
router.go(-1)
}
</script>
<style>
</style>

View File

@ -1,581 +0,0 @@
<template>
<div>
<div class="gva-search-box">
<el-form ref="elSearchFormRef" :inline="true" :model="searchInfo" class="demo-form-inline" :rules="searchRule"
@keyup.enter="onSubmit">
<el-form-item label="状态:" prop="status">
<el-select v-model="searchInfo.status" placeholder="请选择" :clearable="true">
<el-option v-for="item in statusOptions" :key="item.key" :label="item.label" :value="item.key" />
</el-select>
</el-form-item>
<el-form-item label="创建日期" prop="createdAt">
<template #label>
<span>
创建日期
<el-tooltip content="搜索范围是开始日期(包含)至结束日期(不包含)">
<el-icon>
<QuestionFilled />
</el-icon>
</el-tooltip>
</span>
</template>
<el-date-picker v-model="searchInfo.startCreatedAt" type="datetime" placeholder="开始日期"
:disabled-date="time=> searchInfo.endCreatedAt ? time.getTime() > searchInfo.endCreatedAt.getTime() : false"></el-date-picker>
<el-date-picker v-model="searchInfo.endCreatedAt" type="datetime" placeholder="结束日期"
:disabled-date="time=> searchInfo.startCreatedAt ? time.getTime() < searchInfo.startCreatedAt.getTime() : false"></el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="search" @click="onSubmit">查询</el-button>
<el-button icon="refresh" @click="onReset">重置</el-button>
</el-form-item>
</el-form>
</div>
<div class="gva-table-box">
<div class="gva-btn-list">
<el-button type="primary" icon="plus" @click="openDialog">新增</el-button>
<el-button icon="delete" style="margin-left: 10px;" :disabled="!multipleSelection.length"
@click="onDelete">删除</el-button>
<el-button icon="check" style="margin-left: 10px;" :disabled="!multipleSelection.length"
@click="onSyncClick">重新同步</el-button>
</div>
<el-table ref="multipleTable" style="width: 100%" tooltip-effect="dark" :data="tableData" row-key="ID"
@selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" />
<el-table-column align="left" label="ID" prop="ID" width="80" />
<el-table-column align="left" label="产品Code" prop="code" width="100" />
<el-table-column align="left" label="产品名称" prop="name" width="120" />
<el-table-column align="left" label="规格" prop="norm" width="300" />
<el-table-column align="left" label="品牌" prop="producer" width="120" />
<el-table-column align="left" label="价格类型" prop="priceType" width="120" />
<el-table-column align="left" label="单位" prop="priceUnit" width="80" />
<el-table-column align="left" label="价格" prop="price" width="80" />
<el-table-column align="left" label="地区" prop="areaDetail" width="120" />
<el-table-column align="left" label="公司" prop="dealer" width="240" />
<el-table-column align="left" label="发布日期" prop="publishDate" width="100" />
<el-table-column align="left" label="数据唯一值" prop="uniqueCode" width="300" />
<el-table-column align="left" label="抓取时间" prop="crawlTime" width="180" />
<el-table-column align="left" label="状态" prop="status" width="80">
<template #default="scope">{{ formatCrawlStatus(scope.row.status) }}</template>
</el-table-column>
<el-table-column align="left" label="同步失败原因" prop="syncError" width="240" />
<el-table-column align="left" label="创建时间" width="180">
<template #default="scope">{{ formatDate(scope.row.createdAt) }}</template>
</el-table-column>
<el-table-column align="left" label="操作" fixed="right" min-width="320">
<template #default="scope">
<el-button type="primary" link class="table-button" @click="getDetails(scope.row)">
<el-icon style="margin-right: 5px">
<InfoFilled />
</el-icon>
查看
</el-button>
<el-button type="primary" link icon="edit" class="table-button"
@click="updateCrawl100ppiFunc(scope.row)">变更</el-button>
<el-button type="primary" link icon="check" @click="syncRow(scope.row)">重新同步</el-button>
<el-button type="primary" link icon="delete" @click="deleteRow(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
<div class="gva-pagination">
<el-pagination layout="total, sizes, prev, pager, next, jumper" :current-page="page" :page-size="pageSize"
:page-sizes="[10, 30, 50, 100]" :total="total" @current-change="handleCurrentChange"
@size-change="handleSizeChange" />
</div>
</div>
<el-drawer size="800" v-model="dialogFormVisible" :show-close="false" :before-close="closeDialog">
<template #header>
<div class="flex justify-between items-center">
<span class="text-lg">{{ type==='create'?'添加':'修改' }}</span>
<div>
<el-button type="primary" @click="enterDialog"> </el-button>
<el-button @click="closeDialog"> </el-button>
</div>
</div>
</template>
<el-form :model="formData" label-position="top" ref="elFormRef" :rules="rule" label-width="80px">
<el-form-item label="产品Code:" prop="code">
<el-input v-model="formData.code" :clearable="true" placeholder="请输入产品Code" />
</el-form-item>
<el-form-item label="产品名称:" prop="name">
<el-input v-model="formData.name" :clearable="true" placeholder="请输入产品名称" />
</el-form-item>
<el-form-item label="规格:" prop="norm">
<el-input v-model="formData.norm" :clearable="true" placeholder="请输入规格" />
</el-form-item>
<el-form-item label="品牌:" prop="producer">
<el-input v-model="formData.producer" :clearable="true" placeholder="请输入品牌" />
</el-form-item>
<el-form-item label="价格类型:" prop="priceType">
<el-input v-model="formData.priceType" :clearable="true" placeholder="请输入价格类型" />
</el-form-item>
<el-form-item label="单位:" prop="priceUnit">
<el-input v-model="formData.priceUnit" :clearable="true" placeholder="请输入单位" />
</el-form-item>
<el-form-item label="价格:" prop="price">
<el-input v-model="formData.price" :clearable="true" placeholder="请输入价格" />
</el-form-item>
<el-form-item label="地区:" prop="areaDetail">
<el-input v-model="formData.areaDetail" :clearable="true" placeholder="请输入地区" />
</el-form-item>
<el-form-item label="公司:" prop="dealer">
<el-input v-model="formData.dealer" :clearable="true" placeholder="请输入公司" />
</el-form-item>
<el-form-item label="发布日期:" prop="publishDate">
<el-input v-model="formData.publishDate" :clearable="true" placeholder="请输入发布日期" />
</el-form-item>
<el-form-item label="数据唯一值:" prop="uniqueCode">
<el-input v-model="formData.uniqueCode" :clearable="true" placeholder="请输入数据唯一值" />
</el-form-item>
<el-form-item label="抓取时间:" prop="crawlTime">
<el-input v-model="formData.crawlTime" :clearable="true" placeholder="请输入抓取时间" />
</el-form-item>
<el-form-item label="状态:" prop="status">
<el-input v-model.number="formData.status" :clearable="true" placeholder="请输入状态" />
</el-form-item>
<el-form-item label="同步失败原因:" prop="syncError">
<el-input v-model="formData.syncError" :clearable="true" placeholder="请输入同步失败原因" />
</el-form-item>
</el-form>
</el-drawer>
<el-drawer size="800" v-model="detailShow" :before-close="closeDetailShow" destroy-on-close>
<template #header>
<div class="flex justify-between items-center">
<span class="text-lg">查看详情</span>
</div>
</template>
<el-descriptions :column="1" border>
<el-descriptions-item label="ID">
{{ formData.ID }}
</el-descriptions-item>
<el-descriptions-item label="产品Code">
{{ formData.code }}
</el-descriptions-item>
<el-descriptions-item label="产品名称">
{{ formData.name }}
</el-descriptions-item>
<el-descriptions-item label="规格">
{{ formData.norm }}
</el-descriptions-item>
<el-descriptions-item label="品牌">
{{ formData.producer }}
</el-descriptions-item>
<el-descriptions-item label="价格类型">
{{ formData.priceType }}
</el-descriptions-item>
<el-descriptions-item label="单位">
{{ formData.priceUnit }}
</el-descriptions-item>
<el-descriptions-item label="价格">
{{ formData.price }}
</el-descriptions-item>
<el-descriptions-item label="地区">
{{ formData.areaDetail }}
</el-descriptions-item>
<el-descriptions-item label="公司">
{{ formData.dealer }}
</el-descriptions-item>
<el-descriptions-item label="发布日期">
{{ formData.publishDate }}
</el-descriptions-item>
<el-descriptions-item label="数据唯一值">
{{ formData.uniqueCode }}
</el-descriptions-item>
<el-descriptions-item label="抓取时间">
{{ formData.crawlTime }}
</el-descriptions-item>
<el-descriptions-item label="状态">
{{ formatCrawlStatus(formData.status) }}
</el-descriptions-item>
<el-descriptions-item label="同步失败原因">
{{ formData.syncError }}
</el-descriptions-item>
<el-descriptions-item label="创建时间">
{{ formatDate(formData.createdAt) }}
</el-descriptions-item>
<el-descriptions-item label="更新时间">
{{ formatDate(formData.updatedAt) }}
</el-descriptions-item>
</el-descriptions>
</el-drawer>
</div>
</template>
<script setup>
import {
createCrawl100ppi,
deleteCrawl100ppi,
syncCrawl100ppi,
deleteCrawl100ppiByIds,
updateCrawl100ppi,
findCrawl100ppi,
getCrawl100ppiList
} from '@/api/crawl100ppi'
//
import { getDictFunc, formatDate, filterDict, ReturnArrImg, onDownloadFile } from '@/utils/format'
import { ElMessage, ElMessageBox } from 'element-plus'
import { ref, reactive } from 'vue'
defineOptions({
name: 'Crawl100ppi'
})
const statusOptions = [
{ key: 1, label: '未同步' },
{ key: 2, label: '同步成功' },
{ key: 3, label: '同步失败' },
]
const formatCrawlStatus = (status) => {
let item
statusOptions.forEach((option, index) => {
if (option.key === status) {
item = option
return
}
})
if (item) {
return item.label
}
return ''
}
//
const formData = ref({
code: '',
name: '',
norm: '',
producer: '',
priceType: '',
priceUnit: '',
price: '',
areaDetail: '',
dealer: '',
publishDate: '',
uniqueCode: '',
crawlTime: '',
status: 0,
syncError: '',
})
//
const rule = reactive({
})
const searchRule = reactive({
createdAt: [
{ validator: (rule, value, callback) => {
if (searchInfo.value.startCreatedAt && !searchInfo.value.endCreatedAt) {
callback(new Error('请填写结束日期'))
} else if (!searchInfo.value.startCreatedAt && searchInfo.value.endCreatedAt) {
callback(new Error('请填写开始日期'))
} else if (searchInfo.value.startCreatedAt && searchInfo.value.endCreatedAt && (searchInfo.value.startCreatedAt.getTime() === searchInfo.value.endCreatedAt.getTime() || searchInfo.value.startCreatedAt.getTime() > searchInfo.value.endCreatedAt.getTime())) {
callback(new Error('开始日期应当早于结束日期'))
} else {
callback()
}
}, trigger: 'change' }
],
})
const elFormRef = ref()
const elSearchFormRef = ref()
// =========== ===========
const page = ref(1)
const total = ref(0)
const pageSize = ref(10)
const tableData = ref([])
const searchInfo = ref({})
//
const onReset = () => {
searchInfo.value = {}
getTableData()
}
//
const onSubmit = () => {
elSearchFormRef.value?.validate(async(valid) => {
if (!valid) return
page.value = 1
pageSize.value = 10
getTableData()
})
}
//
const handleSizeChange = (val) => {
pageSize.value = val
getTableData()
}
//
const handleCurrentChange = (val) => {
page.value = val
getTableData()
}
//
const getTableData = async() => {
const table = await getCrawl100ppiList({ page: page.value, pageSize: pageSize.value, ...searchInfo.value })
if (table.code === 0) {
tableData.value = table.data.list
total.value = table.data.total
page.value = table.data.page
pageSize.value = table.data.pageSize
}
}
getTableData()
// ============== ===============
//
const setOptions = async() => {
}
//
setOptions()
//
const multipleSelection = ref([])
//
const handleSelectionChange = (val) => {
multipleSelection.value = val
}
//
const deleteRow = (row) => {
ElMessageBox.confirm('确定要删除吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
deleteCrawl100ppiFunc(row)
})
}
//
const onDelete = async() => {
ElMessageBox.confirm('确定要删除吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(async() => {
const IDs = []
if (multipleSelection.value.length === 0) {
ElMessage({
type: 'warning',
message: '请选择要删除的数据'
})
return
}
multipleSelection.value &&
multipleSelection.value.map(item => {
IDs.push(item.ID)
})
const res = await deleteCrawl100ppiByIds({ IDs })
if (res.code === 0) {
ElMessage({
type: 'success',
message: '删除成功'
})
if (tableData.value.length === IDs.length && page.value > 1) {
page.value--
}
getTableData()
}
})
}
//
const syncRow = (row) => {
ElMessageBox.confirm('确定要同步吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
syncCrawl100ppiFunc(row)
})
}
//
const onSyncClick = async() => {
ElMessageBox.confirm('确定要删除吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(async() => {
const IDs = []
if (multipleSelection.value.length === 0) {
ElMessage({
type: 'warning',
message: '请选择要同步的数据'
})
return
}
multipleSelection.value &&
multipleSelection.value.map(item => {
IDs.push(item.ID)
})
const res = await syncCrawl100ppi({ IDs })
if (res.code === 0) {
ElMessage({
type: 'success',
message: '同步操作成功'
})
if (tableData.value.length === IDs.length && page.value > 1) {
page.value--
}
getTableData()
}
})
}
//
const type = ref('')
//
const updateCrawl100ppiFunc = async(row) => {
const res = await findCrawl100ppi({ ID: row.ID })
type.value = 'update'
if (res.code === 0) {
formData.value = res.data.recrawl100ppi
dialogFormVisible.value = true
}
}
//
const deleteCrawl100ppiFunc = async(row) => {
const res = await deleteCrawl100ppi({ ID: row.ID })
if (res.code === 0) {
ElMessage({
type: 'success',
message: '删除成功'
})
if (tableData.value.length === 1 && page.value > 1) {
page.value--
}
getTableData()
}
}
//
const syncCrawl100ppiFunc = async(row) => {
const res = await syncCrawl100ppi({ IDs: [row.ID] })
if (res.code === 0) {
ElMessage({
type: 'success',
message: '同步操作成功'
})
getTableData()
}
}
//
const dialogFormVisible = ref(false)
//
const detailShow = ref(false)
//
const openDetailShow = () => {
detailShow.value = true
}
//
const getDetails = async(row) => {
//
const res = await findCrawl100ppi({ ID: row.ID })
if (res.code === 0) {
formData.value = res.data.recrawl100ppi
openDetailShow()
}
}
//
const closeDetailShow = () => {
detailShow.value = false
formData.value = {
code: '',
name: '',
norm: '',
producer: '',
priceType: '',
priceUnit: '',
price: '',
areaDetail: '',
dealer: '',
publishDate: '',
uniqueCode: '',
crawlTime: '',
status: 0,
syncError: '',
}
}
//
const openDialog = () => {
type.value = 'create'
dialogFormVisible.value = true
}
//
const closeDialog = () => {
dialogFormVisible.value = false
formData.value = {
code: '',
name: '',
norm: '',
producer: '',
priceType: '',
priceUnit: '',
price: '',
areaDetail: '',
dealer: '',
publishDate: '',
uniqueCode: '',
crawlTime: '',
status: 0,
syncError: '',
}
}
//
const enterDialog = async() => {
elFormRef.value?.validate(async(valid) => {
if (!valid) return
let res
switch (type.value) {
case 'create':
res = await createCrawl100ppi(formData.value)
break
case 'update':
res = await updateCrawl100ppi(formData.value)
break
default:
res = await createCrawl100ppi(formData.value)
break
}
if (res.code === 0) {
ElMessage({
type: 'success',
message: '创建/更改成功'
})
closeDialog()
getTableData()
}
})
}
</script>
<style>
</style>

View File

@ -1,147 +0,0 @@
<template>
<div>
<div class="gva-form-box">
<el-form :model="formData" ref="elFormRef" label-position="right" :rules="rule" label-width="80px">
<el-form-item label="产品Code:" prop="code">
<el-input v-model="formData.code" :clearable="true" placeholder="请输入产品Code" />
</el-form-item>
<el-form-item label="产品名称:" prop="name">
<el-input v-model="formData.name" :clearable="true" placeholder="请输入产品名称" />
</el-form-item>
<el-form-item label="规格:" prop="norm">
<el-input v-model="formData.norm" :clearable="true" placeholder="请输入规格" />
</el-form-item>
<el-form-item label="品牌:" prop="producer">
<el-input v-model="formData.producer" :clearable="true" placeholder="请输入品牌" />
</el-form-item>
<el-form-item label="价格类型:" prop="priceType">
<el-input v-model="formData.priceType" :clearable="true" placeholder="请输入价格类型" />
</el-form-item>
<el-form-item label="单位:" prop="priceUnit">
<el-input v-model="formData.priceUnit" :clearable="true" placeholder="请输入单位" />
</el-form-item>
<el-form-item label="价格:" prop="price">
<el-input v-model="formData.price" :clearable="true" placeholder="请输入价格" />
</el-form-item>
<el-form-item label="地区:" prop="areaDetail">
<el-input v-model="formData.areaDetail" :clearable="true" placeholder="请输入地区" />
</el-form-item>
<el-form-item label="公司:" prop="dealer">
<el-input v-model="formData.dealer" :clearable="true" placeholder="请输入公司" />
</el-form-item>
<el-form-item label="发布日期:" prop="publishDate">
<el-input v-model="formData.publishDate" :clearable="true" placeholder="请输入发布日期" />
</el-form-item>
<el-form-item label="数据唯一值:" prop="uniqueCode">
<el-input v-model="formData.uniqueCode" :clearable="true" placeholder="请输入数据唯一值" />
</el-form-item>
<el-form-item label="抓取时间:" prop="crawlTime">
<el-input v-model="formData.crawlTime" :clearable="true" placeholder="请输入抓取时间" />
</el-form-item>
<el-form-item label="状态:" prop="status">
<el-input v-model.number="formData.status" :clearable="true" placeholder="请输入" />
</el-form-item>
<el-form-item label="同步失败原因:" prop="syncError">
<el-input v-model="formData.syncError" :clearable="true" placeholder="请输入同步失败原因" />
</el-form-item>
<el-form-item>
<el-button type="primary" @click="save">保存</el-button>
<el-button type="primary" @click="back">返回</el-button>
</el-form-item>
</el-form>
</div>
</div>
</template>
<script setup>
import {
createCrawl100ppi,
updateCrawl100ppi,
findCrawl100ppi
} from '@/api/crawl100ppi'
defineOptions({
name: 'Crawl100ppiForm'
})
//
import { getDictFunc } from '@/utils/format'
import { useRoute, useRouter } from "vue-router"
import { ElMessage } from 'element-plus'
import { ref, reactive } from 'vue'
const route = useRoute()
const router = useRouter()
const type = ref('')
const formData = ref({
code: '',
name: '',
norm: '',
producer: '',
priceType: '',
priceUnit: '',
price: '',
areaDetail: '',
dealer: '',
publishDate: '',
uniqueCode: '',
crawlTime: '',
status: 0,
syncError: '',
})
//
const rule = reactive({
})
const elFormRef = ref()
//
const init = async() => {
// urlID find createupdate idurl
if (route.query.id) {
const res = await findCrawl100ppi({ ID: route.query.id })
if (res.code === 0) {
formData.value = res.data.recrawl100ppi
type.value = 'update'
}
} else {
type.value = 'create'
}
}
init()
//
const save = async() => {
elFormRef.value?.validate(async(valid) => {
if (!valid) return
let res
switch (type.value) {
case 'create':
res = await createCrawl100ppi(formData.value)
break
case 'update':
res = await updateCrawl100ppi(formData.value)
break
default:
res = await createCrawl100ppi(formData.value)
break
}
if (res.code === 0) {
ElMessage({
type: 'success',
message: '创建/更改成功'
})
}
})
}
//
const back = () => {
router.go(-1)
}
</script>
<style>
</style>

View File

@ -1,409 +0,0 @@
<template>
<div>
<div class="gva-search-box">
<el-form ref="elSearchFormRef" :inline="true" :model="searchInfo" class="demo-form-inline" @keyup.enter="onSubmit">
<el-form-item label="字段名" prop="fieldName">
<template #label>
<span>字段名</span>
</template>
<el-input v-model="searchInfo.fieldName" type="input" />
</el-form-item>
<el-form-item label="是否同步:" prop="isSync">
<el-select v-model="searchInfo.isSync" placeholder="请选择" :clearable="true">
<el-option v-for="item in ['yes', 'no']" :key="item" :label="item" :value="item" />
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="search" @click="onSubmit">查询</el-button>
<el-button icon="refresh" @click="onReset">重置</el-button>
</el-form-item>
</el-form>
</div>
<div class="gva-table-box">
<div class="gva-btn-list">
<el-button type="primary" icon="plus" @click="openDialog">新增</el-button>
<el-button icon="delete" style="margin-left: 10px;" :disabled="!multipleSelection.length" @click="onDelete">删除</el-button>
</div>
<el-table
ref="multipleTable"
style="width: 100%"
tooltip-effect="dark"
:data="tableData"
row-key="id"
@selection-change="handleSelectionChange"
@sort-change="sortChange"
>
<el-table-column type="selection" width="55" />
<el-table-column sortable align="left" label="ID" prop="id" width="80" />
<el-table-column align="left" label="字段名" prop="fieldName" width="120" />
<el-table-column align="left" label="原始值" prop="fieldSource" width="300" />
<el-table-column align="left" label="替换后的值" prop="fieldReplace" width="200" />
<el-table-column align="left" label="是否同步" prop="isSync" width="120" />
<el-table-column align="left" label="操作" fixed="right" min-width="240">
<template #default="scope">
<el-button type="primary" link class="table-button" @click="getDetails(scope.row)">
<el-icon style="margin-right: 5px"><InfoFilled /></el-icon>
查看详情
</el-button>
<el-button type="primary" link icon="edit" class="table-button" @click="updateCrawlFieldReplaceFunc(scope.row)">变更</el-button>
<el-button type="primary" link icon="delete" @click="deleteRow(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
<div class="gva-pagination">
<el-pagination
layout="total, sizes, prev, pager, next, jumper"
:current-page="page"
:page-size="pageSize"
:page-sizes="[10, 30, 50, 100]"
:total="total"
@current-change="handleCurrentChange"
@size-change="handleSizeChange"
/>
</div>
</div>
<el-drawer size="800" v-model="dialogFormVisible" :show-close="false" :before-close="closeDialog">
<template #header>
<div class="flex justify-between items-center">
<span class="text-lg">{{ type==='create'?'添加':'修改' }}</span>
<div>
<el-button type="primary" @click="enterDialog"> </el-button>
<el-button @click="closeDialog"> </el-button>
</div>
</div>
</template>
<el-form :model="formData" label-position="top" ref="elFormRef" :rules="rule" label-width="80px">
<el-form-item label="字段名:" prop="fieldName">
<el-input v-model="formData.fieldName" :clearable="true" placeholder="请输入字段名" />
</el-form-item>
<el-form-item label="原始值:" prop="fieldSource">
<el-input v-model="formData.fieldSource" :clearable="true" placeholder="请输入原始值" />
</el-form-item>
<el-form-item label="替换后的值:" prop="fieldReplace">
<el-input v-model="formData.fieldReplace" :clearable="true" placeholder="请输入替换后的值" />
</el-form-item>
<el-form-item label="是否同步:" prop="isSync">
<el-select v-model="formData.isSync" placeholder="请选择是否同步" style="width:100%" :clearable="true" >
<el-option v-for="item in ['yes', 'no']" :key="item" :label="item" :value="item" />
</el-select>
</el-form-item>
</el-form>
</el-drawer>
<el-drawer size="800" v-model="detailShow" :before-close="closeDetailShow" destroy-on-close>
<template #header>
<div class="flex justify-between items-center">
<span class="text-lg">查看详情</span>
</div>
</template>
<el-descriptions :column="1" border>
<el-descriptions-item label="ID">
{{ formData.id }}
</el-descriptions-item>
<el-descriptions-item label="字段名">
{{ formData.fieldName }}
</el-descriptions-item>
<el-descriptions-item label="原始值">
{{ formData.fieldSource }}
</el-descriptions-item>
<el-descriptions-item label="替换后的值">
{{ formData.fieldReplace }}
</el-descriptions-item>
<el-descriptions-item label="是否同步">
{{ formData.isSync }}
</el-descriptions-item>
</el-descriptions>
</el-drawer>
</div>
</template>
<script setup>
import {
createCrawlFieldReplace,
deleteCrawlFieldReplace,
deleteCrawlFieldReplaceByIds,
updateCrawlFieldReplace,
findCrawlFieldReplace,
getCrawlFieldReplaceList
} from '@/api/crawlFieldReplace'
//
// import { getDictFunc, formatDate, formatBoolean, filterDict, ReturnArrImg, onDownloadFile } from '@/utils/format'
import { ElMessage, ElMessageBox } from 'element-plus'
import { ref, reactive } from 'vue'
defineOptions({
name: 'CrawlFieldReplace'
})
//
const formData = ref({
id: 0,
fieldName: '',
fieldReplace: '',
fieldSource: '',
isSync: '',
})
//
const rule = reactive({
fieldName: [{
required: true,
message: '',
trigger: ['input', 'blur'],
},
{
whitespace: true,
message: '不能只输入空格',
trigger: ['input', 'blur'],
}
],
id: [{
required: true,
message: '',
trigger: ['input', 'blur'],
},
],
isSync: [{
required: true,
message: '',
trigger: ['input', 'blur'],
},
],
})
const elFormRef = ref()
const elSearchFormRef = ref()
// =========== ===========
const page = ref(1)
const total = ref(0)
const pageSize = ref(10)
const tableData = ref([])
const searchInfo = ref({})
//
const sortChange = ({ prop, order }) => {
const sortMap = {
id: 'id',
}
let sort = sortMap[prop]
if (!sort) {
sort = prop.replace(/[A-Z]/g, match => `_${match.toLowerCase()}`)
}
searchInfo.value.sort = sort
searchInfo.value.order = order
getTableData()
}
//
const onReset = () => {
searchInfo.value = {}
getTableData()
}
//
const onSubmit = () => {
elSearchFormRef.value?.validate(async(valid) => {
if (!valid) return
page.value = 1
pageSize.value = 10
getTableData()
})
}
//
const handleSizeChange = (val) => {
pageSize.value = val
getTableData()
}
//
const handleCurrentChange = (val) => {
page.value = val
getTableData()
}
//
const getTableData = async() => {
const table = await getCrawlFieldReplaceList({ page: page.value, pageSize: pageSize.value, ...searchInfo.value })
if (table.code === 0) {
tableData.value = table.data.list
total.value = table.data.total
page.value = table.data.page
pageSize.value = table.data.pageSize
}
}
getTableData()
// ============== ===============
//
const setOptions = async() => {
}
//
setOptions()
//
const multipleSelection = ref([])
//
const handleSelectionChange = (val) => {
multipleSelection.value = val
}
//
const deleteRow = (row) => {
ElMessageBox.confirm('确定要删除吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
deleteCrawlFieldReplaceFunc(row)
})
}
//
const onDelete = async() => {
ElMessageBox.confirm('确定要删除吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(async() => {
const ids = []
if (multipleSelection.value.length === 0) {
ElMessage({
type: 'warning',
message: '请选择要删除的数据'
})
return
}
multipleSelection.value &&
multipleSelection.value.map(item => {
ids.push(item.id)
})
const res = await deleteCrawlFieldReplaceByIds({ ids })
if (res.code === 0) {
ElMessage({
type: 'success',
message: '删除成功'
})
if (tableData.value.length === ids.length && page.value > 1) {
page.value--
}
getTableData()
}
})
}
//
const type = ref('')
//
const updateCrawlFieldReplaceFunc = async(row) => {
const res = await findCrawlFieldReplace({ id: row.id })
type.value = 'update'
if (res.code === 0) {
formData.value = res.data.recrawlFieldReplace
dialogFormVisible.value = true
}
}
//
const deleteCrawlFieldReplaceFunc = async(row) => {
const res = await deleteCrawlFieldReplace({ id: row.id })
if (res.code === 0) {
ElMessage({
type: 'success',
message: '删除成功'
})
if (tableData.value.length === 1 && page.value > 1) {
page.value--
}
getTableData()
}
}
//
const dialogFormVisible = ref(false)
//
const detailShow = ref(false)
//
const openDetailShow = () => {
detailShow.value = true
}
//
const getDetails = async(row) => {
//
const res = await findCrawlFieldReplace({ id: row.id })
if (res.code === 0) {
formData.value = res.data.recrawlFieldReplace
openDetailShow()
}
}
//
const closeDetailShow = () => {
detailShow.value = false
formData.value = {
fieldName: '',
fieldReplace: '',
fieldSource: '',
id: 0,
}
}
//
const openDialog = () => {
type.value = 'create'
dialogFormVisible.value = true
}
//
const closeDialog = () => {
dialogFormVisible.value = false
formData.value = {
fieldName: '',
fieldReplace: '',
fieldSource: '',
id: 0,
}
}
//
const enterDialog = async() => {
elFormRef.value?.validate(async(valid) => {
if (!valid) return
let res
switch (type.value) {
case 'create':
res = await createCrawlFieldReplace(formData.value)
break
case 'update':
res = await updateCrawlFieldReplace(formData.value)
break
default:
res = await createCrawlFieldReplace(formData.value)
break
}
if (res.code === 0) {
ElMessage({
type: 'success',
message: '创建/更改成功'
})
closeDialog()
getTableData()
}
})
}
</script>
<style>
</style>

View File

@ -1,128 +0,0 @@
<template>
<div>
<div class="gva-form-box">
<el-form :model="formData" ref="elFormRef" label-position="right" :rules="rule" label-width="80px">
<el-form-item label="字段名:" prop="fieldName">
<el-input v-model="formData.fieldName" :clearable="true" placeholder="请输入字段名" />
</el-form-item>
<el-form-item label="替换后的值:" prop="fieldReplace">
<el-input v-model="formData.fieldReplace" :clearable="true" placeholder="请输入替换后的值" />
</el-form-item>
<el-form-item label="原始值:" prop="fieldSource">
<el-input v-model="formData.fieldSource" :clearable="true" placeholder="请输入原始值" />
</el-form-item>
<el-form-item label="ID:" prop="id">
<el-input v-model.number="formData.id" :clearable="true" placeholder="请输入" />
</el-form-item>
<el-form-item label="是否同步:" prop="isSync">
<el-select v-model="formData.isSync" placeholder="请选择" style="width:100%" :clearable="true">
<el-option v-for="item in [100]" :key="item" :label="item" :value="item" />
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="save">保存</el-button>
<el-button type="primary" @click="back">返回</el-button>
</el-form-item>
</el-form>
</div>
</div>
</template>
<script setup>
import {
createCrawlFieldReplace,
updateCrawlFieldReplace,
findCrawlFieldReplace
} from '@/api/crawlFieldReplace'
defineOptions({
name: 'CrawlFieldReplaceForm'
})
//
import { getDictFunc } from '@/utils/format'
import { useRoute, useRouter } from "vue-router"
import { ElMessage } from 'element-plus'
import { ref, reactive } from 'vue'
const route = useRoute()
const router = useRouter()
const type = ref('')
const formData = ref({
fieldName: '',
fieldReplace: '',
fieldSource: '',
id: 0,
})
//
const rule = reactive({
fieldName : [{
required: true,
message: '',
trigger: ['input','blur'],
}],
id : [{
required: true,
message: '',
trigger: ['input','blur'],
}],
isSync : [{
required: true,
message: '',
trigger: ['input','blur'],
}],
})
const elFormRef = ref()
//
const init = async () => {
// urlID find createupdate idurl
if (route.query.id) {
const res = await findCrawlFieldReplace({ ID: route.query.id })
if (res.code === 0) {
formData.value = res.data.recrawlFieldReplace
type.value = 'update'
}
} else {
type.value = 'create'
}
}
init()
//
const save = async() => {
elFormRef.value?.validate( async (valid) => {
if (!valid) return
let res
switch (type.value) {
case 'create':
res = await createCrawlFieldReplace(formData.value)
break
case 'update':
res = await updateCrawlFieldReplace(formData.value)
break
default:
res = await createCrawlFieldReplace(formData.value)
break
}
if (res.code === 0) {
ElMessage({
type: 'success',
message: '创建/更改成功'
})
}
})
}
//
const back = () => {
router.go(-1)
}
</script>
<style>
</style>
@/api/crawlFieldReplace

View File

@ -1,437 +0,0 @@
<template>
<div>
<div class="gva-search-box">
<el-form ref="elSearchFormRef" :inline="true" :model="searchInfo" class="demo-form-inline" :rules="searchRule"
@keyup.enter="onSubmit">
<el-form-item label="创建日期" prop="createdAt">
<template #label>
<span>
创建日期
<el-tooltip content="搜索范围是开始日期(包含)至结束日期(不包含)">
<el-icon>
<QuestionFilled />
</el-icon>
</el-tooltip>
</span>
</template>
<el-date-picker v-model="searchInfo.startCreatedAt" type="datetime" placeholder="开始日期"
:disabled-date="time=> searchInfo.endCreatedAt ? time.getTime() > searchInfo.endCreatedAt.getTime() : false"></el-date-picker>
<el-date-picker v-model="searchInfo.endCreatedAt" type="datetime" placeholder="结束日期"
:disabled-date="time=> searchInfo.startCreatedAt ? time.getTime() < searchInfo.startCreatedAt.getTime() : false"></el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="search" @click="onSubmit">查询</el-button>
<el-button icon="refresh" @click="onReset">重置</el-button>
</el-form-item>
</el-form>
</div>
<div class="gva-table-box">
<div class="gva-btn-list">
<el-button type="primary" icon="plus" @click="openDialog">新增</el-button>
<el-button icon="delete" style="margin-left: 10px;" :disabled="!multipleSelection.length"
@click="onDelete">删除</el-button>
</div>
<el-table ref="multipleTable" style="width: 100%" tooltip-effect="dark" :data="tableData" row-key="ID"
@selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" />
<el-table-column align="left" label="ID" prop="ID" width="120" />
<el-table-column align="left" label="编码" prop="code" width="120" />
<el-table-column align="left" label="名称" prop="name" width="120" />
<el-table-column align="left" label="分类" prop="categoryId" width="120">
<template #default="scope">{{ formatCategory(scope.row.categoryId) }}</template>
</el-table-column>
<el-table-column align="left" label="排序" prop="sortWeight" width="120" />
<el-table-column align="left" label="状态" prop="status" width="120">
<template #default="scope">{{ formatBoolean(scope.row.status) }}</template>
</el-table-column>
<el-table-column align="left" label="创建时间" width="180">
<template #default="scope">{{ formatDate(scope.row.createdAt) }}</template>
</el-table-column>
<el-table-column align="left" label="操作" fixed="right" min-width="240">
<template #default="scope">
<el-button type="primary" link class="table-button" @click="getDetails(scope.row)">
<el-icon style="margin-right: 5px">
<InfoFilled />
</el-icon>
查看详情
</el-button>
<el-button type="primary" link icon="edit" class="table-button"
@click="updateProductFunc(scope.row)">变更</el-button>
<el-button type="primary" link icon="delete" @click="deleteRow(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
<div class="gva-pagination">
<el-pagination layout="total, sizes, prev, pager, next, jumper" :current-page="page" :page-size="pageSize"
:page-sizes="[10, 30, 50, 100]" :total="total" @current-change="handleCurrentChange"
@size-change="handleSizeChange" />
</div>
</div>
<el-drawer size="800" v-model="dialogFormVisible" :show-close="false" :before-close="closeDialog">
<template #header>
<div class="flex justify-between items-center">
<span class="text-lg">{{type==='create'?'添加':'修改'}}</span>
<div>
<el-button type="primary" @click="enterDialog"> </el-button>
<el-button @click="closeDialog"> </el-button>
</div>
</div>
</template>
<el-form :model="formData" label-position="top" ref="elFormRef" :rules="rule" label-width="80px">
<el-form-item label="编码:" prop="code">
<el-input v-model="formData.code" :clearable="true" placeholder="请输入编码" />
</el-form-item>
<el-form-item label="名称:" prop="name">
<el-input v-model="formData.name" :clearable="true" placeholder="请输入名称" />
</el-form-item>
<el-form-item label="分类:">
<el-select v-model="formData.categoryId">
<el-option v-for="(item, index) in formData.categoryOptions" :key="index" :label="item.name"
:value="item.ID">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="排序:" prop="sortWeight">
<el-input v-model.number="formData.sortWeight" :clearable="true" placeholder="请输入排序" />
</el-form-item>
<el-form-item label="状态:" prop="status">
<el-switch v-model="formData.status" active-color="#13ce66" inactive-color="#ff4949" active-text="开启"
inactive-text="关闭" clearable></el-switch>
</el-form-item>
</el-form>
</el-drawer>
<el-drawer size="800" v-model="detailShow" :before-close="closeDetailShow" destroy-on-close>
<template #header>
<div class="flex justify-between items-center">
<span class="text-lg">查看详情</span>
</div>
</template>
<el-descriptions :column="1" border>
<el-descriptions-item label="ID">
{{ formData.ID }}
</el-descriptions-item>
<el-descriptions-item label="编码">
{{ formData.code }}
</el-descriptions-item>
<el-descriptions-item label="名称">
{{ formData.name }}
</el-descriptions-item>
<el-descriptions-item label="分类">
{{ formatCategory(formData.categoryId) }}
</el-descriptions-item>
<el-descriptions-item label="排序">
{{ formData.sortWeight }}
</el-descriptions-item>
<el-descriptions-item label="状态">
{{ formatBoolean(formData.status) }}
</el-descriptions-item>
<el-descriptions-item label="创建时间">
{{ formatDate(formData.createdAt) }}
</el-descriptions-item>
<el-descriptions-item label="更新时间">
{{ formatDate(formData.updatedAt) }}
</el-descriptions-item>
</el-descriptions>
</el-drawer>
</div>
</template>
<script setup>
import {
createProduct,
deleteProduct,
deleteProductByIds,
updateProduct,
findProduct,
getProductList
} from '@/api/product'
import { getProductCategoryList } from '@/api/productCategory'
//
import { getDictFunc, formatDate, formatBoolean, filterDict, ReturnArrImg, onDownloadFile } from '@/utils/format'
import { ElMessage, ElMessageBox } from 'element-plus'
import { ref, reactive } from 'vue'
defineOptions({
name: 'Product'
})
//
const formData = ref({
code: '',
name: '',
categoryId: 0,
sortWeight: 0,
status: false,
categoryOptions: []
})
//
const rule = reactive({
})
const searchRule = reactive({
createdAt: [
{ validator: (rule, value, callback) => {
if (searchInfo.value.startCreatedAt && !searchInfo.value.endCreatedAt) {
callback(new Error('请填写结束日期'))
} else if (!searchInfo.value.startCreatedAt && searchInfo.value.endCreatedAt) {
callback(new Error('请填写开始日期'))
} else if (searchInfo.value.startCreatedAt && searchInfo.value.endCreatedAt && (searchInfo.value.startCreatedAt.getTime() === searchInfo.value.endCreatedAt.getTime() || searchInfo.value.startCreatedAt.getTime() > searchInfo.value.endCreatedAt.getTime())) {
callback(new Error('开始日期应当早于结束日期'))
} else {
callback()
}
}, trigger: 'change' }
],
})
const elFormRef = ref()
const elSearchFormRef = ref()
// =========== ===========
const page = ref(1)
const total = ref(0)
const pageSize = ref(10)
const tableData = ref([])
const searchInfo = ref({})
const cateoryList = ref([])
const formatCategory = (id) => {
for (let i = 0; i < cateoryList.value.length; i++) {
if (cateoryList.value[i].ID === id) {
return cateoryList.value[i].name
}
}
return id
}
//
const onReset = () => {
searchInfo.value = {}
getTableData()
}
//
const onSubmit = () => {
elSearchFormRef.value?.validate(async(valid) => {
if (!valid) return
page.value = 1
pageSize.value = 10
if (searchInfo.value.status === '') {
searchInfo.value.status = null
}
getTableData()
})
}
//
const handleSizeChange = (val) => {
pageSize.value = val
getTableData()
}
//
const handleCurrentChange = (val) => {
page.value = val
getTableData()
}
const getCategoryData = async() => {
const resp = await getProductCategoryList({ page: 1, pageSize: 100 })
if (resp.code === 0 && resp.data.list) {
cateoryList.value = resp.data.list
}
}
getCategoryData()
//
const getTableData = async() => {
const table = await getProductList({ page: page.value, pageSize: pageSize.value, ...searchInfo.value })
if (table.code === 0) {
tableData.value = table.data.list
total.value = table.data.total
page.value = table.data.page
pageSize.value = table.data.pageSize
}
}
getTableData()
// ============== ===============
//
const setOptions = async() => {
}
//
setOptions()
//
const multipleSelection = ref([])
//
const handleSelectionChange = (val) => {
multipleSelection.value = val
}
//
const deleteRow = (row) => {
ElMessageBox.confirm('确定要删除吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
deleteProductFunc(row)
})
}
//
const onDelete = async() => {
ElMessageBox.confirm('确定要删除吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(async() => {
const IDs = []
if (multipleSelection.value.length === 0) {
ElMessage({
type: 'warning',
message: '请选择要删除的数据'
})
return
}
multipleSelection.value &&
multipleSelection.value.map(item => {
IDs.push(item.ID)
})
const res = await deleteProductByIds({ IDs })
if (res.code === 0) {
ElMessage({
type: 'success',
message: '删除成功'
})
if (tableData.value.length === IDs.length && page.value > 1) {
page.value--
}
getTableData()
}
})
}
//
const type = ref('')
//
const updateProductFunc = async(row) => {
const res = await findProduct({ ID: row.ID })
type.value = 'update'
if (res.code === 0) {
formData.value = res.data.reproduct
formData.value.categoryOptions = cateoryList.value
console.log(formData)
dialogFormVisible.value = true
}
}
//
const deleteProductFunc = async (row) => {
const res = await deleteProduct({ ID: row.ID })
if (res.code === 0) {
ElMessage({
type: 'success',
message: '删除成功'
})
if (tableData.value.length === 1 && page.value > 1) {
page.value--
}
getTableData()
}
}
//
const dialogFormVisible = ref(false)
//
const detailShow = ref(false)
//
const openDetailShow = () => {
detailShow.value = true
}
//
const getDetails = async (row) => {
//
const res = await findProduct({ ID: row.ID })
if (res.code === 0) {
formData.value = res.data.reproduct
openDetailShow()
}
}
//
const closeDetailShow = () => {
detailShow.value = false
formData.value = {
code: '',
name: '',
categoryId: 0,
sortWeight: 0,
status: false,
}
}
//
const openDialog = () => {
type.value = 'create'
dialogFormVisible.value = true
}
//
const closeDialog = () => {
dialogFormVisible.value = false
formData.value = {
code: '',
name: '',
categoryId: 0,
sortWeight: 0,
status: false,
}
}
//
const enterDialog = async() => {
elFormRef.value?.validate(async(valid) => {
if (!valid) return
let res
switch (type.value) {
case 'create':
res = await createProduct(formData.value)
break
case 'update':
res = await updateProduct(formData.value)
break
default:
res = await createProduct(formData.value)
break
}
if (res.code === 0) {
ElMessage({
type: 'success',
message: '创建/更改成功'
})
closeDialog()
getTableData()
}
})
}
</script>
<style>
</style>

View File

@ -1,111 +0,0 @@
<template>
<div>
<div class="gva-form-box">
<el-form :model="formData" ref="elFormRef" label-position="right" :rules="rule" label-width="80px">
<el-form-item label="编码:" prop="code">
<el-input v-model="formData.code" :clearable="true" placeholder="请输入编码" />
</el-form-item>
<el-form-item label="名称:" prop="name">
<el-input v-model="formData.name" :clearable="true" placeholder="请输入名称" />
</el-form-item>
<el-form-item label="分类:" prop="categoryId">
<el-input v-model.number="formData.categoryId" :clearable="true" placeholder="请输入" />
</el-form-item>
<el-form-item label="排序:" prop="sortWeight">
<el-input v-model.number="formData.sortWeight" :clearable="true" placeholder="请输入" />
</el-form-item>
<el-form-item label="状态:" prop="status">
<el-switch v-model="formData.status" active-color="#13ce66" inactive-color="#ff4949" active-text="开启" inactive-text="关闭" clearable ></el-switch>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="save">保存</el-button>
<el-button type="primary" @click="back">返回</el-button>
</el-form-item>
</el-form>
</div>
</div>
</template>
<script setup>
import {
createProduct,
updateProduct,
findProduct
} from '@/api/product'
defineOptions({
name: 'ProductForm'
})
//
import { getDictFunc } from '@/utils/format'
import { useRoute, useRouter } from "vue-router"
import { ElMessage } from 'element-plus'
import { ref, reactive } from 'vue'
const route = useRoute()
const router = useRouter()
const type = ref('')
const formData = ref({
code: '',
name: '',
categoryId: 0,
sortWeight: 0,
status: false,
})
//
const rule = reactive({
})
const elFormRef = ref()
//
const init = async () => {
// urlID find createupdate idurl
if (route.query.id) {
const res = await findProduct({ ID: route.query.id })
if (res.code === 0) {
formData.value = res.data.reproduct
type.value = 'update'
}
} else {
type.value = 'create'
}
}
init()
//
const save = async() => {
elFormRef.value?.validate( async (valid) => {
if (!valid) return
let res
switch (type.value) {
case 'create':
res = await createProduct(formData.value)
break
case 'update':
res = await updateProduct(formData.value)
break
default:
res = await createProduct(formData.value)
break
}
if (res.code === 0) {
ElMessage({
type: 'success',
message: '创建/更改成功'
})
}
})
}
//
const back = () => {
router.go(-1)
}
</script>
<style>
</style>

View File

@ -1,341 +0,0 @@
<template>
<div>
<div class="gva-table-box">
<div class="gva-btn-list">
<el-button type="primary" icon="plus" @click="openDialog">新增</el-button>
<el-button icon="delete" style="margin-left: 10px;" :disabled="!multipleSelection.length"
@click="onDelete">删除</el-button>
</div>
<el-table ref="multipleTable" style="width: 100%" tooltip-effect="dark" :data="tableData" row-key="ID"
@selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" />
<el-table-column align="left" label="ID" prop="ID" width="120" />
<el-table-column align="left" label="父级ID" prop="parentId" width="120" />
<el-table-column align="left" label="分类名称" prop="name" width="120" />
<el-table-column align="left" label="操作" fixed="right" min-width="240">
<template #default="scope">
<el-button type="primary" link class="table-button" @click="getDetails(scope.row)">
<el-icon style="margin-right: 5px">
<InfoFilled />
</el-icon>
查看详情
</el-button>
<el-button type="primary" link icon="edit" class="table-button"
@click="updateProductCategoryFunc(scope.row)">变更</el-button>
<el-button type="primary" link icon="delete" @click="deleteRow(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
<div class="gva-pagination">
<el-pagination layout="total, sizes, prev, pager, next, jumper" :current-page="page" :page-size="pageSize"
:page-sizes="[10, 30, 50, 100]" :total="total" @current-change="handleCurrentChange"
@size-change="handleSizeChange" />
</div>
</div>
<el-drawer size="800" v-model="dialogFormVisible" :show-close="false" :before-close="closeDialog">
<template #header>
<div class="flex justify-between items-center">
<span class="text-lg">{{type==='create'?'添加':'修改'}}</span>
<div>
<el-button type="primary" @click="enterDialog"> </el-button>
<el-button @click="closeDialog"> </el-button>
</div>
</div>
</template>
<el-form :model="formData" label-position="top" ref="elFormRef" :rules="rule" label-width="80px">
<el-form-item label="父级ID:" prop="parentId">
<el-input v-model.number="formData.parentId" :clearable="true" placeholder="请输入父级ID" />
</el-form-item>
<el-form-item label="分类名称:" prop="name">
<el-input v-model="formData.name" :clearable="true" placeholder="请输入分类名称" />
</el-form-item>
</el-form>
</el-drawer>
<el-drawer size="800" v-model="detailShow" :before-close="closeDetailShow" destroy-on-close>
<template #header>
<div class="flex justify-between items-center">
<span class="text-lg">查看详情</span>
</div>
</template>
<el-descriptions :column="1" border>
<el-descriptions-item label="ID">
{{ formData.ID }}
</el-descriptions-item>
<el-descriptions-item label="父级ID">
{{ formData.parentId }}
</el-descriptions-item>
<el-descriptions-item label="分类名称">
{{ formData.name }}
</el-descriptions-item>
<el-descriptions-item label="创建时间">
{{ formatDate(formData.createdAt) }}
</el-descriptions-item>
<el-descriptions-item label="更新时间">
{{ formatDate(formData.updatedAt) }}
</el-descriptions-item></el-descriptions>
</el-drawer>
</div>
</template>
<script setup>
import {
createProductCategory,
deleteProductCategory,
deleteProductCategoryByIds,
updateProductCategory,
findProductCategory,
getProductCategoryList
} from '@/api/productCategory'
//
import { getDictFunc, formatDate, formatBoolean, filterDict, ReturnArrImg, onDownloadFile } from '@/utils/format'
import { ElMessage, ElMessageBox } from 'element-plus'
import { ref, reactive } from 'vue'
defineOptions({
name: 'ProductCategory'
})
//
const formData = ref({
name: '',
parentId: 0,
})
//
const rule = reactive({
})
const searchRule = reactive({
createdAt: [
{ validator: (rule, value, callback) => {
if (searchInfo.value.startCreatedAt && !searchInfo.value.endCreatedAt) {
callback(new Error('请填写结束日期'))
} else if (!searchInfo.value.startCreatedAt && searchInfo.value.endCreatedAt) {
callback(new Error('请填写开始日期'))
} else if (searchInfo.value.startCreatedAt && searchInfo.value.endCreatedAt && (searchInfo.value.startCreatedAt.getTime() === searchInfo.value.endCreatedAt.getTime() || searchInfo.value.startCreatedAt.getTime() > searchInfo.value.endCreatedAt.getTime())) {
callback(new Error('开始日期应当早于结束日期'))
} else {
callback()
}
}, trigger: 'change' }
],
})
const elFormRef = ref()
const elSearchFormRef = ref()
// =========== ===========
const page = ref(1)
const total = ref(0)
const pageSize = ref(10)
const tableData = ref([])
const searchInfo = ref({})
//
const onReset = () => {
searchInfo.value = {}
getTableData()
}
//
const onSubmit = () => {
elSearchFormRef.value?.validate(async(valid) => {
if (!valid) return
page.value = 1
pageSize.value = 10
getTableData()
})
}
//
const handleSizeChange = (val) => {
pageSize.value = val
getTableData()
}
//
const handleCurrentChange = (val) => {
page.value = val
getTableData()
}
//
const getTableData = async() => {
const table = await getProductCategoryList({ page: page.value, pageSize: pageSize.value, ...searchInfo.value })
if (table.code === 0) {
tableData.value = table.data.list
total.value = table.data.total
page.value = table.data.page
pageSize.value = table.data.pageSize
}
}
getTableData()
// ============== ===============
//
const setOptions = async() => {
}
//
setOptions()
//
const multipleSelection = ref([])
//
const handleSelectionChange = (val) => {
multipleSelection.value = val
}
//
const deleteRow = (row) => {
ElMessageBox.confirm('确定要删除吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
deleteProductCategoryFunc(row)
})
}
//
const onDelete = async() => {
ElMessageBox.confirm('确定要删除吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(async() => {
const IDs = []
if (multipleSelection.value.length === 0) {
ElMessage({
type: 'warning',
message: '请选择要删除的数据'
})
return
}
multipleSelection.value &&
multipleSelection.value.map(item => {
IDs.push(item.ID)
})
const res = await deleteProductCategoryByIds({ IDs })
if (res.code === 0) {
ElMessage({
type: 'success',
message: '删除成功'
})
if (tableData.value.length === IDs.length && page.value > 1) {
page.value--
}
getTableData()
}
})
}
//
const type = ref('')
//
const updateProductCategoryFunc = async(row) => {
const res = await findProductCategory({ ID: row.ID })
type.value = 'update'
if (res.code === 0) {
formData.value = res.data.reproductCategory
dialogFormVisible.value = true
}
}
//
const deleteProductCategoryFunc = async(row) => {
const res = await deleteProductCategory({ ID: row.ID })
if (res.code === 0) {
ElMessage({
type: 'success',
message: '删除成功'
})
if (tableData.value.length === 1 && page.value > 1) {
page.value--
}
getTableData()
}
}
//
const dialogFormVisible = ref(false)
//
const detailShow = ref(false)
//
const openDetailShow = () => {
detailShow.value = true
}
//
const getDetails = async(row) => {
//
const res = await findProductCategory({ ID: row.ID })
if (res.code === 0) {
formData.value = res.data.reproductCategory
openDetailShow()
}
}
//
const closeDetailShow = () => {
detailShow.value = false
formData.value = {
name: '',
parentId: 0,
}
}
//
const openDialog = () => {
type.value = 'create'
dialogFormVisible.value = true
}
//
const closeDialog = () => {
dialogFormVisible.value = false
formData.value = {
name: '',
parentId: 0,
}
}
//
const enterDialog = async() => {
elFormRef.value?.validate(async(valid) => {
if (!valid) return
let res
switch (type.value) {
case 'create':
res = await createProductCategory(formData.value)
break
case 'update':
res = await updateProductCategory(formData.value)
break
default:
res = await createProductCategory(formData.value)
break
}
if (res.code === 0) {
ElMessage({
type: 'success',
message: '创建/更改成功'
})
closeDialog()
getTableData()
}
})
}
</script>
<style>
</style>

View File

@ -1,99 +0,0 @@
<template>
<div>
<div class="gva-form-box">
<el-form :model="formData" ref="elFormRef" label-position="right" :rules="rule" label-width="80px">
<el-form-item label="父级Id:" prop="parentId">
<el-input v-model.number="formData.parentId" :clearable="true" placeholder="请输入" />
</el-form-item>
<el-form-item label="分类名称:" prop="name">
<el-input v-model="formData.name" :clearable="true" placeholder="请输入name字段" />
</el-form-item>
<el-form-item>
<el-button type="primary" @click="save">保存</el-button>
<el-button type="primary" @click="back">返回</el-button>
</el-form-item>
</el-form>
</div>
</div>
</template>
<script setup>
import {
createProductCategory,
updateProductCategory,
findProductCategory
} from '@/api/productCategory'
defineOptions({
name: 'ProductCategoryForm'
})
//
import { getDictFunc } from '@/utils/format'
import { useRoute, useRouter } from "vue-router"
import { ElMessage } from 'element-plus'
import { ref, reactive } from 'vue'
const route = useRoute()
const router = useRouter()
const type = ref('')
const formData = ref({
name: '',
parentId: 0,
})
//
const rule = reactive({
})
const elFormRef = ref()
//
const init = async () => {
// urlID find createupdate idurl
if (route.query.id) {
const res = await findProductCategory({ ID: route.query.id })
if (res.code === 0) {
formData.value = res.data.reproductCategory
type.value = 'update'
}
} else {
type.value = 'create'
}
}
init()
//
const save = async() => {
elFormRef.value?.validate(async(valid) => {
if (!valid) return
let res
switch (type.value) {
case 'create':
res = await createProductCategory(formData.value)
break
case 'update':
res = await updateProductCategory(formData.value)
break
default:
res = await createProductCategory(formData.value)
break
}
if (res.code === 0) {
ElMessage({
type: 'success',
message: '创建/更改成功'
})
}
})
}
//
const back = () => {
router.go(-1)
}
</script>
<style>
</style>

View File

@ -1,497 +0,0 @@
<template>
<div>
<div class="gva-search-box">
<el-form ref="elSearchFormRef" :inline="true" :model="searchInfo" class="demo-form-inline" :rules="searchRule"
@keyup.enter="onSubmit">
<el-form-item label="创建日期" prop="createdAt">
<template #label>
<span>
创建日期
<el-tooltip content="搜索范围是开始日期(包含)至结束日期(不包含)">
<el-icon>
<QuestionFilled />
</el-icon>
</el-tooltip>
</span>
</template>
<el-date-picker v-model="searchInfo.startCreatedAt" type="datetime" placeholder="开始日期"
:disabled-date="time=> searchInfo.endCreatedAt ? time.getTime() > searchInfo.endCreatedAt.getTime() : false"></el-date-picker>
<el-date-picker v-model="searchInfo.endCreatedAt" type="datetime" placeholder="结束日期"
:disabled-date="time=> searchInfo.startCreatedAt ? time.getTime() < searchInfo.startCreatedAt.getTime() : false"></el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="search" @click="onSubmit">查询</el-button>
<el-button icon="refresh" @click="onReset">重置</el-button>
</el-form-item>
</el-form>
</div>
<div class="gva-table-box">
<div class="gva-btn-list">
<el-button type="primary" icon="plus" @click="openDialog">新增</el-button>
<el-button icon="delete" style="margin-left: 10px;" :disabled="!multipleSelection.length"
@click="onDelete">删除</el-button>
</div>
<el-table ref="multipleTable" style="width: 100%" tooltip-effect="dark" :data="tableData" row-key="ID"
@selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" />
<el-table-column align="left" label="ID" prop="ID" width="80" />
<el-table-column align="left" label="产品" prop="productId" width="120">
<template #default="scope">{{ formatProduct(scope.row.productId) }}</template>
</el-table-column>
<el-table-column align="left" label="发布日期" width="100">
<template #default="scope">{{ formatOnlyDate(scope.row.publishDate) }}</template>
</el-table-column>
<el-table-column align="left" label="规格" prop="norm" width="120" />
<el-table-column align="left" label="地区" prop="areaFullname" width="120" />
<el-table-column align="left" label="价格类型" prop="priceType" width="80" />
<el-table-column align="left" label="单位" prop="priceUnit" width="60" />
<el-table-column align="left" label="最低价格" prop="priceMin" width="120" />
<el-table-column align="left" label="最高价格" prop="priceMax" width="120" />
<el-table-column align="left" label="状态" prop="status" width="80">
<template #default="scope">{{ formatBoolean(scope.row.status) }}</template>
</el-table-column>
<el-table-column align="left" label="备注" prop="remark" width="120" />
<el-table-column align="left" label="创建时间" width="180">
<template #default="scope">{{ formatDate(scope.row.createdAt) }}</template>
</el-table-column>
<el-table-column align="left" label="操作" fixed="right" min-width="240">
<template #default="scope">
<el-button type="primary" link class="table-button" @click="getDetails(scope.row)">
<el-icon style="margin-right: 5px">
<InfoFilled />
</el-icon>
查看详情
</el-button>
<el-button type="primary" link icon="edit" class="table-button"
@click="updateProductPriceFunc(scope.row)">变更</el-button>
<el-button type="primary" link icon="delete" @click="deleteRow(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
<div class="gva-pagination">
<el-pagination layout="total, sizes, prev, pager, next, jumper" :current-page="page" :page-size="pageSize"
:page-sizes="[10, 30, 50, 100]" :total="total" @current-change="handleCurrentChange"
@size-change="handleSizeChange" />
</div>
</div>
<el-drawer size="800" v-model="dialogFormVisible" :show-close="false" :before-close="closeDialog">
<template #header>
<div class="flex justify-between items-center">
<span class="text-lg">{{type==='create'?'添加':'修改'}}</span>
<div>
<el-button type="primary" @click="enterDialog"> </el-button>
<el-button @click="closeDialog"> </el-button>
</div>
</div>
</template>
<el-form :model="formData" label-position="top" ref="elFormRef" :rules="rule" label-width="80px">
<el-form-item label="产品Id:" prop="productId">
<el-input v-model.number="formData.productId" :clearable="true" placeholder="请输入产品Id" />
</el-form-item>
<el-form-item label="发布日期:" prop="publishDate">
<el-date-picker v-model="formData.publishDate" type="date" style="width:100%" placeholder="选择日期"
:clearable="true" />
</el-form-item>
<el-form-item label="规格:" prop="norm">
<el-input v-model="formData.norm" :clearable="true" placeholder="请输入规格" />
</el-form-item>
<el-form-item label="地区Id:" prop="areaId">
<el-input v-model.number="formData.areaId" :clearable="true" placeholder="请输入地区Id" />
</el-form-item>
<el-form-item label="地区:" prop="areaFullname">
<el-input v-model="formData.areaFullname" :clearable="true" placeholder="请输入地区" />
</el-form-item>
<el-form-item label="价格类型:" prop="priceType">
<el-input v-model="formData.priceType" :clearable="true" placeholder="请输入" />
</el-form-item>
<el-form-item label="单位:" prop="priceUnit">
<el-input v-model="formData.priceUnit" :clearable="true" placeholder="请输入单位" />
</el-form-item>
<el-form-item label="最低价格:" prop="priceMin">
<el-input-number v-model="formData.priceMin" style="width:100%" :precision="2" :clearable="true" />
</el-form-item>
<el-form-item label="最高价格:" prop="priceMax">
<el-input-number v-model="formData.priceMax" style="width:100%" :precision="2" :clearable="true" />
</el-form-item>
<el-form-item label="状态:" prop="status">
<el-switch v-model="formData.status" active-color="#13ce66" inactive-color="#ff4949" active-text=""
inactive-text="否" clearable></el-switch>
</el-form-item>
<el-form-item label="备注:" prop="remark">
<el-input v-model="formData.remark" :clearable="true" placeholder="请输入备注" />
</el-form-item>
</el-form>
</el-drawer>
<el-drawer size="800" v-model="detailShow" :before-close="closeDetailShow" destroy-on-close>
<template #header>
<div class="flex justify-between items-center">
<span class="text-lg">查看详情</span>
</div>
</template>
<el-descriptions :column="1" border>
<el-descriptions-item label="ID">
{{ formData.ID }}
</el-descriptions-item>
<el-descriptions-item label="产品">
{{ formatProduct(formData.productId) }}
</el-descriptions-item>
<el-descriptions-item label="发布日期">
{{ formatOnlyDate(formData.publishDate) }}
</el-descriptions-item>
<el-descriptions-item label="规格">
{{ formData.norm }}
</el-descriptions-item>
<el-descriptions-item label="地区Id">
{{ formData.areaId }}
</el-descriptions-item>
<el-descriptions-item label="地区">
{{ formData.areaFullname }}
</el-descriptions-item>
<el-descriptions-item label="价格类型">
{{ formData.priceType }}
</el-descriptions-item>
<el-descriptions-item label="单位">
{{ formData.priceUnit }}
</el-descriptions-item>
<el-descriptions-item label="最低价格">
{{ formData.priceMin }}
</el-descriptions-item>
<el-descriptions-item label="最高价格">
{{ formData.priceMax }}
</el-descriptions-item>
<el-descriptions-item label="状态">
{{ formatBoolean(formData.status) }}
</el-descriptions-item>
<el-descriptions-item label="备注">
{{ formData.remark }}
</el-descriptions-item>
<el-descriptions-item label="创建时间">
{{ formatDate(formData.createdAt) }}
</el-descriptions-item>
<el-descriptions-item label="更新时间">
{{ formatDate(formData.updatedAt) }}
</el-descriptions-item>
</el-descriptions>
</el-drawer>
</div>
</template>
<script setup>
import { getProductList } from '@/api/product'
import {
createProductPrice,
deleteProductPrice,
deleteProductPriceByIds,
updateProductPrice,
findProductPrice,
getProductPriceList
} from '@/api/productPrice'
//
import { formatDate, formatOnlyDate, formatBoolean } from '@/utils/format'
import { ElMessage, ElMessageBox } from 'element-plus'
import { ref, reactive } from 'vue'
defineOptions({
name: 'ProductPrice'
})
//
const formData = ref({
productId: 0,
publishDate: new Date(),
norm: '',
areaId: 0,
areaFullname: '',
priceType: false,
priceUnit: '',
priceMin: 0,
priceMax: 0,
status: false,
remark: '',
})
//
const rule = reactive({
})
const searchRule = reactive({
createdAt: [
{ validator: (rule, value, callback) => {
if (searchInfo.value.startCreatedAt && !searchInfo.value.endCreatedAt) {
callback(new Error('请填写结束日期'))
} else if (!searchInfo.value.startCreatedAt && searchInfo.value.endCreatedAt) {
callback(new Error('请填写开始日期'))
} else if (searchInfo.value.startCreatedAt && searchInfo.value.endCreatedAt && (searchInfo.value.startCreatedAt.getTime() === searchInfo.value.endCreatedAt.getTime() || searchInfo.value.startCreatedAt.getTime() > searchInfo.value.endCreatedAt.getTime())) {
callback(new Error('开始日期应当早于结束日期'))
} else {
callback()
}
}, trigger: 'change' }
],
})
const elFormRef = ref()
const elSearchFormRef = ref()
// =========== ===========
const page = ref(1)
const total = ref(0)
const pageSize = ref(10)
const tableData = ref([])
const searchInfo = ref({})
const productList = ref([])
const formatProduct = (id) => {
for (let i = 0; i < productList.value.length; i++) {
if (productList.value[i].ID === id) {
return productList.value[i].name
}
}
return id
}
//
const onReset = () => {
searchInfo.value = {}
getTableData()
}
//
const onSubmit = () => {
elSearchFormRef.value?.validate(async(valid) => {
if (!valid) return
page.value = 1
pageSize.value = 10
if (searchInfo.value.priceType === '') {
searchInfo.value.priceType = null
}
if (searchInfo.value.status === '') {
searchInfo.value.status = null
}
getTableData()
})
}
//
const handleSizeChange = (val) => {
pageSize.value = val
getTableData()
}
//
const handleCurrentChange = (val) => {
page.value = val
getTableData()
}
const getProductData = async() => {
const resp = await getProductList({ page: 1, pageSize: 100 })
if (resp.code === 0 && resp.data.list) {
productList.value = resp.data.list
}
}
getProductData()
//
const getTableData = async() => {
const table = await getProductPriceList({ page: page.value, pageSize: pageSize.value, ...searchInfo.value })
if (table.code === 0) {
tableData.value = table.data.list
total.value = table.data.total
page.value = table.data.page
pageSize.value = table.data.pageSize
}
}
getTableData()
// ============== ===============
//
const setOptions = async() => {
}
//
setOptions()
//
const multipleSelection = ref([])
//
const handleSelectionChange = (val) => {
multipleSelection.value = val
}
//
const deleteRow = (row) => {
ElMessageBox.confirm('确定要删除吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
deleteProductPriceFunc(row)
})
}
//
const onDelete = async() => {
ElMessageBox.confirm('确定要删除吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(async() => {
const IDs = []
if (multipleSelection.value.length === 0) {
ElMessage({
type: 'warning',
message: '请选择要删除的数据'
})
return
}
multipleSelection.value &&
multipleSelection.value.map(item => {
IDs.push(item.ID)
})
const res = await deleteProductPriceByIds({ IDs })
if (res.code === 0) {
ElMessage({
type: 'success',
message: '删除成功'
})
if (tableData.value.length === IDs.length && page.value > 1) {
page.value--
}
getTableData()
}
})
}
//
const type = ref('')
//
const updateProductPriceFunc = async(row) => {
const res = await findProductPrice({ ID: row.ID })
type.value = 'update'
if (res.code === 0) {
formData.value = res.data.reproductPrice
dialogFormVisible.value = true
}
}
//
const deleteProductPriceFunc = async(row) => {
const res = await deleteProductPrice({ ID: row.ID })
if (res.code === 0) {
ElMessage({
type: 'success',
message: '删除成功'
})
if (tableData.value.length === 1 && page.value > 1) {
page.value--
}
getTableData()
}
}
//
const dialogFormVisible = ref(false)
//
const detailShow = ref(false)
//
const openDetailShow = () => {
detailShow.value = true
}
//
const getDetails = async(row) => {
//
const res = await findProductPrice({ ID: row.ID })
if (res.code === 0) {
formData.value = res.data.reproductPrice
openDetailShow()
}
}
//
const closeDetailShow = () => {
detailShow.value = false
formData.value = {
productId: 0,
publishDate: new Date(),
norm: '',
areaId: 0,
areaFullname: '',
priceType: false,
priceUnit: '',
priceMin: 0,
priceMax: 0,
status: false,
remark: '',
}
}
//
const openDialog = () => {
type.value = 'create'
dialogFormVisible.value = true
}
//
const closeDialog = () => {
dialogFormVisible.value = false
formData.value = {
productId: 0,
publishDate: new Date(),
norm: '',
areaId: 0,
areaFullname: '',
priceType: false,
priceUnit: '',
priceMin: 0,
priceMax: 0,
status: false,
remark: '',
}
}
//
const enterDialog = async() => {
elFormRef.value?.validate(async(valid) => {
if (!valid) return
let res
switch (type.value) {
case 'create':
res = await createProductPrice(formData.value)
break
case 'update':
res = await updateProductPrice(formData.value)
break
default:
res = await createProductPrice(formData.value)
break
}
if (res.code === 0) {
ElMessage({
type: 'success',
message: '创建/更改成功'
})
closeDialog()
getTableData()
}
})
}
</script>
<style>
</style>

View File

@ -1,135 +0,0 @@
<template>
<div>
<div class="gva-form-box">
<el-form :model="formData" ref="elFormRef" label-position="right" :rules="rule" label-width="80px">
<el-form-item label="产品Id:" prop="productId">
<el-input v-model.number="formData.productId" :clearable="true" placeholder="请输入" />
</el-form-item>
<el-form-item label="发布日期:" prop="publishDate">
<el-date-picker v-model="formData.publishDate" type="date" placeholder="选择日期" :clearable="true"></el-date-picker>
</el-form-item>
<el-form-item label="规格:" prop="norm">
<el-input v-model="formData.norm" :clearable="true" placeholder="请输入规格" />
</el-form-item>
<el-form-item label="地区Id:" prop="areaId">
<el-input v-model.number="formData.areaId" :clearable="true" placeholder="请输入" />
</el-form-item>
<el-form-item label="地区:" prop="areaFullname">
<el-input v-model="formData.areaFullname" :clearable="true" placeholder="请输入地区" />
</el-form-item>
<el-form-item label="价格类型:" prop="priceType">
<el-switch v-model="formData.priceType" active-color="#13ce66" inactive-color="#ff4949" active-text="" inactive-text="" clearable ></el-switch>
</el-form-item>
<el-form-item label="单位:" prop="priceUnit">
<el-input v-model="formData.priceUnit" :clearable="true" placeholder="请输入单位" />
</el-form-item>
<el-form-item label="最低价格:" prop="priceMin">
<el-input-number v-model="formData.priceMin" :precision="2" :clearable="true"></el-input-number>
</el-form-item>
<el-form-item label="最高价格:" prop="priceMax">
<el-input-number v-model="formData.priceMax" :precision="2" :clearable="true"></el-input-number>
</el-form-item>
<el-form-item label="状态:" prop="status">
<el-switch v-model="formData.status" active-color="#13ce66" inactive-color="#ff4949" active-text="" inactive-text="" clearable ></el-switch>
</el-form-item>
<el-form-item label="备注:" prop="remark">
<el-input v-model="formData.remark" :clearable="true" placeholder="请输入备注" />
</el-form-item>
<el-form-item>
<el-button type="primary" @click="save">保存</el-button>
<el-button type="primary" @click="back">返回</el-button>
</el-form-item>
</el-form>
</div>
</div>
</template>
<script setup>
import {
createProductPrice,
updateProductPrice,
findProductPrice
} from '@/api/productPrice'
defineOptions({
name: 'ProductPriceForm'
})
//
import { getDictFunc } from '@/utils/format'
import { useRoute, useRouter } from "vue-router"
import { ElMessage } from 'element-plus'
import { ref, reactive } from 'vue'
const route = useRoute()
const router = useRouter()
const type = ref('')
const formData = ref({
productId: 0,
publishDate: new Date(),
norm: '',
areaId: 0,
areaFullname: '',
priceType: false,
priceUnit: '',
priceMin: 0,
priceMax: 0,
status: false,
remark: '',
})
//
const rule = reactive({
})
const elFormRef = ref()
//
const init = async () => {
// urlID find createupdate idurl
if (route.query.id) {
const res = await findProductPrice({ ID: route.query.id })
if (res.code === 0) {
formData.value = res.data.reproductPrice
type.value = 'update'
}
} else {
type.value = 'create'
}
}
init()
//
const save = async() => {
elFormRef.value?.validate( async (valid) => {
if (!valid) return
let res
switch (type.value) {
case 'create':
res = await createProductPrice(formData.value)
break
case 'update':
res = await updateProductPrice(formData.value)
break
default:
res = await createProductPrice(formData.value)
break
}
if (res.code === 0) {
ElMessage({
type: 'success',
message: '创建/更改成功'
})
}
})
}
//
const back = () => {
router.go(-1)
}
</script>
<style>
</style>

View File

@ -1,641 +0,0 @@
<template>
<div>
<div class="gva-search-box">
<el-form ref="elSearchFormRef" :inline="true" :model="searchInfo" class="demo-form-inline" :rules="searchRule"
@keyup.enter="onSubmit">
<el-form-item label="创建日期" prop="createdAt">
<template #label>
<span>
创建日期
<el-tooltip content="搜索范围是开始日期(包含)至结束日期(不包含)">
<el-icon>
<QuestionFilled />
</el-icon>
</el-tooltip>
</span>
</template>
<el-date-picker v-model="searchInfo.startCreatedAt" type="datetime" placeholder="开始日期"
:disabled-date="time=> searchInfo.endCreatedAt ? time.getTime() > searchInfo.endCreatedAt.getTime() : false"></el-date-picker>
<el-date-picker v-model="searchInfo.endCreatedAt" type="datetime" placeholder="结束日期"
:disabled-date="time=> searchInfo.startCreatedAt ? time.getTime() < searchInfo.startCreatedAt.getTime() : false"></el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="search" @click="onSubmit">查询</el-button>
<el-button icon="refresh" @click="onReset">重置</el-button>
</el-form-item>
</el-form>
</div>
<div class="gva-table-box">
<div class="gva-btn-list">
<el-button type="primary" icon="plus" @click="openDialog">新增</el-button>
<el-button icon="delete" style="margin-left: 10px;" :disabled="!multipleSelection.length"
@click="onDelete">删除</el-button>
</div>
<el-table ref="multipleTable" style="width: 100%" tooltip-effect="dark" :data="tableData" row-key="ID"
@selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" />
<el-table-column align="left" label="ID" prop="ID" width="60" />
<el-table-column align="left" label="产品" prop="productId" width="80">
<template #default="scope">{{ formatProduct(scope.row.productId) }}</template>
</el-table-column>
<el-table-column align="left" label="产品价格Id" prop="productPriceId" width="120" />
<el-table-column align="left" label="公司价格Id" prop="companyPriceId" width="120" />
<el-table-column align="left" label="规格" prop="norm" width="120" />
<el-table-column align="left" label="地区Id" prop="areaId" width="80" />
<el-table-column align="left" label="地区" prop="areaFullname" width="120" />
<el-table-column align="left" label="品牌" prop="producter" width="120" />
<el-table-column align="left" label="价格类型" prop="priceType" width="80">
<template #default="scope">{{ formatPriceType(scope.row.priceType) }}</template>
</el-table-column>
<el-table-column align="left" label="价格" prop="price" width="120" />
<el-table-column align="left" label="单位" prop="priceUnit" width="60" />
<el-table-column align="left" label="公司" prop="companyName" width="220" />
<el-table-column align="left" label="发布日期" width="120">
<template #default="scope">{{ formatOnlyDate(scope.row.publishDate) }}</template>
</el-table-column>
<el-table-column align="left" label="创建时间" width="180">
<template #default="scope">{{ formatDate(scope.row.createdAt) }}</template>
</el-table-column>
<el-table-column align="left" label="更新时间" width="180">
<template #default="scope">{{ formatDate(scope.row.updatedAt) }}</template>
</el-table-column>
<el-table-column align="left" label="爬虫表.Id" prop="crawTableId" width="220">
<template #default="scope">
<el-button type="primary" link @click="getCrawlData(scope.row)">
{{ scope.row.crawTable }}.{{ scope.row.crawTableId }}
</el-button>
</template>
</el-table-column>
<el-table-column align="left" label="操作" fixed="right" min-width="240">
<template #default="scope">
<el-button type="primary" link class="table-button" @click="getDetails(scope.row)">
<el-icon style="margin-right: 5px">
<InfoFilled />
</el-icon>
查看详情
</el-button>
<el-button type="primary" link icon="edit" class="table-button"
@click="updateSourcePriceFunc(scope.row)">变更</el-button>
<el-button type="primary" link icon="delete" @click="deleteRow(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
<div class="gva-pagination">
<el-pagination layout="total, sizes, prev, pager, next, jumper" :current-page="page" :page-size="pageSize"
:page-sizes="[10, 30, 50, 100]" :total="total" @current-change="handleCurrentChange"
@size-change="handleSizeChange" />
</div>
</div>
<el-drawer size="800" v-model="dialogFormVisible" :show-close="false" :before-close="closeDialog">
<template #header>
<div class="flex justify-between items-center">
<span class="text-lg">{{type==='create'?'添加':'修改'}}</span>
<div>
<el-button type="primary" @click="enterDialog"> </el-button>
<el-button @click="closeDialog"> </el-button>
</div>
</div>
</template>
<el-form :model="formData" label-position="top" ref="elFormRef" :rules="rule" label-width="80px">
<el-form-item label="爬虫表:" prop="crawTable">
<el-input v-model="formData.crawTable" :clearable="true" placeholder="请输入爬虫表" />
</el-form-item>
<el-form-item label="爬虫表Id:" prop="crawTableId">
<el-input v-model.number="formData.crawTableId" :clearable="true" placeholder="请输入爬虫表Id" />
</el-form-item>
<el-form-item label="产品Id:" prop="productId">
<el-input v-model.number="formData.productId" :clearable="true" placeholder="请输入产品Id" />
</el-form-item>
<el-form-item label="产品价格Id:" prop="productPriceId">
<el-input v-model.number="formData.productPriceId" :clearable="true" placeholder="请输入产品价格Id" />
</el-form-item>
<el-form-item label="公司价格Id:" prop="companyPriceId">
<el-input v-model.number="formData.companyPriceId" :clearable="true" placeholder="请输入公司价格Id" />
</el-form-item>
<el-form-item label="规格:" prop="norm">
<el-input v-model="formData.norm" :clearable="true" placeholder="请输入规格" />
</el-form-item>
<el-form-item label="地区Id:" prop="areaId">
<el-input v-model.number="formData.areaId" :clearable="true" placeholder="请输入地区Id" />
</el-form-item>
<el-form-item label="地区:" prop="areaFullname">
<el-input v-model="formData.areaFullname" :clearable="true" placeholder="请输入地区" />
</el-form-item>
<el-form-item label="品牌:" prop="producter">
<el-input v-model="formData.producter" :clearable="true" placeholder="请输入品牌" />
</el-form-item>
<el-form-item label="价格类型:" prop="priceType">
<el-switch v-model="formData.priceType" active-color="#13ce66" inactive-color="#ff4949" active-text=""
inactive-text="否" clearable></el-switch>
</el-form-item>
<el-form-item label="价格:" prop="price">
<el-input-number v-model="formData.price" style="width:100%" :precision="2" :clearable="true" />
</el-form-item>
<el-form-item label="单位:" prop="priceUnit">
<el-input v-model="formData.priceUnit" :clearable="true" placeholder="请输入单位" />
</el-form-item>
<el-form-item label="公司:" prop="companyName">
<el-input v-model="formData.companyName" :clearable="true" placeholder="请输入公司" />
</el-form-item>
<el-form-item label="发布日期:" prop="publishDate">
<el-date-picker v-model="formData.publishDate" type="date" style="width:100%" placeholder="选择日期"
:clearable="true" />
</el-form-item>
</el-form>
</el-drawer>
<el-drawer size="800" v-model="detailShow" :before-close="closeDetailShow" destroy-on-close>
<template #header>
<div class="flex justify-between items-center">
<span class="text-lg">查看详情</span>
</div>
</template>
<el-descriptions :column="1" border>
<el-descriptions-item label="ID">
{{ formData.ID }}
</el-descriptions-item>
<el-descriptions-item label="爬虫表">
{{ formData.crawTable }}
</el-descriptions-item>
<el-descriptions-item label="爬虫表Id">
{{ formData.crawTableId }}
</el-descriptions-item>
<el-descriptions-item label="产品Id">
{{ formatProduct(formData.productId) }}
</el-descriptions-item>
<el-descriptions-item label="产品价格Id">
{{ formData.productPriceId }}
</el-descriptions-item>
<el-descriptions-item label="公司价格Id">
{{ formData.companyPriceId }}
</el-descriptions-item>
<el-descriptions-item label="规格">
{{ formData.norm }}
</el-descriptions-item>
<el-descriptions-item label="地区Id">
{{ formData.areaId }}
</el-descriptions-item>
<el-descriptions-item label="地区">
{{ formData.areaFullname }}
</el-descriptions-item>
<el-descriptions-item label="品牌">
{{ formData.producter }}
</el-descriptions-item>
<el-descriptions-item label="价格类型">
{{ formatPriceType(formData.priceType) }}
</el-descriptions-item>
<el-descriptions-item label="价格">
{{ formData.price }}
</el-descriptions-item>
<el-descriptions-item label="单位">
{{ formData.priceUnit }}
</el-descriptions-item>
<el-descriptions-item label="公司">
{{ formData.companyName }}
</el-descriptions-item>
<el-descriptions-item label="发布日期">
{{ formatOnlyDate(formData.publishDate) }}
</el-descriptions-item>
<el-descriptions-item label="创建时间">
{{ formatDate(formData.createdAt) }}
</el-descriptions-item>
<el-descriptions-item label="更新时间">
{{ formatDate(formData.updatedAt) }}
</el-descriptions-item>
</el-descriptions>
</el-drawer>
<el-drawer size="800" v-model="crawl100ppiDetail" :before-close="closeCrawl100ppiShow" destroy-on-close>
<template #header>
<div class="flex justify-between items-center">
<span class="text-lg">查看爬虫数据详情</span>
</div>
</template>
<el-descriptions :column="1" border>
<el-descriptions-item label="ID">
{{ formData.ID }}
</el-descriptions-item>
<el-descriptions-item label="产品Code">
{{ formData.code }}
</el-descriptions-item>
<el-descriptions-item label="产品名称">
{{ formData.name }}
</el-descriptions-item>
<el-descriptions-item label="规格">
{{ formData.norm }}
</el-descriptions-item>
<el-descriptions-item label="品牌">
{{ formData.producer }}
</el-descriptions-item>
<el-descriptions-item label="价格类型">
{{ formData.priceType }}
</el-descriptions-item>
<el-descriptions-item label="单位">
{{ formData.priceUnit }}
</el-descriptions-item>
<el-descriptions-item label="价格">
{{ formData.price }}
</el-descriptions-item>
<el-descriptions-item label="地区">
{{ formData.areaDetail }}
</el-descriptions-item>
<el-descriptions-item label="公司">
{{ formData.dealer }}
</el-descriptions-item>
<el-descriptions-item label="发布日期">
{{ formData.publishDate }}
</el-descriptions-item>
<el-descriptions-item label="数据唯一值">
{{ formData.uniqueCode }}
</el-descriptions-item>
<el-descriptions-item label="抓取时间">
{{ formData.crawlTime }}
</el-descriptions-item>
<el-descriptions-item label="状态">
{{ formData.status }}
</el-descriptions-item>
<el-descriptions-item label="同步失败原因">
{{ formData.syncError }}
</el-descriptions-item>
<el-descriptions-item label="创建时间">
{{ formatDate(formData.createdAt) }}
</el-descriptions-item>
<el-descriptions-item label="更新时间">
{{ formatDate(formData.updatedAt) }}
</el-descriptions-item>
</el-descriptions>
</el-drawer>
</div>
</template>
<script setup>
import { findCrawl100ppi } from '@/api/crawl100ppi'
import { getProductList } from '@/api/product'
import {
createSourcePrice,
deleteSourcePrice,
deleteSourcePriceByIds,
updateSourcePrice,
findSourcePrice,
getSourcePriceList
} from '@/api/sourcePrice'
//
import { formatDate, formatOnlyDate, formatPriceType } from '@/utils/format'
import { ElMessage, ElMessageBox } from 'element-plus'
import { ref, reactive } from 'vue'
defineOptions({
name: 'SourcePrice'
})
//
const formData = ref({
crawTable: '',
crawTableId: 0,
productId: 0,
productPriceId: 0,
companyPriceId: 0,
norm: '',
areaId: 0,
areaFullname: '',
producter: '',
priceType: false,
price: 0,
priceUnit: '',
companyName: '',
publishDate: new Date(),
})
//
const rule = reactive({
})
const searchRule = reactive({
createdAt: [
{ validator: (rule, value, callback) => {
if (searchInfo.value.startCreatedAt && !searchInfo.value.endCreatedAt) {
callback(new Error('请填写结束日期'))
} else if (!searchInfo.value.startCreatedAt && searchInfo.value.endCreatedAt) {
callback(new Error('请填写开始日期'))
} else if (searchInfo.value.startCreatedAt && searchInfo.value.endCreatedAt && (searchInfo.value.startCreatedAt.getTime() === searchInfo.value.endCreatedAt.getTime() || searchInfo.value.startCreatedAt.getTime() > searchInfo.value.endCreatedAt.getTime())) {
callback(new Error('开始日期应当早于结束日期'))
} else {
callback()
}
}, trigger: 'change' }
],
})
const elFormRef = ref()
const elSearchFormRef = ref()
// =========== ===========
const page = ref(1)
const total = ref(0)
const pageSize = ref(10)
const tableData = ref([])
const searchInfo = ref({})
const productList = ref([])
const formatProduct = (id) => {
for (let i = 0; i < productList.value.length; i++) {
if (productList.value[i].ID === id) {
return productList.value[i].name
}
}
return id
}
const formmatStatus = (stauts) => {
switch (status) {
case '1': return '待同步'
case '2': return '已同步'
case '3': return '同步失败'
}
}
//
const onReset = () => {
searchInfo.value = {}
getTableData()
}
//
const onSubmit = () => {
elSearchFormRef.value?.validate(async(valid) => {
if (!valid) return
page.value = 1
pageSize.value = 10
if (searchInfo.value.priceType === '') {
searchInfo.value.priceType = null
}
getTableData()
})
}
//
const handleSizeChange = (val) => {
pageSize.value = val
getTableData()
}
//
const handleCurrentChange = (val) => {
page.value = val
getTableData()
}
const getProductData = async() => {
const resp = await getProductList({ page: 1, pageSize: 100 })
if (resp.code === 0 && resp.data.list) {
productList.value = resp.data.list
}
}
getProductData()
//
const getTableData = async() => {
const table = await getSourcePriceList({ page: page.value, pageSize: pageSize.value, ...searchInfo.value })
if (table.code === 0) {
tableData.value = table.data.list
total.value = table.data.total
page.value = table.data.page
pageSize.value = table.data.pageSize
}
}
getTableData()
// ============== ===============
//
const setOptions = async() => {
}
//
setOptions()
//
const multipleSelection = ref([])
//
const handleSelectionChange = (val) => {
multipleSelection.value = val
}
//
const deleteRow = (row) => {
ElMessageBox.confirm('确定要删除吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
deleteSourcePriceFunc(row)
})
}
//
const onDelete = async() => {
ElMessageBox.confirm('确定要删除吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(async() => {
const IDs = []
if (multipleSelection.value.length === 0) {
ElMessage({
type: 'warning',
message: '请选择要删除的数据'
})
return
}
multipleSelection.value &&
multipleSelection.value.map(item => {
IDs.push(item.ID)
})
const res = await deleteSourcePriceByIds({ IDs })
if (res.code === 0) {
ElMessage({
type: 'success',
message: '删除成功'
})
if (tableData.value.length === IDs.length && page.value > 1) {
page.value--
}
getTableData()
}
})
}
//
const type = ref('')
//
const updateSourcePriceFunc = async(row) => {
const res = await findSourcePrice({ ID: row.ID })
type.value = 'update'
if (res.code === 0) {
formData.value = res.data.resourcePrice
dialogFormVisible.value = true
}
}
//
const deleteSourcePriceFunc = async(row) => {
const res = await deleteSourcePrice({ ID: row.ID })
if (res.code === 0) {
ElMessage({
type: 'success',
message: '删除成功'
})
if (tableData.value.length === 1 && page.value > 1) {
page.value--
}
getTableData()
}
}
//
const dialogFormVisible = ref(false)
//
const detailShow = ref(false)
const crawl100ppiDetail = ref(false)
//
const openDetailShow = () => {
detailShow.value = true
}
//
const getDetails = async(row) => {
//
const res = await findSourcePrice({ ID: row.ID })
if (res.code === 0) {
formData.value = res.data.resourcePrice
openDetailShow()
}
}
//
const closeDetailShow = () => {
detailShow.value = false
formData.value = {
crawTable: '',
crawTableId: 0,
productId: 0,
productPriceId: 0,
companyPriceId: 0,
norm: '',
areaId: 0,
areaFullname: '',
producter: '',
priceType: false,
price: 0,
priceUnit: '',
companyName: '',
publishDate: new Date(),
}
}
const openCrawl100ppiShow = () => {
crawl100ppiDetail.value = true
}
//
const closeCrawl100ppiShow = () => {
crawl100ppiDetail.value = false
formData.value = {
code: '',
name: '',
norm: '',
producer: '',
priceType: '',
priceUnit: '',
price: '',
areaDetail: '',
dealer: '',
publishDate: '',
uniqueCode: '',
crawlTime: '',
status: 0,
syncError: '',
}
}
//
const getCrawlData = async(row) => {
//
if (row.crawTable === 'nzhq_crawl_100ppi') {
const res = await findCrawl100ppi({ ID: row.crawTableId })
if (res.code === 0) {
formData.value = res.data.recrawl100ppi
openCrawl100ppiShow()
}
}
}
//
const openDialog = () => {
type.value = 'create'
dialogFormVisible.value = true
}
//
const closeDialog = () => {
dialogFormVisible.value = false
formData.value = {
crawTable: '',
crawTableId: 0,
productId: 0,
productPriceId: 0,
companyPriceId: 0,
norm: '',
areaId: 0,
areaFullname: '',
producter: '',
priceType: false,
price: 0,
priceUnit: '',
companyName: '',
publishDate: new Date(),
}
}
//
const enterDialog = async() => {
elFormRef.value?.validate(async(valid) => {
if (!valid) return
let res
switch (type.value) {
case 'create':
res = await createSourcePrice(formData.value)
break
case 'update':
res = await updateSourcePrice(formData.value)
break
default:
res = await createSourcePrice(formData.value)
break
}
if (res.code === 0) {
ElMessage({
type: 'success',
message: '创建/更改成功'
})
closeDialog()
getTableData()
}
})
}
</script>
<style>
</style>

View File

@ -1,149 +0,0 @@
<template>
<div>
<div class="gva-form-box">
<el-form :model="formData" ref="elFormRef" label-position="right" :rules="rule" label-width="80px">
<el-form-item label="爬虫表:" prop="crawTable">
<el-input v-model="formData.crawTable" :clearable="true" placeholder="请输入爬虫表" />
</el-form-item>
<el-form-item label="爬虫表Id:" prop="crawTableId">
<el-input v-model.number="formData.crawTableId" :clearable="true" placeholder="请输入爬虫表Id" />
</el-form-item>
<el-form-item label="产品Id:" prop="productId">
<el-input v-model.number="formData.productId" :clearable="true" placeholder="请输入" />
</el-form-item>
<el-form-item label="产品价格Id:" prop="productPriceId">
<el-input v-model.number="formData.productPriceId" :clearable="true" placeholder="请输入" />
</el-form-item>
<el-form-item label="公司价格Id:" prop="companyPriceId">
<el-input v-model.number="formData.companyPriceId" :clearable="true" placeholder="请输入" />
</el-form-item>
<el-form-item label="规格:" prop="norm">
<el-input v-model="formData.norm" :clearable="true" placeholder="请输入规格" />
</el-form-item>
<el-form-item label="地区Id:" prop="areaId">
<el-input v-model.number="formData.areaId" :clearable="true" placeholder="请输入" />
</el-form-item>
<el-form-item label="地区:" prop="areaFullname">
<el-input v-model="formData.areaFullname" :clearable="true" placeholder="请输入地区" />
</el-form-item>
<el-form-item label="品牌:" prop="producter">
<el-input v-model="formData.producter" :clearable="true" placeholder="请输入品牌" />
</el-form-item>
<el-form-item label="价格类型:" prop="priceType">
<el-switch v-model="formData.priceType" active-color="#13ce66" inactive-color="#ff4949" active-text=""
inactive-text="否" clearable></el-switch>
</el-form-item>
<el-form-item label="价格:" prop="price">
<el-input-number v-model="formData.price" :precision="2" :clearable="true"></el-input-number>
</el-form-item>
<el-form-item label="单位:" prop="priceUnit">
<el-input v-model="formData.priceUnit" :clearable="true" placeholder="请输入单位" />
</el-form-item>
<el-form-item label="公司:" prop="companyName">
<el-input v-model="formData.companyName" :clearable="true" placeholder="请输入公司" />
</el-form-item>
<el-form-item label="发布日期:" prop="publishDate">
<el-date-picker v-model="formData.publishDate" type="date" placeholder="选择日期"
:clearable="true"></el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="save">保存</el-button>
<el-button type="primary" @click="back">返回</el-button>
</el-form-item>
</el-form>
</div>
</div>
</template>
<script setup>
import {
createSourcePrice,
updateSourcePrice,
findSourcePrice
} from '@/api/sourcePrice'
defineOptions({
name: 'SourcePriceForm'
})
//
import { getDictFunc } from '@/utils/format'
import { useRoute, useRouter } from "vue-router"
import { ElMessage } from 'element-plus'
import { ref, reactive } from 'vue'
const route = useRoute()
const router = useRouter()
const type = ref('')
const formData = ref({
crawTable: '',
crawTableId: 0,
productId: 0,
productPriceId: 0,
companyPriceId: 0,
norm: '',
areaId: 0,
areaFullname: '',
producter: '',
priceType: false,
price: 0,
priceUnit: '',
companyName: '',
publishDate: new Date(),
})
//
const rule = reactive({
})
const elFormRef = ref()
//
const init = async () => {
// urlID find createupdate idurl
if (route.query.id) {
const res = await findSourcePrice({ ID: route.query.id })
if (res.code === 0) {
formData.value = res.data.resourcePrice
type.value = 'update'
}
} else {
type.value = 'create'
}
}
init()
//
const save = async() => {
elFormRef.value?.validate( async (valid) => {
if (!valid) return
let res
switch (type.value) {
case 'create':
res = await createSourcePrice(formData.value)
break
case 'update':
res = await updateSourcePrice(formData.value)
break
default:
res = await createSourcePrice(formData.value)
break
}
if (res.code === 0) {
ElMessage({
type: 'success',
message: '创建/更改成功'
})
}
})
}
//
const back = () => {
router.go(-1)
}
</script>
<style>
</style>

View File

@ -1,387 +0,0 @@
<template>
<div>
<div class="gva-search-box">
<el-form ref="elSearchFormRef" :inline="true" :model="searchInfo" class="demo-form-inline"
@keyup.enter="onSubmit">
<el-form-item label="ID" prop="id">
<template #label>
<span>ID</span>
</template>
<el-input v-model="searchInfo.id" type="input" />
</el-form-item>
<el-form-item label="上级Id" prop="pid">
<template #label>
<span>上级Id</span>
</template>
<el-input v-model="searchInfo.pid" type="input" />
</el-form-item>
<el-form-item label="地区级别" prop="level">
<template #label>
<span>地区级别</span>
</template>
<el-input v-model="searchInfo.level" type="input" />
</el-form-item>
<el-form-item>
<el-button type="primary" icon="search" @click="onSubmit">查询</el-button>
<el-button icon="refresh" @click="onReset">重置</el-button>
</el-form-item>
</el-form>
</div>
<div class="gva-table-box">
<div class="gva-btn-list">
<el-button type="primary" icon="plus" @click="openDialog">新增</el-button>
<el-button icon="delete" style="margin-left: 10px;" :disabled="!multipleSelection.length"
@click="onDelete">删除</el-button>
</div>
<el-table ref="multipleTable" style="width: 100%" tooltip-effect="dark" :data="tableData" row-key="ID"
@selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" />
<el-table-column align="left" label="ID" prop="ID" width="120" />
<el-table-column align="left" label="上级Id" prop="pid" width="120" />
<el-table-column align="left" label="地区名称" prop="name" width="300" />
<el-table-column align="left" label="是否显示" prop="visible" width="120">
<template #default="scope">{{ formatBoolean(scope.row.visible) }}</template>
</el-table-column>
<el-table-column align="left" label="排序值" prop="weight" width="120" />
<el-table-column align="left" label="地区级别" prop="level" width="120" />
<el-table-column align="left" label="操作" fixed="right" min-width="240">
<template #default="scope">
<el-button type="primary" link class="table-button" @click="getDetails(scope.row)">
<el-icon style="margin-right: 5px">
<InfoFilled />
</el-icon>
查看详情
</el-button>
<el-button type="primary" link icon="edit" class="table-button"
@click="updateSystemAreaFunc(scope.row)">变更</el-button>
<el-button type="primary" link icon="delete" @click="deleteRow(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
<div class="gva-pagination">
<el-pagination layout="total, sizes, prev, pager, next, jumper" :current-page="page" :page-size="pageSize"
:page-sizes="[10, 30, 50, 100]" :total="total" @current-change="handleCurrentChange"
@size-change="handleSizeChange" />
</div>
</div>
<el-drawer v-model="dialogFormVisible" size="800" :show-close="false" :before-close="closeDialog">
<template #header>
<div class="flex justify-between items-center">
<span class="text-lg">{{ type==='create'?'添加':'修改' }}</span>
<div>
<el-button type="primary" @click="enterDialog"> </el-button>
<el-button @click="closeDialog"> </el-button>
</div>
</div>
</template>
<el-form ref="elFormRef" :model="formData" label-position="top" :rules="rule" label-width="80px">
<el-form-item label="上级Id:" prop="pid">
<el-input v-model.number="formData.pid" :clearable="true" placeholder="请输入上级Id" />
</el-form-item>
<el-form-item label="地区名称:" prop="name">
<el-input v-model="formData.name" :clearable="true" placeholder="请输入地区名称" />
</el-form-item>
<el-form-item label="是否显示:" prop="visible">
<el-switch v-model="formData.visible" active-color="#13ce66" inactive-color="#ff4949" active-text=""
inactive-text="否" clearable />
</el-form-item>
<el-form-item label="排序值:" prop="weight">
<el-input v-model.number="formData.weight" :clearable="true" placeholder="请输入排序值" />
</el-form-item>
<el-form-item label="地区级别:" prop="level">
<el-input v-model.number="formData.level" :clearable="true" placeholder="请输入地区级别" />
</el-form-item>
</el-form>
</el-drawer>
<el-drawer v-model="detailShow" size="800" :before-close="closeDetailShow" destroy-on-close>
<template #header>
<div class="flex justify-between items-center">
<span class="text-lg">查看详情</span>
</div>
</template>
<el-descriptions :column="1" border>
<el-descriptions-item label="ID">
{{ formData.ID }}
</el-descriptions-item>
<el-descriptions-item label="上级Id">
{{ formData.pid }}
</el-descriptions-item>
<el-descriptions-item label="地区名称">
{{ formData.name }}
</el-descriptions-item>
<el-descriptions-item label="是否显示">
{{ formatBoolean(formData.visible) }}
</el-descriptions-item>
<el-descriptions-item label="排序值">
{{ formData.weight }}
</el-descriptions-item>
<el-descriptions-item label="地区级别">
{{ formData.level }}
</el-descriptions-item>
</el-descriptions>
</el-drawer>
</div>
</template>
<script setup>
import {
createSystemArea,
deleteSystemArea,
deleteSystemAreaByIds,
updateSystemArea,
findSystemArea,
getSystemAreaList
} from '@/api/systemArea'
//
import { formatBoolean } from '@/utils/format'
import { ElMessage, ElMessageBox } from 'element-plus'
import { ref, reactive } from 'vue'
defineOptions({
name: 'SystemArea'
})
//
const formData = ref({
id: 0,
pid: 0,
name: '',
visible: false,
weight: 0,
level: 0,
})
//
const rule = reactive({})
const elFormRef = ref()
const elSearchFormRef = ref()
// =========== ===========
const page = ref(1)
const total = ref(0)
const pageSize = ref(10)
const tableData = ref([])
const searchInfo = ref({})
//
const onReset = () => {
searchInfo.value = {}
getTableData()
}
//
const onSubmit = () => {
elSearchFormRef.value?.validate(async(valid) => {
if (!valid) return
page.value = 1
pageSize.value = 10
if (searchInfo.value.visible === '') {
searchInfo.value.visible = null
}
if (searchInfo.value.pid === '') {
searchInfo.value.pid = null
}
getTableData()
})
}
//
const handleSizeChange = (val) => {
pageSize.value = val
getTableData()
}
//
const handleCurrentChange = (val) => {
page.value = val
getTableData()
}
//
const getTableData = async() => {
const table = await getSystemAreaList({ page: page.value, pageSize: pageSize.value, ...searchInfo.value })
if (table.code === 0) {
tableData.value = table.data.list
total.value = table.data.total
page.value = table.data.page
pageSize.value = table.data.pageSize
}
}
getTableData()
// ============== ===============
//
const setOptions = async() => {
}
//
setOptions()
//
const multipleSelection = ref([])
//
const handleSelectionChange = (val) => {
multipleSelection.value = val
}
//
const deleteRow = (row) => {
ElMessageBox.confirm('确定要删除吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
deleteSystemAreaFunc(row)
})
}
//
const onDelete = async() => {
ElMessageBox.confirm('确定要删除吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(async() => {
const IDs = []
if (multipleSelection.value.length === 0) {
ElMessage({
type: 'warning',
message: '请选择要删除的数据'
})
return
}
multipleSelection.value &&
multipleSelection.value.map(item => {
IDs.push(item.ID)
})
const res = await deleteSystemAreaByIds({ IDs })
if (res.code === 0) {
ElMessage({
type: 'success',
message: '删除成功'
})
if (tableData.value.length === IDs.length && page.value > 1) {
page.value--
}
getTableData()
}
})
}
//
const type = ref('')
//
const updateSystemAreaFunc = async(row) => {
const res = await findSystemArea({ ID: row.ID })
type.value = 'update'
if (res.code === 0) {
formData.value = res.data.resystemArea
dialogFormVisible.value = true
}
}
//
const deleteSystemAreaFunc = async(row) => {
const res = await deleteSystemArea({ ID: row.ID })
if (res.code === 0) {
ElMessage({
type: 'success',
message: '删除成功'
})
if (tableData.value.length === 1 && page.value > 1) {
page.value--
}
getTableData()
}
}
//
const dialogFormVisible = ref(false)
//
const detailShow = ref(false)
//
const openDetailShow = () => {
detailShow.value = true
}
//
const getDetails = async(row) => {
//
const res = await findSystemArea({ ID: row.ID })
if (res.code === 0) {
formData.value = res.data.resystemArea
openDetailShow()
}
}
//
const closeDetailShow = () => {
detailShow.value = false
formData.value = {
pid: 0,
name: '',
visible: false,
weight: 0,
level: 0,
}
}
//
const openDialog = () => {
type.value = 'create'
dialogFormVisible.value = true
}
//
const closeDialog = () => {
dialogFormVisible.value = false
formData.value = {
pid: 0,
name: '',
visible: false,
weight: 0,
level: 0,
}
}
//
const enterDialog = async() => {
elFormRef.value?.validate(async(valid) => {
if (!valid) return
let res
switch (type.value) {
case 'create':
res = await createSystemArea(formData.value)
break
case 'update':
res = await updateSystemArea(formData.value)
break
default:
res = await createSystemArea(formData.value)
break
}
if (res.code === 0) {
ElMessage({
type: 'success',
message: '创建/更改成功'
})
closeDialog()
getTableData()
}
})
}
</script>
<style>
</style>

View File

@ -1,111 +0,0 @@
<template>
<div>
<div class="gva-form-box">
<el-form :model="formData" ref="elFormRef" label-position="right" :rules="rule" label-width="80px">
<el-form-item label="上级Id:" prop="pid">
<el-input v-model.number="formData.pid" :clearable="true" placeholder="请输入" />
</el-form-item>
<el-form-item label="地区名称:" prop="name">
<el-input v-model="formData.name" :clearable="true" placeholder="请输入地区名称" />
</el-form-item>
<el-form-item label="是否显示:" prop="visible">
<el-switch v-model="formData.visible" active-color="#13ce66" inactive-color="#ff4949" active-text="" inactive-text="" clearable ></el-switch>
</el-form-item>
<el-form-item label="排序值:" prop="weight">
<el-input v-model.number="formData.weight" :clearable="true" placeholder="请输入" />
</el-form-item>
<el-form-item label="地区级别:" prop="level">
<el-input v-model.number="formData.level" :clearable="true" placeholder="请输入" />
</el-form-item>
<el-form-item>
<el-button type="primary" @click="save">保存</el-button>
<el-button type="primary" @click="back">返回</el-button>
</el-form-item>
</el-form>
</div>
</div>
</template>
<script setup>
import {
createSystemArea,
updateSystemArea,
findSystemArea
} from '@/api/systemArea'
defineOptions({
name: 'SystemAreaForm'
})
//
import { getDictFunc } from '@/utils/format'
import { useRoute, useRouter } from "vue-router"
import { ElMessage } from 'element-plus'
import { ref, reactive } from 'vue'
const route = useRoute()
const router = useRouter()
const type = ref('')
const formData = ref({
pid: 0,
name: '',
visible: false,
weight: 0,
level: 0,
})
//
const rule = reactive({
})
const elFormRef = ref()
//
const init = async () => {
// urlID find createupdate idurl
if (route.query.id) {
const res = await findSystemArea({ ID: route.query.id })
if (res.code === 0) {
formData.value = res.data.resystemArea
type.value = 'update'
}
} else {
type.value = 'create'
}
}
init()
//
const save = async() => {
elFormRef.value?.validate( async (valid) => {
if (!valid) return
let res
switch (type.value) {
case 'create':
res = await createSystemArea(formData.value)
break
case 'update':
res = await updateSystemArea(formData.value)
break
default:
res = await createSystemArea(formData.value)
break
}
if (res.code === 0) {
ElMessage({
type: 'success',
message: '创建/更改成功'
})
}
})
}
//
const back = () => {
router.go(-1)
}
</script>
<style>
</style>