Browse Source

开发文档

pull/103/head
pengda 4 weeks ago
parent
commit
091638a5e1
  1. 4
      src/App.vue
  2. 1
      src/assets/site/form_copy_white.svg
  3. 3
      src/components/Header.vue
  4. 29
      src/router/index.js
  5. 4
      src/store/index.js
  6. 2
      src/utils/loginRefresh.js
  7. 104
      src/views/agent/agreement.vue
  8. 178
      src/views/agent/customizeDoc.vue

4
src/App.vue

@ -2,7 +2,7 @@
<div id="app">
<el-container class="outContainerWrap">
<el-header style="height: 62px;" v-if="showHeader">
<Header></Header>
<Header :showRight="showHeaderRight"></Header>
<video class="top_viedo" width="100%" src="./assets/headerBg1.mp4" autoplay loop muted
></video>
<div class="bg"></div>
@ -52,7 +52,7 @@ export default {
Breadcrumb
},
computed: {
...mapState(['showSidebar','showSecondSide','secondMenu','showHeader','slidermenu','customize']) // VuexshowSidebar
...mapState(['showSidebar','showSecondSide','secondMenu','showHeader','showHeaderRight','slidermenu','customize']) // VuexshowSidebar
},
mounted() {
window.addEventListener('beforeunload', this.clearStorage);

1
src/assets/site/form_copy_white.svg

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.2 KiB

3
src/components/Header.vue

@ -3,7 +3,7 @@
<div class="header-logo">
<img src="../assets/header-logo.png" alt="">
</div>
<div class="header-right flex">
<div class="header-right flex" v-if="showRight">
<!-- <div class="right-item">权限设置</div>
<div class="right-item">岗位设置</div> -->
<el-dropdown trigger="click">
@ -23,6 +23,7 @@
<script>
import { logout } from '@/utils/logout';
export default {
props:['showRight'],
data() {
return {
user: ''

29
src/router/index.js

@ -9,7 +9,7 @@ const whiteSecondSider = [
'/agent/siteAddFinally','/agent/siteServiceAdd'
];
const blackSliderList = [
'/franchise', '/register', '/agent/siteAdd', '/agent/siteServiceList', '/agent/siteTemplate','/agent/siteAddFinally','/agent/siteServiceAdd', '/agent/supplyList',
'/franchise', '/agreement', '/customizeDoc', '/register', '/agent/siteAdd', '/agent/siteServiceList', '/agent/siteTemplate','/agent/siteAddFinally','/agent/siteServiceAdd', '/agent/supplyList',
'/agent/domainList'
, '/agent/noticeList'
];
@ -19,8 +19,12 @@ let first_child_router = []
const blackHeaderList = [
'/franchise'
];
//头部导航黑名单 不需要添加头部的放置在这里,其余默认显示头部
const blackHeaderRightList = [
'/agreement', '/customizeDoc'
];
const blackFooterList = [
'/', '/franchise', '/register', '/agent/siteAdd', '/agent/payInfoSetting','/agent/siteServiceEdit','/agent/siteAddFinally','/agent/siteServiceAdd',
'/', '/franchise','/agreement', '/customizeDoc', '/register', '/agent/siteAdd', '/agent/payInfoSetting','/agent/siteServiceEdit','/agent/siteAddFinally','/agent/siteServiceAdd',
'/agent/siteTemplate'
];
// const whiteSlideList = ['/', '/ui',
@ -322,6 +326,22 @@ const routes = [{
}
},
{
path: '/agreement',
name: '网站协议',
component: () => import( /* webpackChunkName: "agreement" */ '../views/agent/agreement.vue'),
meta: {
hideBreadcrumb: true // 一级页面不显示面包屑
}
},
{
path: '/customizeDoc',
name: '开发文档',
component: () => import( /* webpackChunkName: "customizeDoc" */ '../views/agent/customizeDoc.vue'),
meta: {
hideBreadcrumb: true // 一级页面不显示面包屑
}
},
{
path: '/configureServicePrices',
name: '配置服务价格',
component: () => import( /* webpackChunkName: "configureServicePrices" */ '../views/ConfigureServicePrices.vue')
@ -611,6 +631,11 @@ router.beforeEach((to, from, next) => {
} else {
store.commit('SET_HEADER', true); // 其他页面显示顶部
}
if (blackHeaderRightList.includes(to.path)) {
store.commit('SET_HEADER_RIGHT', false); // 不显示顶部信息
} else {
store.commit('SET_HEADER_RIGHT', true); // 其他页面显示顶部信息
}
store.dispatch('showLoading')
next();
});

4
src/store/index.js

@ -9,6 +9,7 @@ export default new Vuex.Store({
showSidebar: false,
showFooter: false,
showHeader: false,
showHeaderRight: false,
menuList: [], //目录菜单
secondMenu:{},//第三种侧边栏 -- 可折叠、 切换显示
showBreadcrumb: false, //是否展示面包屑
@ -591,6 +592,9 @@ export default new Vuex.Store({
SET_HEADER(state, show) {
state.showHeader = show;
},
SET_HEADER_RIGHT(state, show) {
state.showHeaderRight = show;
},
SHOW_BREAD(state, show) {
state.showBreadcrumb = show;
},

2
src/utils/loginRefresh.js

@ -20,7 +20,7 @@ export async function handleTokenRefresh(originalRequest, instance) {
if (isRefreshing) {
return new Promise(resolve => {
subscribeTokenRefresh(token => {
originalRequest.headers.Authorization = `Bearer ${token}`
originalRequest.headers.Auth = `${token}`
resolve(instance(originalRequest))
})
})

104
src/views/agent/agreement.vue

@ -0,0 +1,104 @@
<template>
<div class="main-content12 agree-info">
<div class="flex-common">
<div class="w1000">
<div class="agree-title mb20">快乐论文网站协议</div>
<div class="flex-between mb20">
<div></div>
<div class="agree-date">更新日期2025年08月06日</div>
</div>
<div class="agree-section">
<div class="ti">前言</div>
<div class="tx">
<div class="flex">感谢您使用微盟提供的产品和/或服务在完成注册程序或以任何方式使用微盟网站服务前请您务必仔细阅读并透彻理解本微盟软件注册协议条款(以下或简称本注册条款)在确认充分理解后选择接受或不接受本注册条款一旦您完成注册或开始以其他方式使用微盟服务即表明您已阅读并同意受本注册条款的约束如您不同意本注册条款或其中任何条款约定 您应不再进行下一步或停止注册程序</div>
</div>
</div>
<div class="agree-section">
<div class="ti">定义及协议范围</div>
<div class="tx">
<div class="flex">1.1.微盟指研发并提供微盟产品和服务的上海微盟企业发展有限公司及现在或未来设立的相关关联公司的单称或合称</div>
<div class="flex">1.2.微盟网站包含域名为www.weimob.com的网站以及微盟客户端如商户助手App</div>
<div class="flex">1.3.微盟网站服务以下或称本服务是指由微盟开发和服务的微商城微盟精选智慧零售智慧餐厅客来店智慧酒店智慧旅游智慧美业微站销售推微盟表单会务等SaaS产品面向开发者的微盟云服务帮助客户在新零售时代提高运营效率和盈利能力</div>
<div class="flex">1.4.关联公司指微盟集团(Weimob Inc.)最新上市公司年报披露的微盟服务提供者的关联公司</div>
<div class="flex">1.5.指注册或使用微盟产品或服务账户或使用微盟商户助手服务等微盟服务的自然人法人或其他组织您可以通过微盟系统授权个人用户操作其工作界面</div>
<div class="flex">1.6.店铺指您每购买微盟提供的一个SaaS产品系统后可创建的商业操作系统店铺创建时生成的唯一标识为bosidWOS体系/pid新云体系</div>
<div class="flex">1.7.组织节点指店铺及其下属经营结构节点如门店商场商城包等各组织节点创建时生成的标识为vidWOS体系/storeid新云体系</div>
<div class="flex">1.8.本注册条款是您与微盟就使用本服务而订立的有效合约</div>
<div class="flex">1.9.如您使用或购买微盟网站上某一具体产品和/或服务您可仍需确认具体服务对应的服务条款请您审慎阅读充分理解各条款内容选择接受或不接受该服务条款</div>
</div>
</div>
<div class="agree-section">
<div class="ti">定义及协议范围</div>
<div class="tx">
<div class="flex">1.1.微盟指研发并提供微盟产品和服务的上海微盟企业发展有限公司及现在或未来设立的相关关联公司的单称或合称</div>
<div class="flex">1.2.微盟网站包含域名为www.weimob.com的网站以及微盟客户端如商户助手App</div>
<div class="flex">1.3.微盟网站服务以下或称本服务是指由微盟开发和服务的微商城微盟精选智慧零售智慧餐厅客来店智慧酒店智慧旅游智慧美业微站销售推微盟表单会务等SaaS产品面向开发者的微盟云服务帮助客户在新零售时代提高运营效率和盈利能力</div>
<div class="flex">1.4.关联公司指微盟集团(Weimob Inc.)最新上市公司年报披露的微盟服务提供者的关联公司</div>
<div class="flex">1.5.指注册或使用微盟产品或服务账户或使用微盟商户助手服务等微盟服务的自然人法人或其他组织您可以通过微盟系统授权个人用户操作其工作界面</div>
<div class="flex">1.6.店铺指您每购买微盟提供的一个SaaS产品系统后可创建的商业操作系统店铺创建时生成的唯一标识为bosidWOS体系/pid新云体系</div>
<div class="flex">1.7.组织节点指店铺及其下属经营结构节点如门店商场商城包等各组织节点创建时生成的标识为vidWOS体系/storeid新云体系</div>
<div class="flex">1.8.本注册条款是您与微盟就使用本服务而订立的有效合约</div>
<div class="flex">1.9.如您使用或购买微盟网站上某一具体产品和/或服务您可仍需确认具体服务对应的服务条款请您审慎阅读充分理解各条款内容选择接受或不接受该服务条款</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
name: 'agreement',
components: {
},
data() {
return {
}
},
mounted() {
},
methods: {
}
}
</script>
<style scoped lang="scss">
.mb20{
margin-bottom: 20px;
}
.w1000{
width: 1000px;
margin: 0 auto;
}
.agree-info{
letter-spacing: 0.08em;
.agree-title{
font-size: 26px;
color: #1E2226;
}
.agree-date{
color: #626573;
font-size: 14px;
}
.agree-section{
text-align: left;
.ti{
color: #1E2226;
font-size: 16px;
font-weight: bold;
margin-bottom: 12px;
}
.tx{
font-size: 14px;
color: #595961;
margin-bottom: 20px;
div{
margin-bottom: 12px;
line-height: 26px;
}
}
}
}
</style>

178
src/views/agent/customizeDoc.vue

@ -0,0 +1,178 @@
<template>
<div class="main-content12 agree-info">
<div class="flex-common">
<div class="w1000">
<div class="agree-title mb20">自定义模板开发文档</div>
<div class="flex-between mb20">
<div></div>
<div class="agree-date">更新日期2025年08月06日</div>
</div>
<div class="agree-section">
<div class="tx">
<div class="flex">自定义首页模板按下方要求书写自定义网站并压缩上传后可生成自定义首页<br>此模板完全由你设定</div>
</div>
</div>
<div class="agree-section">
<div class="ti">目录结构</div>
<div class="ti-sec">文件及目录按以下命名定义</div>
<div class="tx">
<div class="flex">
home.html首页模板<br>
style样式目录该目录下存放jscss图片等<br>
html页面目录该目录下存放html页面例如关于我们等
</div>
</div>
</div>
<div class="agree-section">
<div class="ti">页面规范</div>
<div class="ti-sec">首页及html目录下的html页面支持标签替换支持标签{$priv_conf}{$priv_style}{$priv_html}{$access_stats_code}</div>
<div class="tx">
<div class="flex">
1. 标签使用说明以万方2.0为例<br>
价格标签{$priv_conf.price.wanfang2}<br>
单位标签{$priv_conf.unit.wanfang2}<br>
检测链接标签{$priv_conf.url.wanfang2}<br>
其他检测服务的价格单位检测链接即从下表找到对应的服务标识替换wanfang2<br>
</div>
</div>
<div class="ti-sec">各检测服务标识如下</div>
<div class="flag-area">
<div class="flag-ti flex gap10">
<span class="flag-ti-copy" @click="copyAll">复制全部<img src="@/assets/site/form_copy_white.svg" alt=""></span>
<span>格式测服务标识/检测服务名称</span>
</div>
<div class="flag-info">
<div v-for="item in supply_list" :key="item.flag">
<GuipToolTip :content="item.flag + ' / ' + item.name">
<span>{{item.flag}} / {{item.name}}</span>
</GuipToolTip>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import GuipToolTip from "@/components/GuipToolTip.vue";
export default {
name: 'customizeDoc',
components: {GuipToolTip},
data() {
return {
supply_list: []
}
},
mounted() {
this.getSupplyList()
},
methods: {
getSupplyList(){
this.$http('POST', '/agentnew/ajax_get_supply_list', {}).then(response => {
if(response.status){
this.$nextTick(function (){
this.supply_list = response.data
})
return true
}
this.$message.error(response.data.info)
}).catch(error => {
console.error(error, 'error')
})
},
copyAll(){
let copyText = "";
this.supply_list.forEach(function (item){
copyText += item.flag + " / " + item.name + "\r\n";
})
this.$copy(copyText, {
successMsg: '内容已复制到剪贴板',
errorMsg: '复制失败,请按Ctrl+C手动复制',
vm: this
});
}
}
}
</script>
<style scoped lang="scss">
.mb20{
margin-bottom: 20px;
}
.w1000{
width: 1000px;
margin: 0 auto;
}
.agree-info{
letter-spacing: 0.08em;
.agree-title{
font-size: 26px;
color: #1E2226;
}
.agree-date{
color: #626573;
font-size: 14px;
}
.agree-section{
text-align: left;
.ti{
color: #1E2226;
font-size: 16px;
font-weight: bold;
margin-bottom: 12px;
}
.ti-sec{
color: #1E2226;
font-size: 14px;
font-weight: bold;
margin-bottom: 12px;
}
.tx{
font-size: 14px;
color: #595961;
margin-bottom: 20px;
div{
margin-bottom: 12px;
line-height: 26px;
}
}
.flag-area{
font-size: 12px;
background: #F2F3F5;
color: #626573;
.flag-ti{
padding: 12px 24px;
color: #1E2226;
.flag-ti-copy{
cursor: pointer;
display: flex;
align-items: center;
justify-content: space-between;
gap: 6px;
color: #FFFFFF;
background: #626573;
padding: 6px;
}
}
.flag-info{
display: flex;
align-items: center;
flex-wrap: wrap;
padding: 5px 28px;
line-height: 26px;
gap: 20px;
div{
width: calc((100% - 60px) / 4);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
}
}
}
}
</style>
Loading…
Cancel
Save