master
zhangtonghai 3 years ago
parent 6a524e2468
commit af4828391b

23
.gitignore vendored

@ -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

@ -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

9414
package-lock.json generated

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…
Cancel
Save