初始上传

This commit is contained in:
2026-04-04 17:27:12 +08:00
parent 4d80d28eb4
commit b7e11774ee
11191 changed files with 1588469 additions and 0 deletions

View File

@@ -0,0 +1,16 @@
import Cookies from 'js-cookie'
const TokenKey = 'SDrxEA%_tWW6ezd3'
export function getToken() {
return Cookies.get(TokenKey)
}
export function setToken(token, expires = 0) {
if (expires) return Cookies.set(TokenKey, token, {expires})
return Cookies.set(TokenKey, token)
}
export function removeToken() {
return Cookies.remove(TokenKey)
}

View File

@@ -0,0 +1,78 @@
export default {
emjoyList: {
"[emjoy_01]": 'public/static/img/emojy/emjoy_01.gif',
"[emjoy_02]": 'public/static/img/emojy/emjoy_02.gif',
"[emjoy_03]": 'public/static/img/emojy/emjoy_03.gif',
"[emjoy_04]": 'public/static/img/emojy/emjoy_04.gif',
"[emjoy_05]": 'public/static/img/emojy/emjoy_05.gif',
"[emjoy_06]": 'public/static/img/emojy/emjoy_06.gif',
"[emjoy_07]": 'public/static/img/emojy/emjoy_07.gif',
"[emjoy_08]": 'public/static/img/emojy/emjoy_08.gif',
"[emjoy_09]": 'public/static/img/emojy/emjoy_09.gif',
"[emjoy_10]": 'public/static/img/emojy/emjoy_10.gif',
"[emjoy_11]": 'public/static/img/emojy/emjoy_11.gif',
"[emjoy_12]": 'public/static/img/emojy/emjoy_12.gif',
"[emjoy_13]": 'public/static/img/emojy/emjoy_13.gif',
"[emjoy_14]": 'public/static/img/emojy/emjoy_14.gif',
"[emjoy_15]": 'public/static/img/emojy/emjoy_15.gif',
"[emjoy_16]": 'public/static/img/emojy/emjoy_16.gif',
"[emjoy_17]": 'public/static/img/emojy/emjoy_17.gif',
"[emjoy_18]": 'public/static/img/emojy/emjoy_18.gif',
"[emjoy_19]": 'public/static/img/emojy/emjoy_19.gif',
"[emjoy_20]": 'public/static/img/emojy/emjoy_20.gif',
"[emjoy_21]": 'public/static/img/emojy/emjoy_21.gif',
"[emjoy_22]": 'public/static/img/emojy/emjoy_22.gif',
"[emjoy_23]": 'public/static/img/emojy/emjoy_23.gif',
"[emjoy_24]": 'public/static/img/emojy/emjoy_24.gif',
"[emjoy_25]": 'public/static/img/emojy/emjoy_25.gif',
"[emjoy_26]": 'public/static/img/emojy/emjoy_26.gif',
"[emjoy_27]": 'public/static/img/emojy/emjoy_27.gif',
"[emjoy_28]": 'public/static/img/emojy/emjoy_28.gif',
"[emjoy_29]": 'public/static/img/emojy/emjoy_29.gif',
"[emjoy_30]": 'public/static/img/emojy/emjoy_30.gif',
"[emjoy_31]": 'public/static/img/emojy/emjoy_31.gif',
"[emjoy_32]": 'public/static/img/emojy/emjoy_32.gif',
"[emjoy_33]": 'public/static/img/emojy/emjoy_33.gif',
"[emjoy_34]": 'public/static/img/emojy/emjoy_34.gif',
"[emjoy_35]": 'public/static/img/emojy/emjoy_35.gif',
"[emjoy_36]": 'public/static/img/emojy/emjoy_36.gif',
"[emjoy_37]": 'public/static/img/emojy/emjoy_37.gif',
"[emjoy_38]": 'public/static/img/emojy/emjoy_38.gif',
"[emjoy_39]": 'public/static/img/emojy/emjoy_39.gif',
"[emjoy_40]": 'public/static/img/emojy/emjoy_40.gif',
"[emjoy_41]": 'public/static/img/emojy/emjoy_41.gif',
"[emjoy_42]": 'public/static/img/emojy/emjoy_42.gif',
"[emjoy_43]": 'public/static/img/emojy/emjoy_43.gif',
"[emjoy_44]": 'public/static/img/emojy/emjoy_44.gif',
"[emjoy_45]": 'public/static/img/emojy/emjoy_45.gif',
"[emjoy_46]": 'public/static/img/emojy/emjoy_46.gif',
"[emjoy_47]": 'public/static/img/emojy/emjoy_47.gif',
},
stringToEmjoy(value) {
if (!value) return;
let string = value; // 需要把[握手]和[微笑]匹配出来
let reg = new RegExp('\\[emjoy_(.+?)\\]', 'g');
let emjoyString = string.replace(reg, v => {
let emjoy = '';
for (let index in this.emjoyList) {
if (v == index) {
// emjoy = emjoyList[index]
let img = util.img(this.emjoyList[index])
emjoy = "<img style='margin:0 3px;' src='" + img + "'/>"
}
}
if (emjoy) {
return emjoy;
} else {
return v
}
});
return emjoyString;
}
}

123
addon/pc/source/os/utils/http.js Executable file
View File

@@ -0,0 +1,123 @@
import Config from "@/plugins/config.js"
import axios from "axios"
import {
getToken
} from "./auth"
axios.defaults.baseURL = Config.baseUrl
axios.defaults.headers = {
"X-Requested-With": "XMLHttpRequest",
"content-type": "application/json"
}
axios.defaults.responseType = "json"
axios.defaults.timeout = 60 * 1000
/**
* http单个请求
* @param {object} params 请求参数
* @param {integer} successCode 接口正常返回结果标识
*
* @returns Promise
*/
export default function request(params, successCode = 0, method = "POST") {
var url = params.url // 请求路径
var data = {
app_type: "pc",
app_type_name: "PC"
}
var token = getToken()
if (token) data.token = token
// 参数
if (params.data != undefined) Object.assign(data, params.data)
//异步
return axios({
url,
method,
data
})
.then(res => {
const {
code
} = res.data || {}
if (process.client && code == -3 && window.$nuxt.$route.name != 'close') {
window.$nuxt.$router.push('/close');
return;
}
if (code == successCode) return res.data
else return Promise.reject(res.data)
})
.catch(error => {
const {
error_code
} = error
if (error_code === "TOKEN_ERROR") {
error.message = '登录错误'
vue.$store.dispatch("member/remove_token")
if (params.forceLogin) {
vue.$router.push(`/auth/login?redirect=${encodeURIComponent(vue.$router.history.current.fullPath)}`)
}
}
return Promise.reject(error)
})
}
/**
* 并发请求
* @param {array} params 并发请求参数数组,传入数组中对象的顺序要匹配 data 中 url
* @var 该方法为并发请求,数据会在全部请求完之后才返回
* 该方法不建议使用。
*/
export function conRequest(params) {
if (Object.prototype.toString.call(params) != "[object Array]") {
return Promise.reject({
code: -1,
msg: "参数必须为数组"
})
}
//同步并发
var quest = []
for (var i = 0; i < url.length; i++) {
quest.push(
axios({
url: params[i].url,
method: method,
params: params[i].data
})
)
}
axios
.all(quest)
.then(
axios.spread(() => {
// 请求全部完成后执行
var res = []
for (let i = 0; i < arguments.length; i++) {
res.push(arguments[i].data)
}
return res
})
)
.catch(error => {
const {
error_code
} = error
if (error_code === "TOKEN_ERROR") {
error.message = '登录错误'
vue.$store.dispatch("member/remove_token")
if (params.forceLogin) {
vue.$router.push(`/auth/login?redirect=${encodeURIComponent(vue.$router.history.current.fullPath)}`)
}
}
return Promise.reject(error)
})
}

View File

@@ -0,0 +1,97 @@
const langList = ["zh-cn", "en-us"]
var locale = "zh-cn" //设置语言uni.getStorageSync('lang') ||
export default {
langList: ["zh-cn", "en-us"],
/**
* 解析多语言
* @param {Object} field 字段
* @param {Object} route 路由对象
*/
lang(field, route) {
let name = "",
module = ""
if (route) {
name = route.name
module = route.meta.module
if (route.path == "/" || route.name == "index") {
name = "index"
module = "index"
}
} else {
name = vue.$route.name
module = vue.$route.meta.module
}
if (!name || !module) return
var value = ""
try {
// 公共语言包
var lang = require("../lang/" + locale + "/common.js").lang
// 当前页面语言包
let currentViewLang = require("../lang/" + locale + "/" + module + "/" + name + ".js").lang
Object.assign(lang, currentViewLang)
var arr = field.split(".")
if (arr.length > 1) {
for (let i in arr) {
var next = parseInt(i) + 1
if (next < arr.length) {
value = lang[arr[i]][arr[next]]
}
}
} else {
value = lang[field]
}
} catch (e) {
value = field
}
if (arguments.length > 1) {
//有参数,需要替换
for (var i = 1; i < arguments.length; i++) {
value = value.replace("{" + (i - 1) + "}", arguments[i])
}
}
if (value == undefined || (value == "title" && field == "title")) value = "" // field
return value
},
//切换语言
change(value) {
if (!vue) return
vue.$store.commit("lang", value)
locale = vue.$store.state.lang //设置语言
this.refresh()
},
//刷新标题
refresh(route) {
window.document.title = this.lang("title", route)
},
// 获取语言包列表
list() {
var list = []
try {
//公共语言包
for (var i = 0; i < langList.length; i++) {
let item = require("../lang/" + langList[i] + "/common.js").lang
list.push({
name: item.common.name,
value: langList[i]
})
}
} catch (e) {
// "没有找到语言包:", '../../lang/' + locale + '/common.js'
}
return list
},
// 获取字段语言展示
getLangField(field, route) {
return this.lang(field, route) || ""
}
}

View File

@@ -0,0 +1,151 @@
import {
apiOrderPay,
apiOrderClose,
apiOrderTakedelivery,
apiMemberVirtualTakeDelivery,
apiOrderDelete
} from "@/api/order/order"
export default {
methods: {
/**
* 订单支付
* @param orderData
*/
orderPay(orderData) {
if (orderData.adjust_money == 0) {
apiOrderPay({
order_ids: orderData.order_id
}).then(res => {
if (res.code >= 0) {
this.$router.push({
path: "/pay",
query: {
code: res.data
}
})
} else {
this.$message({
message: res.message,
type: "warning"
})
}
})
} else {
this.$confirm("商家已将支付金额调整为" + orderData.pay_money + "元,是否继续支付?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
apiOrderPay({
order_ids: orderData.order_id
}).then(res => {
if (res.code >= 0) {
this.$router.push({
path: "/pay",
query: {
code: res.data
}
})
} else {
this.$message({
message: res.message,
type: "warning"
})
}
})
})
}
},
/**
* 关闭订单
* @param order_id
* @param callback
*/
orderClose(order_id, callback) {
this.$confirm("您确定要关闭该订单吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
apiOrderClose({
order_id
}).then(res => {
this.$message({
message: "订单关闭成功",
type: "success"
})
typeof callback == "function" && callback()
})
})
},
/**
* 订单收货
* @param {Object} order_id
* @param callback
*/
orderDelivery(order_id, callback) {
this.$confirm("您确定已经收到货物了吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
apiOrderTakedelivery({
order_id
}).then(res => {
this.$message({
message: "订单收货成功",
type: "success"
})
typeof callback == "function" && callback()
})
.catch(res => {
this.$message({
message: res.message,
type: "warning"
})
typeof callback == "function" && callback()
})
})
},
/**
* 订单虚拟商品收货
* @param {Object} order_id
* @param {Object} callback
*/
orderVirtualDelivery(order_id, callback) {
this.$confirm("您确定要进行收货吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
apiMemberVirtualTakeDelivery({
order_id
}).then(res => {
this.$message({
message: "订单收货成功",
type: "success"
})
typeof callback == "function" && callback()
})
})
},
orderDelete(order_id, callback) {
this.$confirm("您确定要删除该订单吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
apiOrderDelete({
order_id
}).then(res => {
this.$message({
message: "订单删除成功",
type: "success"
})
typeof callback == "function" && callback()
})
})
}
}
}