Browse Source

Merge branch 'master' of gitea.intra.yunpaper.com:zhangqi/kuailelunwen_new_houtai into zq-nodeTest

zq-nodeTest
zq 5 months ago
parent
commit
08b0e48b96
  1. BIN
      src/assets/home/notice_1.png
  2. BIN
      src/assets/home/notice_2.png
  3. BIN
      src/assets/home/notice_3.png
  4. BIN
      src/assets/home/notice_4.png
  5. BIN
      src/assets/home/notice_5.png
  6. BIN
      src/assets/home/notice_tag_1.png
  7. BIN
      src/assets/home/notice_tag_2.png
  8. 3
      src/components/bindGoods.vue
  9. 53
      src/components/site/addSiteStep/step2.vue
  10. 15
      src/components/site/addSiteStep/step3.vue
  11. 605
      src/components/site/serviceSetting/priceSet.vue
  12. 2
      src/components/site/serviceSetting/reportSeoSet.vue
  13. 4
      src/components/site/serviceSetting/showSet.vue
  14. 2
      src/components/site/serviceSetting/submitSeoSet.vue
  15. 10
      src/router/index.js
  16. 68
      src/views/agent/home.vue
  17. 222
      src/views/agent/siteBaseSetting.vue
  18. 150
      src/views/agent/siteServiceAdd.vue
  19. 21
      src/views/agent/siteServiceList.vue
  20. 501
      src/views/agent/supplyList.vue

BIN
src/assets/home/notice_1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 711 B

BIN
src/assets/home/notice_2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 727 B

BIN
src/assets/home/notice_3.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
src/assets/home/notice_4.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 695 B

BIN
src/assets/home/notice_5.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 538 B

BIN
src/assets/home/notice_tag_1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 528 B

BIN
src/assets/home/notice_tag_2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 601 B

3
src/components/bindGoods.vue

@ -102,7 +102,8 @@ export default {
item.selected = false item.selected = false
if(item.skus){ if(item.skus){
Object.entries(item.skus).forEach(([key, val]) => { Object.entries(item.skus).forEach(([key, val]) => {
item.skus[key] = `${val.title}${val.price}`; item.skus[key] = val.title
if(val.price) item.skus[key] = `${val.title}${val.price}`;
}); });
} }
}); });

53
src/components/site/addSiteStep/step2.vue

@ -28,7 +28,7 @@
:options="taobaoList" :options_null="!taobaoList.length"> :options="taobaoList" :options_null="!taobaoList.length">
<template #trigger> <template #trigger>
<span v-if="selectTaobao">{{ selectTaobao.short_name }} {{ selectTaobao.account }}</span> <span v-if="selectTaobao.short_name || selectTaobao.account">{{ selectTaobao.short_name }} {{ selectTaobao.account }}</span>
<span v-else-if="!taobaoList.length">暂无收款账号稍后配置</span> <span v-else-if="!taobaoList.length">暂无收款账号稍后配置</span>
<span v-else>未绑定店铺</span> <span v-else>未绑定店铺</span>
</template> </template>
@ -157,7 +157,7 @@
<el-form ref="formRef" v-if="siteInfo.sale_channel === '3'"> <el-form ref="formRef" v-if="siteInfo.sale_channel === '3'">
<div class="flex-wrap"> <div class="flex-wrap">
<div class="flex-left"> <div class="flex-left">
<div class="shopadd-wrap" v-if="pddList.length"> <div class="shopadd-wrap" v-if="!pddList.length">
<p class="shopadd-title">店铺授权</p> <p class="shopadd-title">店铺授权</p>
<div class="flex-between shopadd-area"> <div class="flex-between shopadd-area">
<div> <div>
@ -176,7 +176,7 @@
:options="pddList" :options_null="!pddList.length"> :options="pddList" :options_null="!pddList.length">
<template #trigger> <template #trigger>
<span v-if="selectPdd">{{ selectPdd.short_name }} {{ selectPdd.account }}</span> <span v-if="selectPdd.short_name || selectPdd.account">{{ selectPdd.short_name }} {{ selectPdd.account }}</span>
<span v-else-if="pddList.length === 0">暂无收款账号稍后配置</span> <span v-else-if="pddList.length === 0">暂无收款账号稍后配置</span>
<span v-else>未绑定拼多多店铺</span> <span v-else>未绑定拼多多店铺</span>
</template> </template>
@ -235,7 +235,7 @@
:options="jdList" :options_null="!jdList.length"> :options="jdList" :options_null="!jdList.length">
<template #trigger> <template #trigger>
<span v-if="selectJd">{{ selectJd.short_name }} {{ selectJd.account }}</span> <span v-if="selectJd.short_name || selectJd.account">{{ selectJd.short_name }} {{ selectJd.account }}</span>
<span v-else-if="jdList.length === 0">暂无收款账号稍后配置</span> <span v-else-if="jdList.length === 0">暂无收款账号稍后配置</span>
<span v-else>未绑定京东店铺</span> <span v-else>未绑定京东店铺</span>
</template> </template>
@ -499,46 +499,59 @@ export default {
}) })
}, },
changeSelectWeixin(item) { changeSelectWeixin(item) {
if(this.bindWxpayId === item.payid){
this.bindWxpayId = 0
this.selectWxpay = null
return true
}
this.bindWxpayId = item.payid; this.bindWxpayId = item.payid;
this.selectWxpay = item; this.selectWxpay = item;
console.log(this.bindWxpayId, 'bindWxpayId');
console.log(this.selectWxpay, 'selectWxpay');
this.selectedItem = { ...item };
console.log(this.selectedItem, 'this.selectedItem====');
}, },
changeSelectAlipay(item) { changeSelectAlipay(item) {
if(this.bindAlipayId === item.payid){
this.bindAlipayId = 0
this.selectAlipay = null
return true
}
this.bindAlipayId = item.payid; this.bindAlipayId = item.payid;
this.selectAlipay = item; this.selectAlipay = item;
this.selectedItem = { ...item };
}, },
changeSelectTaobao(item) { changeSelectTaobao(item) {
if(this.bindTaobaoId === item.payid){
this.bindTaobaoId = 0
this.selectTaobao = null
return true
}
this.bindTaobaoId = item.payid; this.bindTaobaoId = item.payid;
this.selectTaobao = item; this.selectTaobao = item;
this.selectedItem = { ...item };
}, },
changeSelectJindong(item) { changeSelectJindong(item) {
if(this.bindJdId === item.payid){
this.bindJdId = 0
this.selectJd = null
return true
}
this.bindJdId = item.payid; this.bindJdId = item.payid;
this.selectJd = item; this.selectJd = item;
this.selectedItem = { ...item };
}, },
changeSelectPdd(item) { changeSelectPdd(item) {
if(this.bindPddId === item.payid){
this.bindPddId = 0
this.selectPdd = null
return true
}
this.bindPddId = item.payid; this.bindPddId = item.payid;
this.selectPdd = item; this.selectPdd = item;
this.selectedItem = { ...item };
}, },
goBindPay(type) { goBindPay(type) {
this.addPayType = type; this.addPayType = type;
this.isShowAddPay = true; this.isShowAddPay = true;
this.authToken = this.token; this.authToken = this.token;
}, },
handleEvent() { handleEvent(data) {
this.getPayList() this.isShowAddPay = data
this.getAddablePays() // this.getPayList()
// this.getAddablePays()
}, },
jumpStep(){ jumpStep(){
this.$router.push('/') this.$router.push('/')

15
src/components/site/addSiteStep/step3.vue

@ -3,10 +3,8 @@
<div class="step3-wrap min-flex"> <div class="step3-wrap min-flex">
<div class="step3-top flex-common"> <div class="step3-top flex-common">
<h3 class="flex gap8"><img src="@/assets/menu/littleTitleIcon1.svg" alt="">服务列表</h3> <h3 class="flex gap8"><img src="@/assets/menu/littleTitleIcon1.svg" alt="">服务列表</h3>
<div class="btngroup"> <div class="btngroup" v-if="addProd">
<GuipButton type="ignore" :btnstyle="{ width: '97px', height: '33px' }" @click="serviceAdd(1)">添加查重服务</GuipButton> <GuipButton v-for="(item,key) in addProd" :key="item" type="ignore" :btnstyle="{ width: '97px', height: '33px' }" @click="serviceAdd(key)">添加{{item}}</GuipButton>
<GuipButton type="ignore" :btnstyle="{ width: '97px', height: '33px' }" @click="serviceAdd(3)">添加写作辅助</GuipButton>
<GuipButton type="ignore" :btnstyle="{ width: '97px', height: '33px' }" @click="serviceAdd(2)">添加AIGC</GuipButton>
</div> </div>
</div> </div>
<div> <div>
@ -173,11 +171,11 @@ export default {
PromptText, GuipDialog, PaymentMethod, PromptText, GuipDialog, PaymentMethod,
GuipTable, GuipSwitch, SvgIcon, GuipInput, GuipTable, GuipSwitch, SvgIcon, GuipInput,
GuipButton GuipButton
}, },
data(){ data(){
return { return {
token: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE3NTI2NDY1NDUsIm5iZiI6MTc1MjY0NjU0NSwiZXhwIjoxNzU1MjM4NTQ1LCJ1c2VyIjoic3VidXNlciIsImxvZ2luX3R5cGUiOjAsImFpZCI6IjEifQ.G-Is-x9qPMiV_urOlDPQVRjfAIozySxL5EK2k82d46k', token: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE3NTI2NDY1NDUsIm5iZiI6MTc1MjY0NjU0NSwiZXhwIjoxNzU1MjM4NTQ1LCJ1c2VyIjoic3VidXNlciIsImxvZ2luX3R5cGUiOjAsImFpZCI6IjEifQ.G-Is-x9qPMiV_urOlDPQVRjfAIozySxL5EK2k82d46k',
addProd: {},
serviceList:[], serviceList:[],
tableLoading:false, tableLoading:false,
currentPage: 1, // currentPage: 1, //
@ -252,9 +250,12 @@ export default {
} }
}).then(response => { }).then(response => {
that.tableLoading = false that.tableLoading = false
if(response.status && response.data.service_list.length>0){ if(response.status){
that.$nextTick(() => { that.$nextTick(() => {
that.serviceList = response.data.service_list that.addProd = response.data.add_proids
if(response.data.service_list){
that.serviceList = response.data.service_list
}
}) })
} }
}).catch(error => { }).catch(error => {

605
src/components/site/serviceSetting/priceSet.vue

@ -4,37 +4,191 @@
<span class="pagetitle">{{info.type_desc}}-价格设置</span> <span class="pagetitle">{{info.type_desc}}-价格设置</span>
</div> </div>
<div class="flex-common"> <PromptText v-if="serviceAddInfo && serviceAddInfo.prompt && serviceAddInfo.prompt.title" :text='serviceAddInfo.prompt.title' :type="1" class="mb12">
<h3>网页支付与售价</h3> <template #desc v-if="serviceAddInfo.prompt.content">
<el-form ref="formRef"> <div class="alert-more-info mt12">
<div class="flex mb10" v-for="item in serviceAddInfo.prompt.content" :key="item">
{{ item }}
</div>
</div>
</template>
</PromptText>
<!-- 网页售价 -->
<div class="flex-common mb12 price-set" v-if="serviceAddInfo.web_price_set">
<el-form class="el-row demo-ruleForm" ref="formRef">
<div class="price-top">
<span class="title">网页支付与售价</span>
<span class="desc"
v-if="serviceAddInfo.supply_price">供货价{{ serviceAddInfo.supply_price }}{{ serviceAddInfo.supply_price_warning }}</span>
</div>
<div class="flex-wrap"> <div class="flex-wrap">
<div class="flex-left"> <div class="flex-left">
<div class="set-item"> <div class="flex-between mb12">
<div class="set-title flex-between"> <div>售价管理</div>
<p>售价管理</p> </div>
<p>供货价格3.5/</p> <div class="flex-between">
<div class="short-width" v-if="Object.keys(serviceAddInfo.set_units).length>1">
<GuipSelect width="100%" v-model="service_unit" placeholder="选择计费方式"
:options="serviceAddInfo.set_units" @change="handleUnitName"/>
</div>
<div class="short-width" v-if="service_unit !== '0'">
<GuipInput v-model="info.price" width="100%"
ref="GuipInput" :unit="'元/'+serviceAddInfo.unit_name"></GuipInput>
</div>
</div>
<div class="flex-between mt12" v-if="service_unit === '0'">
<div class="short-width">
<GuipInput width="100%" v-model="info.price" ref="GuipInput" unit="元">
</GuipInput>
</div> </div>
<div class="set-content flex"> <div class="short-width">
<GuipSelect width="264px" prop="card" :options="options" class="mr12"/> <GuipInput width="100%" v-model="info.unit_num" ref="GuipInput" :unit="serviceAddInfo.unit_name">
<GuipInput v-if="!info.price" width="264px" v-model="info.price" ref="GuipInput" unit="元/篇"></GuipInput> </GuipInput>
<template v-else>
<GuipInput width="180px" v-model="info.price" ref="GuipInput" unit="元"></GuipInput>
<span class="mr12"></span>
<GuipInput v-model="info.unit_num" ref="GuipInput" width="180px" unit="字符"></GuipInput>
</template>
</div> </div>
</div> </div>
</div> </div>
<div class="flex-line"></div> <template v-if="serviceAddInfo.base_set && service_unit === '0'">
<div class="flex-right"> <div class="flex-line"></div>
<div class="flex-right">
<div class="flex-between mb12">
<div>起售价格选填</div>
<div>超过设定字符按照正常售价收取</div>
</div>
<div class="flex-between">
<div class="third-width">
<GuipInput width="100%" v-model="info.base_unit_num" ref="GuipInput"
unit="字符内"></GuipInput>
</div>
<div class="w85">
用户需支付
</div>
<div class="third-width">
<GuipInput width="100%" v-model="info.base_unit_price" ref="GuipInput"
unit="元"></GuipInput>
</div>
</div>
</div>
</template>
</div>
<div class="flex service-opt mt12">
<GuipButton type="ignore" @click="resetPrice">重置</GuipButton>
<GuipButton type="primary" @click="savePrice" size="medium">保存</GuipButton>
</div>
</el-form>
</div>
<!-- 店铺售价-->
<div class="flex-common mb12 price-set" v-if="serviceAddInfo.shop_price_set">
<el-form class="el-row demo-ruleForm" ref="formRef">
<div class="price-top">
<span class="title">{{ serviceAddInfo.shop_name }}支付管理</span>
<span class="desc"></span>
</div>
<div class="flex-wrap">
<div class="flex-left">
<div class="flex-between mb12">
<div>售价管理</div>
</div>
<div class="flex-between">
<div class="short-width" v-if="Object.keys(serviceAddInfo.set_units).length>1">
<GuipSelect width="100%" v-model="service_unit" placeholder="选择计费方式"
:options="serviceAddInfo.set_units" @change="handleUnitName"/>
</div>
<div class="short-width" v-if="service_unit !== '0'">
<GuipInput v-model="info.unit_piece" width="100%"
ref="GuipInput" :unit="'件/'+serviceAddInfo.unit_name"></GuipInput>
</div>
</div>
<div class="flex-between mt12" v-if="service_unit === '0'">
<div class="short-width">
<GuipInput width="100%" v-model="info.unit_piece" ref="GuipInput" unit="件">
</GuipInput>
</div>
<div class="short-width">
<GuipInput width="100%" v-model="info.unit_num" ref="GuipInput" :unit="serviceAddInfo.unit_name">
</GuipInput>
</div>
</div>
</div> </div>
<template v-if="serviceAddInfo.base_set && service_unit === '0'">
<div class="flex-line"></div>
<div class="flex-right">
<div class="flex-between mb12">
<div>起售价格选填</div>
<div>超过设定字符按照正常售价收取</div>
</div>
<div class="flex-between">
<div class="third-width">
<GuipInput width="100%" v-model="info.base_unit_num" ref="GuipInput"
unit="字符内"></GuipInput>
</div>
<div class="w85">
用户需支付
</div>
<div class="third-width">
<GuipInput width="100%" v-model="info.base_unit_piece" ref="GuipInput"
unit="件"></GuipInput>
</div>
</div>
</div>
</template>
</div>
<div class="flex service-opt mt12">
<GuipButton type="ignore" @click="resetShopPrice">重置</GuipButton>
<GuipButton type="primary" @click="saveShopPrice()" size="medium">保存</GuipButton>
</div> </div>
</el-form> </el-form>
</div> </div>
<div class="save-button"> <!-- 店铺商品绑定-->
<GuipButton type="primary" :btnstyle="saveBtnStyleObj" @click="saveConfirm">保存</GuipButton> <div class="flex-common mb12 price-set" v-if="serviceAddInfo.shop_price_set">
<el-form class="el-row demo-ruleForm" ref="formRef">
<div class="price-top">
<span class="title">关联电商商品</span>
<span class="desc">必须关联且确保服务与{{ serviceAddInfo.shop_name }}电商商品一致</span>
</div>
<div class="flex-wrap" @click="bindGoods">
<div class="flex-left bind-button gap12">
<img src="@/assets/addIcon.svg" alt="">
<span>添加宝贝</span>
</div>
</div>
<div class="bind-list" v-if="bindList">
<div class="bind-item" v-for="(row, key) in bindList" :key="key">
<img :src="row.pic_url ? row.pic_url : require('@/assets/site/invalid.png')" alt="">
<div class="bind-goods-info">
<div class="bind-goods-title">
<el-link :href="row.link" target="_blank">{{ row.title }}</el-link>
</div>
<div class="flex-between gap12">
<div class="flex gap12">
<span v-if="row.price">{{ row.price }}</span>
<span v-if="row.sec_title">{{ row.sec_title }}</span>
</div>
<div class="flex gap12">
<span class="bind-btn bind-delete"
@click="handleDelBindClick(row, key)">删除</span>
<span class="bind-btn"
:class="row.is_default === '1' ? 'bind-default-active' : 'bind-default'"
@click="handleDefaultConfirm(row.id)">默认商品</span>
</div>
</div>
</div>
</div>
</div>
</el-form>
<bindGoods :showBind="showBind" :uid="uid" :type="type" :pati="pati" :pageCode="pageCode"
@handleBind="handleBind">
</bindGoods>
<GuipDialog :dialogVisible="dialogDelBindConfim" title="提示" :show-close-button="false"
@confirm="handleDelBindConfirm" @cancel="handleDelBindCancel">
您确定要删除吗删除后所有绑定都会删除
</GuipDialog>
</div> </div>
</div> </div>
</template> </template>
@ -43,6 +197,9 @@
import GuipButton from "@/components/GuipButton.vue"; import GuipButton from "@/components/GuipButton.vue";
import GuipInput from "@/components/GuipInput.vue"; import GuipInput from "@/components/GuipInput.vue";
import GuipSelect from "@/components/GuipSelect.vue"; import GuipSelect from "@/components/GuipSelect.vue";
import bindGoods from "@/components/bindGoods.vue";
import GuipDialog from "@/components/GuipDialog.vue";
import PromptText from "@/components/PromptText.vue";
export default { export default {
name: 'priceSet', name: 'priceSet',
@ -55,92 +212,241 @@ export default {
components: { components: {
GuipSelect, GuipSelect,
GuipInput, GuipInput,
GuipButton GuipButton,
PromptText,
bindGoods,
GuipDialog
}, },
data(){ data(){
return { return {
token: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE3NTI2NDY1NDUsIm5iZiI6MTc1MjY0NjU0NSwiZXhwIjoxNzU1MjM4NTQ1LCJ1c2VyIjoic3VidXNlciIsImxvZ2luX3R5cGUiOjAsImFpZCI6IjEifQ.G-Is-x9qPMiV_urOlDPQVRjfAIozySxL5EK2k82d46k', token: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE3NTI2NDY1NDUsIm5iZiI6MTc1MjY0NjU0NSwiZXhwIjoxNzU1MjM4NTQ1LCJ1c2VyIjoic3VidXNlciIsImxvZ2luX3R5cGUiOjAsImFpZCI6IjEifQ.G-Is-x9qPMiV_urOlDPQVRjfAIozySxL5EK2k82d46k',
info:{}, info:{},
// uid: 0,
saveBtnStyleObj: { type: 0,
width: '144px', serviceAddInfo:{},
height: '46px', service_unit:'',
borderRadius: '4px', bindList: [],
background: '#006AFF', showBind: false,
}, pati: '',
options: [{ pageCode: '',
value: '选项1', dialogDelBindConfim: false,
label1: '黄金hhhhhh',
id1: '1',
id2: '啊11哈哈',
label: '黄金糕'
}, {
value: '选项2',
id1: '12',
id2: '啊22哈哈',
label1: '双皮奶hhhhhhhhh',
label: '双皮奶'
}, {
value: '选项3',
id1: '13',
id2: '啊33哈哈',
label1: '蚵仔煎hhhhhhhhh',
label: '蚵仔煎'
}, {
value: '选项4',
id1: '14',
id2: '啊444哈哈',
label1: '双皮奶hhhhhhhhh',
label: '龙须面'
}, {
value: '选项5',
id1: '155',
id2: '啊55哈哈',
label1: '双皮奶hhhhhhhhh',
label: '北京烤鸭'
}],
form: {
username: '',
language: '',
domain_set: '',
domainSuffix: '11',
domainSuffix1: '.chachongz.com',
card: '1',
input1: '跨年的烟火,绽放天空',
input2: '',
input3: '',
},
} }
}, },
mounted() { mounted() {
this.info = JSON.parse(JSON.stringify(this.serviceInfo)) this.info = JSON.parse(JSON.stringify(this.serviceInfo))
if(Object.keys(this.info).length>0){
this.uid = this.info.uid
this.type = this.info.type
this.getServiceAddInfo()
this.getServiceBindGoods()
}
}, },
methods:{ methods:{
saveConfirm() { //
let obj = {} getServiceAddInfo() {
obj.uid = this.info.uid const that = this
obj.type = this.info.type that.$http('POST', '/agentnew/ajax_get_service_add_info', {
obj.logo_bgcolor = this.tabColor.replace('#','') uid: that.uid,
obj.link_btn_color = this.themeColor.replace('#','') type: that.type,
obj.selected_nav_bgcolor = this.navColor.replace('#','') }, {
headers: {
'Auth': this.token
}
}).then(response => {
if (response.status) {
that.$nextTick(() => {
that.serviceAddInfo = response.data
that.service_unit = that.serviceAddInfo.unit
//
if (that.serviceAddInfo.shop_name === '拼多多') this.initPddParam(that.uid)
})
return true
}
that.$message.error(response.info);
}).catch(error => {
console.error(error, 'error')
})
},
//
getServiceBindGoods() {
const that = this const that = this
this.$http('POST', '/agentnew/ajax_update_service_style', obj,{ that.$http('POST', '/agentnew/ajax_get_service_bind_goods', {
headers:{ uid: that.uid,
type: that.type,
}, {
headers: {
'Auth': this.token 'Auth': this.token
} }
}).then(response => { }).then(response => {
if(response.status){ if (response.status && response.data) {
that.$nextTick(() => {
that.bindList = response.data
})
}
}).catch(error => {
console.error(error, 'error')
})
},
handleUnitName(){
this.serviceAddInfo.unit_name = this.serviceAddInfo.set_units[this.service_unit]
},
resetPrice() {
this.info.price = ''
this.info.unit_num = ''
this.info.b_unit_price = ''
this.info.b_unit_num = ''
},
savePrice() {
const that = this
//
if(that.service_unit !== '0') {
that.info.unit_num = 1
that.info.base_unit_num = ''
that.info.base_unit_price = ''
}
this.$http('POST', "/agentnew/ajax_set_service_price", {
uid: that.uid,
type: that.type,
unit: that.service_unit,
unit_num: that.info.unit_num,
unit_price: that.info.price,
b_unit_num: that.info.base_unit_num,
b_unit_price: that.info.base_unit_price,
}, {
headers: {
'Auth': this.token
}
}).then(response => {
if (response.status) {
that.$message.success('保存成功'); that.$message.success('保存成功');
return true;
}
that.$message.error(response.info);
}).catch(error => {
console.error(error, 'error')
})
},
resetShopPrice() {
this.info.unit_piece = ''
this.info.unit_num = ''
this.info.b_unit_piece = ''
this.info.b_unit_num = ''
},
saveShopPrice() {
const that = this
// 1
//
if(that.service_unit !== '0') {
that.info.unit_num = 1
that.info.base_unit_num = ''
that.info.base_unit_piece = ''
}
this.$http('POST', "/agentnew/ajax_set_service_price", {
uid: that.uid,
type: that.type,
unit: that.service_unit,
unit_num: that.info.unit_num,
unit_piece: that.info.unit_piece,
b_unit_num: that.info.base_unit_num,
b_unit_piece: that.info.base_unit_piece,
}, {
headers: {
'Auth': this.token
}
}).then(response => {
if (response.status) {
that.$message.success('保存成功');
return true;
}
that.$message.error(response.info);
}).catch(error => {
console.error(error, 'error')
})
},
//------ start------
bindGoods() {
this.showBind = true
},
handleBind(bindRes) {
this.showBind = false
if (bindRes) this.getServiceBindGoods()
},
async getPddPageCode(uid) {
const that = this
return await that.$http('POST', '/agentnew/ajax_get_pdd_page_code', {
uid: uid,
}, {
headers: {
'Auth': this.token
}
}).then(response => {
return response.data
}).catch(error => {
console.error(error, 'error')
})
},
async initPddParam(uid) {
if (typeof window.PDD_OPEN_init === 'function') {
this.pageCode = await this.getPddPageCode(uid)
let color_info = {} await window.PDD_OPEN_init({ code: this.pageCode })
color_info.logo_bgcolor = obj.logo_bgcolor this.pati = await window.PDD_OPEN_getPati()
color_info.link_btn_color = obj.link_btn_color } else {
color_info.selected_nav_bgcolor = obj.selected_nav_bgcolor console.error('PDD_OPEN_init 不存在,SDK 未正确加载');
that.info.color_info = color_info }
},
that.$emit('saveEvent', that.info) handleDelBindClick(row, index) {
this.dialogDelBindConfim = true
this.delRow.index = index
this.delRow.row = row
},
handleDelBindCancel() {
this.dialogDelBindConfim = false
},
handleDelBindConfirm() {
const that = this
this.dialogDelBindConfim = false
this.$http('POST', '/agentnew/ajax_del_bind_service_goods', {
uid: that.uid,
type: that.type,
numiid: that.delRow.row.num_iid,
skuid: that.delRow.row.sku_id,
paytype: that.delRow.row.pay_type,
}, {
headers: {
'Auth': this.token
}
}).then(response => {
if (response.status) {
that.$message.success('删除成功');
this.$nextTick(() => {
that.bindList.splice(that.delRow.index, 1);
})
return true;
}
that.$message.error(response.info);
}).catch(error => {
console.error(error, 'error')
})
},
handleDefaultConfirm(id) {
const that = this
this.$http('POST', '/agentnew/ajax_default_bind_setting', {
uid: that.uid,
type: that.type,
id: id,
}, {
headers: {
'Auth': this.token
}
}).then(response => {
if (response.status) {
that.$message.success('设置成功');
that.bindList.forEach((item) => {
item.is_default = '0'
if (item.id === id) item.is_default = '1'
});
return true; return true;
} }
that.$message.error(response.info); that.$message.error(response.info);
@ -148,27 +454,126 @@ export default {
console.error(error, 'error') console.error(error, 'error')
}) })
}, },
//------ end------
} }
} }
</script> </script>
<style lang="scss"> <style lang="scss">
.mr12{ .price-set {
margin-right: 12px;
}
.set-item{
width: 540px;
letter-spacing: 0.08em; letter-spacing: 0.08em;
.set-title{
font-size: 14px; .price-top {
color: #1E2226; display: flex;
margin-bottom: 12px; align-items: center;
p:last-child{ margin-bottom: 16px;
color: #8A9099;
.title {
font-size: 14px;
font-weight: bold;
color: #1E2226;
}
.desc {
font-size: 14px;
color: #626573;
margin-left: 12px;
} }
} }
.set-content{ .el-form-item {
width: 100%; margin-bottom: 0;
}
.third-width {
width: calc((100% - 109px) / 2);
}
}
.service-opt {
justify-content: right;
}
.bind-button {
padding: 15px 20px;
border-radius: 4px;
border: 1px dashed #BABDC2;
justify-content: center;
align-items: center;
}
.bind-list {
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
letter-spacing: 0.08em;
flex-wrap: wrap;
margin-top: 32px;
.bind-item {
display: flex;
gap: 22px;
justify-content: space-between;
width: calc((100% - 78px) / 2);
height: 80px;
border-radius: 8px;
background: #FAFAFA;
padding: 16px;
color: #626573;
img {
width: 80px;
height: 80px;
border-radius: 4px;
}
.bind-goods-info {
display: flex;
flex-direction: column;
justify-content: space-between;
width: calc(100% - 80px);
.bind-goods-title {
text-align: left;
a {
color: #1E2226;
}
a:hover {
color: #006AFF;
}
}
span {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.bind-btn {
cursor: pointer;
background-repeat: no-repeat;
background-position: 0 50%;
background-size: 16px 16px;
padding: 2px 0 2px 22px;
}
.bind-delete {
color: #626573;
background-image: url(@/assets/site/delete.svg);
}
.bind-default {
color: #626573;
background-image: url(@/assets/site/star-icon.svg);
}
.bind-default-active {
color: #006AFF;
background-image: url(@/assets/site/star-active-icon.svg);
}
}
} }
} }
</style> </style>

2
src/components/site/serviceSetting/reportSeoSet.vue

@ -11,7 +11,7 @@
<div class="flex-wrap"> <div class="flex-wrap">
<div class="flex-left"> <div class="flex-left">
<GuipFormItem column="column" class="mb24" label="报告页标题(T:title)"> <GuipFormItem column="column" class="mb24" label="报告页标题(T:title)">
<GuipInput slot="formDom" ref="GuipInput" class=" mb24" width="100%" :maxlength="80" <GuipInput slot="formDom" ref="GuipInput" class=" mb24" width="100%" :maxlength="80" show-word-limit
placeholder="建议80字内" v-model="info.seo_report_title"> placeholder="建议80字内" v-model="info.seo_report_title">
</GuipInput> </GuipInput>
</GuipFormItem> </GuipFormItem>

4
src/components/site/serviceSetting/showSet.vue

@ -14,12 +14,12 @@
<div class="flex-wrap"> <div class="flex-wrap">
<div class="flex-left"> <div class="flex-left">
<GuipFormItem column="column" label="服务别名"> <GuipFormItem column="column" label="服务别名">
<GuipInput slot="formDom" ref="GuipInput" class=" mb24" width="100%" :maxlength="80" <GuipInput slot="formDom" ref="GuipInput" class=" mb24" width="100%" :maxlength="80" show-word-limit
placeholder="建议80字内" desc="展示在用户端的服务名称" v-model="info.title"> placeholder="建议80字内" desc="展示在用户端的服务名称" v-model="info.title">
</GuipInput> </GuipInput>
</GuipFormItem> </GuipFormItem>
<GuipFormItem column="column" label="服务广告词"> <GuipFormItem column="column" label="服务广告词">
<GuipInput slot="formDom" ref="GuipInput" class=" mb24" width="100%" :maxlength="20" <GuipInput slot="formDom" ref="GuipInput" class=" mb24" width="100%" :maxlength="20" show-word-limit
placeholder="建议20字内" desc="用来简短概括的解释服务" v-model="info.subtitle"> placeholder="建议20字内" desc="用来简短概括的解释服务" v-model="info.subtitle">
</GuipInput> </GuipInput>
</GuipFormItem> </GuipFormItem>

2
src/components/site/serviceSetting/submitSeoSet.vue

@ -11,7 +11,7 @@
<div class="flex-wrap"> <div class="flex-wrap">
<div class="flex-left"> <div class="flex-left">
<GuipFormItem column="column" class="mb24" label="提交页标题(T:title)"> <GuipFormItem column="column" class="mb24" label="提交页标题(T:title)">
<GuipInput slot="formDom" ref="GuipInput" class=" mb24" width="100%" :maxlength="80" <GuipInput slot="formDom" ref="GuipInput" class=" mb24" width="100%" :maxlength="80" show-word-limit
placeholder="建议80字内" v-model="info.seo_form_title"> placeholder="建议80字内" v-model="info.seo_form_title">
</GuipInput> </GuipInput>
</GuipFormItem> </GuipFormItem>

10
src/router/index.js

@ -52,6 +52,16 @@ const routes = [{
} }
}, },
{ {
path: '/agent/supplyList',
name: '首页',
component: () => import( /* webpackChunkName: "register" */ '../views/agent/supplyList.vue'),
isFirst: true, //是否属于一级路由
meta: {
title: '首页', //面包屑名称(此页面确认不需要放置在面包屑可以不添加此属性;如果获取不到title 会自动 获取 name 作为面包屑名称)
hideBreadcrumb: true // 是否隐藏面包屑
}
},
{
path: '/register', path: '/register',
name: 'register', name: 'register',
// this generates a separate chunk (about.[hash].js) for this route // this generates a separate chunk (about.[hash].js) for this route

68
src/views/agent/home.vue

@ -8,11 +8,11 @@
<span class="hoverCommon" @click="lookMoreSystem">查看更多</span> <span class="hoverCommon" @click="lookMoreSystem">查看更多</span>
</h2> </h2>
<div class="systemNotice-main"> <div class="systemNotice-main">
<div class="sales-item flex" v-for="(item) in systemList" :key="item.name"> <div class="sales-item flex" v-for="(item, key) in noticeList.slice(0, 4)" :key="item.title">
<img :src="require(`@/assets/home/NEW.svg`)" alt=""> <img :src="require('@/assets/home/notice_tag_'+(key+1)+'.png')" alt="">
<div class="column"> <div class="column">
<b class="flex">{{ item.label }} <img class="systemIcon" src="@/assets/home/systemIcon.svg" alt=""> </b> <b class="flex">{{ item.title }} <img class="systemIcon" src="@/assets/home/systemIcon.svg" alt=""> </b>
<p>{{ item.desc }}</p> <p v-html="item.content">{{ item.content }}</p>
</div> </div>
</div> </div>
</div> </div>
@ -57,18 +57,19 @@
<div class="supplyPrice common-area"> <div class="supplyPrice common-area">
<h2>供货价格 </h2> <h2>供货价格 </h2>
<div class="supplyPrice-main flex"> <div class="supplyPrice-main flex">
<div :class="['supplyPric-item', 'supplyPric-item' + classification_id]" v-for="(classification_name, classification_id) in serviceClassifications" :key="classification_id"> <div :class="['supplyPric-item', 'supplyPric-item' + classify_id]" v-for="(vers, classify_id) in classifyId2Vers" :key="classify_id">
<div class="item-top flex-between"> <div class="item-top flex-between">
<div class="flex"> <div class="flex">
<img :src="require(`@/assets/home/service_classification_${classification_id}.png`)" alt=""> <img :src="require(`@/assets/home/service_classification_${classify_id}.png`)" alt="">
<b>{{ classification_name }}</b> <b>{{ classifyId2Name[classify_id] }}</b>
</div> </div>
<a href="/agent/supplyList" target="_blank"><span>详情</span></a> <a href="/agent/supplyList" target="_blank"><span>详情</span></a>
</div> </div>
<div class="list-wrap" style="overflow: auto;height:410px"> <div class="list-wrap" style="overflow: auto;height:410px">
<div v-for="(veritem, key) in serviceClassificationServices[classification_id]" :key="key" class="item-list"> <div v-for="verid in vers" :key="verid" class="item-list">
<p class="item-list-name">{{ veritem.name }}</p> <p class="item-list-name mt-16" v-if="ver2types[verid] && ver2types[verid].length>1">{{ ver2info[verid].name }}</p>
<p class="flex-between" v-for="(type, index3) in veritem.types" :key="index3"> <p v-else></p>
<p class="flex-between" v-for="type in ver2types[verid]" :key="type">
{{ type2name[type] }} {{ type2name[type] }}
<span>{{ supplyPriceList[type].price }} / {{ supplyPriceList[type].unit_format }}</span> <span>{{ supplyPriceList[type].price }} / {{ supplyPriceList[type].unit_format }}</span>
</p> </p>
@ -129,11 +130,11 @@
<div class="usageGuide common-area"> <div class="usageGuide common-area">
<h2 class="flex-between"> <h2 class="flex-between">
<b>使用指南</b> <b>使用指南</b>
<span class="hoverCommon">查看全部</span> <span class="hoverCommon"><a class="faq" href="https://zhic.yuque.com/staff-chwecz/xhk8nt" target="_blank">查看全部</a></span>
</h2> </h2>
<p class="hoverCommon">我想将商品绑定淘宝店应该怎么做</p> <p class="hoverCommon"><a class="faq" href="https://zhic.yuque.com/staff-chwecz/xhk8nt/ggkqm3" target="_blank">微信支付在平台使用的常见问题</a></p>
<p class="hoverCommon">基于成交量的推广支持</p> <p class="hoverCommon"><a class="faq" href="https://zhic.yuque.com/staff-chwecz/xhk8nt/izn0gm" target="_blank">自定义域名设置步骤说明</a></p>
<p class="hoverCommon">二级裂变分销发展代理网络</p> <p class="hoverCommon"><a class="faq" href="https://zhic.yuque.com/staff-chwecz/xhk8nt/nocf04" target="_blank">3级分销</a></p>
</div> </div>
<div class="customWrap common-area"> <div class="customWrap common-area">
<h2>联系客服</h2> <h2>联系客服</h2>
@ -158,8 +159,10 @@ export default {
// //
tableLoading: true, tableLoading: true,
type2name:[], type2name:[],
serviceClassifications: [], classifyId2Name: [],
serviceClassificationServices: [], classifyId2Vers: [],
ver2types: [],
ver2info: [],
supplyPriceList: [], supplyPriceList: [],
serviceList: [], serviceList: [],
@ -168,6 +171,7 @@ export default {
expireServices: [], expireServices: [],
walletList: [], walletList: [],
noticeList: [],
isShowSpec: false, isShowSpec: false,
@ -215,6 +219,7 @@ export default {
this.getSaleStats() this.getSaleStats()
this.getExpireServices() this.getExpireServices()
this.getWalletList() this.getWalletList()
this.getNoticeList()
}, },
methods: { methods: {
getSupplyServiceList() { getSupplyServiceList() {
@ -231,9 +236,11 @@ export default {
this.tableLoading = false this.tableLoading = false
this.$nextTick(() => { this.$nextTick(() => {
that.serviceList = response.data.list that.serviceList = response.data.list
this.classifyId2Name = response.data.classifyid2name;
this.classifyId2Vers = response.data.classifyid2vers;
this.ver2types = response.data.ver2types;
this.ver2info = response.data.ver2info;
this.type2name = response.data.type2name; this.type2name = response.data.type2name;
this.serviceClassifications = response.data.service_classification;
this.serviceClassificationServices = response.data.service_classification_services;
this.supplyPriceList = response.data.supply_price; this.supplyPriceList = response.data.supply_price;
}) })
}).catch(error => { }).catch(error => {
@ -285,6 +292,21 @@ export default {
console.error(error, 'error') console.error(error, 'error')
}) })
}, },
getNoticeList(){
this.$http('POST', '/agentnew/ajax_get_notice_list', {
},{
headers:{
'Auth': this.token
}
}).then(response => {
this.$nextTick(() => {
this.noticeList = response.data
})
}).catch(error => {
console.error(error, 'error')
})
},
lookTaoBaoExpire() { lookTaoBaoExpire() {
// //
location.href = '/agent/payList' location.href = '/agent/payList'
@ -331,6 +353,10 @@ a {
} }
.faq {
color: #8A9099;
}
.home-wrap { .home-wrap {
padding: 12px; padding: 12px;
@ -508,8 +534,12 @@ a {
} }
} }
.item-list { .mt-16 {
margin-top: 16px; margin-top: 16px;
}
.item-list {
// margin-top: 16px;
text-align: left; text-align: left;
line-height: 18px; line-height: 18px;

222
src/views/agent/siteBaseSetting.vue

@ -73,18 +73,21 @@
<el-form ref="formRef"> <el-form ref="formRef">
<div class="flex-wrap"> <div class="flex-wrap">
<div class="flex-left"> <div class="flex-left">
<!-- 微信 -->
<GuipFormItem column="column" class="mb24" v-if="addablePays[payTypeWeixin]"> <GuipFormItem column="column" class="mb24" v-if="addablePays[payTypeWeixin]">
<div slot="formLeft" class="form-top-icon"> <div slot="formLeft" class="form-top-icon">
<img src="@/assets/register/weixin.svg" style="width: 26px;height: 26px;" alt=""><span>微信收款</span> <img src="@/assets/register/weixin.svg" style="width: 26px;height: 26px;" alt=""><span>微信收款</span>
</div> </div>
<CustomDropdown v-if="wxpayList && wxpayList.length" slot="formDom" width="100%" v-model="bindWxpayId" <CustomDropdown slot="formDom" width="100%"
:options="wxpayList" displayKey="name" valueKey="payid" :options="wxpayList" :options_null="!wxpayList.length" displayKey="name" valueKey="payid"
@change="changeSelectWeixin" placeholder="请选择" @changeNormal="changeNormalWeixin"> @change="changeSelectWeixin">
<!-- 选择后显示数据 --> <!-- 选择后显示数据 -->
<template #trigger> <template #trigger>
<span v-if="selectWxpay">{{ selectWxpay.short_name }} {{ selectWxpay.account }}</span> <span v-if="selectWxpay">{{ selectWxpay.short_name }} {{ selectWxpay.account }}</span>
<span v-else>请选择</span> <span v-else-if="wxpayList.length === 0">暂无收款账号稍后配置</span>
<span v-else>未绑定微信收款</span>
</template> </template>
<template #normal> <template #normal>
<div class="flex flex-between noraml-jump"> <div class="flex flex-between noraml-jump">
<div class="left"> <div class="left">
@ -111,28 +114,6 @@
</div> </div>
</template> </template>
</CustomDropdown> </CustomDropdown>
<CustomDropdown v-else slot="formDom" width="100%" v-model="bindWxpayId"
:options="wxpayList" displayKey="name" valueKey="payid"
@change="changeSelectWeixin" placeholder="请选择"
:options_null="options_weixin_null" @changeNormal="changeNormalWeixin">
<!-- 选择后显示数据 -->
<template #trigger>
<span v-if="selectWxpay">{{ selectWxpay.short_name }} {{ selectWxpay.account }}</span>
<span v-else>请选择</span>
</template>
<template #normal>
<div class="flex flex-between noraml-jump">
<div class="left">
<b>绑定新微信收款</b>
<p class="one">需要使用您公司的微信支付</p>
<p>需在微信商户平台-产品中心开通Native支付</p>
</div>
<div class="right">
<GuipButton type="primary" size="medium" @click="goBindPay(payTypeWeixin)">前往绑定</GuipButton>
</div>
</div>
</template>
</CustomDropdown>
</GuipFormItem> </GuipFormItem>
<!-- 支付宝 --> <!-- 支付宝 -->
@ -140,12 +121,12 @@
<div slot="formLeft" class="form-top-icon"> <div slot="formLeft" class="form-top-icon">
<img src="@/assets/register/zhifubao.svg" style="width: 26px;height: 26px;" alt=""><span>支付宝收款</span> <img src="@/assets/register/zhifubao.svg" style="width: 26px;height: 26px;" alt=""><span>支付宝收款</span>
</div> </div>
<CustomDropdown v-if="alipayList && alipayList.length" slot="formDom" width="100%" v-model="bindAlipayId" <CustomDropdown slot="formDom" width="100%"
:options="alipayList" @change="changeSelectAlipay" placeholder="请选择" :options="alipayList" :options_null="!alipayList.length" @change="changeSelectAlipay">
@changeNormal="changeNormalWeixin">
<template #trigger> <template #trigger>
<span v-if="selectAlipay">{{ selectAlipay.short_name }} {{ selectAlipay.account }}</span> <span v-if="selectAlipay">{{ selectAlipay.short_name }} {{ selectAlipay.account }}</span>
<span v-else>请选择</span> <span v-else-if="alipayList.length === 0">暂无收款账号稍后配置</span>
<span v-else>未绑定支付宝收款</span>
</template> </template>
<template #normal> <template #normal>
<div class="flex flex-between noraml-jump"> <div class="flex flex-between noraml-jump">
@ -172,38 +153,22 @@
</div> </div>
</template> </template>
</CustomDropdown> </CustomDropdown>
<CustomDropdown v-else slot="formDom" width="100%" v-model="bindAlipayId"
:options="alipayList" @change="changeSelectAlipay" placeholder="请选择"
@changeNormal="changeNormalWeixin" :options_null="options_weixin_null">
<template #trigger>
<span v-if="selectAlipay">{{ selectAlipay.short_name }} {{ selectAlipay.account }}</span>
<span v-else>请选择</span>
</template>
<template #normal>
<div class="flex flex-between noraml-jump">
<div class="left">
<b>绑定新支付宝收款</b>
<p class="one">需要使用您公司的支付宝支付</p>
<p>需在支付宝商户平台-产品中心开通Native支付</p>
</div>
<div class="right">
<GuipButton type="primary" size="medium" @click="goBindPay(payTypeAlipay)">前往绑定</GuipButton>
</div>
</div>
</template>
</CustomDropdown>
</GuipFormItem> </GuipFormItem>
<!-- 京东 -->
<GuipFormItem column="column" class="mb24" v-if="addablePays[payTypeJingdong]"> <GuipFormItem column="column" class="mb24" v-if="addablePays[payTypeJingdong]">
<div slot="formLeft" class="form-top-icon"> <div slot="formLeft" class="form-top-icon">
<img src="@/assets/register/jingdong.svg" style="width: 26px;height: 26px;" alt=""><span>京东店铺</span> <img src="@/assets/register/jingdong.svg" style="width: 26px;height: 26px;" alt=""><span>京东店铺</span>
</div> </div>
<CustomDropdown v-if="jdList && jdList.length" slot="formDom" width="100%" v-model="bindJdId" <CustomDropdown slot="formDom" width="100%"
:options="jdList" displayKey="name" valueKey="payid" :options="jdList" displayKey="name" valueKey="payid"
@change="changeSelectJindong" placeholder="请选择" @changeNormal="changeNormalWeixin"> :options_null="!jdList.length"
@change="changeSelectJindong" >
<!-- 选择后显示数据 --> <!-- 选择后显示数据 -->
<template #trigger> <template #trigger>
<span v-if="selectJd">{{ selectJd.short_name }} {{ selectJd.account }}</span> <span v-if="selectJd">{{ selectJd.short_name }} {{ selectJd.account }}</span>
<span v-else>请选择</span> <span v-else-if="jdList.length === 0">暂无收款账号稍后配置</span>
<span v-else>未绑定京东店铺</span>
</template> </template>
<template #normal> <template #normal>
<div class="flex flex-between noraml-jump"> <div class="flex flex-between noraml-jump">
@ -230,42 +195,25 @@
</div> </div>
</template> </template>
</CustomDropdown> </CustomDropdown>
<CustomDropdown v-else slot="formDom" width="100%" v-model="bindJdId"
:options="jdList" displayKey="name" valueKey="payid"
@change="changeSelectJindong" placeholder="请选择"
:options_null="options_weixin_null" @changeNormal="changeNormalWeixin">
<!-- 选择后显示数据 -->
<template #trigger>
<span v-if="selectJd">{{ selectJd.short_name }} {{ selectJd.account }}</span>
<span v-else>请选择</span>
</template>
<template #normal>
<div class="flex flex-between noraml-jump">
<div class="left">
<b>绑定新京东店铺</b>
<p class="one">如未购买快乐论文检测服务服务或已过期会跳转到购买服务页面</p>
</div>
<div class="right">
<GuipButton type="primary" size="medium" @click="goBindPay(payTypeJingdong)">前往绑定</GuipButton>
</div>
</div>
</template>
</CustomDropdown>
</GuipFormItem> </GuipFormItem>
</div> </div>
<div class="flex-line"></div> <div class="flex-line"></div>
<!-- 淘宝 -->
<div class="flex-right"> <div class="flex-right">
<GuipFormItem column="column" class="mb24" v-if="addablePays[payTypeTaoBao]"> <GuipFormItem column="column" class="mb24" v-if="addablePays[payTypeTaoBao]">
<div slot="formLeft" class="form-top-icon"> <div slot="formLeft" class="form-top-icon">
<img src="@/assets/register/taobao.svg" style="width: 26px;height: 26px;" alt=""><span>淘宝/天猫店铺</span> <img src="@/assets/register/taobao.svg" style="width: 26px;height: 26px;" alt=""><span>淘宝/天猫店铺</span>
</div> </div>
<CustomDropdown v-if="taobaoList && taobaoList.length" slot="formDom" width="100%" v-model="bindTaobaoId" <CustomDropdown slot="formDom" width="100%"
:options="taobaoList" displayKey="name" valueKey="payid" :options="taobaoList" displayKey="name" valueKey="payid"
@change="changeSelectTaobao" placeholder="请选择" @changeNormal="changeNormalWeixin"> :options_null="!taobaoList.length"
@change="changeSelectTaobao" >
<!-- 选择后显示数据 --> <!-- 选择后显示数据 -->
<template #trigger> <template #trigger>
<span v-if="selectTaobao">{{ selectTaobao.short_name }} {{ selectTaobao.account }}</span> <span v-if="selectTaobao">{{ selectTaobao.short_name }} {{ selectTaobao.account }}</span>
<span v-else>请选择</span> <span v-else-if="!taobaoList.length">暂无收款账号稍后配置</span>
<span v-else>未绑定店铺</span>
</template> </template>
<template #normal> <template #normal>
<div class="flex flex-between noraml-jump"> <div class="flex flex-between noraml-jump">
@ -292,39 +240,22 @@
</div> </div>
</template> </template>
</CustomDropdown> </CustomDropdown>
<CustomDropdown v-else slot="formDom" width="100%" v-model="bindTaobaoId"
:options="taobaoList" displayKey="name" valueKey="payid"
@change="changeSelectTaobao" placeholder="请选择"
:options_null="options_weixin_null" @changeNormal="changeNormalWeixin">
<!-- 选择后显示数据 -->
<template #trigger>
<span v-if="selectTaobao">{{ selectTaobao.short_name }} {{ selectTaobao.account }}</span>
<span v-else>请选择</span>
</template>
<template #normal>
<div class="flex flex-between noraml-jump">
<div class="left">
<b>绑定新淘宝/天猫店铺</b>
<p class="one">如未购买快乐帮手服务或已过期会跳转到购买服务页面</p>
</div>
<div class="right">
<GuipButton type="primary" size="medium" @click="goBindPay(payTypeTaoBao)">前往绑定</GuipButton>
</div>
</div>
</template>
</CustomDropdown>
</GuipFormItem> </GuipFormItem>
<!-- 拼多多 -->
<GuipFormItem column="column" class="mb24" v-if="addablePays[payTypePdd]"> <GuipFormItem column="column" class="mb24" v-if="addablePays[payTypePdd]">
<div slot="formLeft" class="form-top-icon"> <div slot="formLeft" class="form-top-icon">
<img src="@/assets/register/pinduoduo.svg" style="width: 26px;height: 26px;" alt=""><span>拼多多店铺</span> <img src="@/assets/register/pinduoduo.svg" style="width: 26px;height: 26px;" alt=""><span>拼多多店铺</span>
</div> </div>
<CustomDropdown v-if="pddList && pddList.length" slot="formDom" width="100%" v-model="bindPddId" <CustomDropdown slot="formDom" width="100%"
:options="pddList" displayKey="name" valueKey="payid" :options="pddList" displayKey="name" valueKey="payid"
@change="changeSelectPdd" placeholder="请选择" @changeNormal="changeNormalWeixin"> :options_null="!pddList.length"
@change="changeSelectPdd" >
<!-- 选择后显示数据 --> <!-- 选择后显示数据 -->
<template #trigger> <template #trigger>
<span v-if="selectPdd">{{ selectPdd.short_name }} {{ selectPdd.account }}</span> <span v-if="selectPdd">{{ selectPdd.short_name }} {{ selectPdd.account }}</span>
<span v-else>请选择</span> <span v-else-if="pddList.length === 0">暂无收款账号稍后配置</span>
<span v-else>未绑定拼多多店铺</span>
</template> </template>
<template #normal> <template #normal>
<div class="flex flex-between noraml-jump"> <div class="flex flex-between noraml-jump">
@ -351,27 +282,6 @@
</div> </div>
</template> </template>
</CustomDropdown> </CustomDropdown>
<CustomDropdown v-else slot="formDom" width="100%" v-model="bindPddId"
:options="pddList" displayKey="name" valueKey="payid"
@change="changeSelectPdd" placeholder="请选择"
:options_null="options_weixin_null" @changeNormal="changeNormalWeixin">
<!-- 选择后显示数据 -->
<template #trigger>
<span v-if="selectPdd">{{ selectPdd.short_name }} {{ selectPdd.account }}</span>
<span v-else>请选择</span>
</template>
<template #normal>
<div class="flex flex-between noraml-jump">
<div class="left">
<b>绑定新拼多多店铺</b>
<p class="one">如未购买快乐帮手服务或已过期会跳转到购买服务页面</p>
</div>
<div class="right">
<GuipButton type="primary" size="medium" @click="goBindPay(payTypePdd)">前往绑定</GuipButton>
</div>
</div>
</template>
</CustomDropdown>
</GuipFormItem> </GuipFormItem>
</div> </div>
</div> </div>
@ -478,9 +388,6 @@ export default {
domainTypes: [], domainTypes: [],
domainPrefix: '', domainPrefix: '',
siteDomain: '', siteDomain: '',
options_weixin_null: {},
select_placeholder_weixin: '暂无收款账号,稍后配置',
} }
}, },
computed: { computed: {
@ -688,63 +595,52 @@ export default {
cancleUpdateSiteInfo() { cancleUpdateSiteInfo() {
this.getSiteInfo(); this.getSiteInfo();
}, },
changeNormalWeixin() { changeSelectWeixin(item) {
console.log(item, 'item')
}, if(this.bindWxpayId === item.payid){
changeSelectWeixin(item, flag) { this.bindWxpayId = 0
if (flag) { this.selectWxpay = null
this.select_placeholder_weixin = this.options_weixin_null.desc; return true
return
} }
this.bindWxpayId = item.payid; this.bindWxpayId = item.payid;
this.selectWxpay = item; this.selectWxpay = item;
console.log(this.bindWxpayId, 'bindWxpayId');
console.log(this.selectWxpay, 'selectWxpay');
this.selectedItem = { ...item };
console.log(this.selectedItem, 'this.selectedItem====');
}, },
changeSelectAlipay(item, flag) { changeSelectAlipay(item) {
if (flag) { if(this.bindAlipayId === item.payid){
this.select_placeholder_weixin = this.options_weixin_null.desc; this.bindAlipayId = 0
return this.selectAlipay = null
return true
} }
this.bindAlipayId = item.payid; this.bindAlipayId = item.payid;
this.selectAlipay = item; this.selectAlipay = item;
console.log(this.bindWxpayId, 'bindWxpayId');
this.selectedItem = { ...item };
console.log(this.selectedItem, 'this.selectedItem====');
}, },
changeSelectTaobao(item, flag) { changeSelectTaobao(item) {
if (flag) { if(this.bindTaobaoId === item.payid){
this.select_placeholder_weixin = this.options_weixin_null.desc; this.bindTaobaoId = 0
return this.selectTaobao = null
return true
} }
this.bindTaobaoId = item.payid; this.bindTaobaoId = item.payid;
this.selectTaobao = item; this.selectTaobao = item;
this.selectedItem = { ...item };
}, },
changeSelectJindong(item, flag) { changeSelectJindong(item) {
if (flag) { if(this.bindJdId === item.payid){
this.select_placeholder_weixin = this.options_weixin_null.desc; this.bindJdId = 0
return this.selectJd = null
return true
} }
this.bindJdId = item.payid; this.bindJdId = item.payid;
this.selectJd = item; this.selectJd = item;
this.selectedItem = { ...item };
}, },
changeSelectPdd(item, flag) { changeSelectPdd(item) {
if (flag) { if(this.bindPddId === item.payid){
this.select_placeholder_weixin = this.options_weixin_null.desc; this.bindPddId = 0
return this.selectPdd = null
return true
} }
this.bindPddId = item.payid; this.bindPddId = item.payid;
this.selectPdd = item; this.selectPdd = item;
this.selectedItem = { ...item };
}, },
// //
domainTypeChange(type) { domainTypeChange(type) {

150
src/views/agent/siteServiceAdd.vue

@ -1,7 +1,7 @@
<template> <template>
<div class="serviceAdd-wrap"> <div class="serviceAdd-wrap">
<div class="ml12 mr12 overFlow-wrap"> <div class="ml12 mr12 overFlow-wrap">
<PromptText text="如何添加服务?" :type="1" class="add-info"> <PromptText text="如何添加服务?" :type="2" class="add-info">
<template #next_desc> <template #next_desc>
<div class="alert-more flex gap12" :class="alertShow ? '' : 'alert-more-hide'" @click="handleAlert"> <div class="alert-more flex gap12" :class="alertShow ? '' : 'alert-more-hide'" @click="handleAlert">
<div v-if="alertShow">收起</div> <div v-if="alertShow">收起</div>
@ -19,17 +19,27 @@
</template> </template>
</PromptText> </PromptText>
<div class="service-title flex-between" v-if="serviceAddInfo"> <div class="service-title flex-between" v-if="serviceAddInfo && serviceAddInfo.ver_type">
<div class="service-name flex gap12"> <div class="service-name flex gap12">
<img src="@/assets/site/step_success.png" alt=""> <img :src="require('@/assets/serviceIcon/ver_'+serviceAddInfo.ver_type+'.svg')" alt="">
<span>{{ serviceAddInfo.ver_name }}_{{ serviceAddInfo.type_name }}</span> <span>{{ serviceAddInfo.ver_name }}_{{ serviceAddInfo.type_name }}</span>
</div> </div>
<div class="service-status" v-if="serviceInfo.status"> <div class="service-status" v-if="service_status">
<span class="service-status-close" @click="handleDelServiceClick">关闭服务</span> <span class="service-status-close" @click="handleDelServiceClick">关闭服务</span>
<span class="service-status-desc">已开启</span> <span class="service-status-desc">已开启</span>
</div> </div>
</div> </div>
<PromptText v-if="serviceAddInfo && serviceAddInfo.prompt && serviceAddInfo.prompt.title" :text='serviceAddInfo.prompt.title' :type="1"
class="mb12">
<template #desc v-if="serviceAddInfo.prompt.content">
<div class="alert-more-info mt12">
<div class="flex mb10" v-for="item in serviceAddInfo.prompt.content" :key="item">
{{ item }}</div>
</div>
</template>
</PromptText>
<!-- 网页售价 --> <!-- 网页售价 -->
<div class="flex-common mb12 price-set" v-if="serviceAddInfo.web_price_set"> <div class="flex-common mb12 price-set" v-if="serviceAddInfo.web_price_set">
<el-form class="el-row demo-ruleForm" ref="formRef"> <el-form class="el-row demo-ruleForm" ref="formRef">
@ -39,45 +49,33 @@
v-if="serviceAddInfo.supply_price">供货价{{ serviceAddInfo.supply_price }}{{ serviceAddInfo.supply_price_warning }}</span> v-if="serviceAddInfo.supply_price">供货价{{ serviceAddInfo.supply_price }}{{ serviceAddInfo.supply_price_warning }}</span>
</div> </div>
<PromptText v-if="serviceAddInfo.prompt.title" :text='serviceAddInfo.prompt.title' :type="1"
class="mb12">
<template #desc v-if="serviceAddInfo.prompt.content">
<div class="alert-more-info mt12">
<div class="flex mb10" v-for="item in serviceAddInfo.prompt.content" :key="item">
{{ item }}</div>
</div>
</template>
</PromptText>
<div class="flex-wrap"> <div class="flex-wrap">
<div class="flex-left"> <div class="flex-left">
<div class="flex-between mb12"> <div class="flex-between mb12">
<div>售价管理</div> <div>售价管理</div>
</div> </div>
<div class="flex-between"> <div class="flex-between">
<div class="short-width"> <div class="short-width" v-if="Object.keys(serviceAddInfo.set_units).length>1">
<GuipSelect width="100%" v-model="serviceInfo.unit" placeholder="选择计费方式" <GuipSelect width="100%" v-model="service_unit" placeholder="选择计费方式"
:options="serviceAddInfo.set_units" /> :options="serviceAddInfo.set_units" @change="handleUnitName"/>
</div> </div>
<div class="short-width" v-if="serviceInfo.unit !== '0'"> <div class="short-width" v-if="service_unit !== '0'">
<GuipInput v-if="serviceInfo.unit === '1'" v-model="serviceInfo.price" width="100%" <GuipInput v-model="serviceInfo.price" width="100%"
ref="GuipInput" unit="元/篇"></GuipInput> ref="GuipInput" :unit="'元/'+serviceAddInfo.unit_name"></GuipInput>
<GuipInput v-if="serviceInfo.unit === '2'" v-model="serviceInfo.price" width="100%"
ref="GuipInput" unit="元/页"></GuipInput>
</div> </div>
</div> </div>
<div class="flex-between mt12" v-if="serviceInfo.unit === '0'"> <div class="flex-between mt12" v-if="service_unit === '0'">
<div class="short-width"> <div class="short-width">
<GuipInput width="100%" v-model="serviceInfo.price" ref="GuipInput" unit="元"> <GuipInput width="100%" v-model="serviceInfo.price" ref="GuipInput" unit="元">
</GuipInput> </GuipInput>
</div> </div>
<div class="short-width"> <div class="short-width">
<GuipInput width="100%" v-model="serviceInfo.unit_num" ref="GuipInput" unit="字符"> <GuipInput width="100%" v-model="serviceInfo.unit_num" ref="GuipInput" :unit="serviceAddInfo.unit_name">
</GuipInput> </GuipInput>
</div> </div>
</div> </div>
</div> </div>
<template v-if="serviceAddInfo.base_set"> <template v-if="serviceAddInfo.base_set && service_unit === '0'">
<div class="flex-line"></div> <div class="flex-line"></div>
<div class="flex-right"> <div class="flex-right">
<div class="flex-between mb12"> <div class="flex-between mb12">
@ -112,7 +110,8 @@
<el-form class="el-row demo-ruleForm" ref="formRef"> <el-form class="el-row demo-ruleForm" ref="formRef">
<div class="price-top"> <div class="price-top">
<span class="title">{{ serviceAddInfo.shop_name }}支付管理</span> <span class="title">{{ serviceAddInfo.shop_name }}支付管理</span>
<span class="desc"></span> <span class="desc"
v-if="serviceAddInfo.supply_price && !serviceAddInfo.web_price_set">供货价{{ serviceAddInfo.supply_price }}{{ serviceAddInfo.supply_price_warning }}</span>
</div> </div>
<div class="flex-wrap"> <div class="flex-wrap">
@ -121,29 +120,27 @@
<div>售价管理</div> <div>售价管理</div>
</div> </div>
<div class="flex-between"> <div class="flex-between">
<div class="short-width"> <div class="short-width" v-if="Object.keys(serviceAddInfo.set_units).length>1">
<GuipSelect width="100%" v-model="serviceInfo.unit" placeholder="选择计费方式" <GuipSelect width="100%" v-model="service_unit" placeholder="选择计费方式"
:options="serviceAddInfo.set_units" /> :options="serviceAddInfo.set_units" @change="handleUnitName"/>
</div> </div>
<div class="short-width" v-if="serviceInfo.unit > 0"> <div class="short-width" v-if="service_unit !== '0'">
<GuipInput v-if="serviceInfo.unit === '1'" v-model="serviceAddInfo.unit_piece" <GuipInput v-model="serviceInfo.unit_piece" width="100%"
width="100%" ref="GuipInput" unit="件/篇"></GuipInput> ref="GuipInput" :unit="'件/'+serviceAddInfo.unit_name"></GuipInput>
<GuipInput v-if="serviceInfo.unit === '2'" v-model="serviceAddInfo.unit_piece"
width="100%" ref="GuipInput" unit="件/页"></GuipInput>
</div> </div>
</div> </div>
<div class="flex-between mt12" v-if="serviceInfo.unit === '0'"> <div class="flex-between mt12" v-if="service_unit === '0'">
<div class="short-width"> <div class="short-width">
<GuipInput width="100%" v-model="serviceInfo.unit_piece" ref="GuipInput" unit="件"> <GuipInput width="100%" v-model="serviceInfo.unit_piece" ref="GuipInput" unit="件">
</GuipInput> </GuipInput>
</div> </div>
<div class="short-width"> <div class="short-width">
<GuipInput width="100%" v-model="serviceInfo.unit_num" ref="GuipInput" unit="字符"> <GuipInput width="100%" v-model="serviceInfo.unit_num" ref="GuipInput" :unit="serviceAddInfo.unit_name">
</GuipInput> </GuipInput>
</div> </div>
</div> </div>
</div> </div>
<template v-if="serviceAddInfo.base_set"> <template v-if="serviceAddInfo.base_set && service_unit === '0'">
<div class="flex-line"></div> <div class="flex-line"></div>
<div class="flex-right"> <div class="flex-right">
<div class="flex-between mb12"> <div class="flex-between mb12">
@ -174,7 +171,7 @@
</div> </div>
<!-- 店铺商品绑定--> <!-- 店铺商品绑定-->
<div class="flex-common mb12 price-set" v-if="serviceAddInfo.exists_shop_pay"> <div class="flex-common mb12 price-set" v-if="serviceAddInfo.shop_price_set">
<el-form class="el-row demo-ruleForm" ref="formRef"> <el-form class="el-row demo-ruleForm" ref="formRef">
<div class="price-top"> <div class="price-top">
<span class="title">关联电商商品</span> <span class="title">关联电商商品</span>
@ -211,7 +208,7 @@
</div> </div>
</el-form> </el-form>
<bindGoods :showBind="showBind" :uid="uid" :type="type" :pati="pati" :pageCode="pageCode" <bindGoods :showBind="showBind" :uid="uid" :type="type" :pdd_pati="pdd_pati" :pdd_pagecode="pdd_pagecode"
@handleBind="handleBind"> @handleBind="handleBind">
</bindGoods> </bindGoods>
@ -263,14 +260,16 @@ export default {
type: 0, type: 0,
prodid: 0, prodid: 0,
serviceAddInfo: {}, serviceAddInfo: {},
service_unit:'',
service_status: false,
serviceInfo: {}, serviceInfo: {},
bindList: [], bindList: [],
alertShow: true, alertShow: true,
menuList: {}, menuList: {},
siteAddUrl: '/agent/siteAdd', siteAddUrl: '/agent/siteAdd',
showBind: false, showBind: false,
pati: '', pdd_pati: '',
pageCode: '', pdd_pagecode: '',
dialogDelBindConfim: false, dialogDelBindConfim: false,
delRow: {}, delRow: {},
dialogDelServiceConfim: false, dialogDelServiceConfim: false,
@ -324,6 +323,7 @@ export default {
}, },
// //
getServiceAddInfo() { getServiceAddInfo() {
this.serviceAddInfo = {}
const that = this const that = this
that.$http('POST', '/agentnew/ajax_get_service_add_info', { that.$http('POST', '/agentnew/ajax_get_service_add_info', {
uid: that.uid, uid: that.uid,
@ -336,6 +336,7 @@ export default {
if (response.status) { if (response.status) {
that.$nextTick(() => { that.$nextTick(() => {
that.serviceAddInfo = response.data that.serviceAddInfo = response.data
that.service_unit = that.serviceAddInfo.unit
// //
if (that.serviceAddInfo.shop_name === '拼多多') this.initPddParam(that.uid) if (that.serviceAddInfo.shop_name === '拼多多') this.initPddParam(that.uid)
// //
@ -363,21 +364,15 @@ export default {
} }
}).then(response => { }).then(response => {
that.$nextTick(() => { that.$nextTick(() => {
//
that.serviceInfo.unit = that.serviceAddInfo.unit
// //
that.serviceInfo.status = false if (response.status && response.data) {
})
if (response.status && response.data) {
that.$nextTick(() => {
that.serviceInfo = response.data.service_info that.serviceInfo = response.data.service_info
that.serviceInfo.status = true that.service_status = true
that.getServiceBindGoods()
}
})
console.log(that.serviceInfo,'ccc')
})
that.getServiceBindGoods()
}
console.log(that.serviceInfo,'aaa')
}).catch(error => { }).catch(error => {
console.error(error, 'error') console.error(error, 'error')
}) })
@ -402,6 +397,9 @@ export default {
console.error(error, 'error') console.error(error, 'error')
}) })
}, },
handleUnitName(){
this.serviceAddInfo.unit_name = this.serviceAddInfo.set_units[this.service_unit]
},
handleDelServiceClick() { handleDelServiceClick() {
this.dialogDelServiceConfim = true this.dialogDelServiceConfim = true
}, },
@ -423,6 +421,7 @@ export default {
that.$message.success('删除成功'); that.$message.success('删除成功');
this.$nextTick(() => { this.$nextTick(() => {
that.serviceInfo = {} that.serviceInfo = {}
that.service_status = false;
that.setMenuList(that.type, false) that.setMenuList(that.type, false)
}) })
return true; return true;
@ -440,9 +439,16 @@ export default {
}, },
savePrice() { savePrice() {
const that = this const that = this
//
if(that.service_unit !== '0') {
that.serviceInfo.unit_num = 1
that.serviceInfo.base_unit_num = ''
that.serviceInfo.base_unit_price = ''
}
this.$http('POST', "/agentnew/ajax_set_service_price", { this.$http('POST', "/agentnew/ajax_set_service_price", {
uid: that.uid, uid: that.uid,
type: that.type, type: that.type,
unit: that.service_unit,
unit_num: that.serviceInfo.unit_num, unit_num: that.serviceInfo.unit_num,
unit_price: that.serviceInfo.price, unit_price: that.serviceInfo.price,
b_unit_num: that.serviceInfo.base_unit_num, b_unit_num: that.serviceInfo.base_unit_num,
@ -453,8 +459,8 @@ export default {
} }
}).then(response => { }).then(response => {
if (response.status) { if (response.status) {
if (that.serviceInfo.status === false) { if (that.service_status === false) {
that.serviceInfo.status = true that.service_status = true
that.setMenuList(that.type, true) that.setMenuList(that.type, true)
} }
that.$message.success('保存成功'); that.$message.success('保存成功');
@ -473,9 +479,18 @@ export default {
}, },
saveShopPrice() { saveShopPrice() {
const that = this const that = this
// 1
//
if(that.service_unit !== '0') {
that.serviceInfo.unit_num = 1
that.serviceInfo.base_unit_num = ''
that.serviceInfo.base_unit_piece = ''
}
console.log(that.serviceInfo,'ddd')
this.$http('POST', "/agentnew/ajax_set_service_price", { this.$http('POST', "/agentnew/ajax_set_service_price", {
uid: that.uid, uid: that.uid,
type: that.type, type: that.type,
unit: that.service_unit,
unit_num: that.serviceInfo.unit_num, unit_num: that.serviceInfo.unit_num,
unit_piece: that.serviceInfo.unit_piece, unit_piece: that.serviceInfo.unit_piece,
b_unit_num: that.serviceInfo.base_unit_num, b_unit_num: that.serviceInfo.base_unit_num,
@ -486,8 +501,8 @@ export default {
} }
}).then(response => { }).then(response => {
if (response.status) { if (response.status) {
if (that.serviceInfo.status === false) { if (that.service_status === false) {
that.serviceInfo.status = true that.service_status = true
that.setMenuList(that.type, true) that.setMenuList(that.type, true)
} }
that.$message.success('保存成功'); that.$message.success('保存成功');
@ -539,10 +554,10 @@ export default {
}, },
async initPddParam(uid) { async initPddParam(uid) {
if (typeof window.PDD_OPEN_init === 'function') { if (typeof window.PDD_OPEN_init === 'function') {
this.pageCode = await this.getPddPageCode(uid) this.pdd_pagecode = await this.getPddPageCode(uid)
await window.PDD_OPEN_init({ code: this.pageCode }) await window.PDD_OPEN_init({ code: this.pdd_pagecode })
this.pati = await window.PDD_OPEN_getPati() this.pdd_pati = await window.PDD_OPEN_getPati()
} else { } else {
console.error('PDD_OPEN_init 不存在,SDK 未正确加载'); console.error('PDD_OPEN_init 不存在,SDK 未正确加载');
} }
@ -607,7 +622,20 @@ export default {
}, },
//------ end------ //------ end------
jumpStep() { jumpStep() {
this.$router.push(this.siteAddUrl + '?uid=' + this.uid) const that = this
this.$http('POST', '/agentnew/ajax_get_not_finished_site', {},{
headers:{
'Auth': this.token
}
}).then(response => {
if(Object.keys(response.data).length>0){
that.$router.push('/agent/siteAdd')
} else {
that.$router.push('/agent/siteServiceList?uid=' + that.uid)
}
}).catch(error => {
console.error(error, 'error')
})
}, },
} }
} }

21
src/views/agent/siteServiceList.vue

@ -13,10 +13,8 @@
<GuipButton type="ignore" :btnstyle="btnInfostyleObj" @click="handleBatchDelClick">批量删除</GuipButton> <GuipButton type="ignore" :btnstyle="btnInfostyleObj" @click="handleBatchDelClick">批量删除</GuipButton>
</div> </div>
<div class="pageheader-right"> <div class="pageheader-right" v-if="addProd">
<GuipButton type="primary" :btnstyle="btnstyleObj" @click="jumpAdd(1)">添加查重服务</GuipButton> <GuipButton v-for="(item,key) in addProd" :key="item" type="primary" :btnstyle="btnstyleObj" @click="jumpAdd(key)">添加{{item}}</GuipButton>
<GuipButton type="primary" :btnstyle="btnstyleObj" @click="jumpAdd(3)">添加写作辅助</GuipButton>
<GuipButton type="primary" :btnstyle="btnstyleObj" @click="jumpAdd(2)">添加AIGC</GuipButton>
</div> </div>
</div> </div>
@ -190,6 +188,8 @@ export default {
uid:0, uid:0,
// //
siteShortName: "", siteShortName: "",
//
addProd: {},
// //
serviceList: [], serviceList: [],
// //
@ -255,10 +255,15 @@ export default {
} }
}).then(response => { }).then(response => {
this.tableLoading = false this.tableLoading = false
this.$nextTick(() => { if(response.status){
that.serviceList = response.data.service_list that.$nextTick(() => {
store.commit('SET_BREADRIGHTTEXT', response.data.site_short_name); that.addProd = response.data.add_proids
}) store.commit('SET_BREADRIGHTTEXT', response.data.site_short_name);
if(response.data.service_list){
that.serviceList = response.data.service_list
}
})
}
}).catch(error => { }).catch(error => {
console.error(error, 'error') console.error(error, 'error')
}) })

501
src/views/agent/supplyList.vue

@ -3,24 +3,53 @@
<PromptText text='平台针对不同品牌产品,已做了风险提醒义务,请安全规避销售。平台仅保障货品正版,针对有风险的产品,请具备安全销售方案后再开展销售。' :type="3" /> <PromptText text='平台针对不同品牌产品,已做了风险提醒义务,请安全规避销售。平台仅保障货品正版,针对有风险的产品,请具备安全销售方案后再开展销售。' :type="3" />
<!-- page header --> <div class="supply-list" v-for="(vers, classify_id) in classifyId2Vers" :key="classify_id">
<div class="pageheader"> <div class="classify">
<span class="pagetitle">基本设置</span> <span class="classify-title mr-20">{{ classifyId2Name[classify_id] }}</span>
</div>
<div class="ver-anchor-point flex mr-12" v-for="verid in vers" :key="verid">
<a class="flex anchor" href="javascript:;" @click="scrollToAnchor(verid)">
<img class="ver-icon" :src="require('@/assets/serviceIcon/ver_'+verid+'.svg')" alt="" style="width:20px"><span>{{ ver2info[verid].name }}</span>
</a>
</div>
</div>
<!-- page content --> <div class="ver-wrap" v-for="verid in vers" :key="verid" :id="'ver_'+verid">
<div class="site-setting-wrap min-flex-right"> <div class="ver">
<div class="siteMessage flex-common" id="siteMessage1"> <div class="ver-title-wrap">
<h3>站点信息</h3> <img class="ver-icon mr-8" :src="require('@/assets/serviceIcon/ver_'+verid+'.svg')" alt="">
<el-form> <span class="ver-title mr-8">{{ ver2info[verid].name }}</span>
<div class="flex-wrap"> <div class="status-item divgreen mr-8" v-if="ver2info[verid].is_official_api==1"><span class="fontgreen">官方接口</span></div>
<div class="flex-left"> <div class="status-item divblue" v-if="ver2info[verid].sale_policy==1"><span class="fontblue">{{ salePolicy[ver2info[verid].sale_policy] }}</span></div>
<div class="status-item divorange" v-else-if="ver2info[verid].sale_policy==2"><span class="fontorange">{{ salePolicy[ver2info[verid].sale_policy] }}</span></div>
<div class="status-item divred" v-if="ver2info[verid].sale_policy==3"><span class="fontred">{{ salePolicy[ver2info[verid].sale_policy] }}</span></div>
</div>
<div class="ver-desc flex" v-if="ver2types[verid] && ver2types[verid].length>1">{{ ver2info[verid].desc }}</div>
<div class="ver-services-wrap" v-if="ver2types[verid] && ver2types[verid].length>1">
<div class="ver-service" v-for="type in ver2types[verid]" :key="type">
<div class="service-title">{{ type2name[type] }}</div>
<div class="service-desc">
<el-form>
<GuipToolTip :content="type2info[type].introduce">
<span>{{ type2info[type].introduce }}</span>
</GuipToolTip>
</el-form>
</div>
<div class="service-price"><span class="price">{{ supplyPriceList[type].price }}</span><span class="unit"> / {{ supplyPriceList[type].unit_format }}</span></div>
</div> </div>
<div class="flex-line"></div> </div>
<div class="flex-right"> <div class="ver-single flex" v-else>
<div class="ver-single-desc">
<el-form>
<GuipToolTip :content="ver2info[verid].desc">
<span>{{ ver2info[verid].desc }}</span>
</GuipToolTip>
</el-form>
</div> </div>
<div class="service-price"><span class="price">{{ supplyPriceList[ver2types[verid][0]].price }}</span><span class="unit"> / {{ supplyPriceList[ver2types[verid][0]].unit_format }}</span></div>
</div> </div>
</el-form> </div>
</div> </div>
</div> </div>
</div> </div>
@ -30,6 +59,7 @@
import store from '@/store'; import store from '@/store';
import { mapState } from 'vuex'; import { mapState } from 'vuex';
import PromptText from '@/components/PromptText.vue'; import PromptText from '@/components/PromptText.vue';
import GuipToolTip from '@/components/GuipToolTip.vue';
export default { export default {
// //
@ -37,17 +67,20 @@ export default {
props: [''], props: [''],
components: { components: {
PromptText, PromptText,
GuipToolTip,
}, },
data() { data() {
return { return {
// AUTH // AUTH
token: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE3NTI2NDY1NDUsIm5iZiI6MTc1MjY0NjU0NSwiZXhwIjoxNzU1MjM4NTQ1LCJ1c2VyIjoic3VidXNlciIsImxvZ2luX3R5cGUiOjAsImFpZCI6IjEifQ.G-Is-x9qPMiV_urOlDPQVRjfAIozySxL5EK2k82d46k', token: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE3NTI2NDY1NDUsIm5iZiI6MTc1MjY0NjU0NSwiZXhwIjoxNzU1MjM4NTQ1LCJ1c2VyIjoic3VidXNlciIsImxvZ2luX3R5cGUiOjAsImFpZCI6IjEifQ.G-Is-x9qPMiV_urOlDPQVRjfAIozySxL5EK2k82d46k',
//
tableLoading: true,
type2name:[], type2name:[],
serviceClassifications: [], classifyId2Name: [],
serviceClassificationServices: [], classifyId2Vers: [],
ver2types: [],
ver2info: [],
type2info: [],
supplyPriceList: [], supplyPriceList: [],
salePolicy: [],
} }
}, },
computed: { computed: {
@ -60,38 +93,39 @@ export default {
mounted() { mounted() {
store.commit('SET_PAGETITLE', '基本设置'); store.commit('SET_PAGETITLE', '基本设置');
this.getSiteInfo(); this.getSupplyServiceList();
this.getPayList();
this.getAddablePays();
}, },
methods: { methods: {
// scrollToAnchor(ver) {
this.$nextTick(() => {
const element = document.getElementById('ver_'+ver);
if (element) {
element.scrollIntoView({ behavior: 'smooth' });
}
});
},
getSupplyServiceList() { getSupplyServiceList() {
this.$http('POST', '/agentnew/ajax_get_supply_services', {
this.tableLoading = true },{
const that = this headers:{
that.serviceList = [] 'Auth': this.token
this.$http('POST', '/agentnew/ajax_get_supply_services', { }
}).then(response => {
},{ this.$nextTick(() => {
headers:{ this.classifyId2Name = response.data.classifyid2name;
'Auth': this.token this.classifyId2Vers = response.data.classifyid2vers;
} this.ver2types = response.data.ver2types;
}).then(response => { this.ver2info = response.data.ver2info;
this.tableLoading = false this.type2name = response.data.type2name;
this.$nextTick(() => { this.type2info = response.data.type2info;
that.serviceList = response.data.list this.supplyPriceList = response.data.supply_price;
this.type2name = response.data.type2name; this.salePolicy = response.data.sale_policy;
this.serviceClassifications = response.data.service_classification;
this.serviceClassificationServices = response.data.service_classification_services;
this.supplyPriceList = response.data.supply_price;
console.log(this.supplyPriceList[2].price)
console.log(this.supplyPriceList[2].unit_format)
})
}).catch(error => {
console.error(error, 'error')
}) })
}, }).catch(error => {
console.error(error, 'error')
})
},
} }
} }
</script> </script>
@ -100,129 +134,318 @@ export default {
padding: 20px 48px; padding: 20px 48px;
} }
.pageheader { .classify {
display: flex; display: flex;
justify-content: space-between; margin-bottom: 20px;
/* 关键属性 */ margin-top: 20px;
align-items: center;
margin: 16px 0px 16px 0px;
} }
.pagetitle { .classify-title {
font-family: Microsoft YaHei UI;
font-size: 20px;
font-weight: bold;
line-height: 26px;
letter-spacing: 0.08em;
color: #1E2226;
}
.ver-wrap {
width: 100%;
/* 自动布局 */
display: flex;
flex-direction: column;
gap: 10px;
z-index: 0;
background: #FFFFFF;
margin-bottom: 10px;
}
.ver {
padding: 20px;
}
.ver-title-wrap {
height: 30px;
/* 自动布局 */
display: flex;
justify-content: space-flex-start;
align-items: center;
padding: 0px;
align-self: stretch;
z-index: 0;
}
.ver-title {
/* body/body 1_bold */
font-family: Microsoft YaHei UI;
font-size: 16px; font-size: 16px;
font-weight: bold; font-weight: bold;
line-height: normal; line-height: normal;
text-align: justify; /* 浏览器可能不支持 */
letter-spacing: 0.08em; letter-spacing: 0.08em;
/* text/text_1 */
color: #1E2226; color: #1E2226;
margin-top: 8px;
} }
.siteMessage { .ver-icon {
height: 30px;
width: 30px;
}
.ver-anchor-point {
/* 自动布局子元素 */
height: 28px;
/* 自动布局 */
display: flex;
align-items: center;
padding: 4px 10px;
gap: 4px;
z-index: 0;
border-radius: 100px;
/* text/text_white_1 */
background: #FFFFFF;
box-sizing: border-box;
/* main/main_stardard */
}
.ver-anchor-point:hover {
border: 1px solid #006AFF;
}
.anchor {
text-decoration: none;
/* body/body 2_regular */
font-family: Microsoft YaHei UI;
font-size: 14px;
font-weight: normal;
line-height: normal;
text-align: justify; /* 浏览器可能不支持 */
letter-spacing: 0.08em;
/* text/text_4 */
color: #8A9099;
}
.ver-desc {
/* body/body 2_regular */
font-family: Microsoft YaHei UI;
font-size: 14px;
font-weight: normal;
line-height: normal;
text-align: justify; /* 浏览器可能不支持 */
letter-spacing: 0.08em;
color: #8A8C99;
margin-top: 10px;
margin-bottom: 20px;
}
.ver-single {
font-family: Microsoft YaHei UI;
font-size: 14px;
font-weight: normal;
line-height: normal;
//text-align: justify; /* */
letter-spacing: 0.08em;
color: #8A8C99;
margin-top: 10px;
}
.ver-single-desc {
font-family: Microsoft YaHei UI;
font-size: 14px;
font-weight: normal;
line-height: normal;
text-align: justify; /* 浏览器可能不支持 */
letter-spacing: 0.08em;
color: #8A8C99;
width: 600px;
height: 18px;
display: -webkit-box;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
overflow: hidden;
text-overflow: ellipsis;
}
.ver-services-wrap {
width: 100%;
display: grid;
grid-template-columns: repeat(auto-fill, minmax(270px, 1fr));
justify-items: flex-start;
gap: 14px 14px;
padding: 0px;
}
.ver-service {
width: 270px;
border-radius: 4px; border-radius: 4px;
transition: all .5s; background: #FFFFFF;
border: 1px solid transparent; box-sizing: border-box;
/* middle/middle_line_1 */
border: 1px solid #DFE2E6;
padding: 14px 10px;
display: flex;
flex-direction: column;
} }
.combo-formItem {
::v-deep {
.form-item-bottom {
position: relative;
}
.select-trigger { .service-title {
background: #F6F7FA; /* body/body 2_regular */
border-color: transparent; font-family: Microsoft YaHei UI;
} font-size: 14px;
font-weight: normal;
line-height: normal;
text-align: justify; /* 浏览器可能不支持 */
letter-spacing: 0.08em;
/* text/text_1 */
color: #1E2226;
height: 18px;
}
.is-open .select-trigger { .service-desc {
border-color: #006AFF; font-family: Microsoft YaHei UI;
} font-size: 12px;
font-weight: normal;
line-height: 17px;
text-align: justify; /* 浏览器可能不支持 */
letter-spacing: 0.03em;
/* text/text_4 */
color: #8A9099;
margin-top: 14px;
margin-bottom: 14px;
flex: 1;
height:34px;
overflow: hidden;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
text-overflow: ellipsis;
}
.el-input__inner { .service-price {
border-radius: 2px 0 0 2px; /* 自动布局子元素 */
} height: 20px;
} /* 自动布局 */
.self-drop-wrap { display: flex;
position: absolute; align-items: flex-end;
z-index: 1; padding: 0px;
width: 100%; gap: 2px;
} z-index: 1;
.appendDrop { }
height: 38px; .price {
align-items: center; font-family: Microsoft YaHei UI;
border-radius: 0 2px 2px 0; font-size: 20px;
border: 1px solid #DFE2E6; font-weight: normal;
border-left-color: transparent; line-height: 20px;
justify-content: center; text-align: center;
box-sizing: border-box; letter-spacing: normal;
padding: 0 30px 0 12px; /* text/text_1 */
text-overflow: ellipsis; color: #1E2226;
white-space: nowrap;
overflow: hidden;
&:hover {
border: 1px solid #006AFF;
}
}
} }
.addStore {
margin-top: 12px;
// border-radius: 4px;
// opacity: 1;
// /* text/text_white_2 */
// border: 1px dashed #BABDC2;
// padding: 15px 20px;
// color: #626573;
// justify-content: center;
// img { .unit {
// margin-right: 12px; font-family: Microsoft YaHei UI;
// } font-size: 12px;
font-weight: normal;
line-height: 16px;
text-align: right;
letter-spacing: 0.08em;
/* text/text_4 */
color: #8A9099;
} }
.status-item {
height: 22px;
display: flex;
justify-content: center;
align-items: center;
gap: 6px;
z-index: 0;
padding: 2px 10px;
border-radius: 4px;
.site-setting-wrap { }
width: 100%;
.siteMessage5_desc { .divgreen {
border-radius: 4px; background: rgba(239, 255, 224, 0.5);
/* middle/middle_blue_1 */ box-sizing: border-box;
background: #F2F7FF; border: 1px solid rgba(0, 194, 97, 0.6);
/* middle/middle_blue_3 */ }
border: 1px solid #BFDAFF;
padding: 8px 13px;
margin-bottom: 32px;
img {
margin-right: 8px;
}
} .fontgreen {
font-family: Microsoft YaHei UI;
font-size: 14px;
font-weight: normal;
line-height: normal;
text-align: center;
letter-spacing: 0.08em;
color: #0DAF49;
} }
#siteMessage2 { .divblue {
margin: 12px 0; background: #F2F7FF;
box-sizing: border-box;
border: 1px solid #BFDAFF;
} }
.domain-wrap { .fontblue {
.domain-item { font-family: Microsoft YaHei UI;
margin-bottom: 10px; font-size: 14px;
} font-weight: normal;
line-height: normal;
text-align: center;
letter-spacing: 0.08em;
color: #006AFF;
}
.divred {
background: #FFF1F0;
box-sizing: border-box;
border: 1px solid #FFA39E;
}
.domain-item p:last-child { .fontred {
padding-left: 23px; font-family: Microsoft YaHei UI;
color: #8A9099; font-size: 14px;
} font-weight: normal;
line-height: normal;
text-align: center;
letter-spacing: 0.08em;
color: #FF4D4F;
}
p { .divgray {
text-align: left; background: #F6F7FA;
line-height: 18px; box-sizing: border-box;
margin-bottom: 8px; border: 1px solid #DFE2E6;
} }
.domain-box { .fontgray {
display: flex; color: #626573;
flex-direction: column; }
justify-content: flex-start;
} .divorange {
background: #FFFBF2;
box-sizing: border-box;
border: 1px solid rgba(251, 131, 45, 0.38);
}
.fontorange {
color: #FB832D;
}
.divpurple {
background: #F9F2FF;
box-sizing: border-box;
border: 1px solid rgba(126, 118, 253, 0.28);
}
.fontpurple {
color: #6258FF;
}
.mr-8 {
margin-right: 8px;
}
.mr-12 {
margin-right: 12px;
}
.mr-20 {
margin-right: 20px;
} }
</style> </style>
Loading…
Cancel
Save