Browse Source

增加常见问题、关于我们等配置

master
sj 2 years ago
parent
commit
7e4aa23926
  1. 5
      src/components/Editor/index.vue
  2. 3
      src/views/bxg/shop/goods/form.vue
  3. 106
      src/views/bxg/shop/set/aboutUs.vue
  4. 31
      src/views/bxg/shop/set/form.vue
  5. 13
      src/views/bxg/shop/set/index.vue
  6. 130
      src/views/bxg/shop/set/problem.vue
  7. 113
      src/views/bxg/shop/set/problemform.vue
  8. 6
      src/views/bxg/shop/user/form.vue
  9. 59
      src/views/bxg/shop/yxStoreHotList/index.vue
  10. 65
      src/views/bxg/wechat/config/robot.vue
  11. 28
      src/views/bxg/yxEvaluation/index.vue

5
src/components/Editor/index.vue

@ -37,6 +37,11 @@ export default {
type: Number,
default: null,
},
/* 宽度 */
wight: {
type: Number,
default: null,
},
/* 最小高度 */
minHeight: {
type: Number,

3
src/views/bxg/shop/goods/form.vue

@ -213,7 +213,8 @@
<el-row>
<el-col :span="24">
<el-form-item label="商品详情:">
<vue-ueditor-wrap v-model="formValidate.description" :config="myConfig" @beforeInit="addCustomDialog" style="width: 90%;"></vue-ueditor-wrap>
<!-- <vue-ueditor-wrap v-model="formValidate.description" :config="myConfig" @beforeInit="addCustomDialog" style="width: 90%;"></vue-ueditor-wrap>-->
<editor v-model="formValidate.description" :config="myConfig" @beforeInit="addCustomDialog"></editor>
</el-form-item>
</el-col>
</el-row>

106
src/views/bxg/shop/set/aboutUs.vue

@ -0,0 +1,106 @@
<template>
<div class="app-container">
<el-form ref="form" :model="form" :rules="rules" size="small" label-width="150px">
<el-form-item label="关于我们">
<!-- <el-input v-model="form.site_url" style="width: 370px;" />-->
<vue-ueditor-wrap v-model="form.aboutUs" :config="myConfig" @beforeInit="addCustomDialog" style="width: 90%;"></vue-ueditor-wrap>
</el-form-item>
<el-form-item label="">
<el-button type="primary" @click="doAdd">提交</el-button>
</el-form-item>
</el-form>
</div>
</template>
<script>
import checkPermission from '@/utils/permission'
import initData from '@/mixins/crud'
import { add, get } from '@/api/bxg/yxSystemConfig'
import eForm from './form'
import picUpload from '@/components/pic-upload'
import VueUeditorWrap from 'vue-ueditor-wrap';
export default {
components: { eForm, picUpload ,VueUeditorWrap},
mixins: [initData],
data() {
return {
myConfig: {
autoHeightEnabled: false, //
initialFrameHeight: 500, //
initialFrameWidth: '100%', //
UEDITOR_HOME_URL: '/UEditor/',
serverUrl: ''
},
delLoading: false,
form: {
aboutUs:'',
},
rules: {
}
}
},
created() {
get().then(rese => {
const that = this;
rese.content.map(function(key, value) {
const keyName = key.menuName
const newValue = key.value
if(keyName in that.form){
that.form[keyName] = newValue
}
})
})
},
methods: {
doAdd() {
add(this.form).then(res => {
this.$notify({
title: '添加成功',
type: 'success',
duration: 2500
})
this.loading = false
this.$parent.init()
}).catch(err => {
this.loading = false
console.log(err.response.data.message)
})
},
// beforeInit() {
// this.url = 'bxg/api/yxSystemGroupData'
// const sort = 'id,desc'
// this.params = { page: this.page, size: this.size, sort: sort, groupName: 'zsw_home_aboutUs' }
// return true
// },
addCustomDialog () {
window.UE.registerUI('yshop', function (editor, uiName) {
let dialog = new window.UE.ui.Dialog({
iframeUrl: '/yshop/materia/index',
editor: editor,
name: uiName,
title: '上传图片',
cssRules: 'width:1200px;height:500px;padding:20px;'
});
this.dialog = dialog;
var btn = new window.UE.ui.Button({
name: 'dialog-button',
title: '上传图片',
cssRules: `background-image: url(../../../assets/images/icons.png);background-position: -726px -77px;`,
onclick: function () {
dialog.render();
dialog.open();
}
});
return btn;
}, 37);
},
checkPermission,
}
}
</script>
<style scoped>
</style>

31
src/views/bxg/shop/set/form.vue

@ -10,6 +10,16 @@
<el-form-item label="uniapp路由">
<el-input v-model="form.uniapp_url" style="width: 300px;" />
</el-form-item>
<el-form-item label="轮播图类型">
<el-select v-model="form.type" placeholder="请选择">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="图片(750*375)">
<MaterialList v-model="form.imageArr" style="width: 300px" type="image" :num="1" :width="150" :height="150" />
</el-form-item>
@ -25,7 +35,6 @@
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<!--<el-input v-model="form.groupName" />-->
<el-button type="text" @click="cancel">取消</el-button>
<el-button :loading="loading" type="primary" @click="doSubmit">确认</el-button>
</div>
@ -47,10 +56,29 @@ export default {
data() {
return {
loading: false, dialog: false,
options:[
{
value:0,
label:'首页轮播图',
},
{
value:1,
label:'品牌馆轮播图',
},
{
value:2,
label:'优惠券轮播图',
},
{
value:3,
label:'活动专区轮播图',
},
],
form: {
id: '',
groupName: 'zsw_home_banner',
name: '',
type:0,
url: '',
wxapp_url: '',
uniapp_url: '',
@ -118,6 +146,7 @@ export default {
id: '',
groupName: 'zsw_home_banner',
name: '',
type:'',
url: '',
wxapp_url: '',
uniapp_url: '',

13
src/views/bxg/shop/set/index.vue

@ -20,6 +20,7 @@
<el-table v-loading="loading" :data="data" size="small" style="width: 100%;">
<el-table-column prop="id" label="ID" />
<el-table-column prop="map.name" label="标题" />
<el-table-column prop="map.type" label="轮播类型" :formatter="Formatter" />
<el-table-column prop="map.url" label="链接url" />
<el-table-column prop="map.uniapp_url" label="uniapp路由" />
<el-table-column ref="table" label="图片">
@ -87,6 +88,17 @@ export default {
})
},
methods: {
Formatter(row,colum,cellValue){
console.log(cellValue,'row')
switch (cellValue)
{
case 0: return "首页轮播图"
case 1: return "品牌馆轮播图"
case 2: return "优惠券轮播图"
case 3: return "活动专区轮播图"
default: return "首页轮播图"
}
},
checkPermission,
beforeInit() {
this.url = 'bxg/api/yxSystemGroupData'
@ -123,6 +135,7 @@ export default {
id: data.id,
groupName: data.groupName,
name: data.map.name,
type: data.map.type,
url: data.map.url,
wxapp_url: data.map.wxapp_url,
uniapp_url: data.map.uniapp_url,

130
src/views/bxg/shop/set/problem.vue

@ -0,0 +1,130 @@
<template>
<div class="app-container">
<!--工具栏-->
<div class="head-container">
<!-- 新增 -->
<div style="display: inline-block;margin: 0px 2px;">
<el-button
v-permission="['admin','YXSYSTEMGROUPDATA_ALL','YXSYSTEMGROUPDATA_CREATE']"
class="filter-item"
size="mini"
type="primary"
icon="el-icon-plus"
@click="add"
>新增</el-button>
</div>
</div>
<!--表单组件-->
<eForm ref="form" :is-add="isAdd" />
<!--表格渲染-->
<el-table v-loading="loading" :data="data" size="small" style="width: 100%;">
<el-table-column prop="id" label="ID" />
<el-table-column prop="map.problem" label="问题" />
<el-table-column prop="map.answer" label="答案" width="300" type="textarea" />
<el-table-column label="状态" align="center">
<template slot-scope="scope">
<div>
<el-tag v-if="scope.row.status === 1" style="cursor: pointer" :type="''">显示</el-tag>
<el-tag v-else style="cursor: pointer" :type=" 'info' ">不显示</el-tag>
</div>
</template>
</el-table-column>
<el-table-column v-if="checkPermission(['admin','YXSYSTEMGROUPDATA_ALL','YXSYSTEMGROUPDATA_EDIT','YXSYSTEMGROUPDATA_DELETE'])" label="操作" width="150px" align="center">
<template slot-scope="scope">
<el-button v-permission="['admin','YXSYSTEMGROUPDATA_ALL','YXSYSTEMGROUPDATA_EDIT']" size="mini" type="primary" icon="el-icon-edit" @click="edit(scope.row)" />
<el-popover
:ref="scope.row.id"
v-permission="['admin','YXSYSTEMGROUPDATA_ALL','YXSYSTEMGROUPDATA_DELETE']"
placement="top"
width="180"
>
<p>确定删除本条数据吗</p>
<div style="text-align: right; margin: 0">
<el-button size="mini" type="text" @click="$refs[scope.row.id].doClose()">取消</el-button>
<el-button :loading="delLoading" type="primary" size="mini" @click="subDelete(scope.row.id)">确定</el-button>
</div>
<el-button slot="reference" type="danger" icon="el-icon-delete" size="mini" />
</el-popover>
</template>
</el-table-column>
</el-table>
<!--分页组件-->
<el-pagination
:total="total"
:current-page="page + 1"
style="margin-top: 8px;"
layout="total, prev, pager, next, sizes"
@size-change="sizeChange"
@current-change="pageChange"
/>
</div>
</template>
<script>
import checkPermission from '@/utils/permission'
import initData from '@/mixins/crud'
import { del } from '@/api/bxg/yxSystemGroupData'
import eForm from './problemform'
export default {
components: { eForm },
mixins: [initData],
data() {
return {
delLoading: false
}
},
created() {
this.$nextTick(() => {
this.init()
})
},
methods: {
checkPermission,
beforeInit() {
this.url = 'bxg/api/yxSystemGroupData'
const sort = 'id,desc'
this.params = { page: this.page, size: this.size, sort: sort, groupName: 'zsw_home_problem' }
return true
},
subDelete(id) {
this.delLoading = true
del(id).then(res => {
this.delLoading = false
this.$refs[id].doClose()
this.dleChangePage()
this.init()
this.$notify({
title: '删除成功',
type: 'success',
duration: 2500
})
}).catch(err => {
this.delLoading = false
this.$refs[id].doClose()
console.log(err.response.data.message)
})
},
add() {
this.isAdd = true
this.$refs.form.dialog = true
},
edit(data) {
this.isAdd = false
const _this = this.$refs.form
_this.form = {
id: data.id,
groupName: data.groupName,
problem: data.map.problem,
answer: data.map.answer,
sort: data.map.sort,
status: data.map.status,
}
_this.dialog = true
}
}
}
</script>
<style scoped>
</style>

113
src/views/bxg/shop/set/problemform.vue

@ -0,0 +1,113 @@
<template>
<el-dialog :append-to-body="true" :close-on-click-modal="false" :before-close="cancel" :visible.sync="dialog" :title="isAdd ? '新增' : '编辑'" width="500px">
<el-form ref="form" :model="form" :rules="rules" size="small" label-width="140px">
<el-form-item label="问题">
<el-input v-model="form.problem" style="width: 300px;" />
</el-form-item>
<el-form-item label="回答">
<el-input v-model="form.answer" style="width: 300px;" type="textarea" />
</el-form-item>
<el-form-item label="排序">
<el-input v-model="form.sort" style="width: 300px;" />
</el-form-item>
<el-form-item label="是否显示">
<el-radio v-model="form.status" :label="1"></el-radio>
<el-radio v-model="form.status" :label="0" style="width: 200px;"></el-radio>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<!--<el-input v-model="form.groupName" />-->
<el-button type="text" @click="cancel">取消</el-button>
<el-button :loading="loading" type="primary" @click="doSubmit">确认</el-button>
</div>
</el-dialog>
</template>
<script>
import { add, edit } from '@/api/bxg/yxSystemGroupData'
import picUpload from '@/components/pic-upload'
import MaterialList from '@/components/material'
export default {
components: { picUpload, MaterialList },
props: {
isAdd: {
type: Boolean,
required: true
}
},
data() {
return {
loading: false, dialog: false,
form: {
id: '',
groupName: 'zsw_home_problem',
problem: '',
answer: '',
sort: 0,
status: 1,
},
rules: {
}
}
},
watch: {
},
methods: {
cancel() {
this.resetForm()
},
doSubmit() {
this.loading = true
if (this.isAdd) {
this.doAdd()
} else this.doEdit()
},
doAdd() {
add(this.form).then(res => {
this.resetForm()
this.$notify({
title: '添加成功',
type: 'success',
duration: 2500
})
this.loading = false
this.$parent.init()
}).catch(err => {
this.loading = false
console.log(err.response.data.message)
})
},
doEdit() {
edit(this.form).then(res => {
this.resetForm()
this.$notify({
title: '修改成功',
type: 'success',
duration: 2500
})
this.loading = false
this.$parent.init()
}).catch(err => {
this.loading = false
console.log(err.response.data.message)
})
},
resetForm() {
this.dialog = false
this.$refs['form'].resetFields()
this.form = {
id: '',
groupName: 'zsw_home_problem',
problem: '',
answer: '',
sort: 0,
status: 1,
}
}
}
}
</script>
<style scoped>
</style>

6
src/views/bxg/shop/user/form.vue

@ -14,7 +14,8 @@
<el-input v-model="form.phone" style="width: 370px;" />
</el-form-item>
<el-form-item label="用户积分">
<el-input v-model="form.integral" style="width: 370px;" />
<el-input v-model="form.integral" style="width: 370px;"
type="number" oninput="if(value>999999)value=999999"/>
</el-form-item>
<el-form-item label="商户管理">
<el-radio v-model="form.adminid" :label="1">开启</el-radio>
@ -75,6 +76,9 @@ export default {
loginType: ''
},
rules: {
integral: [
{ type: 'number', min: 0, max: 999999, message: '最大只能是999999', trigger: 'blur' }
],
}
}
},

59
src/views/bxg/shop/yxStoreHotList/index.vue

@ -5,24 +5,32 @@
<!--如果想在工具栏加入更多按钮可以使用插槽方式 slot = 'left' or 'right'-->
<crudOperation :permission="permission" />
<!--表单组件-->
<el-dialog :close-on-click-modal="false" :before-close="crud.cancelCU" :visible.sync="crud.status.cu > 0" :title="crud.status.title" width="500px">
<el-dialog :destroy-on-close="true" :close-on-click-modal="false" :before-close="crud.cancelCU" :visible.sync="crud.status.cu > 0" :title="crud.status.title" width="500px">
<el-form ref="form" :model="form" :rules="rules" size="small" label-width="80px">
<!-- <el-form-item label="榜单列表ID">-->
<!-- <el-input v-model="form.id" style="width: 370px;" />-->
<!-- </el-form-item>-->
<el-form-item label="榜单名称" prop="listName">
<el-input v-model="form.listName" style="width: 370px;" />
<el-input v-model="form.listName" style="width: 380px;" />
</el-form-item>
<el-form-item label="商品列表">
<el-cascader
<el-input style="width: 200px;" v-model="product" v-if="productNameList.length==0"
:readonly="true" @click.native="changeShow=!changeShow" placeholder="点击选择商品或收起商品列表">
</el-input>
<div v-else style="border:#c3c3c3 1px solid;border-radius:3px;margin-bottom:2px;padding-left:17px" @click="changeShow=!changeShow">
<div v-for="(item,index) in this.productNameList">
<span>top{{index+1}}:{{item}}</span>
</div>
</div>
<el-cascader-panel
v-if="changeShow"
:props="props"
clearable
@change="cascaderChange($event)"
v-model="productList"
placeholder="多选,按选择顺序排序"
:options="cateList"
ref="quitCascader"
filterable></el-cascader>
filterable></el-cascader-panel>
</el-form-item>
<el-form-item label="是否显示">
@ -33,7 +41,7 @@
</el-radio-group>
</el-form-item>
<el-form-item label="排序">
<el-input v-model="form.sort" style="width: 370px;" type="number" />
<el-input v-model="form.sort" style="width: 380px;" type="number" />
</el-form-item>
<!-- <el-form-item label="添加时间">-->
<!-- <el-input v-model="form.createTime" style="width: 370px;" />-->
@ -123,6 +131,9 @@ export default {
mixins: [presenter(defaultCrud), header(), form(defaultForm), crud()],
data() {
return {
product:'',
productNameList:[],
changeShow:false,
oldProductList:[],
props: { multiple: true },
productList:[],
@ -144,17 +155,22 @@ export default {
this.getInfo();
},
methods: {
cancel(){
this.productNameList=[]
},
cascaderChange(val) {
this.productList=[]
let productList=[]
productList=this.getCascader(val,this.oldProductList);
this.productNameList=[];
let productList=[];
productList=this.getCascader(val,this.oldProductList,this.$refs.quitCascader.getCheckedNodes(true));
this.productList = productList //
this.oldProductList=productList;
console.log('val',val,'element',productList,'Nodes',this.$refs.quitCascader.getCheckedNodes(true))
this.form.productList=JSON.stringify(this.productList.map(item=>item[1]));
},
getCascader(newVal,oldVal) {
getCascader(newVal,oldVal,Nodes) {
let productList = []
console.log('val',newVal,'element',oldVal)
// console.log('val',newVal,'element',oldVal,'Nodes',Nodes)
//,
if(newVal.length <= 1) {
productList=newVal;
@ -180,7 +196,6 @@ export default {
let diff = newValList.concat(oldValList).filter((value, index, arr) => {
return arr.indexOf(value) === arr.lastIndexOf(value)
});
// console.log('newValList',newValList,oldValList,diff)
newVal.forEach((item)=> {
diff.forEach(ele=>{
if(item[1]==ele) {
@ -189,8 +204,20 @@ export default {
})
});
productList=oldVal
console.log('productList',productList)
}
console.log('val',newVal,'productList',productList)
let productNameList=[];
productList.forEach(ele=>{
Nodes.forEach(item=>{
if (item.value==ele[1]){
// productNameList=item.parent.label+'/'+item.label+productNameList;
console.log('item.parent.label+\'/\'+item.label',item.parent.label+'/'+item.label)
productNameList.push(item.parent.label+'/'+item.label)
}
})
})
console.log('productList',productNameList)
this.productNameList=productNameList;
return productList;
},
change(val){
@ -231,15 +258,19 @@ export default {
return true
}, //
[CRUD.HOOK.afterToCU](crud, form) {
this.changeShow=false;
this.productNameList=[];
this.productList=[];
if (form.productList && form.id) {
let data=JSON.parse(this.form.productList)
console.log('data',data)
let productNameList=[]
data.forEach(item=>{
let product=[Number(item.cateId),Number(item.id)]
this.productList.push(product)
productNameList.push(item.storeName)
})
// product=select
console.log( '111',this.productList,typeof(this.product));
this.productNameList=productNameList;
}
},
}

65
src/views/bxg/wechat/config/robot.vue

@ -0,0 +1,65 @@
<template>
<div class="app-container">
<el-form ref="form" :model="form" :rules="rules" size="small" label-width="150px">
<el-form-item label="Webhook地址">
<el-input v-model="form.robotUrl" style="width: 800px;"/>
</el-form-item>
<el-form-item label="">
<el-button type="primary" @click="doSubmit">提交</el-button>
</el-form-item>
</el-form>
</div>
</template>
<script>
import checkPermission from '@/utils/permission'
import initData from '@/mixins/crud'
import { del, add, get } from '@/api/bxg/yxSystemConfig'
import eForm from './form'
import picUpload from '@/components/pic-upload'
import { Message } from 'element-ui'
import fileUpload from '@/components/file-upload'
export default {
components: { eForm, picUpload, fileUpload },
mixins: [initData],
data() {
return {
delLoading: false,
form: {
robotUrl:''
},
rules: {
}
}
},
created() {
get().then(rese => {
const that = this
rese.content.map(function(key, value) {
const keyName = key.menuName
const newValue = key.value
if(keyName in that.form){
that.form[keyName] = newValue
}
})
})
},
methods: {
checkPermission,
doSubmit() {
add(this.form).then(res => {
Message({ message: '设置成功', type: 'success' })
}).catch(err => {
// this.loading = false
console.log(err.response.data.message)
})
}
}
}
</script>
<style scoped>
</style>

28
src/views/bxg/yxEvaluation/index.vue

@ -21,7 +21,6 @@
:options="cateList"
filterable></el-cascader>
</el-form-item>
<el-form-item label="评测介绍">
<el-input v-model="form.synopsis" type="textarea" style="width: 370px;" />
</el-form-item>
@ -36,23 +35,30 @@
<!-- <el-input v-model="form.homeImage" style="width: 370px;" />-->
<MaterialList v-model="picArr" type="image" :num="1" :width="250" :height="150" />
</el-form-item>
<el-form-item label="产品展示文字">
<!-- <el-form-item label="图文配置" >-->
<el-tabs v-model="activeName" type="card" @tab-click="handleClick" style="padding-left:250px">
<el-tab-pane label="产品展示栏" name="first"></el-tab-pane>
<el-tab-pane label="实用感受栏" name="second"></el-tab-pane>
<el-tab-pane label="易用感受栏" name="third"></el-tab-pane>
</el-tabs>
<!-- </el-form-item>-->
<el-form-item label="产品展示文字" v-if="activeName=='first'">
<el-input v-model="form.displaySynopsis" type="textarea" style="width: 370px;" />
</el-form-item>
<el-form-item label="产品展示图集">
<el-form-item label="产品展示图集" v-if="activeName=='first'">
<!-- <el-input v-model="form.displayImage" style="width: 370px;" />-->
<MaterialList v-model="picArr1" type="image" :num="4" :width="150" :height="150" />
</el-form-item>
<el-form-item label="实用感受文字">
<el-form-item label="实用感受文字" v-if="activeName=='second'">
<el-input v-model="form.feelSynopsis" type="textarea" style="width: 370px;" />
</el-form-item>
<el-form-item label="实用感受图集">
<el-form-item label="实用感受图集" v-if="activeName=='second'">
<MaterialList v-model="picArr2" type="image" :num="4" :width="150" :height="150" />
</el-form-item>
<el-form-item label="易用感受文字">
<el-form-item label="易用感受文字" v-if="activeName=='third'">
<el-input v-model="form.accessibilitySynopsis" type="textarea" style="width: 370px;" />
</el-form-item>
<el-form-item label="易用感受图集">
<el-form-item label="易用感受图集" v-if="activeName=='third'">
<!-- <el-input v-model="form.accessibilityImage" style="width: 370px;" />-->
<MaterialList v-model="picArr3" type="image" :num="4" :width="150" :height="150" />
</el-form-item>
@ -62,14 +68,10 @@
<el-radio :label="0">隐藏</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="排序" prop="sort">
<el-input v-model="form.sort" style="width: 370px;" type="number" />
</el-form-item>
<!-- <el-form-item label="tenantId">-->
<!-- <el-input v-model="form.tenantId" style="width: 370px;" />-->
<!-- </el-form-item>-->
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="crud.cancelCU">取消</el-button>
@ -158,6 +160,7 @@ export default {
mixins: [presenter(defaultCrud), header(), form(defaultForm), crud()],
data() {
return {
activeName:'first',
product:[],
//
cateList:[],
@ -260,6 +263,9 @@ export default {
this.getInfo();
},
methods: {
handleClick(tab, event) {
console.log(tab, event);
},
// // id,
// getProductName(value){
// console.log(value,'value')

Loading…
Cancel
Save