123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640 |
- define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {
- var Controller = {
- index: function () {
- var configIndex = new Vue({
- el: "#configIndex",
- data() {
- return {
- activeName: "basic",
- configData: {
- basic: [{
- id: 'shopro',
- title: '商城信息',
- tip: '配置商城基本信息',
- message: '商城名称、H5域名、Logo',
- icon: 'shopro-icon',
- leaf: '#6ACAA5',
- background: 'linear-gradient(180deg, #BAF0DD 0%, #51BC99 100%)',
- url: "{:url(shopro.config/platform?type=shopro')}",
- button: {
- background: '#E0F1EB',
- color: '#13986C'
- },
- }, {
- id: 'user',
- title: '会员配置',
- tip: '配置默认会员信息',
- message: '默认昵称、头像、分组、余额、积分',
- icon: 'user-icon',
- leaf: '#E0B163',
- background: 'linear-gradient(180deg, #FCE6B7 0%, #E9A848 100%)',
- button: {
- background: '#F7EDDD',
- color: '#B07318'
- },
- }, {
- id: 'share',
- title: '分享配置',
- tip: '配置默认分享信息',
- message: '分享标题、图片、海报背景',
- icon: 'share-icon',
- leaf: '#915CF9',
- background: 'linear-gradient(180deg, #D5B8FA 0%, #8F62C9 100%)',
- button: {
- background: '#E7DEF6',
- color: '#6625CF'
- },
- }, {
- id: 'score',
- title: '积分配置',
- tip: '配置默认积分规则',
- message: '签到积分、连续签到规则',
- icon: 'score-icon',
- leaf: '#EC9371',
- background: 'linear-gradient(180deg, #FADDC0 0%, #E47F6D 100%)',
- button: {
- background: '#F6E5E1',
- color: '#D75125'
- },
- }, {
- id: 'withdraw',
- title: '提现配置',
- tip: '配置默认提现规则',
- message: '手续费、最小最大金额',
- icon: 'withdraw-icon',
- leaf: '#EA6670',
- background: 'linear-gradient(180deg, #FCB7BE 0%, #D36068 100%)',
- button: {
- background: '#F3DCDE',
- color: '#D61226'
- },
- }, {
- id: 'order',
- title: '商城配置',
- tip: '配置默认商城规则',
- message: '库存预警,订单自动关闭,订单自动收货,订单自动评价',
- icon: 'order-icon',
- leaf: '#6991E7',
- background: 'linear-gradient(180deg, #AFCBFD 0%, #5A7CCF 100%)',
- button: {
- background: '#DBE2F6',
- color: '#1B5EE7'
- },
- }, {
- id: 'services',
- title: '第三方服务',
- tip: '配置物流及位置信息',
- message: '快递鸟物流、高德地图',
- icon: 'services-icon',
- leaf: '#14B0F3',
- background: 'linear-gradient(180deg, #A5E2FC 0%, #158CBF 100%)',
- button: {
- background: '#DBE2F6',
- color: '#00A3D7'
- },
- }, {
- id: 'chat',
- title: '客服配置',
- tip: '配置客服信息',
- message: '配置客服信息,快速沟通',
- icon: 'chat-icon',
- leaf: '#27C9C3',
- background: 'linear-gradient(180deg, #A1F3DE 0%, #3DA0A7 100%)',
- button: {
- background: '#D6E9EA',
- color: '#159198'
- },
- }, {
- id: 'store',
- title: '门店配置',
- tip: '配置门店协议',
- message: '配置门店协议',
- icon: 'store-icon',
- leaf: '#487EE5',
- background: 'linear-gradient(180deg, #84C4FF 0%, #3C68BE 100%)',
- button: {
- background: '#DFE7EE',
- color: '#1C54BD'
- },
- }],
- platform: [{
- id: 'wxOfficialAccount',
- title: '微信公众号',
- tip: '配置微信公众号',
- message: 'AppId、AppSecret、自动登录',
- icon: 'wxOfficialAccount-icon',
- leaf: '#6ACAA4',
- background: 'linear-gradient(180deg, #AAF0D7 0%, #5CC09F 100%)',
- buttonMessage: '公众号设置',
- button: {
- background: '#DEF0EA',
- color: '#0EA753'
- },
- }, {
- id: 'wxMiniProgram',
- title: '小程序',
- tip: '配置小程序',
- message: 'AppId、AppSecret、自动登录',
- icon: 'wxMiniProgram-icon',
- leaf: '#6962F7',
- background: 'linear-gradient(180deg, #C1BFFF 0%, #6563C9 100%)',
- buttonMessage: '小程序设置',
- button: {
- background: '#D8D8F1',
- color: '#3932BF'
- },
- }, {
- id: 'H5',
- title: 'H5',
- tip: '配置H5平台',
- message: '微信H5支付信息',
- icon: 'h5-icon',
- leaf: '#EC9371',
- background: 'linear-gradient(180deg, #FADDC0 0%, #E5806D 100%)',
- buttonMessage: 'H5设置',
- button: {
- background: '#F7E6E1',
- color: '#D75E37'
- },
- }, {
- id: 'App',
- title: 'App',
- tip: '配置App平台',
- message: '生成App实现多端同步使用',
- icon: 'App-icon',
- leaf: '#6990E6',
- background: 'linear-gradient(180deg, #BED6FF 0%, #6785CD 100%)',
- buttonMessage: 'App设置',
- button: {
- background: '#DAE1F6',
- color: '#1666D3'
- },
- }],
- payment: [{
- id: 'wechat',
- title: '微信支付',
- tip: '',
- message: '',
- icon: 'wechat-icon',
- leaf: '#6ACAA4',
- background: 'linear-gradient(180deg, #AAF0D7 0%, #5DC1A0 100%)',
- button: {
- background: '#DEF0EA',
- color: '#0EA753'
- },
- }, {
- id: 'alipay',
- title: '支付宝支付',
- tip: '',
- message: '',
- icon: 'alipay-icon',
- leaf: '#6990E6',
- background: 'linear-gradient(180deg, #BFD6FF 0%, #6786CE 100%)',
- button: {
- background: '#DAE1F6',
- color: '#005AD7',
- },
- }, {
- id: 'wallet',
- title: '余额支付',
- tip: '',
- message: '',
- icon: 'wallet-icon',
- leaf: '#EC9371',
- background: 'linear-gradient(180deg, #FADDC0 0%, #E6816E 100%)',
- button: {
- background: '#F7E6E1',
- color: '#D75E37'
- },
- }, {
- id: 'apple',
- title: 'Apple Pay',
- tip: '',
- message: '',
- icon: 'apple-icon',
- leaf: '#6962F7',
- background: 'linear-gradient(180deg, #C2C0FF 0%, #6563C9 100%) ',
- button: {
- background: '#D8D8F1',
- color: '#1E14E0',
- cursor: 'auto'
- },
- }]
- }
- }
- },
- methods: {
- tabClick(tab, event) {
- this.activeName = tab.name;
- },
- operation(id, title) {
- let that = this;
- Fast.api.open("shopro/config/platform?type=" + id + "&tab=" + that.activeName + "&title=" + title, title);
- },
- },
- })
- },
- platform: function () {
- function debounce(handle, delay) {
- let time = null;
- return function () {
- let self = this,
- arg = arguments;
- clearTimeout(time);
- time = setTimeout(function () {
- handle.apply(self, arg);
- }, delay)
- }
- }
- var configPlatform = new Vue({
- el: "#configPlatform",
- data() {
- return {
- platformData: {
- shopro: {
- name: '',
- domain: '',
- version: '',
- logo: '',
- logo_arr: [],
- copyright: ['', ''],
- user_protocol: '',
- privacy_protocol: '',
- about_us: '',
- },
- user: {
- nickname: '',
- avatar: '',
- avatar_arr: [],
- group_id: '',
- money: '',
- score: '',
- },
- share: {
- title: '',
- image: '',
- goods_poster_bg: '',
- user_poster_bg: '',
- groupon_poster_bg: '',
- image_arr: [],
- goods_poster_bg_arr: [],
- user_poster_bg_arr: [],
- groupon_poster_bg_arr: [],
- },
- score: {
- everyday: '',
- until_day: '',
- inc_value: '',
- },
- withdraw: {
- methods: [],
- wechat_alipay_auto: 0,
- service_fee: '',
- min: '',
- max: '',
- },
- order: {
- order_auto_close: '',
- order_auto_confirm: '',
- order_auto_comment: '',
- order_comment_content: '',
- goods: {
- stock_warning: 0
- }
- },
- services: {
- amap: {
- appkey: ''
- },
- express: {
- ebusiness_id: '',
- type: 'free',
- appkey: '',
- jd_code: '',
- Sender: {
- Name: '',
- Mobile: '',
- ProvinceName: '',
- CityName: '',
- ExpAreaName: '',
- Address: '',
- },
- PayType: 1,
- ExpType: 1,
- CustomerName: '',
- CustomerPwd: '',
- ShipperCode: '',
- },
- area_arr: []
- },
- chat: {
- type: 'shopro',
- basic: {
- last_customer_service: 1,
- allocate: 'busy',
- notice: '显示在用户端头部',
- },
- system: {
- is_ssl: 0,
- ssl_type: 'cert',
- ssl_cert: '/www/server/panel/vhost/cert/****/fullchain.pem',
- ssl_key: '/www/server/panel/vhost/cert/****/privkey.pem',
- gateway_port: 1819,
- gateway_num: 2,
- gateway_start_port: 2010,
- business_worker_port: 2238,
- business_worker_num: 4
- }
- },
- store: {
- protocol: '',
- selfetch_protocol: '',
- },
- wxOfficialAccount: {
- name: '',
- wx_type: '',
- avatar: '',
- qrcode: '',
- avatar_arr: [],
- qrcode_arr: [],
- app_id: '',
- secret: '',
- url: '',
- token: '',
- aes_key: '',
- auto_login: '',
- status: ''
- },
- wxMiniProgram: {
- name: '',
- avatar: '',
- qrcode: '',
- avatar_arr: [],
- qrcode_arr: [],
- app_id: '',
- secret: '',
- auto_login: '',
- },
- H5: {
- app_id: '',
- secret: '',
- },
- App: {
- app_id: '',
- secret: '',
- },
- wechat: {
- platform: [],
- mch_id: '',
- key: '',
- cert_client: '',
- cert_key: '',
- mode: 'normal',
- sub_mch_id: '',
- appid: '',
- app_id: '',
- miniapp_id: '',
- },
- alipay: {
- platform: [],
- app_id: '',
- ali_public_key: '',
- app_cert_public_key: '',
- alipay_root_cert: '',
- private_key: '',
- mode: 'normal',
- pid: '',
- },
- wallet: {
- platform: [],
- },
- },
- type: new URLSearchParams(location.search).get('type'),
- tab: new URLSearchParams(location.search).get('tab'),
- title: new URLSearchParams(location.search).get('title'),
- groupList: [],
- detailForm: {},
- must_delete: ['logo_arr', 'avatar_arr', 'image_arr', 'goods_poster_bg_arr', 'user_poster_bg_arr', 'groupon_poster_bg_arr', 'qrcode_arr', 'area_arr'],
- expressAddress: window.location.origin + '/addons/shopro/express/callback',
- deliverCompany: [],
- areaOptions: []
- }
- },
- mounted() {
- this.operationData();
- if (this.type == 'services') {
- this.getDeliverCompany();
- this.getAreaOptions()
- }
- },
- methods: {
- operationData() {
- this.detailForm = this.platformData[this.type]
- if (Config.row) {
- for (key in this.detailForm) {
- if (Config.row[key]) {
- if(Config.row[key] instanceof Object){
- for(inner in Config.row[key]){
- if(Config.row[key][inner]){
- this.detailForm[key][inner]=Config.row[key][inner]
- }
- }
- }else{
- this.detailForm[key] = Config.row[key]
- }
- }
- }
- }
- if (this.type == 'shopro') {
- this.detailForm.logo_arr = []
- this.detailForm.logo_arr.push(Fast.api.cdnurl(this.detailForm.logo))
- } else if (this.type == 'user') {
- this.groupList = Config.groupList
- this.detailForm.avatar_arr = []
- this.detailForm.avatar_arr.push(Fast.api.cdnurl(this.detailForm.avatar))
- } else if (this.type == 'share') {
- this.detailForm.image_arr = []
- this.detailForm.image_arr.push(Fast.api.cdnurl(this.detailForm.image))
- this.detailForm.goods_poster_bg_arr = []
- this.detailForm.goods_poster_bg_arr.push(Fast.api.cdnurl(this.detailForm.goods_poster_bg))
- this.detailForm.user_poster_bg_arr = []
- this.detailForm.user_poster_bg_arr.push(Fast.api.cdnurl(this.detailForm.user_poster_bg))
- this.detailForm.groupon_poster_bg_arr = []
- this.detailForm.groupon_poster_bg_arr.push(Fast.api.cdnurl(this.detailForm.groupon_poster_bg))
- } else if (this.type == 'withdraw') {
- this.detailForm.service_fee = this.detailForm.service_fee * 100
- } else if (this.type == 'services') {
- this.detailForm.area_arr = []
- if (this.detailForm.express && this.detailForm.express.Sender) {
- this.detailForm.area_arr = [this.detailForm.express.Sender.ProvinceName, this.detailForm.express.Sender.CityName, this.detailForm.express.Sender.ExpAreaName]
- }
- } else if (this.type == 'chat') {
- if(!this.detailForm.system.ssl_type){
- this.$set(this.detailForm.system,'ssl_type','cert')
- }
- } else if (this.type == 'wxOfficialAccount') {
- this.detailForm.avatar_arr = []
- this.detailForm.avatar_arr.push(Fast.api.cdnurl(this.detailForm.avatar))
- this.detailForm.qrcode_arr = []
- this.detailForm.qrcode_arr.push(Fast.api.cdnurl(this.detailForm.qrcode))
- } else if (this.type == 'wxMiniProgram') {
- this.detailForm.avatar_arr = []
- this.detailForm.avatar_arr.push(Fast.api.cdnurl(this.detailForm.avatar))
- this.detailForm.qrcode_arr = []
- this.detailForm.qrcode_arr.push(Fast.api.cdnurl(this.detailForm.qrcode))
- }
- },
- richtextSelect(field) {
- let that = this;
- Fast.api.open("shopro/richtext/select?multiple=false", "选择协议", {
- callback: function (data) {
- that.detailForm[field] = data.data.id;
- }
- });
- return false;
- },
- attachmentSelect(type, field) {
- let that = this;
- Fast.api.open("general/attachment/select?multiple=false", "选择", {
- callback: function (data) {
- switch (type) {
- case "image":
- that.detailForm[field] = data.url;
- that.detailForm[field + '_arr'] = data.url;
- break;
- // case "file":
- // that.detailForm[field] = data.url;
- // break;
- case "ssl":
- that.detailForm.system[field] = data.url;
- break;
- }
- }
- });
- return false;
- },
- delImg(type, field) {
- let that = this;
- switch (type) {
- case "image":
- that.detailForm[field] = '';
- that.detailForm[field + '_arr'] = [];
- break;
- case "file":
- that.detailForm[field] = '';
- break;
- }
- },
- submitFrom(type) {
- let that = this;
- if (type == 'yes') {
- let submitData = JSON.parse(JSON.stringify(that.detailForm))
- if (that.type == 'withdraw') {
- submitData.service_fee = (Number(submitData.service_fee) / 100).toFixed(2)
- }
- if (that.type == 'services') {
- submitData.express.Sender.ProvinceName = submitData.area_arr[0];
- submitData.express.Sender.CityName = submitData.area_arr[1];
- submitData.express.Sender.ExpAreaName = submitData.area_arr[2];
- }
- that.must_delete.forEach(i => {
- if (submitData[i]) {
- delete submitData[i]
- }
- });
- Fast.api.ajax({
- url: 'shopro/config/platform?type=' + that.type,
- loading: true,
- type: 'POST',
- data: {
- data: JSON.stringify(submitData),
- group: that.tab,
- title: that.title
- },
- }, function (ret, res) {
- Fast.api.close()
- })
- } else {
- Fast.api.close()
- }
- },
- getDeliverCompany(searchWhere = '') {
- let that = this;
- Fast.api.ajax({
- url: 'shopro/express/select',
- loading: false,
- type: 'GET',
- data: {
- searchWhere: searchWhere,
- }
- }, function (ret, res) {
- that.deliverCompany = res.data.rows;
- return false
- })
- },
- deliverDebounceFilter: debounce(function (searchWhere) {
- this.getDeliverCompany(searchWhere)
- }, 1000),
- deliverFilter(searchWhere) {
- this.deliverDebounceFilter(searchWhere);
- },
- getAreaOptions() {
- var that = this;
- Fast.api.ajax({
- url: `shopro/area/select`,
- loading: false,
- type: 'GET',
- }, function (ret, res) {
- that.areaOptions = res.data;
- return false;
- })
- },
- changeWechatType() {
- for (key in this.detailForm) {
- if (key != 'mode' && key != 'platform') {
- this.detailForm[key] = ''
- }
- }
- },
- ajaxUpload(id) {
- let that = this;
- var formData = new FormData();
- formData.append("file", $('#' + id)[0].files[0]);
- $.ajax({
- type: "post",
- url: "ajax/upload",
- data: formData,
- cache: false,
- processData: false,
- contentType: false,
- success: function (data) {
- if(data.code==1){
- that.detailForm[id] = data.data.url
- }else{
- that.$notify({
- title: '警告',
- message: data.msg,
- type: 'warning'
- });
- }
- }
- })
- },
- },
- })
- },
- add: function () {
- Controller.api.bindevent();
- },
- edit: function () {
- Controller.api.bindevent();
- },
- api: {
- bindevent: function () {
- Form.api.bindevent($("form[role=form]"));
- }
- }
- };
- return Controller;
- });
|