初始化後台

main
Wayne Hsu 3 years ago
commit 4aaf7c7678

24
.gitignore vendored

@ -0,0 +1,24 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
node_modules
dist
dist-ssr
*.local
# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?

@ -0,0 +1,3 @@
{
"recommendations": ["Vue.volar", "Vue.vscode-typescript-vue-plugin"]
}

@ -0,0 +1,7 @@
# Vue 3 + Vite
This template should help get you started developing with Vue 3 in Vite. The template uses Vue 3 `<script setup>` SFCs, check out the [script setup docs](https://v3.vuejs.org/api/sfc-script-setup.html#sfc-script-setup) to learn more.
## Recommended IDE Setup
- [VS Code](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur) + [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin).

@ -0,0 +1,13 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Vite + Vue</title>
</head>
<body>
<div id="app"></div>
<script type="module" src="/src/main.js"></script>
</body>
</html>

@ -0,0 +1,32 @@
<!DOCTYPE html>
<html lang="zh-TW">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>{$lang.cp_home}{if $ur_here} - {$ur_here}{/if}</title>
<!-- Google Font: Source Sans Pro -->
<link
rel="stylesheet"
href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700&display=fallback"
/>
<!-- Font Awesome -->
<link rel="stylesheet" href="plugins/fontawesome-free/css/all.min.css" />
<!-- icheck bootstrap -->
<link
rel="stylesheet"
href="plugins/icheck-bootstrap/icheck-bootstrap.min.css"
/>
<!-- Theme style -->
<link rel="stylesheet" href="dist/css/adminlte.min.css" />
</head>
<body class="hold-transition login-page">
<!-- /.login-box -->
<div id="app"></div>
<script type="module" src="/src/pages/login/main.js"></script>
</body>
<script>
if (window.parent != window) {
window.top.location.href = location.href;
}
</script>
</html>

2209
package-lock.json generated

File diff suppressed because it is too large Load Diff

@ -0,0 +1,23 @@
{
"name": "adminvite",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"build": "vite build",
"preview": "vite preview"
},
"dependencies": {
"axios": "^1.3.4",
"element-plus": "^2.3.1",
"vue": "^3.2.47"
},
"devDependencies": {
"@vitejs/plugin-vue": "^4.1.0",
"less": "^4.1.3",
"unplugin-auto-import": "^0.15.1",
"unplugin-vue-components": "^0.24.1",
"vite": "^4.2.0"
}
}

@ -0,0 +1,18 @@
<!DOCTYPE html>
<html lang="zh-TW">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>{$lang.cp_home}{if $ur_here} - {$ur_here}{/if}</title>
<!-- Google Font: Source Sans Pro -->
<link
rel="stylesheet"
href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700&display=fallback"
/>
</head>
<body class="hold-transition login-page">
<!-- /.login-box -->
<div id="app"></div>
<script type="module" src="/src/pages/payment/main.js"></script>
</body>
</html>

@ -0,0 +1,18 @@
<!DOCTYPE html>
<html lang="zh-TW">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>{$lang.cp_home}{if $ur_here} - {$ur_here}{/if}</title>
<!-- Google Font: Source Sans Pro -->
<link
rel="stylesheet"
href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700&display=fallback"
/>
</head>
<body class="hold-transition login-page">
<!-- /.login-box -->
<div id="app"></div>
<script type="module" src="/src/pages/shipping/main.js"></script>
</body>
</html>

@ -0,0 +1,23 @@
<script setup></script>
<template>
<div>
<a href="https://vitejs.dev" target="_blank"> </a>
<a href="https://vuejs.org/" target="_blank"> </a>
</div>
</template>
<style scoped>
.logo {
height: 6em;
padding: 1.5em;
will-change: filter;
transition: filter 300ms;
}
.logo:hover {
filter: drop-shadow(0 0 2em #646cffaa);
}
.logo.vue:hover {
filter: drop-shadow(0 0 2em #42b883aa);
}
</style>

@ -0,0 +1,5 @@
import { request } from '@/utils/request'
export function getList(id) {
return request('/payment/list', 'get')
}

@ -0,0 +1,5 @@
import { request } from '@/utils/request'
export function getList(id) {
return request('/shipping/list', 'get')
}

@ -0,0 +1,3 @@
body {
padding: 10px;
}

@ -0,0 +1,379 @@
/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */
/* Document
========================================================================== */
/**
* 1. Correct the line height in all browsers.
* 2. Prevent adjustments of font size after orientation changes in iOS.
*/
html {
line-height: 1.15;
/* 1 */
-webkit-text-size-adjust: 100%;
/* 2 */
}
/* Sections
========================================================================== */
/**
* Remove the margin in all browsers.
*/
body {
margin: 0;
}
/**
* Render the `main` element consistently in IE.
*/
main {
display: block;
}
/**
* Correct the font size and margin on `h1` elements within `section` and
* `article` contexts in Chrome, Firefox, and Safari.
*/
h1 {
font-size: 2em;
margin: 0.67em 0;
}
/* Grouping content
========================================================================== */
/**
* 1. Add the correct box sizing in Firefox.
* 2. Show the overflow in Edge and IE.
*/
hr {
box-sizing: content-box;
/* 1 */
height: 0;
/* 1 */
overflow: visible;
/* 2 */
}
/**
* 1. Correct the inheritance and scaling of font size in all browsers.
* 2. Correct the odd `em` font sizing in all browsers.
*/
pre {
font-family: monospace, monospace;
/* 1 */
font-size: 1em;
/* 2 */
}
/* Text-level semantics
========================================================================== */
/**
* Remove the gray background on active links in IE 10.
*/
a {
background-color: transparent;
}
/**
* 1. Remove the bottom border in Chrome 57-
* 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
*/
abbr[title] {
border-bottom: none;
/* 1 */
text-decoration: underline;
/* 2 */
text-decoration: underline dotted;
/* 2 */
}
/**
* Add the correct font weight in Chrome, Edge, and Safari.
*/
b,
strong {
font-weight: bolder;
}
/**
* 1. Correct the inheritance and scaling of font size in all browsers.
* 2. Correct the odd `em` font sizing in all browsers.
*/
code,
kbd,
samp {
font-family: monospace, monospace;
/* 1 */
font-size: 1em;
/* 2 */
}
/**
* Add the correct font size in all browsers.
*/
small {
font-size: 80%;
}
/**
* Prevent `sub` and `sup` elements from affecting the line height in
* all browsers.
*/
sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
/* Embedded content
========================================================================== */
/**
* Remove the border on images inside links in IE 10.
*/
img {
border-style: none;
}
/* Forms
========================================================================== */
/**
* 1. Change the font styles in all browsers.
* 2. Remove the margin in Firefox and Safari.
*/
button,
input,
optgroup,
select,
textarea {
font-family: inherit;
/* 1 */
font-size: 100%;
/* 1 */
line-height: 1.15;
/* 1 */
margin: 0;
/* 2 */
}
/**
* Show the overflow in IE.
* 1. Show the overflow in Edge.
*/
button,
input {
/* 1 */
overflow: visible;
}
/**
* Remove the inheritance of text transform in Edge, Firefox, and IE.
* 1. Remove the inheritance of text transform in Firefox.
*/
button,
select {
/* 1 */
text-transform: none;
}
/**
* Correct the inability to style clickable types in iOS and Safari.
*/
button,
[type="button"],
[type="reset"],
[type="submit"] {
-webkit-appearance: button;
}
/**
* Remove the inner border and padding in Firefox.
*/
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
border-style: none;
padding: 0;
}
/**
* Restore the focus styles unset by the previous rule.
*/
button:-moz-focusring,
[type="button"]:-moz-focusring,
[type="reset"]:-moz-focusring,
[type="submit"]:-moz-focusring {
outline: 1px dotted ButtonText;
}
/**
* Correct the padding in Firefox.
*/
fieldset {
padding: 0.35em 0.75em 0.625em;
}
/**
* 1. Correct the text wrapping in Edge and IE.
* 2. Correct the color inheritance from `fieldset` elements in IE.
* 3. Remove the padding so developers are not caught out when they zero out
* `fieldset` elements in all browsers.
*/
legend {
box-sizing: border-box;
/* 1 */
color: inherit;
/* 2 */
display: table;
/* 1 */
max-width: 100%;
/* 1 */
padding: 0;
/* 3 */
white-space: normal;
/* 1 */
}
/**
* Add the correct vertical alignment in Chrome, Firefox, and Opera.
*/
progress {
vertical-align: baseline;
}
/**
* Remove the default vertical scrollbar in IE 10+.
*/
textarea {
overflow: auto;
}
/**
* 1. Add the correct box sizing in IE 10.
* 2. Remove the padding in IE 10.
*/
[type="checkbox"],
[type="radio"] {
box-sizing: border-box;
/* 1 */
padding: 0;
/* 2 */
}
/**
* Correct the cursor style of increment and decrement buttons in Chrome.
*/
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
height: auto;
}
/**
* 1. Correct the odd appearance in Chrome and Safari.
* 2. Correct the outline style in Safari.
*/
[type="search"] {
-webkit-appearance: textfield;
/* 1 */
outline-offset: -2px;
/* 2 */
}
/**
* Remove the inner padding in Chrome and Safari on macOS.
*/
[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
/**
* 1. Correct the inability to style clickable types in iOS and Safari.
* 2. Change font properties to `inherit` in Safari.
*/
::-webkit-file-upload-button {
-webkit-appearance: button;
/* 1 */
font: inherit;
/* 2 */
}
/* Interactive
========================================================================== */
/*
* Add the correct display in Edge, IE 10+, and Firefox.
*/
details {
display: block;
}
/*
* Add the correct display in all browsers.
*/
summary {
display: list-item;
}
/* Misc
========================================================================== */
/**
* Add the correct display in IE 10+.
*/
template {
display: none;
}
/**
* Add the correct display in IE 10.
*/
[hidden] {
display: none;
}

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="37.07" height="36" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 198"><path fill="#41B883" d="M204.8 0H256L128 220.8L0 0h97.92L128 51.2L157.44 0h47.36Z"></path><path fill="#41B883" d="m0 0l128 220.8L256 0h-51.2L128 132.48L50.56 0H0Z"></path><path fill="#35495E" d="M50.56 0L128 133.12L204.8 0h-47.36L128 51.2L97.92 0H50.56Z"></path></svg>

After

Width:  |  Height:  |  Size: 496 B

@ -0,0 +1,5 @@
import { createApp } from 'vue'
import './style.css'
import App from './App.vue'
createApp(App).mount('#app')

@ -0,0 +1,7 @@
<template>
<div>login</div>
</template>
<script setup></script>
<style scoped></style>

@ -0,0 +1,4 @@
import { createApp } from 'vue'
import App from './index.vue'
createApp(App).mount('#app')

@ -0,0 +1,70 @@
<template>
<div class="main">
<div class="breadcrumb">
<el-breadcrumb separator="/">
<el-breadcrumb-item :to="{ path: '/' }"
>電商管理中心</el-breadcrumb-item
>
<el-breadcrumb-item><a href="/">支付方式</a></el-breadcrumb-item>
</el-breadcrumb>
</div>
<hr />
<el-table :data="tableData" style="width: 100%">
<el-table-column prop="pay_name" label="支付方式" width="180" />
<el-table-column prop="pay_desc" label="支付顯示名稱" width="180" />
<el-table-column prop="pay_code" label="支付代碼" width="180" />
<el-table-column prop="pay_fee" label="手續費" />
<!-- <el-table-column prop="sort" label="排序" width="180" />
<el-table-column prop="status" label="狀態" width="180" /> -->
<el-table-column label="操作" width="150">
<template #default="scope">
<el-button size="small" @click="handleEdit(scope.$index, scope.row)"
>編輯</el-button
>
<el-button
size="small"
type="danger"
@click="handleDelete(scope.$index, scope.row)"
>刪除</el-button
>
</template>
</el-table-column>
</el-table>
</div>
</template>
<script setup>
import { ref, onMounted } from "vue";
import { getList } from "@/api/payment";
const tableData = ref([]);
onMounted(async () => {
let res = await getList();
tableData.value = res.data;
});
</script>
<style lang="less" scoped>
.main {
background-color: #ffffff;
.breadcrumb {
margin: 0 0 10px;
padding: 10px 10px;
line-height: 1.2;
font-weight: 500;
:deep(.el-breadcrumb) {
font-size: 16px;
color: #606266;
.el-breadcrumb__inner {
display: inline-block;
vertical-align: middle;
.el-breadcrumb__separator {
color: #c0c4cc;
}
}
}
}
}
</style>

@ -0,0 +1,7 @@
import { createApp } from 'vue'
import App from './index.vue'
import '@/assets/css/normalize.css'
import '@/assets/css/common.css'
createApp(App).mount('#app')

@ -0,0 +1,70 @@
<template>
<div class="main">
<div class="breadcrumb">
<el-breadcrumb separator="/">
<el-breadcrumb-item :to="{ path: '/' }"
>電商管理中心</el-breadcrumb-item
>
<el-breadcrumb-item><a href="/">物流方式</a></el-breadcrumb-item>
</el-breadcrumb>
</div>
<hr />
<el-table :data="tableData" style="width: 100%">
<el-table-column prop="shipping_name" label="物流方式" width="180" />
<el-table-column prop="shipping_desc" label="物流顯示名稱" width="180" />
<el-table-column prop="shipping_code" label="物流代碼" width="180" />
<el-table-column prop="shipping_fee" label="手續費" />
<!-- <el-table-column prop="sort" label="排序" width="180" />
<el-table-column prop="status" label="狀態" width="180" /> -->
<el-table-column label="操作" width="150">
<template #default="scope">
<el-button size="small" @click="handleEdit(scope.$index, scope.row)"
>編輯</el-button
>
<el-button
size="small"
type="danger"
@click="handleDelete(scope.$index, scope.row)"
>刪除</el-button
>
</template>
</el-table-column>
</el-table>
</div>
</template>
<script setup>
import { ref, onMounted } from "vue";
import { getList } from "@/api/shipping";
const tableData = ref([]);
onMounted(async () => {
let res = await getList();
tableData.value = res.data;
});
</script>
<style lang="less" scoped>
.main {
background-color: #ffffff;
.breadcrumb {
margin: 0 0 10px;
padding: 10px 10px;
line-height: 1.2;
font-weight: 500;
:deep(.el-breadcrumb) {
font-size: 16px;
color: #606266;
.el-breadcrumb__inner {
display: inline-block;
vertical-align: middle;
.el-breadcrumb__separator {
color: #c0c4cc;
}
}
}
}
}
</style>

@ -0,0 +1,7 @@
import { createApp } from 'vue'
import App from './index.vue'
import '@/assets/css/normalize.css'
import '@/assets/css/common.css'
createApp(App).mount('#app')

@ -0,0 +1,89 @@
:root {
font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif;
line-height: 1.5;
font-weight: 400;
color-scheme: light dark;
color: rgba(255, 255, 255, 0.87);
background-color: #242424;
font-synthesis: none;
text-rendering: optimizeLegibility;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
-webkit-text-size-adjust: 100%;
}
a {
font-weight: 500;
color: #646cff;
text-decoration: inherit;
}
a:hover {
color: #535bf2;
}
a {
font-weight: 500;
color: #646cff;
text-decoration: inherit;
}
a:hover {
color: #535bf2;
}
body {
margin: 0;
display: flex;
place-items: center;
min-width: 320px;
min-height: 100vh;
}
h1 {
font-size: 3.2em;
line-height: 1.1;
}
button {
border-radius: 8px;
border: 1px solid transparent;
padding: 0.6em 1.2em;
font-size: 1em;
font-weight: 500;
font-family: inherit;
background-color: #1a1a1a;
cursor: pointer;
transition: border-color 0.25s;
}
button:hover {
border-color: #646cff;
}
button:focus,
button:focus-visible {
outline: 4px auto -webkit-focus-ring-color;
}
.card {
padding: 2em;
}
#app {
max-width: 1280px;
margin: 0 auto;
padding: 2rem;
text-align: center;
}
@media (prefers-color-scheme: light) {
:root {
color: #213547;
background-color: #ffffff;
}
a:hover {
color: #747bff;
}
button {
background-color: #f9f9f9;
}
}

@ -0,0 +1,62 @@
import axios from 'axios'
// import Cookies from 'js-cookie'
// import router from '@/router'
const ajax = axios.create({
baseURL: 'https://shop.h888.fun/adminapi/v1',
withCredentials: true,
timeout: 5000
})
export const request = (url, method = 'GET', params = {}, config = {}) => {
method = method.toUpperCase()
switch (method) {
case 'GET':
return ajax.get(url, { params, ...config })
case 'POST':
return ajax.post(url, params, config)
default:
return ajax.get(url, { params, ...config })
}
}
ajax.interceptors.request.use(
(config) => {
return config
},
(error) => {
return Promise.reject(error)
}
)
ajax.interceptors.response.use(
(response) => {
// refreshToken(response)
return response.data
},
(error) => {
if (error.response) {
switch (error.response.status) {
case 401:
// console.log('response 401')
// Cookies.remove('token', { expires: 30, domain: import.meta.env.VITE_APP_SSO_DOMAIN })
// Cookies.remove('uid', { expires: 30, domain: import.meta.env.VITE_APP_SSO_DOMAIN })
// router.replace({
// path: '/login',
// query: { redirect: router.currentRoute.fullPath }
// })
}
}
return Promise.reject(error);
}
)
function refreshToken(response) {
let token = response.headers.authorization
if (token) {
// Cookies.set('token', res.data.token, { expires: 30, domain: import.meta.env.VITE_APP_SSO_DOMAIN })
}
}

@ -0,0 +1,36 @@
import { resolve } from 'path'
import { defineConfig } from 'vite'
import AutoImport from 'unplugin-auto-import/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
import Components from 'unplugin-vue-components/vite'
import vue from '@vitejs/plugin-vue'
// https://vitejs.dev/config/
export default defineConfig({
base: './',
resolve: {
alias: {
'@': resolve(__dirname, 'src'),
},
},
plugins: [
vue(),
AutoImport({
resolvers: [ElementPlusResolver()],
}),
Components({
resolvers: [ElementPlusResolver()],
}),
],
build: {
rollupOptions: {
input: {
// main: resolve(__dirname, 'index.html'),
// login: resolve(__dirname, 'login.html'),
payment: resolve(__dirname, 'payment.html'),
shipping: resolve(__dirname, 'shipping.html'),
},
},
},
})

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save