master
sjm 2 years ago
parent 68e6cc6c0d
commit 313a758aef

@ -0,0 +1,213 @@
// 用于检测用户是否 star 了仓库,如果没有 star将弹窗提示用户 star 。
import { Message, MessageBox } from 'element-ui'
// 使用axios代替$.ajax
import axios from 'axios'
// 应用参数
const client_id = '9addfce3712d04898b5a3dbb223db38b8d6495d2e66d07e3c0af71a708ee3b54'
const client_secret = '1f73096ce60406eba8fb297a16245eadf2777540abdf531266b406b2479e25fe'
// 检查成功后,多少天不再检查
const allowDisparity = 1000 * 60 * 60 * 24 * 7
/**
* 判断当前是否已 star
* @param owner 仓库所属空间地址(企业组织或个人的地址path)
* @param repo 仓库路径(path)
* @param userId
* @param redirectUrl
* @param productName 开源项目名
* @param productLink 开源链接
*/
export function isStarRepo(owner, repo, userId, redirectUrl,productName,productLink) {
const key = userId + '_' + owner + '_' + repo
// 判断是否近期已经判断过了
try {
if (typeof window !== 'undefined') {
const isStarRepo = localStorage.getItem(key)
if (isStarRepo) {
// 记录 star 的时间,和当前时间的差距
const disparity = new Date().getTime() - parseInt(isStarRepo)
// 差距小于一月,不再检测,大于一月,再检测一下
if (disparity < allowDisparity) {
console.log('checked ...')
return true;
}
}
}
} catch (e) {
console.error(e)
}
return getCode(owner, repo, key, redirectUrl,productName,productLink)
}
// 去请求授权
function getCode(owner, repo, key, redirectUrl,productName,productLink) {
// 检查url中是否有code
const code = getParam('code')
if (code) {
// 有 code进一步去请求 access_token
getAccessToken(code, redirectUrl, owner, repo, key,productName,productLink)
} else {
// 不存在code弹窗提示询问
confirmStar(redirectUrl,productName,productLink)
return false;
}
}
// 弹窗提示点 star
function confirmStar(redirectUrl,productName,productLink) {
// 弹窗提示文字
const tipStr = `
<div>
<p><b>同学来支持一下 ${productName} 为项目点个 star </b></p>
<div>仅需两步即可完成<br>
<div>1打开 ${productName} <a href=${productLink} target="_blank" style="color: red">${productName}</a> star </div>
<div>2点击下方 [ 同意授权检测 ] 按钮同意 ${productName} 获取 API 权限进行检测</div>
</div>
<p><b>本页面将在 star 后正常开放展示</b></p>
</div>
`
// 弹窗提示
MessageBox.alert(tipStr, '温馨提示', {
// if you want to disable its autofocus
// autofocus: false,
confirmButtonText: '同意授权检测',
showClose: false,
dangerouslyUseHTMLString: true,
callback: (action) => {
if (action === 'confirm') {
// 用户点了确认,去 gitee 官方请求授权获取
goAuth(redirectUrl)
}
}
})
}
function toStar(redirectUrl,productName,productLink,accessToken,owner,repo,key,code) {
// 弹窗提示文字
const tipStr = `
<div>
<p><b>同学来支持一下 ${productName} 为项目点个 star </b></p>
<div>点击去Star按钮进入${productName} 开源项目主页在右上角点个 star </div>
<p><b>本页面将在 star 后正常开放展示</b></p>
</div>
`
MessageBox.confirm(tipStr, '温馨提示', {
// if you want to disable its autofocus
// autofocus: false,
closeOnClickModal: false,
confirmButtonText: '去Star',
cancelButtonText: '我已Star',
showClose: false,
dangerouslyUseHTMLString: true,
callback: (action) => {
if (action === 'confirm') {
// 用户点了确认,去 gitee 官方请求授权获取
window.open(productLink)
toStar(redirectUrl,productName,productLink,accessToken,owner,repo,key,code)
}
if (action === 'cancel') {
//检测
judgeStar(accessToken,owner,repo,key,productName,productLink,redirectUrl,code)
}
}
})
}
// 跳转到 gitee 授权界面
function goAuth(redirectUrl) {
location.href = 'https://gitee.com/oauth/authorize' +
'?client_id=' + client_id +
'&redirect_uri=' + redirectUrl +
'&response_type=code' +
'&scope=user_info'
}
// 获取 access_token
function getAccessToken(code, redirectUrl, owner, repo, key,productName,productLink) {
// 根据 code 获取 access_token
axios.post('https://gitee.com/oauth/token', {
grant_type: 'authorization_code',
code: code,
client_id: client_id,
redirect_uri: redirectUrl,
client_secret: client_secret
})
.then(res => {
// 拿到 access_token
const accessToken = res.data.access_token
judgeStar(accessToken,owner, repo, key,productName,productLink,redirectUrl,code)
})
.catch(e => {
console.log('请求错误 ', e)
// 如果请求地址有错,可能是服务器宕机了,暂停一天检测
if (e.response && (e.response.status === 0 || e.response.status === 502)) {
// 一天内不再检查
const ygTime = allowDisparity - (1000 * 60 * 60 * 24)
if (typeof window !== 'undefined') {
localStorage.setItem(key, new Date().getTime() - ygTime)
}
// 刷新 url去掉 code 参数
location.href = location.href.replace('?code=' + code, '')
}
// 无效授权,可能是 code 无效
const errorMsg = (e.response && e.response.data.error) || JSON.stringify(e)
if (errorMsg === 'invalid_grant') {
console.log('无效code', code)
let url = location.href.replace('?code=' + code, '')
url = url.replace('&code=' + code, '')
location.href = url
}
})
}
function judgeStar(accessToken,owner, repo, key,productName,productLink,redirectUrl,code){
// 根据 access_token 判断是否 star 了仓库
axios.get(`https://gitee.com/api/v5/user/starred/${owner}/${repo}`, {
params: { access_token: accessToken }
})
.then(res => {
// success 回调即代表已经 stargitee API 请求体不返回任何数据
console.log('-> stared ...')
// 记录本次检查时间
if (typeof window !== 'undefined') {
localStorage.setItem(key, new Date().getTime())
}
Message.success('感谢你的支持 ❤️ ❤️ ❤️ ,我们将努力变得更加完善!')
setTimeout(()=>{
location.href = location.href.replace('?code=' + code, '')
},1000)
})
.catch(e => {
// console.log('ff请求错误 ', e);
// 如下返回,代表没有 star
if (e.response && e.response.status === 404) {
console.log('not star ...')
toStar(redirectUrl,productName,productLink,accessToken,owner,repo,key,code);
}
})
}
// 获取 url 携带的参数
function getParam(name) {
const urls = window.location.href.split('?')
if (urls.length < 2) {
return null
}
let url = urls[1]
let obj = {} // 声明参数对象
let arr = url.split('&') // 以&符号分割为数组
for (let i = 0; i < arr.length; i++) {
let arrNew = arr[i].split('=') // 以"="分割为数组
obj[arrNew[0]] = arrNew[1]
}
return obj[name]
}

@ -1,22 +1,24 @@
<template> <template>
<div class="app-container"> <div class="app-container" v-if="show">
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="100px" size="medium" class="ry_form"> <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="100px" size="medium"
class="ry_form">
<el-form-item label="订单状态" prop="status"> <el-form-item label="订单状态" prop="status">
<DictRadio v-model="queryParams.status" :radioData="dict.type.oms_order_status" size="small" :show-all="'all'" :filter="['11', '12', '13', '14']"></DictRadio> <DictRadio v-model="queryParams.status" :radioData="dict.type.oms_order_status" size="small" :show-all="'all'"
:filter="['11', '12', '13', '14']"></DictRadio>
</el-form-item> </el-form-item>
<el-form-item label="订单编号" prop="orderSn"> <el-form-item label="订单编号" prop="orderSn">
<el-input v-model.trim="queryParams.orderSn" placeholder="请输入订单编号" clearable size="small" <el-input v-model.trim="queryParams.orderSn" placeholder="请输入订单编号" clearable size="small"
@keyup.enter.native="handleQuery"/> @keyup.enter.native="handleQuery"/>
</el-form-item> </el-form-item>
<!-- <el-form-item label="支付方式" prop="payType">--> <!-- <el-form-item label="支付方式" prop="payType">-->
<!-- <el-select v-model="queryParams.payType" placeholder="请选择支付方式" clearable size="small">--> <!-- <el-select v-model="queryParams.payType" placeholder="请选择支付方式" clearable size="small">-->
<!-- <el-option v-for="(item, index) in dict.type.oms_pay_type" :label="item.label" :value="item.value"/>--> <!-- <el-option v-for="(item, index) in dict.type.oms_pay_type" :label="item.label" :value="item.value"/>-->
<!-- </el-select>--> <!-- </el-select>-->
<!-- </el-form-item>--> <!-- </el-form-item>-->
<!-- <el-form-item label="商品名称" prop="productName">--> <!-- <el-form-item label="商品名称" prop="productName">-->
<!-- <el-input v-model.trim="queryParams.productName" placeholder="请输入商品名称" clearable size="small"--> <!-- <el-input v-model.trim="queryParams.productName" placeholder="请输入商品名称" clearable size="small"-->
<!-- @keyup.enter.native="handleQuery"/>--> <!-- @keyup.enter.native="handleQuery"/>-->
<!-- </el-form-item>--> <!-- </el-form-item>-->
<el-form-item label="会员手机号" prop="userPhone"> <el-form-item label="会员手机号" prop="userPhone">
<el-input v-model.trim="queryParams.userPhone" placeholder="请输入会员手机号" clearable size="small" <el-input v-model.trim="queryParams.userPhone" placeholder="请输入会员手机号" clearable size="small"
@keyup.enter.native="handleQuery"/> @keyup.enter.native="handleQuery"/>
@ -36,12 +38,13 @@
<el-form-item class="flex_one tr"> <el-form-item class="flex_one tr">
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button> <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
<!-- <el-button :icon="showMoreCondition ? 'el-icon-arrow-up' : 'el-icon-arrow-down'" size="mini" @click="showMoreCondition = !showMoreCondition">{{showMoreCondition ? '收起条件' : '展开条件'}}</el-button>--> <!-- <el-button :icon="showMoreCondition ? 'el-icon-arrow-up' : 'el-icon-arrow-down'" size="mini" @click="showMoreCondition = !showMoreCondition">{{showMoreCondition ? '收起条件' : '展开条件'}}</el-button>-->
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-table v-loading="loading" :data="omsOrderList" border @selection-change="handleSelectionChange" cell-class-name="my-cell"> <el-table v-loading="loading" :data="omsOrderList" border @selection-change="handleSelectionChange"
<el-table-column type="selection" width="55" align="center" /> cell-class-name="my-cell">
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="收件信息" prop="receiverName" width="280"> <el-table-column label="收件信息" prop="receiverName" width="280">
<template v-slot="scope"> <template v-slot="scope">
<div> <div>
@ -51,12 +54,14 @@
type="text" type="text"
@click="handleWatch()" @click="handleWatch()"
style="margin-left: 10px" style="margin-left: 10px"
>查看</el-button> >查看
</el-button>
<el-button <el-button
size="mini" size="mini"
type="text" type="text"
@click="handleUpdate()" @click="handleUpdate()"
>修改</el-button> >修改
</el-button>
</div> </div>
<div> <div>
<span>{{ scope.row.receiverProvince }}{{ scope.row.receiverCity }}{{ scope.row.receiverDistrict }}</span> <span>{{ scope.row.receiverProvince }}{{ scope.row.receiverCity }}{{ scope.row.receiverDistrict }}</span>
@ -66,11 +71,11 @@
</el-table-column> </el-table-column>
<el-table-column label="客户信息" prop="receiverName" width="160"> <el-table-column label="客户信息" prop="receiverName" width="160">
<template v-slot="scope"> <template v-slot="scope">
<p>{{scope.row.nickName}}</p> <p>{{ scope.row.nickName }}</p>
<p>{{scope.row.mark}}</p> <p>{{ scope.row.mark }}</p>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="备注留言" prop="note" width="160"> <el-table-column label="备注留言" prop="note" width="160">
<template v-slot="scope"> <template v-slot="scope">
<div> <div>
<span v-if="scope.row.merchantNote" class="note-title" style="margin-right: 10px"></span> <span v-if="scope.row.merchantNote" class="note-title" style="margin-right: 10px"></span>
@ -78,20 +83,21 @@
size="mini" size="mini"
type="text" type="text"
@click="handleSaveNote(scope.row)" @click="handleSaveNote(scope.row)"
>{{ scope.row.merchantNote ? '修改' : '添加平台备注' }}</el-button> >{{ scope.row.merchantNote ? '修改' : '添加平台备注' }}
</el-button>
</div> </div>
<div v-if="scope.row.merchantNote">{{ scope.row.merchantNote }}</div> <div v-if="scope.row.merchantNote">{{ scope.row.merchantNote }}</div>
<div v-if="scope.row.note" class="note-title"></div> <div v-if="scope.row.note" class="note-title"></div>
<div v-if="scope.row.note">{{ scope.row.note }}</div> <div v-if="scope.row.note">{{ scope.row.note }}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="下单时间/支付时间" prop="payTime" width="140" > <el-table-column label="下单时间/支付时间" prop="payTime" width="140">
<template slot-scope="scope"> <template slot-scope="scope">
<div v-if="scope.row.createTime">{{ parseTime(scope.row.createTime, '{mm}-{dd} {hh}:{ii}')}} </div> <div v-if="scope.row.createTime">{{ parseTime(scope.row.createTime, '{mm}-{dd} {hh}:{ii}') }} </div>
<div v-if="scope.row.payTime">{{ parseTime(scope.row.payTime, '{mm}-{dd} {hh}:{ii}')}} </div> <div v-if="scope.row.payTime">{{ parseTime(scope.row.payTime, '{mm}-{dd} {hh}:{ii}') }} </div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="合计" prop="totalAmount" width="140"> <el-table-column label="合计" prop="totalAmount" width="140">
<template v-slot="scope"> <template v-slot="scope">
<div> <div>
<span>总数 </span> <span>总数 </span>
@ -100,14 +106,15 @@
<div>总价 {{ scope.row.totalAmount }}</div> <div>总价 {{ scope.row.totalAmount }}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="商品规格" prop="productList" width="280"> <el-table-column label="商品规格" prop="productList" width="280">
<template v-slot="scope"> <template v-slot="scope">
<div v-for="item in scope.row.productList" class="product-container"> <div v-for="item in scope.row.productList" class="product-container">
<el-popover <el-popover
placement="right" placement="right"
trigger="hover"> trigger="hover">
<el-image :src="item.pic" style="width: 350px;height: 350px"/> <el-image :src="item.pic" style="width: 350px;height: 350px"/>
<el-image slot="reference" class="small-img product-item" :src="item.pic" style="width: 40px;height: 40px"/> <el-image slot="reference" class="small-img product-item" :src="item.pic"
style="width: 40px;height: 40px"/>
</el-popover> </el-popover>
<div class="product-item" style="margin-left: 5px"> <div class="product-item" style="margin-left: 5px">
<div class="sp-data"> <div class="sp-data">
@ -121,7 +128,7 @@
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="订单状态" prop="status" width="160"> <el-table-column label="订单状态" prop="status" width="160">
<template v-slot="scope"> <template v-slot="scope">
<div> <div>
<el-tag :type="getOrderStatusTag(scope.row.status)" style="margin-right: 10px"> <el-tag :type="getOrderStatusTag(scope.row.status)" style="margin-right: 10px">
@ -132,43 +139,49 @@
type="text" type="text"
@click="handleDelivery(scope.row)" @click="handleDelivery(scope.row)"
:disabled="scope.row.status !== 1 && scope.row.status !== 2 && scope.row.status !== 3" :disabled="scope.row.status !== 1 && scope.row.status !== 2 && scope.row.status !== 3"
>编辑</el-button> >编辑
</el-button>
</div> </div>
<div v-if="scope.row.deliverySn">{{ scope.row.deliverySn}} <div v-if="scope.row.deliverySn">{{ scope.row.deliverySn }}
<el-link @click="copy(scope.row.deliverySn)" :underline="false"><i class="el-icon-document-copy el-icon--right"></i> </el-link> <el-link @click="copy(scope.row.deliverySn)" :underline="false"><i
class="el-icon-document-copy el-icon--right"></i></el-link>
</div> </div>
<div v-if="scope.row.deliveryTime">{{ parseTime(scope.row.deliveryTime, '')}}</div> <div v-if="scope.row.deliveryTime">{{ parseTime(scope.row.deliveryTime, '') }}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="订单编号/操作" class-name="small-padding fixed-width" width="220" fixed="right"> <el-table-column label="订单编号/操作" class-name="small-padding fixed-width" width="220" fixed="right">
<template slot-scope="scope"> <template slot-scope="scope">
<div> <div>
{{ scope.row.orderSn }} {{ scope.row.orderSn }}
<!-- <el-link--> <!-- <el-link-->
<!-- size="mini"--> <!-- size="mini"-->
<!-- icon="el-icon-document-copy"--> <!-- icon="el-icon-document-copy"-->
<!-- @click="copyOrderSn(scope.row.orderSn)"--> <!-- @click="copyOrderSn(scope.row.orderSn)"-->
<!-- ></el-link>--> <!-- ></el-link>-->
<el-link @click="copy(scope.row.orderSn)" :underline="false"><i class="el-icon-document-copy el-icon--right"></i> </el-link> <el-link @click="copy(scope.row.orderSn)" :underline="false"><i
class="el-icon-document-copy el-icon--right"></i></el-link>
</div> </div>
<el-button <el-button
size="mini" size="mini"
type="text" type="text"
@click="goDetail(scope.row)" @click="goDetail(scope.row)"
v-hasPermi="['oms:order:query']" v-hasPermi="['oms:order:query']"
>详情</el-button> >详情
</el-button>
<el-button <el-button
size="mini" size="mini"
type="text" type="text"
@click="showLog(scope.row.id)" @click="showLog(scope.row.id)"
v-hasPermi="['oms:order:log']" v-hasPermi="['oms:order:log']"
>日志</el-button> >日志
</el-button>
<el-button <el-button
size="mini" size="mini"
type="text" type="text"
@click="handleDelivery(scope.row)" @click="handleDelivery(scope.row)"
:disabled="scope.row.status !== 1 && scope.row.status !== 2 && scope.row.status !== 3" :disabled="scope.row.status !== 1 && scope.row.status !== 2 && scope.row.status !== 3"
>发货</el-button> >发货
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -185,15 +198,17 @@
<el-dialog :title="deliveryObj.title" :visible.sync="deliveryObj.open" width="500px" append-to-body> <el-dialog :title="deliveryObj.title" :visible.sync="deliveryObj.open" width="500px" append-to-body>
<el-form ref="deliveryForm" :model="deliveryObj.form" :rules="deliveryObj.rules" label-width="100px"> <el-form ref="deliveryForm" :model="deliveryObj.form" :rules="deliveryObj.rules" label-width="100px">
<el-form-item label="快递公司" prop="expressName"> <el-form-item label="快递公司" prop="expressName">
<el-select v-model="deliveryObj.form.expressName" placeholder="请选择快递公司" clearable size="small" filterable> <el-select v-model="deliveryObj.form.expressName" placeholder="请选择快递公司" clearable size="small"
<!-- <el-option v-for="(item, index) in experssList" :label="item.expressName" :value="item.expressCode"/>--> filterable>
<!-- <el-option v-for="(item, index) in experssList" :label="item.expressName" :value="item.expressCode"/>-->
<el-option label="顺丰速运" value="1"/> <el-option label="顺丰速运" value="1"/>
<el-option label="申通快递" value="2"/> <el-option label="申通快递" value="2"/>
<el-option label="圆通快递" value="2"/> <el-option label="圆通快递" value="2"/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="快递单号" prop="expressSn"> <el-form-item label="快递单号" prop="expressSn">
<el-input v-model="deliveryObj.form.expressSn" placeholder="请输入快递单号" controls-position="right" :min="0"/> <el-input v-model="deliveryObj.form.expressSn" placeholder="请输入快递单号" controls-position="right"
:min="0"/>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
@ -235,19 +250,30 @@
</template> </template>
<script> <script>
import { listOmsOrder, getOmsOrder, delOmsOrder, addOmsOrder, updateOmsOrder, exportOmsOrder, saveMerchantNote, deliverProduct, viewLog } from "@/api/oms/order"; import {
listOmsOrder,
getOmsOrder,
delOmsOrder,
addOmsOrder,
updateOmsOrder,
exportOmsOrder,
saveMerchantNote,
deliverProduct,
viewLog
} from "@/api/oms/order";
import AddressSelector from "@/views/components/AddressSelector/index.vue"; import AddressSelector from "@/views/components/AddressSelector/index.vue";
import dateUtil, {dateFormat} from '@/utils/DateUtil'; import dateUtil, {dateFormat} from '@/utils/DateUtil';
import fa from "element-ui/src/locale/lang/fa"; import {isStarRepo} from "@/utils/is-star-plugin"
export default { export default {
name: "OmsOrder", name: "OmsOrder",
dicts: ["oms_order_status","oms_pay_type"], dicts: ["oms_order_status", "oms_pay_type"],
components: { components: {
AddressSelector AddressSelector
}, },
data() { data() {
return { return {
show: false,
// //
loading: true, loading: true,
pickerOptions: { pickerOptions: {
@ -277,7 +303,7 @@ export default {
pageSize: 10, pageSize: 10,
payType: null, payType: null,
status: null, status: null,
Time:[], Time: [],
provinces: [], provinces: [],
receiverProvinceId: null, receiverProvinceId: null,
receiverCityId: null, receiverCityId: null,
@ -293,13 +319,13 @@ export default {
// //
rules: { rules: {
memberId: [ memberId: [
{ required: true, message: "MEMBER_ID不能为空", trigger: "blur" } {required: true, message: "MEMBER_ID不能为空", trigger: "blur"}
], ],
receiverName: [ receiverName: [
{ required: true, message: "收货人姓名不能为空", trigger: "blur" } {required: true, message: "收货人姓名不能为空", trigger: "blur"}
], ],
receiverPhone: [ receiverPhone: [
{ required: true, message: "收货人电话不能为空", trigger: "blur" } {required: true, message: "收货人电话不能为空", trigger: "blur"}
], ],
}, },
showMoreCondition: false, showMoreCondition: false,
@ -311,7 +337,7 @@ export default {
expressSn: null expressSn: null
}, },
open: false, open: false,
rules:{ rules: {
expressName: [ expressName: [
{required: true, message: "快递公司不能为空", trigger: "change"} {required: true, message: "快递公司不能为空", trigger: "change"}
], ],
@ -336,22 +362,26 @@ export default {
} }
}; };
}, },
created() { async created() {
const { phone,status,today } = this.$route.query const res = await isStarRepo('zccbbg', 'RuoYi-Mall', this.userId, location.href, 'ruoyi-mall-商城', 'https://gitee.com/zccbbg/RuoYi-Mall')
if (phone){ this.show = res;
this.queryParams.userPhone = phone if (res) {
} const {phone, status, today} = this.$route.query
if (status){ if (phone) {
this.queryParams.status = status this.queryParams.userPhone = phone
} }
if (today){ if (status) {
this.setToday() this.queryParams.status = status
}
if (today) {
this.setToday()
}
this.getList();
} }
this.getList();
}, },
methods: { methods: {
/** 日期组件设置为今天 */ /** 日期组件设置为今天 */
setToday(){ setToday() {
const temp = new Date(); const temp = new Date();
this.queryParams.Time[0] = dateFormat(new Date(temp.setHours(0, 0, 0, 0)), "yyyy-MM-dd hh:mm:ss") this.queryParams.Time[0] = dateFormat(new Date(temp.setHours(0, 0, 0, 0)), "yyyy-MM-dd hh:mm:ss")
this.queryParams.Time[1] = dateFormat(new Date(temp.setHours(23, 59, 59, 0)), "yyyy-MM-dd hh:mm:ss") this.queryParams.Time[1] = dateFormat(new Date(temp.setHours(23, 59, 59, 0)), "yyyy-MM-dd hh:mm:ss")
@ -366,7 +396,7 @@ export default {
const {pageNum, pageSize} = this.queryParams; const {pageNum, pageSize} = this.queryParams;
const query = {...this.queryParams, pageNum: undefined, pageSize: undefined}; const query = {...this.queryParams, pageNum: undefined, pageSize: undefined};
if (query.provinces) { if (query.provinces) {
const [receiverProvinceId,receiverCityId,receiverDistrictId] =query.provinces const [receiverProvinceId, receiverCityId, receiverDistrictId] = query.provinces
query.receiverProvinceId = receiverProvinceId query.receiverProvinceId = receiverProvinceId
query.receiverCityId = receiverCityId query.receiverCityId = receiverCityId
query.receiverDistrictId = receiverDistrictId query.receiverDistrictId = receiverDistrictId
@ -377,7 +407,7 @@ export default {
} }
const pageReq = {page: pageNum - 1, size: pageSize}; const pageReq = {page: pageNum - 1, size: pageSize};
listOmsOrder(query, pageReq).then(response => { listOmsOrder(query, pageReq).then(response => {
const { content, totalElements } = response const {content, totalElements} = response
this.omsOrderList = content; this.omsOrderList = content;
this.total = totalElements; this.total = totalElements;
this.loading = false; this.loading = false;
@ -440,7 +470,7 @@ export default {
// //
handleSelectionChange(selection) { handleSelectionChange(selection) {
this.ids = selection.map(item => item.id) this.ids = selection.map(item => item.id)
this.single = selection.length!==1 this.single = selection.length !== 1
this.multiple = !selection.length this.multiple = !selection.length
}, },
/** 新增按钮操作 */ /** 新增按钮操作 */
@ -479,12 +509,13 @@ export default {
/** 删除按钮操作 */ /** 删除按钮操作 */
handleDelete(row) { handleDelete(row) {
const ids = row.id || this.ids; const ids = row.id || this.ids;
this.$modal.confirm('是否确认删除订单表编号为"' + ids + '"的数据项?').then(function() { this.$modal.confirm('是否确认删除订单表编号为"' + ids + '"的数据项?').then(function () {
return delOmsOrder(ids); return delOmsOrder(ids);
}).then(() => { }).then(() => {
this.getList(); this.getList();
this.$modal.msgSuccess("删除成功"); this.$modal.msgSuccess("删除成功");
}).catch(() => {}); }).catch(() => {
});
}, },
/** 导出按钮操作 */ /** 导出按钮操作 */
handleExport() { handleExport() {
@ -495,7 +526,8 @@ export default {
}).then(response => { }).then(response => {
this.$download.download(response); this.$download.download(response);
this.exportLoading = false; this.exportLoading = false;
}).catch(() => {}); }).catch(() => {
});
}, },
//change //change
handleChange(value) { handleChange(value) {
@ -504,8 +536,8 @@ export default {
this.queryParams.endTime = null; this.queryParams.endTime = null;
} }
}, },
getOrderStatusTag(status){ getOrderStatusTag(status) {
switch (status){ switch (status) {
case 0: case 0:
case 1: case 1:
return 'info'; return 'info';
@ -519,8 +551,8 @@ export default {
return 'danger'; return 'danger';
} }
}, },
getOrderStatusText(status){ getOrderStatusText(status) {
switch (status){ switch (status) {
case 0: case 0:
return '待付款'; return '待付款';
case 1: case 1:
@ -535,8 +567,8 @@ export default {
return '无效订单'; return '无效订单';
} }
}, },
getLogEvent(status){ getLogEvent(status) {
switch (status){ switch (status) {
case 0: case 0:
return '用户下单'; return '用户下单';
case 1: case 1:
@ -551,8 +583,8 @@ export default {
return '无效订单'; return '无效订单';
} }
}, },
getPayTypeTag(type){ getPayTypeTag(type) {
switch (type){ switch (type) {
case 0: case 0:
return 'info'; return 'info';
case 1: case 1:
@ -561,8 +593,8 @@ export default {
return 'success'; return 'success';
} }
}, },
getPayTypeText(type){ getPayTypeText(type) {
switch (type){ switch (type) {
case 0: case 0:
return '未支付'; return '未支付';
case 1: case 1:
@ -571,7 +603,7 @@ export default {
return '微信'; return '微信';
} }
}, },
goDetail(row){ goDetail(row) {
const id = row.id const id = row.id
this.$router.push({path: '/order/detail', query: {id}}) this.$router.push({path: '/order/detail', query: {id}})
}, },
@ -586,13 +618,13 @@ export default {
this.$modal.msgSuccess('复制成功'); this.$modal.msgSuccess('复制成功');
oInput.remove() oInput.remove()
}, },
handleDelivery(row){ handleDelivery(row) {
this.deliveryObj.form.orderId = row.id this.deliveryObj.form.orderId = row.id
this.deliveryObj.open = true this.deliveryObj.open = true
}, },
submitDelivery(){ submitDelivery() {
this.$refs['deliveryForm'].validate((valid) => { this.$refs['deliveryForm'].validate((valid) => {
if (valid){ if (valid) {
deliverProduct(this.deliveryObj.form).then(resp => { deliverProduct(this.deliveryObj.form).then(resp => {
this.$modal.msgSuccess('发货成功') this.$modal.msgSuccess('发货成功')
this.cancelDelivery() this.cancelDelivery()
@ -601,17 +633,17 @@ export default {
} }
}) })
}, },
cancelDelivery(){ cancelDelivery() {
this.deliveryObj.open = false this.deliveryObj.open = false
this.deliveryObj.form.orderId = null this.deliveryObj.form.orderId = null
this.deliveryObj.form.expressName = null this.deliveryObj.form.expressName = null
this.deliveryObj.form.expressSn = null this.deliveryObj.form.expressSn = null
}, },
handleSaveNote(row){ handleSaveNote(row) {
const merchantNote = row.merchantNote const merchantNote = row.merchantNote
if (merchantNote){ if (merchantNote) {
this.noteObj.title = '修改平台备注' this.noteObj.title = '修改平台备注'
}else { } else {
this.noteObj.title = '添加平台备注' this.noteObj.title = '添加平台备注'
} }
this.noteObj.form.id = row.id this.noteObj.form.id = row.id
@ -619,21 +651,21 @@ export default {
this.noteObj.open = true this.noteObj.open = true
}, },
// //
submitNoteForm(){ submitNoteForm() {
saveMerchantNote(this.noteObj.form).then(resp => { saveMerchantNote(this.noteObj.form).then(resp => {
if (resp > 0){ if (resp > 0) {
this.$modal.msgSuccess('修改成功') this.$modal.msgSuccess('修改成功')
this.cancelNote() this.cancelNote()
this.getList() this.getList()
} }
}) })
}, },
cancelNote(){ cancelNote() {
this.noteObj.open = false this.noteObj.open = false
this.noteObj.form.id = null this.noteObj.form.id = null
this.noteObj.form.merchantNote = null this.noteObj.form.merchantNote = null
}, },
showLog(orderId){ showLog(orderId) {
this.logObj.loading = true this.logObj.loading = true
viewLog(orderId).then((response) => { viewLog(orderId).then((response) => {
this.logObj.logList = response this.logObj.logList = response
@ -646,33 +678,40 @@ export default {
}; };
</script> </script>
<style lang="scss"> <style lang="scss">
.product-container{ .product-container {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
align-items: center; align-items: center;
width: 340px; width: 340px;
.product-item{
.product-item {
margin: auto; margin: auto;
width: 290px; width: 290px;
.sp-data{
.sp-data {
font-size: 13px; font-size: 13px;
} }
.quantity{
.quantity {
font-weight: bold; font-weight: bold;
font-size: 13px; font-size: 13px;
} }
} }
} }
.note-title{
.note-title {
font-weight: bold; font-weight: bold;
} }
.el-table .my-cell { .el-table .my-cell {
vertical-align: top vertical-align: top
} }
.el-link.el-link--default { .el-link.el-link--default {
color: #409eff; color: #409eff;
} }
.el-select{
.el-select {
width: 100%; width: 100%;
} }
</style> </style>

@ -1,5 +1,5 @@
<template> <template>
<div class="app-container"> <div class="app-container" v-if="show">
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="100px" size="medium" class="ry_form"> <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="100px" size="medium" class="ry_form">
<el-form-item label="上架状态" prop="publishStatus"> <el-form-item label="上架状态" prop="publishStatus">
<DictRadio v-model="queryParams.publishStatus" @change="handleQuery" size="small" <DictRadio v-model="queryParams.publishStatus" @change="handleQuery" size="small"
@ -55,7 +55,7 @@
icon="el-icon-plus" icon="el-icon-plus"
size="mini" size="mini"
@click="handleAdd" @click="handleAdd"
>新增</el-button> >新增</el-button>
</el-col> </el-col>
</el-row> </el-row>
@ -120,12 +120,14 @@
<script> <script>
import {delPmsProduct, listPmsProduct} from "@/api/pms/product"; import {delPmsProduct, listPmsProduct} from "@/api/pms/product";
import {isStarRepo} from "@/utils/is-star-plugin";
export default { export default {
name: "PmsProduct", name: "PmsProduct",
dicts: ['pms_publish_status'], dicts: ['pms_publish_status'],
data() { data() {
return { return {
show: false,
// //
loading: true, loading: true,
// //
@ -164,8 +166,12 @@ export default {
}, },
}; };
}, },
created() { async created() {
this.getList(); const res = await isStarRepo('zccbbg', 'RuoYi-Mall', this.userId, location.href, 'ruoyi-mall-商城', 'https://gitee.com/zccbbg/RuoYi-Mall')
this.show = res;
if (res) {
this.getList();
}
}, },
methods: { methods: {
/** 查询商品信息列表 */ /** 查询商品信息列表 */

@ -1,5 +1,5 @@
<template> <template>
<div class="app-container"> <div class="app-container" v-if="show">
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="100px" size="medium" class="ry_form"> <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="100px" size="medium" class="ry_form">
<el-form-item label="创建时间"> <el-form-item label="创建时间">
<el-date-picker <el-date-picker
@ -137,11 +137,13 @@
import { listUmsMember, getUmsMember, delUmsMember, addUmsMember, updateUmsMember,updateUmsMemberMark, exportUmsMember, changeAccountStatus, decryptedPhone, viewStatistics } from "@/api/ums/member"; import { listUmsMember, getUmsMember, delUmsMember, addUmsMember, updateUmsMember,updateUmsMemberMark, exportUmsMember, changeAccountStatus, decryptedPhone, viewStatistics } from "@/api/ums/member";
import dateUtil from '@/utils/DateUtil'; import dateUtil from '@/utils/DateUtil';
import moment from "moment"; import moment from "moment";
import {isStarRepo} from "@/utils/is-star-plugin";
export default { export default {
name: "UmsMember", name: "UmsMember",
data() { data() {
return { return {
show: false,
pickerOptions: { pickerOptions: {
shortcuts: dateUtil.getTimeShort() shortcuts: dateUtil.getTimeShort()
}, },
@ -204,8 +206,12 @@ export default {
} }
}; };
}, },
created() { async created() {
this.getList(); const res = await isStarRepo('zccbbg', 'RuoYi-Mall', this.userId, location.href, 'ruoyi-mall-商城', 'https://gitee.com/zccbbg/RuoYi-Mall')
this.show = res;
if (res) {
this.getList();
}
}, },
methods: { methods: {
showUpdateMark(record){ showUpdateMark(record){

Loading…
Cancel
Save