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
if(item.skus){
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">
<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>未绑定店铺</span>
</template>
@ -157,7 +157,7 @@
<el-form ref="formRef" v-if="siteInfo.sale_channel === '3'">
<div class="flex-wrap">
<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>
<div class="flex-between shopadd-area">
<div>
@ -176,7 +176,7 @@
:options="pddList" :options_null="!pddList.length">
<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>未绑定拼多多店铺</span>
</template>
@ -235,7 +235,7 @@
:options="jdList" :options_null="!jdList.length">
<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>未绑定京东店铺</span>
</template>
@ -499,46 +499,59 @@ export default {
})
},
changeSelectWeixin(item) {
if(this.bindWxpayId === item.payid){
this.bindWxpayId = 0
this.selectWxpay = null
return true
}
this.bindWxpayId = item.payid;
this.selectWxpay = item;
console.log(this.bindWxpayId, 'bindWxpayId');
console.log(this.selectWxpay, 'selectWxpay');
this.selectedItem = { ...item };
console.log(this.selectedItem, 'this.selectedItem====');
},
changeSelectAlipay(item) {
if(this.bindAlipayId === item.payid){
this.bindAlipayId = 0
this.selectAlipay = null
return true
}
this.bindAlipayId = item.payid;
this.selectAlipay = item;
this.selectedItem = { ...item };
},
changeSelectTaobao(item) {
if(this.bindTaobaoId === item.payid){
this.bindTaobaoId = 0
this.selectTaobao = null
return true
}
this.bindTaobaoId = item.payid;
this.selectTaobao = item;
this.selectedItem = { ...item };
},
changeSelectJindong(item) {
if(this.bindJdId === item.payid){
this.bindJdId = 0
this.selectJd = null
return true
}
this.bindJdId = item.payid;
this.selectJd = item;
this.selectedItem = { ...item };
},
changeSelectPdd(item) {
if(this.bindPddId === item.payid){
this.bindPddId = 0
this.selectPdd = null
return true
}
this.bindPddId = item.payid;
this.selectPdd = item;
this.selectedItem = { ...item };
},
goBindPay(type) {
this.addPayType = type;
this.isShowAddPay = true;
this.authToken = this.token;
},
handleEvent() {
this.getPayList()
this.getAddablePays()
handleEvent(data) {
this.isShowAddPay = data
// this.getPayList()
// this.getAddablePays()
},
jumpStep(){
this.$router.push('/')

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

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

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

@ -4,37 +4,191 @@
<span class="pagetitle">{{info.type_desc}}-价格设置</span>
</div>
<div class="flex-common">
<h3>网页支付与售价</h3>
<el-form ref="formRef">
<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">
<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-left">
<div class="set-item">
<div class="set-title flex-between">
<p>售价管理</p>
<p>供货价格3.5/</p>
<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.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 class="set-content flex">
<GuipSelect width="264px" prop="card" :options="options" class="mr12"/>
<GuipInput v-if="!info.price" width="264px" v-model="info.price" ref="GuipInput" unit="元/篇"></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 class="short-width">
<GuipInput width="100%" v-model="info.unit_num" ref="GuipInput" :unit="serviceAddInfo.unit_name">
</GuipInput>
</div>
</div>
</div>
<div class="flex-line"></div>
<div class="flex-right">
<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_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>
<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>
</el-form>
</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>
</template>
@ -43,6 +197,9 @@
import GuipButton from "@/components/GuipButton.vue";
import GuipInput from "@/components/GuipInput.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 {
name: 'priceSet',
@ -55,92 +212,241 @@ export default {
components: {
GuipSelect,
GuipInput,
GuipButton
GuipButton,
PromptText,
bindGoods,
GuipDialog
},
data(){
return {
token: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE3NTI2NDY1NDUsIm5iZiI6MTc1MjY0NjU0NSwiZXhwIjoxNzU1MjM4NTQ1LCJ1c2VyIjoic3VidXNlciIsImxvZ2luX3R5cGUiOjAsImFpZCI6IjEifQ.G-Is-x9qPMiV_urOlDPQVRjfAIozySxL5EK2k82d46k',
info:{},
//
saveBtnStyleObj: {
width: '144px',
height: '46px',
borderRadius: '4px',
background: '#006AFF',
},
options: [{
value: '选项1',
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: '',
},
uid: 0,
type: 0,
serviceAddInfo:{},
service_unit:'',
bindList: [],
showBind: false,
pati: '',
pageCode: '',
dialogDelBindConfim: false,
}
},
mounted() {
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:{
saveConfirm() {
let obj = {}
obj.uid = this.info.uid
obj.type = this.info.type
obj.logo_bgcolor = this.tabColor.replace('#','')
obj.link_btn_color = this.themeColor.replace('#','')
obj.selected_nav_bgcolor = this.navColor.replace('#','')
//
getServiceAddInfo() {
const that = this
that.$http('POST', '/agentnew/ajax_get_service_add_info', {
uid: that.uid,
type: that.type,
}, {
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
this.$http('POST', '/agentnew/ajax_update_service_style', obj,{
headers:{
that.$http('POST', '/agentnew/ajax_get_service_bind_goods', {
uid: that.uid,
type: that.type,
}, {
headers: {
'Auth': this.token
}
}).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('保存成功');
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 = {}
color_info.logo_bgcolor = obj.logo_bgcolor
color_info.link_btn_color = obj.link_btn_color
color_info.selected_nav_bgcolor = obj.selected_nav_bgcolor
that.info.color_info = color_info
that.$emit('saveEvent', that.info)
await window.PDD_OPEN_init({ code: this.pageCode })
this.pati = await window.PDD_OPEN_getPati()
} else {
console.error('PDD_OPEN_init 不存在,SDK 未正确加载');
}
},
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;
}
that.$message.error(response.info);
@ -148,27 +454,126 @@ export default {
console.error(error, 'error')
})
},
//------ end------
}
}
</script>
<style lang="scss">
.mr12{
margin-right: 12px;
}
.set-item{
width: 540px;
.price-set {
letter-spacing: 0.08em;
.set-title{
font-size: 14px;
color: #1E2226;
margin-bottom: 12px;
p:last-child{
color: #8A9099;
.price-top {
display: flex;
align-items: center;
margin-bottom: 16px;
.title {
font-size: 14px;
font-weight: bold;
color: #1E2226;
}
.desc {
font-size: 14px;
color: #626573;
margin-left: 12px;
}
}
.set-content{
width: 100%;
.el-form-item {
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>

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

@ -11,7 +11,7 @@
<div class="flex-wrap">
<div class="flex-left">
<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">
</GuipInput>
</GuipFormItem>

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

@ -14,12 +14,12 @@
<div class="flex-wrap">
<div class="flex-left">
<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">
</GuipInput>
</GuipFormItem>
<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">
</GuipInput>
</GuipFormItem>

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

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

222
src/views/agent/siteBaseSetting.vue

@ -73,18 +73,21 @@
<el-form ref="formRef">
<div class="flex-wrap">
<div class="flex-left">
<!-- 微信 -->
<GuipFormItem column="column" class="mb24" v-if="addablePays[payTypeWeixin]">
<div slot="formLeft" class="form-top-icon">
<img src="@/assets/register/weixin.svg" style="width: 26px;height: 26px;" alt=""><span>微信收款</span>
</div>
<CustomDropdown v-if="wxpayList && wxpayList.length" slot="formDom" width="100%" v-model="bindWxpayId"
:options="wxpayList" displayKey="name" valueKey="payid"
@change="changeSelectWeixin" placeholder="请选择" @changeNormal="changeNormalWeixin">
<CustomDropdown slot="formDom" width="100%"
:options="wxpayList" :options_null="!wxpayList.length" displayKey="name" valueKey="payid"
@change="changeSelectWeixin">
<!-- 选择后显示数据 -->
<template #trigger>
<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 #normal>
<div class="flex flex-between noraml-jump">
<div class="left">
@ -111,28 +114,6 @@
</div>
</template>
</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>
<!-- 支付宝 -->
@ -140,12 +121,12 @@
<div slot="formLeft" class="form-top-icon">
<img src="@/assets/register/zhifubao.svg" style="width: 26px;height: 26px;" alt=""><span>支付宝收款</span>
</div>
<CustomDropdown v-if="alipayList && alipayList.length" slot="formDom" width="100%" v-model="bindAlipayId"
:options="alipayList" @change="changeSelectAlipay" placeholder="请选择"
@changeNormal="changeNormalWeixin">
<CustomDropdown slot="formDom" width="100%"
:options="alipayList" :options_null="!alipayList.length" @change="changeSelectAlipay">
<template #trigger>
<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 #normal>
<div class="flex flex-between noraml-jump">
@ -172,38 +153,22 @@
</div>
</template>
</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 column="column" class="mb24" v-if="addablePays[payTypeJingdong]">
<div slot="formLeft" class="form-top-icon">
<img src="@/assets/register/jingdong.svg" style="width: 26px;height: 26px;" alt=""><span>京东店铺</span>
</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"
@change="changeSelectJindong" placeholder="请选择" @changeNormal="changeNormalWeixin">
:options_null="!jdList.length"
@change="changeSelectJindong" >
<!-- 选择后显示数据 -->
<template #trigger>
<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 #normal>
<div class="flex flex-between noraml-jump">
@ -230,42 +195,25 @@
</div>
</template>
</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>
</div>
<div class="flex-line"></div>
<!-- 淘宝 -->
<div class="flex-right">
<GuipFormItem column="column" class="mb24" v-if="addablePays[payTypeTaoBao]">
<div slot="formLeft" class="form-top-icon">
<img src="@/assets/register/taobao.svg" style="width: 26px;height: 26px;" alt=""><span>淘宝/天猫店铺</span>
</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"
@change="changeSelectTaobao" placeholder="请选择" @changeNormal="changeNormalWeixin">
:options_null="!taobaoList.length"
@change="changeSelectTaobao" >
<!-- 选择后显示数据 -->
<template #trigger>
<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 #normal>
<div class="flex flex-between noraml-jump">
@ -292,39 +240,22 @@
</div>
</template>
</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 column="column" class="mb24" v-if="addablePays[payTypePdd]">
<div slot="formLeft" class="form-top-icon">
<img src="@/assets/register/pinduoduo.svg" style="width: 26px;height: 26px;" alt=""><span>拼多多店铺</span>
</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"
@change="changeSelectPdd" placeholder="请选择" @changeNormal="changeNormalWeixin">
:options_null="!pddList.length"
@change="changeSelectPdd" >
<!-- 选择后显示数据 -->
<template #trigger>
<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 #normal>
<div class="flex flex-between noraml-jump">
@ -351,27 +282,6 @@
</div>
</template>
</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>
</div>
</div>
@ -478,9 +388,6 @@ export default {
domainTypes: [],
domainPrefix: '',
siteDomain: '',
options_weixin_null: {},
select_placeholder_weixin: '暂无收款账号,稍后配置',
}
},
computed: {
@ -688,63 +595,52 @@ export default {
cancleUpdateSiteInfo() {
this.getSiteInfo();
},
changeNormalWeixin() {
},
changeSelectWeixin(item, flag) {
if (flag) {
this.select_placeholder_weixin = this.options_weixin_null.desc;
return
changeSelectWeixin(item) {
console.log(item, 'item')
if(this.bindWxpayId === item.payid){
this.bindWxpayId = 0
this.selectWxpay = null
return true
}
this.bindWxpayId = item.payid;
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) {
if (flag) {
this.select_placeholder_weixin = this.options_weixin_null.desc;
return
changeSelectAlipay(item) {
if(this.bindAlipayId === item.payid){
this.bindAlipayId = 0
this.selectAlipay = null
return true
}
this.bindAlipayId = item.payid;
this.selectAlipay = item;
console.log(this.bindWxpayId, 'bindWxpayId');
this.selectedItem = { ...item };
console.log(this.selectedItem, 'this.selectedItem====');
},
changeSelectTaobao(item, flag) {
if (flag) {
this.select_placeholder_weixin = this.options_weixin_null.desc;
return
changeSelectTaobao(item) {
if(this.bindTaobaoId === item.payid){
this.bindTaobaoId = 0
this.selectTaobao = null
return true
}
this.bindTaobaoId = item.payid;
this.selectTaobao = item;
this.selectedItem = { ...item };
},
changeSelectJindong(item, flag) {
if (flag) {
this.select_placeholder_weixin = this.options_weixin_null.desc;
return
changeSelectJindong(item) {
if(this.bindJdId === item.payid){
this.bindJdId = 0
this.selectJd = null
return true
}
this.bindJdId = item.payid;
this.selectJd = item;
this.selectedItem = { ...item };
},
changeSelectPdd(item, flag) {
if (flag) {
this.select_placeholder_weixin = this.options_weixin_null.desc;
return
changeSelectPdd(item) {
if(this.bindPddId === item.payid){
this.bindPddId = 0
this.selectPdd = null
return true
}
this.bindPddId = item.payid;
this.selectPdd = item;
this.selectedItem = { ...item };
},
//
domainTypeChange(type) {

150
src/views/agent/siteServiceAdd.vue

@ -1,7 +1,7 @@
<template>
<div class="serviceAdd-wrap">
<div class="ml12 mr12 overFlow-wrap">
<PromptText text="如何添加服务?" :type="1" class="add-info">
<PromptText text="如何添加服务?" :type="2" class="add-info">
<template #next_desc>
<div class="alert-more flex gap12" :class="alertShow ? '' : 'alert-more-hide'" @click="handleAlert">
<div v-if="alertShow">收起</div>
@ -19,17 +19,27 @@
</template>
</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">
<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>
</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-desc">已开启</span>
</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">
<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>
</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-left">
<div class="flex-between mb12">
<div>售价管理</div>
</div>
<div class="flex-between">
<div class="short-width">
<GuipSelect width="100%" v-model="serviceInfo.unit" placeholder="选择计费方式"
:options="serviceAddInfo.set_units" />
<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="serviceInfo.unit !== '0'">
<GuipInput v-if="serviceInfo.unit === '1'" v-model="serviceInfo.price" width="100%"
ref="GuipInput" unit="元/篇"></GuipInput>
<GuipInput v-if="serviceInfo.unit === '2'" v-model="serviceInfo.price" width="100%"
ref="GuipInput" unit="元/页"></GuipInput>
<div class="short-width" v-if="service_unit !== '0'">
<GuipInput v-model="serviceInfo.price" width="100%"
ref="GuipInput" :unit="'元/'+serviceAddInfo.unit_name"></GuipInput>
</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">
<GuipInput width="100%" v-model="serviceInfo.price" ref="GuipInput" unit="元">
</GuipInput>
</div>
<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>
</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-right">
<div class="flex-between mb12">
@ -112,7 +110,8 @@
<el-form class="el-row demo-ruleForm" ref="formRef">
<div class="price-top">
<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 class="flex-wrap">
@ -121,29 +120,27 @@
<div>售价管理</div>
</div>
<div class="flex-between">
<div class="short-width">
<GuipSelect width="100%" v-model="serviceInfo.unit" placeholder="选择计费方式"
:options="serviceAddInfo.set_units" />
<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="serviceInfo.unit > 0">
<GuipInput v-if="serviceInfo.unit === '1'" v-model="serviceAddInfo.unit_piece"
width="100%" ref="GuipInput" unit="件/篇"></GuipInput>
<GuipInput v-if="serviceInfo.unit === '2'" v-model="serviceAddInfo.unit_piece"
width="100%" ref="GuipInput" unit="件/页"></GuipInput>
<div class="short-width" v-if="service_unit !== '0'">
<GuipInput v-model="serviceInfo.unit_piece" width="100%"
ref="GuipInput" :unit="'件/'+serviceAddInfo.unit_name"></GuipInput>
</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">
<GuipInput width="100%" v-model="serviceInfo.unit_piece" ref="GuipInput" unit="件">
</GuipInput>
</div>
<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>
</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-right">
<div class="flex-between mb12">
@ -174,7 +171,7 @@
</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">
<div class="price-top">
<span class="title">关联电商商品</span>
@ -211,7 +208,7 @@
</div>
</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">
</bindGoods>
@ -263,14 +260,16 @@ export default {
type: 0,
prodid: 0,
serviceAddInfo: {},
service_unit:'',
service_status: false,
serviceInfo: {},
bindList: [],
alertShow: true,
menuList: {},
siteAddUrl: '/agent/siteAdd',
showBind: false,
pati: '',
pageCode: '',
pdd_pati: '',
pdd_pagecode: '',
dialogDelBindConfim: false,
delRow: {},
dialogDelServiceConfim: false,
@ -324,6 +323,7 @@ export default {
},
//
getServiceAddInfo() {
this.serviceAddInfo = {}
const that = this
that.$http('POST', '/agentnew/ajax_get_service_add_info', {
uid: that.uid,
@ -336,6 +336,7 @@ export default {
if (response.status) {
that.$nextTick(() => {
that.serviceAddInfo = response.data
that.service_unit = that.serviceAddInfo.unit
//
if (that.serviceAddInfo.shop_name === '拼多多') this.initPddParam(that.uid)
//
@ -363,21 +364,15 @@ export default {
}
}).then(response => {
that.$nextTick(() => {
//
that.serviceInfo.unit = that.serviceAddInfo.unit
//
that.serviceInfo.status = false
})
if (response.status && response.data) {
that.$nextTick(() => {
if (response.status && response.data) {
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 => {
console.error(error, 'error')
})
@ -402,6 +397,9 @@ export default {
console.error(error, 'error')
})
},
handleUnitName(){
this.serviceAddInfo.unit_name = this.serviceAddInfo.set_units[this.service_unit]
},
handleDelServiceClick() {
this.dialogDelServiceConfim = true
},
@ -423,6 +421,7 @@ export default {
that.$message.success('删除成功');
this.$nextTick(() => {
that.serviceInfo = {}
that.service_status = false;
that.setMenuList(that.type, false)
})
return true;
@ -440,9 +439,16 @@ export default {
},
savePrice() {
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", {
uid: that.uid,
type: that.type,
unit: that.service_unit,
unit_num: that.serviceInfo.unit_num,
unit_price: that.serviceInfo.price,
b_unit_num: that.serviceInfo.base_unit_num,
@ -453,8 +459,8 @@ export default {
}
}).then(response => {
if (response.status) {
if (that.serviceInfo.status === false) {
that.serviceInfo.status = true
if (that.service_status === false) {
that.service_status = true
that.setMenuList(that.type, true)
}
that.$message.success('保存成功');
@ -473,9 +479,18 @@ export default {
},
saveShopPrice() {
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", {
uid: that.uid,
type: that.type,
unit: that.service_unit,
unit_num: that.serviceInfo.unit_num,
unit_piece: that.serviceInfo.unit_piece,
b_unit_num: that.serviceInfo.base_unit_num,
@ -486,8 +501,8 @@ export default {
}
}).then(response => {
if (response.status) {
if (that.serviceInfo.status === false) {
that.serviceInfo.status = true
if (that.service_status === false) {
that.service_status = true
that.setMenuList(that.type, true)
}
that.$message.success('保存成功');
@ -539,10 +554,10 @@ export default {
},
async initPddParam(uid) {
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 })
this.pati = await window.PDD_OPEN_getPati()
await window.PDD_OPEN_init({ code: this.pdd_pagecode })
this.pdd_pati = await window.PDD_OPEN_getPati()
} else {
console.error('PDD_OPEN_init 不存在,SDK 未正确加载');
}
@ -607,7 +622,20 @@ export default {
},
//------ end------
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>
</div>
<div class="pageheader-right">
<GuipButton type="primary" :btnstyle="btnstyleObj" @click="jumpAdd(1)">添加查重服务</GuipButton>
<GuipButton type="primary" :btnstyle="btnstyleObj" @click="jumpAdd(3)">添加写作辅助</GuipButton>
<GuipButton type="primary" :btnstyle="btnstyleObj" @click="jumpAdd(2)">添加AIGC</GuipButton>
<div class="pageheader-right" v-if="addProd">
<GuipButton v-for="(item,key) in addProd" :key="item" type="primary" :btnstyle="btnstyleObj" @click="jumpAdd(key)">添加{{item}}</GuipButton>
</div>
</div>
@ -190,6 +188,8 @@ export default {
uid:0,
//
siteShortName: "",
//
addProd: {},
//
serviceList: [],
//
@ -255,10 +255,15 @@ export default {
}
}).then(response => {
this.tableLoading = false
this.$nextTick(() => {
that.serviceList = response.data.service_list
store.commit('SET_BREADRIGHTTEXT', response.data.site_short_name);
})
if(response.status){
that.$nextTick(() => {
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 => {
console.error(error, 'error')
})

501
src/views/agent/supplyList.vue

@ -3,24 +3,53 @@
<PromptText text='平台针对不同品牌产品,已做了风险提醒义务,请安全规避销售。平台仅保障货品正版,针对有风险的产品,请具备安全销售方案后再开展销售。' :type="3" />
<!-- page header -->
<div class="pageheader">
<span class="pagetitle">基本设置</span>
</div>
<div class="supply-list" v-for="(vers, classify_id) in classifyId2Vers" :key="classify_id">
<div class="classify">
<span class="classify-title mr-20">{{ classifyId2Name[classify_id] }}</span>
<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="site-setting-wrap min-flex-right">
<div class="siteMessage flex-common" id="siteMessage1">
<h3>站点信息</h3>
<el-form>
<div class="flex-wrap">
<div class="flex-left">
<div class="ver-wrap" v-for="verid in vers" :key="verid" :id="'ver_'+verid">
<div class="ver">
<div class="ver-title-wrap">
<img class="ver-icon mr-8" :src="require('@/assets/serviceIcon/ver_'+verid+'.svg')" alt="">
<span class="ver-title mr-8">{{ ver2info[verid].name }}</span>
<div class="status-item divgreen mr-8" v-if="ver2info[verid].is_official_api==1"><span class="fontgreen">官方接口</span></div>
<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 class="flex-line"></div>
<div class="flex-right">
</div>
<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 class="service-price"><span class="price">{{ supplyPriceList[ver2types[verid][0]].price }}</span><span class="unit"> / {{ supplyPriceList[ver2types[verid][0]].unit_format }}</span></div>
</div>
</el-form>
</div>
</div>
</div>
</div>
@ -30,6 +59,7 @@
import store from '@/store';
import { mapState } from 'vuex';
import PromptText from '@/components/PromptText.vue';
import GuipToolTip from '@/components/GuipToolTip.vue';
export default {
//
@ -37,17 +67,20 @@ export default {
props: [''],
components: {
PromptText,
GuipToolTip,
},
data() {
return {
// AUTH
token: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE3NTI2NDY1NDUsIm5iZiI6MTc1MjY0NjU0NSwiZXhwIjoxNzU1MjM4NTQ1LCJ1c2VyIjoic3VidXNlciIsImxvZ2luX3R5cGUiOjAsImFpZCI6IjEifQ.G-Is-x9qPMiV_urOlDPQVRjfAIozySxL5EK2k82d46k',
//
tableLoading: true,
type2name:[],
serviceClassifications: [],
serviceClassificationServices: [],
classifyId2Name: [],
classifyId2Vers: [],
ver2types: [],
ver2info: [],
type2info: [],
supplyPriceList: [],
salePolicy: [],
}
},
computed: {
@ -60,38 +93,39 @@ export default {
mounted() {
store.commit('SET_PAGETITLE', '基本设置');
this.getSiteInfo();
this.getPayList();
this.getAddablePays();
this.getSupplyServiceList();
},
methods: {
//
scrollToAnchor(ver) {
this.$nextTick(() => {
const element = document.getElementById('ver_'+ver);
if (element) {
element.scrollIntoView({ behavior: 'smooth' });
}
});
},
getSupplyServiceList() {
this.$http('POST', '/agentnew/ajax_get_supply_services', {
this.tableLoading = true
const that = this
that.serviceList = []
this.$http('POST', '/agentnew/ajax_get_supply_services', {
},{
headers:{
'Auth': this.token
}
}).then(response => {
this.tableLoading = false
this.$nextTick(() => {
that.serviceList = response.data.list
this.type2name = response.data.type2name;
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')
},{
headers:{
'Auth': this.token
}
}).then(response => {
this.$nextTick(() => {
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.type2info = response.data.type2info;
this.supplyPriceList = response.data.supply_price;
this.salePolicy = response.data.sale_policy;
})
},
}).catch(error => {
console.error(error, 'error')
})
},
}
}
</script>
@ -100,129 +134,318 @@ export default {
padding: 20px 48px;
}
.pageheader {
.classify {
display: flex;
justify-content: space-between;
/* 关键属性 */
align-items: center;
margin: 16px 0px 16px 0px;
margin-bottom: 20px;
margin-top: 20px;
}
.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-weight: bold;
line-height: normal;
text-align: justify; /* 浏览器可能不支持 */
letter-spacing: 0.08em;
/* text/text_1 */
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;
transition: all .5s;
border: 1px solid transparent;
background: #FFFFFF;
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 {
background: #F6F7FA;
border-color: transparent;
}
.service-title {
/* 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_1 */
color: #1E2226;
height: 18px;
}
.is-open .select-trigger {
border-color: #006AFF;
}
.service-desc {
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 {
border-radius: 2px 0 0 2px;
}
}
.self-drop-wrap {
position: absolute;
z-index: 1;
width: 100%;
}
.appendDrop {
height: 38px;
align-items: center;
border-radius: 0 2px 2px 0;
border: 1px solid #DFE2E6;
border-left-color: transparent;
justify-content: center;
box-sizing: border-box;
padding: 0 30px 0 12px;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
&:hover {
border: 1px solid #006AFF;
}
}
.service-price {
/* 自动布局子元素 */
height: 20px;
/* 自动布局 */
display: flex;
align-items: flex-end;
padding: 0px;
gap: 2px;
z-index: 1;
}
.price {
font-family: Microsoft YaHei UI;
font-size: 20px;
font-weight: normal;
line-height: 20px;
text-align: center;
letter-spacing: normal;
/* text/text_1 */
color: #1E2226;
}
.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 {
// margin-right: 12px;
// }
.unit {
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 {
border-radius: 4px;
/* middle/middle_blue_1 */
background: #F2F7FF;
/* middle/middle_blue_3 */
border: 1px solid #BFDAFF;
padding: 8px 13px;
margin-bottom: 32px;
img {
margin-right: 8px;
}
.divgreen {
background: rgba(239, 255, 224, 0.5);
box-sizing: border-box;
border: 1px solid rgba(0, 194, 97, 0.6);
}
}
.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 {
margin: 12px 0;
.divblue {
background: #F2F7FF;
box-sizing: border-box;
border: 1px solid #BFDAFF;
}
.domain-wrap {
.domain-item {
margin-bottom: 10px;
}
.fontblue {
font-family: Microsoft YaHei UI;
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 {
padding-left: 23px;
color: #8A9099;
}
.fontred {
font-family: Microsoft YaHei UI;
font-size: 14px;
font-weight: normal;
line-height: normal;
text-align: center;
letter-spacing: 0.08em;
color: #FF4D4F;
}
p {
text-align: left;
line-height: 18px;
margin-bottom: 8px;
}
.divgray {
background: #F6F7FA;
box-sizing: border-box;
border: 1px solid #DFE2E6;
}
.domain-box {
display: flex;
flex-direction: column;
justify-content: flex-start;
}
.fontgray {
color: #626573;
}
.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>
Loading…
Cancel
Save