|
@@ -6,41 +6,36 @@
|
|
|
<a-row :gutter="15">
|
|
|
<a-col :md="6" :sm="24">
|
|
|
<a-form-item label="产品编码">
|
|
|
- <a-input id="productInfoList-bundleName" v-model.trim="queryParam.bundleName" allowClear placeholder="请输入产品编码"/>
|
|
|
+ <a-input id="productInfoList-productCode" v-model.trim="queryParam.productCode" allowClear placeholder="请输入产品编码"/>
|
|
|
</a-form-item>
|
|
|
</a-col>
|
|
|
<a-col :md="6" :sm="24">
|
|
|
<a-form-item label="产品名称">
|
|
|
- <a-input id="productInfoList-bundleName" v-model.trim="queryParam.bundleName" allowClear placeholder="请输入产品名称"/>
|
|
|
+ <a-input id="productInfoList-productName" v-model.trim="queryParam.productName" allowClear placeholder="请输入产品名称"/>
|
|
|
</a-form-item>
|
|
|
</a-col>
|
|
|
<a-col :md="6" :sm="24">
|
|
|
<a-form-item label="原厂编码">
|
|
|
- <a-input id="productInfoList-bundleName" v-model.trim="queryParam.bundleName" allowClear placeholder="请输入原厂编码"/>
|
|
|
+ <a-input id="productInfoList-origCode" v-model.trim="queryParam.origCode" allowClear placeholder="请输入原厂编码"/>
|
|
|
</a-form-item>
|
|
|
</a-col>
|
|
|
<template v-if="advanced">
|
|
|
<a-col :md="6" :sm="24">
|
|
|
- <a-form-item label="产品品牌">
|
|
|
- <a-select placeholder="请选择" id="productInfoList-state" allowClear v-model="queryParam.dataSourceNo" :showSearch="true" option-filter-prop="children" :filter-option="filterOption">
|
|
|
- <a-select-option v-for="item in brandData" :key="item.salesChannelNo" :value="item.salesChannelNo">{{ item.salesChannelName }}</a-select-option>
|
|
|
- </a-select>
|
|
|
- </a-form-item>
|
|
|
- </a-col>
|
|
|
- <a-col :md="6" :sm="24">
|
|
|
- <a-form-item label="产品类别">
|
|
|
- <a-cascader :options="typeData" id="productInfoList-state" placeholder="请选择产品类别" allowClear v-model="queryParam.brand" />
|
|
|
- </a-form-item>
|
|
|
+ <a-form-item label="产品品牌">
|
|
|
+ <a-select placeholder="请选择" id="productInfoList-productBrandSn" allowClear v-model="queryParam.productBrandSn" :showSearch="true" option-filter-prop="children" :filter-option="filterOption">
|
|
|
+ <a-select-option v-for="item in productBrandList" :key="item.productBrandSn" :value="item.productBrandSn">{{ item.productBrandName }}</a-select-option>
|
|
|
+ </a-select>
|
|
|
+ </a-form-item>
|
|
|
</a-col>
|
|
|
<a-col :md="6" :sm="24">
|
|
|
- <a-form-item label="状态">
|
|
|
- <v-select code="CHECK_ENABLE_STATE" id="productInfoList-state" v-model="queryParam.state" allowClear placeholder="请选择状态"></v-select>
|
|
|
- </a-form-item>
|
|
|
+ <a-form-item label="产品类别">
|
|
|
+ <a-cascader @change="changeProductType" change-on-select :options="productTypeList" :fieldNames="{ label: 'productTypeName', value: 'id', children: 'children' }" id="productInfoList-productType" placeholder="请选择产品类别" allowClear />
|
|
|
+ </a-form-item>
|
|
|
</a-col>
|
|
|
<a-col :md="6" :sm="24">
|
|
|
- <a-form-item label="产品来源">
|
|
|
- <v-select code="CHECK_ENABLE_STATE" id="productInfoList-state" v-model="queryParam.state" allowClear placeholder="请选择产品来源"></v-select>
|
|
|
- </a-form-item>
|
|
|
+ <a-form-item label="状态">
|
|
|
+ <v-select code="ENABLED_FLAG" id="productInfoList-enabledFlag" v-model="queryParam.enabledFlag" allowClear placeholder="请选择状态"></v-select>
|
|
|
+ </a-form-item>
|
|
|
</a-col>
|
|
|
<a-col :md="6" :sm="24">
|
|
|
<a-form-item label="创建时间">
|
|
@@ -48,7 +43,7 @@
|
|
|
style="width:100%"
|
|
|
id="customerManagementList-creatTime"
|
|
|
:disabledDate="disabledDate"
|
|
|
- v-model="creatTime"
|
|
|
+ @change="creatTimechange"
|
|
|
:format="dateFormat"
|
|
|
:placeholder="['开始时间', '结束时间']" />
|
|
|
</a-form-item>
|
|
@@ -71,7 +66,6 @@
|
|
|
<div class="table-operator">
|
|
|
<a-button id="productInfoList-add" type="primary" @click="handleEdit()">新增产品</a-button>
|
|
|
<a-button id="productInfoList-import" @click="handleImport" style="margin: 0 15px;">批量导入产品</a-button>
|
|
|
- <a-button id="productInfoList-state" @click="handleEditState">批量修改状态</a-button>
|
|
|
</div>
|
|
|
<!-- 列表 -->
|
|
|
<s-table
|
|
@@ -82,16 +76,12 @@
|
|
|
:columns="columns"
|
|
|
:data="loadData"
|
|
|
bordered>
|
|
|
- <!-- 产品编码 -->
|
|
|
- <template slot="productCode" slot-scope="text, record">
|
|
|
- <a-badge count="箭是冠" :offset="[28,-10]" :number-style="{ backgroundColor: '#fff', color: '#ed1c24', boxShadow: '0 0 0 1px #d9d9d9 inset', }" > {{record.productCode}} </a-badge>
|
|
|
- </template>
|
|
|
<!-- 产品类别 -->
|
|
|
<!-- 自定义表头 -->
|
|
|
<template slot="productTypeCustomTitle">
|
|
|
<a-tooltip placement="top">
|
|
|
<template slot="title">
|
|
|
- <span>列表中只显示第三级分类的名称,鼠标移动至文字上,查看上级分类</span>
|
|
|
+ <span>列表中只显示第三级分类的名称,鼠标移动至文字上,查看上级分类。“>”为分隔符</span>
|
|
|
</template>
|
|
|
产品类别<a-icon type="question-circle" :style="{ color: '#ed1c24', marginLeft: '10px' }" />
|
|
|
</a-tooltip>
|
|
@@ -99,14 +89,20 @@
|
|
|
<template slot="productType" slot-scope="text, record">
|
|
|
<a-tooltip placement="top">
|
|
|
<template slot="title">
|
|
|
- <span>{{record.productType}}</span>
|
|
|
+ <span>{{record.productTypeName}}</span>
|
|
|
</template>
|
|
|
- {{record.productType}}
|
|
|
+ {{record.productTypeName3}}
|
|
|
</a-tooltip>
|
|
|
</template>
|
|
|
<!-- 状态 -->
|
|
|
- <template slot="state" slot-scope="text, record">
|
|
|
- <span>{{record.state == 1 ? '已启用' : '已禁用'}}</span>
|
|
|
+ <template slot="enabledFlag" slot-scope="text, record">
|
|
|
+ <a-switch
|
|
|
+ id="productBrandList-enable"
|
|
|
+ checkedChildren="启用"
|
|
|
+ unCheckedChildren="禁用"
|
|
|
+ @change="changeStatus(record)"
|
|
|
+ :checked="record.enabledFlag == 1 ? true : false" />
|
|
|
+ <!-- <span :class="record.enabledFlag==1?'green':'red'" v-else> {{ record.enabledFlag==1? '已启用': '已禁用' }} </span> -->
|
|
|
</template>
|
|
|
<!-- 操作 -->
|
|
|
<template slot="action" slot-scope="text, record">
|
|
@@ -121,7 +117,9 @@
|
|
|
|
|
|
<script>
|
|
|
import moment from 'moment'
|
|
|
-// import { customerBundleDelayList, customerBundleExportDelay } from '@/api/FinancialManagement'
|
|
|
+import { dealerProductBrandQuery } from '@/api/dealerProductBrand'
|
|
|
+import { dealerProductTypeQuery } from '@/api/dealerProductType'
|
|
|
+import { dealerProductList, dealerProductUpdate, dealerProductExport } from '@/api/dealerProduct'
|
|
|
import { STable, VSelect } from '@/components'
|
|
|
import productInfoDetailModal from './detailModal.vue'
|
|
|
export default {
|
|
@@ -130,58 +128,53 @@ export default {
|
|
|
return {
|
|
|
advanced: false, // 高级搜索 展开/关闭
|
|
|
queryParam: { // 查询条件
|
|
|
- bundleName: '', // 供应商名称
|
|
|
- state: undefined, // 状态
|
|
|
+ productCode: '', // 产品编码
|
|
|
+ productName: '', // 产品名称
|
|
|
+ origCode: '', // 原厂编码
|
|
|
+ productBrandSn: undefined, // 产品品牌
|
|
|
+ productTypeSn1: '', // 产品一级类别
|
|
|
+ productTypeSn2: '', // 产品二级类别
|
|
|
+ productTypeSn3: '', // 产品三级类别
|
|
|
+ enabledFlag: undefined, // 状态
|
|
|
+ beginDate: '', // 创建时间 开始时间
|
|
|
+ endDate: '', // 创建时间 结束时间
|
|
|
},
|
|
|
disabled: false, // 查询、重置按钮是否可操作
|
|
|
exportLoading: false, // 导出loading
|
|
|
- brandData: [], // 下拉数据
|
|
|
- typeData: [], // 产品类别 下拉数据
|
|
|
dateFormat: 'YYYY-MM-DD',
|
|
|
- creatTime: [], // 创建时间
|
|
|
columns: [
|
|
|
{ title: '序号', dataIndex: 'no', width: 70, align: 'center' },
|
|
|
- { title: '产品编码', scopedSlots: { customRender: 'productCode' }, width: 200, align: 'center' },
|
|
|
- { title: '产品名称', dataIndex: 'productOldNum', width: 160, align: 'center', ellipsis: true, customRender: function (text) { return text || '--' } },
|
|
|
- { title: '原厂编码', dataIndex: 'productBrand', width: 200, align: 'center', customRender: function (text) { return text || '--' } },
|
|
|
- { title: '产品品牌', dataIndex: 'productType', width: 200, align: 'center', customRender: function (text) { return text || '--' } },
|
|
|
+ { title: '产品编码', dataIndex: 'productCode', width: 200, align: 'center' },
|
|
|
+ { title: '产品名称', dataIndex: 'productName', width: 160, align: 'center', ellipsis: true, customRender: function (text) { return text || '--' } },
|
|
|
+ { title: '原厂编码', dataIndex: 'origCode', width: 200, align: 'center', customRender: function (text) { return text || '--' } },
|
|
|
+ { title: '产品品牌', dataIndex: 'productBrandName', width: 200, align: 'center', customRender: function (text) { return text || '--' } },
|
|
|
{ slots: { title: 'productTypeCustomTitle' }, scopedSlots: { customRender: 'productType' }, width: 180, align: 'center' },
|
|
|
- { title: '终端价(售价)', dataIndex: 'inventoryMoney', width: 180, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
|
|
|
- { title: '创建时间', dataIndex: 'createTime', width: 180, align: 'center' },
|
|
|
- { title: '状态', scopedSlots: { customRender: 'state' }, width: 180, align: 'center' },
|
|
|
+ { title: '终端价', dataIndex: 'terminalPrice', width: 180, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
|
|
|
+ { title: '创建时间', dataIndex: 'createDate', width: 180, align: 'center' },
|
|
|
+ { title: '状态', scopedSlots: { customRender: 'enabledFlag' }, width: 180, align: 'center' },
|
|
|
{ title: '操作', scopedSlots: { customRender: 'action' }, width: 240, align: 'center' }
|
|
|
],
|
|
|
// 加载数据方法 必须为 Promise 对象
|
|
|
loadData: parameter => {
|
|
|
this.disabled = true
|
|
|
- // return customerBundleDelayList( Object.assign(parameter, this.queryParam) ).then(res => {
|
|
|
- // const data = res.data
|
|
|
- // const no = (data.pageNo - 1) * data.pageSize
|
|
|
- // for (var i = 0; i < data.list.length; i++) {
|
|
|
- // data.list[i].no = no + i + 1
|
|
|
- // }
|
|
|
- // this.disabled = false
|
|
|
- // return data
|
|
|
- // })
|
|
|
- const _this = this
|
|
|
- return new Promise(function(resolve, reject){
|
|
|
- const data = {
|
|
|
- pageNo: 1,
|
|
|
- pageSize: 10,
|
|
|
- list: [
|
|
|
- { id: '1', productCode: '产品编码12', productNum: 'jgqp11111111111', productName: '产品1', productOldNum: 'jgqp111123545', productBrand: '箭冠品牌', productType: '产品分类1', inventoryNum: '5', inventoryMoney: '122' }
|
|
|
- ]
|
|
|
- }
|
|
|
+ return dealerProductList( Object.assign(parameter, this.queryParam) ).then(res => {
|
|
|
+ const data = res.data
|
|
|
const no = (data.pageNo - 1) * data.pageSize
|
|
|
for (var i = 0; i < data.list.length; i++) {
|
|
|
data.list[i].no = no + i + 1
|
|
|
+ const productTypeName1 = data.list[i].productTypeName1 ? data.list[i].productTypeName1 : ''
|
|
|
+ const productTypeName2 = data.list[i].productTypeName2 ? ' > ' + data.list[i].productTypeName2 : ''
|
|
|
+ const productTypeName3 = data.list[i].productTypeName3 ? ' > ' + data.list[i].productTypeName3 : ''
|
|
|
+ data.list[i].productTypeName = productTypeName1 + productTypeName2 + productTypeName3
|
|
|
}
|
|
|
- _this.disabled = false
|
|
|
- resolve(data)
|
|
|
+ this.disabled = false
|
|
|
+ return data
|
|
|
})
|
|
|
},
|
|
|
openModal: false, // 查看客户详情 弹框
|
|
|
- itemId: '' // 当前产品id
|
|
|
+ itemId: '', // 当前产品id
|
|
|
+ productBrandList: [], // 品牌下拉数据
|
|
|
+ productTypeList: [], // 类别下拉数据
|
|
|
}
|
|
|
},
|
|
|
methods: {
|
|
@@ -189,30 +182,37 @@ export default {
|
|
|
disabledDate (date, dateStrings) {
|
|
|
return date && date.valueOf() > Date.now()
|
|
|
},
|
|
|
+ // 创建时间 change
|
|
|
+ creatTimechange(dates, dateStrings){
|
|
|
+ this.queryParam.beginDate = dateStrings[0]
|
|
|
+ this.queryParam.endDate = dateStrings[1]
|
|
|
+ },
|
|
|
// 重置
|
|
|
resetSearchForm () {
|
|
|
- this.queryParam.orderBundleNo = ''
|
|
|
- this.queryParam.orderBundle.custMobile = ''
|
|
|
- this.queryParam.bundleName = ''
|
|
|
- this.queryParam.itemName = ''
|
|
|
- this.oldTime = undefined
|
|
|
- this.newTime = undefined
|
|
|
+ this.queryParam.productCode = ''
|
|
|
+ this.queryParam.productName = ''
|
|
|
+ this.queryParam.origCode = ''
|
|
|
+ this.queryParam.productBrandSn = undefined
|
|
|
+ this.queryParam.productTypeSn1 = ''
|
|
|
+ this.queryParam.productTypeSn2 = ''
|
|
|
+ this.queryParam.productTypeSn3 = ''
|
|
|
+ this.queryParam.enabledFlag = undefined
|
|
|
+ this.queryParam.beginDate = ''
|
|
|
+ this.queryParam.endDate = ''
|
|
|
this.$refs.table.refresh(true)
|
|
|
},
|
|
|
- // 新增/编辑
|
|
|
- handleEdit(row){
|
|
|
- if(row){ // 编辑
|
|
|
- this.$router.push({ path: `/productManagement/productInfo/edit/${row.id}` })
|
|
|
- }else{ // 新增
|
|
|
- this.$router.push({ path: '/productManagement/productInfo/add' })
|
|
|
- }
|
|
|
- },
|
|
|
+ // 新增/编辑
|
|
|
+ handleEdit(row){
|
|
|
+ if(row){ // 编辑
|
|
|
+ this.$router.push({ path: `/productManagement/productInfo/edit/${row.id}` })
|
|
|
+ }else{ // 新增
|
|
|
+ this.$router.push({ path: '/productManagement/productInfo/add' })
|
|
|
+ }
|
|
|
+ },
|
|
|
// 批量导入
|
|
|
handleImport(){
|
|
|
|
|
|
},
|
|
|
- // 批量修改
|
|
|
- handleEditState(){},
|
|
|
filterOption(input, option) {
|
|
|
return (
|
|
|
option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
|
|
@@ -228,25 +228,45 @@ export default {
|
|
|
this.itemId = ''
|
|
|
this.openModal = false
|
|
|
},
|
|
|
- // 导出
|
|
|
- handleExport () {
|
|
|
- const params = this.queryParam
|
|
|
- if (this.oldTime && this.oldTime.length > 0) {
|
|
|
- params.beginOldExpiryDate = moment(this.oldTime[0]).format('YYYY-MM-DD')
|
|
|
- params.endOldExpirydDate = moment(this.oldTime[1]).format('YYYY-MM-DD')
|
|
|
+ // 产品类别 change
|
|
|
+ changeProductType(val, opt){
|
|
|
+ this.queryParam.productTypeSn1 = val[0] ? val[0] : ''
|
|
|
+ this.queryParam.productTypeSn2 = val[1] ? val[1] : ''
|
|
|
+ this.queryParam.productTypeSn3 = val[2] ? val[2] : ''
|
|
|
+ },
|
|
|
+ // 启用 禁用
|
|
|
+ changeStatus (record) {
|
|
|
+ if (record.enabledFlag=='1') {
|
|
|
+ this.$confirm({
|
|
|
+ title: '提示',
|
|
|
+ content: '产品被禁用后,不能再销售,确定禁用吗?',
|
|
|
+ onOk: () => {
|
|
|
+ this.setEnable(record)
|
|
|
+ }
|
|
|
+ })
|
|
|
} else {
|
|
|
- params.beginOldExpiryDate = ''
|
|
|
- params.endOldExpirydDate = ''
|
|
|
+ this.setEnable(record)
|
|
|
}
|
|
|
- if (this.newTime && this.newTime.length > 0) {
|
|
|
- params.beginDate = moment(this.newTime[0]).format('YYYY-MM-DD')
|
|
|
- params.endDate = moment(this.newTime[1]).format('YYYY-MM-DD')
|
|
|
- } else {
|
|
|
- params.beginDate = ''
|
|
|
- params.endDate = ''
|
|
|
+ },
|
|
|
+ // 启用 禁用
|
|
|
+ setEnable (record) {
|
|
|
+ const params = {
|
|
|
+ id: record.id,
|
|
|
+ enabledFlag: record.enabledFlag == 1 ? '0' : '1'
|
|
|
}
|
|
|
+ dealerProductUpdate(params).then(res => {
|
|
|
+ if (res.status == 200) {
|
|
|
+ this.$message.success(res.message)
|
|
|
+ this.$refs.table.refresh()
|
|
|
+ } else {
|
|
|
+ this.$refs.table.refresh()
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ // 导出
|
|
|
+ handleExport () {
|
|
|
this.exportLoading = true
|
|
|
- customerBundleExportDelay(params).then(res => {
|
|
|
+ dealerProductExport(this.queryParam).then(res => {
|
|
|
this.exportLoading = false
|
|
|
this.download(res)
|
|
|
})
|
|
@@ -258,11 +278,37 @@ export default {
|
|
|
link.style.display = 'none'
|
|
|
link.href = url
|
|
|
const a = moment().format('YYYYMMDDHHmmss')
|
|
|
- const fname = '产品信息表' + a
|
|
|
+ const fname = '自建产品列表' + a
|
|
|
link.setAttribute('download', fname + '.xlsx')
|
|
|
document.body.appendChild(link)
|
|
|
link.click()
|
|
|
- }
|
|
|
+ },
|
|
|
+ // 产品品牌 列表
|
|
|
+ getProductBrand(){
|
|
|
+ dealerProductBrandQuery({}).then(res => {
|
|
|
+ if(res.status == 200){
|
|
|
+ this.productBrandList = res.data
|
|
|
+ }else{
|
|
|
+ this.productBrandList = []
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ // 产品类别 列表
|
|
|
+ getProductType(){
|
|
|
+ dealerProductTypeQuery({}).then(res => {
|
|
|
+ if(res.status == 200){
|
|
|
+ this.productTypeList = res.data
|
|
|
+ }else{
|
|
|
+ this.productTypeList = []
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ },
|
|
|
+ beforeRouteEnter(to, from, next) {
|
|
|
+ next(vm => {
|
|
|
+ vm.getProductBrand()
|
|
|
+ vm.getProductType()
|
|
|
+ })
|
|
|
}
|
|
|
}
|
|
|
</script>
|