bug修复,版本号升级。正式域名更换

This commit is contained in:
丁杰 2026-06-15 20:48:58 +08:00
parent 7a071227e7
commit 177fbb35f9
8 changed files with 387 additions and 362 deletions

View File

@ -2,8 +2,8 @@
"name" : "美融融商家", "name" : "美融融商家",
"appid" : "__UNI__BBE6285", "appid" : "__UNI__BBE6285",
"description" : "同城便捷到家美业“技术外卖”服务、同城预约到店服务平台美融融为同城爱美人群提供更优质的更全面的服务。", "description" : "同城便捷到家美业“技术外卖”服务、同城预约到店服务平台美融融为同城爱美人群提供更优质的更全面的服务。",
"versionName" : "1.0.17", "versionName" : "1.0.20",
"versionCode" : 1017, "versionCode" : 1020,
"transformPx" : false, "transformPx" : false,
/* 5+App */ /* 5+App */
"app-plus" : { "app-plus" : {

View File

@ -193,4 +193,4 @@ export default {
-webkit-line-clamp: 2; -webkit-line-clamp: 2;
overflow: hidden; overflow: hidden;
} }
</style> </style>

View File

@ -3,8 +3,12 @@
<custom-navbar :title="info.name || '品牌详情'" <custom-navbar :title="info.name || '品牌详情'"
:leftImg="'https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/60ae3383-6ff6-4f42-818b-d9b09a9bd0e0.png'" :leftImg="'https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/60ae3383-6ff6-4f42-818b-d9b09a9bd0e0.png'"
:showUser="true" backgroundColor="#ffffff" titleColor="#333" borderBottom="none" :show-headle="true" :showUser="true" backgroundColor="#ffffff" titleColor="#333" borderBottom="none">
:headleSrc="isCollected ? iconCollectOn : iconCollectOff" @onHeadleClick="toggleCollectStatus"> <template #right>
<view class="collect-btn" @click="toggleCollectStatus">
<text class="collect-icon" :class="{ active: isCollected }"></text>
</view>
</template>
</custom-navbar> </custom-navbar>
<!-- 顶部导航栏扩展动态计算位置的拨号图标 --> <!-- 顶部导航栏扩展动态计算位置的拨号图标 -->
@ -721,6 +725,31 @@ export default {
position: relative; position: relative;
} }
.brand-detail-page ::v-deep .right-area {
border: none;
border-radius: 0;
background: transparent;
}
.collect-btn {
width: 46rpx;
height: 46rpx;
display: flex;
align-items: center;
justify-content: center;
background: transparent;
}
.collect-icon {
font-size: 42rpx;
line-height: 46rpx;
color: #C9CDD4;
&.active {
color: #FF4767;
}
}
/* 导航栏左侧新增动态拨号图标 */ /* 导航栏左侧新增动态拨号图标 */
.nav-phone-wrap { .nav-phone-wrap {
position: fixed; position: fixed;

View File

@ -466,7 +466,7 @@ export default {
} }
.list-container { .list-container {
padding: 30rpx 24rpx; padding: 0 24rpx 30rpx;
} }
.filter-panel { .filter-panel {

View File

@ -70,12 +70,9 @@
</view> </view>
<view class="article-content-wrapper"> <view class="article-content-wrapper">
<view class="article-content" v-if="article.htmlContent"> <view class="article-content">
<rich-text :nodes="formattedHtmlContent"></rich-text> <rich-text :nodes="formattedHtmlContent"></rich-text>
</view> </view>
<view class="empty-content" v-else>
<text class="empty-text">暂无图文介绍</text>
</view>
</view> </view>
<view class="recommend-section" v-if="recommendList.length > 0"> <view class="recommend-section" v-if="recommendList.length > 0">

View File

@ -363,7 +363,7 @@ export default {
title: "", title: "",
id_type: 1, id_type: 1,
self_state: false, self_state: false,
url: "https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/30b42fe6-21f9-443f-a091-5439d57e3593.png", url: "https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/545f2db0-d66a-41ca-b1f5-6a28469e65ba.png",
path: "/pages/selfOperated/agreement?title=平台自营项目介绍&type=18", path: "/pages/selfOperated/agreement?title=平台自营项目介绍&type=18",
}, },
{ {
@ -781,55 +781,55 @@ export default {
}); });
this.getInviteList(); this.getInviteList();
}, },
// //
fetchAuthDetails() { fetchAuthDetails() {
return request.post("/sj/userSjAuth/details", { return request.post("/sj/userSjAuth/details", {
type: 1, type: 1,
id_type: '1' id_type: '1'
}).then(res => { }).then(res => {
if (res.code == 200 && res.data) { if (res.code == 200 && res.data) {
this.authDetails = res.data; this.authDetails = res.data;
} }
return res; return res;
}); });
}, },
async ensureAuthDetails() { async ensureAuthDetails() {
if (!this.isSettled || (this.authDetails && Object.keys(this.authDetails).length > 0)) { if (!this.isSettled || (this.authDetails && Object.keys(this.authDetails).length > 0)) {
return; return;
} }
await this.fetchAuthDetails(); await this.fetchAuthDetails();
}, },
navigateToCertificationForm() { navigateToCertificationForm() {
if (this.isSettled) { if (this.isSettled) {
uni.navigateTo({ uni.navigateTo({
url: '/pages/ruzhu/ruzhu?step=3' url: '/pages/ruzhu/ruzhu?step=3'
}); });
} else { } else {
uni.navigateTo({ uni.navigateTo({
url: '/pages/ruzhu/ruzhu' url: '/pages/ruzhu/ruzhu'
}); });
} }
}, },
async navigateToCertificationProcess() { async navigateToCertificationProcess() {
if (this.isCertified) { if (this.isCertified) {
uni.navigateTo({ uni.navigateTo({
url: '/pages/shop/qualification_sj_change' url: '/pages/shop/qualification_sj_change'
}); });
return; return;
} }
await this.ensureAuthDetails(); await this.ensureAuthDetails();
if (!this.isSettled) { if (!this.isSettled) {
uni.navigateTo({ uni.navigateTo({
url: '/pages/ruzhu/ruzhu' url: '/pages/ruzhu/ruzhu'
}); });
} else if (this.isUnderReview) { } else if (this.isUnderReview) {
uni.navigateTo({ uni.navigateTo({
url: '/pages/ruzhu/ruzhu?type=1' url: '/pages/ruzhu/ruzhu?type=1'
}); });
} else { } else {
this.navigateToCertificationForm(); this.navigateToCertificationForm();
} }
}, },
async goLogin() { async goLogin() {
// 访 // 访
if (this.isAccountDisabled) { if (this.isAccountDisabled) {
@ -879,17 +879,17 @@ export default {
return; return;
} }
// 2. // 2.
if (!this.isLogin) { if (!this.isLogin) {
if (item.path == "/pages/ruzhu/ruzhu") { if (item.path == "/pages/ruzhu/ruzhu") {
uni.navigateTo({ uni.navigateTo({
url: "/pages/blogPopup/blogPopup", url: "/pages/blogPopup/blogPopup",
}); });
return; return;
} }
uni.showToast({ uni.showToast({
title: `您暂未登录,无法使用${item.title || item.text || ''}`, title: `您暂未登录,无法使用${item.title || item.text || ''}`,
icon: "none", icon: "none",
}); });
return; return;
} }
@ -964,9 +964,9 @@ export default {
url: "/pages/artisan/profile", url: "/pages/artisan/profile",
}); });
}, },
toruzhu() { toruzhu() {
this.navigateToCertificationProcess(); this.navigateToCertificationProcess();
}, },
closeSetupModal() { closeSetupModal() {
this.showSetupModal = false; this.showSetupModal = false;
}, },
@ -982,10 +982,10 @@ export default {
url: '/pages/shop/service-skills' url: '/pages/shop/service-skills'
}); });
}, },
goToAuth() { goToAuth() {
this.showSetupModal = false; this.showSetupModal = false;
this.navigateToCertificationProcess(); this.navigateToCertificationProcess();
}, },
goToInviteList() { goToInviteList() {
// 访 // 访
if (this.isAccountDisabled) { if (this.isAccountDisabled) {
@ -1703,7 +1703,7 @@ button::after {
gap: 12rpx; gap: 12rpx;
margin-top: 10rpx; margin-top: 10rpx;
width: auto; width: auto;
height: 46rpx; height: 46rpx;
padding: 0 8rpx 0 8rpx; padding: 0 8rpx 0 8rpx;
background-image: url('https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/378a6936-a543-4ff5-9aa0-cfcb4d4e14b3.png'); background-image: url('https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/378a6936-a543-4ff5-9aa0-cfcb4d4e14b3.png');
background-size: 100% 100%; background-size: 100% 100%;
@ -1889,4 +1889,4 @@ button::after {
} }
} }
} }
</style> </style>

View File

@ -240,6 +240,12 @@ export default {
}, },
isCertified() { isCertified() {
if (!this.isLogin || typeof this.userInfo.id_type === 'undefined') return false; if (!this.isLogin || typeof this.userInfo.id_type === 'undefined') return false;
if (typeof this.userInfo.credentials_state !== 'undefined' && this.userInfo.credentials_state !== null) {
const credentialsState = Number(this.userInfo.credentials_state);
if (!Number.isNaN(credentialsState)) {
return credentialsState === 2 || (this.userInfo.id_type > 0 && credentialsState === 0);
}
}
return this.userInfo.id_type > 0; return this.userInfo.id_type > 0;
}, },
hasBusinessTime() { hasBusinessTime() {
@ -351,13 +357,20 @@ export default {
// / // /
toggleStatus() { toggleStatus() {
const currentStatus = this.userInfo.order_taking; if (!this.isCertified) {
const isCurrentlyResting = currentStatus != 1; // uni.showToast({ title: '请完成资质认证', icon: 'none' });
return;
}
// //
let newStatus = currentStatus == 1 ? 2 : 1; if (!this.isSettled) {
uni.showToast({ title: '请先完成入驻', icon: 'none' });
return;
}
//
let newStatus = this.isOpenStore ? 2 : 1;
//
if (newStatus === 1 && !this.canOpenStore) { if (newStatus === 1 && !this.canOpenStore) {
uni.showToast({ title: '当前资料不完善,无法开启接单', icon: 'none' }); uni.showToast({ title: '当前资料不完善,无法开启接单', icon: 'none' });
return; return;

View File

@ -1,78 +1,66 @@
import { import { getToken, setToken, removeToken } from "./auth";
getToken, import { setVersion } from "../utils/version.js";
setToken, import { getBaseUrl } from "../utils/version.js";
removeToken
} from './auth'
import {
setVersion
} from '../utils/version.js'
import {
getBaseUrl
} from '../utils/version.js'
let baseURL; let baseURL;
setVersion() setVersion();
let isRefreshing = false let isRefreshing = false;
let subscribers = [] let subscribers = [];
// 订阅 Token 刷新 // 订阅 Token 刷新
function subscribeTokenRefresh(cb) { function subscribeTokenRefresh(cb) {
subscribers.push(cb) subscribers.push(cb);
} }
// 发布 Token 刷新完成 // 发布 Token 刷新完成
function onRrefreshed(token) { function onRrefreshed(token) {
subscribers.forEach(cb => cb(token)) subscribers.forEach((cb) => cb(token));
subscribers = [] subscribers = [];
} }
// 请求拦截器 // 请求拦截器
const requestInterceptor = (options) => { const requestInterceptor = (options) => {
// 获取token // 获取token
const token = uni.getStorageSync('accessToken') const token = uni.getStorageSync("accessToken");
if (token) { if (token) {
options.header = { options.header = {
...options.header, ...options.header,
'Authorization': `Bearer ${token}` Authorization: `Bearer ${token}`,
} };
} }
// #ifdef H5 // #ifdef H5
// H5端跨域处理 // H5端跨域处理
options.header = { options.header = {
...options.header, ...options.header,
'Access-Control-Allow-Origin': '*' "Access-Control-Allow-Origin": "*",
} };
// #endif // #endif
return options return options;
} };
// 响应拦截器 // 响应拦截器
const responseInterceptor = async (options, response, resolve, reject) => { const responseInterceptor = async (options, response, resolve, reject) => {
const { const { statusCode, data } = response;
statusCode, // 请求成功
data if (statusCode >= 200 && statusCode < 300) {
} = response return data;
// 请求成功 }
if (statusCode >= 200 && statusCode < 300) {
return data
}
// 处理错误 // 处理错误
if (statusCode === 401) { if (statusCode === 401) {
return await handleUnauthorized(options, resolve, reject);
}
return await handleUnauthorized(options, resolve, reject) // 其他错误
} uni.showToast({
title: data.message || "请求失败",
// 其他错误 icon: "none",
uni.showToast({ });
title: data.message || '请求失败', return Promise.reject(data);
icon: 'none' };
})
return Promise.reject(data)
}
// 创建 uni.request 的封装 // 创建 uni.request 的封装
// const request = (options) => { // const request = (options) => {
// return new Promise((resolve, reject) => { // return new Promise((resolve, reject) => {
@ -95,258 +83,256 @@ const responseInterceptor = async (options, response, resolve, reject) => {
// 请求方法 // 请求方法
const request = async (options, isUpdate) => { const request = async (options, isUpdate) => {
// 合并配置 // 合并配置
let url = uni.getStorageSync('baseUrl') let url = uni.getStorageSync("baseUrl");
if (uni.getStorageSync('setVersion').VersionCode == '') { if (uni.getStorageSync("setVersion").VersionCode == "") {
setVersion() setVersion();
} }
if (!url) { if (!url) {
await new Promise((resolve, reject) => { await new Promise((resolve, reject) => {
uni.request({ uni.request({
url: 'https://api.mrrwlkj.top/api/openPuc/getSjApiUrl', // 接口地址 url: "https://api.mrrwlkj.top/api/openPuc/getSjApiUrl", // 接口地址
method: 'GET', // 请求方法(默认 GET method: "GET", // 请求方法(默认 GET
header: { header: {
'Content-Type': 'application/json', // 请求头 "Content-Type": "application/json", // 请求头
'VersionCode': uni.getStorageSync('setVersion').VersionCode, VersionCode: uni.getStorageSync("setVersion").VersionCode,
'DeviceBrand': uni.getStorageSync('setVersion').DeviceBrand, DeviceBrand: uni.getStorageSync("setVersion").DeviceBrand,
'DeviceType': uni.getStorageSync('setVersion').DeviceType DeviceType: uni.getStorageSync("setVersion").DeviceType,
}, },
success: (res) => { success: (res) => {
if (res.data.code == 200) { if (res.data.code == 200) {
uni.setStorageSync('baseUrl', res.data.data.url) uni.setStorageSync("baseUrl", res.data.data.url);
url = res.data.data.url url = res.data.data.url;
resolve(url) resolve(url);
} }
console.log('请求成功', res.data); console.log("请求成功", res.data);
}, },
fail: (err) => { fail: (err) => {
console.log('请求失败', err); console.log("请求失败", err);
}, },
complete: () => { complete: () => {
console.log('请求完成(无论成功失败都会执行)'); console.log("请求完成(无论成功失败都会执行)");
} },
}); });
}) });
}
} if (process.env.NODE_ENV === "development") {
baseURL = url; // 发布到生产环境时,此处代码会被摇树移除掉。
baseURL = "http://test.mrrwlkj.top"; // 发布到生产环境时,此处代码会被摇树移除掉。
//baseURL = 'http://dev.mrrwlkj.top'; // 发布到生产环境时,此处代码会被摇树移除掉。
// baseURL = "https://app.mrrweb.com.cn";
} else {
baseURL = url; // 发布到生产环境时,此处代码会被摇树移除掉。
baseURL = "http://test.mrrwlkj.top"; // 发布到生产环境时,此处代码会被摇树移除掉。
//baseURL = 'http://dev.mrrwlkj.top'; // 发布到生产环境时,此处代码会被摇树移除掉。
// baseURL = "https://app.mrrweb.com.cn";
console.log("生产环境");
}
// 基础配置
const config = {
baseURL: baseURL, // APP和H5的开发URL
baseURL: baseURL, // APP和H5的开发URL
// baseURL: 'https://app.mrrweb.com.cn', // APP和H5的生产URL
if (process.env.NODE_ENV === 'development') { header: {
baseURL = url; // 发布到生产环境时,此处代码会被摇树移除掉。 "content-type": "application/json",
baseURL = 'http://test.mrrwlkj.top'; // 发布到生产环境时,此处代码会被摇树移除掉。 VersionCode: uni.getStorageSync("setVersion").VersionCode,
//baseURL = 'http://dev.mrrwlkj.top'; // 发布到生产环境时,此处代码会被摇树移除掉。 DeviceBrand: uni.getStorageSync("setVersion").DeviceBrand,
//baseURL = 'https://app.mrrweb.com.cn'; DeviceType: uni.getStorageSync("setVersion").DeviceType,
} else { },
baseURL = url; // 发布到生产环境时,此处代码会被摇树移除掉。 timeout: 60000, // 超时时间
baseURL = 'http://test.mrrwlkj.top'; // 发布到生产环境时,此处代码会被摇树移除掉。 };
//baseURL = 'http://dev.mrrwlkj.top'; // 发布到生产环境时,此处代码会被摇树移除掉。
//baseURL = 'https://app.mrrweb.com.cn';
console.log('生产环境'); options = {
} ...config,
...options,
url: !isUpdate ? `${config.baseURL}${options.url}` : options.url,
};
// 基础配置 // 请求拦截
const config = { options = requestInterceptor(options);
baseURL: baseURL, // APP和H5的开发URL
baseURL: baseURL, // APP和H5的开发URL
// baseURL: 'https://app.mrrweb.com.cn', // APP和H5的生产URL
header: { // 发起请求
'content-type': 'application/json', return new Promise((resolve, reject) => {
'VersionCode': uni.getStorageSync('setVersion').VersionCode, // #ifdef H5
'DeviceBrand': uni.getStorageSync('setVersion').DeviceBrand, // H5端添加loading
'DeviceType': uni.getStorageSync('setVersion').DeviceType if (!options.hideLoading) {
}, uni.showLoading({
timeout: 60000 // 超时时间 title: "加载中...",
} });
}
// #endif
uni.request({
...options,
success: (res) => {
// #ifdef H5
if (!options.hideLoading) {
uni.hideLoading();
}
// #endif
try {
const result = responseInterceptor(options, res, resolve, reject);
if (result && typeof result.then === "function") {
result.then((data) => resolve(data)).catch((err) => reject(err));
} else {
resolve(result);
}
} catch (err) {
reject(err);
}
},
fail: (err) => {
// #ifdef H5
if (!options.hideLoading) {
uni.hideLoading();
}
// #endif
options = { // 网络错误处理
...config, let errorMsg = "网络错误,请稍后重试";
...options, // #ifdef H5
url: !isUpdate ? `${config.baseURL}${options.url}` : options.url if (err.errMsg.includes("timeout")) {
} errorMsg = "请求超时,请检查网络";
}
// #endif
uni.showToast({
// 请求拦截 title: errorMsg,
options = requestInterceptor(options) icon: "none",
});
// 发起请求 reject(err);
return new Promise((resolve, reject) => { },
// #ifdef H5 });
// H5端添加loading });
if (!options.hideLoading) { };
uni.showLoading({
title: '加载中...'
})
}
// #endif
uni.request({
...options,
success: (res) => {
// #ifdef H5
if (!options.hideLoading) {
uni.hideLoading()
}
// #endif
try {
const result = responseInterceptor(options, res, resolve, reject)
if (result && typeof result.then === 'function') {
result.then(data => resolve(data)).catch(err => reject(err))
} else {
resolve(result)
}
} catch (err) {
reject(err)
}
},
fail: (err) => {
// #ifdef H5
if (!options.hideLoading) {
uni.hideLoading()
}
// #endif
// 网络错误处理
let errorMsg = '网络错误,请稍后重试'
// #ifdef H5
if (err.errMsg.includes('timeout')) {
errorMsg = '请求超时,请检查网络'
}
// #endif
uni.showToast({
title: errorMsg,
icon: 'none'
})
reject(err)
}
})
})
}
// 处理 401 未授权 // 处理 401 未授权
async function handleUnauthorized(originalRequest, resolve, reject) { async function handleUnauthorized(originalRequest, resolve, reject) {
if (!getToken()) { if (!getToken()) {
reject(new Error('未登录')) reject(new Error("未登录"));
return redirectToLogin() return redirectToLogin();
} }
// 如果正在刷新 Token将请求加入队列 // 如果正在刷新 Token将请求加入队列
if (isRefreshing) { if (isRefreshing) {
return subscribeTokenRefresh(token => { return subscribeTokenRefresh((token) => {
originalRequest.header['Authorization'] = `Bearer ${token}` originalRequest.header["Authorization"] = `Bearer ${token}`;
request(originalRequest, true).then(resolve).catch(reject) request(originalRequest, true).then(resolve).catch(reject);
}) });
} }
isRefreshing = true isRefreshing = true;
try { try {
const newToken = await refreshToken() const newToken = await refreshToken();
setToken(newToken) setToken(newToken);
onRrefreshed(newToken) onRrefreshed(newToken);
// 用新 Token 重试原始请求 // 用新 Token 重试原始请求
originalRequest.header['Authorization'] = `Bearer ${newToken}` originalRequest.header["Authorization"] = `Bearer ${newToken}`;
const response = await request(originalRequest, true) const response = await request(originalRequest, true);
// resolve(response) // resolve(response)
return response return response;
} catch (error) { } catch (error) {
removeToken() removeToken();
redirectToLogin() redirectToLogin();
reject(error) reject(error);
return error return error;
} finally { } finally {
isRefreshing = false isRefreshing = false;
} }
} }
// 刷新 Token // 刷新 Token
async function refreshToken() { async function refreshToken() {
const refreshToken = uni.getStorageSync('refreshToken') const refreshToken = uni.getStorageSync("refreshToken");
if (!refreshToken) { if (!refreshToken) {
throw new Error('No refresh token') throw new Error("No refresh token");
} }
const res = await request({ const res = await request({
url: '/sj/refreshtoken', url: "/sj/refreshtoken",
data: { data: {
refresh_token: uni.getStorageSync('refreshToken'), refresh_token: uni.getStorageSync("refreshToken"),
deviceid: getApp().globalData.deviceid deviceid: getApp().globalData.deviceid,
}, },
method: 'POST' method: "POST",
}) });
if (res.state == 1 || res.code == 200) { if (res.state == 1 || res.code == 200) {
const tokenData = res.data || res const tokenData = res.data || res;
if (!tokenData.access_token) { if (!tokenData.access_token) {
throw new Error('Refresh token response missing access_token') throw new Error("Refresh token response missing access_token");
} }
uni.setStorageSync('accessToken', tokenData.access_token) uni.setStorageSync("accessToken", tokenData.access_token);
if (tokenData.refresh_token) { if (tokenData.refresh_token) {
uni.setStorageSync('refreshToken', tokenData.refresh_token) uni.setStorageSync("refreshToken", tokenData.refresh_token);
} }
if (tokenData.refresh_token_expries) { if (tokenData.refresh_token_expries) {
uni.setStorageSync('refresh_token_expries', tokenData.refresh_token_expries) uni.setStorageSync(
} "refresh_token_expries",
return tokenData.access_token tokenData.refresh_token_expries,
} );
}
return tokenData.access_token;
}
throw new Error('Refresh token failed') throw new Error("Refresh token failed");
} }
// 跳转到登录页 // 跳转到登录页
function redirectToLogin() { function redirectToLogin() {
// uni.reLaunch({ // uni.reLaunch({
// url: '/pages/login/login' // url: '/pages/login/login'
// }) // })
//一键登录测试 //一键登录测试
// uni.oprPresentLogin() // uni.oprPresentLogin()
uni.navigateTo({ uni.navigateTo({
url: '/pages/blogPopup/blogPopup' url: "/pages/blogPopup/blogPopup",
}); });
} }
// 导出请求方法 // 导出请求方法
export default { export default {
// GET请求 // GET请求
get(url, data = {}, options = {}) { get(url, data = {}, options = {}) {
return request({ return request({
url, url,
data, data,
method: 'GET', method: "GET",
...options ...options,
}) });
}, },
// POST请求 // POST请求
post(url, data = {}, options = {}) { post(url, data = {}, options = {}) {
return request({ return request({
url, url,
data, data,
method: 'POST', method: "POST",
...options ...options,
}) });
}, },
// PUT请求 // PUT请求
put(url, data = {}, options = {}) { put(url, data = {}, options = {}) {
return request({ return request({
url, url,
data, data,
method: 'PUT', method: "PUT",
...options ...options,
}) });
}, },
// DELETE请求 // DELETE请求
delete(url, data = {}, options = {}) { delete(url, data = {}, options = {}) {
return request({ return request({
url, url,
data, data,
method: 'DELETE', method: "DELETE",
...options ...options,
}) });
} },
} };