Merge branch 'master' into Bulbasaur

master
pikachu1995@126.com 2023-03-22 08:43:05 +08:00
commit 64c61d5365
19 changed files with 168 additions and 79 deletions

View File

@ -59,7 +59,7 @@ export function withdrawalApply (params) {
});
}
// 收藏商品、店铺
// 收藏商品
export function collectGoods (type, id) {
return request({
url: `/buyer/member/collection/add/${type}/${id}`,
@ -68,7 +68,16 @@ export function collectGoods (type, id) {
});
}
// 取消 收藏商品、店铺
// 收藏店铺
export function collectStore (type, id) {
return request({
url: `/buyer/member/storeCollection/add/${type}/${id}`,
method: Method.POST,
needToken: true
});
}
// 取消 收藏商品
export function cancelCollect (type, id) {
return request({
url: `/buyer/member/collection/delete/${type}/${id}`,
@ -77,7 +86,16 @@ export function cancelCollect (type, id) {
});
}
// 查看是否收藏
// 取消 收藏店铺
export function cancelStoreCollect (type, id) {
return request({
url: `/buyer/member/storeCollection/delete/${type}/${id}`,
method: Method.DELETE,
needToken: true
});
}
// 查看是否收藏商品
export function isCollection (type, goodsId) {
return request({
url: `/buyer/member/collection/isCollection/${type}/${goodsId}`,
@ -86,7 +104,16 @@ export function isCollection (type, goodsId) {
});
}
// 会员收藏列表
// 查看是否收藏店铺
export function isStoreCollection (type, goodsId) {
return request({
url: `/buyer/member/storeCollection/isCollection/${type}/${goodsId}`,
method: Method.GET,
needToken: true
});
}
// 会员收藏商品列表
export function collectList (params) {
return request({
url: `/buyer/member/collection/${params.type}`,
@ -96,6 +123,16 @@ export function collectList (params) {
});
}
// 会员收藏店铺列表
export function storeCollectList (params) {
return request({
url: `/buyer/member/storeCollection/${params.type}`,
method: Method.GET,
needToken: true,
params
});
}
// 单个商品评价
export function goodsComment (params) {
return request({

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -18,4 +18,5 @@ module.exports = {
aMapKey: "7f11113750315d8543daaf5c3ba353ca", //高德web端js申请的api key
enableCDN: true, //生产环境 是否启用cdn加载 vue等js
port: 10000, //端口
inputMaxLength:'140' //全局输入框默认最大输入长度字
};

View File

@ -8,10 +8,15 @@ import * as filters from "./plugins/filters";
import store from "@/vuex/store";
import storage from "@/plugins/storage";
// 全局引入封装组件
import { InstallAll } from "@/components/global.js";
import {InstallAll} from "@/components/global.js";
const {aMapSecurityJsCode, title, inputMaxLength} = require("@/config");
const copyViewUi = {...ViewUI}
copyViewUi.Input.props.maxlength.default = inputMaxLength // 挂载最大输入值
Vue.use(copyViewUi);
const { aMapSecurityJsCode, title } = require("@/config");
Vue.use(ViewUI);
Vue.use(InstallAll);
Vue.config.productionTip = false;

View File

@ -44,9 +44,9 @@ import ShowGoods from "@/components/goodsDetail/ShowGoods";
import ShowGoodsDetail from "@/components/goodsDetail/ShowGoodsDetail";
import { goodsSkuDetail } from "@/api/goods";
import {
cancelCollect,
collectGoods,
isCollection,
cancelStoreCollect,
collectStore,
isStoreCollection,
getGoodsDistribution,
} from "@/api/member";
import { getDetailById } from "@/api/shopentry";
@ -121,7 +121,7 @@ export default {
this.$set(this, "goodsMsg", res.result);
//
if (this.Cookies.getItem("userInfo")) {
isCollection("STORE", this.goodsMsg.data.storeId).then((res) => {
isStoreCollection("STORE", this.goodsMsg.data.storeId).then((res) => {
if (res.success && res.result) {
this.storeCollected = true;
}
@ -159,13 +159,13 @@ export default {
async collect () {
//
if (this.storeCollected) {
let cancel = await cancelCollect("STORE", this.goodsMsg.data.storeId);
let cancel = await cancelStoreCollect("STORE", this.goodsMsg.data.storeId);
if (cancel.success) {
this.$Message.success("已取消收藏");
this.storeCollected = false;
}
} else {
let collect = await collectGoods("STORE", this.goodsMsg.data.storeId);
let collect = await collectStore("STORE", this.goodsMsg.data.storeId);
if (collect.code === 200) {
this.storeCollected = true;
this.$Message.success("收藏店铺成功,可以前往个人中心我的收藏查看");

View File

@ -108,7 +108,7 @@
<script>
import {getDetailById, getCateById} from "@/api/shopentry";
import {cancelCollect, collectGoods, isCollection} from "@/api/member";
import {cancelStoreCollect, collectStore, isStoreCollection} from "@/api/member";
import {goodsList} from "@/api/goods";
import Search from "@/components/Search";
import ModelForm from "@/components/indexDecorate/ModelForm";
@ -296,13 +296,13 @@ export default {
async collect() {
//
if (this.storeCollected) {
let cancel = await cancelCollect("STORE", this.storeMsg.storeId);
let cancel = await cancelStoreCollect("STORE", this.storeMsg.storeId);
if (cancel.success) {
this.$Message.success("已取消收藏");
this.storeCollected = false;
}
} else {
let collect = await collectGoods("STORE", this.storeMsg.storeId);
let collect = await collectStore("STORE", this.storeMsg.storeId);
if (collect.code === 200) {
this.storeCollected = true;
this.$Message.success("收藏店铺成功,可以前往个人中心我的收藏查看");

View File

@ -25,7 +25,7 @@
<Button size="small" type="primary" @click="buynow(item.skuId, item.goodsId)" v-if="params.type === 'GOODS'"></Button>
<Button size="small" type="primary" @click="goShop(item.id)" v-else></Button>
<Button size="small" v-if="params.type === 'GOODS'" @click="cancel(item.skuId)"></Button>
<Button size="small" v-if="params.type === 'SHOP'" @click="cancel(item.id)"></Button>
<Button size="small" v-if="params.type === 'STORE'" @click="cancelStore(item.id)"></Button>
</div>
</div>
</template>
@ -36,7 +36,7 @@
</template>
<script>
import { collectList, cancelCollect } from '@/api/member.js'
import { collectList, cancelCollect,storeCollectList,cancelStoreCollect} from '@/api/member.js'
export default {
name: 'Favorites',
props: {
@ -66,10 +66,16 @@ export default {
if (res.success) this.list = res.result.records;
})
},
getStoreList () { //
this.spinShow = true
storeCollectList(this.params).then(res => {
this.spinShow = false
if (res.success) this.list = res.result.records;
})
},
change (index) { // tab
if (index === 0) { this.params.type = 'GOODS' }
if (index === 1) { this.params.type = 'SHOP' }
this.getList()
if (index === 0) { this.params.type = 'GOODS',this.getList()}
if (index === 1) { this.params.type = 'STORE',this.getStoreList()}
},
cancel (id) { //
let typeName = this.params.type === 'GOODS' ? '商品' : '店铺'
@ -85,6 +91,20 @@ export default {
}
});
},
cancelStore (id) { //
let typeName = this.params.type === 'GOODS' ? '商品' : '店铺'
this.$Modal.confirm({
title: 'Title',
content: `<p>确定取消收藏该${typeName}吗?</p>`,
onOk: () => {
cancelStoreCollect(this.params.type, id).then(res => {
if (res.success) {
this.getStoreList();
}
})
}
});
},
buynow (skuId, goodsId) { //
let url = this.$router.resolve({
path: '/goodsDetail',

View File

@ -11,4 +11,5 @@ module.exports = {
website: "https://www.pickmall.cn", //官网地址
enableCDN: true, //生产环境 是否启用cdn加载 vue等js
port: 10003, //端口
inputMaxLength:'140' //全局输入框默认最大输入长度字
};

View File

@ -8,12 +8,12 @@ import './styles/theme.less';
import "core-js/stable"
// import "regenerator-runtime/runtime"
import App from './App'
import { router } from './router/index'
import {router} from './router/index'
import store from './store'
import i18n from '@/locale'
import { getRequest, postRequest, putRequest, deleteRequest, importRequest, uploadFileRequest } from '@/libs/axios'
import { setStore, getStore, removeStore } from '@/libs/storage'
import {getRequest, postRequest, putRequest, deleteRequest, importRequest, uploadFileRequest} from '@/libs/axios'
import {setStore, getStore, removeStore} from '@/libs/storage'
import util from '@/libs/util'
import * as filters from '@/utils/filters' // global filter
@ -23,8 +23,9 @@ import {md5} from '@/utils/md5.js';
// 打印
import Print from 'vue-print-nb';
Vue.use(Print);
const { aMapSecurityJsCode } = require("@/config");
const {aMapSecurityJsCode, inputMaxLength} = require("@/config");
// 高德安全密钥
if (aMapSecurityJsCode) {
window._AMapSecurityConfig = {
@ -44,14 +45,15 @@ Vue.prototype.wapLinkTo = function (goodsId, skuId) { // app端二维码
return `${WAP_URL}/pages/product/goods?id=${skuId}&goodsId=${goodsId}`
};
Vue.use(ViewUI, {
i18n: (key, value) => i18n.t(key, value)
const copyViewUi = {...ViewUI}
copyViewUi.Input.props.maxlength.default = inputMaxLength // 挂载最大输入值
Vue.use(copyViewUi, {
i18n: (key, value) => i18n.t(key, value),
});
Vue.component('liliDialog',liliDialog)
Vue.component('i18nBox',i18nBox)
Vue.component('liliDialog', liliDialog)
Vue.component('i18nBox', i18nBox)
// 挂载全局使用的方法
@ -66,31 +68,31 @@ Vue.prototype.getStore = getStore;
Vue.prototype.removeStore = removeStore;
Vue.prototype.md5 = md5;
Array.prototype.remove = function(from, to) {
var rest = this.slice((to || from) + 1 || this.length);
this.length = from < 0 ? this.length + from : from;
return this.push.apply(this, rest);
Array.prototype.remove = function (from, to) {
var rest = this.slice((to || from) + 1 || this.length);
this.length = from < 0 ? this.length + from : from;
return this.push.apply(this, rest);
};
Object.keys(filters).forEach(key => {
Vue.filter(key, filters[key])
Vue.filter(key, filters[key])
})
/* eslint-disable no-new */
new Vue({
el: '#app',
router,
store,
i18n,
render: h => h(App),
data: {
currentPageName: ''
},
mounted() {
// 初始化菜单
util.initRouter(this);
this.currentPageName = this.$route.name;
// 显示打开的页面的列表
this.$store.commit('setOpenedList');
this.$store.commit('initCachePage');
}
el: '#app',
router,
store,
i18n,
render: h => h(App),
data: {
currentPageName: ''
},
mounted() {
// 初始化菜单
util.initRouter(this);
this.currentPageName = this.$route.name;
// 显示打开的页面的列表
this.$store.commit('setOpenedList');
this.$store.commit('initCachePage');
}
})

View File

@ -14,7 +14,7 @@
<InputNumber :min="1" :max="365" style="width:100px;" v-model="form.distributionDay"></InputNumber>
</FormItem>
<FormItem label="分销结算天数" prop="cashDay">
<InputNumber :min="1" :max="365" style="width:100px;" v-model="form.cashDay"></InputNumber>
<InputNumber :min="0" :max="365" style="width:100px;" v-model="form.cashDay"></InputNumber>
</FormItem>
<FormItem>
<Button type="primary" @click="submit"></Button>

View File

@ -465,10 +465,11 @@ export default {
//
handleSubmitModal() {
debugger
const { nickName, sex, username, face, newPassword,id } = this.form;
let time = new Date(this.form.birthday);
let birthday = time ?
time.getFullYear() + "-" + (time.getMonth() + 1) + "-" + time.getDate() : '';
let birthday = this.form.birthday=== undefined?'':
time.getFullYear() + "-" + (time.getMonth() + 1) + "-" + time.getDate();
let submit = {
regionId: this.form.regionId,
region: this.form.region,

View File

@ -281,6 +281,9 @@ export default {
wechatFormDataEdit() {
this.$refs['wechatFormData'].validate((valid) => {
if (valid) {
if(!this.wechatFormData.updateTime){
this.wechatFormData.updateTime = ''
}
editWechatMessageTemplate(this.id, this.wechatFormData).then(res => {
if (res.message === 'success') {
this.$Message.success('微信模板修改成功');

View File

@ -169,7 +169,7 @@ export default {
//
openOrClose(row) {
let name = "开启";
if (row.promotionStatus === "START") {
if (row.promotionStatus === 'NEW' ||row.promotionStatus === "START") {
name = "关闭";
this.$Modal.confirm({
title: "提示",

View File

@ -87,7 +87,17 @@
<p class="item">
<span class="label">店铺所在地</span>
<span class="info">
{{storeInfo.storeAddressPath || storeInfo.storeAddressDetail?storeInfo.storeAddressPath +storeInfo.storeAddressDetail:"暂未完善"}}
<span>
{{
(storeInfo.storeAddressPath!==null && storeInfo.storeAddressPath!=='' && storeInfo.storeAddressPath!=="null" && storeInfo.storeAddressPath!==undefined )? storeInfo.storeAddressPath: ""
}}
</span>
<span>
{{
(storeInfo.storeAddressDetail!==null && storeInfo.storeAddressDetail!=='' && storeInfo.storeAddressDetail!=="null" && storeInfo.storeAddressDetail!==undefined )? storeInfo.storeAddressDetail:""
}}
</span>
{{(storeInfo.storeAddressPath!==null && storeInfo.storeAddressPath!=='' && storeInfo.storeAddressPath!=="null" && storeInfo.storeAddressPath!==undefined) || (storeInfo.storeAddressDetail!==null && storeInfo.storeAddressDetail!=='' && storeInfo.storeAddressDetail!=="null" && storeInfo.storeAddressDetail!==undefined )?"":"暂未完善"}}
</span>
</p>
<p class="item">

View File

@ -342,11 +342,13 @@ export default {
this.$refs.form.validate((valid) => {
if (valid) {
this.submitLoading = true;
const versionUpdateDate = this.$options.filters.unixToDate(
this.form.versionUpdateDate / 1000
);
this.form.versionUpdateDate = versionUpdateDate;
this.form.updateTime = versionUpdateDate;
if(JSON.stringify(this.form.versionUpdateDate).includes('T')){
const versionUpdateDate = this.$options.filters.unixToDate(
this.form.versionUpdateDate / 1000
);
this.form.versionUpdateDate = versionUpdateDate;
this.form.updateTime = versionUpdateDate;
}
if (this.modalType == 0) {
// id
delete this.form.id;

View File

@ -38,7 +38,7 @@ export const getCheckedOn = params =>{
//获取物流设置
export const getLogisticsSetting = () =>{
return getRequest(`/other/logistics/setting`);
return getRequest(`/other/logistics`);
}
export const getShunFengFaceSheet = (url,headers) =>{

View File

@ -1,14 +1,15 @@
module.exports = {
title: "lilishop", //配置显示在浏览器标签的title
/**
/**
* 高德地图申请链接
* https://lbs.amap.com/api/javascript-api/guide/abc/prepare
* 添加成功后可获取到key值和安全密钥jscode自2021年12月02日升级升级之后所申请的 key 必须配备安全密钥 jscode 一起使用)
*/
//FIXME 请检查当前高德key创建的日期如果2021年12月02日之前申请的 无需填写安全密钥
aMapSecurityJsCode:"2bd0fbf621881f4c77be74f0e76495f3", // 高德web端js申请的安全密钥
aMapSecurityJsCode: "2bd0fbf621881f4c77be74f0e76495f3", // 高德web端js申请的安全密钥
aMapKey: "7f11113750315d8543daaf5c3ba353ca", //高德web端js申请的api key
website: "https://www.pickmall.cn", //官网地址
enableCDN: true, //生产环境 是否启用cdn加载 vue等js
port: 10002, //端口
inputMaxLength:'140' //全局输入框默认最大输入长度字
};

View File

@ -7,7 +7,7 @@ import vueQr from "vue-qr";
import liliDialog from '@/views/lili-dialog'
import App from "./App";
import { router } from "./router/index";
import {router} from "./router/index";
import store from "./store";
import {
getRequest,
@ -17,7 +17,7 @@ import {
importRequest,
uploadFileRequest
} from "@/libs/axios";
import { setStore, getStore, removeStore } from "@/libs/storage";
import {setStore, getStore, removeStore} from "@/libs/storage";
import i18nBox from '@/views/lili-components/i18n-translate'
import util from "@/libs/util";
@ -26,10 +26,12 @@ import VueLazyload from "vue-lazyload";
import * as filters from "@/utils/filters"; // global filter
import { md5 } from "@/utils/md5.js";
const { aMapSecurityJsCode } = require("@/config");
import {md5} from "@/utils/md5.js";
const {aMapSecurityJsCode, inputMaxLength} = require("@/config");
// 打印
import Print from 'vue-print-nb';
Vue.use(Print);
// 高德安全密钥
if (aMapSecurityJsCode) {
@ -44,10 +46,14 @@ Vue.use(VueLazyload, {
loading: require("./assets/loading2.gif")
});
Vue.use(ViewUI);
Vue.component('liliDialog',liliDialog)
Vue.component('i18nBox',i18nBox)
Vue.component('liliDialog',liliDialog)
const copyViewUi = {...ViewUI}
copyViewUi.Input.props.maxlength.default = inputMaxLength // 挂载最大输入值
Vue.use(copyViewUi);
Vue.component('liliDialog', liliDialog)
Vue.component('i18nBox', i18nBox)
Vue.component('liliDialog', liliDialog)
Vue.component("vue-qr", vueQr); //此处将vue-qr添加为全局组件
// 挂载全局使用的方法
@ -63,19 +69,19 @@ Vue.prototype.removeStore = removeStore;
Vue.prototype.md5 = md5;
const PC_URL = BASE.PC_URL; // 跳转买家端地址 pc端
const WAP_URL = BASE.WAP_URL; // 跳转买家端地址 wap端
Vue.prototype.linkTo = function(goodsId, skuId) {
Vue.prototype.linkTo = function (goodsId, skuId) {
// 跳转买家端商品
window.open(
`${PC_URL}/goodsDetail?skuId=${skuId}&goodsId=${goodsId}`,
"_blank"
);
};
Vue.prototype.wapLinkTo = function(goodsId, skuId) {
Vue.prototype.wapLinkTo = function (goodsId, skuId) {
// app端二维码
return `${WAP_URL}/pages/product/goods?id=${skuId}&goodsId=${goodsId}`;
};
Array.prototype.remove = function(from, to) {
Array.prototype.remove = function (from, to) {
var rest = this.slice((to || from) + 1 || this.length);
this.length = from < 0 ? this.length + from : from;
return this.push.apply(this, rest);

View File

@ -139,7 +139,7 @@ export default {
minWidth: 120,
sortable: true,
render: (h, params) => {
if (params.row.selected === null || params.row.selected === "") {
if (!params.row.selected) {
return h("div", [h("tag", {props: {color: "volcano"}}, "关闭")]);
} else {
return h("div", [h("tag", {props: {color: "green"}}, "开启")]);
@ -152,7 +152,7 @@ export default {
align: "center",
width: 200,
render: (h, params) => {
if (params.row.selected === null) {
if (!params.row.selected) {
return h("div", [
h(
"Button",
@ -301,7 +301,7 @@ export default {
},
submit() {
if ( this.row.selected === null || this.row.selected === "") {
if ( !this.row.selected) {
API_Shop.logisticsChecked(
this.row.logisticsId,
this.faceSheetForm