myTest383 4 months ago
parent
commit
4897a1dda4
  1. 81
      src/api/brand.js
  2. 47
      src/api/invoiceReview/invoiceReview.js
  3. BIN
      src/assets/home/bj_new.jpg
  4. 522
      src/views/appletBanner/appletBannerAdd.vue
  5. 25
      src/views/commodity/commodityAdd.vue
  6. 448
      src/views/login/login.vue
  7. 513
      src/views/orderreserve/index.vue
  8. 326
      src/views/pms/brand/components/BrandDetail.vue
  9. 573
      src/views/pms/brand/index.vue

81
src/api/brand.js

@ -1,53 +1,64 @@
import request from '@/utils/request' import request from '@/utils/request'
export function fetchList(params) { export function fetchList(params) {
return request({ return request({
url:'/pms/PmsBrand/list', url: '/pms/PmsBrand/list',
method:'get', method: 'get',
params:params params: params
}) })
} }
export function createBrand(data) { export function createBrand(data) {
return request({ return request({
url:'/pms/PmsBrand/create', url: '/pms/PmsBrand/create',
method:'post', method: 'post',
data:data data: data
}) })
} }
export function updateDelivery(data) {
return request({
url: '/pms/PmsBrand/update/delivery',
method: 'post',
params: data,
headers: {
'Content-Type': 'application/json'
}
})
}
export function updateShowStatus(data) { export function updateShowStatus(data) {
return request({ return request({
url:'/pms/PmsBrand/update/showStatus', url: '/pms/PmsBrand/update/showStatus',
method:'post', method: 'post',
data:data data: data
}) })
} }
export function updateFactoryStatus(data) { export function updateFactoryStatus(data) {
return request({ return request({
url:'/pms/PmsBrand/update/factoryStatus', url: '/pms/PmsBrand/update/factoryStatus',
method:'post', method: 'post',
data:data data: data
}) })
} }
export function deleteBrand(id) { export function deleteBrand(id) {
return request({ return request({
url:'/pms/PmsBrand/delete/'+id, url: '/pms/PmsBrand/delete/' + id,
method:'get', method: 'get',
}) })
} }
export function getBrand(id) { export function getBrand(id) {
return request({ return request({
url:'/pms/PmsBrand/'+id, url: '/pms/PmsBrand/' + id,
method:'get', method: 'get',
}) })
} }
export function updateBrand(id,data) { export function updateBrand(id, data) {
return request({ return request({
url:'/pms/PmsBrand/update/'+id, url: '/pms/PmsBrand/update/' + id,
method:'post', method: 'post',
data:data data: data
}) })
} }

47
src/api/invoiceReview/invoiceReview.js

@ -2,29 +2,30 @@ import request from '@/utils/request'
export default { export default {
// 查询分页列表 // 查询分页列表
listPage: function(params) { listPage: function(params) {
return request({ return request({
url: '/invoicerecords/listPage', url: '/invoicerecords/listPage',
method: 'post', method: 'post',
data: params, data: params,
}) })
}, },
// 获取订单详情 // 获取订单详情
getOrderDetails: function(params) { getOrderDetails: function(params) {
return request({ return request({
url: '/empsreservoorder/OrderDetailsNew/'+params, // url: '/empsreservoorder/OrderDetailsNew/'+params,
method: 'get' url: '/order/OrderDetailsNew/' + params,
}) method: 'get'
}, })
},
// 审核发票 // 审核发票
toExamine: function(params) { toExamine: function(params) {
return request({ return request({
url: '/invoicerecords/toExamine', url: '/invoicerecords/toExamine',
method: 'post', method: 'post',
data: params, data: params,
}) })
}, },
} }

BIN
src/assets/home/bj_new.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 374 KiB

522
src/views/appletBanner/appletBannerAdd.vue

@ -1,281 +1,299 @@
<template> <template>
<div> <div>
<div class="tab-header webtop"> <div class="tab-header webtop">
<!-- 标题 --> <!-- 标题 -->
<div>轮播图信息</div> <div>轮播图信息</div>
<!-- start 添加修改按钮 --> <!-- start 添加修改按钮 -->
<div> <div>
<el-button type="primary" size="small" :disabled="submitdisabled" @click="saveOrUpdate">保存</el-button> <el-button type="primary" size="small" :disabled="submitdisabled" @click="saveOrUpdate">保存</el-button>
<el-button type="info" size="small" @click="handleReturn()">关闭</el-button> <el-button type="info" size="small" @click="handleReturn()">关闭</el-button>
</div> </div>
<!-- end 添加修改按钮 --> <!-- end 添加修改按钮 -->
<!-- end 详情按钮 --> <!-- end 详情按钮 -->
</div>
<div class="listconadd">
<el-card class="box-card">
<div class="item">
<span class="item_text">标题</span>
<el-input v-model="formobj.title" placeholder="" class="item_input" clearable />
</div> </div>
<div class="item" style="margin-bottom: 100px;margin-top: 100px;"> <div class="listconadd">
<span class="item_text">轮播图图片</span>
<upload <el-card class="box-card">
ref="uploadImg2"
v-model="imgList" <div class="item">
style="margin-top: 20px;" <span class="item_text">标题</span>
class="item_input" <el-input v-model="formobj.title" placeholder="" class="item_input" clearable />
:limit="1" </div>
bucket="map"
:class="{ hide: hideUploadBtn }" <div class="item" style="margin-bottom: 100px;margin-top: 100px;">
:upload-data="{ type: '0001' }" <span class="item_text">轮播图图片</span>
@change="backData" <upload ref="uploadImg2" v-model="imgList" style="margin-top: 20px;" class="item_input" :limit="1"
/> bucket="map" :class="{ hide: hideUploadBtn }" :upload-data="{ type: '0001' }"
</div> @change="backData" />
<div class="item"> </div>
<span class="item_text">发布人</span>
<el-input v-model="formobj.publisher" placeholder="" class="item_input" clearable /> <div class="item">
</div> <span class="item_text">发布人</span>
<div class="item"> <el-input v-model="formobj.publisher" placeholder="" class="item_input" clearable />
<span class="item_text">发布日期</span> </div>
<el-date-picker v-model="formobj.releaseTime" type="date" class="item_input" value-format="yyyy-MM-dd" placeholder="选择日期" /> <div class="item">
</div> <span class="item_text">发布日期</span>
<div class="item"> <el-date-picker v-model="formobj.releaseTime" type="date" class="item_input"
<span class="item_text">时效开始日期</span> value-format="yyyy-MM-dd" placeholder="选择日期" />
<el-date-picker v-model="formobj.startDate" type="date" class="item_input" value-format="yyyy-MM-dd" placeholder="选择日期" /> </div>
</div> <div class="item">
<div class="item"> <span class="item_text">时效开始日期</span>
<span class="item_text">时效结束日期</span> <el-date-picker v-model="formobj.startDate" type="date" class="item_input" value-format="yyyy-MM-dd"
<el-date-picker v-model="formobj.endDate" type="date" class="item_input" value-format="yyyy-MM-dd" placeholder="选择日期" /> placeholder="选择日期" />
</div> </div>
<div class="item">
<!-- <div class="item2"> <span class="item_text">时效结束日期</span>
<el-date-picker v-model="formobj.endDate" type="date" class="item_input" value-format="yyyy-MM-dd"
placeholder="选择日期" />
</div>
<!-- <div class="item2">
<span class="item_text">内容</span> <span class="item_text">内容</span>
<el-input v-model="formobj.content" type="textarea" :rows="6" placeholder="商品简介" class="item_input" <el-input v-model="formobj.content" type="textarea" :rows="6" placeholder="商品简介" class="item_input"
clearable /> clearable />
</div> --> </div> -->
<div class="item" style="margin-bottom: 100px;margin-top: 100px;"> <div class="item" style="margin-bottom: 100px;margin-top: 100px;">
<span class="item_text">内容图片</span> <span class="item_text">内容图片</span>
<upload <upload ref="uploadImg3" v-model="imgListnr" style="margin-top: 20px;" class="item_input" :limit="1"
ref="uploadImg3" bucket="map" :class="{ hide: hideUploadBtnNr }" :upload-data="{ type: '0001' }"
v-model="imgListnr" @change="backDataNr" />
style="margin-top: 20px;" </div>
class="item_input" <div class="item2">
:limit="1" <span class="item_text">轮播图内容</span>
bucket="map" <editor class="item_input" :height="300" :min-height="100" :value="formobj.content"
:class="{ hide: hideUploadBtnNr }" @input="editinput" />
:upload-data="{ type: '0001' }" </div>
@change="backDataNr"
/>
</div>
<div class="item2">
<span class="item_text">轮播图内容</span>
<editor class="item_input" :height="300" :min-height="100" :value="formobj.content" @input="editinput" />
</div>
</el-card> </el-card>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import req from '@/api/lpk/banner.js' import req from '@/api/lpk/banner.js'
import Editor from '@/components/Editor' import Editor from '@/components/Editor'
import upload from '@/components/uploadFile/upload_yanchejianchaTuBiao.vue' import upload from '@/components/uploadFile/upload_yanchejianchaTuBiao.vue'
export default { export default {
components: { components: {
upload, upload,
Editor Editor
}, },
data() { data() {
return { return {
imgList: [], imgList: [],
imgListnr: [], imgListnr: [],
hideUploadBtn: false, hideUploadBtn: true,
hideUploadBtnNr: false, hideUploadBtnNr: false,
submitdisabled: false, submitdisabled: false,
formobj: { formobj: {
sid: '', sid: '',
title: '', title: '',
publisher: '', publisher: '',
releaseTime: '', releaseTime: '',
startDate: '', startDate: '',
endDate: '', endDate: '',
content: '', content: '',
bannerUrl: '', bannerUrl: '',
bannerPath: '', bannerPath: '',
contentUrl: '' contentUrl: ''
} }
}
},
methods: {
editinput(text) {
this.formobj.content = text
},
saveOrUpdate() {
console.log('>>>>>>>>>saveOrUpdate', this.formobj)
req.saveNotice(this.formobj)
.then(resp => {
if (resp.success) {
this.$message({
showClose: true,
type: 'success',
message: resp.msg
})
this.handleReturn('true')
} else {
// resp.code
} }
}) },
.catch(() => {}) methods: {
}, editinput(text) {
handleReturn(isreload) { this.formobj.content = text
if (isreload === 'true') this.$emit('reloadlist') },
this.formobj = { saveOrUpdate() {
sid: '', console.log('>>>>>>>>>saveOrUpdate', this.formobj)
title: '', req.saveNotice(this.formobj)
publisher: '', .then(resp => {
releaseTime: '', if (resp.success) {
startDate: '', this.$message({
endDate: '', showClose: true,
content: '', type: 'success',
bannerUrl: '', message: resp.msg
bannerPath: '', })
contentUrl: '' this.handleReturn('true')
} } else {
this.$emit('doback') // resp.code
}, }
showAdd() {}, })
showEdit(row) { .catch(() => {})
req.noticeInit(row.sid) },
.then(resp => { handleReturn(isreload) {
if (resp.success) { if (isreload === 'true') this.$emit('reloadlist')
this.formobj = resp.data this.imgList = []
this.imgList[0].url = resp.data.bannerUrl this.imgListnr = []
this.hideUploadBtn = true
this.hideUploadBtnNr = true
this.formobj = {
sid: '',
title: '',
publisher: '',
releaseTime: '',
startDate: '',
endDate: '',
content: '',
bannerUrl: '',
bannerPath: '',
contentUrl: ''
}
this.$emit('doback')
},
showAdd() {},
showEdit(row) {
req.noticeInit(row.sid)
.then(resp => {
if (resp.success) {
this.formobj = resp.data
this.imgList = []
if (resp.data.bannerUrl != '') {
this.imgList.push({
url: resp.data.bannerUrl
})
}
this.hideUploadBtn = this.imgList.length != 0
this.imgListnr = []
if (resp.data.contentUrl != '') {
this.imgListnr.push({
url: resp.data.contentUrl
})
}
this.hideUploadBtnNr = this.imgListnr.length != 0
}
})
.catch(e => {
this.formobj = row
this.imgList = []
this.imgListnr = []
})
},
backData(value) {
console.log('backData》》》》', value)
console.log('imgList', this.imgList)
if (this.imgList.length > 0) {
this.formobj.bannerUrl = this.imgList[0].url
} else {
this.formobj.bannerUrl = ''
}
this.hideUploadBtn = this.imgList.length != 0
},
backDataNr(value) {
if (this.imgListnr.length > 0) {
this.formobj.contentUrl = this.imgListnr[0].url
} else {
this.formobj.contentUrl = ''
}
this.hideUploadBtnNr = this.imgListnr.length !== 0
} }
})
.catch(e => {
this.formobj = row
})
},
backData(value) {
console.log('backData》》》》', value)
console.log('imgList', this.imgList)
if (this.imgList.length > 0) {
this.formobj.bannerUrl = this.imgList[0].url
} else {
this.formobj.bannerUrl = ''
}
this.hideUploadBtn = this.imgList.length !== 0
console.log('this.hideUploadBtn', this.hideUploadBtn)
},
backDataNr(value) {
if (this.imgListnr.length > 0) {
this.formobj.contentUrl = this.imgListnr[0].url
} else {
this.formobj.contentUrl = ''
} }
this.hideUploadBtnNr = this.imgListnr.length !== 0
}
} }
}
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
// //
.box-card { ::v-deep .hide {
margin-left: 60px; .el-upload--picture-card {
margin-right: 60px; display: none !important;
min-width: 70%;
margin-top: 20px;
height: auto;
.item {
display: flex;
flex-direction: row;
align-items: center;
margin-top: 15px;
height: 40px;
line-height: 40px;
.item_text {
flex: 0.8;
font-size: 18px;
text-align: right;
}
.item_input {
flex: 4;
font-size: 16px;
margin-left: 10px;
margin-right: 80px;
}
.item_left_input {
width: 20%;
}
.item_left_text {
height: 30px;
margin-left: 20px;
line-height: 30px;
color: #018AD2;
padding: 0px 15px;
border: 1.5px solid #018AD2;
border-radius: 5px;
}
.item_right {
flex: 1;
justify-items: center;
.item_right_list_text {
font-size: 16px;
} }
}
.box-card {
margin-left: 60px;
margin-right: 60px;
min-width: 70%;
margin-top: 20px;
height: auto;
.item {
display: flex;
flex-direction: row;
align-items: center;
margin-top: 15px;
height: 40px;
line-height: 40px;
.item_text {
flex: 0.8;
font-size: 18px;
text-align: right;
}
.item_input {
flex: 4;
font-size: 16px;
margin-left: 10px;
margin-right: 80px;
}
.item_left_input {
width: 20%;
}
.item_left_text {
height: 30px;
margin-left: 20px;
line-height: 30px;
color: #018AD2;
padding: 0px 15px;
border: 1.5px solid #018AD2;
border-radius: 5px;
}
.item_right {
flex: 1;
justify-items: center;
.item_right_list_text {
font-size: 16px;
}
.item_right_list_delect {
color: #5E94FF;
margin-left: 20px;
font-size: 16px;
text-decoration: underline;
}
}
.item_right_list_delect {
color: #5E94FF;
margin-left: 20px;
font-size: 16px;
text-decoration: underline;
} }
}
} .item2 {
display: flex;
flex-direction: row;
align-items: center;
margin-top: 15px;
.item_text {
flex: 0.8;
font-size: 18px;
text-align: right;
}
.item2 { .item_input {
display: flex; flex: 4;
flex-direction: row; font-size: 16px;
align-items: center; margin-left: 10px;
margin-top: 15px; margin-right: 80px;
}
.item_text {
flex: 0.8;
font-size: 18px;
text-align: right;
}
.item_input {
flex: 4;
font-size: 16px;
margin-left: 10px;
margin-right: 80px;
}
} }
} }
</style> </style>

25
src/views/commodity/commodityAdd.vue

@ -45,11 +45,11 @@
oninput="value=value.replace(/[^0-9]/g,'')" /> oninput="value=value.replace(/[^0-9]/g,'')" />
</div> </div>
<div class="item"> <div class="item">
<span class="item_text"> (/)</span> <span class="item_text">包装单</span>
<el-input v-model="formobj.price" placeholder="" class="item_input" clearable <el-input v-model="formobj.price" placeholder="" class="item_input" clearable
oninput="value=value.replace(/[^\d.]/g, '').replace(/\.{2,}/g, '.').replace('.', '$#$').replace(/\./g, '').replace('$#$', '.').replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3').replace(/^\./g, '')" /> oninput="value=value.replace(/[^\d.]/g, '').replace(/\.{2,}/g, '.').replace('.', '$#$').replace(/\./g, '').replace('$#$', '.').replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3').replace(/^\./g, '')" />
</div> </div>
<div class="item"> <!-- <div class="item">
<span class="item_text">阶梯重量()</span> <span class="item_text">阶梯重量()</span>
<el-input v-model="formobj.stepWeight" placeholder="" class="item_input" clearable <el-input v-model="formobj.stepWeight" placeholder="" class="item_input" clearable
oninput="value=value.replace(/[^0-9]/g,'')" /> oninput="value=value.replace(/[^0-9]/g,'')" />
@ -58,31 +58,30 @@
<span class="item_text">阶梯价格 (/)</span> <span class="item_text">阶梯价格 (/)</span>
<el-input v-model="formobj.stepPrice" placeholder="" class="item_input" clearable <el-input v-model="formobj.stepPrice" placeholder="" class="item_input" clearable
oninput="value=value.replace(/[^\d.]/g, '').replace(/\.{2,}/g, '.').replace('.', '$#$').replace(/\./g, '').replace('$#$', '.').replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3').replace(/^\./g, '')" /> oninput="value=value.replace(/[^\d.]/g, '').replace(/\.{2,}/g, '.').replace('.', '$#$').replace(/\./g, '').replace('$#$', '.').replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3').replace(/^\./g, '')" />
</div> </div> -->
<div class="item"> <div class="item">
<span class="item_text">商品单位</span> <span class="item_text">金额单位</span>
<el-input v-model="formobj.specificationUnit" placeholder="例如:斤/瓶/袋/箱/盒" class="item_input" <el-input v-model="formobj.specificationUnit" placeholder="例如:元" class="item_input" clearable />
clearable />
</div> </div>
<div class="item"> <div class="item">
<span class="item_text">规格 (/)</span> <span class="item_text">单价</span>
<el-input v-model="formobj.weight" placeholder="例如:30" class="item_input" clearable <el-input v-model="formobj.weight" placeholder="例如:30" class="item_input" clearable
oninput="value=value.replace(/[^\d.]/g, '').replace(/\.{2,}/g, '.').replace('.', '$#$').replace(/\./g, '').replace('$#$', '.').replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3').replace(/^\./g, '')" /> oninput="value=value.replace(/[^\d.]/g, '').replace(/\.{2,}/g, '.').replace('.', '$#$').replace(/\./g, '').replace('$#$', '.').replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3').replace(/^\./g, '')" />
</div> </div>
<div class="item"> <div class="item">
<span class="item_text">规格单位</span> <span class="item_text">基础单位</span>
<el-input v-model="formobj.unitName" placeholder="例如:份" class="item_input" clearable /> <el-input v-model="formobj.unitName" placeholder="例如:份" class="item_input" clearable />
</div> </div>
<div class="item"> <div class="item">
<span class="item_text">规格描述</span> <span class="item_text">规格描述</span>
<el-input v-model="formobj.remarks" placeholder="例如:一份30斤" class="item_input" clearable /> <el-input v-model="formobj.remarks" placeholder="例如:一份30斤" class="item_input" clearable />
</div> </div>
<div class="item"> <!-- <div class="item">
<span class="item_text">提货截止日</span> <span class="item_text">提货截止日</span>
<el-date-picker v-model="formobj.periodValidity" type="date" class="item_input" <el-date-picker v-model="formobj.periodValidity" type="date" class="item_input"
value-format="yyyy-MM-dd" placeholder="选择日期"> value-format="yyyy-MM-dd" placeholder="选择日期">
</el-date-picker> </el-date-picker>
</div> </div> -->
<div class="item"> <div class="item">
<span class="item_text">商品简介</span> <span class="item_text">商品简介</span>
<el-input v-model="formobj.content" placeholder="商品简介" class="item_input" clearable /> <el-input v-model="formobj.content" placeholder="商品简介" class="item_input" clearable />
@ -138,7 +137,7 @@
stepWeight: '', stepWeight: '',
stepPrice: '', stepPrice: '',
unitName: '份', unitName: '份',
specificationUnit: '', specificationUnit: '',
weight: '', weight: '',
remarks: '', remarks: '',
content: '', content: '',
@ -148,7 +147,7 @@
brandName: '', brandName: '',
categoryId: '', categoryId: '',
categoryName: '', categoryName: '',
periodValidity: "" periodValidity: "2099-12-31"
}, },
brandList: [], brandList: [],
cateList: [], cateList: [],
@ -211,7 +210,7 @@
stepWeight: '', stepWeight: '',
stepPrice: '', stepPrice: '',
unitName: '份', unitName: '份',
specificationUnit: '', specificationUnit: '',
weight: '', weight: '',
remarks: '', remarks: '',
content: '', content: '',

448
src/views/login/login.vue

@ -1,189 +1,189 @@
<template> <template>
<div class="login"> <div class="login">
<div class="logoTitle" style="margin-left: 50px;margin-top: 50px;"> <div class="logoTitle" style="margin-left: 50px;margin-top: 50px;">
<!-- <img src="../../assets/loginImg/shgf.png" <!-- <img src="../../assets/loginImg/shgf.png"
style="width: 50px;height: 50px; margin-right: 10px;" /><span>惠享</span> style="width: 50px;height: 50px; margin-right: 10px;" /><span>惠享</span>
<p class="title" style="margin-top: 5px;">惠享管理平台</p> --> <p class="title" style="margin-top: 5px;">惠享管理平台</p> -->
</div> </div>
<div class="main"> <div class="main">
<div class="content"> <div class="content">
<el-form ref="loginForm" :model="loginForm" class="login-form"> <el-form ref="loginForm" :model="loginForm" class="login-form">
<h3 class="title1">用户登录</h3> <h3 class="title1">用户登录</h3>
<el-form-item> <el-form-item>
<el-input v-model="loginForm.userName" autocomplete="off" placeholder="请输入账号" prefix-icon="el-icon-user"> <el-input v-model="loginForm.userName" autocomplete="off" placeholder="请输入账号"
</el-input> prefix-icon="el-icon-user">
</el-form-item> </el-input>
<el-form-item> </el-form-item>
<el-input v-model="loginForm.password" autocomplete="off" placeholder="请输入密码" prefix-icon="el-icon-lock" <el-form-item>
show-password> <el-input v-model="loginForm.password" autocomplete="off" placeholder="请输入密码"
</el-input> prefix-icon="el-icon-lock" show-password>
<!-- <span class="nopsw register" @click="forgetPwd = true">忘记密码 </span> --> </el-input>
</el-form-item> <!-- <span class="nopsw register" @click="forgetPwd = true">忘记密码 </span> -->
<el-form-item v-show="showMsg" style="margin-bottom:0;"> </el-form-item>
<span class="text-danger">提示用户名或密码错误请重试</span> <el-form-item v-show="showMsg" style="margin-bottom:0;">
</el-form-item> <span class="text-danger">提示用户名或密码错误请重试</span>
</el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" class="login-btn" v-loading="loading" @click="login"> </el-button> <el-button type="primary" class="login-btn" v-loading="loading" @click="login"> </el-button>
<!-- <el-popover placement="top" width="400" trigger="click" v-model="loginCode" @show="codeShow"> <!-- <el-popover placement="top" width="400" trigger="click" v-model="loginCode" @show="codeShow">
<imgCodeRole @login="login" ref="imgCodeRole"></imgCodeRole> <imgCodeRole @login="login" ref="imgCodeRole"></imgCodeRole>
<el-button slot="reference" type="primary" class="login-btn" v-loading="loading"> </el-button> <el-button slot="reference" type="primary" class="login-btn" v-loading="loading"> </el-button>
</el-popover> --> </el-popover> -->
<!--<router-link :to="{name: 'registUser'}" target="_blank" tag="a" class="register fl">个人注册</router-link> <!--<router-link :to="{name: 'registUser'}" target="_blank" tag="a" class="register fl">个人注册</router-link>
<router-link :to="{name: 'registOrg'}" target="_blank" tag="a" class="register fr">单位注册</router-link>--> <router-link :to="{name: 'registOrg'}" target="_blank" tag="a" class="register fr">单位注册</router-link>-->
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
</div> </div>
<el-dialog title="忘记密码" :visible.sync="forgetPwd"> <el-dialog title="忘记密码" :visible.sync="forgetPwd">
<el-form :model="nopassword"> <el-form :model="nopassword">
<el-form-item label="手机号"> <el-form-item label="手机号">
<el-input v-model="nopassword.userPhone" autocomplete="off"></el-input> <el-input v-model="nopassword.userPhone" autocomplete="off"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="用户名"> <el-form-item label="用户名">
<el-input v-model="nopassword.userName" autocomplete="off"></el-input> <el-input v-model="nopassword.userName" autocomplete="off"></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button @click="forgetPwd = false"> </el-button> <el-button @click="forgetPwd = false"> </el-button>
<el-button type="primary" @click="reGetPwd()"> </el-button> <el-button type="primary" @click="reGetPwd()"> </el-button>
</div> </div>
</el-dialog> </el-dialog>
</div> </div>
</template> </template>
<script> <script>
import { import {
doLogin, doLogin,
getUserById, getUserById,
imgCode imgCode
} from '@/api/user.js' } from '@/api/user.js'
import user from '@/api/User/login.js' import user from '@/api/User/login.js'
import { import {
setToken, setToken,
getToken, getToken,
setSession setSession
} from '@/utils/auth' } from '@/utils/auth'
import imgCodeRole from '@/components/imgCodeRole/index.vue' import imgCodeRole from '@/components/imgCodeRole/index.vue'
import qs from 'qs' import qs from 'qs'
export default { export default {
components: { components: {
imgCodeRole imgCodeRole
},
data() {
return {
loginForm: {
userName: '',
password: '',
}, },
imgCode: '', data() {
loading: false, return {
loginCode: false, loginForm: {
showMsg: false, userName: '',
forgetPwd: false, password: '',
nopassword: { },
userPhone: '', imgCode: '',
userName: '', loading: false,
loginCode: false,
showMsg: false,
forgetPwd: false,
nopassword: {
userPhone: '',
userName: '',
},
}
}, },
} methods: {
}, login() {
methods: { console.log(66);
login() { doLogin(this.loginForm).then((response) => {
console.log(66); if (response.code == 200) {
doLogin(this.loginForm).then((response) => { this.$router.push({
if (response.code == 200) { path: '/index'
this.$router.push({ })
path: '/index' this.loading = true
}) // this.getUserInfo(response.data.loginId)
this.loading = true window.sessionStorage.setItem('tokenName', response.data.tokenName)
// this.getUserInfo(response.data.loginId) window.sessionStorage.setItem('tokenValue', response.data.tokenValue)
window.sessionStorage.setItem('tokenName', response.data.tokenName) }
window.sessionStorage.setItem('tokenValue', response.data.tokenValue)
}
}).catch(() => { }).catch(() => {
this.loading = true this.loading = true
}) })
}, },
getUserInfo(id) { getUserInfo(id) {
getUserById(id).then((response) => { getUserById(id).then((response) => {
if (response.code == 200) { if (response.code == 200) {
console.log(" response", response) console.log(" response", response)
let user = response.data let user = response.data
// //
window.sessionStorage.setItem('staffSid', user.staffSid) window.sessionStorage.setItem('staffSid', user.staffSid)
window.sessionStorage.setItem('sid', user.sid) window.sessionStorage.setItem('sid', user.sid)
window.sessionStorage.setItem('userName', user.userName) window.sessionStorage.setItem('userName', user.userName)
} }
}).catch(() => { }).catch(() => {})
})
}, },
codeShow() { codeShow() {
if (this.loginForm.password == '' || this.loginForm.userName == '') { if (this.loginForm.password == '' || this.loginForm.userName == '') {
this.loginCode = false this.loginCode = false
this.showMsg = true this.showMsg = true
return return
} }
this.$refs.imgCodeRole.getCodeImage() this.$refs.imgCodeRole.getCodeImage()
}, },
reGetPwd() { reGetPwd() {
user.reGetPwd(this.nopassword).then((res) => {}) user.reGetPwd(this.nopassword).then((res) => {})
}, },
}, },
} }
</script> </script>
<style lang="scss"> <style lang="scss">
.login { .login {
position: relative; position: relative;
width: 100%; width: 100%;
height: 100%; height: 100%;
background-size: 100% 100%; background-size: 100% 100%;
background-image: url(../../assets/home/bj.jpg); background-image: url(../../assets/home/bj_new.jpg);
background-position: center; background-position: center;
overflow: hidden; overflow: hidden;
.logoTitle { .logoTitle {
margin: 30px; margin: 30px;
img { img {
width: 70px; width: 70px;
} }
span { span {
font-size: 40px; font-size: 40px;
color: #191919; color: #191919;
} }
.title { .title {
font-size: 25px; font-size: 25px;
font-family: Source Han Sans CN; font-family: Source Han Sans CN;
font-weight: 500; font-weight: 500;
color: #191919; color: #191919;
margin: 0; margin: 0;
} }
} }
.main { .main {
width: 30%; width: 30%;
/*height: 640px;*/ /*height: 640px;*/
background: #ffffff; background: #ffffff;
box-shadow: 0px 13px 12px 0px rgba(0, 0, 0, 0.15); box-shadow: 0px 13px 12px 0px rgba(0, 0, 0, 0.15);
opacity: 0.8; opacity: 0.8;
border-radius: 20px; border-radius: 20px;
position: absolute; position: absolute;
right: 15%; right: 15%;
top:35%; top: 35%;
.content { .content {
position: relative; position: relative;
/*.title-h3{ /*.title-h3{
width: 100%; width: 100%;
text-align: center; text-align: center;
color: #FFFFFF; color: #FFFFFF;
@ -193,87 +193,87 @@
top: -65px; top: -65px;
}*/ }*/
} }
}
} }
}
.login-form { .login-form {
padding: 30px 50px; padding: 30px 50px;
.title1 { .title1 {
margin: 0px auto 30px auto; margin: 0px auto 30px auto;
text-align: center; text-align: center;
font-size: 20px; font-size: 20px;
color: #191919; color: #191919;
font-size: 23px; font-size: 23px;
font-weight: 500; font-weight: 500;
} }
.el-input { .el-input {
border: none; border: none;
background-color: transparent; background-color: transparent;
} }
.code { .code {
position: absolute; position: absolute;
top: 3px; top: 3px;
right: 5px; right: 5px;
width: 35%; width: 35%;
height: 35px; height: 35px;
cursor: pointer; cursor: pointer;
z-index: 9; z-index: 9;
} }
.nopsw { .nopsw {
position: absolute; position: absolute;
bottom: -30px; bottom: -30px;
right: 5px; right: 5px;
color: #018ad2; color: #018ad2;
font-size: 15px; font-size: 15px;
line-height: 30px; line-height: 30px;
} }
.register { .register {
color: #EE640C; color: #155B2D;
} }
.register:hover, .register:hover,
.nopsw:hover { .nopsw:hover {
cursor: pointer; cursor: pointer;
} }
.btn-eye { .btn-eye {
cursor: pointer; cursor: pointer;
} }
.text-danger { .text-danger {
color: #f56c6c; color: #57B545;
} }
.login-btn { .login-btn {
margin: 10px 0 10px 0; margin: 10px 0 10px 0;
width: 100%; width: 100%;
background-color: #EE640C; background-color: #57B545;
border: 0; border: 0;
} }
.login-btn:hover { .login-btn:hover {
background-color: #EE640C; background-color: #155B2D;
border: 0; border: 0;
} }
.el-input--prefix .el-input__inner { .el-input--prefix .el-input__inner {
border: 1px solid #EE640C; border: 1px solid #57B545;
background: transparent; background: transparent;
color: #333 !important; color: #333 !important;
} }
.el-form-item { .el-form-item {
margin-bottom: 40px; margin-bottom: 40px;
} }
.el-loading-mask { .el-loading-mask {
background-color: rgba(255, 255, 255, 0.6); background-color: rgba(255, 255, 255, 0.6);
}
} }
}
</style> </style>

513
src/views/orderreserve/index.vue

@ -1,21 +1,35 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<div v-show="viewState == 1"> <div v-show="viewState == 1">
<button-bar ref="btnbar" view-title="预约单列表" :btndisabled="btndisabled" @btnhandle="btnHandle" /> <button-bar ref="btnbar" view-title="预约单列表" :btndisabled="btndisabled" @btnhandle="btnHandle" />
<div class="main-content"> <div class="main-content">
<div class="searchcon"> <div class="searchcon">
<el-button size="small" class="searchbtn" @click="clicksearchShow"> <el-button size="small" class="searchbtn" @click="clicksearchShow">
{{ searchxianshitit }} {{ searchxianshitit }}
</el-button> </el-button>
<div v-show="isSearchShow" class="search"> <div v-show="isSearchShow" class="search">
<el-form :inline="true" class="tab-header"> <el-form :inline="true" class="tab-header">
<el-form-item label="预约开始日期"> <el-form-item label="预约日期">
<el-date-picker v-model="page.params.startDate" type="date" placeholder="选择日期" format="yyyy-MM-dd" value-format="yyyy-MM-dd" style="width: 200px;" clearable /> <el-date-picker v-model="page.params.startDate" type="date" placeholder="选择日期"
</el-form-item> format="yyyy-MM-dd" value-format="yyyy-MM-dd" style="width: 200px;" clearable />
<el-form-item label="预约结束日期">
<el-date-picker v-model="page.params.endDate" type="date" placeholder="选择日期" format="yyyy-MM-dd" value-format="yyyy-MM-dd" style="width: 200px;" clearable /> <el-date-picker v-model="page.params.endDate" type="date" placeholder="选择日期"
</el-form-item> format="yyyy-MM-dd" value-format="yyyy-MM-dd" style="width: 200px;" clearable />
<el-form-item label="所属支行"> </el-form-item>
<el-form-item label="收货地址">
<el-input v-model="page.params.userAddress" placeholder="" clearable />
</el-form-item>
<el-form-item label="客户名称">
<el-input v-model="page.params.userName" placeholder="" clearable />
</el-form-item>
<el-form-item label="联系电话">
<el-input v-model="page.params.userPhone" placeholder="" clearable />
</el-form-item>
<el-form-item label="商品名称">
<el-input v-model="page.params.goodsName" placeholder="" clearable />
</el-form-item>
<!-- <el-form-item label="所属支行">
<el-select v-model="page.params.bankSid" filterable class="item_input" clearable placeholder="请选择" style="width:100%" @change="bankSelect"> <el-select v-model="page.params.bankSid" filterable class="item_input" clearable placeholder="请选择" style="width:100%" @change="bankSelect">
<el-option v-for="item in bankList" :key="item.sid" :label="item.name" :value="item.sid" /> <el-option v-for="item in bankList" :key="item.sid" :label="item.name" :value="item.sid" />
</el-select> </el-select>
@ -29,251 +43,260 @@
<el-select v-model="page.params.cardType" filterable class="item_input" clearable placeholder="请选择" style="width:100%"> <el-select v-model="page.params.cardType" filterable class="item_input" clearable placeholder="请选择" style="width:100%">
<el-option v-for="item in brandList" :key="item.id" :label="item.name" :value="item.id" /> <el-option v-for="item in brandList" :key="item.id" :label="item.name" :value="item.id" />
</el-select> </el-select>
</el-form-item> </el-form-item> -->
</el-form> </el-form>
<div class="btn" style="text-align: center;"> <div class="btn" style="text-align: center;">
<el-button type="primary" size="small" icon="el-icon-search" @click="dosearch">查询</el-button> <el-button type="primary" size="small" icon="el-icon-search"
<el-button type="primary" size="small" icon="el-icon-refresh" @click="resetQuery">重置</el-button> @click="dosearch">查询</el-button>
</div> <el-button type="primary" size="small" icon="el-icon-refresh"
</div> @click="resetQuery">重置</el-button>
</div> </div>
<!-- Start 项目列表头部 --> </div>
<div class="listtop"> </div>
<div class="tit">预约单列表</div> <!-- Start 项目列表头部 -->
</div> <div class="listtop">
<!-- End 项目列表头部 --> <div class="tit">预约单列表</div>
<!-- Start 项目列表 --> </div>
<div class=""> <!-- End 项目列表头部 -->
<el-table v-loading="tableLoading" :data="dataList" border style="width: 100%"> <!-- Start 项目列表 -->
<!-- <el-table-column fixed width="50" type="selection" align="center" /> --> <div class="">
<el-table-column fixed width="60" label="序号" type="index" :index="indexMethod" align="center" /> <el-table v-loading="tableLoading" :data="dataList" border style="width: 100%">
<!-- <el-table-column label="操作" align="center" width="120"> <!-- <el-table-column fixed width="50" type="selection" align="center" /> -->
<el-table-column fixed width="60" label="序号" type="index" :index="indexMethod" align="center" />
<!-- <el-table-column label="操作" align="center" width="120">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="primary" size="mini" @click="toRelevancy(scope.row)">明细</el-button> <el-button type="primary" size="mini" @click="toRelevancy(scope.row)">明细</el-button>
</template> </template>
</el-table-column> --> </el-table-column> -->
<el-table-column prop="reserveDate" label="预约日期" align="center" /> <el-table-column prop="reserveDate" label="预约日期" align="center" />
<el-table-column prop="bankName" label="所属支行" align="center" /> <!-- <el-table-column prop="bankName" label="所属支行" align="center" /> -->
<el-table-column prop="storeName" label="提货点" align="center" /> <!-- <el-table-column prop="storeName" label="提货点" align="center" />
<el-table-column prop="brandName" label="菜窖分类" align="center" /> <el-table-column prop="brandName" label="菜窖分类" align="center" /> -->
<el-table-column prop="userName" label="用户名称" align="center" /> <el-table-column prop="userAddress" label="收货地址" align="left" header-align="center"
<el-table-column prop="userPhone" label="联系电话" align="center" /> width="400" />
<el-table-column prop="goodsName" label="商品名称" align="center" /> <el-table-column prop="userName" label="客户名称" align="center" />
<el-table-column prop="goodsNumber" label="商品数量" align="center" /> <el-table-column prop="userPhone" label="联系电话" align="center" />
<el-table-column prop="customerBank" label="客户所属支行" align="center" /> <el-table-column prop="goodsName" label="商品名称" align="left" header-align="center" width="250" />
</el-table> <el-table-column prop="gg" label="商品规格" align="center" />
</div> <el-table-column prop="remarks" label="包装规格" align="center" />
<!-- End 项目列表 --> <el-table-column prop="goodsNumber" label="数量(份)" align="center" />
<div class="pages"> <!-- <el-table-column prop="customerBank" label="客户所属支行" align="center" /> -->
<div class="tit" /> </el-table>
<!-- 翻页 --> </div>
<pagination v-show="dataList.length > 0" :total="page.total" :page.sync="page.current" :limit.sync="page.size" class="pagination" @pagination="loadList" /> <!-- End 项目列表 -->
<div class="pages">
<div class="tit" />
<!-- 翻页 -->
<pagination v-show="dataList.length > 0" :total="page.total" :page.sync="page.current"
:limit.sync="page.size" class="pagination" @pagination="loadList" />
</div>
</div>
</div> </div>
</div> <!-- End 查询和其列表部分 -->
<!-- 新增修改部分组件 -->
<divAdd v-show="viewState == 2 || viewState == 3" ref="divadd" @doback="resetState" @reloadlist="loadList" />
</div> </div>
<!-- End 查询和其列表部分 -->
<!-- 新增修改部分组件 -->
<divAdd v-show="viewState == 2 || viewState == 3" ref="divadd" @doback="resetState" @reloadlist="loadList" />
</div>
</template> </template>
<script> <script>
import req from '@/api/lpk/reserveorder.js' import req from '@/api/lpk/reserveorder.js'
import reqBank from '@/api/lpk/bank.js' import reqBank from '@/api/lpk/bank.js'
import reqMall from '@/api/adminmallapi.js' import reqMall from '@/api/adminmallapi.js'
import ButtonBar from '@/components/ButtonBar' import ButtonBar from '@/components/ButtonBar'
import Pagination from '@/components/pagination' import Pagination from '@/components/pagination'
import divAdd from './indexInfo.vue' import divAdd from './indexInfo.vue'
export default { export default {
name: 'OrderreserveIndex', name: 'OrderreserveIndex',
components: { components: {
ButtonBar, ButtonBar,
Pagination, Pagination,
divAdd divAdd
}, },
data() { data() {
return { return {
btndisabled: false, btndisabled: false,
viewState: 1, // 1 2 3 4 viewState: 1, // 1 2 3 4
isSearchShow: false, isSearchShow: false,
searchxianshitit: '显示查询条件', searchxianshitit: '显示查询条件',
tableLoading: false, tableLoading: false,
dataList: [], dataList: [],
btnList: [{ btnList: [{
type: 'success', type: 'success',
size: 'small', size: 'small',
icon: 'export', icon: 'export',
btnKey: 'build', btnKey: 'build',
btnLabel: '导出' btnLabel: '导出'
}, },
{ {
type: 'info', type: 'info',
size: 'small', size: 'small',
icon: 'cross', icon: 'cross',
btnKey: 'doClose', btnKey: 'doClose',
btnLabel: '关闭' btnLabel: '关闭'
} }
], ],
page: { page: {
total: 0, // total: 0, //
current: 1, // current: 1, //
size: 10, // size: 10, //
params: { params: {
startDate: '', startDate: '',
endDate: '', endDate: '',
store: '', userAddress: '',
bankSid: '', userName: '',
cardType: '' userPhone: '',
} goodsName: '',
}
},
brandList: [],
bankList: [],
storeList: []
}
},
mounted() {
this.$refs['btnbar'].setButtonList(this.btnList)
},
created() {
// this.initBank()
// this.initStore()
// this.initBrand()
// this.getAllStore()
// this.loadList()
// this.getBankList()
}, },
brandList: [], methods: {
bankList: [], initBank() {
storeList: [] reqBank.listBankAll()
} .then(resp => {
}, this.bankList = resp.data
mounted() { })
this.$refs['btnbar'].setButtonList(this.btnList) },
}, initStore() {
created() { reqBank.listStoreOfBank(this.page.params.bankSid)
this.initBank() .then(resp => {
this.initStore() this.storeList = resp.data
this.initBrand() })
// this.getAllStore() },
// this.loadList() initBrand() {
// this.getBankList() reqMall.listAllBrand().then(resp => {
}, this.brandList = resp.data
methods: { })
initBank() { },
reqBank.listBankAll()
.then(resp => {
this.bankList = resp.data
})
},
initStore() {
reqBank.listStoreOfBank(this.page.params.bankSid)
.then(resp => {
this.storeList = resp.data
})
},
initBrand() {
reqMall.listAllBrand().then(resp => {
this.brandList = resp.data
})
},
// //
clicksearchShow() { clicksearchShow() {
this.isSearchShow = !this.isSearchShow this.isSearchShow = !this.isSearchShow
if (this.isSearchShow) { if (this.isSearchShow) {
this.searchxianshitit = '隐藏查询条件' this.searchxianshitit = '隐藏查询条件'
} else { } else {
this.searchxianshitit = '显示查询条件' this.searchxianshitit = '显示查询条件'
} }
}, },
btnHandle(btnKey) { btnHandle(btnKey) {
switch (btnKey) { switch (btnKey) {
case 'build': // case 'build': //
this.doBuild() this.doBuild()
break break
case 'doClose': case 'doClose':
this.doClose() this.doClose()
break break
default: default:
break break
} }
}, },
bankSelect(val) { bankSelect(val) {
console.log('>>>>>>>>>bankSelect', val) console.log('>>>>>>>>>bankSelect', val)
this.page.params.bankSid = val this.page.params.bankSid = val
this.page.params.store = '' this.page.params.store = ''
this.initStore() this.initStore()
}, },
loadList() { loadList() {
this.tableLoading = true this.tableLoading = true
req.pageOfCustomer(this.page).then((resp) => { req.pageOfCustomer(this.page).then((resp) => {
this.tableLoading = false this.tableLoading = false
if (resp.success) { if (resp.success) {
const data = resp.data const data = resp.data
this.page.total = data.total this.page.total = data.total
this.dataList = data.records this.dataList = data.records
} else { } else {
// resp.code // resp.code
this.dataList = [] this.dataList = []
this.page.total = 0 this.page.total = 0
} }
}).catch(() => { }).catch(() => {
this.tableLoading = false this.tableLoading = false
}) })
}, },
// //
indexMethod(index) { indexMethod(index) {
var pagestart = (this.page.current - 1) * this.page.size var pagestart = (this.page.current - 1) * this.page.size
var pageindex = index + 1 + pagestart var pageindex = index + 1 + pagestart
return pageindex return pageindex
}, },
dosearch() { dosearch() {
this.page.current = 1 this.page.current = 1
this.loadList() this.loadList()
}, },
resetQuery() { resetQuery() {
this.page = { this.page = {
current: 1, current: 1,
size: 10, size: 10,
total: 0, total: 0,
params: { params: {
startDate: '', startDate: '',
endDate: '', endDate: '',
store: '', userAddress: '',
bankSid: '', userName: '',
cardType: '' userPhone: '',
} goodsName: '',
} }
this.loadList() }
}, this.loadList()
},
toRelevancy(row) { toRelevancy(row) {
this.viewState = 3 this.viewState = 3
this.$refs['divadd'].showEdit(row) this.$refs['divadd'].showEdit(row)
}, },
resetState() { resetState() {
this.viewState = 1 this.viewState = 1
}, },
doClose() { doClose() {
this.$store.dispatch('tagsView/delView', this.$route) this.$store.dispatch('tagsView/delView', this.$route)
this.$router.go(-1) this.$router.go(-1)
}, },
// //
doBuild() { doBuild() {
const loading = this.$loading({ const loading = this.$loading({
lock: true, lock: true,
text: 'Loading', text: 'Loading',
spinner: 'el-icon-loading', spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)' background: 'rgba(0, 0, 0, 0.7)'
}) })
req.expExcelOfCustomer(this.page.params).then((resp) => { req.expExcelOfCustomer(this.page.params).then((resp) => {
loading.close() loading.close()
const blob = new Blob([resp], { const blob = new Blob([resp], {
type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
}) })
const fileName = '预约单明细_' + this.page.params.startDate + '.xlsx' const fileName = '预约单明细_' + this.page.params.startDate + '.xlsx'
const elink = document.createElement('a') const elink = document.createElement('a')
elink.download = fileName elink.download = fileName
elink.style.display = 'nonde' elink.style.display = 'nonde'
elink.href = URL.createObjectURL(blob) elink.href = URL.createObjectURL(blob)
document.body.appendChild(elink) document.body.appendChild(elink)
elink.click() elink.click()
URL.revokeObjectURL(elink.href) URL.revokeObjectURL(elink.href)
document.body.removeChild(elink) document.body.removeChild(elink)
}).catch(() => { }).catch(() => {
loading.close() loading.close()
}) })
} }
}
} }
}
</script> </script>
<style scoped> <style scoped>
</style> </style>

326
src/views/pms/brand/components/BrandDetail.vue

@ -1,171 +1,177 @@
<template> <template>
<div class="main-content"> <div class="main-content">
<el-card class="form-container" shadow="never"> <el-card class="form-container" shadow="never">
<el-form ref="brandFrom" :model="brand" :rules="rules" label-width="150px"> <el-form ref="brandFrom" :model="brand" :rules="rules" label-width="150px">
<el-form-item label="品牌名称:" prop="name"> <el-form-item label="品牌名称:" prop="name">
<el-input v-model="brand.name" /> <el-input v-model="brand.name" />
</el-form-item> </el-form-item>
<el-form-item label="品牌首字母:"> <el-form-item label="品牌首字母:">
<el-input v-model="brand.firstLetter" /> <el-input v-model="brand.firstLetter" />
</el-form-item> </el-form-item>
<el-form-item label="品牌LOGO:" prop="logo"> <el-form-item label="品牌LOGO:" prop="logo">
<single-upload v-model="brand.logo" /> <single-upload v-model="brand.logo" />
</el-form-item> </el-form-item>
<el-form-item label="品牌专区大图:"> <el-form-item label="品牌专区大图:">
<single-upload v-model="brand.bigPic" /> <single-upload v-model="brand.bigPic" />
</el-form-item> </el-form-item>
<el-form-item label="品牌故事:"> <el-form-item label="品牌故事:">
<el-input v-model="brand.brandStory" placeholder="请输入内容" type="textarea" :autosize="true" /> <el-input v-model="brand.brandStory" placeholder="请输入内容" type="textarea" :autosize="true" />
</el-form-item> </el-form-item>
<el-form-item label="排序:" prop="sort"> <el-form-item label="排序:" prop="sort">
<el-input v-model.number="brand.sort" /> <el-input v-model.number="brand.sort" />
</el-form-item> </el-form-item>
<el-form-item label="是否显示:"> <el-form-item label="是否配送:">
<el-radio-group v-model="brand.showStatus"> <el-radio-group v-model="brand.delivery">
<el-radio :label="1"></el-radio> <el-radio :label="'1'">配送</el-radio>
<el-radio :label="0"></el-radio> <el-radio :label="'0'">不配送</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="品牌制造商:"> <el-form-item label="是否显示:">
<el-radio-group v-model="brand.factoryStatus"> <el-radio-group v-model="brand.showStatus">
<el-radio :label="1"></el-radio> <el-radio :label="1"></el-radio>
<el-radio :label="0"></el-radio> <el-radio :label="0"></el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="起始销售数量:"> <!-- <el-form-item label="品牌制造商:">
<el-input v-model="brand.qssl" /> <el-radio-group v-model="brand.factoryStatus">
</el-form-item> <el-radio :label="1"></el-radio>
<el-form-item label="订购协议:"> <el-radio :label="0"></el-radio>
<el-input v-model="brand.dgxy" type="textarea" :rows="6" /> </el-radio-group>
<!-- <textarea v-model="brand.dgxy" style="width: 100%;" :rows="6"></textarea> --> </el-form-item> -->
</el-form-item> <el-form-item label="起始销售数量:">
<el-form-item label="起订协议:"> <el-input v-model="brand.qssl" />
<el-input v-model="brand.qdxy" type="textarea" :rows="6" /> </el-form-item>
<!-- <textarea v-model="brand.qdxy"></textarea> --> <el-form-item label="订购协议:">
</el-form-item> <el-input v-model="brand.dgxy" type="textarea" :rows="6" />
<el-form-item> <!-- <textarea v-model="brand.dgxy" style="width: 100%;" :rows="6"></textarea> -->
<el-button type="primary" @click="onSubmit('brandFrom')">提交</el-button> </el-form-item>
<el-button type="primary" @click="onClose('brandFrom')">关闭</el-button> <el-form-item label="起订协议:">
<el-button v-if="!isEdit" @click="resetForm('brandFrom')">重置</el-button> <el-input v-model="brand.qdxy" type="textarea" :rows="6" />
</el-form-item> <!-- <textarea v-model="brand.qdxy"></textarea> -->
</el-form> </el-form-item>
</el-card> <el-form-item>
</div> <el-button type="primary" @click="onSubmit('brandFrom')">提交</el-button>
<el-button type="primary" @click="onClose('brandFrom')">关闭</el-button>
<el-button v-if="!isEdit" @click="resetForm('brandFrom')">重置</el-button>
</el-form-item>
</el-form>
</el-card>
</div>
</template> </template>
<script> <script>
import { import {
createBrand, createBrand,
getBrand, getBrand,
updateBrand updateBrand
} from '@/api/brand' } from '@/api/brand'
import SingleUpload from '@/components/Upload/singleUpload' import SingleUpload from '@/components/Upload/singleUpload'
const defaultBrand = { const defaultBrand = {
bigPic: '', bigPic: '',
brandStory: '', brandStory: '',
factoryStatus: 0, factoryStatus: 0,
firstLetter: '', firstLetter: '',
logo: '', logo: '',
name: '', name: '',
showStatus: 0, showStatus: 0,
sort: 0, sort: 0,
qssl: 0, qssl: 0,
dgxy: '' dgxy: ''
} }
export default { export default {
name: 'BrandDetail', name: 'BrandDetail',
components: { components: {
SingleUpload SingleUpload
}, },
props: { props: {
isEdit: { isEdit: {
type: Boolean, type: Boolean,
default: false default: false
}
},
data() {
return {
brand: Object.assign({}, defaultBrand),
rules: {
name: [{
required: true,
message: '请输入品牌名称',
trigger: 'blur'
},
{
min: 2,
max: 140,
message: '长度在 2 到 140 个字符',
trigger: 'blur'
} }
], },
data() {
return {
brand: Object.assign({}, defaultBrand),
rules: {
name: [{
required: true,
message: '请输入品牌名称',
trigger: 'blur'
},
{
min: 2,
max: 140,
message: '长度在 2 到 140 个字符',
trigger: 'blur'
}
],
sort: [{ sort: [{
type: 'number', type: 'number',
message: '排序必须为数字' message: '排序必须为数字'
}] }]
} }
} }
}, },
created() { created() {
if (this.isEdit) { if (this.isEdit) {
getBrand(this.$route.query.id).then(response => { getBrand(this.$route.query.id).then(response => {
this.brand = response.data this.brand = response.data
})
} else {
this.brand = Object.assign({}, defaultBrand)
}
},
methods: {
onSubmit(formName) {
this.$refs[formName].validate((valid) => {
if (valid) {
this.$confirm('是否提交数据', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
if (this.isEdit) {
updateBrand(this.$route.query.id, this.brand).then(response => {
this.$refs[formName].resetFields()
this.$message({
message: '修改成功',
type: 'success',
duration: 1000
})
this.$router.back()
}) })
} else { } else {
createBrand(this.brand).then(response => { this.brand = Object.assign({}, defaultBrand)
this.$refs[formName].resetFields() }
this.brand = Object.assign({}, defaultBrand) },
this.$message({ methods: {
message: '提交成功', onSubmit(formName) {
type: 'success', this.$refs[formName].validate((valid) => {
duration: 1000 if (valid) {
}) this.$confirm('是否提交数据', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
if (this.isEdit) {
updateBrand(this.$route.query.id, this.brand).then(response => {
this.$refs[formName].resetFields()
this.$message({
message: '修改成功',
type: 'success',
duration: 1000
})
this.$router.back()
})
} else {
createBrand(this.brand).then(response => {
this.$refs[formName].resetFields()
this.brand = Object.assign({}, defaultBrand)
this.$message({
message: '提交成功',
type: 'success',
duration: 1000
})
})
}
})
} else {
this.$message({
message: '验证失败',
type: 'error',
duration: 1000
})
return false
}
}) })
} },
}) resetForm(formName) {
} else { this.$refs[formName].resetFields()
this.$message({ this.brand = Object.assign({}, defaultBrand)
message: '验证失败', },
type: 'error', onClose() {
duration: 1000 this.$store.dispatch('tagsView/delView', this.$route)
}) this.$router.go(-1)
return false }
} }
})
},
resetForm(formName) {
this.$refs[formName].resetFields()
this.brand = Object.assign({}, defaultBrand)
},
onClose(){
this.$store.dispatch('tagsView/delView', this.$route)
this.$router.go(-1)
}
} }
}
</script> </script>
<style> <style>
</style> </style>

573
src/views/pms/brand/index.vue

@ -1,313 +1,292 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<div class="main-content"> <div class="main-content">
<el-card class="filter-container" shadow="never"> <el-card class="filter-container" shadow="never">
<div> <div>
<i class="el-icon-search" /> <i class="el-icon-search" />
<span>筛选搜索</span> <span>筛选搜索</span>
<el-button <el-button style="float: right" type="primary" size="small" @click="searchBrandList()">
style="float: right" 查询结果
type="primary" </el-button>
size="small" </div>
@click="searchBrandList()" <div style="margin-top: 15px">
> <el-form :inline="true" :model="listQuery" size="small" label-width="140px">
查询结果 <el-form-item label="输入搜索:">
</el-button> <el-input v-model="listQuery.name" style="width: 203px" placeholder="品牌名称/关键字" />
</el-form-item>
</el-form>
</div>
</el-card>
<el-card class="operate-container" shadow="never">
<i class="el-icon-tickets" />
<span>数据列表</span>
<el-button class="btn-add" size="mini" @click="addBrand()">
添加
</el-button>
</el-card>
<div class="table-container">
<el-table ref="brandTable" v-loading="listLoading" :data="list" style="width: 100%" border
@selection-change="handleSelectionChange">
<el-table-column type="selection" width="60" align="center" />
<el-table-column label="编号" width="100" align="center">
<template slot-scope="scope">{{ scope.row.id }}</template>
</el-table-column>
<el-table-column label="品牌名称" align="center">
<template slot-scope="scope">{{ scope.row.name }}</template>
</el-table-column>
<el-table-column label="品牌首字母" width="150" align="center">
<template slot-scope="scope">{{ scope.row.firstLetter }}</template>
</el-table-column>
<el-table-column label="排序" width="100" align="center">
<template slot-scope="scope">{{ scope.row.sort }}</template>
</el-table-column>
<el-table-column label="是否配送" width="180" align="center">
<template slot-scope="scope">
<el-switch v-model="scope.row.delivery" active-text="配送" inactive-text="不配送"
:active-value="'1'" :inactive-value="'0'"
@change="handleDeliveryChange(scope.$index, scope.row)" />
</template>
</el-table-column>
<!-- <el-table-column label="品牌制造商" width="150" align="center">
<template slot-scope="scope">
<el-switch v-model="scope.row.factoryStatus" :active-value="1" :inactive-value="0"
@change="handleFactoryStatusChange(scope.$index, scope.row)" />
</template>
</el-table-column> -->
<el-table-column label="是否显示" width="100" align="center">
<template slot-scope="scope">
<el-switch v-model="scope.row.showStatus" :active-value="1" :inactive-value="0"
@change="handleShowStatusChange(scope.$index, scope.row)" />
</template>
</el-table-column>
<el-table-column label="相关" width="220" align="center">
<template slot-scope="scope">
<span>商品</span>
<el-button size="mini" type="text" @click="getProductList(scope.$index, scope.row)">100
</el-button>
<span>评价</span>
<el-button size="mini" type="text"
@click="getProductCommentList(scope.$index, scope.row)">1000
</el-button>
</template>
</el-table-column>
<el-table-column label="操作" width="200" align="center">
<template slot-scope="scope">
<el-button size="mini" @click="handleUpdate(scope.$index, scope.row)">编辑
</el-button>
<el-button size="mini" type="danger" @click="handleDelete(scope.$index, scope.row)">删除
</el-button>
</template>
</el-table-column>
</el-table>
</div>
<!-- <div class="batch-operate-container">
<el-select v-model="operateType" size="small" placeholder="批量操作">
<el-option v-for="item in operates" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
<el-button style="margin-left: 20px" class="search-button" type="primary" size="small"
@click="handleBatchOperate()">
确定
</el-button>
</div> -->
<div class="pagination-container">
<el-pagination background layout="total, sizes,prev, pager, next,jumper" :page-size="listQuery.pageSize"
:page-sizes="[5,10,15]" :current-page.sync="listQuery.pageNum" :total="total"
@size-change="handleSizeChange" @current-change="handleCurrentChange" />
</div>
</div> </div>
<div style="margin-top: 15px">
<el-form :inline="true" :model="listQuery" size="small" label-width="140px">
<el-form-item label="输入搜索:">
<el-input v-model="listQuery.name" style="width: 203px" placeholder="品牌名称/关键字" />
</el-form-item>
</el-form>
</div>
</el-card>
<el-card class="operate-container" shadow="never">
<i class="el-icon-tickets" />
<span>数据列表</span>
<el-button
class="btn-add"
size="mini"
@click="addBrand()"
>
添加
</el-button>
</el-card>
<div class="table-container">
<el-table
ref="brandTable"
v-loading="listLoading"
:data="list"
style="width: 100%"
border
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="60" align="center" />
<el-table-column label="编号" width="100" align="center">
<template slot-scope="scope">{{ scope.row.id }}</template>
</el-table-column>
<el-table-column label="品牌名称" align="center">
<template slot-scope="scope">{{ scope.row.name }}</template>
</el-table-column>
<el-table-column label="品牌首字母" width="100" align="center">
<template slot-scope="scope">{{ scope.row.firstLetter }}</template>
</el-table-column>
<el-table-column label="排序" width="100" align="center">
<template slot-scope="scope">{{ scope.row.sort }}</template>
</el-table-column>
<el-table-column label="品牌制造商" width="100" align="center">
<template slot-scope="scope">
<el-switch
v-model="scope.row.factoryStatus"
:active-value="1"
:inactive-value="0"
@change="handleFactoryStatusChange(scope.$index, scope.row)"
/>
</template>
</el-table-column>
<el-table-column label="是否显示" width="100" align="center">
<template slot-scope="scope">
<el-switch
v-model="scope.row.showStatus"
:active-value="1"
:inactive-value="0"
@change="handleShowStatusChange(scope.$index, scope.row)"
/>
</template>
</el-table-column>
<el-table-column label="相关" width="220" align="center">
<template slot-scope="scope">
<span>商品</span>
<el-button
size="mini"
type="text"
@click="getProductList(scope.$index, scope.row)"
>100
</el-button>
<span>评价</span>
<el-button
size="mini"
type="text"
@click="getProductCommentList(scope.$index, scope.row)"
>1000
</el-button>
</template>
</el-table-column>
<el-table-column label="操作" width="200" align="center">
<template slot-scope="scope">
<el-button
size="mini"
@click="handleUpdate(scope.$index, scope.row)"
>编辑
</el-button>
<el-button
size="mini"
type="danger"
@click="handleDelete(scope.$index, scope.row)"
>删除
</el-button>
</template>
</el-table-column>
</el-table>
</div>
<div class="batch-operate-container">
<el-select
v-model="operateType"
size="small"
placeholder="批量操作"
>
<el-option
v-for="item in operates"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
<el-button
style="margin-left: 20px"
class="search-button"
type="primary"
size="small"
@click="handleBatchOperate()"
>
确定
</el-button>
</div>
<div class="pagination-container">
<el-pagination
background
layout="total, sizes,prev, pager, next,jumper"
:page-size="listQuery.pageSize"
:page-sizes="[5,10,15]"
:current-page.sync="listQuery.pageNum"
:total="total"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
/>
</div>
</div> </div>
</div>
</template> </template>
<script> <script>
import { fetchList, updateShowStatus, updateFactoryStatus, deleteBrand } from '@/api/brand' import {
fetchList,
updateDelivery,
updateShowStatus,
updateFactoryStatus,
deleteBrand
} from '@/api/brand'
export default { export default {
name: 'BrandList', name: 'BrandList',
data() { data() {
return { return {
operates: [ operates: [
], ],
operateType: null, operateType: null,
listQuery: { listQuery: {
keyword: null, keyword: null,
pageNum: 1, pageNum: 1,
pageSize: 10 pageSize: 10
},
list: null,
total: null,
listLoading: true,
multipleSelection: []
}
}, },
list: null, created() {
total: null,
listLoading: true,
multipleSelection: []
}
},
created() {
this.getList()
},
methods: {
getList() {
this.listLoading = true
fetchList(this.listQuery).then(response => {
this.listLoading = false
this.list = response.data.records
this.total = response.data.total
this.totalPage = response.data.pages
this.pageSize = response.data.size
})
},
handleSelectionChange(val) {
this.multipleSelection = val
},
handleUpdate(index, row) {
this.$router.push({ path: '/pms/updateBrand', query: { id: row.id }})
},
handleDelete(index, row) {
this.$confirm('是否要删除该品牌', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
deleteBrand(row.id).then(response => {
this.$message({
message: '删除成功',
type: 'success',
duration: 1000
})
this.getList() this.getList()
}) },
}) methods: {
}, getList() {
getProductList(index, row) { this.listLoading = true
console.log(index, row) fetchList(this.listQuery).then(response => {
}, this.listLoading = false
getProductCommentList(index, row) { this.list = response.data.records
console.log(index, row) this.total = response.data.total
}, this.totalPage = response.data.pages
handleFactoryStatusChange(index, row) { this.pageSize = response.data.size
var data = new URLSearchParams() })
data.append('ids', row.id) },
data.append('factoryStatus', row.factoryStatus) handleSelectionChange(val) {
updateFactoryStatus(data).then(response => { this.multipleSelection = val
this.$message({ },
message: '修改成功', handleUpdate(index, row) {
type: 'success', this.$router.push({
duration: 1000 path: '/pms/updateBrand',
}) query: {
}).catch(error => { id: row.id
if (row.factoryStatus === 0) { }
row.factoryStatus = 1 })
} else { },
row.factoryStatus = 0 handleDelete(index, row) {
} this.$confirm('是否要删除该品牌', '提示', {
}) confirmButtonText: '确定',
}, cancelButtonText: '取消',
handleShowStatusChange(index, row) { type: 'warning'
const data = new URLSearchParams() }).then(() => {
deleteBrand(row.id).then(response => {
this.$message({
message: '删除成功',
type: 'success',
duration: 1000
})
this.getList()
})
})
},
getProductList(index, row) {
console.log(index, row)
},
getProductCommentList(index, row) {
console.log(index, row)
},
handleDeliveryChange(index, row) {
var data = new URLSearchParams()
data.append('ids', row.id)
data.append('delivery', row.delivery)
updateDelivery(data).then(response => {
this.$message({
message: '修改成功',
type: 'success',
duration: 1000
})
}).catch(error => {
if (row.delivery === 0) {
row.delivery = 1
} else {
row.delivery = 0
}
})
},
handleFactoryStatusChange(index, row) {
var data = new URLSearchParams()
data.append('ids', row.id)
data.append('factoryStatus', row.factoryStatus)
updateFactoryStatus(data).then(response => {
this.$message({
message: '修改成功',
type: 'success',
duration: 1000
})
}).catch(error => {
if (row.factoryStatus === 0) {
row.factoryStatus = 1
} else {
row.factoryStatus = 0
}
})
},
handleShowStatusChange(index, row) {
const data = new URLSearchParams()
data.append('ids', row.id) data.append('ids', row.id)
data.append('showStatus', row.showStatus) data.append('showStatus', row.showStatus)
updateShowStatus(data).then(response => { updateShowStatus(data).then(response => {
this.$message({ this.$message({
message: '修改成功', message: '修改成功',
type: 'success', type: 'success',
duration: 1000 duration: 1000
}) })
}).catch(error => { }).catch(error => {
if (row.showStatus === 0) { if (row.showStatus === 0) {
row.showStatus = 1 row.showStatus = 1
} else { } else {
row.showStatus = 0 row.showStatus = 0
} }
}) })
}, },
handleSizeChange(val) { handleSizeChange(val) {
this.listQuery.pageNum = 1 this.listQuery.pageNum = 1
this.listQuery.pageSize = val this.listQuery.pageSize = val
this.getList() this.getList()
}, },
handleCurrentChange(val) { handleCurrentChange(val) {
this.listQuery.pageNum = val this.listQuery.pageNum = val
this.getList() this.getList()
}, },
searchBrandList() { searchBrandList() {
this.listQuery.pageNum = 1 this.listQuery.pageNum = 1
this.getList() this.getList()
}, },
handleBatchOperate() { handleBatchOperate() {
console.log(this.multipleSelection) console.log(this.multipleSelection)
if (this.multipleSelection < 1) { if (this.multipleSelection < 1) {
this.$message({ this.$message({
message: '请选择一条记录', message: '请选择一条记录',
type: 'warning', type: 'warning',
duration: 1000 duration: 1000
}) })
return return
} }
let showStatus = 0 let showStatus = 0
if (this.operateType === 'showBrand') { if (this.operateType === 'showBrand') {
showStatus = 1 showStatus = 1
} else if (this.operateType === 'hideBrand') { } else if (this.operateType === 'hideBrand') {
showStatus = 0 showStatus = 0
} else { } else {
this.$message({ this.$message({
message: '请选择批量操作类型', message: '请选择批量操作类型',
type: 'warning', type: 'warning',
duration: 1000 duration: 1000
}) })
return return
}
const ids = []
for (let i = 0; i < this.multipleSelection.length; i++) {
ids.push(this.multipleSelection[i].id)
}
const data = new URLSearchParams()
data.append('ids', ids)
data.append('showStatus', showStatus)
updateShowStatus(data).then(response => {
this.getList()
this.$message({
message: '修改成功',
type: 'success',
duration: 1000
})
})
},
addBrand() {
this.$router.push({
path: '/pms/addBrand'
})
}
} }
const ids = []
for (let i = 0; i < this.multipleSelection.length; i++) {
ids.push(this.multipleSelection[i].id)
}
const data = new URLSearchParams()
data.append('ids', ids)
data.append('showStatus', showStatus)
updateShowStatus(data).then(response => {
this.getList()
this.$message({
message: '修改成功',
type: 'success',
duration: 1000
})
})
},
addBrand() {
this.$router.push({ path: '/pms/addBrand' })
}
} }
}
</script> </script>
<style rel="stylesheet/scss" lang="scss" scoped> <style rel="stylesheet/scss" lang="scss" scoped>
</style> </style>

Loading…
Cancel
Save