订单管理

This commit is contained in:
邓皓元 2019-03-06 18:47:49 +08:00
parent f43501e45e
commit 86e7f25166
24 changed files with 373 additions and 201 deletions

View File

@ -20,7 +20,8 @@ module.exports = {
named: "never", named: "never",
asyncArrow: "never" asyncArrow: "never"
} }
] ],
"no-multiple-empty-lines": "off"
}, },
parserOptions: { parserOptions: {
parser: "babel-eslint" parser: "babel-eslint"

View File

@ -1,71 +1,84 @@
<template> <template>
<div v-if="show"> <div v-if="show">
<div class="common-loading"> <div class="common-loading">
<div class="common-loading-wrap"> <div class="common-loading-wrap">
<div class="loading-inner"> <div class="loading-inner">
<Icon type="ios-loading" size=25 class="spin-icon-load umar-t10"></Icon> <Icon type="ios-loading" size="25" class="spin-icon-load umar-t10"></Icon>
<div class="fz-12">{{msg}}</div> <div class="fz-12">{{msg}}</div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
export default{ export default {
props: { props: {
show: { // show: {
type: Boolean, //
defualt: true type: Boolean,
}, defualt: true
msg: { // },
type: String, msg: {
default: '加载中...' //
} type: String,
} default: "加载中..."
} }
}
};
</script> </script>
<style> <style>
.common-loading{ .common-loading {
position: absolute; position: absolute;
width: 100%; width: 100%;
left: 0; left: 0;
background-color: rgba(255,255,255,0.2); background-color: rgba(255, 255, 255, 0.2);
z-index: 50; z-index: 50;
top:49px; top: 49px;
bottom:0; bottom: 0;
} }
.common-loading-wrap{ .common-loading-wrap {
display: table; display: table;
text-align: center; text-align: center;
width: 100%; width: 100%;
height: 100%; height: 100%;
color: #2d8cf0; color: #2d8cf0;
} }
.loading-inner{ .loading-inner {
display: table-cell; display: table-cell;
vertical-align: top; vertical-align: top;
} }
.ivu-spin{ .ivu-spin {
font-size: 15px; font-size: 15px;
}
}
.spin-icon-load{ .spin-icon-load {
animation: ani-spin 1s linear infinite; animation: ani-spin 1s linear infinite;
} }
@keyframes ani-spin{ @keyframes ani-spin {
from { transform: rotate(0deg);} from {
50% { transform: rotate(180deg);} transform: rotate(0deg);
to { transform: rotate(360deg);} }
} 50% {
transform: rotate(180deg);
}
to {
transform: rotate(360deg);
}
}
@-webkit-keyframes ani-spin{ @-webkit-keyframes ani-spin {
from { transform: rotate(0deg);} from {
50% { transform: rotate(180deg);} transform: rotate(0deg);
to { transform: rotate(360deg);} }
} 50% {
</style> transform: rotate(180deg);
}
to {
transform: rotate(360deg);
}
}
</style>

View File

@ -1,38 +1,40 @@
<template> <template>
<div class="none-wraper ta-c" v-if="show"> <div class="none-wraper ta-c" v-if="show">
<div><img src="~images/none.png"/></div> <div>
<p class="msg">{{message}}</p> <img src="~images/none.png">
</div> </div>
<p class="msg">{{message}}</p>
</div>
</template> </template>
<script> <script>
export default{ export default {
props: { props: {
show: { show: {
type: Boolean, type: Boolean,
default: false default: false
}, },
message: { message: {
type: String, type: String,
default: '未找到相关信息' default: "未找到相关信息"
} }
} }
} };
</script> </script>
<style scoped lang="less"> <style scoped lang="less">
.none-wraper{ .none-wraper {
padding-top: 50px; padding-top: 50px;
padding-bottom: 50px; padding-bottom: 50px;
img{ img {
width: 150px; width: 150px;
} }
.msg{ .msg {
margin-top: 10px; margin-top: 10px;
color: #b3b3b3; color: #b3b3b3;
font-size: 15px; font-size: 15px;
} }
} }
</style> </style>

View File

@ -57,7 +57,7 @@ export function getScrollBarSize(fresh) {
// watch DOM change // watch DOM change
export const MutationObserver = isServer ? false : window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver || false; export const MutationObserver = isServer ? false : window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver || false;
const SPECIAL_CHARS_REGEXP = /([\:\-\_]+(.))/g; const SPECIAL_CHARS_REGEXP = /([:\-_]+(.))/g;
const MOZ_HACK_REGEXP = /^moz([A-Z])/; const MOZ_HACK_REGEXP = /^moz([A-Z])/;
function camelCase(name) { function camelCase(name) {

View File

@ -6,72 +6,72 @@
* @param {(Node|string|Boolean)} [node=document.body] DOM Node, CSS selector, or Boolean * @param {(Node|string|Boolean)} [node=document.body] DOM Node, CSS selector, or Boolean
* @return {Node} The target that the el will be appended to * @return {Node} The target that the el will be appended to
*/ */
function getTarget (node) { function getTarget(node) {
if (node === void 0) { if (node === void 0) {
node = document.body node = document.body;
} }
if (node === true) { return document.body } if (node === true) { return document.body; }
return node instanceof window.Node ? node : document.querySelector(node) return node instanceof window.Node ? node : document.querySelector(node);
} }
const directive = { const directive = {
inserted (el, { value }, vnode) { inserted(el, { value }, vnode) {
if ( el.dataset && el.dataset.transfer !== 'true') return false; if (el.dataset && el.dataset.transfer !== 'true') return false;
el.className = el.className ? el.className + ' v-transfer-dom' : 'v-transfer-dom'; el.className = el.className ? el.className + ' v-transfer-dom' : 'v-transfer-dom';
const parentNode = el.parentNode; const parentNode = el.parentNode;
if (!parentNode) return; if (!parentNode) return;
const home = document.createComment(''); const home = document.createComment('');
let hasMovedOut = false; let hasMovedOut = false;
if (value !== false) { if (value !== false) {
parentNode.replaceChild(home, el); // moving out, el is no longer in the document parentNode.replaceChild(home, el); // moving out, el is no longer in the document
getTarget(value).appendChild(el); // moving into new place getTarget(value).appendChild(el); // moving into new place
hasMovedOut = true hasMovedOut = true;
}
if (!el.__transferDomData) {
el.__transferDomData = {
parentNode: parentNode,
home: home,
target: getTarget(value),
hasMovedOut: hasMovedOut
}
}
},
componentUpdated (el, { value }) {
if ( el.dataset && el.dataset.transfer !== 'true') return false;
// need to make sure children are done updating (vs. `update`)
const ref$1 = el.__transferDomData;
if (!ref$1) return;
// homes.get(el)
const parentNode = ref$1.parentNode;
const home = ref$1.home;
const hasMovedOut = ref$1.hasMovedOut; // recall where home is
if (!hasMovedOut && value) {
// remove from document and leave placeholder
parentNode.replaceChild(home, el);
// append to target
getTarget(value).appendChild(el);
el.__transferDomData = Object.assign({}, el.__transferDomData, { hasMovedOut: true, target: getTarget(value) });
} else if (hasMovedOut && value === false) {
// previously moved, coming back home
parentNode.replaceChild(el, home);
el.__transferDomData = Object.assign({}, el.__transferDomData, { hasMovedOut: false, target: getTarget(value) });
} else if (value) {
// already moved, going somewhere else
getTarget(value).appendChild(el);
}
},
unbind (el) {
if (el.dataset && el.dataset.transfer !== 'true') return false;
el.className = el.className.replace('v-transfer-dom', '');
const ref$1 = el.__transferDomData;
if (!ref$1) return;
if (el.__transferDomData.hasMovedOut === true) {
el.__transferDomData.parentNode && el.__transferDomData.parentNode.appendChild(el)
}
el.__transferDomData = null
} }
if (!el.__transferDomData) {
el.__transferDomData = {
parentNode: parentNode,
home: home,
target: getTarget(value),
hasMovedOut: hasMovedOut
};
}
},
componentUpdated(el, { value }) {
if (el.dataset && el.dataset.transfer !== 'true') return false;
// need to make sure children are done updating (vs. `update`)
const ref$1 = el.__transferDomData;
if (!ref$1) return;
// homes.get(el)
const parentNode = ref$1.parentNode;
const home = ref$1.home;
const hasMovedOut = ref$1.hasMovedOut; // recall where home is
if (!hasMovedOut && value) {
// remove from document and leave placeholder
parentNode.replaceChild(home, el);
// append to target
getTarget(value).appendChild(el);
el.__transferDomData = Object.assign({}, el.__transferDomData, { hasMovedOut: true, target: getTarget(value) });
} else if (hasMovedOut && value === false) {
// previously moved, coming back home
parentNode.replaceChild(el, home);
el.__transferDomData = Object.assign({}, el.__transferDomData, { hasMovedOut: false, target: getTarget(value) });
} else if (value) {
// already moved, going somewhere else
getTarget(value).appendChild(el);
}
},
unbind(el) {
if (el.dataset && el.dataset.transfer !== 'true') return false;
el.className = el.className.replace('v-transfer-dom', '');
const ref$1 = el.__transferDomData;
if (!ref$1) return;
if (el.__transferDomData.hasMovedOut === true) {
el.__transferDomData.parentNode && el.__transferDomData.parentNode.appendChild(el);
}
el.__transferDomData = null;
}
}; };
export default directive; export default directive;

View File

@ -1,52 +1,61 @@
<template> <template>
<Modal v-model="my_show" title="账号详情" :mask-closable="false" :footer-hide="true" @on-visible-change="visibleChange"> <Modal
<div class="page-detail-wrap" v-if="data"> v-model="my_show"
<ul> title="账号详情"
<li class="ui-list"> :mask-closable="false"
<div class="ui-list-title">用户名</div> :footer-hide="true"
<div class="ui-list-content">{{data.username}}</div> @on-visible-change="visibleChange"
</li> >
<div class="page-detail-wrap" v-if="data">
<ul>
<li class="ui-list">
<div class="ui-list-title">用户名</div>
<div class="ui-list-content">{{data.username}}</div>
</li>
<li class="ui-list" v-if="data.roles.length"> <li class="ui-list" v-if="data.roles.length">
<div class="ui-list-title">所属角色</div> <div class="ui-list-title">所属角色</div>
<div class="ui-list-content">{{data.roles[0].name}}</div> <div class="ui-list-content">{{data.roles[0].name}}</div>
</li> </li>
<li class="ui-list"> <li class="ui-list">
<div class="ui-list-title">姓名</div> <div class="ui-list-title">姓名</div>
<div class="ui-list-content">{{data.nickname}}</div> <div class="ui-list-content">{{data.nickname}}</div>
</li> </li>
<li class="ui-list"> <li class="ui-list">
<div class="ui-list-title">手机号</div> <div class="ui-list-title">手机号</div>
<div class="ui-list-content">{{data.mobile}}</div> <div class="ui-list-content">{{data.mobile}}</div>
</li> </li>
<li class="ui-list"> <li class="ui-list">
<div class="ui-list-title">头像</div> <div class="ui-list-title">头像</div>
<div class="ui-list-content"> <div class="ui-list-content">
<img class="w-150 bd-a" :src="data.avatar+'?a='+Math.random()" @error="imgError($event,default_head)"> <img
</div> class="w-150 bd-a"
</li> :src="data.avatar+'?a='+Math.random()"
@error="imgError($event,default_head)"
>
</div>
</li>
<li class="ui-list"> <li class="ui-list">
<div class="ui-list-title">状态</div> <div class="ui-list-title">状态</div>
<div class="ui-list-content">{{data.status==1?'启用':'禁用'}}</div> <div class="ui-list-content">{{data.status==1?'启用':'禁用'}}</div>
</li> </li>
<li class="ui-list"> <li class="ui-list">
<div class="ui-list-title">创建时间</div> <div class="ui-list-title">创建时间</div>
<div class="ui-list-content">{{data.created_at}}</div> <div class="ui-list-content">{{data.created_at}}</div>
</li> </li>
<li class="ui-list"> <li class="ui-list">
<div class="ui-list-title">更新时间</div> <div class="ui-list-title">更新时间</div>
<div class="ui-list-content">{{data.updated_at}}</div> <div class="ui-list-content">{{data.updated_at}}</div>
</li> </li>
</ul> </ul>
</div> </div>
</Modal> </Modal>
</template> </template>
<script src="./js/detail.js"></script> <script src="./js/detail.js"></script>

View File

@ -163,4 +163,3 @@
font-size: 12px; font-size: 12px;
} }
</style> </style>

View File

@ -1,5 +1,11 @@
<template> <template>
<Drawer :mask-closable="false" @on-visible-change="visibleChange" title="订单详情" v-model="my_show" width="500"> <Drawer
:mask-closable="false"
@on-visible-change="visibleChange"
title="订单详情"
v-model="my_show"
width="500"
>
<div class="page-detail-wrap" v-if="data"> <div class="page-detail-wrap" v-if="data">
<Divider>订单信息</Divider> <Divider>订单信息</Divider>
<ul> <ul>
@ -68,9 +74,24 @@
<li class="ui-list"> <li class="ui-list">
<div class="ui-list-title">支付状态:</div> <div class="ui-list-title">支付状态:</div>
<div class="ui-list-content"> <div class="ui-list-content">
<Button ghost size="small" type="info" v-if="data.transaction_status === 0">{{data.transaction_status_name}}</Button> <Button
<Button ghost size="small" type="success" v-if="data.transaction_status === 1">{{data.transaction_status_name}}</Button> ghost
<Button ghost size="small" type="error" v-if="data.transaction_status === 2">{{data.transaction_status_name}}</Button> size="small"
type="info"
v-if="data.transaction_status === 0"
>{{data.transaction_status_name}}</Button>
<Button
ghost
size="small"
type="success"
v-if="data.transaction_status === 1"
>{{data.transaction_status_name}}</Button>
<Button
ghost
size="small"
type="error"
v-if="data.transaction_status === 2"
>{{data.transaction_status_name}}</Button>
</div> </div>
</li> </li>
@ -125,4 +146,3 @@
</template> </template>
<script src="./js/detail.js"></script> <script src="./js/detail.js"></script>

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
[data-v-4ca8b855] .ivu-table-cell{word-break:keep-all}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
<!DOCTYPE html><html><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1"><link rel=icon href=\favicon.ico><script src=\config.js></script><title></title><link href=/css/chunk-caf89654.f97d0276.css rel=prefetch><link href=/js/chunk-00ae0766.9e6b7bf3.js rel=prefetch><link href=/js/chunk-caf89654.371d9935.js rel=prefetch><link href=/css/app.8e0e058f.css rel=preload as=style><link href=/css/chunk-vendors.3c3b2e85.css rel=preload as=style><link href=/js/app.d3b8e4a6.js rel=preload as=script><link href=/js/chunk-vendors.02a4e5bc.js rel=preload as=script><link href=/css/chunk-vendors.3c3b2e85.css rel=stylesheet><link href=/css/app.8e0e058f.css rel=stylesheet></head><body><noscript><strong>很抱歉如果没有启用JavaScript程序不能正常工作若要继续使用请启用它。</strong></noscript><div id=app></div><script src=/js/chunk-vendors.02a4e5bc.js></script><script src=/js/app.d3b8e4a6.js></script></body></html> <!DOCTYPE html><html><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1"><link rel=icon href=\favicon.ico><script src=\config.js></script><title></title><link href=/css/chunk-5db6a112.3030fcf3.css rel=prefetch><link href=/css/chunk-810ee926.7d15254c.css rel=prefetch><link href=/js/chunk-00ae0766.7d9f006a.js rel=prefetch><link href=/js/chunk-07a274ec.551afb1a.js rel=prefetch><link href=/js/chunk-5db6a112.41960f7f.js rel=prefetch><link href=/js/chunk-810ee926.16531585.js rel=prefetch><link href=/css/app.10b45c74.css rel=preload as=style><link href=/css/chunk-vendors.3c3b2e85.css rel=preload as=style><link href=/js/app.08d7be0b.js rel=preload as=script><link href=/js/chunk-vendors.ed6443e8.js rel=preload as=script><link href=/css/chunk-vendors.3c3b2e85.css rel=stylesheet><link href=/css/app.10b45c74.css rel=stylesheet></head><body><noscript><strong>很抱歉如果没有启用JavaScript程序不能正常工作若要继续使用请启用它。</strong></noscript><div id=app></div><script src=/js/chunk-vendors.ed6443e8.js></script><script src=/js/app.08d7be0b.js></script></body></html>