first
parent
6a524e2468
commit
af4828391b
@ -0,0 +1,23 @@
|
||||
.DS_Store
|
||||
node_modules
|
||||
/dist
|
||||
|
||||
|
||||
# local env files
|
||||
.env.local
|
||||
.env.*.local
|
||||
|
||||
# Log files
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
pnpm-debug.log*
|
||||
|
||||
# Editor directories and files
|
||||
.idea
|
||||
.vscode
|
||||
*.suo
|
||||
*.ntvs*
|
||||
*.njsproj
|
||||
*.sln
|
||||
*.sw?
|
@ -0,0 +1,5 @@
|
||||
module.exports = {
|
||||
presets: [
|
||||
'@vue/cli-plugin-babel/preset'
|
||||
]
|
||||
}
|
@ -0,0 +1,19 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"target": "es5",
|
||||
"module": "esnext",
|
||||
"baseUrl": "./",
|
||||
"moduleResolution": "node",
|
||||
"paths": {
|
||||
"@/*": [
|
||||
"src/*"
|
||||
]
|
||||
},
|
||||
"lib": [
|
||||
"esnext",
|
||||
"dom",
|
||||
"dom.iterable",
|
||||
"scripthost"
|
||||
]
|
||||
}
|
||||
}
|
@ -0,0 +1 @@
|
||||
*{margin:0;padding:0}html{font-size:16px}body{background:#f2f2f2}.main,.main[data-v-48fc50e2]{width:95%;margin:0 2.5%}.main .title[data-v-48fc50e2]{margin:1rem 0}.main .SearchBox[data-v-48fc50e2]{display:flex;margin-top:1rem}.main .SearchBox>[data-v-48fc50e2]{margin-right:10px}.main .SearchBox .SearchButton[data-v-48fc50e2]{display:ruby}.main .SearchBox .el-input[data-v-48fc50e2]{width:auto!important}.main .el-table[data-v-48fc50e2]{margin-top:1rem}.main[data-v-3cf7cb00]{min-height:100vh;background:#fff}.main .head[data-v-3cf7cb00]{display:flex;justify-content:flex-end;padding:10px 25px}[data-v-3cf7cb00] .el-collapse-item__header{background:#409eff;color:#fff;justify-content:center;font-size:1rem}[data-v-3cf7cb00] .el-collapse-item__header .el-collapse-item__arrow{margin:0;margin-left:.5rem}[data-v-3cf7cb00] .el-collapse-item__content{padding:0}[data-v-3cf7cb00] .el-form{padding:25px 0}[data-v-3cf7cb00] .el-tabs__header{padding-left:80px}.left .left_list[data-v-3cf7cb00]{height:35px;display:flex;align-items:center;padding:0 1rem;box-sizing:border-box;border-bottom:1px solid #c9c9c9}.left .left_list.isActive[data-v-3cf7cb00]{background:#409eff29}.left .left_list p[data-v-3cf7cb00]{flex:1}.left .left_list p i[data-v-3cf7cb00]{font-size:1rem}.right[data-v-3cf7cb00]{border-left:1px solid #c9c9c9}.title[data-v-3cf7cb00]{width:100%;height:36px;padding-left:26px;padding-right:40px;margin-bottom:25px;box-sizing:border-box;display:flex;line-height:36px;background:#409eff8f}.title div[data-v-3cf7cb00]{flex:1;display:flex;justify-content:flex-end}.title div p[data-v-3cf7cb00]{margin-left:.5rem;font-weight:700}.title div p span[data-v-3cf7cb00]{color:red;font-size:1.2rem}.mini_title[data-v-3cf7cb00]{height:1.5rem;border-left:3px solid #409eff;padding-left:10px;margin:25px 27px;display:flex;align-items:center}.mini_title span[data-v-3cf7cb00]{font-weight:700}.mini_title span[data-v-3cf7cb00]:nth-child(2){flex:1;color:#ff3c3c}
|
File diff suppressed because one or more lines are too long
Binary file not shown.
After Width: | Height: | Size: 4.2 KiB |
Binary file not shown.
Binary file not shown.
@ -0,0 +1 @@
|
||||
<!doctype html><html lang=""><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"><title>vue</title><script defer="defer" type="module" src="js/chunk-vendors.49f19b56.js"></script><script defer="defer" type="module" src="js/app.0b1ce4f2.js"></script><link href="css/chunk-vendors.fdcf9830.css" rel="stylesheet"><link href="css/app.d62cdba0.css" rel="stylesheet"><script defer="defer" src="js/chunk-vendors-legacy.a3accb01.js" nomodule></script><script defer="defer" src="js/app-legacy.1624ba82.js" nomodule></script></head><body><noscript><strong>We're sorry but vue doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>
|
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 it is too large
Load Diff
@ -0,0 +1,50 @@
|
||||
{
|
||||
"name": "vue",
|
||||
"version": "0.1.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"serve": "vue-cli-service serve",
|
||||
"build": "vue-cli-service build",
|
||||
"lint": "vue-cli-service lint"
|
||||
},
|
||||
"dependencies": {
|
||||
"axios": "^0.26.1",
|
||||
"core-js": "^3.8.3",
|
||||
"element-ui": "^2.15.8",
|
||||
"node-sass": "^7.0.1",
|
||||
"sass-loader": "^12.6.0",
|
||||
"vue": "^2.6.14",
|
||||
"vue-router": "^3.5.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.12.16",
|
||||
"@babel/eslint-parser": "^7.12.16",
|
||||
"@vue/cli-plugin-babel": "~5.0.0",
|
||||
"@vue/cli-plugin-eslint": "~5.0.0",
|
||||
"@vue/cli-service": "~5.0.0",
|
||||
"eslint": "^7.32.0",
|
||||
"eslint-plugin-vue": "^8.0.3",
|
||||
"vue-template-compiler": "^2.6.14"
|
||||
},
|
||||
"eslintConfig": {
|
||||
"root": true,
|
||||
"env": {
|
||||
"node": true
|
||||
},
|
||||
"extends": [
|
||||
"plugin:vue/essential",
|
||||
"eslint:recommended"
|
||||
],
|
||||
"parserOptions": {
|
||||
"parser": "@babel/eslint-parser"
|
||||
},
|
||||
"rules": {
|
||||
"no-unused-vars": "off"
|
||||
}
|
||||
},
|
||||
"browserslist": [
|
||||
"> 1%",
|
||||
"last 2 versions",
|
||||
"not dead"
|
||||
]
|
||||
}
|
Binary file not shown.
After Width: | Height: | Size: 4.2 KiB |
@ -0,0 +1,17 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
|
||||
<title><%= htmlWebpackPlugin.options.title %></title>
|
||||
</head>
|
||||
<body>
|
||||
<noscript>
|
||||
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
|
||||
</noscript>
|
||||
<div id="app"></div>
|
||||
<!-- built files will be auto injected -->
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,26 @@
|
||||
<template>
|
||||
<router-view></router-view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "App",
|
||||
};
|
||||
</script>
|
||||
|
||||
<style>
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
html {
|
||||
font-size: 16px;
|
||||
}
|
||||
body {
|
||||
background: #f2f2f2;
|
||||
}
|
||||
.main {
|
||||
width: 95%;
|
||||
margin: 0 2.5%;
|
||||
}
|
||||
</style>
|
Binary file not shown.
After Width: | Height: | Size: 6.7 KiB |
@ -0,0 +1,13 @@
|
||||
<template>
|
||||
<h1>123</h1>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'HelloWorld',
|
||||
props: {
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style scoped>
|
||||
</style>
|
@ -0,0 +1,19 @@
|
||||
import Vue from "vue";
|
||||
import App from "./App.vue";
|
||||
import axios from "axios";
|
||||
import ElementUI from "element-ui";
|
||||
import VueRouter from "vue-router";
|
||||
import "element-ui/lib/theme-chalk/index.css";
|
||||
import { routes } from "./utils/routes.js";
|
||||
Vue.use(VueRouter);
|
||||
Vue.use(ElementUI);
|
||||
Vue.config.productionTip = false;
|
||||
Vue.prototype.$axios = axios;
|
||||
const router = new VueRouter({
|
||||
routes: routes,
|
||||
mode: "hash", //去掉#
|
||||
});
|
||||
new Vue({
|
||||
router: router,
|
||||
render: (h) => h(App),
|
||||
}).$mount("#app");
|
@ -0,0 +1,77 @@
|
||||
import axios from "axios";
|
||||
import { Message } from "element-ui";
|
||||
|
||||
const instance = axios.create(); //创建一个axios实例
|
||||
export const baseURL = `${serverconfig.BASE_URL}${serverconfig.SERVER_NAME}/api`;
|
||||
// export const baseURL = process.env.VUE_APP_BASE_API
|
||||
const timeout = 30 * 10000;
|
||||
instance.interceptors.request.use((config) => {
|
||||
config.headers.token = sessionStorage.user || "";
|
||||
return config;
|
||||
});
|
||||
instance.interceptors.response.use(
|
||||
(response) => {
|
||||
if (response.headers["access-control-message-headers"]) {
|
||||
const data =
|
||||
response.headers["access-control-message-headers"].split(",");
|
||||
if (data[1] !== "0") {
|
||||
Message.success(
|
||||
`上传已完成,成功${data[0]}条,失败${data[1]}条,如有失败详见下载文件`
|
||||
);
|
||||
} else {
|
||||
Message.success("上传成功");
|
||||
}
|
||||
}
|
||||
if (response.headers.token_new) {
|
||||
window.sessionStorage.user = response.headers.token_new;
|
||||
}
|
||||
// 文件流下载单独判断
|
||||
const { responseType } = response.config;
|
||||
const { code, message } = response.data;
|
||||
if (parseInt(code) === 1 || (responseType === "blob" && response.data)) {
|
||||
return response;
|
||||
} else {
|
||||
Message.warning({
|
||||
message: message || code,
|
||||
});
|
||||
// 结束Promise,不再继续执行
|
||||
return Promise.reject(response);
|
||||
}
|
||||
},
|
||||
(error) => {
|
||||
if (error.response) {
|
||||
const {
|
||||
status,
|
||||
data: { message },
|
||||
} = error.response;
|
||||
const { request } = error.response;
|
||||
let responseURL = request.responseURL;
|
||||
|
||||
if (status && status.toString() === "401") {
|
||||
Message.warning({
|
||||
message: "用户登录已失效",
|
||||
});
|
||||
sessionStorage.clear();
|
||||
location.href = "/";
|
||||
} else if (status && status.toString() === "403") {
|
||||
console.log(status);
|
||||
let errorUrl = responseURL.split("/").pop();
|
||||
if (
|
||||
typeof errorUrl == "string" &&
|
||||
errorUrl !== "" &&
|
||||
errorUrl === "exportRiskCaseMainDetailsPDF"
|
||||
) {
|
||||
} else {
|
||||
Message.warning({
|
||||
message: "没有权限",
|
||||
});
|
||||
}
|
||||
} else {
|
||||
Message.warning({
|
||||
message: message || `${status}异常`,
|
||||
});
|
||||
}
|
||||
}
|
||||
return Promise.reject(error);
|
||||
}
|
||||
);
|
@ -0,0 +1,12 @@
|
||||
import Index from "../views/AmsIndex.vue";
|
||||
// import IndexEdit from "../views/AmsIndexEdit.vue";
|
||||
export const routes = [
|
||||
{ path: "/", redirect: "/Index" },
|
||||
{
|
||||
path: "/Index",
|
||||
component: Index,
|
||||
children: [],
|
||||
},
|
||||
// { path: "/IndexEdit", name: "IndexEdit", component: IndexEdit },
|
||||
{ path: "*", redirect: "/" },
|
||||
];
|
@ -0,0 +1,291 @@
|
||||
<template>
|
||||
<div class="main">
|
||||
<div class="SearchBox">
|
||||
<el-input
|
||||
size="small"
|
||||
placeholder="船东提单号"
|
||||
v-model="search_data.input1"
|
||||
>
|
||||
</el-input>
|
||||
<el-input
|
||||
size="small"
|
||||
placeholder="货代提单号"
|
||||
v-model="search_data.input2"
|
||||
>
|
||||
</el-input>
|
||||
<el-select size="small" placeholder="船公司" v-model="search_data.input3">
|
||||
<el-option
|
||||
v-for="item in options"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
<el-select size="small" placeholder="起运港" v-model="search_data.input4">
|
||||
<el-option
|
||||
v-for="item in options"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
<el-select size="small" placeholder="卸货港" v-model="search_data.input5">
|
||||
<el-option
|
||||
v-for="item in options"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
<el-date-picker
|
||||
type="datetime"
|
||||
size="small"
|
||||
placeholder="开船日期"
|
||||
v-model="search_data.input6"
|
||||
>
|
||||
</el-date-picker>
|
||||
<el-date-picker
|
||||
type="datetime"
|
||||
size="small"
|
||||
placeholder="开船日期"
|
||||
v-model="search_data.input7"
|
||||
>
|
||||
</el-date-picker>
|
||||
<div class="SearchButton">
|
||||
<el-button size="small" type="primary">搜索</el-button>
|
||||
<el-button size="small" type="primary">重置</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="table">
|
||||
<div class="header">
|
||||
<div
|
||||
v-for="item in header_data"
|
||||
:key="item.name"
|
||||
class="column"
|
||||
:style="{ width: item.width }"
|
||||
>
|
||||
{{ item.name }}
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
v-for="(item, index) in tableData"
|
||||
:key="index"
|
||||
v-loading="item.loading"
|
||||
>
|
||||
<div class="line" v-for="(item2, index2) in item.data" :key="index2">
|
||||
<div
|
||||
class="column"
|
||||
v-for="(item3, key3, index3) in item2"
|
||||
:style="{ width: header_data[index3].width }"
|
||||
:key="`colunm-${index}-${index3}`"
|
||||
>
|
||||
{{ item3 }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
export default {
|
||||
name: "AmsIndex",
|
||||
data() {
|
||||
return {
|
||||
loading: false,
|
||||
search_data: {},
|
||||
header_data: [
|
||||
{
|
||||
name: "操作",
|
||||
width: "10%",
|
||||
},
|
||||
{
|
||||
name: "船公司",
|
||||
width: "10%",
|
||||
},
|
||||
{
|
||||
name: "船名/航次",
|
||||
width: "20%",
|
||||
},
|
||||
{
|
||||
name: "起运港/中转港/目的港",
|
||||
width: "20%",
|
||||
},
|
||||
{
|
||||
name: "ETD",
|
||||
width: "10%",
|
||||
},
|
||||
{
|
||||
name: "ETA",
|
||||
width: "10%",
|
||||
},
|
||||
{
|
||||
name: "航程",
|
||||
width: "10%",
|
||||
},
|
||||
{
|
||||
name: "箱型",
|
||||
width: "10%",
|
||||
},
|
||||
],
|
||||
// ---------------------------------------------
|
||||
options: [
|
||||
{
|
||||
value: "选项1",
|
||||
label: "黄金糕",
|
||||
},
|
||||
{
|
||||
value: "选项2",
|
||||
label: "双皮奶",
|
||||
},
|
||||
{
|
||||
value: "选项3",
|
||||
label: "蚵仔煎",
|
||||
},
|
||||
{
|
||||
value: "选项4",
|
||||
label: "龙须面",
|
||||
},
|
||||
{
|
||||
value: "选项5",
|
||||
label: "北京烤鸭",
|
||||
},
|
||||
],
|
||||
tableData: [
|
||||
{
|
||||
loading: true,
|
||||
data: [
|
||||
{
|
||||
date: "2016-05-03",
|
||||
name: "王小虎",
|
||||
address: "上海市普陀区",
|
||||
date1: "2016-05-03",
|
||||
name1: "王小虎",
|
||||
address1: "上海市普陀区",
|
||||
date2: "2016-05-03",
|
||||
name2: "王小虎",
|
||||
},
|
||||
{
|
||||
date: "2016-05-03",
|
||||
name: "王小虎",
|
||||
address: "上海市普陀区",
|
||||
date1: "2016-05-03",
|
||||
name1: "王小虎",
|
||||
address1: "上海市普陀区",
|
||||
date2: "2016-05-03",
|
||||
name2: "王小虎",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
loading: true,
|
||||
data: [
|
||||
{
|
||||
date: "2016-05-03",
|
||||
name: "王小虎",
|
||||
address: "上海市普陀区",
|
||||
date1: "2016-05-03",
|
||||
name1: "王小虎",
|
||||
address1: "上海市普陀区",
|
||||
date2: "2016-05-03",
|
||||
name2: "王小虎",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
loading: true,
|
||||
data: [
|
||||
{
|
||||
date: "2016-05-03",
|
||||
name: "王小虎",
|
||||
address: "上海市普陀区",
|
||||
date1: "2016-05-03",
|
||||
name1: "王小虎",
|
||||
address1: "上海市普陀区",
|
||||
date2: "2016-05-03",
|
||||
name2: "王小虎",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
loading: true,
|
||||
data: [
|
||||
{
|
||||
date: "2016-05-03",
|
||||
name: "王小虎",
|
||||
address: "上海市普陀区",
|
||||
date1: "2016-05-03",
|
||||
name1: "王小虎",
|
||||
address1: "上海市普陀区",
|
||||
date2: "2016-05-03",
|
||||
name2: "王小虎",
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
let num = 0;
|
||||
let a = setInterval(() => {
|
||||
this.tableData[num].loading = false;
|
||||
num++;
|
||||
if (num == 4) {
|
||||
clearInterval(a);
|
||||
}
|
||||
}, 1000);
|
||||
},
|
||||
methods: {},
|
||||
};
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.main {
|
||||
width: 95%;
|
||||
margin: 0 2.5%;
|
||||
.table {
|
||||
margin-top: 100px;
|
||||
border: 1px solid #ebeef5;
|
||||
.column {
|
||||
padding: 12px 10px;
|
||||
box-sizing: border-box;
|
||||
text-align: center;
|
||||
}
|
||||
.header {
|
||||
display: flex;
|
||||
border-bottom: 1px solid #ebeef5;
|
||||
.column {
|
||||
background: #42b0d5;
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
.line {
|
||||
display: flex;
|
||||
border-bottom: 1px solid #ebeef5;
|
||||
.column {
|
||||
border-right: 1px solid #ebeef5;
|
||||
}
|
||||
}
|
||||
}
|
||||
.title {
|
||||
margin: 1rem 0;
|
||||
}
|
||||
.SearchBox {
|
||||
display: flex;
|
||||
margin-top: 1rem;
|
||||
> * {
|
||||
margin-right: 10px;
|
||||
}
|
||||
.SearchButton {
|
||||
display: ruby;
|
||||
}
|
||||
.el-input {
|
||||
width: auto !important;
|
||||
}
|
||||
}
|
||||
.el-table {
|
||||
margin-top: 1rem;
|
||||
}
|
||||
}
|
||||
</style>
|
@ -0,0 +1,5 @@
|
||||
const { defineConfig } = require("@vue/cli-service");
|
||||
module.exports = defineConfig({
|
||||
transpileDependencies: true,
|
||||
publicPath: "",
|
||||
});
|
Loading…
Reference in New Issue