update 修改驳回审核和增加分账,创建店铺补偿机制

This commit is contained in:
qijq 2025-05-29 21:53:13 +08:00
parent 75b4b128d8
commit 8a358f4121
8 changed files with 965 additions and 737 deletions

View File

@ -1,48 +1,57 @@
var currentUser_id = 0
//扩展对象方法 //扩展对象方法
$.extend({ $.extend({
//为对象新增ajaxPost方法 //为对象新增ajaxPost方法
request: function (ajaxOpts) { request: function (ajaxOpts) {
var opts = { var opts = {
type: "POST", type: 'POST',
dataType: "json", dataType: 'json',
timeout: 50000, timeout: 50000,
loading: true, loading: true,
data: { data: {
typ: 'json'}, typ: 'json',
success: function (data, status) {
}, },
success: function (data, status) {},
error: function (err, status) { error: function (err, status) {
Public.tipMsg(__('操作无法成功,请稍后重试!')); Public.tipMsg(__('操作无法成功,请稍后重试!'))
}, },
beforeSend: function (request) { beforeSend: function (request) {
// 规范写法 不可随意自定义 // 规范写法 不可随意自定义
if (localStorage.getItem("ukey")) { if (localStorage.getItem('ukey')) {
request.setRequestHeader("Authorization", "Bearer " + localStorage.getItem("ukey")); request.setRequestHeader(
'Authorization',
'Bearer ' + localStorage.getItem('ukey')
)
} }
},
} }
};
$.extend(true, opts, ajaxOpts); $.extend(true, opts, ajaxOpts)
if (opts.loading) { //loading if (opts.loading) {
//loading
//var $this = $(this); //var $this = $(this);
var loading; var loading
//var myTimer; //var myTimer;
//var preventTooFast = 'ui-btn-dis'; //var preventTooFast = 'ui-btn-dis';
$.extend(true, opts, { $.extend(true, opts, {
beforeSend: function (request) { beforeSend: function (request) {
// 规范写法 不可随意自定义 // 规范写法 不可随意自定义
if (localStorage.getItem("ukey")) { if (localStorage.getItem('ukey')) {
request.setRequestHeader("Authorization", "Bearer " + localStorage.getItem("ukey")); request.setRequestHeader(
'Authorization',
'Bearer ' + localStorage.getItem('ukey')
)
} }
}, },
complete: function () { complete: function () {
//loading.close(); //loading.close();
} },
}); })
/* /*
if ($this.hasClass(preventTooFast)) if ($this.hasClass(preventTooFast))
@ -52,9 +61,8 @@ $.extend({
*/ */
} }
var successCallback = opts.success
var successCallback = opts.success; var errorCallback = opts.error
var errorCallback = opts.error;
opts.success = function (data, status) { opts.success = function (data, status) {
/*if(data.status != 200){ /*if(data.status != 200){
@ -67,94 +75,102 @@ $.extend({
defaultPage.Public.tips({type:1, content:errorStr}); defaultPage.Public.tips({type:1, content:errorStr});
return; return;
}*/ }*/
successCallback && successCallback(data, status); if (data && data.status == 200) {
let _data = data.data
currentUser_id = _data.user_info.user_id
}
successCallback && successCallback(data, status)
} }
opts.error = function (err, ms) { opts.error = function (err, ms) {
var content = __('服务端响应错误!') var content = __('服务端响应错误!')
if (ms === 'timeout') { if (ms === 'timeout') {
content = __('请求超时!'); content = __('请求超时!')
} }
Public.tipMsg(content); Public.tipMsg(content)
errorCallback && errorCallback(err); errorCallback && errorCallback(err)
} }
$.ajax(opts); $.ajax(opts)
} },
}); })
$.extend({ $.extend({
//为对象新增ajaxPost方法 //为对象新增ajaxPost方法
send: function (url, data, callback, type) { send: function (url, data, callback, type) {
// shift arguments if data argument was omitted // shift arguments if data argument was omitted
if (jQuery.isFunction(data)) { if (jQuery.isFunction(data)) {
type = type || callback; type = type || callback
callback = data; callback = data
data = undefined; data = undefined
} }
// The url can be an options object (which then must have .url) // The url can be an options object (which then must have .url)
return $.request(jQuery.extend({ return $.request(
jQuery.extend(
{
url: url, url: url,
type: 'GET', type: 'GET',
dataType: type, dataType: type,
data: data, data: data,
loading: false, loading: false,
success: callback success: callback,
}, jQuery.isPlainObject(url) && url)); },
} jQuery.isPlainObject(url) && url
}); )
)
},
})
var socket_connect = 0;//连接状态 var socket_connect = 0 //连接状态
var socket_handle = null; var socket_handle = null
var vid = 10001; //固定用户调试使用 var vid = 10001 //固定用户调试使用
if (localStorage.getItem("ukey")) {
if (localStorage.getItem('ukey')) {
} else { } else {
//临时用户 //临时用户
vid = parseInt(Math.random() * (99999999999 - 10000000000 + 1) + 10000000000, 10); vid = parseInt(
Math.random() * (99999999999 - 10000000000 + 1) + 10000000000,
10
)
} }
window.initIm = function () { window.initIm = function () {
//$.send(sprintf("%s/account.php?ctl=%s&met=%s&typ=json", SYS.CONFIG.base_url, 'Index', 'getConfig'), {uid:vid}, function (res) //$.send(sprintf("%s/account.php?ctl=%s&met=%s&typ=json", SYS.CONFIG.base_url, 'Index', 'getConfig'), {uid:vid}, function (res)
$.send(SYS.CONFIG.im_config, { uid: vid }, function (res) { $.send(SYS.CONFIG.im_config, { uid: vid }, function (res) {
if (res.status == 200 && res.data.im_chat) { if (res.status == 200 && res.data.im_chat) {
var userInfo = res.data.user_info
var userInfo = res.data.user_info; var resourceSiteUrl = res.data.resource_site_url
var resourceSiteUrl = res.data.resource_site_url; var suid = res.data.suid
var suid = res.data.suid; var puid = res.data.puid
var puid = res.data.puid;
resourceSiteUrl = window.admin_url resourceSiteUrl = window.admin_url
function addCSS(url) { function addCSS(url) {
var link = document.createElement('link'); var link = document.createElement('link')
link.type = 'text/css'; link.type = 'text/css'
link.rel = 'stylesheet'; link.rel = 'stylesheet'
link.href = url; link.href = url
document.getElementsByTagName("head")[0].appendChild(link); document.getElementsByTagName('head')[0].appendChild(link)
} }
addCSS(resourceSiteUrl + '/im/css/layui.css?v=' + SYS.VER); addCSS(resourceSiteUrl + '/im/css/layui.css?v=' + SYS.VER)
$.getScript(resourceSiteUrl + '/im/layui.js?v=' + SYS.VER, function () { $.getScript(
resourceSiteUrl + '/im/layui.js?v=' + SYS.VER,
function () {
layui.config({ layui.config({
base: resourceSiteUrl + '/im/', //你存放新模块的目录注意不是layui的模块目录 base: resourceSiteUrl + '/im/', //你存放新模块的目录注意不是layui的模块目录
dir: resourceSiteUrl + '/im/' dir: resourceSiteUrl + '/im/',
}); //加载入口 }) //加载入口
if (!/^http(s*):\/\//.test(location.href)) { if (!/^http(s*):\/\//.test(location.href)) {
alert('请部署到localhost上查看该演示'); alert('请部署到localhost上查看该演示')
} }
layui.use('layim', function (layim) { layui.use('layim', function (layim) {
//演示自动回复 //演示自动回复
var autoReplay = [ var autoReplay = [
'您好,我现在有事不在,一会再和您联系。', '您好,我现在有事不在,一会再和您联系。',
@ -165,19 +181,17 @@ window.initIm = function () {
'<@ ̄︶ ̄@>', '<@ ̄︶ ̄@>',
'你要和我说话?你真的要和我说话?你确定自己想说吗?你一定非说不可吗?那你说吧,这是自动回复。', '你要和我说话?你真的要和我说话?你确定自己想说吗?你一定非说不可吗?那你说吧,这是自动回复。',
'face[黑线] 你慢慢说,别急……', 'face[黑线] 你慢慢说,别急……',
'(*^__^*) face[嘻嘻] ,是贤心吗?' '(*^__^*) face[嘻嘻] ,是贤心吗?',
]; ]
var config_data = { var config_data = {
//初始化接口 //初始化接口
init: { init: {
//url: sprintf("%s/account.php?mdu=sns&ctl=%s&met=%s&typ=json", SYS.CONFIG.base_url, 'User_Friend', 'getFriendsInfo'), //url: sprintf("%s/account.php?mdu=sns&ctl=%s&met=%s&typ=json", SYS.CONFIG.base_url, 'User_Friend', 'getFriendsInfo'),
//url: SYS.CONFIG.friend_info_lists, //url: SYS.CONFIG.friend_info_lists,
url: SYS.CONFIG.im_config, url: SYS.CONFIG.im_config,
data: { data: {},
} },
}
//或采用以下方式初始化接口 //或采用以下方式初始化接口
/* /*
@ -194,88 +208,92 @@ window.initIm = function () {
} }
*/ */
//查看群员接口 //查看群员接口
, members: { members: {
url: sprintf("%s/account.php?mdu=sns&ctl=%s&met=%s&typ=json", SYS.CONFIG.base_url, 'User_Zone', 'getMembers') url: sprintf(
, data: {} '%s/account.php?mdu=sns&ctl=%s&met=%s&typ=json',
} SYS.CONFIG.base_url,
'User_Zone',
'getMembers'
),
data: {},
},
//上传图片接口 //上传图片接口
, uploadImage: { uploadImage: {
url: SYS.CONFIG.upload //(返回的数据格式见下文) url: SYS.CONFIG.upload, //(返回的数据格式见下文)
, type: 'post' //默认post type: 'post', //默认post
} },
//上传文件接口 //上传文件接口
, uploadFile: { uploadFile: {
url: SYS.CONFIG.upload //(返回的数据格式见下文) url: SYS.CONFIG.upload, //(返回的数据格式见下文)
, type: 'post' //默认post type: 'post', //默认post
} },
, isAudio: true //开启聊天工具栏音频 isAudio: true, //开启聊天工具栏音频
, isVideo: true //开启聊天工具栏视频 isVideo: true, //开启聊天工具栏视频
//扩展工具栏 //扩展工具栏
, tool: [{ tool: [
alias: 'code' {
, title: '代码' alias: 'code',
, icon: '&#xe64e;' title: '代码',
}] icon: '&#xe64e;',
},
],
//,brief: true //是否简约模式(若开启则不显示主面板) //,brief: true //是否简约模式(若开启则不显示主面板)
, title: '客服' //自定义主面板最小化时的标题 title: '客服', //自定义主面板最小化时的标题
, right: '0px' //主面板相对浏览器右侧距离 right: '0px', //主面板相对浏览器右侧距离
//,minRight: '90px' //聊天面板最小化时相对浏览器右侧距离 //,minRight: '90px' //聊天面板最小化时相对浏览器右侧距离
, initSkin: '5.jpg' //1-5 设置初始背景 initSkin: '5.jpg', //1-5 设置初始背景
//,skin: ['aaa.jpg'] //新增皮肤 //,skin: ['aaa.jpg'] //新增皮肤
//,isfriend: false //是否开启好友 //,isfriend: false //是否开启好友
, isgroup: true //是否开启群组 isgroup: true, //是否开启群组
, min: true //是否始终最小化主面板默认false min: true, //是否始终最小化主面板默认false
, notice: true //是否开启桌面消息提醒默认false notice: true, //是否开启桌面消息提醒默认false
//,voice: false //声音提醒默认开启声音文件为default.mp3 //,voice: false //声音提醒默认开启声音文件为default.mp3
, msgbox: layui.cache.dir + 'css/modules/layim/html/msgbox.html' //消息盒子页面地址,若不开启,剔除该项即可 msgbox: layui.cache.dir + 'css/modules/layim/html/msgbox.html', //消息盒子页面地址,若不开启,剔除该项即可
, find: layui.cache.dir + 'css/modules/layim/html/find.html' //发现页面地址,若不开启,剔除该项即可 find: layui.cache.dir + 'css/modules/layim/html/find.html', //发现页面地址,若不开启,剔除该项即可
, chatLog: layui.cache.dir + 'css/modules/layim/html/chatlog.html' //聊天记录页面地址,若不开启,剔除该项即可 chatLog: layui.cache.dir + 'css/modules/layim/html/chatlog.html', //聊天记录页面地址,若不开启,剔除该项即可
}
};
if (typeof ajaxCart != 'undefined') { if (typeof ajaxCart != 'undefined') {
config_data['right'] = '36px'; config_data['right'] = '36px'
} }
if (userInfo) { if (userInfo) {
} else { } else {
$.cookie('vid', vid); $.cookie('vid', vid)
config_data = { config_data = {
init: { init: {
//配置客户信息 //配置客户信息
mine: { mine: {
"username": "访客" //我的昵称 username: '访客', //我的昵称
, "id": puid || vid //我的ID id: puid || vid, //我的ID
, "user_id": vid //我的ID user_id: vid, //我的ID
, "status": "online" //在线状态 online在线、hide隐身 status: 'online', //在线状态 online在线、hide隐身
, "remark": "在深邃的编码世界,做一枚轻盈的纸飞机" //我的签名 remark: '在深邃的编码世界,做一枚轻盈的纸飞机', //我的签名
, "avatar": resourceSiteUrl + '/im/images/user_no_avatar.png' //我的头像 avatar: resourceSiteUrl + '/im/images/user_no_avatar.png', //我的头像
} },
} },
, title: '客服' //自定义主面板最小化时的标题 title: '客服', //自定义主面板最小化时的标题
//开启客服模式 //开启客服模式
, brief: true brief: true,
, isfriend: false //是否开启好友 isfriend: false, //是否开启好友
, isgroup: false //是否开启群组 isgroup: false, //是否开启群组
, min: true //是否始终最小化主面板默认false min: true, //是否始终最小化主面板默认false
, notice: true //是否开启桌面消息提醒默认false notice: true, //是否开启桌面消息提醒默认false
} }
} }
//基础配置 //基础配置
layim.config(config_data); layim.config(config_data)
/* /*
layim.chat({ layim.chat({
@ -292,44 +310,99 @@ window.initIm = function () {
}); });
layim.setChatMin();*/ layim.setChatMin();*/
//切换在线状态的方法
var setonline = function () {
socket_handle.send('_online_user_' + currentUser_id)
}
//切换离线状态的方法
var sethide = function () {
console.log(currentUser_id)
socket_handle.send('_leave_user_' + currentUser_id)
}
//更新在线用户信息
function updateOnlineStatus(arra) {
//更新在线用户信息
$(
'div.layui-layim-main ul.layim-list-friend li ul.layui-layim-list li'
).each(function () {
//状态还原
if (this.className != 'layim-null') {
var span = $(this).find('span:first')
var name = span.html()
var loginName = this.className
.replace('layim-friend', '')
.trim()
//alert(arra+"***"+loginName);
if ((',' + arra + ',').indexOf(',' + loginName + ',') >= 0) {
if (name.indexOf('(<font color="red">离线</font>)') >= 0) {
span.replace(
'(<font color="red">离线</font>)',
'(<font color="green">在线</font>)'
)
} else if (
name.indexOf('(<font color="green">在线</font>)') >= 0
) {
} else {
span.html(name + '(<font color="green">在线</font>)')
}
} else {
if (name.indexOf('(<font color="red">离线</font>)') >= 0) {
} else if (
name.indexOf('(<font color="green">在线</font>)') >= 0
) {
span.replace(
'(<font color="green">在线</font>)',
'(<font color="red">离线</font>)'
)
} else {
span.html(name + '(<font color="red">离线</font>)')
}
}
}
})
}
//监听在线状态的切换事件 //监听在线状态的切换事件
layim.on('online', function (data) { layim.on('online', function (data) {
//console.log(data); //console.log(data);
if (data == "online") { if (data == 'online') {
setonline(); //用户上线 setonline() //用户上线
} else { } else {
sethide();//用户离线 sethide() //用户离线
} }
}); })
//监听签名修改 //监听签名修改
layim.on('sign', function (value) { layim.on('sign', function (value) {
console.log(value); console.log(value)
$.request({ $.request({
type: 'post', type: 'post',
url: SYS.CONFIG.edit_sign, url: SYS.CONFIG.edit_sign,
data: { user_sign: value }, data: { user_sign: value },
dataType: 'json', dataType: 'json',
success: function (result) { success: function (result) {},
} })
}); })
});
//监听自定义工具栏点击,以添加代码为例 //监听自定义工具栏点击,以添加代码为例
layim.on('tool(code)', function (insert) { layim.on('tool(code)', function (insert) {
layer.prompt({ layer.prompt(
title: __('插入代码') {
, formType: 2 title: __('插入代码'),
, shade: 0 formType: 2,
}, function (text, index) { shade: 0,
layer.close(index); },
insert('[pre class=layui-code]' + text + '[/pre]'); //将内容插入到编辑器 function (text, index) {
}); layer.close(index)
}); insert('[pre class=layui-code]' + text + '[/pre]') //将内容插入到编辑器
}
)
})
//监听layim建立就绪 //监听layim建立就绪
layim.on('ready', function (res) { layim.on('ready', function (res) {
//console.log(res.mine); //console.log(res.mine);
/* /*
layim.msgbox(5); //模拟消息盒子有新消息,实际使用时,一般是动态获得 layim.msgbox(5); //模拟消息盒子有新消息,实际使用时,一般是动态获得
@ -373,13 +446,12 @@ window.initIm = function () {
,content: "嗨你好欢迎体验LayIM。演示标记"+ new Date().getTime() ,content: "嗨你好欢迎体验LayIM。演示标记"+ new Date().getTime()
}); });
*/ */
}, 3000)
}, 3000); })
});
//监听发送消息 //监听发送消息
layim.on('sendMessage', function (data) { layim.on('sendMessage', function (data) {
var To = data.to;//对方的信息 var To = data.to //对方的信息
//跨平台用户修正 //跨平台用户修正
//data['to']['id'] = suid + '-' + data['to']['id']; //data['to']['id'] = suid + '-' + data['to']['id'];
//console.log(data); //console.log(data);
@ -387,27 +459,35 @@ window.initIm = function () {
if (socket_connect === 1) { if (socket_connect === 1) {
if (userInfo) { if (userInfo) {
if (To.type === 'group') { if (To.type === 'group') {
var url = sprintf("%s/account.php?mdu=sns&ctl=%s&met=%s&typ=json", SYS.CONFIG.base_url, 'User_Zone', 'addMessage'); var url = sprintf(
'%s/account.php?mdu=sns&ctl=%s&met=%s&typ=json',
SYS.CONFIG.base_url,
'User_Zone',
'addMessage'
)
url = SYS.CONFIG.zonemsg_add_msg; url = SYS.CONFIG.zonemsg_add_msg
} else { } else {
var url = sprintf("%s/account.php?mdu=sns&ctl=%s&met=%s&typ=json", SYS.CONFIG.base_url, 'User_Message', 'add'); var url = sprintf(
url = SYS.CONFIG.msg_add; '%s/account.php?mdu=sns&ctl=%s&met=%s&typ=json',
SYS.CONFIG.base_url,
'User_Message',
'add'
)
url = SYS.CONFIG.msg_add
} }
console.info(data); console.info(data)
var params = {}; var params = {}
params["user_other_id"] = data.to.friend_id params['user_other_id'] = data.to.friend_id
params["message_content"] = data.mine.content params['message_content'] = data.mine.content
params["item_id"] = 0 params['item_id'] = 0
params["length"] = 0 params['length'] = 0
params["w"] = 0 params['w'] = 0
params["h"] = 0 params['h'] = 0
//params["type"] = text //params["type"] = text
$.request({ $.request({
type: 'get', type: 'get',
//url: SYS.URL.user.msg_add, //url: SYS.URL.user.msg_add,
@ -416,8 +496,8 @@ window.initIm = function () {
dataType: 'json', dataType: 'json',
success: function (result) { success: function (result) {
if (result.status == 200) { if (result.status == 200) {
var msgData = result.data; var msgData = result.data
data['mine']['message_id'] = msgData.message_other_id; data['mine']['message_id'] = msgData.message_other_id
/* /*
var e = socket.createEvent('send_msg'); var e = socket.createEvent('send_msg');
@ -426,18 +506,17 @@ window.initIm = function () {
*/ */
//向服务器发送数据 //向服务器发送数据
var text = JSON.stringify(data); var text = JSON.stringify(data)
socket_handle.send(text); socket_handle.send(text)
} else { } else {
return false; return false
} }
} },
}); })
} else { } else {
//向服务器发送数据 //向服务器发送数据
var text = JSON.stringify(data); var text = JSON.stringify(data)
socket_handle.send(text); socket_handle.send(text)
} }
} }
@ -470,16 +549,16 @@ window.initIm = function () {
layim.getMessage(obj); layim.getMessage(obj);
}, 1000); }, 1000);
*/ */
}); })
//监听查看群员 //监听查看群员
layim.on('members', function (data) { layim.on('members', function (data) {
//console.log(data); //console.log(data);
}); })
//监听聊天窗口的切换 //监听聊天窗口的切换
layim.on('chatChange', function (res) { layim.on('chatChange', function (res) {
var type = res.data.type; var type = res.data.type
console.log(res.data.id) console.log(res.data.id)
if (type === 'friend') { if (type === 'friend') {
//模拟标注好友状态 //模拟标注好友状态
@ -495,91 +574,87 @@ window.initIm = function () {
}); });
*/ */
} }
}); })
var connentNode = function (data) { var connentNode = function (data) {
nodeSiteUrl = data.node_site_url; nodeSiteUrl = data.node_site_url
resourceSiteUrl = data.resource_site_url; resourceSiteUrl = data.resource_site_url
var script = document.createElement('script')
var script = document.createElement("script"); script.type = 'text/javascript'
script.type = "text/javascript"; script.src =
script.src = resourceSiteUrl + '/js/reconnecting-websocket.js?v=' + SYS.VER; resourceSiteUrl + '/js/reconnecting-websocket.js?v=' + SYS.VER
document.body.appendChild(script); document.body.appendChild(script)
checkIO(); checkIO()
function checkIO() { function checkIO() {
setTimeout(function () { setTimeout(function () {
if (typeof ReconnectingWebSocket === "function") { if (typeof ReconnectingWebSocket === 'function') {
connect_node(); connect_node()
} else { } else {
checkIO(); checkIO()
} }
}, 500); }, 500)
} }
function connect_node() { function connect_node() {
var connect_url = nodeSiteUrl; var connect_url = nodeSiteUrl
var member = {}; var member = {}
socket_connect = 0 //连接状态
socket_connect = 0;//连接状态 socket_handle = new ReconnectingWebSocket(connect_url)
socket_handle = new ReconnectingWebSocket(connect_url);
socket_handle.onopen = function (event) { socket_handle.onopen = function (event) {
socket_connect = 1; socket_connect = 1
console.info('open'); console.info('open')
console.info(event); console.info(event)
}; }
socket_handle.onconnecting = function (event) { socket_handle.onconnecting = function (event) {
console.info(event); console.info(event)
}; }
socket_handle.onmessage = function (event) { socket_handle.onmessage = function (event) {
console.info(event); console.info(event)
var msg_row = JSON.parse(event.data); var msg_row = JSON.parse(event.data)
if (typeof msg_row.msg_type !== 'undefined') {
if (typeof msg_row.msg_type !== "undefined") {
if (msg_row.msg_type == 'text') { if (msg_row.msg_type == 'text') {
} else if (msg_row.msg_type == 'voice') { } else if (msg_row.msg_type == 'voice') {
msg_row.content = 'audio[' + msg_row.content + ']'; msg_row.content = 'audio[' + msg_row.content + ']'
} else if (msg_row.msg_type == 'img') { } else if (msg_row.msg_type == 'img') {
msg_row.content = 'img[' + msg_row.content + ']'; msg_row.content = 'img[' + msg_row.content + ']'
} }
} }
if (msg_row.message_id) { if (msg_row.message_id) {
//消息设置为已读 //消息设置为已读
var url = sprintf("%s/account.php?mdu=sns&ctl=%s&met=%s&typ=json", SYS.CONFIG.base_url, 'User_Message', 'setRead'); var url = sprintf(
url = SYS.CONFIG.msg_set_read; '%s/account.php?mdu=sns&ctl=%s&met=%s&typ=json',
SYS.CONFIG.base_url,
'User_Message',
'setRead'
)
url = SYS.CONFIG.msg_set_read
$.request({ $.request({
type: 'post', type: 'post',
url: url, url: url,
data: { message_id: msg_row.message_id }, data: { message_id: msg_row.message_id },
dataType: 'json', dataType: 'json',
success: function (result) { success: function (result) {},
} })
});
} }
layim.getMessage(msg_row); layim.getMessage(msg_row)
} }
;
socket_handle.onerror = function (event) { socket_handle.onerror = function (event) {
console.info(event); console.info(event)
}; }
socket_handle.onclose = function (event) { socket_handle.onclose = function (event) {
console.info(event); console.info(event)
}; }
//开始 //开始
//结束 //结束
@ -587,75 +662,54 @@ window.initIm = function () {
// 表情 // 表情
function update_chat_msg(msg) { function update_chat_msg(msg) {
if (typeof smilies_array !== "undefined") { if (typeof smilies_array !== 'undefined') {
msg = '' + msg; msg = '' + msg
for (var i in smilies_array[1]) { for (var i in smilies_array[1]) {
var s = smilies_array[1][i]; var s = smilies_array[1][i]
var re = new RegExp("" + s[1], "g"); var re = new RegExp('' + s[1], 'g')
var smilieimg = '<img title="' + s[6] + '" alt="' + s[6] + '" src="' + resourceSiteUrl + '/images/smilies/' + s[2] + '">'; var smilieimg =
msg = msg.replace(re, smilieimg); '<img title="' +
s[6] +
'" alt="' +
s[6] +
'" src="' +
resourceSiteUrl +
'/images/smilies/' +
s[2] +
'">'
msg = msg.replace(re, smilieimg)
} }
} }
return msg; return msg
} }
//发送消息的方法 //发送消息的方法
function send(mine, To) { function send(mine, To) {
socket_handle.send(currentUser_id + "_msg_" + To.id + "_msg_" + mine.content + "_msg_" + mine.avatar + "_msg_" + To.type + "_msg_" + currentName + "_msg_NAN"); socket_handle.send(
}; currentUser_id +
'_msg_' +
//切换在线状态的方法 To.id +
function setonline() { '_msg_' +
socket_handle.send("_online_user_" + currentUser_id); mine.content +
}; '_msg_' +
mine.avatar +
//切换离线状态的方法 '_msg_' +
function sethide() { To.type +
socket_handle.send("_leave_user_" + currentUser_id); '_msg_' +
}; currentName +
'_msg_NAN'
//更新在线用户信息 )
function updateOnlineStatus(arra)//更新在线用户信息
{
$("div.layui-layim-main ul.layim-list-friend li ul.layui-layim-list li").each(function () {//状态还原
if (this.className != 'layim-null') {
var span = $(this).find("span:first");
var name = span.html();
var loginName = this.className.replace("layim-friend", "").trim();
//alert(arra+"***"+loginName);
if ((',' + arra + ",").indexOf(',' + loginName + ',') >= 0) {
if (name.indexOf('(<font color="red">离线</font>)') >= 0) {
span.replace('(<font color="red">离线</font>)', '(<font color="green">在线</font>)')
} else if (name.indexOf('(<font color="green">在线</font>)') >= 0) {
} else {
span.html(name + '(<font color="green">在线</font>)');
}
} else {
if (name.indexOf('(<font color="red">离线</font>)') >= 0) {
} else if (name.indexOf('(<font color="green">在线</font>)') >= 0) {
span.replace('(<font color="green">在线</font>)', '(<font color="red">离线</font>)')
} else {
span.html(name + '(<font color="red">离线</font>)');
}
}
}
});
} }
} }
connentNode(res.data); connentNode(res.data)
}); })
},
true
}, true); )
} }
}); })
} }
//登录后执行 //登录后执行
//initIm(); // initIm()

View File

@ -55,7 +55,6 @@ export function getMerchApproval(params) {
}) })
} }
/** /**
* @name 发起合同签署 * @name 发起合同签署
* @api api_url + '/admin/shop/esign/sign-flow/create-by-file' * @api api_url + '/admin/shop/esign/sign-flow/create-by-file'
@ -92,4 +91,38 @@ export function getCheckContractFile(params) {
}) })
} }
/**
* @name 创建店铺(补偿机制)
* @api api_url + '/admin/shop/esign/signed/contract/file'
* @param { mchMobile }
* @returns
*/
export function createShop(params) {
return request({
url: URL.shop.merch.createShop,
method: 'post',
headers: {
'Content-Type': 'application/json',
},
data: params,
})
}
/**
* @name 创建分账(补偿机制)
* @api api_url + '/admin/shop/esign/signed/contract/file'
* @param { mchMobile }
* @returns
*/
export function createSubAccount(params) {
return request({
url: URL.shop.merch.createSubAccount,
method: 'post',
headers: {
'Content-Type': 'application/json',
},
data: params,
})
}

View File

@ -12,8 +12,7 @@ import BaiduMap from './../components/baidu_Map_xiufu'
Vue.use(BaiduMap, { Vue.use(BaiduMap, {
// ak 是在百度地图开发者平台申请的密钥 详见 http://lbsyun.baidu.com/apiconsole/key */ // ak 是在百度地图开发者平台申请的密钥 详见 http://lbsyun.baidu.com/apiconsole/key */
ak: 'chsSzRvFcU1uXYoDHAHlsF98NkTVbzvE', ak: 'it9e3OBa5JLwTT4V0YGyLUP02w3o1mml',
}) })
export default BaiduMap export default BaiduMap

View File

@ -438,6 +438,10 @@ let url = {
createByFile: api_url + '/admin/shop/esign/sign-flow/create-by-file', createByFile: api_url + '/admin/shop/esign/sign-flow/create-by-file',
//查看商家签署合同 //查看商家签署合同
checkContractFile: api_url + '/admin/shop/esign/signed/contract/file', checkContractFile: api_url + '/admin/shop/esign/signed/contract/file',
//创建店铺(补偿机制)
createShop: api_url + '/admin/shop/shop-store-base/mchinfo/to/storeinfo',
//创建分账(补偿机制)
createSubAccount: api_url + '/mobile/pay/lakala/ledger/applyLedgerMer',
}, },
activity: { activity: {
lottery: { lottery: {

View File

@ -183,12 +183,12 @@
</div> </div>
</el-form-item> </el-form-item>
<el-form-item label="发布版本详细说明" prop="description"> <el-form-item label="发布版本详细说明" prop="description">
<vab-quill <el-input
ref="vab-quill" type="textarea"
:autosize="{ minRows: 10, maxRows: 20 }"
placeholder="请输入内容"
v-model="formDialog.description" v-model="formDialog.description"
:min-height="300" ></el-input>
:options="vbOptions"
/>
</el-form-item> </el-form-item>
<el-form-item label="升级包开启状态" prop="is_force_update"> <el-form-item label="升级包开启状态" prop="is_force_update">
<el-switch <el-switch
@ -630,9 +630,6 @@ export default {
align-items: center; align-items: center;
box-shadow: inset 0 -1px 0 #efefef; box-shadow: inset 0 -1px 0 #efefef;
.head-add-btn {
}
.head-content { .head-content {
display: flex; display: flex;
align-items: center; align-items: center;

View File

@ -23,27 +23,27 @@ const addressInfo = [
label: '详细地址', label: '详细地址',
}, },
{ {
key:'storefrontImg', key: 'front_facade_image',
label: '门脸图', label: '门脸图',
}, },
{ {
key:'surroundingsImg', key: 'environment_image',
label: '环境图', label: '环境图',
}, },
] ]
const certificate = [ const certificate = [
// {
// key: 'biz_license_company',
// label: '公司名',
// },
// {
// key:'biz_license_number',
// label:'营业执照编号',
// },
{ {
key:'biz_license_company', key: 'businessLicenseOCR',
label:'公司名', label: '营业执照OCR识别',
},
{
key:'biz_license_number',
label:'营业执照编号',
},
{
key:'biz_license_image',
label:'营业执照图片',
}, },
{ {
key: 'license_type', key: 'license_type',
@ -57,64 +57,63 @@ const certificate = [
key: 'license_image', key: 'license_image',
label: '许可证图片', label: '许可证图片',
}, },
// {
// key: 'legal_person_mobile',
// label: '法人手机号',
// },
{ {
key:'legal_person_name', key: 'legalPersonOCR',
label:'法人姓名', label: '法人身份证OCR识别',
},
{
key:'legal_person_mobile',
label:'法人手机号',
},
{
key:'legal_person_id_number',
label:'法人身份证号码',
},
{
key:'legal_person_id_images',
label:'法人身份证正面图片',
},
{
key:'legal_person_id_images2',
label:'法人身份证反面图片',
}, },
// {
// key: 'legal_person_id_number',
// label: '法人身份证号码',
// },
// {
// key: 'legal_person_id_images',
// label: '法人身份证正面图片',
// },
// {
// key: 'legal_person_id_images2',
// label: '法人身份证反面图片',
// },
] ]
const certificate2 = [ const certificate2 = [
{ {
key:'individual_id_number', key: 'personOCR',
label:'身份证号码', label: '身份证OCR',
placeholder:'地图地址',
},
{
key:'individual_id_images',
label:'身份证正面图片',
placeholder:'地图地址',
},
{
key:'individual_id_images2',
label:'身份证反面图片',
placeholder: '地图地址', placeholder: '地图地址',
}, },
// {
// key: 'individual_id_images',
// label: '身份证正面图片',
// placeholder: '地图地址',
// },
// {
// key: 'individual_id_images2',
// label: '身份证反面图片',
// placeholder: '地图地址',
// },
] ]
const bankInfo = [ const bankInfo = [
{ {
key:'bank_name', key: 'bankOCR',
label:'开户银行', label: '银行OCR',
},
{
key:'bank_branch_name',
label:'开户银行的支行名称',
},
{
key:'account_number',
label:'收款账户号码',
},
{
key:'account_holder_name',
label:'收款账户姓名',
}, },
// {
// key: 'bank_branch_name',
// label: '开户银行的支行名称',
// },
// {
// key: 'account_number',
// label: '收款账户号码',
// },
// {
// key: 'account_holder_name',
// label: '收款账户姓名',
// },
] ]
const formConfig = [ const formConfig = [
@ -249,7 +248,7 @@ const formConfig2=[
{ {
key: 'storefrontImg', key: 'storefrontImg',
label: '门脸图', label: '门脸图',
placeholder:'' placeholder: '',
}, },
{ {
key: 'surroundingsImg', key: 'surroundingsImg',

View File

@ -36,6 +36,7 @@
详情 详情
</el-button> </el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<el-pagination <el-pagination
@ -77,7 +78,32 @@ export default {
height: window.innerHeight - 220 - 150, height: window.innerHeight - 220 - 150,
}, },
shopId: 0, shopId: 0,
approvalStatus: ['已通过', '未通过', '待审核'], approvalStatus:[
{
key:1,
value:'已通过',
},
{
key:2,
value:'未通过',
},
{
key:3,
value:'待审核',
},
{
key:4,
value:'未申请过',
},
{
key:5,
value:'已提交拉卡拉审核',
},
{
key:21,
value:'拉卡拉审核未通过',
},
],
signedStatus: [ signedStatus: [
{ {
index: -1, index: -1,
@ -109,6 +135,7 @@ export default {
}, },
], ],
entityType: ['企业', '个人'], entityType: ['企业', '个人'],
storeStatus : ['已创建','未创建'],
tabColumn: [ tabColumn: [
{ {
prop: 'operation', prop: 'operation',
@ -131,7 +158,7 @@ export default {
label: '联系人', label: '联系人',
}, },
{ {
prop: '', prop: 'account_holder_name',
label: '公司名称', label: '公司名称',
}, },
{ {
@ -155,9 +182,17 @@ export default {
label: '审批状态', label: '审批状态',
}, },
{ {
prop: 'signed_status', prop: 'store_status',
label: '合同签署状态', label: '店铺创建状态',
}, },
{
prop: 'has_apply_split',
label: '是否分账',
},
// {
// prop: 'signed_status',
// label: '',
// },
], ],
tableData: [ tableData: [
{ {
@ -179,9 +214,18 @@ export default {
if (res.data.items.length > 0) { if (res.data.items.length > 0) {
res.data.items.forEach((item) => { res.data.items.forEach((item) => {
if (item.approval_status) { if (item.approval_status) {
item.approval_status =
this.approvalStatus[item.approval_status - 1] const found = this.approvalStatus.find(group => group.key == item.approval_status);
item.approval_status = found ? found.value : 'Unknown Status';
} }
if(item.store_status){
item.store_status = this.storeStatus[item.store_status - 1]
}
if(item.has_apply_split){
item.has_apply_split = item.has_apply_split == 1 ? '是' : '否'
}
if (item.signed_status != null) { if (item.signed_status != null) {
this.signedStatus.forEach((group) => { this.signedStatus.forEach((group) => {
if (group.index == item.signed_status) { if (group.index == item.signed_status) {
@ -217,21 +261,26 @@ export default {
if (row.approval_status == '已通过' && columnIndex == 10) { if (row.approval_status == '已通过' && columnIndex == 10) {
return 'status-pass' return 'status-pass'
} }
if (row.approval_status == '未通过' && columnIndex == 10) { if (['拉卡拉审核未通过','未通过'].includes(row.approval_status) && columnIndex == 10) {
return 'status-not-pass' return 'status-not-pass'
} }
if (row.approval_status == '待审核' && columnIndex == 10) { if (['待审核','未申请过','已提交拉卡拉审核'].includes(row.approval_status) && columnIndex == 10) {
return 'status-check-pass' return 'status-check-pass'
} }
if (row.signed_status == '' && columnIndex == 11) { if (row.store_status == '已创建' && columnIndex == 11) {
return 'status-pass' return 'status-pass'
} }
if (row.signed_status == '没签署' && columnIndex == 11) { if (row.store_status == '未创建' && columnIndex == 11) {
return 'status-not-pass' return 'status-not-pass'
} }
if (row.signed_status == '待审核' && columnIndex == 11) {
return 'status-check-pass'
if (row.has_apply_split == '是' && columnIndex == 12) {
return 'status-pass'
}
if (row.has_apply_split == '否' && columnIndex == 12) {
return 'status-not-pass'
} }
} }
}, },

View File

@ -435,18 +435,18 @@
:class="['item-input', 'approval-status']" :class="['item-input', 'approval-status']"
:style="approvalStatusClass" :style="approvalStatusClass"
> >
{{ approvalStatus[form.approval_status - 1] }} {{ formatApprovalStatus(form.approval_status) }}
</span> </span>
</div> </div>
</div> </div>
<div class="item-info"> <div class="item-info">
<div class="item-block"> <div class="item-block">
<div class="item-lable">合同签署状态</div> <div class="item-lable">店铺创建状态</div>
<span <span
:class="['item-input', 'approval-status']" :class="['item-input', 'approval-status']"
:style="signedStatusClass" :style="signedStatusClass"
> >
{{ form.signedStatusName }} {{ storeStatus[form.store_status - 1] }}
</span> </span>
</div> </div>
</div> </div>
@ -540,7 +540,7 @@
:key="index + item.key" :key="index + item.key"
:label="item.key" :label="item.key"
> >
{{ item.label }} {{ form.entity_type == 1 ? '银行' : item.label }}
</el-checkbox> </el-checkbox>
</el-checkbox-group> </el-checkbox-group>
</div> </div>
@ -550,20 +550,12 @@
<div class="btn-content" v-if="!showLoading"> <div class="btn-content" v-if="!showLoading">
<el-button <el-button
class="btn" class="btn"
style="width: 150px;"
type="success" type="success"
@click="getMerchApproval(1)" @click="getMerchApproval(1)"
v-if="![1].includes(form.approval_status)" v-if="![1].includes(form.approval_status)"
> >
通过审核 提交拉卡拉审核
</el-button>
<el-button
class="btn btn-hetong"
type="success"
@click="getCreateByFile()"
v-if="![2].includes(form.signed_status)"
:disabled="!form.signed_status <= 0 || form.approval_status != 1"
>
合同签署
</el-button> </el-button>
<el-button <el-button
class="btn" class="btn"
@ -576,6 +568,22 @@
<!-- <el-button class="btn" type="danger" @click="getCheckContractFile()"> <!-- <el-button class="btn" type="danger" @click="getCheckContractFile()">
查看商家签署合同 查看商家签署合同
</el-button> --> </el-button> -->
<el-button
class="btn btn-hetong"
type="success"
@click="createShop()"
v-if="form.store_status!=1 && form.approval_status == 1"
>
创建店铺
</el-button>
<el-button
class="btn btn-hetong"
type="success"
@click="createSubAccount()"
v-if=" form.has_apply_mer ==1 && form.has_apply_split != 1"
>
创建分账
</el-button>
<el-button class="btn" @click="close()">取消</el-button> <el-button class="btn" @click="close()">取消</el-button>
</div> </div>
</el-dialog> </el-dialog>
@ -587,6 +595,8 @@ import {
getMerchApproval, getMerchApproval,
getCreateByFile, getCreateByFile,
getCheckContractFile, getCheckContractFile,
createShop,
createSubAccount
} from '@/api/shopAudit/shopAudit' } from '@/api/shopAudit/shopAudit'
import city from './cityData.js' import city from './cityData.js'
import config from './formConfig' import config from './formConfig'
@ -614,6 +624,7 @@ export default {
contact_name: '', contact_name: '',
biz_category: 0, biz_category: 0,
settlement_method: '', settlement_method: '',
store_area:'',
store_longitude: '', store_longitude: '',
store_latitude: '', store_latitude: '',
province_id: '', province_id: '',
@ -647,11 +658,45 @@ export default {
city_name: '', city_name: '',
county_name: '', county_name: '',
signed_status: 0, signed_status: 0,
lkl_mer_cup_no:'', //
lkl_term_no:'',//
has_ec_signed:'' , // 1-2-
has_apply_mer:'' ,// 1-2-
has_apply_split:'',// 1-2-
has_apply_receiver:'',// 1-2-,
has_bind_receiver:''// 1-2-
}, },
bizCategoryList: ['医疗用品', '生活用品'], bizCategoryList: ['医疗用品', '生活用品'],
entityType: ['企业', '个人'], entityType: ['企业', '个人'],
approvalStatus: ['已通过', '未通过', '待审核'], // approvalStatus: ['', '', '','','',''],
approvalStatus:[
{
key:1,
value:'已通过',
},
{
key:2,
value:'未通过',
},
{
key:3,
value:'待审核',
},
{
key:4,
value:'未申请过',
},
{
key:5,
value:'已提交拉卡拉审核',
},
{
key:21,
value:'拉卡拉审核未通过',
},
],
licenseType: ['许可证', '特许证件', '其他证件'], licenseType: ['许可证', '特许证件', '其他证件'],
storeStatus : ['已创建','未创建'],
signedStatus: [ signedStatus: [
{ {
index: -1, index: -1,
@ -705,21 +750,12 @@ export default {
return colorList[this.form.approval_status - 1] return colorList[this.form.approval_status - 1]
}, },
signedStatusClass() { signedStatusClass() {
let colorList = [
'color:#ffba00',
'color:#ffba00',
'color:#48c978',
'color:red',
'color:red',
'color:red',
'',
'color:red',
]
if (this.form.signed_status == -1) {
return 'color:#ffba00' if (this.form.store_status == 1) {
return 'color:#48c978'
} else { } else {
return colorList[this.form.signed_status] return 'color:red'
} }
}, },
}, },
@ -751,29 +787,44 @@ export default {
} }
} }
this.cityData.provinceData.forEach((item) => { if(this.form.store_area){
if (item.value == res.data.province_id) { let areaArr = this.form.store_area.split('/');
this.form.province_nmae = item.label if(areaArr[0]){
this.form.province_nmae = areaArr[0]
} }
})
this.cityData.cityData.forEach((item) => { if(areaArr[1]){
item.forEach((group) => { this.form.city_name = areaArr[1]
if (group.value == res.data.city_id) {
this.form.city_name = group.label
} }
})
})
this.cityData.areaData.forEach((item) => { if(areaArr[2]){
item.forEach((group) => { this.form.county_name = areaArr[2]
group.forEach((group2) => {
if (group2.value == res.data.county_id) {
this.form.county_name = group2.label
} }
}) }
})
}) // this.cityData.provinceData.forEach((item) => {
// if (item.value == res.data.province_id) {
// this.form.province_nmae = item.label
// }
// })
// this.cityData.cityData.forEach((item) => {
// item.forEach((group) => {
// if (group.value == res.data.city_id) {
// this.form.city_name = group.label
// }
// })
// })
// this.cityData.areaData.forEach((item) => {
// item.forEach((group) => {
// group.forEach((group2) => {
// if (group2.value == res.data.county_id) {
// this.form.county_name = group2.label
// }
// })
// })
// })
this.srcList1.push(res.data.front_facade_image) this.srcList1.push(res.data.front_facade_image)
this.srcList2.push(res.data.environment_image) this.srcList2.push(res.data.environment_image)
@ -818,7 +869,7 @@ export default {
id: this.id, id: this.id,
approvalStatus: status, approvalStatus: status,
approvalRemark: this.form.approvalRemark, approvalRemark: this.form.approvalRemark,
approvalInvalidCol: this.checkboxList, approvalInvalidCol: this.checkboxList.filter(item => !['businessLicenseOCR', 'legalPersonOCR','personOCR','bankOCR'].includes(item)),
} }
let res = await getMerchApproval(parems) let res = await getMerchApproval(parems)
@ -882,7 +933,26 @@ export default {
close() { close() {
this.$emit('close') this.$emit('close')
}, },
handlecheckbox() {}, handlecheckbox(e) {
// <!-- --!>
if(e.includes('legalPersonOCR')){
this.checkboxList = ['legal_person_id_number','legal_person_id_images','legal_person_id_images2',...this.checkboxList ]
}
// <!-- --!>
if(e.includes('personOCR')){
this.checkboxList = ['individual_id_number','individual_id_images','individual_id_images2',...this.checkboxList]
}
// <!-- , --!>
if(e.includes('bankOCR')){
this.checkboxList = ['bankcard_item','account_holder_name','account_number','branch_name',...this.checkboxList]
}
//
if(e.includes('businessLicenseOCR')){
this.checkboxList = ['biz_license_image','biz_license_company','legal_person_name','biz_license_number',...this.checkboxList]
}
},
handleCheckAllChange(val) { handleCheckAllChange(val) {
if (this.form.entity_type == 1) { if (this.form.entity_type == 1) {
this.checkboxList = val this.checkboxList = val
@ -909,6 +979,29 @@ export default {
this.isIndeterminate = false this.isIndeterminate = false
}, },
formatApprovalStatus(status){
const found = this.approvalStatus.find(item => item.key == status);
return found ? found.value : 'Unknown Status';
},
async createSubAccount(){
let res = await createSubAccount({merCupNo:this.form.lkl_mer_cup_no})
if(res && res.status == 200){
this.$message({
type: 'success',
message: '分账成功',
})
}
},
async createShop(){
let res = await createShop({mchMobile:this.form.login_mobile})
if(res && res.status == 200){
this.$message({
type: 'success',
message: '店铺创建成功',
})
}
}
}, },
} }
</script> </script>