铭品ops迁移

This commit is contained in:
2025-05-09 17:08:09 +08:00
parent d7f4496cb4
commit e24ad828fb
265 changed files with 191082 additions and 123 deletions

6
.env Normal file
View File

@@ -0,0 +1,6 @@
ENV = 'test'
VITE_APP_API_VERSION = 'v1
VITE_APP_API_BASEURL = https://login.ops.f2b211.com/api/
VITE_APP_SSO_BASEURL = https://dev.uc.f2b211.com/uc/
VITE_APP_SSO_LOGINURL = http://dev.uc.f2b211.com/index.php/uc/user/login.html
VITE_APP_SSO_APPID = 27413993593241600

8
.env.demo Normal file
View File

@@ -0,0 +1,8 @@
ENV = 'production'
VITE_APP_NODE_ENV=production
VITE_APP_API_VERSION = v1
VITE_APP_API_BASEURL = https://proxy.ops.f2b211.com/api/
# VITE_APP_API_BASEURL = https://api.mingpin.f2b211.com/api/
VITE_APP_SSO_BASEURL = http://saas.uc.f2b211.com
VITE_APP_SSO_LOGINURL = http://saas.uc.f2b211.com/uc/user/login.html
VITE_APP_SSO_APPID = 27413993593241600

24
.env.development Normal file
View File

@@ -0,0 +1,24 @@
# ENV = 'production'
# VITE_APP_APP_NODE_ENV=development
# VITE_APP_API_VERSION = v1
# VITE_APP_API_BASEURL =https://dev.proxy.ops.f2b211.com/api/
# VITE_APP_SSO_BASEURL = https://dev.uc.f2b211.com/uc/
# VITE_APP_SSO_LOGINURL = http://dev.uc.f2b211.com/index.php/uc/user/login.html
# VITE_APP_SSO_APPID = 27413993593241600
VITE_APP_APP_NODE_ENV=development
VITE_APP_API_VERSION = v1
VITE_APP_API_BASEURL = https://login.ops.f2b211.com/api/ #https://dev.proxy.ops.f2b211.com/api/ # https://login.ops.f2b211.com/api/
VITE_APP_SSO_BASEURL = https://dev.uc.f2b211.com/uc/
VITE_APP_SSO_LOGINURL = https://dev.uc.f2b211.com/index.php/uc/user/login.html
VITE_APP_SSO_APPID = 27413993593241600
# ENV = 'production'
# VITE_APP_NODE_ENV=production
# VITE_APP_API_VERSION = v1
# VITE_APP_API_BASEURL = https://proxy.ops.f2b211.com/api/
# # VITE_APP_API_BASEURL = https://api.mingpin.f2b211.com/api/
# VITE_APP_SSO_BASEURL = http://saas.uc.f2b211.com
# VITE_APP_SSO_LOGINURL = http://saas.uc.f2b211.com/uc/user/login.html
# VITE_APP_SSO_APPID = 27413993593241600

15
.env.production Normal file
View File

@@ -0,0 +1,15 @@
ENV = 'production'
VITE_APP_NODE_ENV=production
VITE_APP_API_VERSION = v1
VITE_APP_API_BASEURL = https://proxy.ops.f2b211.com/api/
# VITE_APP_API_BASEURL = https://api.mingpin.f2b211.com/api/
VITE_APP_SSO_BASEURL = http://saas.uc.f2b211.com
VITE_APP_SSO_LOGINURL = http://saas.uc.f2b211.com/uc/user/login.html
VITE_APP_SSO_APPID = 27413993593241600
# VITE_APP_APP_NODE_ENV=development
# VITE_APP_API_VERSION = v1
# VITE_APP_API_BASEURL =https://login.ops.f2b211.com/api/ #https://dev.proxy.ops.f2b211.com/api/ #https://login.ops.f2b211.com/api/
# VITE_APP_SSO_BASEURL = https://dev.uc.f2b211.com/uc/
# VITE_APP_SSO_LOGINURL = https://dev.uc.f2b211.com/index.php/uc/user/login.html
# VITE_APP_SSO_APPID = 27413993593241600

6
.env.test Normal file
View File

@@ -0,0 +1,6 @@
VITE_APP_APP_NODE_ENV=development
VITE_APP_API_VERSION = v1
VITE_APP_API_BASEURL = https://login.ops.f2b211.com/api/ #https://dev.proxy.ops.f2b211.com/api/ # https://login.ops.f2b211.com/api/
VITE_APP_SSO_BASEURL = https://dev.uc.f2b211.com/uc/
VITE_APP_SSO_LOGINURL = https://dev.uc.f2b211.com/index.php/uc/user/login.html
VITE_APP_SSO_APPID = 27413993593241600

136
.gitignore vendored
View File

@@ -1,132 +1,26 @@
# ---> Node
# Logs # Logs
logs logs
*.log *.log
npm-debug.log* npm-debug.log*
yarn-debug.log* yarn-debug.log*
yarn-error.log* yarn-error.log*
pnpm-debug.log*
lerna-debug.log* lerna-debug.log*
.pnpm-debug.log*
# Diagnostic reports (https://nodejs.org/api/report.html) node_modules
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
*.lcov
# nyc test coverage
.nyc_output
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# Snowpack dependency directory (https://snowpack.dev/)
web_modules/
# TypeScript cache
*.tsbuildinfo
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Optional stylelint cache
.stylelintcache
# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variable files
.env
.env.development.local
.env.test.local
.env.production.local
.env.local
# parcel-bundler cache (https://parceljs.org/)
.cache
.parcel-cache
# Next.js build output
.next
out
# Nuxt.js build / generate output
.nuxt
dist dist
*.zip
# Gatsby files dist-ssr
.cache/ *.local
# Comment in the public line in if your project uses Gatsby and not Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public
# vuepress build output
.vuepress/dist
# vuepress v2.x temp and cache directory
.temp
.cache
# Docusaurus cache and generated files
.docusaurus
# Serverless directories
.serverless/
# FuseBox cache
.fusebox/
# DynamoDB Local files
.dynamodb/
# TernJS port file
.tern-port
# Stores VSCode versions used for testing VSCode extensions
.vscode-test
# yarn v2
.yarn/cache
.yarn/unplugged
.yarn/build-state.yml
.yarn/install-state.gz
.pnp.*
# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?

3
.vscode/extensions.json vendored Normal file
View File

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

View File

@@ -1,3 +1,7 @@
# ops_admin_vite # Vue 3 + Vite
铭品ops 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)

69
index.html Normal file
View File

@@ -0,0 +1,69 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/src/assets/logo.png" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>OPS-首页</title>
</head>
<body>
<div id="app"></div>
<script type="module" src="/src/main.js"></script>
<script>
let companyId = localStorage.getItem('companyId')
if (companyId) {
function offline ()
{ //#铭品测试环境
// http://login.ops.f2b211.com/api/
//#铭品正式环境
// https://api.mingpin.f2b211.com/api/v1/Public/get/offline
//#正式代理
const pathurl = `https://proxy.ops.f2b211.com/api/v1/Public/get/offline?c=${companyId}`
//#测试代理
// const pathurl = `https://dev.proxy.ops.f2b211.com/api/v1/Public/get/offline?c=${companyId}`
// const pathrul = `https://login.ops.f2b211.com/api/v1/Public/get/offline?c=${companyId}`
fetch(pathurl,
{
method: 'GET',
credentials: 'include',
keepalive: true,
headers: {
Authorization: window.localStorage.getItem('userToken')
}
})
}
var ua = window.navigator.userAgent.toLowerCase();
var rkn = /\b(opera|chrome|webkit|safari|msie|firefox|gecko|qqbrowser|edg)\b(\s*(version|rv:|\/)*(\d+(\.\d+)*))?/g;
window.addEventListener('mouseover', function ()
{
window.removeEventListener('beforeunload', offline, true)
ua.replace(rkn, function (match, type, all, rv, version)
{
if (type == 'chrome' && parseInt(version) <= 86) {
window.removeEventListener('unload', offline, true)
}
})
})
window.addEventListener('mouseout', function ()
{
window.addEventListener('beforeunload', offline, true);
ua.replace(rkn, function (match, type, all, rv, version)
{
if (type == 'qqbrowser' || type == 'edg' || (type == 'chrome' && parseInt(version) <= 86)) {
window.addEventListener('unload', offline, true);
}
})
})
if (window.location.pathnam !== '/login') {
window.removeEventListener('beforeunload', offline)
window.removeEventListener('unload', offline)
}
}
</script>
</body>
</html>

15629
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

65
package.json Normal file
View File

@@ -0,0 +1,65 @@
{
"name": "orico_ops_admin",
"private": true,
"version": "0.0.1",
"scripts": {
"dev": "vite",
"build": "vite build",
"preview": "vite preview",
"build:test": "vite build --mode test",
"build:pro": "vite build --mode demo",
"lint": "vite lint"
},
"dependencies": {
"@vee-validate/i18n": "^4.4.7",
"@vee-validate/rules": "^4.4.7",
"axios": "^0.21.4",
"axios-cache-adapter": "^2.7.3",
"babel-plugin-dynamic-import-node": "^2.3.3",
"babel-plugin-transform-remove-strict-mode": "0.0.2",
"clipboard": "^2.0.11",
"core-js": "^3.17.3",
"decimal.js": "^10.3.1",
"echarts": "^5.2.2",
"element-plus": "^1.1.0-beta.24",
"file-saver": "^2.0.5",
"font-awesome": "^4.7.0",
"html2canvas": "^1.3.2",
"js-base64": "^3.7.2",
"jspdf": "^2.4.0",
"path": "^0.12.7",
"print-js": "^1.6.0",
"process": "^0.11.10",
"unplugin-vue-components": "^0.15.3",
"vee-validate": "^4.4.11",
"vue": "^3.2.20",
"vue-router": "^4.2.1",
"vuex": "^4.0.0-0",
"vxe-table": "^4.2.8",
"xe-utils": "^3.5.4",
"xlsx": "^0.16.9",
"yup": "^0.32.11"
},
"devDependencies": {
"@types/node": "^18.7.23",
"@vitejs/plugin-vue": "^3.1.0",
"@vue/cli-plugin-babel": "~4.5.0",
"@vue/cli-plugin-eslint": "~4.5.0",
"@vue/cli-plugin-router": "~4.5.0",
"@vue/cli-plugin-vuex": "~4.5.0",
"@vue/cli-service": "~4.5.0",
"@vue/compiler-sfc": "^3.2.11",
"babel-eslint": "^10.1.0",
"babel-plugin-import": "^1.13.3",
"eslint": "^6.7.2",
"eslint-plugin-vue": "^7.0.0",
"js-cookie": "^3.0.1",
"node-sass": "^4.14.1",
"print-js": "^1.6.0",
"sass": "^1.55.0",
"sass-loader": "^8.0.2",
"script-loader": "^0.7.2",
"vite": "^3.1.0",
"vue-loader-v16": "^16.0.0-beta.5.4"
}
}

1
public/vite.svg Normal file
View File

@@ -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="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

70
src/App.vue Normal file
View File

@@ -0,0 +1,70 @@
<template>
<router-view v-if="isRouterAlive" />
</template>
<style lang="scss">
body {
overflow: hidden;
}
#app {
font-family: Avenir, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
color: #2c3e50;
}
#nav {
padding: 30px;
a {
font-weight: bold;
color: #2c3e50;
&.router-link-exact-active {
color: #42b983;
}
}
}
</style>
<script>
export default {
name: 'App',
provide() {
return {
reload: this.reload,
};
},
data() {
return {
isRouterAlive: true,
};
},
methods: {
reload() {
this.isRouterAlive = false;
this.$nextTick(function () {
this.isRouterAlive = true;
});
},
},
created() {
// 解决页面刷新后vuex数据不失效问题
// sessionStorage中store存在重写state
if (localStorage.getItem('store')) {
this.$store.replaceState(
Object.assign(
{},
this.$store.state,
JSON.parse(localStorage.getItem('store'))
)
);
// localStorage.removeItem('store')
}
// 在页面刷新时将vuex里的信息保存到sessionStorage里
window.addEventListener('beforeunload', () => {
localStorage.setItem('store', JSON.stringify(this.$store.state));
});
},
mounted: function () {},
};
</script>

BIN
src/assets/404.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

BIN
src/assets/check@3x.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 742 B

BIN
src/assets/delete.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 223 B

BIN
src/assets/down.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

BIN
src/assets/down1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 504 B

BIN
src/assets/dw.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 406 B

BIN
src/assets/edit.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 227 B

BIN
src/assets/equal.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

BIN
src/assets/equal1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 323 B

BIN
src/assets/error.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

BIN
src/assets/flow@3x.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 600 B

539
src/assets/font/demo.css Normal file
View File

@@ -0,0 +1,539 @@
/* Logo 字体 */
@font-face {
font-family: "iconfont logo";
src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834');
src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'),
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'),
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'),
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg');
}
.logo {
font-family: "iconfont logo";
font-size: 160px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
/* tabs */
.nav-tabs {
position: relative;
}
.nav-tabs .nav-more {
position: absolute;
right: 0;
bottom: 0;
height: 42px;
line-height: 42px;
color: #666;
}
#tabs {
border-bottom: 1px solid #eee;
}
#tabs li {
cursor: pointer;
width: 100px;
height: 40px;
line-height: 40px;
text-align: center;
font-size: 16px;
border-bottom: 2px solid transparent;
position: relative;
z-index: 1;
margin-bottom: -1px;
color: #666;
}
#tabs .active {
border-bottom-color: #f00;
color: #222;
}
.tab-container .content {
display: none;
}
/* 页面布局 */
.main {
padding: 30px 100px;
width: 960px;
margin: 0 auto;
}
.main .el-scrollbar {
color: #333;
text-align: left;
margin-bottom: 30px;
line-height: 1;
height: 110px;
margin-top: -50px;
overflow: hidden;
*zoom: 1;
}
.main .logo a {
font-size: 160px;
color: #333;
}
.helps {
margin-top: 40px;
}
.helps pre {
padding: 20px;
margin: 10px 0;
border: solid 1px #e7e1cd;
background-color: #fffdef;
overflow: auto;
}
.icon_lists {
width: 100% !important;
overflow: hidden;
*zoom: 1;
}
.icon_lists li {
width: 100px;
margin-bottom: 10px;
margin-right: 20px;
text-align: center;
list-style: none !important;
cursor: default;
}
.icon_lists li .code-name {
line-height: 1.2;
}
.icon_lists .icon {
display: block;
height: 100px;
line-height: 100px;
font-size: 42px;
margin: 10px auto;
color: #333;
-webkit-transition: font-size 0.25s linear, width 0.25s linear;
-moz-transition: font-size 0.25s linear, width 0.25s linear;
transition: font-size 0.25s linear, width 0.25s linear;
}
.icon_lists .icon:hover {
font-size: 100px;
}
.icon_lists .svg-icon {
/* 通过设置 font-size 来改变图标大小 */
width: 1em;
/* 图标和文字相邻时,垂直对齐 */
vertical-align: -0.15em;
/* 通过设置 color 来改变 SVG 的颜色/fill */
fill: currentColor;
/* path 和 stroke 溢出 viewBox 部分在 IE 下会显示
normalize.css 中也包含这行 */
overflow: hidden;
}
.icon_lists li .name,
.icon_lists li .code-name {
color: #666;
}
/* markdown 样式 */
.markdown {
color: #666;
font-size: 14px;
line-height: 1.8;
}
.highlight {
line-height: 1.5;
}
.markdown img {
vertical-align: middle;
max-width: 100%;
}
.markdown h1 {
color: #404040;
font-weight: 500;
line-height: 40px;
margin-bottom: 24px;
}
.markdown h2,
.markdown h3,
.markdown h4,
.markdown h5,
.markdown h6 {
color: #404040;
margin: 1.6em 0 0.6em 0;
font-weight: 500;
clear: both;
}
.markdown h1 {
font-size: 28px;
}
.markdown h2 {
font-size: 22px;
}
.markdown h3 {
font-size: 16px;
}
.markdown h4 {
font-size: 14px;
}
.markdown h5 {
font-size: 12px;
}
.markdown h6 {
font-size: 12px;
}
.markdown hr {
height: 1px;
border: 0;
background: #e9e9e9;
margin: 16px 0;
clear: both;
}
.markdown p {
margin: 1em 0;
}
.markdown>p,
.markdown>blockquote,
.markdown>.highlight,
.markdown>ol,
.markdown>ul {
width: 80%;
}
.markdown ul>li {
list-style: circle;
}
.markdown>ul li,
.markdown blockquote ul>li {
margin-left: 20px;
padding-left: 4px;
}
.markdown>ul li p,
.markdown>ol li p {
margin: 0.6em 0;
}
.markdown ol>li {
list-style: decimal;
}
.markdown>ol li,
.markdown blockquote ol>li {
margin-left: 20px;
padding-left: 4px;
}
.markdown code {
margin: 0 3px;
padding: 0 5px;
background: #eee;
border-radius: 3px;
}
.markdown strong,
.markdown b {
font-weight: 600;
}
.markdown>table {
border-collapse: collapse;
border-spacing: 0px;
empty-cells: show;
border: 1px solid #e9e9e9;
width: 95%;
margin-bottom: 24px;
}
.markdown>table th {
white-space: nowrap;
color: #333;
font-weight: 600;
}
.markdown>table th,
.markdown>table td {
border: 1px solid #e9e9e9;
padding: 8px 16px;
text-align: left;
}
.markdown>table th {
background: #F7F7F7;
}
.markdown blockquote {
font-size: 90%;
color: #999;
border-left: 4px solid #e9e9e9;
padding-left: 0.8em;
margin: 1em 0;
}
.markdown blockquote p {
margin: 0;
}
.markdown .anchor {
opacity: 0;
transition: opacity 0.3s ease;
margin-left: 8px;
}
.markdown .waiting {
color: #ccc;
}
.markdown h1:hover .anchor,
.markdown h2:hover .anchor,
.markdown h3:hover .anchor,
.markdown h4:hover .anchor,
.markdown h5:hover .anchor,
.markdown h6:hover .anchor {
opacity: 1;
display: inline-block;
}
.markdown>br,
.markdown>p>br {
clear: both;
}
.hljs {
display: block;
background: white;
padding: 0.5em;
color: #333333;
overflow-x: auto;
}
.hljs-comment,
.hljs-meta {
color: #969896;
}
.hljs-string,
.hljs-variable,
.hljs-template-variable,
.hljs-strong,
.hljs-emphasis,
.hljs-quote {
color: #df5000;
}
.hljs-keyword,
.hljs-selector-tag,
.hljs-type {
color: #a71d5d;
}
.hljs-literal,
.hljs-symbol,
.hljs-bullet,
.hljs-attribute {
color: #0086b3;
}
.hljs-section,
.hljs-name {
color: #63a35c;
}
.hljs-tag {
color: #333333;
}
.hljs-title,
.hljs-attr,
.hljs-selector-id,
.hljs-selector-class,
.hljs-selector-attr,
.hljs-selector-pseudo {
color: #795da3;
}
.hljs-addition {
color: #55a532;
background-color: #eaffea;
}
.hljs-deletion {
color: #bd2c00;
background-color: #ffecec;
}
.hljs-link {
text-decoration: underline;
}
/* 代码高亮 */
/* PrismJS 1.15.0
https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */
/**
* prism.js default theme for JavaScript, CSS and HTML
* Based on dabblet (http://dabblet.com)
* @author Lea Verou
*/
code[class*="language-"],
pre[class*="language-"] {
color: black;
background: none;
text-shadow: 0 1px white;
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
text-align: left;
white-space: pre;
word-spacing: normal;
word-break: normal;
word-wrap: normal;
line-height: 1.5;
-moz-tab-size: 4;
-o-tab-size: 4;
tab-size: 4;
-webkit-hyphens: none;
-moz-hyphens: none;
-ms-hyphens: none;
hyphens: none;
}
pre[class*="language-"]::-moz-selection,
pre[class*="language-"] ::-moz-selection,
code[class*="language-"]::-moz-selection,
code[class*="language-"] ::-moz-selection {
text-shadow: none;
background: #b3d4fc;
}
pre[class*="language-"]::selection,
pre[class*="language-"] ::selection,
code[class*="language-"]::selection,
code[class*="language-"] ::selection {
text-shadow: none;
background: #b3d4fc;
}
@media print {
code[class*="language-"],
pre[class*="language-"] {
text-shadow: none;
}
}
/* Code blocks */
pre[class*="language-"] {
padding: 1em;
margin: .5em 0;
overflow: auto;
}
:not(pre)>code[class*="language-"],
pre[class*="language-"] {
background: #f5f2f0;
}
/* Inline code */
:not(pre)>code[class*="language-"] {
padding: .1em;
border-radius: .3em;
white-space: normal;
}
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
color: slategray;
}
.token.punctuation {
color: #999;
}
.namespace {
opacity: .7;
}
.token.property,
.token.tag,
.token.boolean,
.token.number,
.token.constant,
.token.symbol,
.token.deleted {
color: #905;
}
.token.selector,
.token.attr-name,
.token.string,
.token.char,
.token.builtin,
.token.inserted {
color: #690;
}
.token.operator,
.token.entity,
.token.url,
.language-css .token.string,
.style .token.string {
color: #9a6e3a;
background: hsla(0, 0%, 100%, .5);
}
.token.atrule,
.token.attr-value,
.token.keyword {
color: #07a;
}
.token.function,
.token.class-name {
color: #DD4A68;
}
.token.regex,
.token.important,
.token.variable {
color: #e90;
}
.token.important,
.token.bold {
font-weight: bold;
}
.token.italic {
font-style: italic;
}
.token.entity {
cursor: help;
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,225 @@
@font-face {
font-family: 'iconfont'; /* Project id 2863944 */
src: url('iconfont.woff2?t=1668760463258') format('woff2'), url('iconfont.woff?t=1668760463258') format('woff'),
url('iconfont.ttf?t=1668760463258') format('truetype');
}
.iconfont {
font-family: 'iconfont' !important;
font-size: 16px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icon-tianjia1:before {
content: '\e65e';
}
.icon-fuzhi:before {
content: '\e65d';
}
.icon-guanbi1:before {
content: '\e65b';
}
.icon-bianji1:before {
content: '\e65a';
margin-right: 4px;
font-size: 14px;
color: #c0c4cc;
font-weight: 100;
}
.icon-shuiwuguanli:before {
content: '\e649';
}
.icon-chengbenguanli:before {
content: '\e645';
}
.icon-yingshoukuanguanli:before {
content: '\e642';
}
.icon-zijinguanli:before {
content: '\e643';
}
.icon-feiyongguanli:before {
content: '\e644';
}
.icon-chunaguanli:before {
content: '\e646';
}
.icon-zichanguanli:before {
content: '\e647';
}
.icon-zongzhang:before {
content: '\e648';
}
.icon-yingfukuanguanli:before {
content: '\e64a';
}
.icon-caiwu:before {
content: '\e641';
}
.icon-daochu1:before {
content: '\e63f';
}
.icon-renminbi:before {
content: '\e63b';
}
.icon-xiazaiweikong:before {
content: '\e63a';
}
.icon-shanchu:before {
content: '\e639';
}
.icon-daochu:before {
content: '\e636';
}
.icon-xiadan:before {
content: '\e637';
}
.icon-piliang:before {
content: '\e638';
}
.icon-zhexiantu:before {
content: '\e635';
}
.icon-gengduo:before {
content: '\e631';
}
.icon-chenggong:before {
content: '\e630';
}
.icon-shijing:before {
content: '\e62f';
}
.icon-xinxi:before {
content: '\e62e';
}
.icon-renwuweikong:before {
content: '\e62d';
}
.icon-liulanjiluweikong:before {
content: '\e62c';
}
.icon-qingchu:before {
content: '\e62b';
}
.icon-zuobian:before {
content: '\e629';
}
.icon-youbian:before {
content: '\e62a';
}
.icon-xuanzhong:before {
content: '\e628';
}
.icon-shuangjiantoushouqi-shang:before {
content: '\e626';
}
.icon-shuangjiantouzhankai-xia:before {
content: '\e627';
}
.icon-shuaxin:before {
content: '\e625';
}
.icon-tianjia:before {
content: '\e624';
}
.icon-baocun:before {
content: '\e623';
}
.icon-you-zhankaigengduo:before {
content: '\e61d';
}
.icon-zuo-zhankaigengduo:before {
content: '\e61e';
}
.icon-xia-zhankai:before {
content: '\e61f';
}
.icon-guanbi:before {
content: '\e620';
}
.icon-baobiao:before {
content: '\e612';
}
.icon-caigou:before {
content: '\e613';
}
.icon-cangku:before {
content: '\e614';
}
.icon-shengchan:before {
content: '\e615';
}
.icon-xiaoshou:before {
content: '\e616';
}
.icon-tiaoma:before {
content: '\e617';
}
.icon-wuliao:before {
content: '\e618';
}
.icon-weiwai:before {
content: '\e619';
}
.icon-gongyingshang:before {
content: '\e61a';
}
.icon-shezhi:before {
content: '\e61b';
}
.icon-a-211:before {
content: '\e61c';
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,373 @@
{
"id": "2863944",
"name": "OPS",
"font_family": "iconfont",
"css_prefix_text": "icon-",
"description": "",
"glyphs": [
{
"icon_id": "32937331",
"name": "添加",
"font_class": "tianjia1",
"unicode": "e65e",
"unicode_decimal": 58974
},
{
"icon_id": "32936674",
"name": "复制",
"font_class": "fuzhi",
"unicode": "e65d",
"unicode_decimal": 58973
},
{
"icon_id": "31372064",
"name": "关闭",
"font_class": "guanbi1",
"unicode": "e65b",
"unicode_decimal": 58971
},
{
"icon_id": "31254227",
"name": "编辑",
"font_class": "bianji1",
"unicode": "e65a",
"unicode_decimal": 58970
},
{
"icon_id": "28767114",
"name": "税务管理",
"font_class": "shuiwuguanli",
"unicode": "e649",
"unicode_decimal": 58953
},
{
"icon_id": "28758569",
"name": "成本管理",
"font_class": "chengbenguanli",
"unicode": "e645",
"unicode_decimal": 58949
},
{
"icon_id": "28756346",
"name": "应收款管理",
"font_class": "yingshoukuanguanli",
"unicode": "e642",
"unicode_decimal": 58946
},
{
"icon_id": "28756347",
"name": "资金管理",
"font_class": "zijinguanli",
"unicode": "e643",
"unicode_decimal": 58947
},
{
"icon_id": "28756349",
"name": "费用管理",
"font_class": "feiyongguanli",
"unicode": "e644",
"unicode_decimal": 58948
},
{
"icon_id": "28756351",
"name": "出纳管理",
"font_class": "chunaguanli",
"unicode": "e646",
"unicode_decimal": 58950
},
{
"icon_id": "28756352",
"name": "资产管理",
"font_class": "zichanguanli",
"unicode": "e647",
"unicode_decimal": 58951
},
{
"icon_id": "28756353",
"name": "总账",
"font_class": "zongzhang",
"unicode": "e648",
"unicode_decimal": 58952
},
{
"icon_id": "28756355",
"name": "应付款管理",
"font_class": "yingfukuanguanli",
"unicode": "e64a",
"unicode_decimal": 58954
},
{
"icon_id": "28442176",
"name": "财务",
"font_class": "caiwu",
"unicode": "e641",
"unicode_decimal": 58945
},
{
"icon_id": "28373960",
"name": "导出",
"font_class": "daochu1",
"unicode": "e63f",
"unicode_decimal": 58943
},
{
"icon_id": "28043356",
"name": "人民币",
"font_class": "renminbi",
"unicode": "e63b",
"unicode_decimal": 58939
},
{
"icon_id": "27909200",
"name": "下载为空",
"font_class": "xiazaiweikong",
"unicode": "e63a",
"unicode_decimal": 58938
},
{
"icon_id": "26973680",
"name": "删除",
"font_class": "shanchu",
"unicode": "e639",
"unicode_decimal": 58937
},
{
"icon_id": "26955368",
"name": "导出",
"font_class": "daochu",
"unicode": "e636",
"unicode_decimal": 58934
},
{
"icon_id": "26955369",
"name": "下单",
"font_class": "xiadan",
"unicode": "e637",
"unicode_decimal": 58935
},
{
"icon_id": "26955370",
"name": "批量",
"font_class": "piliang",
"unicode": "e638",
"unicode_decimal": 58936
},
{
"icon_id": "26954331",
"name": "折线图",
"font_class": "zhexiantu",
"unicode": "e635",
"unicode_decimal": 58933
},
{
"icon_id": "25254824",
"name": "更多",
"font_class": "gengduo",
"unicode": "e631",
"unicode_decimal": 58929
},
{
"icon_id": "25181240",
"name": "成功",
"font_class": "chenggong",
"unicode": "e630",
"unicode_decimal": 58928
},
{
"icon_id": "25181198",
"name": "示警",
"font_class": "shijing",
"unicode": "e62f",
"unicode_decimal": 58927
},
{
"icon_id": "25181181",
"name": "信息",
"font_class": "xinxi",
"unicode": "e62e",
"unicode_decimal": 58926
},
{
"icon_id": "25176785",
"name": "任务为空",
"font_class": "renwuweikong",
"unicode": "e62d",
"unicode_decimal": 58925
},
{
"icon_id": "25176783",
"name": "浏览记录为空",
"font_class": "liulanjiluweikong",
"unicode": "e62c",
"unicode_decimal": 58924
},
{
"icon_id": "25162308",
"name": "清除",
"font_class": "qingchu",
"unicode": "e62b",
"unicode_decimal": 58923
},
{
"icon_id": "25148507",
"name": "左边",
"font_class": "zuobian",
"unicode": "e629",
"unicode_decimal": 58921
},
{
"icon_id": "25148508",
"name": "右边",
"font_class": "youbian",
"unicode": "e62a",
"unicode_decimal": 58922
},
{
"icon_id": "25100884",
"name": "选中",
"font_class": "xuanzhong",
"unicode": "e628",
"unicode_decimal": 58920
},
{
"icon_id": "25097364",
"name": "双箭头收起-上",
"font_class": "shuangjiantoushouqi-shang",
"unicode": "e626",
"unicode_decimal": 58918
},
{
"icon_id": "25097365",
"name": "双箭头展开-下",
"font_class": "shuangjiantouzhankai-xia",
"unicode": "e627",
"unicode_decimal": 58919
},
{
"icon_id": "25097087",
"name": "刷新",
"font_class": "shuaxin",
"unicode": "e625",
"unicode_decimal": 58917
},
{
"icon_id": "25097062",
"name": "添加",
"font_class": "tianjia",
"unicode": "e624",
"unicode_decimal": 58916
},
{
"icon_id": "25097053",
"name": "保存",
"font_class": "baocun",
"unicode": "e623",
"unicode_decimal": 58915
},
{
"icon_id": "24910721",
"name": "右-展开更多",
"font_class": "you-zhankaigengduo",
"unicode": "e61d",
"unicode_decimal": 58909
},
{
"icon_id": "24910731",
"name": "左-展开更多",
"font_class": "zuo-zhankaigengduo",
"unicode": "e61e",
"unicode_decimal": 58910
},
{
"icon_id": "24910740",
"name": "下-展开",
"font_class": "xia-zhankai",
"unicode": "e61f",
"unicode_decimal": 58911
},
{
"icon_id": "24910742",
"name": "关闭",
"font_class": "guanbi",
"unicode": "e620",
"unicode_decimal": 58912
},
{
"icon_id": "24903722",
"name": "报表",
"font_class": "baobiao",
"unicode": "e612",
"unicode_decimal": 58898
},
{
"icon_id": "24903723",
"name": "采购",
"font_class": "caigou",
"unicode": "e613",
"unicode_decimal": 58899
},
{
"icon_id": "24903733",
"name": "仓库",
"font_class": "cangku",
"unicode": "e614",
"unicode_decimal": 58900
},
{
"icon_id": "24903735",
"name": "生产",
"font_class": "shengchan",
"unicode": "e615",
"unicode_decimal": 58901
},
{
"icon_id": "24903736",
"name": "销售",
"font_class": "xiaoshou",
"unicode": "e616",
"unicode_decimal": 58902
},
{
"icon_id": "24903737",
"name": "条码",
"font_class": "tiaoma",
"unicode": "e617",
"unicode_decimal": 58903
},
{
"icon_id": "24903738",
"name": "物料",
"font_class": "wuliao",
"unicode": "e618",
"unicode_decimal": 58904
},
{
"icon_id": "24903739",
"name": "委外",
"font_class": "weiwai",
"unicode": "e619",
"unicode_decimal": 58905
},
{
"icon_id": "24903740",
"name": "供应商",
"font_class": "gongyingshang",
"unicode": "e61a",
"unicode_decimal": 58906
},
{
"icon_id": "24903741",
"name": "设置",
"font_class": "shezhi",
"unicode": "e61b",
"unicode_decimal": 58907
},
{
"icon_id": "24903806",
"name": "211",
"font_class": "a-211",
"unicode": "e61c",
"unicode_decimal": 58908
}
]
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
src/assets/gou@3x.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 384 B

BIN
src/assets/ico-quesheng.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

BIN
src/assets/log_down.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 266 B

BIN
src/assets/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 933 B

BIN
src/assets/nocheck@3x.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
src/assets/refresh.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 295 B

BIN
src/assets/refresh1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 228 B

BIN
src/assets/reviewed_ico.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

BIN
src/assets/rise.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

BIN
src/assets/rise1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 371 B

BIN
src/assets/serch.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 291 B

View File

@@ -0,0 +1,42 @@
::v-deep(.el-input-number.is-controls-right .el-input-number__decrease),
::v-deep(.el-input-number.is-controls-right .el-input-number__increase) {
line-height: 12px !important;
}
::v-deep(.el-input-number.is-controls-right .el-input-number__decrease) {
bottom: 6px !important;
}
::v-deep(.el-input-number.is-controls-right .el-input-number__increase) {
top: 8px !important;
}
::v-deep(.el-input-number) {
width: 120px !important;
}
.dialog-top {
display: flex;
margin-bottom: 10px;
}
.dialog-top span {
display: flex;
justify-content: left;
align-items: center;
}
.dialog-top div:nth-child(1),
.dialog-top div:nth-child(2) {
display: flex;
width: 18%;
}
.dialog-top div:nth-child(3) {
display: flex;
width: 64%;
overflow: hidden;
}
.hover-line:hover {
text-decoration: underline;
cursor: pointer;
}
::v-deep(.item-date .el-input__inner) {
padding: 0 8px 0 30px !important;
}
::v-deep(.item-date .el-input__suffix ){
right: 15% !important;
}

View File

@@ -0,0 +1,37 @@
::v-deep(.el-date-editor--date .el-input__inner) {
width: 160px;
}
.sale-container ::v-deep(.s-p-t-g1::after),
.sale-container ::v-deep(.s-p-t-g2::after),
.sale-container ::v-deep(.s-p-t-g3::after),
.sale-container ::v-deep(.s-p-t-g4::after),
.sale-container ::v-deep(.s-p-t-g5::after),
.sale-container ::v-deep(.s-p-t-g6::after),
.sale-container ::v-deep(.s-p-t-g8::after),
.sale-container ::v-deep(.s-p-t-g9::after),
.sale-container ::v-deep(.s-p-t-g10::after) {
background: #fff !important;
}
.sale-container ::v-deep(.s-p-t-g1),
.sale-container ::v-deep(.s-p-t-g2),
.sale-container ::v-deep(.s-p-t-g3),
.sale-container ::v-deep(.s-p-t-g4),
.sale-container ::v-deep(.s-p-t-g5),
.sale-container ::v-deep(.s-p-t-g6),
.sale-container ::v-deep(.s-p-t-g10) {
padding: 0;
}
.sale-container ::v-deep(.s-p-t-g7) {
padding-left: 0;
}
.sale-container ::v-deep(.s-p-t-g8) {
padding-right: 0;
}
.f-c-r {
color: red;
}

View File

@@ -0,0 +1,48 @@
::v-deep(.el-input-number.is-controls-right .el-input-number__decrease),
::v-deep(.el-input-number.is-controls-right .el-input-number__increase) {
line-height: 12px !important;
}
::v-deep(.el-input-number.is-controls-right .el-input-number__decrease) {
bottom: 6px !important;
}
::v-deep(.el-input-number.is-controls-right .el-input-number__increase) {
top: 8px !important;
}
::v-deep(.el-input-number) {
width: 100px !important;
}
.dialog-top {
display: flex;
margin-bottom: 10px;
}
.dialog-top span {
display: flex;
justify-content: left;
align-items: center;
}
.dialog-top div:nth-child(1),
.dialog-top div:nth-child(2) {
display: flex;
width: 18%;
}
.dialog-top div:nth-child(3) {
display: flex;
width: 64%;
overflow: hidden;
}
#main {
height: 500px;
}
.dialog-header {
display: flex;
justify-content: center;
align-items: center;
}
.icon-zxt-sty {
color: #4178d5;
}
::v-deep(.overflow) {
overflow: hidden !important;
white-space: nowrap !important;
text-overflow: ellipsis !important;
}

View File

@@ -0,0 +1,82 @@
::v-deep(.table-header-row) {
background: #f5f7fa;
color: #000;
height: 41px;
font-size: 12px;
}
::v-deep(.table-body-row) {
height: 50px;
font-size: 12px;
}
::v-deep(.el-input__suffix) {
display: flex !important;
align-items: center !important;
}
::v-deep(.el-input-number.is-controls-right .el-input-number__decrease),
::v-deep(.el-input-number.is-controls-right .el-input-number__increase) {
line-height: 12px !important;
}
::v-deep(.el-input-number.is-controls-right .el-input-number__decrease) {
bottom: 6px !important;
}
::v-deep(.el-input-number.is-controls-right .el-input-number__increase) {
top: 8px !important;
}
::v-deep(.el-input-number) {
width: 100px !important;
}
.dialog-top {
display: flex;
margin-bottom: 10px;
}
.dialog-top span {
display: flex;
justify-content: left;
align-items: center;
}
.dialog-top div:nth-child(1),
.dialog-top div:nth-child(2) {
display: flex;
width: 18%;
}
.dialog-top div:nth-child(3) {
display: flex;
width: 64%;
overflow: hidden;
}
#main {
height: 500px;
}
.dialog-header {
display: flex;
justify-content: center;
align-items: center;
}
// ::v-deep(.el-table .el-input__suffix) {
// top: -5px !important;
// }
.editDialog {
display: flex;
justify-content: center;
align-items: center;
margin: 10px 0;
}
.editDialog span:nth-child(1) {
width: 35%;
display: block;
text-align: right;
margin-right: 5px;
}
.editDialog span:nth-child(2) {
width: 45%;
display: block;
text-align: right;
margin-right: 5px;
}
::v-deep(.el-dialog .el-input__suffix) {
top: -5px !important;
}
.el-input__prefix {
color: #606266;
}

View File

@@ -0,0 +1,33 @@
.f-c {
color: var(--el-disabled-color-base) !important;
}
::v-deep(.is-checkbox .cell .el-checkbox .el-checkbox__input .el-checkbox__inner) {
background-color: var(--el-checkbox-disabled-input-fill) !important;
border-color: var(--el-checkbox-disabled-border-color) !important;
cursor: not-allowed;
}
::v-deep(.el-form-item__label) {
width: 100px !important;
}
.order-com-rr {
::v-deep(.el-form-item__content .el-input .el-input__inner) {
padding: 0 16px 0 16px !important;
}
}
.item-date {
::v-deep(.el-form-item__content .el-input .el-input__inner) {
padding: 0 16px 0 16px !important;
}
}
::v-deep(.div-col .el-textarea__inner) {
padding: 0 8px !important ;
}
::v-deep(.el-textarea__inner) {
width: 172px;
font-size: 12px !important;
padding: 0 8px 0 8px !important;
}

View File

@@ -0,0 +1,464 @@
/*全局公共样式文件*/
html,
body {
margin: 0;
padding: 0;
color: #333;
box-sizing: border-box;
}
a {
text-decoration: none;
}
/*去掉项目标签*/
ul {
list-style-type: none;
}
.f-12 {
font-size: 12px !important;
}
.f-14 {
font-size: 14px;
}
.main-container {
width: -moz-available;
width: -webkit-fill-available;
width: stretch;
height: -moz-available;
height: -webkit-fill-available;
height: stretch;
height: 100% !important;
margin: 0 16px;
}
.el-main {
padding: 0;
margin-top: 16px;
}
.min-height-fill4parent {
height: -moz-available;
height: -webkit-fill-available;
height: stretch;
}
.bg-green {
background-color: #018a6d;
}
.bg-green-light {
background-color: #38b48b;
}
.bg-green-deep {
background-color: #006e54;
}
.bg-gray-light {
background-color: #ebeef5;
}
.bg-white {
background-color: #fff;
}
.text-grey {
color: #c1cad5;
}
.text-green {
color: #38b48b;
}
.text-blue {
color: #2c74fa;
}
.text-black {
color: #333;
}
.text-black-light {
color: #666;
}
.text-gray {
color: #999;
}
.text-red {
color: #e73235;
cursor: pointer;
}
.text-blue {
color: #3275f8;
cursor: pointer;
}
.text-popor {
color: #796dff;
}
.text-skyblue {
color: #60d1ff;
}
.text-skyblue1 {
color: #59dcf1;
}
.text-pink {
color: #ff7e9d;
}
.text-yellow {
color: #fdc027;
}
.button-green-bg {
background-color: rgba(56, 180, 139, 0.3);
border-radius: 3px;
padding: 7px 16px;
}
.button-green-border {
border: 1px solid #38b48b;
border-radius: 3px;
padding: 7px 24px;
color: #38b48b;
}
.button-green {
background-color: #38b48b;
padding: 9px 24px;
color: #fff;
}
.button-green-four {
background-color: #38b48b;
padding: 9px 16px;
color: #fff;
}
/*字体居中*/
.text-l {
text-align: left;
}
.text-c {
text-align: center;
}
.text-r {
text-align: right;
}
.txt-Red {
color: red;
}
/*页面宽度*/
.content-w {
width: 100%;
padding-left: 32px;
padding-right: 32px;
}
/*边距*/
.p-t-16 {
padding-top: 16px;
}
.m-r-24 {
margin-right: 24px;
}
.el-tabs__nav-wrap::after {
height: 1px !important;
}
.el-tabs__item {
height: 45px !important;
line-height: 45px !important;
}
.el-container.is-vertical {
background: #e8edef;
}
/*缺省页样式*/
.page-quesheng {
width: 100%;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 80%;
}
/*滚动条样式*/
//滚动条的宽度
.el-table__body-wrapper::-webkit-scrollbar {
width: 10px;
height: 10px;
}
//滚动条的滑块
.el-table__body-wrapper::-webkit-scrollbar-thumb {
background-color: #bcc3c9;
border-radius: 6px;
}
//滚动条的宽度
::-webkit-scrollbar {
width: 10px;
height: 10px;
}
//滚动条的滑块
::-webkit-scrollbar-thumb {
background-color: #acb7c0;
border-radius: 6px;
}
.el-table--fluid-height .el-table__fixed,
.el-table--fluid-height .el-table__fixed-right {
bottom: 8px !important;
}
/*公按钮下拉*/
.btn-action {
float: left;
cursor: pointer;
font-size: 12px;
margin-top: 14px;
margin-left: 10px;
margin-right: 10px;
}
.btn-action:hover .insert-row {
display: block;
}
.dropdownselect {
font-size: 12px;
display: flex;
justify-content: center;
align-items: center;
padding: 0 12px;
}
.dropdownselect .zdyspan {
position: relative;
margin-right: 4px;
}
.dropdownselect .zdyspan i {
position: relative;
right: -10px;
top: 1px;
font-size: 16px;
}
.cell span {
line-height: 0px;
cursor: pointer;
}
.el-form-item__content {
font-size: 12px;
}
.div-col span {
display: block;
}
.input-number-box {
display: flex;
justify-content: center;
align-items: center;
}
.el-input__inner {
padding: 0 16px 0 8px !important;
// padding-right: 15px;
height: 28px !important;
font-size: 12px !important;
line-height: 28px !important;
}
.el-dialog__title {
font-size: 15px !important;
}
.el-dialog__body {
padding: 0 20px !important;
}
.el-table .cell {
font-size: 12px;
line-height: 20px !important;
}
// 按钮禁用
.btn-dsable {
cursor: no-drop;
}
.el-input.is-disabled .el-input__inner,
.el-select .el-input.is-disabled .el-input__inner {
color: #99a0af;
cursor: auto;
}
.el-date-editor .el-range-separator {
font-size: 12px;
line-height: 22px;
}
.el-range-input {
font-size: 12px;
}
.tell-info-query span,
.tell-info-delete-row span,
.el-dropdown-selfdefine,
.tell-info-copy-row span {
cursor: pointer;
}
.tell-info-query span:hover,
.tell-info-delete-row span:hover,
.el-dropdown-selfdefine:hover,
.tell-info-copy-row span:hover {
color: #66b1ff;
}
.TopInfo {
font-size: 12px;
padding-bottom: 5px;
margin-bottom: 10px;
background-color: rgba(84, 128, 240, 0.2);
color: #5480f0;
height: 20px;
padding-top: 5px;
padding-left: 20px;
height: auto;
}
.span_tips {
width: 200px;
cursor: pointer;
white-space: nowrap; //不换行
overflow: hidden; //超出隐藏
text-overflow: ellipsis; //变成...
}
.el-date-editor .el-range__icon {
line-height: 25px;
}
.el-table .success-row {
color: red !important;
}
.sale-details-base-info,
.order-create-base-info {
position: relative;
}
.reviewIconImg {
width: 4%;
position: absolute;
z-index: 10;
top: 16%;
left: 65px;
transform: rotate(-20deg);
}
.reviewIconImg-pur {
width: 4%;
position: absolute;
z-index: 10;
top: 18%;
left: 145px;
transform: rotate(-20deg);
}
.el-cascader {
display: flex;
align-items: center;
justify-content: center;
line-height: 28px !important;
height: 28px;
width: 100%;
}
.el-cascader-panel .el-radio {
position: absolute;
z-index: 10;
padding: 0 10px;
width: 132px;
height: 28px;
line-height: 28px;
}
.el-cascader-panel .el-radio__input {
visibility: hidden;
}
.el-cascader-panel .el-input-node__postfix {
top: 10px;
}
:v-deep(.el-select .el-input.is-disabled .el-input__inner) {
cursor: pointer !important;
}
input::-webkit-outer-spin-button,
input::-webkit-inner-spin-button {
-webkit-appearance: none !important;
}
input[type='number'] {
-moz-appearance: textfield !important;
}
.sc {
display: block !important;
}
.zp .el-input__suffix {
top: -5px !important;
}
.zp .el-input__inner {
padding-left: 100px;
}
.rq .el-icon-date {
display: none;
}
.bounce-enter-active {
animation: bounce-in 0.5s;
}
.bounce-leave-active {
animation: bounce-in 0.5s reverse;
}
@keyframes bounce-in {
0% {
transform: scale(0);
}
50% {
transform: scale(1.03);
}
100% {
transform: scale(1);
}
}

198
src/assets/style/index.scss Normal file
View File

@@ -0,0 +1,198 @@
/*首页*/
.mainlayout-flex {
display: flex;
flex-direction: row;
justify-content: space-between;
overflow: hidden;
}
.page-main {
margin: 0 16px;
}
.page-title {
font-size: 14px;
font-weight: bold;
line-height: 19px;
color: #303133;
margin: 16px;
}
.page-left {
display: flex;
flex-direction: column;
.page-left-1 {
width: 100%;
height: 300px;
margin-bottom: 16px;
.tag_main {
margin: 0 16px;
margin-bottom: 24px;
.el-tag {
color: #303133;
padding: 7px 16px;
border: 1px solid #E4E7ED;
opacity: 1;
background: white;
height: auto;
width: auto;
line-height: inherit;
margin-right: 16px;
margin-bottom: 15px;
cursor: pointer;
}
}
}
.page-left-2 {
width: 100%;
height: 518px;
position: relative;
.page-title {
margin-bottom: 10px;
}
.time {
width: 166px;
font-size: 12px;
position: absolute;
right: 16px;
color: #909399;
top: 65px;
}
}
}
.page-left,
.page-right {
width: 906px;
height: 100%;
}
.page-right {
max-height: 835px;
}
.page-left div,
.page-right {
background: white;
}
.hxsj-mian {
width: 100%;
height: 100%;
display: flex;
display: -webkit-flex;
flex-direction: row;
flex-wrap: wrap;
.item {
width: 281px;
height: 192px;
border: 1px solid #E4E7ED;
margin-bottom: 8px;
margin-right: 8px;
p {
font-size: 16px;
font-family: D-DIN DIN;
display: block;
}
.numpoint {
text-align: center;
// margin-left: 95px;
margin-top: 72px;
color: #AAB2C2;
margin-bottom: 0;
.num {
font-weight: bold;
font-size: 30px;
font-family: D-DIN DIN;
}
}
.sm {
font-size: 14px;
color: #606266;
// margin-left: 95px;
text-align: center;
margin-top: 2px;
}
}
}
.hxsj-mian:after {
content: ' ';
width: 271px;
flex: auto;
}
.dbrw-main {
display: flex;
width: 96%;
height: 672px;
margin: 0 16px;
position: relative;
overflow-y: auto;
flex-direction: column;
.dbitem {
width: 100%;
width: 834px;
height: 82px;
border: 1px solid #E4E7ED;
margin-bottom: 15px;
div {
display: flex;
justify-content: space-between;
padding-top: 12px;
padding-bottom: 5px;
align-items: center;
.title {
font-size: 12px;
color: #303133;
font-weight: bold;
margin-left: 12px;
}
.time {
font-size: 13px;
color: #909399;
margin-right: 12px;
}
}
.content {
font-size: 12px;
color: #606266;
padding-top: 0;
width: 100%;
span {
width: 100%;
margin: 0 12px;
text-overflow: -o-ellipsis-lastline;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
line-clamp: 2;
-webkit-box-orient: vertical;
cursor: pointer;
}
}
}
}
:v-deep(.el-table--scrollable-y ::-webkit-scrollbar) {
display: none;
}

View File

@@ -0,0 +1,378 @@
/*首页*/
.mainlayout-flex {
flex-direction: row;
justify-content: space-between;
}
.page-main {
margin: 0 16px;
}
.page-title {
font-size: 14px;
font-weight: bold;
line-height: 19px;
color: #303133;
margin: 16px;
}
.page-title-1 {
font-size: 14px;
font-weight: bold;
line-height: 0px;
color: #303133;
margin-top: 16px;
}
.page-left {
height: 377px;
display: flex;
.page-left-1 {
width: 100%;
// height: 477px;
.serch{
margin: 0 16px;
margin-bottom:32px;
input{
width: 320px;
height: 32px;
padding-left: 3%;
opacity: 1;
border-radius: 2px;
background: rgba(255, 255, 255, 1);
background-image: url(../style/img/serch.png);
background-repeat: no-repeat;
background-position: 2%;
border: 1px solid rgba(220, 223, 230, 1);
}
}
.tag_main {
margin: 0 16px;
margin-bottom: 16px;
overflow: hidden;
.el-tag {
color: #303133;
padding: 7px 16px;
border: 1px solid #E4E7ED;
opacity: 1;
background: white;
height: auto;
width: auto;
line-height: inherit;
margin-right: 16px;
margin-bottom: 15px;
cursor: pointer;
}
}
}
}
.page-left,
.page-right {
width: 900px;
// height: 100%;
}
.page-right {
margin-left: 16px;
max-height: 377px;
display: flex;
flex-direction: column;
}
.page-left div {
background: white;
}
.page-right-1 {
width: 100%;
height: 377px;
background: white;
overflow: hidden;
.tag_main {
margin: 0 16px;
margin-bottom: 24px;
.page-main>div{
max-height: 290px !important;
}
.el-table__body-wrapper {
max-height: 290px !important;
.el-table__body{
max-height: 290px !important;
}
}
}
}
::v-deep .el-table__row > td {
/* 去除表格线 */
border: none;
border-bottom: 1px solid #EBEEF7;
}
.xiaoshou{
width: 100%;
height: 1166px;
background-color: white;
}
.kucun{
margin-top: 28px;
overflow: hidden;
width: 100%;
height: 975px;
background-color: white;
}
.sales{
display: flex;
width: 100%;
height: 220px;
background-color: white;
.sales-1 {
position: relative;
width: 100%;
margin-bottom: 16px;
.amount{
position: relative;
float: left;
margin-left: 16px;
margin-top: 16px;
margin-bottom: 32px;
width: 435px;
height: 148px;
opacity: 1;
border-radius: 4px;
background: rgba(255, 255, 255, 1);
box-shadow: 0px 7px 29px 0px rgba(151, 154, 161, 0.2);
.amount-r1{
position: absolute;
top: 18px;
right: 32px;
}
.amount-r2{
position: absolute;
bottom: 32px;
right: 37px;
}
}
.amount-p{
padding: 16px 16px 16px 32px;
font-size: 14px;
font-weight: 500;
letter-spacing: 0px;
line-height: 0px;
color: rgba(153, 153, 153, 1);
text-align: left;
vertical-align: middle;
}
.jine{
margin-left: 32px;
font-size: 32px;
font-weight: 700;
letter-spacing: 0px;
line-height: 0px;
color: rgba(31, 31, 31, 1);
text-align: left;
}
.bagcolorg{
margin-top: 10px;
margin-left: 32px;
width: 146px;
height: 30px;
line-height: 30px;
padding-left: 16px;
border-radius: 18px;
background: linear-gradient(90deg, rgba(4, 204, 141, 0.15) 0%, rgba(4, 204, 141, 0) 100%);
.span1{
margin-left: 24px;
}
span{
color: #04CC8DFF;
}
}
.bagcolorr{
margin-top: 10px;
margin-left: 32px;
width: 146px;
height: 30px;
line-height: 30px;
padding-left: 16px;
border-radius: 18px;
background: linear-gradient(90deg, rgba(250, 87, 87, 0.15) 0%, rgba(250, 87, 87, 0) 100%);
.span1{
margin-left: 24px;
}
span{
color: #FA5757;
}
}
.bagcolory{
margin-top: 10px;
margin-left: 32px;
width: 146px;
height: 30px;
line-height: 30px;
padding-left: 16px;
border-radius: 18px;
background: linear-gradient(90deg, rgb(255, 189,1, 0.15) 0%, rgb(255, 189,1, 0) 100%);
.span1{
margin-left: 24px;
}
span{
color: #FFBD00;
}
}
}
}
.tishi{
height: 56px;
width: 100%;
display: flex;
position: relative;
}
.tishi ul{
padding-left: 16px;
}
.tishi .xx{
position: absolute;
right:45px;
top:15px;
padding-right: 10px;
border-right: 1px solid #CED1D9;
}
.tishi .update{
position: absolute;
right: 16px;
top:15px;
cursor: pointer;
}
.tishi .update :hover{
color: #4178D5;
}
.tishi img{
padding: 16px;
vertical-align:bottom;
cursor: pointer;
}
.bb{
position: relative;
overflow: hidden;
margin-top: 16px;
width: 100%;
height: 462px;
background-color: white;
}
.Saleslist{
margin-bottom: 85px;
margin-top: 16px;
overflow: hidden;
height: 600px;
background-color: white;
position: relative;
}
.bb .tian,.Saleslist .tian{
position: absolute;
display: flex;
right: 5%;
top: 16px;
width: 120px;
height: 30px;
opacity: 1;
border-radius: 2px;
background: #FFFFFF;
padding: 0;
border: 1px solid #DCDFE6;
}
.bb-bumen{
position: absolute;
right:5%;
top: 16px;
width: 80px;
// height: 30px;
opacity: 1;
border-radius: 2px;
}
.bb .bumen{
position: absolute;
right:12%;
top: 34px;
width: 80px;
// height: 30px;
opacity: 1;
border-radius: 2px;
}
.bb .tian li,.Saleslist .tian li{
margin-top: 2px;
margin-left: 1px;
width: 56px;
height: 22px;
opacity: 1;
border-radius: 2px;
display: flex;
justify-content: center;
align-items: center;
text-align: center;
line-height: 22px;
padding: 2px 3px 2px 3px;
cursor: pointer;
}
.active{
font-weight: 600;
margin-top: 2px;
margin-left: 1px;
width: 56px;
height: 22px;
opacity: 1;
border-radius: 2px;
display: flex;
justify-content: center;
align-items: center;
text-align: center;
line-height: 22px;
background: rgb(242, 243, 245);
padding: 2px 3px 2px 3px;
cursor: pointer;
}
.Saleslist .tian{
position: absolute;
margin: 0;
right: 5%;
top: 10px;
width: 178px;
height: 30px;
opacity: 1;
border-radius: 2px;
background: #FFFFFF;
padding: 0;
border: 1px solid #DCDFE6;
}
.main3-tit{
font-size: 14px;
font-weight: bold;
height: 19px;
line-height: 19px;
color: #303133;
padding-left: 16px;
}
.main3-tit li{
width: 120px;
height: 20px;
display: block;
float: left;
line-height: 22px;
cursor: pointer;
text-align: center;
border-right: 1px solid #D5D9E0;
}
.tit1{
color: blue;
}

View File

@@ -0,0 +1,74 @@
.base-info-form-box,
.pro-info-form-box,
.size-info-form-box {
.item-bt-s {
margin-bottom: 8px;
}
}
.org-info-form-box {
.tell-info-button-group {
display: flex;
flex-direction: row;
box-sizing: border-box;
padding-left: 8px;
}
}
.sale-details-base-info .tell-info-table {
margin-top: 13px;
}
:deep(.el-upload--picture-card) {
width: 120px;
height: 120px;
}
.sale-details-base-info {
margin-top: 12px;
}
.sale-details-base-info :deep(.el-form-item .el-form-item__label) {
width: 120px!important;
}
.sale-details-base-info .search-group-one :deep(.el-form-item__label) {
width: 30px!important;
}
.sale-details-base-info .search-group-invalid :deep(.el-form-item__label) {
width: 115px!important;
}
.sale-details-base-info .search-group-supplier :deep(.el-form-item__label) {
width: 130px!important;
}
.tableData{
margin-top: 12px;
}
.sale-details-btn-group :deep(.page-top .s-p-t-g5 .el-button){
padding: 7px 0 7px 0!important;
}
.pro-info-form-box {
:deep(.el-form-item__label) {
width: 120px !important;
}
}
.size-info-form-box {
:deep(.el-form-item__label) {
width: 120px !important;
}
}
.other-info-form-box {
:deep(.el-form-item__label) {
width: 60px !important;
}
}
.arrow_none {
:deep(.el-icon-arrow-up:before) {
content: '';
}
}

View File

@@ -0,0 +1,54 @@
// 采购订单
.order-com-r {
::v-deep(.el-form-item .el-form-item__content .el-input .el-input__inner) {
padding: 0 16px 0 8px !important ;
}
}
.order-com-rr {
::v-deep(.el-form-item__content .el-input .el-input__inner) {
padding: 0 16px 0 8px !important ;
}
}
.item-date {
::v-deep(.el-form-item__content .el-input .el-input__inner) {
padding: 0 16px 0 8px !important ;
width: 173px !important;
}
}
.address-textarea {
::v-deep(.el-form-item__content .el-textarea .el-textarea__inner) {
padding: 0 16px 0 8px !important ;
}
}
.click-cell-show ::v-deep(.el-input__suffix) {
display: block !important;
}
.click-cell-show ::v-deep(.el-input__suffix .el-input__suffix-inner .el-input__icon) {
line-height: 30px !important;
}
// 采购入库
.f-c {
color: var(--el-disabled-color-base) !important;
}
::v-deep(.is-checkbox .cell .el-checkbox .el-checkbox__input .el-checkbox__inner) {
background-color: var(--el-checkbox-disabled-input-fill) !important;
border-color: var(--el-checkbox-disabled-border-color) !important;
cursor: not-allowed;
}
:v-deep(.el-form-item__label) {
width: 90px !important;
}
::v-deep(.click-cell-ipt-issue .select-trigger .el-input .el-input__inner) {
padding: 0 16px 0 8px !important;
}
.createdRow {
cursor: pointer;
}
.createdRow:hover {
color: #66b1ff;
}

View File

@@ -0,0 +1,355 @@
::v-deep(.el-form-item) {
display: flex;
justify-content: center;
align-items: center;
}
::v-deep(.el-form-item__label) {
font-size: 12px;
padding-right: 6px;
height: 27px;
display: flex;
justify-content: right;
align-items: center;
width: 88px !important;
}
::v-deep(.el-input) {
line-height: 27px;
}
::v-deep(.el-input__inner) {
padding: 0 16px 0 8px !important;
// padding: 0 8px;
height: 27px;
font-size: 12px;
line-height: 20px;
}
::v-deep(.click-cell-ipt-issue .select-trigger .el-input .el-input__inner) {
padding: 0 16px 0 8px !important;
}
::v-deep(.el-form-item__content) {
line-height: 28px;
}
::v-deep(input::-webkit-input-placeholder) {
font-size: 12px;
}
::v-deep(input::-moz-input-placeholder) {
font-size: 12px;
}
::v-deep(input::-ms-input-placeholder) {
font-size: 12px;
}
::v-deep(.el-form-item) {
margin-bottom: 0;
}
::v-deep(.el-input__suffix) {
display: flex;
justify-content: center;
align-items: center;
}
::v-deep(.el-select-dropdown__item) {
font-size: 12px !important;
}
::v-deep(.el-form-item.is-required:not(.is-no-asterisk)>.el-form-item__label:before) {
content: '' !important;
color: #fff !important;
margin-right: 0 !important;
}
::v-deep(.el-form-item.is-required:not(.is-no-asterisk)>.el-form-item__label:after) {
content: '*' !important;
color: var(--el-color-danger) !important;
margin-right: 0 !important;
}
::v-deep(.el-input__prefix) {
display: flex;
justify-content: center;
align-items: center;
}
::v-deep(.el-date-editor) {
--el-date-editor-width: 100% !important;
}
::v-deep(.el-dropdown) {
font-size: 12px;
}
::v-deep(.el-table thead tr th) {
padding: 0 !important;
height: 40px;
max-height: 40px;
text-align: left;
background: #F2F5F9;
color: #000;
}
::v-deep(.el-table td.el-table__cell div) {
display: -webkit-box;
text-overflow: ellipsis;
overflow: hidden;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
::v-deep(.el-table__body tbody tr td) {
padding: 0 !important;
}
::v-deep(.lead-time-style .el-input__inner) {
padding-left: 0px !important;
border: none;
}
::v-deep(.lead-time-style .el-input__prefix) {
justify-content: right !important;
left: 0 !important;
right: 1px !important;
}
::v-deep(.el-table__row) {
height: 50px !important;
}
::v-deep(.el-row) {
width: 100%;
}
::v-deep(.el-select) {
width: 100%;
}
::v-deep(.sale-details-container .sale-details-base-info .base-info-form-box .div-col .item-date[data-v-fae5bece] .el-input__inner) {
padding-right: 2px;
}
::v-deep(.el-table th.must>.cell::after) {
content: '*';
color: var(--el-color-danger) !important;
}
::v-deep(.tooltips-position) {
height: 50px;
color: #fff;
position: absolute;
z-index: -1;
}
::v-deep(.tooltips-position text) {
height: inherit !important;
width: inherit !important;
display: block;
}
.tooltipNote {
display: -webkit-box;
text-overflow: ellipsis;
overflow: hidden;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
.getTextWidth {
font-size: 12px;
color: #fff;
}
::v-deep(.slide-fade-enter-active) {
transition: all 0s ease !important;
}
::v-deep(.slide-fade-leave-active) {
transition: all 0s ease !important;
}
::v-deep(.el-button:visited) {
background-color: #fff;
}
::v-deep(.el-button:focus) {
background-color: #fff;
}
// ::v-deep(.el-button:hover) {
// background-color: #fff;
// }
::v-deep(.el-table--border .el-table__cell:first-child .cell) {
text-align: center;
}
::v-deep(.el-autocomplete-suggestion li) {
font-size: 12px !important;
}
::v-deep(.el-autocomplete) {
width: 100% !important;
border: none !important;
}
::v-deep(tbody .el-autocomplete .el-input__inner) {
border: none !important;
}
.click-cell-ipt ::v-deep(.el-input__inner) {
border: none !important;
font-size: 12px;
padding: 0;
}
.click-cell-ipt ::v-deep(.el-autocomplete-suggestion li) {
width: 100%;
border: none !important;
font-size: 12px;
}
::v-deep(tbody tr:hover>td) {
background-color: var(--el-table-row-hover-background-color);
}
::v-deep(tbody tr:hover .el-input__inner) {
background-color: var(--el-table-row-hover-background-color);
}
::v-deep(.el-table--enable-row-transition .el-table__body td.el-table__cell) {
transition: none !important;
}
.click-cell-ipt ::v-deep(.el-input__suffix) {
display: none !important;
}
.click-cell-ipt ::v-deep(.el-table__cell .cell) {
height: inherit !important;
line-height: inherit !important;
}
::v-deep(.el-textarea__inner) {
font-size: 12px !important;
padding: 0 8px !important;
}
.address-textarea {
align-items: flex-start !important;
}
.checkbox-style {
display: flex;
justify-content: center;
align-items: center;
}
.disable {
background: rgb(245, 247, 250)
}
.disable ::v-deep(.el-input__inner) {
background: rgb(245, 247, 250)
}
.isDisable {
background: #fff;
}
.isDisable ::v-deep(.el-input__inner) {
background: #fff;
}
.t-r {
text-align: right;
}
.t-r ::v-deep(.el-input__inner) {
text-align: right;
}
::v-deep(.el-tabs__nav-scroll) {
background: #fff;
}
::v-deep(.el-tabs--border-card) {
border: none;
box-shadow: none;
}
::v-deep(.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active) {
border: 1px solid #909399 !important;
color: #303133 !important;
}
::v-deep(.el-tabs--border-card>.el-tabs__header .el-tabs__item) {
color: #909399 !important;
font-weight: 600;
border: 1px solid #909399 !important;
}
::v-deep(.el-tabs__item) {
padding: 0 8px !important;
height: 28px !important;
line-height: 28px !important;
}
::v-deep(.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child) {
margin-left: 0 !important;
margin-top: 0 !important;
position: relative;
}
::v-deep(.el-tabs__nav-scroll) {
padding-left: 12px !important;
position: relative;
}
::v-deep(.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child::before) {
content: '';
width: 4px;
height: 50%;
background-color: #4178D5;
position: absolute;
top: 50%;
left: -12px;
transform: translateY(-50%);
}
// ::v-deep(.el-tabs__nav-scroll::before) {
// content: '';
// width: calc(100% - 168px);
// height: 1px;
// background-color: #EDEFF5;
// position: absolute;
// top: 50%;
// left: 168px;
// z-index: 1;
// }
.create-purchase-container ::v-deep(.s-p-t-g4::after) {
background: #fff !important;
}
.f-c {
color: var(--el-disabled-color-base) !important;
cursor: not-allowed;
}
::v-deep(.el-radio-group) {
display: flex !important;
flex-wrap: wrap !important;
}
::v-deep(.el-radio) {
width: 50% !important;
margin: 0 !important;
}

View File

@@ -0,0 +1,371 @@
::v-deep(.el-form-item) {
display: flex;
justify-content: center;
align-items: center;
}
::v-deep(.el-form-item__label) {
font-size: 12px;
padding-right: 6px;
height: 28px;
display: flex;
justify-content: right;
align-items: center;
min-width: 97px !important;
}
::v-deep(.el-input) {
line-height: 27px;
}
::v-deep(.el-input__inner) {
padding: 0 16px 0 8px !important;
height: 27px;
font-size: 12px;
line-height: 27px;
}
::v-deep(.el-form-item__content) {
line-height: 27px;
}
::v-deep(input::-webkit-input-placeholder) {
font-size: 12px;
}
::v-deep(input::-moz-input-placeholder) {
font-size: 12px;
}
::v-deep(input::-ms-input-placeholder) {
font-size: 12px;
}
::v-deep(.el-form-item) {
margin-bottom: 0;
}
::v-deep(.el-input__suffix) {
display: flex;
justify-content: center;
align-items: center;
}
::v-deep(.el-select-dropdown__item) {
font-size: 12px !important;
}
::v-deep(.el-form-item.is-required:not(.is-no-asterisk)>.el-form-item__label:before) {
content: '' !important;
color: #fff !important;
margin-right: 0 !important;
}
::v-deep(.el-form-item.is-required:not(.is-no-asterisk)>.el-form-item__label::before) {
content: '*' !important;
color: var(--el-color-danger) !important;
margin-right: 0 !important;
}
::v-deep(.el-input__prefix) {
display: flex;
justify-content: center;
align-items: center;
}
::v-deep(.el-date-editor) {
--el-date-editor-width: 100% !important;
}
::v-deep(.el-dropdown) {
font-size: 12px;
}
::v-deep(.el-table thead tr th) {
padding: 0 !important;
height: 40px;
max-height: 40px;
text-align: left;
background: #F2F5F9;
color: #000;
}
::v-deep(.el-table td.el-table__cell div) {
display: -webkit-box;
text-overflow: ellipsis;
overflow: hidden;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
::v-deep(.el-table__body tbody tr td) {
padding: 0 !important;
}
::v-deep(.lead-time-style .el-input__inner) {
padding: 0px 30px 0 8px !important;
// border: none;
}
::v-deep(.click-cell-ipt-issue .select-trigger .el-input .el-input__inner) {
padding: 0 16px 0 8px !important;
}
::v-deep(.click-cell-ipt-c .el-input .el-input__inner) {
padding: 0 16px 0 8px !important;
}
::v-deep(.lead-time-style .el-input__prefix) {
justify-content: right !important;
left: 0 !important;
right: 1px !important;
}
::v-deep(.el-table__row) {
height: 50px !important;
}
::v-deep(.el-row) {
width: 100%;
}
::v-deep(.el-select) {
width: 100%;
}
::v-deep(.sale-details-container .sale-details-base-info .base-info-form-box .div-col .item-date[data-v-fae5bece] .el-input__inner) {
padding-right: 2px;
}
::v-deep(.el-table th.must>.cell::after) {
content: '*';
color: var(--el-color-danger) !important;
}
::v-deep(.tooltips-position) {
height: 50px;
color: #fff;
position: absolute;
z-index: -1;
}
::v-deep(.tooltips-position text) {
height: inherit !important;
width: inherit !important;
display: block;
}
.tooltipNote {
display: -webkit-box;
text-overflow: ellipsis;
overflow: hidden;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
.getTextWidth {
font-size: 12px;
color: #fff;
}
::v-deep(.slide-fade-enter-active) {
transition: all 0s ease !important;
}
::v-deep(.slide-fade-leave-active) {
transition: all 0s ease !important;
}
::v-deep(.el-button:visited) {
background-color: #fff;
}
::v-deep(.el-button:focus) {
background-color: #fff;
}
// ::v-deep(.el-button:hover) {
// background-color: #fff;
// }
::v-deep(.el-table--border .el-table__cell:first-child .cell) {
text-align: center;
}
::v-deep(.el-autocomplete-suggestion li) {
font-size: 12px !important;
}
::v-deep(.el-autocomplete) {
width: 100% !important;
// border: none !important;
}
::v-deep(tbody .el-autocomplete .el-input__inner) {
// border: none !important;
}
.click-cell-ipt ::v-deep(.el-input__inner) {
// border: none !important;
font-size: 12px;
// padding: 0;
}
.click-cell-ipt ::v-deep(.el-autocomplete-suggestion li) {
width: 100%;
border: none !important;
font-size: 12px;
}
::v-deep(tbody tr:hover>td) {
background-color: var(--el-table-row-hover-background-color);
}
::v-deep(tbody tr:hover .el-input__inner) {
background-color: var(--el-table-row-hover-background-color);
}
::v-deep(.el-table--enable-row-transition .el-table__body td.el-table__cell) {
transition: none !important;
}
.click-cell-ipt ::v-deep(.el-input__suffix) {
display: none !important;
}
.click-cell-ipt ::v-deep(.el-table__cell .cell) {
height: inherit !important;
line-height: inherit !important;
}
::v-deep(.el-textarea__inner) {
font-size: 12px !important;
padding: 0 8px !important;
}
.address-textarea {
align-items: flex-start !important;
}
::v-deep(.el-textarea) {
padding-right: 8px;
}
.checkbox-style {
display: flex;
justify-content: center;
align-items: center;
}
.disable {
background: rgb(245, 247, 250)
}
.disable ::v-deep(.el-input__inner) {
background: rgb(245, 247, 250)
}
.isDisable {
background: #fff;
}
.isDisable ::v-deep(.el-input__inner) {
background: #fff;
}
.t-r {
text-align: right;
}
.t-r ::v-deep(.el-input__inner) {
text-align: right;
}
::v-deep(.el-tabs__nav-scroll) {
background: #fff;
}
::v-deep(.el-tabs--border-card) {
border: none;
box-shadow: none;
}
::v-deep(.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active) {
border: 1px solid #909399 !important;
color: #303133 !important;
}
::v-deep(.el-tabs--border-card>.el-tabs__header .el-tabs__item) {
color: #909399 !important;
font-weight: 600;
border: 1px solid #909399 !important;
}
::v-deep(.el-tabs__item) {
padding: 0 8px !important;
height: 28px !important;
line-height: 28px !important;
}
::v-deep(.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child) {
margin-left: 0 !important;
margin-top: 0 !important;
position: relative;
}
::v-deep(.el-tabs__nav-scroll) {
padding-top: 16px !important;
padding-left: 12px !important;
position: relative;
}
::v-deep(.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child::before) {
content: '';
width: 4px;
height: 50%;
background-color: #4178D5;
position: absolute;
top: 50%;
left: -12px;
transform: translateY(-50%);
}
::v-deep(.el-tabs__nav-scroll::before) {
content: '';
width: calc(100% - 168px);
height: 1px;
background-color: #EDEFF5;
position: absolute;
top: 50%;
left: 168px;
z-index: 1;
}
.create-purchase-container ::v-deep(.s-p-t-g4::after) {
background: #fff !important;
}
::v-deep(.el-table td.el-table__cell div) {
display: -webkit-box;
text-overflow: ellipsis;
overflow: hidden;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
.f-c {
color: var(--el-disabled-color-base) !important;
cursor: not-allowed;
}
::v-deep(.el-radio-group) {
display: flex !important;
flex-wrap: wrap !important;
}
::v-deep(.el-radio) {
width: 50% !important;
margin: 0 !important;
}

View File

@@ -0,0 +1,60 @@
::v-deep(.el-table__row) {
height: 50px !important;
padding: 8px !important;
}
::v-deep(.el-table__row td) {
padding: 0;
}
::v-deep(.el-table thead tr th) {
padding: 0 !important;
height: 40px;
max-height: 40px;
}
.noteOrder {
display: -webkit-box;
text-overflow: ellipsis;
overflow: hidden;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
::v-deep(.total-select-item) {
margin-right: 24px !important;
}
::v-deep(.el-pagination__sizes) {
margin-right: 0 !important;
}
::v-deep(.el-pagination__total) {
margin-right: 24px !important;
}
::v-deep(.el-table .headerRight) {
background: #F2F5F9;
color: #000;
}
::v-deep(.el-date-editor) {
width: 100% !important;
}
::v-deep(.el-date-editor .el-range-separator) {
display: flex !important;
justify-content: center !important;
align-items: center !important;
color: #9b9fa5 !important
}
::v-deep(.el-radio-group) {
display: flex !important;
flex-wrap: wrap !important;
}
::v-deep(.el-radio) {
width: 50% !important;
margin: 0 !important;
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,299 @@
::v-deep(.el-form-item) {
display: flex;
justify-content: center;
align-items: center;
}
::v-deep(.el-form-item__label) {
font-size: 12px;
padding-right: 6px;
height: 27px;
// line-height: 38px;
display: flex;
justify-content: right;
align-items: center;
min-width: 97px !important;
;
}
::v-deep(.el-input) {
line-height: 27px;
}
::v-deep(.el-form-item__content) {
line-height: 27px;
}
::v-deep(input::-webkit-input-placeholder) {
font-size: 12px;
}
::v-deep(input::-moz-input-placeholder) {
font-size: 12px;
}
::v-deep(input::-ms-input-placeholder) {
font-size: 12px;
}
::v-deep(.el-form-item) {
margin-bottom: 0;
}
::v-deep(.el-input__suffix) {
display: flex;
justify-content: center;
align-items: center;
}
::v-deep(.el-select-dropdown__item) {
font-size: 12px !important;
}
::v-deep(.el-form-item.is-required:not(.is-no-asterisk)>.el-form-item__label:before) {
content: '' !important;
color: #fff !important;
margin-right: 0 !important;
}
::v-deep(.el-form-item.is-required:not(.is-no-asterisk)>.el-form-item__label:after) {
content: '*' !important;
color: var(--el-color-danger) !important;
margin-right: 0 !important;
}
::v-deep(.el-input__prefix) {
display: flex;
justify-content: center;
align-items: center;
}
::v-deep(.el-date-editor) {
// --el-date-editor-width: 200px !important;
--el-date-editor-width: 100% !important;
}
::v-deep(.el-dropdown) {
font-size: 12px;
}
::v-deep(.el-table thead tr th) {
padding: 0 !important;
height: 40px;
max-height: 40px;
text-align: left;
background: #F2F5F9;
color: #000;
}
::v-deep(.el-table thead tr th .cell) {
// text-align: left;
}
::v-deep(.el-table__body tbody tr td) {
padding: 0 !important;
}
::v-deep(.el-table__body tbody tr td .cell) {
// display: -webkit-box;
// white-space:normal;
// text-overflow: ellipsis;
// overflow: hidden;
// -webkit-line-clamp: 2;
// -webkit-box-orient: vertical;
}
::v-deep(.el-table__row) {
height: 50px !important;
}
::v-deep(.el-row) {
width: 100%;
}
::v-deep(.el-select) {
width: 100%;
}
::v-deep(.sale-details-container .sale-details-base-info .base-info-form-box .div-col .item-date[data-v-fae5bece] .el-input__inner) {
padding-right: 2px;
}
::v-deep(.el-table th.must>.cell::after) {
content: '*';
color: var(--el-color-danger) !important;
}
::v-deep(.tooltips-position) {
height: 50px;
color: #fff;
position: absolute;
z-index: -1;
}
::v-deep(.tooltips-position text) {
height: inherit !important;
width: inherit !important;
display: block;
}
.myNote {
display: -webkit-box;
text-overflow: ellipsis;
overflow: hidden;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
.getTextWidth {
font-size: 12px;
color: #fff;
}
::v-deep(.slide-fade-enter-active) {
transition: all 0s ease !important;
}
::v-deep(.slide-fade-leave-active) {
transition: all 0s ease !important;
}
::v-deep(.el-button:visited) {
background-color: #fff;
}
::v-deep(.el-button:focus) {
background-color: #fff;
}
::v-deep(.el-table--border .el-table__cell:first-child .cell) {
text-align: center;
}
::v-deep(.el-tabs__nav-scroll) {
background: #fff;
}
::v-deep(.el-tabs--border-card) {
border: none;
box-shadow: none;
}
::v-deep(.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active) {
border: 1px solid #909399 !important;
color: #303133 !important;
}
::v-deep(.el-tabs--border-card>.el-tabs__header .el-tabs__item) {
color: #909399 !important;
font-weight: 600;
border: 1px solid #909399 !important;
}
::v-deep(.el-tabs__item) {
padding: 0 8px !important;
height: 28px !important;
line-height: 28px !important;
}
::v-deep(.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child) {
margin-left: 0 !important;
margin-top: 0 !important;
position: relative;
}
::v-deep(.el-tabs__nav-scroll) {
padding-left: 12px !important;
position: relative;
}
::v-deep(.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child::before) {
content: '';
width: 4px;
height: 100%;
background-color: #4178D5;
position: absolute;
top: 0;
left: -12px;
}
::v-deep(.el-tabs__nav-scroll::before) {
content: '';
width: 100%;
height: 1px;
background-color: #EDEFF5;
position: absolute;
top: 50%;
z-index: 1;
}
.click-cell-ipt ::v-deep(.el-input__inner) {
border: none !important;
font-size: 12px;
// background-color: var(--el-table-row-hover-background-color);
padding: 0;
}
.click-cell-ipt ::v-deep(.el-autocomplete-suggestion li) {
width: 100%;
border: none !important;
font-size: 12px;
}
::v-deep(tbody tr:hover>td) {
background-color: var(--el-table-row-hover-background-color);
}
::v-deep(tbody tr:hover .el-input__inner) {
background-color: var(--el-table-row-hover-background-color);
}
::v-deep(.el-table--enable-row-transition .el-table__body td.el-table__cell) {
transition: none !important;
}
.click-cell-ipt ::v-deep(.el-input__suffix) {
display: none !important;
}
.click-cell-ipt ::v-deep(.el-table__cell .cell) {
height: inherit !important;
line-height: inherit !important;
}
::v-deep(.lead-time-style .el-input__inner) {
padding-left: 0px !important;
border: none;
}
::v-deep(.lead-time-style .el-input__prefix) {
justify-content: right !important;
left: 0 !important;
right: 1px !important;
}
::v-deep(.el-tabs__content) {
overflow: inherit !important;
}
::v-deep(.matter-code-box .el-input__inner) {
border: none !important;
padding-left: 0 !important;
padding-right: 0 !important;
}
::v-deep(.el-textarea__inner) {
font-size: 12px !important;
padding: 0 8px !important;
}
.address-textarea {
align-items: flex-start !important;
}
::v-deep(.el-textarea) {
padding-right: 8px;
}

View File

@@ -0,0 +1,71 @@
::v-deep(.el-table__row) {
height: 50px !important;
padding: 8px !important;
}
::v-deep(.el-table__row td) {
padding: 0;
}
::v-deep(.el-table thead tr th) {
padding: 0 !important;
height: 40px;
max-height: 40px;
}
.noteOrder {
display: -webkit-box;
text-overflow: ellipsis;
overflow: hidden;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
::v-deep(.total-select-item) {
margin-right: 24px !important;
}
::v-deep(.el-pagination__sizes) {
margin-right: 0 !important;
}
::v-deep(.el-pagination__total) {
margin-right: 24px !important;
}
::v-deep(.el-table .headerRight) {
background: #F2F5F9;
color: #000;
}
::v-deep(.el-table td.el-table__cell div) {
display: -webkit-box;
text-overflow: ellipsis;
overflow: hidden;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
::v-deep(.el-radio-group) {
display: flex !important;
flex-wrap: wrap !important;
}
::v-deep(.el-radio) {
width: 50% !important;
margin: 0 !important;
}
.sale-container ::v-deep(.s-p-t-g7::after),
.sale-container::v-deep(.s-p-t-g8::after),
.sale-container ::v-deep(.s-p-t-g9::after),
.sale-container ::v-deep(.s-p-t-g10::after) {
background: #fff !important;
}
.sale-container ::v-deep(.s-p-t-g7),
.sale-container ::v-deep(.s-p-t-g8),
.sale-container ::v-deep(.s-p-t-g9),
.sale-container ::v-deep(.s-p-t-g10) {
padding: 0;
}

View File

@@ -0,0 +1,142 @@
// 销售订单
::v-deep(.el-cascader-node__label) {
font-size: 12px;
}
::v-deep(.item-date .el-input__inner) {
padding: 0 16px 0 30px !important;
}
.isEisShow {
overflow: none !important;
white-space: none !important;
text-overflow: none !important;
}
.Iisshow :hover>.copyBtn{
display: block !important;
}
.copyBtn {
position: absolute;
left: 88%;
top: 2%;
display: none;
}
.copyBtnA {
position: absolute;
left: 95%;
top: 2%;
}
.copyBtnB{
z-index: 9999;
position: absolute;
left: 78%;
top: 2%;
}
.copyBtnC{
position: absolute;
left: 88%;
top: 30%;
}
.copyBtnS{
position: absolute;
left: 88%;
top: 30%;
display: none !important;
}
// 销售退货
::v-deep(.el-textarea__inner) {
font-size: 12px !important;
padding: 0 8px 0 8px !important;
}
.copyBtn1 {
position: absolute;
left: 85%;
top: 2%;
}
::v-deep(.table-header-row) {
background: #f5f7fa;
color: #000;
height: 41px;
font-size: 12px;
}
::v-deep(.table-body-row) {
height: 50px;
font-size: 12px;
}
.my-dropdown1 {
height: 200px;
overflow: auto;
border-radius: 4px;
border: 1px solid #dcdfe6;
background-color: #fff;
}
.list-item1:hover {
background-color: #f5f7fa;
}
// ::v-deep(.must){}
// ::v-deep(.must>.cell::after) {
// content: '*';
// color: var(--el-color-danger) !important;
// }
//物料列表
.mate-col-width {
::v-deep(.el-col .el-form-item .el-form-item__content .el-cascader .el-input .el-input__inner) {
width: 180px !important;
}
}
.mate-col-width {
::v-deep(.el-col .el-form-item .el-form-item__content .el-select .el-input .el-input__inner) {
width: 180px !important;
}
}
.mate-col-width {
::v-deep(.el-col .el-form-item .el-form-item__content .el-input .el-input__inner) {
width: 180px !important;
}
}
.mate-lable-padding {
::v-deep(.el-col .el-form-item .el-form-item__label) {
padding: 0 8px 0 0 !important;
}
}
.img-box {
display: flex;
justify-content: center;
align-items: center;
height: 50px;
}
//物料
.pro-info-form-box {
:deep(.el-form-item__label) {
width: 120px !important;
}
}
.size-info-form-box {
:deep(.el-form-item__label) {
width: 120px !important;
}
}
.other-info-form-box {
:deep(.el-form-item__label) {
width: 60px !important;
}
}
:deep(.el-upload-list--picture-card .el-upload-list__item) {
width: 120px;
height: 120px;
}
.line-28 {
line-height: 28px;
}
.tell-container .tell-info-query {
margin-left: 0 !important;
}
::v-deep(.xinxi .el-input___inner) {
width: 175px !important;
}

View File

@@ -0,0 +1,363 @@
::v-deep(.el-form-item) {
display: flex;
justify-content: center;
align-items: center;
}
::v-deep(.el-form-item__label) {
font-size: 12px;
padding-right: 6px;
height: 27px;
display: flex;
justify-content: right;
align-items: center;
min-width: 95px !important;
}
::v-deep(.el-input) {
line-height: 27px;
}
::v-deep(.el-input__inner) {
padding: 0 16px 0 8px !important;
height: 27px;
font-size: 12px;
line-height: 27px;
}
::v-deep(.el-form-item__content) {
line-height: 27px;
}
::v-deep(input::-webkit-input-placeholder) {
font-size: 12px;
}
::v-deep(input::-moz-input-placeholder) {
font-size: 12px;
}
::v-deep(input::-ms-input-placeholder) {
font-size: 12px;
}
::v-deep(.el-form-item) {
margin-bottom: 0;
}
::v-deep(.el-input__suffix) {
display: flex;
justify-content: center;
align-items: center;
}
::v-deep(.el-select-dropdown__item) {
font-size: 12px !important;
}
::v-deep(.el-form-item.is-required:not(.is-no-asterisk)>.el-form-item__label:before) {
content: '' !important;
color: #fff !important;
margin-right: 0 !important;
}
::v-deep(.el-form-item.is-required:not(.is-no-asterisk)>.el-form-item__label::before) {
content: '*' !important;
color: var(--el-color-danger) !important;
margin-right: 0 !important;
}
::v-deep(.el-input__prefix) {
display: flex;
justify-content: center;
align-items: center;
}
::v-deep(.el-date-editor) {
--el-date-editor-width: 100% !important;
}
::v-deep(.el-dropdown) {
font-size: 12px;
}
::v-deep(.el-table thead tr th) {
padding: 0 !important;
height: 40px;
max-height: 40px;
text-align: left;
background: #F2F5F9;
color: #000;
}
::v-deep(.el-table__body tbody tr td) {
padding: 0 !important;
}
::v-deep(.el-table__row) {
height: 50px !important;
}
::v-deep(.el-row) {
width: 100%;
}
::v-deep(.el-select) {
width: 100%;
}
::v-deep(.sale-details-container .sale-details-base-info .base-info-form-box .div-col .item-date[data-v-fae5bece] .el-input__inner) {
padding-right: 2px;
}
::v-deep(.el-table th.must>.cell::after) {
content: '*';
color: var(--el-color-danger) !important;
}
::v-deep(.tooltips-position) {
height: 50px;
color: #fff;
position: absolute;
z-index: -1;
}
::v-deep(.tooltips-position text) {
height: inherit !important;
width: inherit !important;
display: block;
}
::v-deep(.el-table td.el-table__cell div) {
display: -webkit-box;
text-overflow: ellipsis;
overflow: hidden;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
.getTextWidth {
font-size: 12px;
color: #fff;
}
::v-deep(.slide-fade-enter-active) {
transition: all 0s ease !important;
}
::v-deep(.slide-fade-leave-active) {
transition: all 0s ease !important;
}
::v-deep(.el-table--border .el-table__cell:first-child .cell) {
text-align: center;
}
::v-deep(.el-autocomplete-suggestion li) {
font-size: 12px !important;
}
::v-deep(.el-tabs__nav-scroll) {
background: #fff;
}
::v-deep(.el-tabs--border-card) {
border: none;
box-shadow: none;
}
::v-deep(.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active) {
border: 1px solid #909399 !important;
color: #303133 !important;
}
::v-deep(.el-tabs--border-card>.el-tabs__header .el-tabs__item) {
color: #909399 !important;
font-weight: 600;
border: 1px solid #909399 !important;
}
::v-deep(.el-tabs__item) {
padding: 0 8px !important;
height: 28px !important;
line-height: 28px !important;
}
::v-deep(.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child) {
margin-left: 0 !important;
margin-top: 0 !important;
position: relative;
}
::v-deep(.el-tabs__nav-scroll) {
padding-top: 15px !important;
padding-left: 12px !important;
position: relative;
}
::v-deep(.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child::before) {
content: '';
width: 4px;
height: 50%;
background-color: #4178D5;
position: absolute;
top: 50%;
left: -12px;
transform: translateY(-50%);
}
// ::v-deep(.el-tabs__nav-scroll::before) {
// content: '';
// width: calc(100% - 168px);
// height: 1px;
// background-color: #EDEFF5;
// position: absolute;
// top: 50%;
// left: 168px;
// z-index: 1;
// }
::v-deep(.el-autocomplete) {
width: 100% !important;
border: none !important;
}
::v-deep(tbody .el-autocomplete .el-input__inner) {
border: none !important;
}
.click-cell-ipt ::v-deep(.el-input__inner) {
// border: none !important;
font-size: 12px;
// padding: 0;
}
::v-deep(.click-cell-ipt-issue .select-trigger .el-input .el-input__inner) {
padding: 0 16px 0 8px !important;
}
::v-deep(.click-cell-ipt-c .el-input .el-input__inner) {
padding: 0 16px 0 8px !important;
}
.click-cell-ipt ::v-deep(.el-autocomplete-suggestion li) {
width: 100%;
border: none !important;
font-size: 12px;
}
::v-deep(.el-table--enable-row-transition .el-table__body td.el-table__cell) {
transition: none !important;
}
.click-cell-ipt ::v-deep(.el-input__suffix) {
display: none !important;
}
.click-cell-ipt ::v-deep(.el-table__cell .cell) {
height: inherit !important;
line-height: inherit !important;
}
::v-deep(.el-tabs__content) {
overflow: inherit !important;
}
::v-deep(.el-input__inner) {
height: 28px !important;
line-height: 28px !important;
}
::v-deep(.el-table__row .el-select .el-input__inner) {
height: 28px !important;
line-height: 28px !important;
// border: none;
}
::v-deep(.lead-time-style .el-input__inner) {
padding-left: 0px !important;
// border: none;
}
::v-deep(.lead-time-style .el-input__prefix) {
justify-content: right !important;
left: 0 !important;
right: 1px !important;
}
::v-deep(tbody tr:hover>td) {
background-color: var(--el-table-row-hover-background-color);
}
::v-deep(tbody tr:hover .el-input__inner) {
background-color: var(--el-table-row-hover-background-color);
}
.t-r {
text-align: right;
}
.t-r ::v-deep(.el-input__inner) {
text-align: right;
}
.disable {
background: rgb(245, 247, 250)
}
.disable ::v-deep(.el-input__inner) {
background: rgb(245, 247, 250)
}
::v-deep(.el-textarea__inner) {
font-size: 12px !important;
padding: 0 8px 0 8px !important;
}
.address-textarea {
align-items: flex-start !important;
}
.order-create-btn-group ::v-deep(.s-p-t-g4::after) {
background: #fff !important;
}
.f-c {
color: var(--el-disabled-color-base) !important;
}
::v-deep(.is-checkbox .cell .el-checkbox .el-checkbox__input .el-checkbox__inner) {
background-color: var(--el-checkbox-disabled-input-fill) !important;
border-color: var(--el-checkbox-disabled-border-color) !important;
cursor: not-allowed;
}
::v-deep(.el-table td.el-table__cell div) {
display: -webkit-box;
text-overflow: ellipsis;
overflow: hidden;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
.order-create-btn-group ::v-deep(.s-p-t-g7::after),
.order-create-btn-group ::v-deep(.s-p-t-g8::after),
.order-create-btn-group ::v-deep(.s-p-t-g9::after),
.order-create-btn-group ::v-deep(.s-p-t-g10::after) {
background: #fff !important;
}
.order-create-btn-group ::v-deep(.s-p-t-g7),
.order-create-btn-group ::v-deep(.s-p-t-g8),
.order-create-btn-group ::v-deep(.s-p-t-g9),
.order-create-btn-group ::v-deep(.s-p-t-g10) {
padding: 0;
}
::v-deep(.el-textarea__inner) {
width: 172px;
font-size: 12px !important;
padding: 0 8px 0 8px !important;
}

View File

@@ -0,0 +1,363 @@
::v-deep(.el-form-item) {
display: flex;
justify-content: center;
align-items: center;
}
::v-deep(.el-form-item__label) {
font-size: 12px;
padding-right: 6px;
height: 27px;
display: flex;
justify-content: right;
align-items: center;
width: 96px !important;
}
::v-deep(.el-input) {
line-height: 27px;
}
::v-deep(.el-input__inner) {
padding: 0 16px 0 8px !important;
height: 27px;
font-size: 12px;
line-height: 27px;
}
::v-deep(.click-cell-ipt-issue .select-trigger .el-input .el-input__inner) {
padding: 0 16px 0 8px !important;
}
::v-deep(.click-cell-ipt-c .el-input .el-input__inner) {
padding: 0 16px 0 8px !important;
}
::v-deep(.el-form-item__content) {
line-height: 28px;
}
::v-deep(input::-webkit-input-placeholder) {
font-size: 12px;
}
::v-deep(input::-moz-input-placeholder) {
font-size: 12px;
}
::v-deep(input::-ms-input-placeholder) {
font-size: 12px;
}
::v-deep(.el-form-item) {
margin-bottom: 0;
}
::v-deep(.el-input__suffix) {
display: flex;
justify-content: center;
align-items: center;
}
::v-deep(.el-select-dropdown__item) {
font-size: 12px !important;
}
::v-deep(.el-form-item.is-required:not(.is-no-asterisk)>.el-form-item__label:before) {
content: '' !important;
color: #fff !important;
margin-right: 0 !important;
}
::v-deep(.el-form-item.is-required:not(.is-no-asterisk)>.el-form-item__label::before) {
content: '*' !important;
color: var(--el-color-danger) !important;
margin-right: 0 !important;
}
::v-deep(.el-input__prefix) {
display: flex;
justify-content: center;
align-items: center;
}
::v-deep(.el-date-editor) {
--el-date-editor-width: 100% !important;
}
::v-deep(.el-dropdown) {
font-size: 12px;
}
::v-deep(.el-table thead tr th) {
padding: 0 !important;
height: 40px;
max-height: 40px;
text-align: left;
background: #F2F5F9;
color: #000;
}
::v-deep(.el-table__body tbody tr td) {
padding: 0 !important;
}
::v-deep(.el-table__row) {
height: 50px !important;
}
::v-deep(.el-row) {
width: 100%;
}
::v-deep(.el-select) {
width: 100%;
}
::v-deep(.sale-details-container .sale-details-base-info .base-info-form-box .div-col .item-date[data-v-fae5bece] .el-input__inner) {
padding-right: 2px;
}
::v-deep(.el-table th.must>.cell::after) {
content: '*';
color: var(--el-color-danger) !important;
}
::v-deep(.tooltips-position) {
height: 50px;
color: #fff;
position: absolute;
z-index: -1;
}
::v-deep(.tooltips-position text) {
height: inherit !important;
width: inherit !important;
display: block;
}
::v-deep(.el-table td.el-table__cell div) {
display: -webkit-box;
text-overflow: ellipsis;
overflow: hidden;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
.getTextWidth {
font-size: 12px;
color: #fff;
}
::v-deep(.slide-fade-enter-active) {
transition: all 0s ease !important;
}
::v-deep(.slide-fade-leave-active) {
transition: all 0s ease !important;
}
::v-deep(.el-table--border .el-table__cell:first-child .cell) {
text-align: center;
}
::v-deep(.el-autocomplete-suggestion li) {
font-size: 12px !important;
}
::v-deep(.el-tabs__nav-scroll) {
background: #fff;
}
::v-deep(.el-tabs--border-card) {
border: none;
box-shadow: none;
}
::v-deep(.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active) {
border: 1px solid #909399 !important;
color: #303133 !important;
}
::v-deep(.el-tabs--border-card>.el-tabs__header .el-tabs__item) {
color: #909399 !important;
font-weight: 600;
border: 1px solid #909399 !important;
}
::v-deep(.el-tabs__item) {
padding: 0 8px !important;
height: 28px !important;
line-height: 28px !important;
}
::v-deep(.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child) {
margin-left: 0 !important;
margin-top: 0 !important;
position: relative;
}
::v-deep(.el-tabs__nav-scroll) {
padding-top: 15px !important;
padding-left: 12px !important;
position: relative;
}
::v-deep(.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child::before) {
content: '';
width: 4px;
height: 50%;
background-color: #4178D5;
position: absolute;
top: 50%;
left: -12px;
transform: translateY(-50%);
}
// ::v-deep(.el-tabs__nav-scroll::before) {
// content: '';
// width: calc(100% - 168px);
// height: 1px;
// background-color: #EDEFF5;
// position: absolute;
// top: 50%;
// left: 168px;
// z-index: 1;
// }
::v-deep(.el-autocomplete) {
width: 100% !important;
border: none !important;
}
::v-deep(tbody .el-autocomplete .el-input__inner) {
border: none !important;
}
// .click-cell-ipt ::v-deep(.el-input__inner) {
// border: none !important;
// font-size: 12px;
// padding: 0;
// }
.click-cell-ipt ::v-deep(.el-autocomplete-suggestion li) {
width: 100%;
border: none !important;
font-size: 12px;
}
::v-deep(.el-table--enable-row-transition .el-table__body td.el-table__cell) {
transition: none !important;
}
.click-cell-ipt ::v-deep(.el-input__suffix) {
display: none !important;
}
.click-cell-ipt ::v-deep(.el-table__cell .cell) {
height: inherit !important;
line-height: inherit !important;
}
::v-deep(.el-tabs__content) {
overflow: inherit !important;
}
::v-deep(.el-input__inner) {
height: 28px !important;
line-height: 28px !important;
}
::v-deep(.el-table__row .el-select .el-input__inner) {
height: 28px !important;
line-height: 28px !important;
// border: none;
}
.order-create-btn-group ::v-deep(.s-p-t-g4::after) {
background: #fff !important;
}
::v-deep(.lead-time-style .el-input__inner) {
padding: 0px 30px 0 8px !important;
// border: none;
}
::v-deep(.lead-time-style .el-input__prefix) {
justify-content: right !important;
left: 0 !important;
right: 1px !important;
}
::v-deep(tbody tr:hover>td) {
background-color: var(--el-table-row-hover-background-color);
}
::v-deep(tbody tr:hover .el-input__inner) {
background-color: var(--el-table-row-hover-background-color);
}
.t-r {
text-align: right;
}
.t-r ::v-deep(.el-input__inner) {
text-align: right;
}
.disable {
background: rgb(245, 247, 250)
}
.disable ::v-deep(.el-input__inner) {
background: rgb(245, 247, 250)
}
.f-c {
color: var(--el-disabled-color-base) !important;
}
::v-deep(.is-checkbox .cell .el-checkbox .el-checkbox__input .el-checkbox__inner) {
background-color: var(--el-checkbox-disabled-input-fill) !important;
border-color: var(--el-checkbox-disabled-border-color) !important;
cursor: not-allowed;
}
::v-deep(.el-radio-group) {
display: flex !important;
flex-wrap: wrap !important;
}
::v-deep(.el-radio) {
width: 50% !important;
margin: 0 !important;
}
::v-deep(.el-table td.el-table__cell div) {
display: -webkit-box;
text-overflow: ellipsis;
overflow: hidden;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
.order-create-btn-group ::v-deep(.s-p-t-g7::after),
.order-create-btn-group::v-deep(.s-p-t-g8::after),
.order-create-btn-group ::v-deep(.s-p-t-g9::after),
.order-create-btn-group ::v-deep(.s-p-t-g10::after) {
background: #fff !important;
}
.order-create-btn-group ::v-deep(.s-p-t-g7),
.order-create-btn-group ::v-deep(.s-p-t-g8),
.order-create-btn-group ::v-deep(.s-p-t-g9),
.order-create-btn-group ::v-deep(.s-p-t-g10) {
padding: 0;
}
::v-deep(.el-textarea__inner) {
width: 166px !important;
font-size: 12px !important;
padding: 0 8px 0 8px !important;
}

View File

@@ -0,0 +1,357 @@
::v-deep(.el-form-item) {
display: flex;
justify-content: center;
align-items: center;
}
::v-deep(.el-form-item__label) {
font-size: 12px;
padding-right: 6px;
height: 27px;
display: flex;
justify-content: right;
align-items: center;
width: 96px !important;
}
::v-deep(.el-input) {
line-height: 27px;
}
::v-deep(.el-input__inner) {
padding: 0 8px;
height: 27px;
font-size: 12px;
line-height: 27px;
}
::v-deep(.el-form-item__content) {
line-height: 28px;
}
::v-deep(input::-webkit-input-placeholder) {
font-size: 12px;
}
::v-deep(input::-moz-input-placeholder) {
font-size: 12px;
}
::v-deep(input::-ms-input-placeholder) {
font-size: 12px;
}
::v-deep(.el-form-item) {
margin-bottom: 0;
}
::v-deep(.el-input__suffix) {
display: flex;
justify-content: center;
align-items: center;
}
::v-deep(.el-select-dropdown__item) {
font-size: 12px !important;
}
::v-deep(.el-form-item.is-required:not(.is-no-asterisk)>.el-form-item__label:before) {
content: '' !important;
color: #fff !important;
margin-right: 0 !important;
}
::v-deep(.el-form-item.is-required:not(.is-no-asterisk)>.el-form-item__label::before) {
content: '*' !important;
color: var(--el-color-danger) !important;
margin-right: 0 !important;
}
::v-deep(.el-input__prefix) {
display: flex;
justify-content: center;
align-items: center;
}
::v-deep(.el-date-editor) {
--el-date-editor-width: 100% !important;
}
::v-deep(.el-dropdown) {
font-size: 12px;
}
::v-deep(.el-table thead tr th) {
padding: 0 !important;
height: 40px;
max-height: 40px;
text-align: left;
background: #F2F5F9;
color: #000;
}
::v-deep(.el-table__body tbody tr td) {
padding: 0 !important;
}
::v-deep(.el-table__row) {
height: 50px !important;
}
::v-deep(.el-row) {
width: 100%;
}
::v-deep(.el-select) {
width: 100%;
}
::v-deep(.sale-details-container .sale-details-base-info .base-info-form-box .div-col .item-date[data-v-fae5bece] .el-input__inner) {
padding-right: 2px;
}
::v-deep(.el-table th.must>.cell::after) {
content: '*';
color: var(--el-color-danger) !important;
}
::v-deep(.tooltips-position) {
height: 50px;
color: #fff;
position: absolute;
z-index: -1;
}
::v-deep(.tooltips-position text) {
height: inherit !important;
width: inherit !important;
display: block;
}
::v-deep(.el-table td.el-table__cell div) {
display: -webkit-box;
text-overflow: ellipsis;
overflow: hidden;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
.getTextWidth {
font-size: 12px;
color: #fff;
}
::v-deep(.slide-fade-enter-active) {
transition: all 0s ease !important;
}
::v-deep(.slide-fade-leave-active) {
transition: all 0s ease !important;
}
::v-deep(.el-table--border .el-table__cell:first-child .cell) {
text-align: center;
}
::v-deep(.el-autocomplete-suggestion li) {
font-size: 12px !important;
}
::v-deep(.el-tabs__nav-scroll) {
background: #fff;
}
::v-deep(.el-tabs--border-card) {
border: none;
box-shadow: none;
}
::v-deep(.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active) {
border: 1px solid #909399 !important;
color: #303133 !important;
}
::v-deep(.el-tabs--border-card>.el-tabs__header .el-tabs__item) {
color: #909399 !important;
font-weight: 600;
border: 1px solid #909399 !important;
}
::v-deep(.el-tabs__item) {
padding: 0 8px !important;
height: 28px !important;
line-height: 28px !important;
}
::v-deep(.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child) {
margin-left: 0 !important;
margin-top: 0 !important;
position: relative;
}
::v-deep(.el-tabs__nav-scroll) {
padding-top: 15px !important;
padding-left: 12px !important;
position: relative;
}
::v-deep(.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child::before) {
content: '';
width: 4px;
height: 50%;
background-color: #4178D5;
position: absolute;
top: 50%;
left: -12px;
transform: translateY(-50%);
}
// ::v-deep(.el-tabs__nav-scroll::before) {
// content: '';
// width: calc(100% - 168px);
// height: 1px;
// background-color: #EDEFF5;
// position: absolute;
// top: 50%;
// left: 168px;
// z-index: 1;
// }
::v-deep(.el-autocomplete) {
width: 100% !important;
border: none !important;
}
::v-deep(tbody .el-autocomplete .el-input__inner) {
border: none !important;
}
// .click-cell-ipt ::v-deep(.el-input__inner) {
// border: none !important;
// font-size: 12px;
// padding: 0;
// }
.click-cell-ipt ::v-deep(.el-autocomplete-suggestion li) {
width: 100%;
border: none !important;
font-size: 12px;
}
::v-deep(.el-table--enable-row-transition .el-table__body td.el-table__cell) {
transition: none !important;
}
// .click-cell-ipt ::v-deep(.el-input__suffix) {
// display: none !important;
// }
.click-cell-ipt ::v-deep(.el-table__cell .cell) {
height: inherit !important;
line-height: inherit !important;
}
::v-deep(.el-tabs__content) {
overflow: inherit !important;
}
::v-deep(.el-input__inner) {
height: 28px !important;
line-height: 28px !important;
}
::v-deep(.el-table__row .el-select .el-input__inner) {
height: 28px !important;
line-height: 28px !important;
// border: none;
}
.order-create-btn-group ::v-deep(.s-p-t-g4::after) {
background: #fff !important;
}
::v-deep(.lead-time-style .el-input__inner) {
padding: 0px 30px 0 8px !important;
// border: none;
}
::v-deep(.click-cell-ipt-issue .select-trigger .el-input .el-input__inner) {
padding: 0 16px 0 8px !important;
}
::v-deep(.click-cell-ipt-c .el-input .el-input__inner) {
padding: 0 16px 0 8px !important;
}
::v-deep(.lead-time-style .el-input__prefix) {
justify-content: right !important;
left: 0 !important;
right: 1px !important;
}
::v-deep(tbody tr:hover>td) {
background-color: var(--el-table-row-hover-background-color);
}
::v-deep(tbody tr:hover .el-input__inner) {
background-color: var(--el-table-row-hover-background-color);
}
.t-r {
text-align: right;
}
// .t-r ::v-deep(.el-input__inner) {
// text-align: right;
// }
.disable {
background: rgb(245, 247, 250)
}
.disable ::v-deep(.el-input__inner) {
background: rgb(245, 247, 250)
}
.f-c {
color: var(--el-disabled-color-base) !important;
}
::v-deep(.is-checkbox .cell .el-checkbox .el-checkbox__input .el-checkbox__inner) {
background-color: var(--el-checkbox-disabled-input-fill) !important;
border-color: var(--el-checkbox-disabled-border-color) !important;
cursor: not-allowed;
}
::v-deep(.el-radio-group) {
display: flex !important;
flex-wrap: wrap !important;
}
::v-deep(.el-radio) {
width: 50% !important;
margin: 0 !important;
}
::v-deep(.el-table td.el-table__cell div) {
display: -webkit-box;
text-overflow: ellipsis;
overflow: hidden;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
.order-create-btn-group ::v-deep(.s-p-t-g7::after),
.order-create-btn-group::v-deep(.s-p-t-g8::after),
.order-create-btn-group ::v-deep(.s-p-t-g9::after),
.order-create-btn-group ::v-deep(.s-p-t-g10::after) {
background: #fff !important;
}
.order-create-btn-group ::v-deep(.s-p-t-g7),
.order-create-btn-group ::v-deep(.s-p-t-g8),
.order-create-btn-group ::v-deep(.s-p-t-g9),
.order-create-btn-group ::v-deep(.s-p-t-g10) {
padding: 0;
}

View File

@@ -0,0 +1,303 @@
::v-deep(.el-form-item) {
display: flex;
justify-content: center;
align-items: center;
}
::v-deep(.el-form-item__label) {
font-size: 12px;
padding-right: 6px;
height: 28px;
// line-height: 38px;
display: flex;
justify-content: right;
align-items: center;
width: 97px !important;
}
::v-deep(.el-input) {
line-height: 27px;
}
::v-deep(.el-input-deta) {
padding-left: 30px !important;
}
::v-deep(.el-form-item__content) {
line-height: 27px;
}
::v-deep(input::-webkit-input-placeholder) {
font-size: 12px;
}
::v-deep(input::-moz-input-placeholder) {
font-size: 12px;
}
::v-deep(input::-ms-input-placeholder) {
font-size: 12px;
}
::v-deep(.el-form-item) {
margin-bottom: 0;
}
::v-deep(.el-input__suffix) {
display: flex;
justify-content: center;
align-items: center;
}
::v-deep(.el-select-dropdown__item) {
font-size: 12px !important;
}
::v-deep(.el-form-item.is-required:not(.is-no-asterisk)>.el-form-item__label:before) {
content: '' !important;
color: #fff !important;
margin-right: 0 !important;
}
::v-deep(.el-form-item.is-required:not(.is-no-asterisk)>.el-form-item__label::before) {
content: '*' !important;
color: var(--el-color-danger) !important;
margin-right: 0 !important;
}
::v-deep(.el-input__prefix) {
display: flex;
justify-content: center;
align-items: center;
}
::v-deep(.el-date-editor) {
// --el-date-editor-width: 200px !important;
--el-date-editor-width: 100% !important;
}
::v-deep(.el-dropdown) {
font-size: 12px;
}
::v-deep(.el-table thead tr th) {
padding: 0 !important;
height: 40px;
max-height: 40px;
text-align: left;
background: #F2F5F9;
color: #000;
}
::v-deep(.el-table thead tr th .cell) {
// text-align: left;
}
::v-deep(.el-table__body tbody tr td) {
padding: 0 !important;
}
::v-deep(.el-table__body tbody tr td .cell) {
// display: -webkit-box;
// white-space:normal;
// text-overflow: ellipsis;
// overflow: hidden;
// -webkit-line-clamp: 2;
// -webkit-box-orient: vertical;
}
::v-deep(.el-table__row) {
height: 50px !important;
}
::v-deep(.el-row) {
width: 100%;
}
::v-deep(.el-select) {
width: 100%;
}
::v-deep(.sale-details-container .sale-details-base-info .base-info-form-box .div-col .item-date[data-v-fae5bece] .el-input__inner) {
// padding-right: 30px;
padding: 0 8px 0 30px !important;
}
::v-deep(.el-table th.must>.cell::after) {
content: '*';
color: var(--el-color-danger) !important;
}
::v-deep(.tooltips-position) {
height: 50px;
color: #fff;
position: absolute;
z-index: -1;
}
::v-deep(.tooltips-position text) {
height: inherit !important;
width: inherit !important;
display: block;
}
.myNote {
display: -webkit-box;
text-overflow: ellipsis;
overflow: hidden;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
.getTextWidth {
font-size: 12px;
color: #fff;
}
::v-deep(.slide-fade-enter-active) {
transition: all 0s ease !important;
}
::v-deep(.slide-fade-leave-active) {
transition: all 0s ease !important;
}
::v-deep(.el-button:visited) {
background-color: #fff;
}
::v-deep(.el-table--border .el-table__cell:first-child .cell) {
text-align: center;
}
::v-deep(.el-tabs__nav-scroll) {
background: #fff;
}
::v-deep(.el-tabs--border-card) {
border: none;
box-shadow: none;
}
::v-deep(.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active) {
border: 1px solid #909399 !important;
color: #303133 !important;
}
::v-deep(.el-tabs--border-card>.el-tabs__header .el-tabs__item) {
color: #909399 !important;
font-weight: 600;
border: 1px solid #909399 !important;
}
::v-deep(.el-tabs__item) {
padding: 0 8px !important;
height: 28px !important;
line-height: 28px !important;
}
::v-deep(.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child) {
margin-left: 0 !important;
margin-top: 0 !important;
position: relative;
}
::v-deep(.el-tabs__nav-scroll) {
padding-top: 15px !important;
padding-left: 12px !important;
position: relative;
}
::v-deep(.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child::before) {
content: '';
width: 4px;
height: 100%;
background-color: #4178D5;
position: absolute;
top: 0;
left: -12px;
}
// ::v-deep(.el-tabs__nav-scroll::before) {
// content: '';
// width: 100%;
// height: 1px;
// background-color: #EDEFF5;
// position: absolute;
// top: 50%;
// z-index: 1;
// }
.click-cell-ipt ::v-deep(.el-input__inner) {
// border: none !important;
font-size: 12px;
// background-color: var(--el-table-row-hover-background-color);
padding: 0;
}
.click-cell-ipt ::v-deep(.el-autocomplete-suggestion li) {
width: 100%;
border: none !important;
font-size: 12px;
}
::v-deep(tbody tr:hover>td) {
background-color: var(--el-table-row-hover-background-color);
}
::v-deep(tbody tr:hover .el-input__inner) {
background-color: var(--el-table-row-hover-background-color);
}
::v-deep(.el-table--enable-row-transition .el-table__body td.el-table__cell) {
transition: none !important;
}
.click-cell-ipt ::v-deep(.el-input__suffix) {
display: none !important;
}
.click-cell-ipt ::v-deep(.el-table__cell .cell) {
height: inherit !important;
line-height: inherit !important;
}
::v-deep(.lead-time-style .el-input__inner) {
padding-left: 0px !important;
border: none;
}
::v-deep(.lead-time-style .el-input__prefix) {
justify-content: right !important;
left: 0 !important;
right: 1px !important;
}
::v-deep(.el-tabs__content) {
overflow: inherit !important;
}
::v-deep(.matter-code-box .el-input__inner) {
border: none !important;
padding-left: 0 !important;
padding-right: 0 !important;
}
.sale-details-btn-group ::v-deep(.s-p-t-g7::after),
.sale-details-btn-group::v-deep(.s-p-t-g8::after),
.sale-details-btn-group ::v-deep(.s-p-t-g9::after),
.sale-details-btn-group ::v-deep(.s-p-t-g10::after) {
background: #fff !important;
}
.sale-details-btn-group ::v-deep(.s-p-t-g7),
.sale-details-btn-group ::v-deep(.s-p-t-g8),
.sale-details-btn-group ::v-deep(.s-p-t-g9),
.sale-details-btn-group ::v-deep(.s-p-t-g10) {
padding: 0;
}

View File

@@ -0,0 +1,95 @@
::v-deep(.el-table__row) {
height: 50px !important;
padding: 8px !important;
}
::v-deep(.el-table__row td) {
padding: 0;
}
::v-deep(.el-table thead tr th) {
padding: 0 !important;
height: 40px;
max-height: 40px;
}
::v-deep(.el-table thead tr th) {
padding: 0 !important;
height: 40px;
max-height: 40px;
text-align: left;
background: #F2F5F9;
color: #000;
}
.noteOrder {
display: -webkit-box;
text-overflow: ellipsis;
overflow: hidden;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
::v-deep(.total-select-item) {
margin-right: 24px !important;
}
::v-deep(.el-pagination__sizes) {
margin-right: 0 !important;
}
::v-deep(.el-pagination__total) {
margin-right: 24px !important;
}
::v-deep(.el-table .headerRight) {
background: #F2F5F9;
color: #000;
}
.caidandiv {
margin-bottom: 15px;
span {
cursor: pointer;
margin-right: 15px;
}
}
::v-deep(.el-radio-group) {
display: flex !important;
flex-wrap: wrap !important;
}
::v-deep(.el-radio) {
width: 50% !important;
margin: 0 !important;
}
::v-deep(.el-table td.el-table__cell div),
::v-deep(.el-table th.el-table__cell div) {
display: -webkit-box;
// line-height: 20px;
text-overflow: ellipsis;
overflow: hidden;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
// ::v-deep(.el-table th.el-table__cell div .el-input___inner) {
// padding: 0 30px 0 8px !important;
// }
.sale-container ::v-deep(.s-p-t-g7::after),
.sale-container::v-deep(.s-p-t-g8::after),
.sale-container ::v-deep(.s-p-t-g9::after),
.sale-container ::v-deep(.s-p-t-g10::after) {
background: #fff !important;
}
.sale-container ::v-deep(.s-p-t-g7),
.sale-container ::v-deep(.s-p-t-g8),
.sale-container ::v-deep(.s-p-t-g9),
.sale-container ::v-deep(.s-p-t-g10) {
padding: 0;
}

View File

@@ -0,0 +1,83 @@
::v-deep(.el-table__row) {
height: 50px !important;
padding: 8px !important;
}
::v-deep(.el-table__row td) {
padding: 0;
}
::v-deep(.el-table thead tr th) {
padding: 0 !important;
height: 40px;
max-height: 40px;
}
.noteOrder {
display: -webkit-box;
text-overflow: ellipsis;
overflow: hidden;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
::v-deep(.total-select-item) {
margin-right: 24px !important;
}
::v-deep(.el-pagination__sizes) {
margin-right: 0 !important;
}
::v-deep(.el-pagination__total) {
margin-right: 24px !important;
}
::v-deep(.el-table .headerRight) {
background: #F2F5F9;
color: #000;
}
::v-deep(.el-table td.el-table__cell div) {
display: -webkit-box;
text-overflow: ellipsis;
overflow: hidden;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
::v-deep(.el-date-editor .el-range-separator) {
display: flex !important;
justify-content: center !important;
align-items: center !important;
color: #9b9fa5 !important
}
::v-deep(.el-table td.el-table__cell div) {
display: -webkit-box;
text-overflow: ellipsis;
overflow: hidden;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
.return-order-page-top ::v-deep(.s-p-t-g7::after),
.return-order-page-top::v-deep(.s-p-t-g8::after),
.return-order-page-top ::v-deep(.s-p-t-g9::after),
.return-order-page-top ::v-deep(.s-p-t-g10::after) {
background: #fff !important;
}
.return-order-page-top ::v-deep(.s-p-t-g7),
.return-order-page-top ::v-deep(.s-p-t-g8),
.return-order-page-top ::v-deep(.s-p-t-g9),
.return-order-page-top ::v-deep(.s-p-t-g10) {
padding: 0;
}
::v-deep(.el-textarea__inner) {
width: 172px;
font-size: 12px !important;
padding: 0 8px 0 8px !important;
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,60 @@
// 分步式调出单
.f-c {
color: var(--el-disabled-color-base) !important;
}
::v-deep(.is-checkbox .cell .el-checkbox .el-checkbox__input .el-checkbox__inner) {
background-color: var(--el-checkbox-disabled-input-fill) !important;
border-color: var(--el-checkbox-disabled-border-color) !important;
cursor: not-allowed;
}
:v-deep(.el-form-item__label) {
width: 90px !important;
}
.order-com-rr {
::v-deep(.el-form-item__content .el-input .el-input__inner) {
padding: 0 16px 0 8px !important;
}
}
::v-deep(.div-col .el-input .el-input__inner) {
padding: 0 16px 0 8px !important;
width: 165px !important;
}
::v-deep(.div-col .el-textarea__inner) {
padding: 0 8px !important ;
}
::v-deep(.div-col .icon-sty .el-input__suffix) {
margin: 0 20px 0 0 !important ;
}
::v-deep(.icon-x .el-input__suffix-inner) {
position: absolute;
left: -45px;
top: -5px;
}
// 分步式调入单
.f-c {
color: var(--el-disabled-color-base) !important;
}
::v-deep(.is-checkbox .cell .el-checkbox .el-checkbox__input .el-checkbox__inner) {
background-color: var(--el-checkbox-disabled-input-fill) !important;
border-color: var(--el-checkbox-disabled-border-color) !important;
cursor: not-allowed;
}
:v-deep(.el-form-item__label) {
width: 90px !important;
}
.order-com-rr {
::v-deep(.el-form-item__content .el-input .el-input__inner) {
padding: 0 16px 0 8px !important;
}
}
::v-deep(.input-width .el-input__inner) {
width: 165px !important ;
}
::v-deep(.div-col .icon-sty .el-input__suffix) {
margin: 0 20px 0 0 !important ;
}

BIN
src/assets/up@3x.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 311 B

1
src/assets/vue.svg Normal file
View File

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

BIN
src/assets/wrong@3x.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 408 B

BIN
src/assets/wuliao.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 478 B

View File

@@ -0,0 +1,64 @@
<template>
<div class="btns_box">
<div
v-for="item in props.btns"
:key="item.name"
:style="item.style"
class="btns_item"
@click="handleBtnItemClick(item)"
>
<!-- CirclePlus -->
<i :class="item.icon" style="margin-right: 6px" v-if="item.icon" />
<span>{{ item.name }}</span>
</div>
</div>
</template>
<script setup>
import { msg } from '@/utils/lodash/msg.js';
import { ref } from 'vue';
const props = defineProps({
btns: {
type: Array,
default: [],
required: true,
},
isOperate: {
type: Boolean,
},
handleBtnItemClick: {
type: Function,
default: () => {},
required: true,
},
});
const emits = defineEmits(['handleBtnItemClick']);
const handleBtnItemClick = (item) => {
if (props.isOperate && item.name !== '新增') {
// msg('warning', '请等待结果返回后再进行操作!');
return;
}
emits('handleBtnItemClick', item);
};
</script>
<style lang="scss" scoped>
.btns_box {
display: flex;
margin: 16px 16px 0 16px;
.btns_item {
cursor: pointer;
border-radius: 4px;
display: flex;
justify-content: center;
align-items: center;
color: #000;
font-size: 12px;
:hover {
opacity: 0.5;
}
}
}
</style>

View File

@@ -0,0 +1,40 @@
<script setup>
import { ref } from 'vue'
defineProps({
msg: String
})
const count = ref(0)
</script>
<template>
<h1>{{ msg }}</h1>
<div class="card">
<button type="button" @click="count++">count is {{ count }}</button>
<p>
Edit
<code>components/HelloWorld.vue</code> to test HMR
</p>
</div>
<p>
Check out
<a href="https://vuejs.org/guide/quick-start.html#local" target="_blank"
>create-vue</a
>, the official Vue + Vite starter
</p>
<p>
Install
<a href="https://github.com/johnsoncodehk/volar" target="_blank">Volar</a>
in your IDE for a better DX
</p>
<p class="read-the-docs">Click on the Vite and Vue logos to learn more</p>
</template>
<style scoped>
.read-the-docs {
color: #888;
}
</style>

View File

@@ -0,0 +1,106 @@
.examineTop_box {
margin-left: 16px;
margin-right: 16px;
.btns_box {
display: flex;
margin: 16px 0;
.btns_item {
cursor: pointer;
width: 76px;
height: 30px;
border-radius: 4px;
display: flex;
justify-content: center;
align-items: center;
background: rgba(65, 120, 213, 1);
color: #fff;
font-size: 12px;
:hover {
opacity: 0.5;
}
span {
margin-left: 5px;
}
}
.btns_item1 {
cursor: pointer;
width: 76px;
height: 30px;
border-radius: 4px;
display: flex;
background: #fff;
justify-content: center;
align-items: center;
color: #000;
font-size: 12px;
margin-left: 8px;
:hover {
opacity: 0.5;
}
span {
margin-left: 5px;
}
}
}
.examine_box {
width: 100%;
height: 139px;
border-radius: 4px;
background: #fff;
// margin-left: 16px;
// margin-right: 16px;
}
.detailed_box {
display: flex;
padding-left: 24px;
padding-top: 14px;
align-items: center;
.detailed_line {
width: 4px;
height: 14px;
background: rgba(65, 120, 213, 1);
margin-right: 8px;
}
.detailed_title {
font-size: 14px;
font-weight: 700;
}
}
.look {
display: flex;
justify-content: center;
align-items: center;
margin-left: 18px;
cursor: pointer;
.look-text {
color: rgba(31, 31, 31, 1);
margin-left: 5px;
font-size: 12px;
}
}
.input-style {
width: 400px;
height: 36px;
margin-left: 40px;
}
::v-deep(.el-radio__input.is-checked + .el-radio__labell) {
color: #333 !important;
}
::v-deep(.el-input__inner) {
height: 36px !important;
}
::v-deep(.el-radio__input.is-checked .el-radio__inner) {
border-color: rgb(65, 120, 213);
background: rgb(65, 120, 213);
}
::v-deep(.el-radio__input.is-checked + .el-radio__label) {
color: #333;
font-size: 12px;
}
::v-deep(.el-radio__label) {
font-size: 12px;
}
}

View File

@@ -0,0 +1,177 @@
<template>
<div class="examineTop_box">
<div class="btns_box">
<div class="btns_item" @click="handleBtns('commit')">
<img
src="/src/assets/up@3x.png"
alt=""
style="width: 14px; height: 14px"
/>
<span>提交</span>
</div>
<!-- <div class="btns_item1" @click="handleBtns('out')">
<img
src="/src/assets/dw.png"
alt=""
style="width: 14px; height: 14px"
/>
<span>退出</span>
</div> -->
</div>
<div class="examine_box">
<div class="detailed_box" style="padding-bottom: 16px">
<div class="detailed_line"></div>
<div class="detailed_title">处理意见</div>
</div>
<div>
<el-radio-group
v-model="radioValue"
style="margin-left: 14px"
text-color="#333"
>
<div
v-for="item in checks"
:key="item.label"
style="width: 73px; margin-left: 24px"
>
<el-radio :label="item.value">{{
item.label
}}</el-radio>
</div>
</el-radio-group>
<div style="display: flex; align-items: center">
<el-input
class="input-style"
v-model="inputValue"
placeholder="请输入审批意见"
maxlength="20"
/>
<span class="look" style="" @click="handleOpen"
><img
src="/src/assets/flow@3x.png"
alt=""
style="width: 14px; height: 14px"
/>
<spna class="look-text" style="">查看流程图</spna>
</span>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
name: 'examineTop',
};
</script>
<script setup>
import { ref, toRefs, watch, getCurrentInstance } from 'vue';
import { useStore } from 'vuex';
import { msg } from '@/utils/lodash/msg.js';
const radioValue = ref('1');
const inputValue = ref(null);
const { proxy } = getCurrentInstance();
const { $http } = proxy;
const props = defineProps({
handleBtns: {
type: Function,
},
radios: {
type: Object,
},
handleOpen: {
type: Function,
},
isexamineBtns: {
type: Boolean,
},
});
const emits = defineEmits(['handleBtns', 'handleOpen']);
// const status = localStorage.getItem('examineStatus')
const store = useStore();
const { dispatch } = store;
const { radios, isexamineBtns } = toRefs(props);
console.log(radios.value);
let checks = ref([]);
const initSelectArray = (data) => {
let arr = [];
if (!data || JSON.stringify(data) === '{}') {
console.error('initSelectArray方法接受一个对象并转为数组');
return [];
}
for (let key in data) {
let obj = {};
obj.value = key;
obj.label = data[key];
arr.push(obj);
}
return arr;
};
//获取审批流的select
const getStatus = () => {
//防止上次账号的缓存
// dispatch('examine/deleteAll');
// dispatch('examine/deleteStaffAllList');
$http.get('ApprovalFlow/status').then((res) => {
if (res.status === 200) {
res.data.useOrderType = initSelectArray(res.data.useOrderType);
res.data.approvalWayType = initSelectArray(
res.data.approvalWayType
);
res.data.method = initSelectArray(res.data.method);
//approvalResult
checks.value = res.data.approvalResult = initSelectArray(
res.data.approvalResult
);
dispatch('examine/setExamine', res.data);
}
});
};
watch(
checks.value,
(newVal) => {
if (!newVal || !checks.value.length) {
let examineStatus = localStorage.getItem('examineStatus');
if (examineStatus) {
let status = JSON.parse(examineStatus);
checks.value = status.approvalResult;
} else {
getStatus();
}
}
},
{
deep: true,
immediate: true,
}
);
const handleBtns = (type) => {
if (isexamineBtns.value) {
msg('warning', '请稍后再进行操作!');
return;
}
if (radioValue.value != '1' && !inputValue.value) {
msg('warning', '驳回和终止必须填写审批意见描述!');
return;
}
emits('handleBtns', {
type,
approvalResult: Number(radioValue.value),
remark: inputValue.value,
});
inputValue.value = '';
radioValue.value = '1';
};
const handleOpen = () => {
emits('handleOpen');
// $router.push({ path: '/examine/mange/examineFollow' });
};
</script>
<style lang="scss" scoped>
@import './index.scss';
</style>

20
src/components/index.js Normal file
View File

@@ -0,0 +1,20 @@
import Layout from './layout/index'
import toolBtn from './public/toolBtn/toolBtn.vue'
import InputMini from './public/InputMini.vue'
import operaRecorde from './public/operaRecorde.vue'
import DetailsOperation from './public/DetailsOperation.vue'
import CustomCondition from './public/CustomCondition.vue'
import DownPdf from './public/DownPdf.vue'
import PrintModel from './public/PrintModel.vue'
import prtMoled from './public/printviews/prtMoled.vue'
export {
toolBtn,
Layout,
InputMini,
operaRecorde,
DetailsOperation,
CustomCondition,
DownPdf,
PrintModel,
prtMoled
}

View File

@@ -0,0 +1,133 @@
<template>
<el-container>
<el-aside :width="'60px'">
<layout-aside />
</el-aside>
<el-container>
<!-- 头部 -->
<el-header height="71px">
<layout-header />
</el-header>
<!-- 主体 -->
<div class="app-main">
<router-view v-slot="{ Component, route }">
<keep-alive :include="keepAliveIncludes">
<component
:is="Component"
:key="route.fullPath"
v-if="!route.meta.keepAlive"
/>
</keep-alive>
</router-view>
</div>
</el-container>
</el-container>
</template>
<style lang="scss" scoped>
.el-aside {
background-color: #161616;
z-index: 2000;
}
.el-header {
background-color: #e8edef;
padding: 0;
}
.app-main {
height: -moz-calc(100vh - 16px);
height: -webkit-calc(100vh - 16px);
height: calc(100vh - 16px);
background-color: #e8edef;
}
@import '@/assets/style/saleOrder/orderList.scss';
</style>
<script>
import { LayoutAside, LayoutHeader } from '@/components/layout/libs/index.js';
import { mapState } from 'vuex';
export default {
name: 'Layout',
components: {
'layout-aside': LayoutAside,
'layout-header': LayoutHeader,
},
created() {
let status = localStorage.getItem('examineStatus') || '';
this.online();
if (!status) {
this.getStatus();
}
},
methods: {
initSelectArray(data) {
let arr = [];
if (!data || JSON.stringify(data) === '{}') {
console.error('initSelectArray方法接受一个对象并转为数组');
return [];
}
for (let key in data) {
let obj = {};
obj.value = key;
obj.label = data[key];
arr.push(obj);
}
return arr;
},
//获取审批流的select
getStatus() {
//防止上次账号的缓存
this.$store.dispatch('examine/deleteAll');
this.$store.dispatch('examine/deleteStaffAllList');
const { examineStatus } = this.$store.state.storeData;
if (examineStatus && JSON.stringify(examineStatus) !== '{}') {
return;
}
this.$http.get('ApprovalFlow/status').then((res) => {
if (res.status === 200) {
res.data.useOrderType = this.initSelectArray(
res.data.useOrderType
);
res.data.approvalWayType = this.initSelectArray(
res.data.approvalWayType
);
res.data.method = this.initSelectArray(res.data.method);
//approvalResult
res.data.approvalResult = this.initSelectArray(
res.data.approvalResult
);
this.$store.dispatch('examine/setExamine', res.data);
}
});
},
online() {
//http://login.ops.f2b211.com/api/ 'https://api.mingpin.f2b211.com/api/v1/Public/get/online'
let pathurl = `https://proxy.ops.f2b211.com/api/v1/Public/get/online?c=${localStorage.getItem(
'companyId'
)}`;
// let pathurl = `https://login.ops.f2b211.com/api/v1/Public/get/online?c=${localStorage.getItem(
// 'companyId'
// )}`;
fetch(pathurl, {
method: 'GET',
credentials: 'include',
keepalive: true,
headers: {
Authorization: window.localStorage.getItem('userToken'),
},
});
},
},
computed: {
...mapState('leftAside', {
leftMenuWidth: (state) => state.leftMenuWidth,
}),
...mapState('topNavTag', {
keepAliveIncludes: (state) =>
state && state.keepAliveIncludes
? state.keepAliveIncludes.join(',')
: [],
}),
},
};
</script>

View File

@@ -0,0 +1,5 @@
import LayoutAside from './layout-aside/index.vue';
import LayoutHeader from './layout-header/index.vue';
import LayoutFooter from './layout-footer/index.vue';
export { LayoutAside, LayoutHeader, LayoutFooter };

View File

@@ -0,0 +1,75 @@
<!--
* @Author: your name
* @Date: 2022-04-01 18:30:52
* @LastEditTime: 2022-04-18 14:34:20
* @LastEditors: Please set LastEditors
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: \orico_ops_admin\src\components\layout\libs\layout-aside\index.vue
-->
<template>
<div @mouseleave="handleHideSubMenus">
<el-scrollbar height="100vh">
<lv1-menu :menus="menus" @change="handleShowSubMenus" />
</el-scrollbar>
<el-scrollbar class="sub-menu" v-if="displaySubMenus">
<lv2-menu :menus="activedMenu" />
</el-scrollbar>
</div>
</template>
<style lang="scss" scoped>
.sub-menu {
position: fixed;
top: 0;
left: 60px;
width: 210px;
height: 100%;
box-sizing: border-box;
background-color: #fff;
border-radius: 0 24px 24px 0;
box-shadow: 24px 0 26px -23px rgba(223, 228, 237, 0.6);
}
</style>
<script>
import { mapState } from 'vuex';
import Menu from './menu';
import SubMenu from './submenu';
export default {
components: {
'lv1-menu': Menu,
'lv2-menu': SubMenu,
},
data() {
return {
displaySubMenus: false,
activedMenu: [],
};
},
computed: {
...mapState({
menus: (state) =>
JSON.stringify(state) !== '{}' &&
state.routes.routes &&
state.routes.routes
? state.routes.routes
: [],
}),
},
watch: {
// 监听路由变化
$route(to, from) {
this.displaySubMenus = false;
},
},
mounted() {},
methods: {
handleShowSubMenus(menu) {
this.activedMenu = menu;
this.displaySubMenus = true;
},
handleHideSubMenus() {
this.activedMenu = [];
this.displaySubMenus = false;
},
},
};
</script>

View File

@@ -0,0 +1,75 @@
<template>
<div>
<ul class="menu">
<template v-for="(menu, idx) in menus">
<li :key="idx" :class="['menu-item ', actived === menu.name ? 'actived' : '']" v-if="!menu.hidden" @mouseover="mouseover(menu)">
<div>
<i v-if="menu.meta.icon" :class="['iconfont', menu.meta.icon]"></i>
<span class="menu-title">{{ menu.meta.title }}</span>
</div>
</li>
</template>
</ul>
</div>
</template>
<style lang="scss" scoped>
.menu {
list-style: none;
width: 60px;
padding: 10px 0 0 0;
margin: 0;
overflow-x: hidden;
}
.menu .menu-item {
font-size: 26px;
color: #797979;
text-align: center;
padding: 8px 0;
cursor: pointer;
}
.menu .menu-item.actived {
position: relative;
color: #4178d5;
}
.menu .menu-item.actived::after {
position: absolute;
top: 0;
right: 0;
content: '';
display: block;
height: 100%;
border-right: 4px solid #4178d5;
}
.menu i.iconfont {
font-size: 22px;
}
.menu .menu-title {
display: block;
font-size: 14px;
}
</style>
<script>
export default {
name: 'Menu',
data() {
return {
actived: this.$route.name
}
},
props: {
menus: {
type: Object,
required: false,
default: () => {
return {}
}
}
},
methods: {
mouseover: function (menu) {
this.$emit('change', menu)
this.actived = menu.name
}
}
}
</script>

View File

@@ -0,0 +1,111 @@
<template>
<div class="wrap">
<h4 class="wrap-tag">{{ menus.meta.title }}</h4>
<div class="menu-wrap" v-for="(menu, idx) in menus.children" :key="idx">
<p class="title">{{ menu.meta.title }}</p>
<ul class="menu">
<li v-for="(item, key) in menu.children" :key="key">
<a
href="javascript:void(0);"
:class="{ actived: item.path == path }"
@click="handleOpenPage(item)"
v-if="!item.hidden"
>{{ item.meta.title }}</a
>
<a
target="_blank"
:class="{ actived: item.path == path }"
:href="item.path"
v-else-if="
(item.hidden &&
item.path.indexOf('https://') !== -1) ||
item.path.indexOf('http://') !== -1
"
>{{ item.meta.title }}</a
>
</li>
</ul>
</div>
</div>
</template>
<style lang="scss" scoped>
.wrap {
padding: 24px 24px;
}
.wrap-tag {
font-size: 18px;
color: #303133;
}
.menu-wrap {
margin: 24px 0;
}
.menu-wrap .title {
font-size: 14px;
font-weight: bold;
color: #303133;
}
.menu-wrap .menu {
list-style: none;
padding: 0;
margin: 0;
border-left: 1px solid #dcdfe6;
}
.menu-wrap .menu li {
margin-bottom: 10px;
}
.menu-wrap .menu li:not(:last-child) {
margin-bottom: 10px;
}
.menu-wrap .menu li a {
display: block;
margin-left: -1px;
font-size: 14px;
color: #303133;
padding-left: 24px;
}
.menu-wrap .menu li a.actived,
.menu-wrap .menu li a:hover {
color: #4178d5;
border-left: 2px solid #4178d5;
}
</style>
<script>
export default {
name: 'SubMenu',
data() {
return {
path: '/index',
subMenus: [],
};
},
props: {
menus: {
type: Object,
required: false,
default: () => {
return {};
},
},
},
watch: {
// 监听路由变化
$route(to, from) {
this.path = to.path;
},
},
created() {
this.path = this.$route.path;
},
methods: {
handleOpenPage(item) {
// console.log(item.hidden)
this.$router.push({
path: item.path,
});
console.log(this.path, '=this.path=');
//记录最近打开菜单
this.$http.post('Home/open', { menuId: item.id });
},
},
};
</script>

View File

@@ -0,0 +1,6 @@
<template>
<div>footer</div>
</template>
<script>
export default {}
</script>

View File

@@ -0,0 +1,284 @@
<template>
<div>
<div class="header-container">
<div class="logo">
<router-link to="/">
<img src="@/assets/logo.png" alt />
<span>OPS211供应链管理系统</span>
</router-link>
<ul class="system-info text-r">
<li>
<span>{{ companyName }}</span>
</li>
<li
v-if="
orgIdArr &&
orgIdArr.length &&
userInfo.identity !== 2
"
>
<el-dropdown
@command="handleCommand"
v-if="userInfo.identity !== 2"
>
<span class="el-dropdown-link">
{{ orgName }}
<i
class="el-icon-arrow-down el-icon--right"
></i>
</span>
<template #dropdown>
<el-dropdown-menu>
<el-dropdown-item
:command="it.id"
v-for="(it, index) in orgIdArr"
:value="it.name"
:key="index"
:style="{
height: it.disable ? '0px' : 'auto',
}"
>
{{
!it.disable ? it.name : ''
}}</el-dropdown-item
>
</el-dropdown-menu>
</template>
</el-dropdown>
<span v-else>{{ orgName }}</span>
</li>
<li>
<el-dropdown>
<span class="el-dropdown-link">
{{ userInfo.nickname }}
<i
class="el-icon-arrow-down el-icon--right"
></i>
</span>
<template #dropdown>
<el-dropdown-menu>
<el-dropdown-item
@click.stop="handleSigninOut"
>退出</el-dropdown-item
>
</el-dropdown-menu>
</template>
</el-dropdown>
</li>
</ul>
</div>
</div>
<!-- 页面标签 -->
<page-labels />
</div>
</template>
<style lang="scss" scoped>
.header-container {
width: 100%;
box-sizing: border-box;
background: #fff;
}
.header-container .logo {
background: #fff;
display: flex;
width: 100%;
height: 40px;
justify-content: space-between;
align-items: center;
}
.header-container .logo img {
display: inline-block;
vertical-align: middle;
width: 24px;
height: 24px;
margin-right: 16px;
margin-left: 16px;
}
.header-container .logo span {
display: inline-block;
vertical-align: middle;
font-size: 13px;
font-weight: bold;
color: #303133;
}
.header-container ul.system-info {
display: inline-block;
list-style: none;
font-size: 12px;
color: #303133 !important;
height: 34px;
line-height: 34px;
background-color: #fff;
cursor: pointer;
}
.header-container ul ::v-deep(.el-dropdown) {
line-height: inherit;
}
.header-container ul ::v-deep(.el-dropdown-link) {
color: #303133 !important;
}
.header-container ul.system-info li:first-child {
padding-right: 16px;
}
.header-container ul.system-info li:not(:first-child),
.header-container ul.system-info li:not(:last-child) {
display: inline-block;
padding: 0 16px;
}
.header-container ul.system-info li:last-child {
padding-left: 16px;
}
.header-container ul.system-info li:nth-child(2) {
position: relative;
}
.header-container ul.system-info li:nth-child(2)::before,
.header-container ul.system-info li:nth-child(2)::after {
content: '';
display: block;
position: absolute;
top: 50%;
transform: translateY(-50%);
height: 20px;
border-left: 1px solid #e4e7ed;
}
.header-container ul.system-info li:nth-child(2)::before {
left: 0;
}
.header-container ul.system-info li:nth-child(2)::after {
right: 0;
}
.header-container ul.system-info li span {
font-size: 12px;
font-weight: 500;
}
</style>
<script>
import { mapActions, mapState } from 'vuex';
import Labels from './labels';
import { SigninOut } from '../../../../utils/pubulic';
export default {
components: {
'page-labels': Labels,
},
data() {
return {
path: '/index',
companyName: '',
orgName: '',
org: [],
};
},
computed: {
...mapState({
// 取出页面标签
userInfo: (state) =>
JSON.stringify(state) !== '{}' &&
state.user &&
state.user.userInfo
? state.user.userInfo
: {},
orgId: (state) =>
JSON.stringify(state) !== '{}' && state.user
? state.user.orgId
: null,
orgIdArr: (state) =>
JSON.stringify(state) !== '{}' ? state.user.orgIdArr : null,
setOrgDeptId: (state) =>
JSON.stringify(state) !== '{}' ? state.org.orgId : null,
}),
},
watch: {
// 监听路由变化
$route(to, from) {
this.path = to.path;
},
},
created() {
this.path = this.$route.path;
// 避免刷新重置
if (this.$store.state.org.orgId) {
this.companyName =
this.userInfo.identity === 1
? this.userInfo.companyName
: this.userInfo.identity === 2
? this.userInfo.supplierName
: this.userInfo.identity === 2
? this.userInfo.customerName
: null;
this.handleCommand(this.$store.state.org.orgId);
} else {
let theorgtID = null;
let thename = null;
if (this.userInfo.identity === 1) {
// 正常用户
theorgtID = this.userInfo.orgId;
thename = this.userInfo.companyName;
this.initset(theorgtID, thename);
}
if (this.userInfo.identity === 2) {
// 供应商
theorgtID = this.userInfo.supplierId;
thename = this.userInfo.supplierName;
this.initset(theorgtID, thename);
}
if (this.userInfo.identity === 3) {
// 客户
theorgtID = this.userInfo.customerId;
thename = this.userInfo.customerName;
this.initset(theorgtID, thename);
}
}
},
methods: {
...mapActions({
// 关闭标签及页面
handleCloseTag: 'topNavTag/removeNavTag',
handleSetorgId: 'user/setorgId',
handleSetOrgDeptId: 'org/setorgId',
}),
initset(id, name) {
this.handleSetorgId(id);
this.handleSetOrgDeptId(id);
if (!this.$store.state.org.orgId) {
this.handleCommand(id);
}
this.companyName = name;
},
handleCommand(command) {
let idx = this.orgIdArr.findIndex((it) => {
return it.id === command;
});
this.orgName = idx !== -1 ? this.orgIdArr[idx].name : '';
this.userInfo.orgName = this.orgName;
this.handleSetorgId(command);
this.handleSetOrgDeptId(command);
},
// 个人中心
handleNavigatorPersonCenter() {
window.open(import.meta.env.VITE_SSO_BASEURL + 'user/index.html');
},
// 退出
handleSigninOut() {
SigninOut();
},
orgChange(val) {
console.log(val);
},
},
};
</script>

View File

@@ -0,0 +1,398 @@
<template>
<div>
<div class="tags-container" ref="tagsContainer">
<a
@click="handleLeftView"
class="tags-operate left"
href="javascript:void(0);"
title="左翻"
>
<i class="iconfont icon-zuo-zhankaigengduo"></i>
</a>
<div class="tags-wrap" ref="tagsWrap">
<ul class="tags" ref="tags">
<li
:class="{ actived: tag.fullPath == path }"
:key="idx"
@click.stop="handleChooseTag(tag)"
v-for="(tag, idx) in tags"
>
<span>{{ tag.meta.title }}</span>
<span
@click.stop="handleCloseTag(idx)"
class="tag-close"
>
<i
class="iconfont icon-guanbi"
v-if="idx !== 0"
></i>
</span>
</li>
</ul>
</div>
<a
@click="handleRightView"
class="tags-operate right"
href="javascript:void(0);"
title="右翻"
>
<i class="iconfont icon-you-zhankaigengduo"></i>
</a>
<a
@click="mytest"
class="tags-btn"
href="javascript:void(0);"
title="关闭所有页签"
>
<i class="iconfont icon-guanbi1 closebtn"></i>
</a>
<a
@click="synchroData"
class="tags-sync"
href="javascript:void(0);"
title="数据同步"
>
<i class="iconfont icon-shuaxin syncDataBtn"></i>
</a>
</div>
</div>
</template>
<style lang="scss">
.tags-container {
width: 100%;
height: 30px;
padding-left: 6px;
background: #fff;
box-sizing: border-box;
}
.tags-container .tags-operate {
display: inline-block;
vertical-align: middle;
font-size: 11px;
color: #606266;
width: 34px;
height: 34px;
line-height: 34px;
text-align: center;
margin-left: 2px;
}
.tags-container .tags-operate .icon-you-zhankaigengduo::before,
.tags-container .tags-operate .icon-zuo-zhankaigengduo::before {
font-size: 18px !important;
}
.tags-container .tags-wrap {
position: relative;
display: inline-block;
vertical-align: middle;
width: calc(100% - 140px);
height: 30px;
line-height: 30px;
box-sizing: border-box;
white-space: nowrap;
overflow: hidden;
}
.tags-container .tags {
position: absolute;
top: 0;
left: 0;
list-style: none;
padding: 0;
margin: 0;
}
.tags-container .tags li:hover .tag-close {
display: block;
right: 7%;
top: 45%;
}
.tags-container .tags li {
position: relative;
display: inline-block;
height: 100%;
font-size: 12px;
color: #606266;
padding: 0 34px 0 16px;
cursor: pointer;
}
.tags-container .tags li .tag-close {
display: none;
position: absolute;
top: 50%;
right: 8px;
transform: translateY(-50%);
width: 20px;
height: 20px;
line-height: 20px;
text-align: center;
}
.tags-container .tags li.actived {
background-color: #eaeef1;
border-top-left-radius: 4px;
border-top-right-radius: 4px;
}
.tags-container .tags li.actived .tag-close {
display: block;
top: 50%;
right: 8px;
}
.tags-container .tags li:not(:last-child)::after {
content: '';
display: block;
position: absolute;
top: 50%;
right: 0;
transform: translateY(-50%);
height: 18px;
border-left: 1px solid #cbcfd3;
}
.actived span:nth-child(1) {
padding-right: 8px;
}
.tags-container .tags-btn {
position: absolute;
right: 42px;
top: 42px;
padding: 2px 6px !important;
}
.tags-container .tags-sync {
position: absolute;
right: 15px;
top: 42px;
padding: 2px 6px !important;
}
.closebtn,
.syncDataBtn {
font-size: 18px !important;
display: block;
margin-top: 3px;
color: gray;
}
</style>
<script>
import { mapActions, mapState } from 'vuex';
export default {
inject: ['reload'],
name: 'Labels',
data() {
return {
currentTagIndex: 0,
leftWithTags: 0, // 标签栏left值
positionLeftLogs: [],
path: this.$route.fullPath,
};
},
computed: {
...mapState({
tags: (state) =>
JSON.stringify(state) !== '{}' ? state.topNavTag.tags : null,
}),
},
watch: {
// 监听路由变化
$route(to, from) {
// console.log('to.fullPath',to.fullPath)
this.path = to.fullPath;
// 计算标签栏的初始left
this.initTagsLeftPos();
},
},
mounted() {
this.currentTagIndex = this.tags.length - 1;
// 计算标签栏的初始left
this.initTagsLeftPos();
// console.log('mounted init')
},
methods: {
...mapActions({
// 关闭标签及页面
handleCloseTag: 'topNavTag/removeNavTag',
// 关闭所有标签及页面
handleCloseAllTag: 'topNavTag/removeAllNavTag',
deleteUnit: 'storeData/deleteUnit',
deleteRecondtion: 'storeData/deleteRecondtion',
deleteSettletype: 'storeData/deleteSettletype',
deleteDcurrency: 'storeData/deleteDcurrency',
deleteRateType: 'storeData/deleteRateType',
deleteTaxRate: 'storeData/deleteTaxRate',
deleteCustomer: 'storeData/deleteCustomer',
deletePaymentTerm: 'storeData/deletePaymentTerm',
deleteSupplierSelect: 'storeData/deleteSupplierSelect',
deleteWarehouseAll: 'storeData/deleteWarehouseAll',
deleteEnumType: 'storeData/deleteEnumType',
deleteStatusType: 'storeData/deleteStatusType',
deleteStatusGetType: 'storeData/deleteStatusGetType',
deleteInStockType: 'storeData/deleteInStockType',
deleteReturnMatType: 'storeData/deleteReturnMatType',
deleteStktranStatus: 'storeData/deleteStktranStatus',
deleteStktransInst: 'storeData/deleteStktransInst',
deleteStkdirecttrStatus: 'storeData/deleteStkdirecttrStatus',
deleteBomMaterilasObj: 'storeData/deleteBomMaterilasObj',
deleteListGetStatus: 'storeData/deleteListGetStatus',
deleteDicSale: 'storeData/deleteDicSale',
deleteDicRetrunOrder: 'storeData/deleteDicRetrunOrder',
deletePurOrderStatus: 'storeData/deletePurOrderStatus',
deleteDicPurOrder: 'storeData/deleteDicPurOrder',
deleteDicOrgani: 'storeData/deleteDicOrgani',
deleteDicPurInstock: 'storeData/deleteDicPurInstock',
deleteDicPurReturn: 'storeData/deleteDicPurReturn',
deleteDicStktrOut: 'storeData/deleteDicStktrOut',
deleteDicStktrInst: 'storeData/deleteDicStktrInst',
deleteDicStkdirFers: 'storeData/deleteDicStkdirFers',
deleteGetAllUserList: 'storeData/deleteGetAllUserList',
deleteAll: 'examine/deleteAll',
//deleteExamine: 'storeData/deleteExamine',
deleteStaffAllList: 'examine/deleteStaffAllList',
setAllUnit: 'storeData/setAllUnit',
setTaxRate: 'storeData/setTaxRate',
}),
mytest() {
this.handleCloseAllTag();
this.$refs.tags.style.left = 0;
},
// ljmstroe清空
clearnstore() {
if (this.$store.state && this.$store.state.storeData) {
this.$store.state.storeData.infoStatus = {}; //生产基础信息数据
this.$store.state.storeData.infoStatusww = {}; // 委外基础信息数据
this.$store.state.storeData.infoStatusck = {}; // 销售出库基础信息数据
this.$store.state.storeData.infoNoticeStatus = {}; // 通知基础信息数据
this.$store.state.storeData.infockStatus = {}; // 通知基础信息数据
this.$store.state.storeData.customerlist = []; // 客户数据
}
},
// Calibration() {
// console.log(
// this.$store.state.org.orgId,
// '=============this.$store.state.storeData==========='
// );
// this.$http
// .post('Public/Calibration', {
// orgId: this.$store.state.org.orgId,
// materialId: null,
// })
// .then((res) => {
// console.log(res);
// });
// },
synchroData() {
this.$http.get('SysConfig/CacheClear').then((res) => {
if (res.status == 200) {
this.$message.success({
message: '数据同步成功!',
showClose: true,
});
this.deleteUnit();
this.deleteRecondtion();
this.deleteSettletype();
this.deleteDcurrency();
this.deleteRateType();
this.deleteTaxRate();
this.deleteCustomer();
this.deletePaymentTerm();
this.deleteSupplierSelect();
this.deleteWarehouseAll();
this.deleteEnumType();
this.deleteStatusType();
this.deleteStatusGetType();
this.deleteInStockType();
this.deleteReturnMatType();
this.deleteStktranStatus();
this.deleteStktransInst();
this.deleteStkdirecttrStatus();
this.deleteBomMaterilasObj();
this.deleteListGetStatus();
this.deleteDicSale();
this.deleteDicRetrunOrder();
this.deletePurOrderStatus();
this.deleteDicPurOrder();
this.deleteDicOrgani();
this.deleteDicPurInstock();
this.deleteDicPurReturn();
this.deleteDicStktrOut();
this.deleteDicStktrInst();
this.deleteDicStkdirFers();
this.deleteGetAllUserList();
this.deleteAll();
// this.deleteExamine();
this.deleteStaffAllList();
// this.Calibration();
this.clearnstore();
this.reload();
} else {
this.$message.error({
message: '数据同步失败!',
showClose: true,
});
}
});
},
// 初始化顶部标签栏left值
initTagsLeftPos() {
const leftWithTags =
this.$refs.tags.offsetWidth - this.$refs.tagsWrap.offsetWidth;
if (leftWithTags > 0) {
this.positionLeftLogs.push(-leftWithTags);
this.$refs.tags.style.left = -leftWithTags + 'px';
}
},
// 标签左翻
handleLeftView(event) {
let positionLeft = 0;
const tagsPositionLeft = Math.abs(
this.$refs.tags.getBoundingClientRect().left
); // 标签栏的left
const parentPaddingLeft = parseInt(
window
.getComputedStyle(this.$refs.tagsContainer)
.paddingLeft.replace('px', '')
); // 标签栏父级padding left
const leftBtnWidth = event.currentTarget.offsetWidth; // 左翻按钮宽度
const scrollLeft =
tagsPositionLeft - (parentPaddingLeft + leftBtnWidth);
for (let i = 0; i <= this.$refs.tags.children.length; i++) {
const itemWidth = this.$refs.tags.children[i].offsetWidth;
positionLeft += itemWidth;
if (scrollLeft <= positionLeft) {
positionLeft -= itemWidth;
positionLeft = -positionLeft;
break;
}
}
if (this.positionLeftLogs[this.positionLeftLogs.length - 1] != 0) {
this.positionLeftLogs.push(positionLeft);
}
this.$refs.tags.style.left = positionLeft + 'px';
},
// 标签右翻
handleRightView() {
if (this.positionLeftLogs.length > 1) {
this.positionLeftLogs.pop();
}
const positionLeft = this.positionLeftLogs.pop();
if (this.positionLeftLogs.length == 0) {
this.positionLeftLogs.push(positionLeft);
}
this.$refs.tags.style.left = positionLeft + 'px';
},
// 页面标签点击事件
handleChooseTag(tag) {
this.$router.push(tag);
},
},
};
</script>

View File

@@ -0,0 +1,330 @@
<template>
<div class="customCondition-container">
<el-select :clearable="true" @clear="clearSel" filterable placeholder="请选择条件" v-model="formcustomCondition">
<el-option :key="item.id" :label="item.queryName" :value="item.queryName"
@click="formCustomChange(item.queryName, item.id)" class="f_12" v-for="item in getCustomerItem.customCondition">
</el-option>
</el-select>
<el-input :disabled="isDisabled" @input="iptChange" placeholder="请输入搜索关键词" v-if="showInput" v-model="iptVal" />
<el-select :disabled="isDisabled" @clear="lastClearSel" clearable filterable placeholder="请选择搜索关键词" v-model="val"
v-show="showSelect">
<el-option :key="item.id" :label="item.name" :value="item.id" @click="selChange(item.name, item.id)"
v-for="item in childSelect"></el-option>
</el-select>
<div class="input-number-box" v-show="showNumber">
<!-- <el-input :disabled="isDisabled" @input="numStVal" @keyup="statusProving" maxlength="12" placeholder="起始值"
size="mini" v-model="numStatus" /> -->
<el-input :disabled="isDisabled" @input="numStVal" @blur="stIpt" maxlength="15" placeholder="起始值" size="mini"
v-model="numStatus" />
<span>-</span>
<!-- <el-input :disabled="isDisabled" @blur="lastIpt" @input="numEnVal" @keyup="endProving" maxlength="15"
placeholder="结束值" size="mini" v-model="numEnd" /> -->
<el-input :disabled="isDisabled" @blur="lastIpt" @input="numEnVal" maxlength="15" placeholder="结束值" size="mini"
v-model="numEnd" />
</div>
</div>
</template>
<script>
import { numberRexgu } from '@/utils/takeMethods.js'
export default {
props: {
getCustomerItem: Object,
reset: Boolean
},
data () {
return {
formcustomCondition: '',
val: '',
iptVal: '',
dateVal: '',
numStatus: '',
numEnd: '',
showInput: true,
showSelect: false,
showNumber: false,
isDisabled: true,
childSelect: [],
currSelect: {},
backResult: {
currVal: '',
outResult: {}
}
}
},
methods: {
// statusProving () {
// this.numStatus = this.numStatus.replace(/[^.\d]/g, '')
// this.numStatus = this.numStatus.replace('.', '')
// },
endProving () {
this.numEnd = this.numEnd.replace(/[^.\d]/g, '')
this.numEnd = this.numEnd.replace('.', '')
},
clearSel (value) {
if (value == undefined) {
this.val = ''
this.iptVal = ''
this.numStatus = ''
this.numEnd = ''
this.isDisabled = true
this.backResult.currVal = value
this.$emit('result', this.backResult)
}
},
formCustomChange (name, id) {
this.backResult.outResult = {}
this.isDisabled = false
this.val = ''
this.iptVal = ''
this.numStatus = ''
this.numEnd = ''
this.childSelect = []
this.backResult.currVal = name
this.$emit('result', this.backResult)
this.getCustomerItem.customCondition.forEach(element => {
if (name == element.queryName) {
if (element.inputType == 1) {
this.dateVal = ''
this.showInput = true
this.showSelect = false
this.showNumber = false
this.currSelect = element
} else if (element.inputType == 2) {
this.currSelect = element
this.dateVal = ''
this.showInput = false
this.showSelect = true
this.showNumber = false
if (element.queryName == '关闭状态') {
this.childSelect = this.getCustomerItem.cloStatus
} else if (element.queryName == '是否211' || element.queryName == '是否是211型号') {
// this.childSelect = this.getCustomerItem.is211
this.childSelect = [{ id: false, name: '否' }, { id: true, name: '是' }]
} else if (element.queryName == '仓库') {
this.childSelect = this.getCustomerItem.warehouse
} else if (element.queryName == '是否赠品' || element.queryName == '是否是赠品') {
// this.childSelect = this.getCustomerItem.isFree
this.childSelect = [{ id: false, name: '否' }, { id: true, name: '是' }]
} else if (element.queryName == '收款条件' || element.queryName == '付款条件') {
this.childSelect = this.getCustomerItem.reccondition
} else if (element.queryName == '仓位' || element.queryName == '子仓库') {
this.childSelect = this.getCustomerItem.childWarehouse
} else if (element.queryName == '供应链' || element.queryName == '东莞/深圳') {
this.childSelect = this.getCustomerItem.supplyChainType
} else if (element.queryName == '供应组织') {
this.childSelect = this.getCustomerItem.supplys
} else if (element.queryName == '结算组织') {
this.childSelect = this.getCustomerItem.settleOrg
} else if (element.queryName == '结算币别') {
this.childSelect = this.getCustomerItem.dcurrency
} else if (element.queryName == '结算方式') {
this.childSelect = this.getCustomerItem.settleType
} else if (element.queryName == '跟单员') {
this.childSelect = this.getCustomerItem.orgAllPerson
} else if (element.queryName == '默认供应商') {
this.childSelect = this.getCustomerItem.suppliers
} else if (element.queryName == '销售员') {
this.childSelect = this.getCustomerItem.salePersons ? this.getCustomerItem.salePersons : this.getCustomerItem.orgAllPerson
} else if (element.queryName == '退货类型') {
this.childSelect = this.getCustomerItem.returnTypes
} else if (element.queryName == '销售部门') {
this.childSelect = this.getCustomerItem.saleDept
} else if (element.queryName == '单据状态') {
this.childSelect = this.getCustomerItem.documentStatus
} else if (element.queryName == '库存部门') {
this.childSelect = this.getCustomerItem.stockDept
} else if (element.queryName == '收料组织') {
this.childSelect = this.getCustomerItem.receivingOrg
} else if (element.queryName == '采购组织') {
this.childSelect = this.getCustomerItem.purchaseOrg
} else if (element.queryName == '采购部门') {
this.childSelect = this.getCustomerItem.purchaseDept
} else if (element.queryName == '收料部门') {
this.childSelect = this.getCustomerItem.receivingDept
} else if (element.queryName == '采购员') {
this.childSelect = this.getCustomerItem.purchasePerson
} else if (element.queryName == '仓管员') {
this.childSelect = this.getCustomerItem.followPersons ? this.getCustomerItem.followPersons : this.getCustomerItem.orgAllPerson
} else if (element.queryName == '退料组织') {
this.childSelect = this.getCustomerItem.returnMaterialOrg
} else if (element.queryName == '退料部门') {
this.childSelect = this.getCustomerItem.returnMaterialDept
} else if (element.queryName == '退料方式') {
this.childSelect = this.getCustomerItem.returnMaterial
} else if (element.queryName == '补料方式') {
this.childSelect = this.getCustomerItem.replenishment
} else if (element.queryName == '单据类型') {
this.childSelect = this.getCustomerItem.billType
} else if (element.queryName == '物料属性') {
this.childSelect = this.getCustomerItem.MaterialProperty
} else if (element.queryName == '产品定位') {
this.childSelect = this.getCustomerItem.productLocation
} else if (element.queryName == '生命周期') {
this.childSelect = this.getCustomerItem.lifeCycle
} else if (element.queryName == '安规') {
this.childSelect = this.getCustomerItem.safety
} else if (element.queryName == '品牌类型') {
this.childSelect = this.getCustomerItem.brand
} else if (element.queryName == '禁用状态') {
this.childSelect = this.getCustomerItem.isDisable
} else if (element.queryName == '销售组织') {
this.childSelect = this.getCustomerItem.saleOrgs
} else if (element.queryName == '供应商') {
this.childSelect = this.getCustomerItem.supplier
} else if (element.queryName == '数据来源') {
this.childSelect = this.getCustomerItem.dataSourceTypes
} else if (element.queryName == '单位' || element.queryName == '子单位') {
this.childSelect = this.getCustomerItem.unitlist
} else if (element.queryName == '存货类别') {
this.childSelect = this.getCustomerItem.InventoryType
}
} else if (element.inputType == 3) {
this.val = ''
this.iptVal = ''
this.showInput = false
this.showSelect = false
this.showNumber = true
this.currSelect = element
}
}
})
},
iptChange (val) {
console.log('切换的输入框', this.currSelect)
this.dateVal = ''
this.val = ''
this.backResult.outResult = {}
if (val == '') {
this.iptVal = ''
delete this.backResult.outResult[`${this.currSelect.queryField}`]
this.$emit('result', this.backResult)
} else {
this.backResult.outResult[`${this.currSelect.queryField}`] = val
this.$emit('result', this.backResult)
}
},
selChange (name, id) {
this.dateVal = ''
this.backResult.outResult = {}
this.childSelect.forEach(element => {
if (element.name == name) {
this.backResult.outResult[`${this.currSelect.queryField}`] = element.id
}
})
this.$emit('result', this.backResult)
},
lastClearSel (value) {
delete this.backResult.outResult[`${this.currSelect.queryField}`]
this.$emit('result', this.backResult)
},
numStVal (val) {
this.numStatus = numberRexgu(val)
this.val = ''
this.dateVal = ''
if (this.numStatus == '' && this.numEnd == '') {
this.backResult.outResult = {}
}
if (this.numStatus) {
this.dateVal = this.numStatus + '|' + this.numEnd
this.backResult.outResult[`${this.currSelect.queryField}`] = this.dateVal
this.$emit('result', this.backResult)
}else{
this.numStatus = ''
if (this.numEnd) {
this.dateVal = this.numStatus + '|' + this.numEnd
this.backResult.outResult[`${this.currSelect.queryField}`] = this.dateVal
this.$emit('result', this.backResult)
} else {
this.dateVal = ''
this.dateVal = this.numStatus + '|' + this.numEnd
this.backResult.outResult[`${this.currSelect.queryField}`] = this.dateVal
this.$emit('result', this.backResult)
}
}
},
numEnVal (val) {
this.numEnd = numberRexgu(val)
this.val = ''
this.dateVal = ''
if (this.numStatus == '' && this.numEnd == '') {
this.backResult.outResult = {}
}
if (this.numEnd) {
this.dateVal = this.numStatus + '|' + this.numEnd
this.backResult.outResult[`${this.currSelect.queryField}`] = this.dateVal
this.$emit('result', this.backResult)
} else {
this.numEnd = ''
if (this.numStatus || this.numStatus == 0) {
this.dateVal = this.numStatus + '|' + this.numEnd
this.backResult.outResult[`${this.currSelect.queryField}`] = this.dateVal
this.$emit('result', this.backResult)
} else {
this.dateVal = ''
this.dateVal = this.numStatus + '|' + this.numEnd
this.backResult.outResult[`${this.currSelect.queryField}`] = this.dateVal
this.$emit('result', this.backResult)
}
}
},
lastIpt () {
if (this.numEnd) {
this.numEnd = this.numEnd * 1
}
},
stIpt () {
if (this.numStatus) {
this.numStatus = this.numStatus * 1
}
}
},
watch: {
reset: function (val) {
if (val) {
this.formcustomCondition = ''
this.iptVal = ''
this.val = ''
this.numStatus = ''
this.numEnd = ''
this.isDisabled = true
this.showInput = true
this.showSelect = false
this.showNumber = false
}
}
}
}
</script>
<style lang="scss" scoped>
.customCondition-container {
display: flex;
justify-content: center;
align-items: center;
.input-number-box {
display: flex;
justify-content: center;
align-items: center !important;
span {
margin: 0 4px;
}
}
}
::v-deep(.el-select) {
// width: 172px!important;
margin-top: 1px !important;
margin-right: 10px;
}
::v-deep(.el-autocomplete) {
width: 100% !important;
}
::v-deep(.el-input__inner) {
height: 28px !important;
line-height: 28px !important;
}
</style>

View File

@@ -0,0 +1,166 @@
<!--
* @作者: 金鑫
* @时间: 2021-10-29 07:47:21
* @描述: 控制表格增加行删除行向下复制行单元格粘贴列
-->
<template>
<div class="tell-container">
<div class="tell-info-gift-row" @click="addGift" v-if="detailBtn.includes('gift')">
<span :class="{'f-c':isEdit}">添加赠品</span>
</div>
<div class="tell-info-add-row span-add-row" @click="defaultAdd" v-if="!detailBtn.includes('add')">
<span :class="{'f-c':isEdit}">增加行</span>
<!-- <el-dropdown v-else :disabled="isEdit" trigger="click" :hide-on-click="false" @visible-change="dropDownEnter" placement="bottom-start">
<span class="el-dropdown-link" :class="{'f-c':isEdit}">
增加行
<i class="el-icon-arrow-down el-icon--right"></i>
</span>
<template #dropdown>
<el-dropdown-menu class="insert-row" :disabled="isEdit" style="padding:0;">
<el-dropdown-item style="font-size:12px;display:flex;justify-content: center;align-items: center;padding:0 12px;">
<span style="margin-right:4px">插入</span>
<InputMini @insertNumber="getBottomInputMiniVal" :msg="msg" :isClear="isClear" />
<span style="margin-left:4px"></span>
</el-dropdown-item>
</el-dropdown-menu>
</template>
</el-dropdown> -->
</div>
<div class="tell-info-copy-row" @click="copyRow" v-if="!detailBtn.includes('copy')">
<span :class="{'f-c':isEdit}">复制行</span>
</div>
<div class="tell-info-delete-row" @click="deleteRow" v-if="!detailBtn.includes('delet')">
<span :class="{'f-c':isEdit}">删除行</span>
</div>
<div class="tell-info-query" @click="copyCellColumn" v-if="!detailBtn.includes('allIn')">
<span :class="{'f-c':isEdit}">批量填充</span>
</div>
</div>
</template>
<script>
export default {
props: {
deviationSelectArr: Array,
isEdit: Boolean,
detailBtn: {
type: Array,
default: function () {
return []
}
}
},
data() {
return {
insertObj: {
insertBottomVal: ''
},
msg: '0',
isClear: false,
isCheck: false
}
},
// 通过选择行 切换 末尾添加或下拉指定位置添加
// updated:function(){
// this.deviationSelectArr.length > 0 ? this.isCheck = true : this.isCheck = false
// },
methods: {
defaultAdd(){
// console.log('默认末尾添加行')
if (this.isEdit) {
return
} else {
this.$emit('insertObj', 1)
}
},
// dropDownEnter(event) {
// if (this.isEdit) {
// return
// } else {
// if (event === false) {
// if (this.deviationSelectArr.length == 1) {
// if (parseInt(this.insertObj.insertBottomVal) !== 0) {
// this.$emit('insertObj', this.insertObj)
// }
// } else {
// this.$message.error('请选择一行,在操作!')
// }
// this.isClear = false
// } else {
// this.isClear = true
// this.insertObj.insertBottomVal = '0'
// if (parseInt(this.insertObj.insertBottomVal) !== 0) {
// this.$emit('insertObj', this.insertObj)
// }
// }
// }
// },
// getBottomInputMiniVal(data) {
// this.insertObj.insertBottomVal = data
// },
copyRow() {
if (this.isEdit) {
return
} else {
this.$emit('copyRow', true)
}
},
deleteRow() {
if (this.isEdit) {
return
} else {
this.$emit('deleteRow', true)
}
},
copyCellColumn() {
if (this.isEdit) {
return
} else {
this.$emit('copyCellcolumn', true)
}
},
addGift(){
if (this.isEdit) {
return
} else {
this.$emit('addGift', true)
}
}
}
}
</script>
<style lang="scss" scoped>
@mixin current-deviation {
margin-left: 16px;
}
.tell-container {
display: flex;
justify-content: center;
align-items: center;
.tell-info-add-row {
display: flex;
justify-content: center;
align-items: center;
}
.tell-info-gift-row:hover{
color: #66b1ff;
cursor: pointer;
}
.tell-info-copy-row {
@include current-deviation;
}
.tell-info-delete-row {
@include current-deviation;
}
.tell-info-query {
@include current-deviation;
}
}
.f-c {
color: var(--el-disabled-color-base) !important;
cursor: not-allowed;
}
.span-add-row:hover {
cursor: pointer;
color: #66b1ff;
}
</style>

View File

@@ -0,0 +1,239 @@
<template>
<div class="container">
<button @click="handleDown">导出</button>
<div id="content">
<div class="box qc orderInformation">
<h1><img src="https://www.orico.com.cn//uploads/default/logo-black.png"><span id="cgzz"></span></h1>
<h2>采购订单</h2>
<ul class="InformationUl">
<li>TO<span id="gysname"></span></li>
<li>日期<span id="cgdate"></span></li>
<li>地址<span id="gysdz"></span></li>
<li>电话<span id="gyssj"></span></li>
<li>联系人<span id="gyslxr"></span></li>
</ul>
<div class="tableA">
<table>
<thead>
<tr>
<td>采购订单号</td>
<td>物料编码</td>
<td>物料名称</td>
<td>规格型号</td>
<td>数量</td>
<td>单位</td>
<td>含税单价</td>
<td>总价</td>
<td>交货日期</td>
<td>备注</td>
</tr>
</thead>
<tbody id="t_body">
</tbody>
<tfoot>
<tr>
<td>合计</td>
<td>人民币</td>
<td colspan='2'><span id="sumprice_to_Chinese"></span></td>
<td><span id="sum_count"></span></td>
<td>Pcs</td>
<td colspan='2'><strong id="sumprice"></strong></td>
<td></td>
<td></td>
</tr>
</tfoot>
</table>
</div>
<div class="InformationTxt">
<p>1.包装方式根据我司品质规定的包装方式</p>
<p>2.付款方式<b id="fktype" style=" font-weight: normal;"> </b></p>
<p>3.备品要求<span></span>0.3%&#12288;&#12288;<span></span>0.5%&#12288;&#12288;<span></span>10%&#12288;&#12288;<span></span>20%&#12288;&#12288;<span></span>其他</p>
<p>4.交货地点<b id="sgdz" style=" font-weight: normal;"></b></p>
<p>5.质量要求供应商所提供的产品质量必须达到我国环保标准和我方客户所在地标准如果供应商提供有质量问题或不符合环保标准的产品我司可以无条件退货且供应商需承担我司的一切损失</p>
<p>6.若供应商逾期交货我司有权依照以逾期所交货物的货款为基数每日千分之三向供应商收取违约金逾期10日交货的我司有权单方解除合同</p>
<p>7.有关本采购单的任何争议双方应协商解决协商不成的应向深圳市元创时代科技有限公司所在地法院诉讼</p>
<p>8.所送的物品请保证数量及质量 送货前请通知我司采购否则我司将拒收货物</p>
<p>9.送货时烦请在请货单上注明相应的PO号码,送货单上必需有我司收货专用章否则无效,谢谢合作</p>
</div>
<div class="confirm">
<ul>
<li>供应商确认</li>
<li>核准</li>
<li>审核<span id="editer"></span> </li>
<li>制表人<span id="manperson"></span> </li>
</ul>
</div>
</div>
</div>
</div>
</template>
<script>
import htmlToPdf from '@/utils/htmlToPdf.js';
export default {
name: "OrderToPdf",
data(){
return {
}
},
methods: {
handleDown(){
htmlToPdf.downloadPDF( document.querySelector('#content'),'订单合同');
}
}
}
</script>
<style scoped>
* {
margin: 0px;
padding: 0px;
list-style: none
}
table {
border-collapse: collapse;
border-spacing: 0;
width: 100%
}
tbody {
display: table-row-group;
vertical-align: middle;
border-color: inherit
}
tr {
display: table-row;
vertical-align: inherit;
border-color: inherit
}
td {
padding: 5px 5px;
border: 1px solid #333;
vertical-align: middle
}
.box {
/*width: 900px;*/
margin: 0 auto
}
.qc:after {
content: ".";
display: block;
height: 0;
clear: both;
visibility: hidden
}
.orderInformation {
/*box-shadow: 0 1px 4px 0 rgba(0,0,0,0.2);*/
margin: 10px auto;
padding: 10px
}
.orderInformation h1 {
padding: 10px 80px;
font-weight: normal;
font-size: 30px;
}
.orderInformation h1 img {
position: relative;
float: left;
top: 2px;
margin-right: 10px;
}
.orderInformation h2 {
text-align: center;
background: #f1f1f1;
/*margin: 15px 0;*/
font-weight: normal;
font-size: 24px;
padding: 5px 0;
}
.InformationUl {
margin-left: 35px;
overflow: hidden
}
.InformationUl li {
/*width: 50%;*/
float: left;
font-size: 14px;
margin-bottom: 10px
}
.InformationUl li:nth-child(1) {
width: 60%
}
.InformationUl li:nth-child(3) {
width: 60%
}
.InformationUl li:nth-child(5) {
width: 60%
}
.tableA {
margin-bottom: 5px
}
.tableA table {
}
.tableA td {
font-size: 12px;
border: 1px solid #000
}
.tableA td * {
font-size: 12px
}
.tableA td:nth-child(1), .tableA td:nth-child(2), .tableA td:nth-child(3), .tableA td:nth-child(8), .tableA td:nth-child(9) {
white-space: nowrap
}
.tableA td:nth-child(10) {
width: 6em
}
.InformationTxt {
}
.InformationTxt p {
font-size: 14px;
/*margin-bottom: 0.5em*/
}
.InformationTxt p span {
width: 10px;
height: 10px;
border: 1px solid #000;
display: inline-block;
position: relative;
top: 1px;
margin-right: 4px
}
.confirm {
}
.confirm ul {
overflow: hidden;
padding: 20px 0
}
.confirm ul li {
width: 25%;
float: left;
font-size: 14px
}
</style>

View File

@@ -0,0 +1,68 @@
<!--
* @作者: 金鑫
* @时间: 2021-10-29 07:52:12
* @描述: 个位数输入框
-->
<template>
<div>
<el-input v-model="value" @change="downEnter" @input="getVal" :oninput="saleNum(value)" maxlength="1"></el-input>
</div>
</template>
<script>
export default {
name: 'InputMini',
props: {
msg: String,
isClear: Boolean
},
data() {
return {
value: '0'
}
},
methods: {
getVal(val) {
this.value = val
},
downEnter(val) {
if (val == '') {
this.value = 0
}
this.$emit('insertNumber', this.value)
},
saleNum(val) {
if (val) {
if (val.length === 1) {
this.value = val.toString().replace(/\D/g, '0')
}
}
}
},
mounted() {
this.value = this.msg
},
watch: {
isClear: function (val) {
if (val) {
this.value = 0
}
}
}
}
</script>
<style scoped lang="scss">
::v-deep(.el-input) {
line-height: 28px;
}
::v-deep(.el-input__inner) {
padding: 0 5px !important;
height: 20px;
font-size: 12px;
line-height: 20px;
width: 28px;
text-align: center;
}
</style>

View File

@@ -0,0 +1,485 @@
<!-- 打印摸版 -->
<template lang="">
<div v-if=' printData.tableData && printData.tableData.length > 0'>
<div style="width:784px;overflow-y: hidden;text-align: center; overflow: hidden;" id='companyTilte'>
<div style="width:784px;text-align: center;">
<span style="font-size: 18px;margin-top: 30px;">{{ userInfo.identity==1 || userInfo.identity==3?userInfo.orgName:userInfo.customerName }}</span>
<h1 style="font-size: 20px;margin-top: 10px;margin-bottom:20px;">{{ printData.orderName === '采购订单管理'? '采购订单' : printData.orderName }}</h1>
<hr style="border:1px soild #000;width:1200px;" />
</div>
</div>
<!-- 表头 -->
<div style="width:784px;text-align:center; margin-bottom:300px" id='headhtml'>
<div style='margin-top:20px;margin-left: 50px;height auto;position:relative'>
<div style='width:350px;float: left;margin-left: 20px;' v-if='printData.orderName === "生产用料清单"'>
<label
style="width:50px; font-size: 14px;font-weight: bold;margin-right: 3px;text-align: right;">销售订单号:</label>
<span style="font-size: 14px;">{{ 100>printData.tableData[0].salBillNo.length>60?printData.tableData[0].salBillNo.slice(0,60)+"...": printData.tableData[0].salBillNo }}</span>
</div>
<div style='width:350px; float: left;margin-left: 20px;' v-if='printData.orderName === "生产用料清单"'>
<label
style="width:50px; font-size: 14px;font-weight: bold;margin-right: 3px;text-align: right;">生产订单号: </label>
<span style="font-size: 14px;">{{ printData.tableData[0].moBillNo }}</span>
</div>
<br v-if='printData.orderName === "生产用料清单"'>
<br v-if='printData.orderName === "生产用料清单"&& printData.tableData[0].salBillNo.length>40 '>
<div style='width:350px; float: left;margin-left: 20px;' v-if='printData.orderName === "生产用料清单"||printData.orderName === "委外用料清单"'>
<label
style="width:50px; font-size: 14px;font-weight: bold;margin-right: 3px;text-align: right;">物料编码:</label>
<span style="font-size: 14px;">{{ printData.tableData[0].pMaterialNumber }}</span>
</div>
<div style='width:350px; float: left;margin-left: 20px;' v-if='printData.orderName === "生产用料清单"||printData.orderName === "委外用料清单"'>
<label
style="width:50px; font-size: 14px;font-weight: bold;margin-right: 3px;text-align: right;">物料名称:</label>
<span style="font-size: 14px;">{{ printData.tableData[0].pMaterialName }}</span>
</div>
<br v-if='printData.orderName === "委外用料清单" ||printData.orderName === "生产用料清单"'>
<div style='width:350px; max-height:300px;float: left;margin-left: 20px;' v-if='printData.orderName === "生产用料清单"||printData.orderName === "委外用料清单"'>
<label
style="width:50px; font-size: 14px;font-weight: bold;margin-right: 3px;text-align: right;">规格型号:</label>
<span style="font-size: 14px;"> {{ printData.tableData[0].pSpecification.length>100?printData.tableData[0].pSpecification.slice(0,100)+"...": printData.tableData[0].pSpecification }}</span>
</div>
<div style='width:300px;max-height:500px;float: left;margin-left: 20px;' v-if='printData.orderName === "生产用料清单"'>
<label
style="width:50px; font-size: 14px;font-weight: bold;margin-right: 3px;text-align: right;">备注:</label>
<span style="font-size: 14px;">{{ printData.tableData[0].orderRemark.length>55?printData.tableData[0].orderRemark.slice(0,55)+"...": printData.tableData[0].orderRemark }}</span>
</div>
<br v-if='printData.orderName === "生产用料清单" &&(printData.tableData[0].orderRemark.length>20 || printData.tableData[0].pSpecification.length>20)' />
<br v-if='printData.orderName === "生产用料清单" &&(printData.tableData[0].orderRemark.length>45 || printData.tableData[0].pSpecification.length>45)' />
<div style='width:350px; float: left;margin-left: 20px;' v-if='printData.orderName === "委外用料清单"'>
<label
style="width:50px; font-size: 14px;font-weight: bold;margin-right: 3px;text-align: right;">单据编号:</label>
<span style="font-size: 14px;" v-if="printData.orderName ==='委外用料清单'">{{ printData.tableData[0].outSourcMaterialNo }}</span>
<span style="font-size: 14px;" v-else>{{ printData.tableData[0].produceMaterialNo }}</span>
</div>
<br v-if='printData.orderName === "委外用料清单"'>
<div style='width:350px; float: left;margin-left: 20px;' v-if='printData.orderName === "委外用料清单"'>
<label
style="width:50px; font-size: 14px;font-weight: bold;margin-right: 3px;text-align: right;">委外订单号</label>
<span style="font-size: 14px;" v-if='printData.orderName !== "委外用料清单"'>{{ printData.tableData[0].moBillNo }}</span>
<span style="font-size: 14px;" v-else>{{ printData.tableData[0].outSourcOrderNo }}</span>
</div>
<div style='width:350px; float: left;margin-left: 20px;' v-if='printData.orderName === "委外用料清单"'>
<label
style="width:50px; font-size: 14px;font-weight: bold;margin-right: 3px;text-align: right;">期望交期:</label>
<span style="font-size: 14px;">{{ printData.tableData[0].expectDate }}</span>
</div>
<br v-if='printData.orderName === "生产用料清单"||printData.orderName === "委外用料清单"'>
<div style='width:350px; float: left;margin-left: 20px;' v-if='printData.orderName === "委外用料清单" || printData.orderName === "生产领料单"||printData.orderName==="生产补料单"||printData.orderName==="生产退料单"||printData.orderName==="委外领料单"||printData.orderName==="委外补料单"||printData.orderName==="委外退料单"'>
<label
style="width:50px; font-size: 14px;font-weight: bold;margin-right: 3px;text-align: right;">{{ printData.orderName==='委外领料单'||printData.orderName==='委外补料单'||printData.orderName==='委外退料单'?'采购订单号:':'销售订单号:' }}</label>
<span style="font-size: 14px;" v-if="printData.orderName==='委外领料单'||printData.orderName==='委外补料单'||printData.orderName==='委外退料单'">{{ printData.tableData[0].purorderNo }}</span>
<span style="font-size: 14px;" v-if="printData.orderName==='生产用料清单'||printData.orderName==='委外用料清单'||printData.orderName==='生产领料单'||printData.orderName==='生产补料单'||printData.orderName==='生产退料单'">{{ printData.tableData[0].salBillNo }}</span>
</div>
<div style='width:350px; float: left;margin-left: 20px;' v-if='printData.orderName === "生产领料单"||printData.orderName==="生产补料单"||printData.orderName==="生产退料单"||printData.orderName==="委外领料单"||printData.orderName==="委外补料单"||printData.orderName==="委外退料单"'>
<label
style="width:50px; font-size: 14px;font-weight: bold;margin-right: 3px;text-align: right;">{{ printData.orderName === "生产领料单"||printData.orderName==="生产补料单"||printData.orderName==="生产退料单"?'生产订单号:':'供应商:' }}</label>
<span style="font-size: 14px;" v-if='printData.orderName === "生产领料单"||printData.orderName==="生产补料单"||printData.orderName==="生产退料单"'>{{ printData.tableData[0].moBillNo }}</span>
<span style="font-size: 14px;" v-if="printData.orderName==='委外领料单'||printData.orderName==='委外补料单'||printData.orderName==='委外退料单'">{{ printData.tableData[0].supplier }}</span>
</div>
<br v-if='printData.orderName === "生产领料单" ||printData.orderName==="生产补料单"||printData.orderName==="生产退料单"||printData.orderName==="委外领料单"||printData.orderName==="委外补料单"||printData.orderName==="委外退料单"'>
<div style='width:350px; float: left;margin-left: 20px;' v-if='printData.orderName === "生产领料单" ||printData.orderName==="生产补料单"||printData.orderName==="生产退料单"||printData.orderName==="委外领料单"||printData.orderName==="委外补料单"||printData.orderName==="委外退料单"'>
<label
style="width:50px; font-size: 14px;font-weight: bold;margin-right: 3px;text-align: right;">下单日期:</label>
<span style="font-size: 14px;">{{ printData.tableData[0].date }}</span>
</div>
<div style='width:350px; float: left;margin-left: 20px;' v-if='printData.orderName === "生产领料单" ||printData.orderName==="生产补料单"||printData.orderName==="生产退料单"||printData.orderName==="委外领料单"||printData.orderName==="委外补料单"||printData.orderName==="委外退料单"'>
<label
style="width:50px; font-size: 14px;font-weight: bold;margin-right: 3px;text-align: right;">{{ printData.orderName }}号:</label>
<span style="font-size: 14px;" v-if='printData.orderName === "生产领料单"'>{{ printData.tableData[0].producePickNo }}</span>
<span style="font-size: 14px;" v-if='printData.orderName === "生产补料单"'>{{ printData.tableData[0].produceFeedNo }}</span>
<span style="font-size: 14px;" v-if='printData.orderName === "生产退料单"'>{{ printData.tableData[0].produceReturnNo }}</span>
<span style="font-size: 14px;" v-if='printData.orderName === "委外领料单"'>{{ printData.tableData[0].outSourcPickNo }}</span>
<span style="font-size: 14px;" v-if='printData.orderName === "委外补料单"'>{{ printData.tableData[0].outSourcFeedNo }}</span>
<span style="font-size: 14px;" v-if='printData.orderName === "委外退料单"'>{{ printData.tableData[0].outSourcReturnNo }}</span>
</div>
<div style='width:350px; float: left;margin-left: 20px;' v-if='printData.orderName === "生产用料清单"'>
<label
style="width:50px; font-size: 14px;font-weight: bold;margin-right: 3px;text-align: right;">生产部门:</label>
<span style="font-size: 14px;">{{ printData.tableData[0].workShop }}</span>
</div>
<div style='width:350px; float: left;margin-left: 20px;' v-if='printData.orderName === "委外用料清单"'>
<label
style="width:50px; font-size: 14px;font-weight: bold;margin-right: 3px;text-align: right;">供应商:</label>
<span style="font-size: 14px;">{{ printData.tableData[0].supplier }}</span>
</div>
<div style='width:350px; float: left;margin-left: 20px;' v-if='printData.orderName === "委外用料清单"'>
<label
style="width:50px; font-size: 14px;font-weight: bold;margin-right: 3px;text-align: right;">数量:</label>
<span style="font-size: 14px;">{{ printData.tableData[0].number }}</span>
</div>
<br v-if='printData.orderName === "委外用料清单"'>
<div style='width:350px; float: left;margin-left: 20px;' v-if='printData.orderName === "委外用料清单"'>
<label
style="width:50px; font-size: 14px;font-weight: bold;margin-right: 3px;text-align: right;">{{ printData.orderName === "生产用料清单"?'生产订单备注:':'委外订单备注:' }}</label>
<span style="font-size: 14px;">{{ printData.tableData[0].orderRemark }}</span>
</div>
<div style='width:350px; float: left;margin-left: 20px;' v-if='printData.orderName === "生产用料清单"'>
<label
style="width:50px; font-size: 14px;font-weight: bold;margin-right: 3px;text-align: right;">条码:</label>
<span style="font-size: 14px;">{{ printData.tableData[0].barCode }}</span>
</div>
<div style='width:350px; float: left;margin-left: 20px;' v-if='printData.orderName === "销售订单"'>
<label
style="width:50px; font-size: 14px;font-weight: bold;margin-right: 3px;text-align: right;">销售部门/销售员/跟单:</label>
<span style="font-size: 14px;">{{ (printData.tableData[0].sellPart+'/'+ printData.tableData[0].sellPerson +'/'+ printData.tableData[0].qc).length>18?(printData.tableData[0].sellPart+'/'+ printData.tableData[0].sellPerson +'/'+ printData.tableData[0].qc).slice(0,18)+"...":(printData.tableData[0].sellPart+'/'+ printData.tableData[0].sellPerson +'/'+ printData.tableData[0].qc) }}</span>
</div>
<div style='width:350px; float: left;margin-left: 20px;' v-if='printData.orderName === "销售退货订单"'>
<label
style="width:50px; font-size: 14px;font-weight: bold;margin-right: 3px;text-align: right;">销售部门/销售员:</label>
<span style="font-size: 14px;">{{ (printData.tableData[0].stockDept+'/'+ printData.tableData[0].saleDept).length>18?(printData.tableData[0].saleDept+'/'+ printData.tableData[0].salesMan).slice(0,18)+"...":(printData.tableData[0].saleDept+'/'+ printData.tableData[0].salesMan) }}</span>
</div>
<div style='width:350px; float: left;margin-left: 20px;' v-if='printData.orderName === "送货单"||printData.orderName === "采购订单管理"||printData.orderName === "采购备料订单"||printData.orderName === "采购备料订单"||printData.orderName === "采购退料单"'>
<label
style="width:50px; font-size: 14px;font-weight: bold;margin-right: 3px;text-align: right;">供应商:</label>
<span style="font-size: 14px;">{{ printData.tableData[0].supplierName.length > 18 ? printData.tableData[0].supplierName.slice(0,18)+"...":printData.tableData[0].supplierName }}</span>
</div>
<div style='width:350px; float: left;margin-left: 20px;' v-if='printData.orderName === "采购入库单"'>
<label
style="width:50px; font-size: 14px;font-weight: bold;margin-right: 3px;text-align: right;">供应商:</label>
<span style="font-size: 14px;">{{ printData.tableData[0].supplier.length > 18 ? printData.tableData[0].supplier.slice(0,18)+"...":printData.tableData[0].supplier }}</span>
</div>
<div style='width:350px; float: left;margin-left: 20px;' v-if='printData.orderName === "销售出库单" ||printData.orderName === "发货通知单"'>
<label
style="width:50px; font-size: 14px;font-weight: bold;margin-right: 3px;text-align: right;">销售部门/销售员:</label>
<span style="font-size: 14px;">{{ (printData.tableData[0].sellDept+'/'+printData.tableData[0].sellStaff).length > 18 ? (printData.tableData[0].sellDept+'/'+printData.tableData[0].sellStaff).slice(0,18)+"...":(printData.tableData[0].sellDept+'/'+printData.tableData[0].sellStaff) }}</span>
</div>
<div style='width:350px; float: left;margin-left: 20px;' v-if='printData.orderName === "分步式调出单"'>
<label
style="width:50px; font-size: 14px;font-weight: bold;margin-right: 3px;text-align: right;">调入库存组织:</label>
<span style="font-size: 14px;">{{ printData.tableData[0].stockinOrg.length > 18 ? printData.tableData[0].stockinOrg.slice(0,18)+"...":printData.tableData[0].stockinOrg }}</span>
</div>
<div style='width:350px; float: left;margin-left: 20px;' v-if='printData.orderName === "生产入库单" ||printData.orderName === "直接调拨单"'>
<label
style="width:50px; font-size: 14px;font-weight: bold;margin-right: 3px;text-align: right;">单据编号:</label>
<span v-if='printData.orderName === "直接调拨单"' style="font-size: 14px;">{{ printData.tableData[0].billNo.length > 18 ? printData.tableData[0].billNo.slice(0,18)+"...":printData.tableData[0].billNo }}</span>
<span v-else style="font-size: 14px;">{{ printData.tableData[0].produceInStockNo.length > 18 ? printData.tableData[0].produceInStockNo.slice(0,18)+"...":printData.tableData[0].produceInStockNo }}</span>
</div>
<!-- 日期 -->
<div style='width:350px; float: left;margin-left: 20px;'>
<label
style="width:50px; font-size: 14px;font-weight: bold;margin-right: 3px;text-align: right;"> {{ printData.orderName === "销售订单" ?'下单日期':printData.orderName === "销售退货订单"? '退货日期':printData.orderName === "送货单"?'送货日期':printData.orderName === "采购订单管理" ? '日期:' : printData.orderName === "采购备料订单"?'备料日期:': printData.orderName === "采购退料单" ? '退料日期:' : printData.orderName === '采购入库单' ? '入库日期:' : printData.orderName === '销售出库单' ? '下单日期:' : printData.orderName === '发货通知单' ? '日期:' : printData.orderName === '直接调拨单' ? '下单日期:' : printData.orderName === '分步式调出单' ? '单据日期:' : printData.orderName === '生产入库单' ? '下单日期:' : '' }}</label>
<span style="font-size: 14px;">{{ printData.orderName === "销售订单" ? printData.tableData[0].placeOrderDate : printData.orderName === '销售退货订单' ? printData.tableData[0].returnDate : printData.orderName === '送货单' ? printData.tableData[0].deliveryDate : printData.orderName === '采购订单管理' ? printData.tableData[0].date : printData.orderName === '采购备料订单' ? printData.tableData[0].date : printData.orderName === '采购退料单' ? printData.tableData[0].date : printData.orderName === '采购入库单' ? printData.tableData[0].date : printData.orderName === '销售出库单' ? printData.tableData[0].orderDate : printData.orderName === '发货通知单' ? printData.tableData[0].orderDate : printData.orderName === '直接调拨单' ? printData.tableData[0].date : printData.orderName === '分步式调出单' ? printData.tableData[0].date : printData.orderName === '生产入库单' ? printData.tableData[0].date : '' }}</span>
</div>
<br>
<div style='width:350px; float: left;margin-left: 20px;' v-if='printData.orderName === "销售订单" || printData.orderName === "发货通知单" || printData.orderName === "销售退货订单" || printData.orderName === "销售出库单"'>
<label
style="width:50px; font-size: 14px;font-weight: bold;margin-right: 3px;text-align: right;">客户:</label>
<span style="font-size: 14px;" v-if='printData.orderName === "销售订单"'>{{ (printData.tableData[0].custom).length>35?(printData.tableData[0].custom).slice(0,35)+"..." :(printData.tableData[0].custom) }}</span>
<span style="font-size: 14px;" v-if='printData.orderName === "销售退货订单"'>{{ (printData.tableData[0].retcust).length>35?(printData.tableData[0].retcust).slice(0,35)+"..." :(printData.tableData[0].retcust) }}</span>
<span style="font-size: 14px;" v-if='printData.orderName === "销售出库单"'>{{ (printData.tableData[0].customers).length>35?(printData.tableData[0].customers).slice(0,35)+"..." :(printData.tableData[0].customers) }}</span>
<span style="font-size: 14px;" v-if='printData.orderName === "发货通知单"'>{{ (printData.tableData[0].customers).length>35?(printData.tableData[0].customers).slice(0,35)+"..." :(printData.tableData[0].customers) }}</span>
</div>
<div style='width:350px; float: left;margin-left: 20px;' v-if='printData.orderName === "销售订单" || printData.orderName === "发货通知单"||printData.orderName === "采购订单管理"'>
<label
style="width:50px; font-size: 14px;font-weight: bold;margin-right: 3px;text-align: right;">联系人/电话:</label>
<span style="font-size: 14px;">{{ printData.tableData[0].linkMode }}</span>
</div>
<div style='width:350px; float: left;margin-left: 20px;' v-if='printData.orderName === "销售出库单"'>
<label
style="width:50px; font-size: 14px;font-weight: bold;margin-right: 3px;text-align: right;">打包方式:</label>
</div>
<div style='width:350px; float: left;margin-left: 20px;' v-if='printData.orderName === "分步式调出单"'>
<label
style="width:50px; font-size: 14px;font-weight: bold;margin-right: 3px;text-align: right;">单据编号:</label>
<span style="font-size: 14px;">{{ printData.tableData[0].billNo.length > 18 ? printData.tableData[0].billNo.slice(0,18)+"...":printData.tableData[0].billNo }}</span>
</div>
<div style='width:350px; float: left;margin-left: 20px;' v-if='printData.orderName === "直接调拨单" || printData.orderName === "分步式调出单"'>
<label
style="width:50px; font-size: 14px;font-weight: bold;margin-right: 3px;text-align: right;">仓管员:</label>
<span style="font-size: 14px;">{{ printData.tableData[0].stockerStaff }}</span>
</div>
<br v-if='printData.orderName === "发货通知单" || printData.orderName === "销售出库单"'>
<div style='width:350px; float: left;margin-left: 20px;' v-if='printData.orderName === "销售出库单" || printData.orderName === "发货通知单"'>
<label style="width:50px; font-size: 14px;font-weight: bold;margin-right: 3px;text-align: right;">发货方式:</label>
</div>
<div style='width:350px; float: left;margin-left: 20px;' v-if='printData.orderName === "销售出库单" || printData.orderName === "发货通知单"'>
<label style="width:50px; font-size: 14px;font-weight: bold;margin-right: 3px;text-align: right;">物流/快递公司:</label>
</div>
<br v-if='printData.orderName === "发货通知单"'>
<div style='width:350px; float: left;margin-left: 20px;' v-if='printData.orderName === "发货通知单"'>
<label
style="width:50px; font-size: 14px;font-weight: bold;margin-right: 3px;text-align: right;">打包方式:</label>
</div>
<br v-if='printData.orderName !== "采购订单管理" && printData.orderName !== "发货通知单" && printData.orderName !== "直接调拨单"'>
<br v-if='printData.orderName === "采购订单管理"'>
<div style='width:350px; float: left;margin-left: 20px;' v-if='printData.orderName === "分步式调出单" || printData.orderName === "直接调拨单" || printData.orderName === "销售出库单" || printData.orderName === "发货通知单"'>
<label
style="width:50px; font-size: 14px;font-weight: bold;margin-right: 3px;text-align: right;">收货地址:</label>
<span style="font-size: 14px;" v-if='printData.orderName === "销售出库单"'>{{ !printData.tableData[0].linkAdress ? '' : printData.tableData[0].linkAdress }}</span>
<span style="font-size: 14px;" v-if='printData.orderName === "发货通知单"'>{{ !printData.tableData[0].linkAdress ? '' : printData.tableData[0].linkAdress }}</span>
<span style="font-size: 14px;" v-if='printData.orderName === "直接调拨单"'>{{ !printData.tableData[0].linkAdress? '' : printData.tableData[0].linkAdress }}</span>
<span style="font-size: 14px;" v-if='printData.orderName === "分步式调出单"'>{{ !printData.tableData[0].linkAdress? '' : printData.tableData[0].linkAdress }}</span>
</div>
</div>
</div>
<!-- 表体 -->
<div id="div2">
<table border=1 width="100%" style="border:solid 1px black;border-collapse:collapse;table-layout: fixed; word-wrap:break-all;">
<thead>
<!--表头 -->
<tr>
<th style="padding: 6px 0;font-weight: bold; font-size: 12px;" v-for='(itm,index) in theadDate' :key="itm.thName" :style="{width:itm.field ==='specification'?'30%':'auto'}">{{ itm.thName }}</th>
</tr>
</thead>
<tbody>
<!--表体 -->
<tr v-for='(it,ind) in printData.tableData' :key="ind">
<td style="font-size: 10px;color:#303133 ;padding: 6px 5px;word-wrap:break-word; word-break:break-all;" v-for='(itm,index) in theadDate' :key="itm.field">
{{ itm.field==='sendNumber' || (itm.field==='realNumber' &&printData.orderName === '生产入库单')|| itm.field==='realNumber'||itm.field==='mustNumber'||itm.field==='sendNumber'||itm.field==='receiveNumber' ?(it.subUnitMultiple ? it.subUnitMultiple : 1)*it[itm.field]:(itm.field? it[itm.field]:(ind+1)) }}
</td>
</tr>
<!--合计 -->
<tr v-if='printData.orderName === "销售订单"'>
<td colspan="5" style="font-size: 10px;color:#303133 ;padding: 6px 0;word-wrap:break-word; word-break:break-all;">合计</td>
<td style="font-size: 10px;color:#303133 ;padding: 6px 0;word-wrap:break-word; word-break:break-all;">
<span style="color:blue" tdata="Sum" format="#,##0.00" tindex="6">######</span></td>
<td style="font-size: 10px;color:#303133 ;padding: 6px 0;word-wrap:break-word; word-break:break-all;">
<span style="color:blue" tdata="Sum" format="#,##0.00" tindex="7">¥######</span></td>
<td></td>
<td style="font-size: 10px;color:#303133 ;padding: 6px 0;word-wrap:break-word; word-break:break-all;">
<span style="color:blue" tdata="Sum" format="#,##0.00" tindex="9">¥######</span></td>
</tr>
<tr v-if='printData.orderName === "销售退货订单"||printData.orderName === "送货单"||printData.orderName === "采购订单管理"'>
<td colspan="6" style="font-size: 10px;color:#303133 ;padding: 6px 0;word-wrap:break-word; word-break:break-all;">合计</td>
<td style="font-size: 10px;color:#303133 ;padding: 6px 0;word-wrap:break-word; word-break:break-all;">
<span style="color:blue; word-break:break-all;width:100px" tdata="Sum" format="#,##0.00" tindex="7">######</span></td>
<td style="font-size: 10px;color:#303133 ;padding: 6px 0;word-wrap:break-word; word-break:break-all;">
<span style="color:blue; word-break:break-all;width:100px" tdata="Sum" format="#,##0.00" tindex="8">{{ printData.orderName === "送货单"?'':'' }}######</span></td>
<td></td>
<td v-if='printData.orderName === "送货单"||printData.orderName === "采购订单管理"'></td>
<td v-if='printData.orderName !== "送货单" && printData.orderName !== "采购订单管理"' style="font-size: 10px;color:#303133 ;padding: 6px 0;word-wrap:break-word; word-break:break-all;">
<span style="color:blue; word-break:break-all;width:100px" tdata="Sum" format="#,##0.00" tindex="10">¥######</span>
</td>
</tr>
<tr v-if='printData.orderName === "采购备料订单"'>
<td colspan="5" style="font-size: 10px;color:#303133 ;padding: 6px 0;word-wrap:break-word; word-break:break-all;">合计</td>
<td style="font-size: 10px;color:#303133 ;padding: 6px 0;word-wrap:break-word; word-break:break-all;">
<span style="color:blue" tdata="Sum" format="#,##0.00" tindex="6">######</span>
</td>
<td></td>
<td></td>
</tr>
<tr v-if='printData.orderName === "采购退料单"'>
<td colspan="6" style="font-size: 10px;color:#303133 ;padding: 6px 0;word-wrap:break-word; word-break:break-all;">合计</td>
<td style="font-size: 10px;color:#303133 ;padding: 6px 0;word-wrap:break-word; word-break:break-all;">
<span style="color:blue" tdata="Sum" format="#,##0.00" tindex="7">######</span></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr v-if='printData.orderName === "采购入库单"||printData.orderName === "销售出库单"||printData.orderName === "发货通知单"'>
<td colspan="7" style="font-size: 10px;color:#303133 ;padding: 6px 0;word-wrap:break-word; word-break:break-all;">合计</td>
<td style="font-size: 10px;color:#303133 ;padding: 6px 0;word-wrap:break-word; word-break:break-all;">
<span style="color:blue" tdata="Sum" format="#,##0.00" tindex="8">######</span></td>
<td></td>
<td></td>
</tr>
<tr v-if='printData.orderName === "直接调拨单" || printData.orderName === "生产入库单"'>
<td colspan="6" style="font-size: 10px;color:#303133 ;padding: 6px 0;word-wrap:break-word; word-break:break-all;">合计</td>
<td style="font-size: 10px;color:#303133 ;padding: 6px 0;word-wrap:break-word; word-break:break-all;">
<span style="color:blue" tdata="Sum" format="#,##0.00" tindex="7">######</span></td>
<td></td>
<td></td>
</tr>
<tr v-if='printData.orderName === "分步式调出单"'>
<td colspan="6" style="font-size: 10px;color:#303133 ;padding: 6px 0;word-wrap:break-word; word-break:break-all;">合计</td>
<td style="font-size: 10px;color:#303133 ;padding: 6px 0;word-wrap:break-word; word-break:break-all;">
<span style="color:blue" tdata="Sum" format="#,##0.00" tindex="7">######</span></td>
<td></td>
</tr>
<tr v-if='printData.orderName === "生产用料清单"||printData.orderName === "委外用料清单"'>
<td colspan="7" style="font-size: 10px;color:#303133 ;padding: 6px 0;word-wrap:break-word; word-break:break-all;">合计</td>
<td style="font-size: 10px;color:#303133 ;padding: 6px 0;word-wrap:break-word; word-break:break-all;">
<span style="color:blue" tdata="Sum" format="#,##0.00" tindex="8">######</span></td>
<td style="font-size: 10px;color:#303133 ;padding: 6px 0;word-wrap:break-word; word-break:break-all;">
<span style="color:blue" tdata="Sum" format="#,##0.00" tindex="9">######</span></td>
<td></td>
</tr>
<tr v-if='printData.orderName === "生产领料单"||printData.orderName === "委外领料单"'>
<td colspan="6" style="font-size: 10px;color:#303133 ;padding: 6px 0;word-wrap:break-word; word-break:break-all;">合计</td>
<td style="font-size: 10px;color:#303133 ;padding: 6px 0;word-wrap:break-word; word-break:break-all;">
<span style="color:blue" tdata="Sum" format="#,##0.00" tindex="7">######</span></td>
<td style="font-size: 10px;color:#303133 ;padding: 6px 0;word-wrap:break-word; word-break:break-all;">
<span style="color:blue" tdata="Sum" format="#,##0.00" tindex="8">######</span></td>
<td v-if="printData.orderName === '生产领料单' ||printData.orderName === '委外领料单'"></td>
<!-- <td></td> -->
</tr>
<tr v-if='printData.orderName === "生产补料单"||printData.orderName === "生产退料单"||printData.orderName === "委外补料单"||printData.orderName === "委外退料单"'>
<td colspan="6" style="font-size: 10px;color:#303133 ;padding: 6px 0;word-wrap:break-word; word-break:break-all;">合计</td>
<td style="font-size: 10px;color:#303133 ;padding: 6px 0;word-wrap:break-word; word-break:break-all;">
<span style="color:blue" tdata="Sum" format="#,##0.00" tindex="7">######</span>
</td>
<td></td>
<!-- <td></td> -->
</tr>
</tbody>
</table>
</div>
<!-- 表尾-->
<div style="width:784px;overflow-y: hidden;text-align: center; overflow: hidden;" id='foothtml'>
<div style="font-size: 14px; color: #303133;margin-top:30px;" v-if='printData.tableData.length > 0'>
<div style="margin-bottom:10px;" v-if='printData.orderName === "销售订单" || printData.orderName === "分步式调出单" || printData.orderName === "直接调拨单" || printData.orderName === "发货通知单" || printData.orderName === "销售出库单" || printData.orderName === "采购订单管理" || printData.orderName === "采购备料订单"'>
<span style='font-weight: bold;margin-right: 3px;'>联系人/电话:</span>
<span>{{ printData.orderName === "销售订单" || printData.orderName === "采购订单管理" ? printData.tableData[0].linkMode : printData.orderName === "采购备料订单" ? printData.tableData[0].supplierContactName + '/' + printData.tableData[0].supplierTelphone : printData.orderName === "销售出库单" ? printData.tableData[0].linkMode : printData.orderName === '发货通知单' ? printData.tableData[0].linkMode : printData.orderName === '直接调拨单' ? printData.tableData[0].linkMode : printData.orderName === '分步式调出单' ? printData.tableData[0].linkMode : '' }}</span>
</div>
<div style="margin-bottom:10px;" v-if='printData.orderName === "销售订单" || printData.orderName === "分步式调出单" || printData.orderName === "直接调拨单" || printData.orderName === "发货通知单" || printData.orderName === "采购订单管理" || printData.orderName === "销售出库单"'>
<span style='font-weight: bold;margin-right: 3px;'>{{ printData.orderName === "采购订单管理"? '送货地址' :'收货地址' }}</span>
<span>{{ printData.orderName === "销售订单" ? printData.tableData[0].linkAdress : printData.orderName === "采购订单管理" ? printData.tableData[0].providerAddress : printData.orderName === "销售出库单" ? printData.tableData[0].linkAdress : printData.orderName === "发货通知单" ? printData.tableData[0].linkAdress : printData.orderName === "直接调拨单" ? printData.tableData[0].linkAdress : printData.orderName === '分步式调出单' ? printData.tableData[0].linkAdress : '' }}</span>
</div>
<div style="display: flex; flex-direction: inherit;">
<div style="margin-bottom:5px;" v-if='printData.orderName === "采购备料订单"'>
<span style='font-weight: bold;margin-right: 3px;'>供应商:</span>
<span>{{ printData.tableData[0].supplierName }}</span>
</div>
<div style="margin-left: 4%;margin-bottom:5px;" v-if='printData.orderName === "采购备料订单"'>
<span style='font-weight: bold;margin-right: 3px;'>确认日期:</span>
<span>{{ printData.tableData[0].confirmeDate }}</span>
</div>
</div>
<div style="display: flex; flex-direction: inherit;">
<div style="margin-right: 4%;margin-bottom:5px;" v-if='printData.orderName === "销售订单" || printData.orderName === "采购订单管理"'>
<span style='font-weight: bold;margin-right: 3px;'>税率(%)</span>
<span>{{ printData.orderName === "销售订单" ? printData.tableData[0].taxRate : printData.orderName === "采购订单管理" ? printData.tableData[0].taxRate : '' }}</span>
</div>
<div style="margin-bottom:5px;" v-if='printData.orderName === "销售订单" || printData.orderName === "采购订单管理" || printData.orderName === "销售退货订单"'>
<span style='font-weight: bold;margin-right: 3px;'>币别:</span>
<span>{{ printData.tableData[0].settlecurr ? printData.tableData[0].settlecurr :printData.tableData[0].settleCurrName }}</span>
</div>
<div style="margin-left: 4%;margin-bottom:5px;" v-if='printData.orderName === "销售订单"'>
<span style='font-weight: bold;margin-right: 3px;'>收款条件:</span>
<span>{{ printData.tableData[0].reccondition }}</span>
</div>
<div style="margin-left: 4%;margin-bottom:5px;" v-if='printData.orderName === "采购订单管理"'>
<span style='font-weight: bold;margin-right: 3px;'>付款条件:</span>
<span>{{ printData.tableData[0].paymentConditionName }}</span>
</div>
</div>
<div>
本订单执行过程中如遇到任何国家或地方政策变化或分歧、争议,依据双方签订的合作协议/合同充分友好沟通协商解决。
</div>
<div style="font-size: 14px;margin-top:30px;margin-left:70px;">
<div style="float: left;width:200pxmargin-left:40px;" v-if='printData.orderName === "生产用料清单"||printData.orderName === "委外用料清单"'>
<div style='margin-bottom:5px'>
<span
style='width:70px;text-align: right;font-weight: bold;margin-right: 3px;margin-bottom:5px;'>
打印时间:</span>
<span>{{ new Date().toLocaleString() }}</span>
</div>
</div>
<div style="float: left;width:120px;margin-left:100px;" v-if='printData.orderName === "生产用料清单"||printData.orderName === "委外用料清单"'>
<div style='margin-bottom:5px'>
<span style='width:70px;text-align: right;font-weight: bold'>发料人:</span>
<span>{{ printData.tableData[0].approverName }}</span>
</div>
</div>
<div style="float: left;width:200px;margin-left:80px;" v-if='printData.orderName === "生产用料清单"||printData.orderName === "委外用料清单"'>
<div style='margin-bottom:5px'>
<span style='width:70px;text-align: right;font-weight: bold'>领料人:</span>
<span>{{ printData.tableData[0].approverName }}</span>
</div>
</div>
<div style="float: left;max-width:250px;min-width:200px;margin-left:20px;" v-if='printData.orderName !== "生产用料清单" &&printData.orderName !== "委外用料清单" &&printData.orderName !== "采购订单管理"'>
<div style='margin-bottom:5px'>
<span
style='width:70px;text-align: right;font-weight: bold;margin-right: 3px;margin-bottom:5px;'>
创建人:</span>
<span>{{ printData.tableData[0].createName }}</span>
</div>
<div>
<span style='width:70px;text-align: right;font-weight: bold'>创建日期:</span>
<span>{{ printData.tableData[0].createDate }}</span>
</div>
</div>
<div style="float: left;max-width:250px;min-width:200px;margin-left:100px;" v-if="printData.orderName !== '采购订单管理' && printData.orderName !== '生产用料清单'">
<div style='margin-bottom:5px'>
<span style='width:70px;text-align: right;font-weight: bold'>审核人:</span>
<span>{{ printData.tableData[0].checkName }}</span>
</div>
<div>
<span style='width:70px;text-align: right;font-weight: bold'>审核日期:</span>
<span v-if="printData.orderName === '采购备料订单'">{{ printData.tableData[0].createDate }}</span>
<span v-else>{{ printData.tableData[0].checkDate }}</span>
</div>
</div>
<div v-if="printData.orderName === '采购订单管理'" style='margin-left:-40px'>
<div style="float: left;max-width:250px;min-width:200px;">
<div style='margin-bottom:5px'>
<span style='width:70px;text-align: right;font-weight: bold'>采购:</span>
<span>{{ printData.tableData[0].purchaserName }}</span>
</div>
<div>
<span style='width:70px;text-align: right;font-weight: bold'>日期:</span>
<span>{{ printData.tableData[0].date }}</span>
</div>
</div>
<div style="float: left;max-width:250px;min-width:200px;margin-left:50px;">
<div style='margin-bottom:5px'>
<span style='width:70px;text-align: right;font-weight: bold'>审核人:</span>
<span>{{ printData.tableData[0].checkName }}</span>
</div>
<div>
<span style='width:70px;text-align: right;font-weight: bold'>日期:</span>
<span>{{ printData.tableData[0].checkDate }}</span>
</div>
</div>
<div style="float: left;max-width:250px;min-width:200px;margin-left:50px;">
<div style='margin-bottom:5px'>
<span style='width:70px;text-align: right;font-weight: bold'>供应商确认:</span>
<span>{{ printData.tableData[0].confirmerName }}</span>
</div>
<div>
<span style='width:70px;text-align: right;font-weight: bold'>日期:</span>
<span>{{ printData.tableData[0].confirmeDate }}</span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import { mapState } from 'vuex'
export default {
data() {
return {
thlist: ['No.', '采购订单号', '物料编码', '物料名称', '数量', '物料编码单位', '含税合计', '备注'],
table: []
}
},
props: {
//如果不要这个显示就传那个标识 如果不要保存显示 就 btnType=['save'] 'disabled, de-disabled' --存在再集合里面就是 显示
printData: {
type: Object,
default: function () {
return {
orderName: '订单',
tableData: []
}
}
},
//这个区分不同单据的要素
theadDate: {
type: Array,
default: function () {
return []
}
},
//这个区分不同单据的要素
includeTage: {
type: Array,
default: function () {
return []
}
}
},
computed: {
...mapState({
// 取出页面标签
userInfo: state => (state && state.user && state.user.userInfo ? state.user.userInfo : {})
})
},
mounted() {}
}
</script>

View File

@@ -0,0 +1,111 @@
<!-- 操作记录 -->
<template lang="">
<div class="base-info-form-box">
<el-form ref="form" :model="form" label-width="80px">
<el-row :gutter="10">
<el-col :span="4">
<div class="div-col">
<el-form-item label="关闭人" class="item-bt-s">
<el-input v-model="form.exchangeRate" placeholder=""></el-input>
</el-form-item>
<el-form-item label="创建日期" class="item-bt-s item-date">
<el-date-picker
v-model="placeOrder"
type="date"
placeholder="年/月/日">
</el-date-picker>
</el-form-item>
</div>
</el-col>
<el-col :span="4">
<div class="div-col col-2">
<el-form-item label="最后修改人" class="item-bt-s" :required="true">
<el-select v-model="saleOrigin" placeholder="请选择" @change="originSelect">
<el-option
style="font-size:12px;"
v-for="item in saleOrigins"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="最后修改时间" class="item-bt-s" :required="true">
<el-select v-model="salePart" placeholder="请选择" :disabled="isSaleOrigin" @change="partSelect">
<el-option
style="font-size:12px;"
v-for="item in saleParts"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="提交时间" class="item-bt-s" :required="true">
<el-select v-model="salePerson" placeholder="请选择" :disabled="isSalePart">
<el-option
style="font-size:12px;"
v-for="item in salePersons"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
</div>
</el-col>
<el-col :span="4">
<div class="div-col">
<el-row :gutter="0">
<el-col :span="24">
<el-form-item label="审核人" class="item-bt-s" :maxlength="50">
<el-input v-model="form.express" maxlength="50"></el-input>
</el-form-item>
<el-form-item label="审核时间" class="item-bt-s">
<el-input v-model="form.logisticsNumber" placeholder=""></el-input>
</el-form-item>
</el-col>
</el-row>
</div>
</el-col>
<el-col :span="4">
<div class="div-col">
<el-form-item label="关闭人" class="item-bt-s">
<el-input v-model="form.exchangeRate" placeholder=""></el-input>
</el-form-item>
<el-form-item label="最后关闭时间" class="item-bt-s">
<el-input v-model="form.taxAmount" placeholder="" :disabled="true"></el-input>
</el-form-item>
<el-form-item label="是否手工关闭" class="item-bt-s">
<el-input v-model="form.taxAmount" placeholder="" :disabled="true"></el-input>
</el-form-item>
</div>
</el-col>
<el-col :span="4"></el-col>
</el-row>
</el-form>
</div>
</template>
<script>
export default {
data() {
return {
form:{
orderNumber:'',
express:'',
logisticsNumber:'',
expressNumber:'',
contactNumber:'',
customAddress:'',
exchangeRate:'',
taxAmount:'',
amountOfMoney:'',
priceTaxTotal:''
},
}
},
}
</script>
<style lang="">
</style>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,849 @@
<!-- 打印摸版 -->
<template lang="">
<div>
<div v-for="(idsItem, num) in printData.ids" :key="num">
<div>
<!-- 表头 -->
<div
style="
width: 100%;
overflow-y: hidden;
text-align: center;
overflow: hidden;
"
:id="'companyTilte' + num"
>
<div style="width: 100%; text-align: center">
<span
style="font-size: 18px; margin-top: 30px"
v-if="
printData.orderName !== '送货单' &&
printData.orderName !== '备料订单'
"
>{{
userInfo.identity == 1 || userInfo.identity == 3
? userInfo.orgName
: userInfo.customerName
}}</span
>
<h1
style="
font-size: 20px;
margin-top: 10px;
margin-bottom: 20px;
"
>
{{ printData.orderName }}
</h1>
<hr style="border: 1px soild #000" />
</div>
</div>
<div
:id="'headhtml' + num"
style="
width: 100%;
overflow-y: hidden;
text-align: center;
overflow: hidden;
"
>
<!--生产用料清单-->
<div
style="
margin: 20px 0px;
display: flex;
align-items: center;
flex-direction: column;
"
v-if="printData.orderName === '生产用料清单'"
>
<div
id="head1"
style="margin-bottom: 3px; word-break: break-all"
>
<div
style="
overflow: hidden;
width: 350px;
float: left;
margin-left: 20px;
text-align: left;
max-height: 55px;
"
>
<label
style="
width: 50px;
font-size: 14px;
font-weight: bold;
margin-right: 3px;
text-align: left;
"
>销售订单号:</label
>
<span style="font-size: 14px">{{
printData.tableData[num][0].salBillNo
}}</span>
</div>
<div
style="
overflow: hidden;
width: 350px;
float: left;
margin-left: 20px;
text-align: left;
max-height: 55px;
"
>
<label
style="
width: 50px;
font-size: 14px;
font-weight: bold;
margin-right: 3px;
text-align: left;
"
>生产订单号:</label
>
<span style="font-size: 14px">{{
printData.tableData[num][0].moBillNo
}}</span>
</div>
</div>
<div style="margin-bottom: 3px; word-break: break-all">
<div
style="
overflow: hidden;
width: 350px;
float: left;
margin-left: 20px;
text-align: left;
max-height: 55px;
"
>
<label
style="
width: 50px;
font-size: 14px;
font-weight: bold;
margin-right: 3px;
text-align: left;
"
>物料编码:</label
>
<span style="font-size: 14px">{{
printData.tableData[num][0].pMaterialNumber
}}</span>
</div>
<div
style="
overflow: hidden;
width: 350px;
float: left;
margin-left: 20px;
text-align: left;
max-height: 55px;
"
>
<label
style="
width: 50px;
font-size: 14px;
font-weight: bold;
margin-right: 3px;
text-align: left;
"
>物料名称:</label
>
<span style="font-size: 14px">{{
printData.tableData[num][0].pMaterialName
}}</span>
</div>
</div>
<div
id="head2"
style="margin-bottom: 3px; word-break: break-all"
>
<div
style="
overflow: hidden;
width: 350px;
float: left;
margin-left: 20px;
text-align: left;
max-height: 55px;
"
>
<label
style="
width: 50px;
font-size: 14px;
font-weight: bold;
margin-right: 3px;
text-align: left;
"
>规格型号:</label
>
<span style="font-size: 14px">{{
printData.tableData[num][0].pSpecification
}}</span>
</div>
<div
style="
overflow: hidden;
width: 350px;
float: left;
margin-left: 20px;
text-align: left;
max-height: 55px;
"
>
<label
style="
width: 50px;
font-size: 14px;
font-weight: bold;
margin-right: 3px;
text-align: left;
"
>生产订单备注:</label
>
<span style="font-size: 14px">{{
printData.tableData[num][0].orderRemark
}}</span>
</div>
</div>
<div style="margin-bottom: 3px; word-break: break-all">
<div
style="
overflow: hidden;
width: 350px;
float: left;
margin-left: 20px;
text-align: left;
max-height: 55px;
"
>
<label
style="
width: 50px;
font-size: 14px;
font-weight: bold;
margin-right: 3px;
text-align: left;
"
>生产部门:</label
>
<span style="font-size: 14px">{{
printData.tableData[num][0].workShop
}}</span>
</div>
<div
style="
overflow: hidden;
width: 350px;
float: left;
margin-left: 20px;
text-align: left;
max-height: 55px;
"
>
<label
style="
width: 50px;
font-size: 14px;
font-weight: bold;
margin-right: 3px;
text-align: left;
"
>条码:</label
>
<span style="font-size: 14px">{{
printData.tableData[num][0].barCode
}}</span>
</div>
</div>
<div style="margin-bottom: 3px; word-break: break-all">
<div
style="
overflow: hidden;
width: 350px;
float: left;
margin-left: 20px;
text-align: left;
max-height: 55px;
"
>
<label
style="
width: 50px;
font-size: 14px;
font-weight: bold;
margin-right: 3px;
text-align: left;
"
>数量:</label
>
<span style="font-size: 14px">{{
printData.tableData[num][0].number
}}</span>
</div>
<div
style="
overflow: hidden;
width: 350px;
float: left;
margin-left: 20px;
text-align: left;
max-height: 55px;
"
>
<label
style="
width: 50px;
font-size: 14px;
font-weight: bold;
margin-right: 3px;
text-align: left;
"
>期望交期:</label
>
<span style="font-size: 14px">{{
printData.tableData[num][0].expectDate
}}</span>
</div>
</div>
</div>
<!--委外用料清单-->
<div
style="
margin: 20px 0px;
display: flex;
align-items: center;
flex-direction: column;
"
v-if="printData.orderName === '委外用料清单'"
>
<div
id="head1"
style="margin-bottom: 3px; word-break: break-all"
>
<div
style="
overflow: hidden;
width: 350px;
float: left;
margin-left: 20px;
text-align: left;
max-height: 55px;
"
>
<label
style="
width: 50px;
font-size: 14px;
font-weight: bold;
margin-right: 3px;
text-align: left;
"
>销售订单号:</label
>
<span style="font-size: 14px">{{
printData.tableData[num][0].salBillNo
}}</span>
</div>
<div
style="
overflow: hidden;
width: 350px;
float: left;
margin-left: 20px;
text-align: left;
max-height: 55px;
"
>
<label
style="
width: 50px;
font-size: 14px;
font-weight: bold;
margin-right: 3px;
text-align: left;
"
>委外订单号:</label
>
<span style="font-size: 14px">{{
printData.tableData[num][0].outSourcOrderNo
}}</span>
</div>
</div>
<div style="margin-bottom: 3px; word-break: break-all">
<div
style="
overflow: hidden;
width: 350px;
float: left;
margin-left: 20px;
text-align: left;
max-height: 55px;
"
>
<label
style="
width: 50px;
font-size: 14px;
font-weight: bold;
margin-right: 3px;
text-align: left;
"
>物料编码:</label
>
<span style="font-size: 14px">{{
printData.tableData[num][0].pMaterialNumber
}}</span>
</div>
<div
style="
overflow: hidden;
width: 350px;
float: left;
margin-left: 20px;
text-align: left;
max-height: 55px;
"
>
<label
style="
width: 50px;
font-size: 14px;
font-weight: bold;
margin-right: 3px;
text-align: left;
"
>物料名称:</label
>
<span style="font-size: 14px">{{
printData.tableData[num][0].pMaterialName
}}</span>
</div>
</div>
<div
id="head2"
style="margin-bottom: 3px; word-break: break-all"
>
<div
style="
overflow: hidden;
width: 350px;
float: left;
margin-left: 20px;
text-align: left;
max-height: 55px;
"
>
<label
style="
width: 50px;
font-size: 14px;
font-weight: bold;
margin-right: 3px;
text-align: left;
"
>规格型号:</label
>
<span style="font-size: 14px">{{
printData.tableData[num][0].pSpecification
}}</span>
</div>
<div
style="
overflow: hidden;
width: 350px;
float: left;
margin-left: 20px;
text-align: left;
max-height: 55px;
"
>
<label
style="
width: 50px;
font-size: 14px;
font-weight: bold;
margin-right: 3px;
text-align: left;
"
>委外订单备注:</label
>
<span style="font-size: 14px">{{
printData.tableData[num][0].orderRemark
}}</span>
</div>
</div>
<div style="margin-bottom: 3px; word-break: break-all">
<div
style="
overflow: hidden;
width: 350px;
float: left;
margin-left: 20px;
text-align: left;
max-height: 55px;
"
>
<label
style="
width: 50px;
font-size: 14px;
font-weight: bold;
margin-right: 3px;
text-align: left;
"
>供应商:</label
>
<span style="font-size: 14px">{{
printData.tableData[num][0].supplier
}}</span>
</div>
<div
style="
overflow: hidden;
width: 350px;
float: left;
margin-left: 20px;
text-align: left;
max-height: 55px;
"
>
<label
style="
width: 50px;
font-size: 14px;
font-weight: bold;
margin-right: 3px;
text-align: left;
"
>条码:</label
>
<span style="font-size: 14px">{{
printData.tableData[num][0].barCode
}}</span>
</div>
</div>
<div style="margin-bottom: 3px; word-break: break-all">
<div
style="
overflow: hidden;
width: 350px;
float: left;
margin-left: 20px;
text-align: left;
max-height: 55px;
"
>
<label
style="
width: 50px;
font-size: 14px;
font-weight: bold;
margin-right: 3px;
text-align: left;
"
>数量:</label
>
<span style="font-size: 14px">{{
printData.tableData[num][0].number
}}</span>
</div>
<div
style="
overflow: hidden;
width: 350px;
float: left;
margin-left: 20px;
text-align: left;
max-height: 55px;
"
>
<label
style="
width: 50px;
font-size: 14px;
font-weight: bold;
margin-right: 3px;
text-align: left;
"
>期望交期:</label
>
<span style="font-size: 14px">{{
printData.tableData[num][0].expectDate
}}</span>
</div>
</div>
</div>
</div>
<!-- 表体 -->
<div :id="'div2' + num">
<!-- v-for="(printDataItem, printDataIndex) in printData.tableData[num]" :key="printDataIndex" -->
<table
border="1"
width="100%"
style="
border: solid 1px #999999;
border-collapse: collapse;
table-layout: fixed;
word-wrap: break-all;
"
>
<thead>
<!--表头 -->
<tr>
<th
style="
padding: 6px 0;
font-weight: bold;
font-size: 13px;
border: solid 1px #999999;
"
v-for="(itm, index) in theadDate"
:key="itm.thName"
:style="{ width: itm.width }"
>
{{ itm.thName }}
</th>
</tr>
</thead>
<tbody>
<!-- <tr v-for="(it, ind) in printData.tableData" :key="ind"></tr> -->
<!--表体 -->
<tr
v-for="(it, ind) in printData.tableData[num]"
:key="ind"
>
<td
style="
font-size: 12px;
color: #303133;
padding: 3px 1px;
word-wrap: break-word;
word-break: break-all;
border: solid 1px #999999;
"
v-for="(itm, index) in theadDate"
:key="itm.field"
:style="{ 'text-align': itm.textAlign }"
>
{{
itm.field !== ''
? it[itm.field]
: ind + 1
}}
</td>
</tr>
<!--合计 -->
<tr>
<td
colspan="7"
style="
font-size: 12px;
color: #303133;
padding: 6px 0;
word-wrap: break-word;
word-break: break-all;
text-align: center;
border: solid 1px #999999;
"
>
合计
</td>
<td
style="
font-size: 10px;
color: #303133;
padding: 3px 0;
word-wrap: break-word;
word-break: break-all;
text-align: right;
border: solid 1px #999999;
"
>
<span
style="color: blue; text-align: right"
tdata="AllSum"
format="#,##0.00"
tindex="8"
>######</span
>
</td>
<td
style="
font-size: 10px;
color: #303133;
padding: 3px 0;
word-wrap: break-word;
word-break: break-all;
text-align: right;
border: solid 1px #999999;
"
>
<span
style="color: blue; text-align: right"
tdata="AllSum"
format="#,##0.00"
tindex="9"
>######</span
>
</td>
<td></td>
</tr>
</tbody>
</table>
</div>
<!-- 表尾-->
<div
style="
width: 784px;
overflow-y: hidden;
text-align: left;
overflow: hidden;
"
:id="'foothtml' + num"
>
<!-- 'foothtml'+ -->
<div
style="
font-size: 14px;
color: #303133;
margin-top: 20px;
"
v-if="printData.tableData.length > 0"
>
<div
style="width 100%; font-weight: bold;text-align:center"
>
本订单执行过程中如遇到任何国家或地方政策变化或分歧、争议,依据双方签订的合作协议/合同充分友好沟通协商解决。
</div>
<div
style="
font-size: 14px;
margin-top: 30px;
margin-left: 70px;
"
>
<div
style="float: left;width:200pxmargin-left:40px;"
>
<div style="margin-bottom: 5px">
<span
style="
width: 70px;
text-align: right;
font-weight: bold;
margin-right: 3px;
margin-bottom: 5px;
"
>
打印时间:</span
>
<span>{{
new Date().toLocaleString()
}}</span>
</div>
</div>
<div
style="
float: left;
width: 120px;
margin-left: 100px;
"
>
<div style="margin-bottom: 5px">
<span
style="
width: 70px;
text-align: right;
font-weight: bold;
"
>发料人:</span
>
<span>{{
printData.tableData[num][0].approverName
}}</span>
</div>
</div>
<div
style="
float: left;
width: 120px;
margin-left: 80px;
"
>
<div style="margin-bottom: 5px">
<span
style="
width: 70px;
text-align: right;
font-weight: bold;
"
>领料人</span
>
<span>{{
printData.tableData[num][0].approverName
}}</span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import { mapState } from 'vuex';
export default {
data() {
return {};
},
props: {
//如果不要这个显示就传那个标识 如果不要保存显示 就 btnType=['save'] 'disabled, de-disabled' --存在再集合里面就是 显示
printData: {
type: Object,
default: function () {
return {
orderName: '订单',
tableData: [],
ids: [],
};
},
},
//这个区分不同单据的要素
theadDate: {
type: Array,
default: function () {
return [];
},
},
//这个区分不同单据的要素
includeTage: {
type: Array,
default: function () {
return [];
},
},
},
computed: {
...mapState({
// 取出页面标签
userInfo: (state) =>
state && state.user && state.user.userInfo
? state.user.userInfo
: {},
}),
},
mounted() {},
};
</script>

View File

@@ -0,0 +1,356 @@
.page-top {
padding: 0 24px;
border-bottom: 1px solid #EAEEF1;
.s-p-t-g1::after {
content: "";
height: 16px;
width: 1px;
background: #CBCFD3;
position: absolute;
top: 4px;
right: 0%;
transform: translateY(50%);
}
.btn-flex {
display: flex;
height: 40px;
}
.s-p-t-g1 {
padding-right: 24px;
position: relative;
.el-button:first-child {
color: #606266;
margin-right: 8px;
padding-left: 0;
}
.el-button {
display: flex;
justify-content: center;
align-items: center;
height: 40px;
line-height: 40px;
padding: 7px 8px;
border: none;
color: #606266;
font-size: 12px;
.iconfont-mg {
margin-right: 4px;
}
}
.el-button:hover {
color: #4178D5;
background-color: #fff;
}
}
.s-p-t-g2::after {
content: "";
height: 16px;
width: 1px;
background: #CBCFD3;
position: absolute;
top: 4px;
right: 0%;
transform: translateY(50%);
}
.s-p-t-g2 {
padding: 0 24px;
position: relative;
.el-button:first-child {
margin-right: 8px;
}
.el-button {
display: flex;
justify-content: center;
align-items: center;
height: 40px;
line-height: 40px;
padding: 7px 8px;
border: none;
color: #606266;
font-size: 12px;
}
.el-button:hover {
color: #4178D5;
background-color: #fff;
}
}
.s-p-t-g3::after {
content: "";
height: 16px;
width: 1px;
background: #CBCFD3;
position: absolute;
top: 4px;
right: 0%;
transform: translateY(50%);
}
.s-p-t-g3 {
padding: 0 24px;
position: relative;
.el-button:first-child {
margin-right: 8px;
}
.el-button {
display: flex;
justify-content: center;
align-items: center;
height: 40px;
line-height: 40px;
padding: 7px 8px;
border: none;
color: #606266;
font-size: 12px;
}
.el-button:hover {
color: #4178D5;
background-color: #fff;
}
}
.s-p-t-g4::after {
content: "";
height: 16px;
width: 1px;
background: #CBCFD3;
position: absolute;
top: 4px;
right: 0%;
transform: translateY(50%);
}
.s-p-t-g4 {
padding: 0 24px;
position: relative;
.el-button:first-child {
margin-right: 8px;
}
.el-button {
display: flex;
justify-content: center;
align-items: center;
height: 40px;
line-height: 40px;
padding: 7px 8px;
border: none;
color: #606266;
margin-right: 8px;
font-size: 12px;
}
.el-button:hover {
color: #4178D5;
background-color: #fff;
}
}
.s-p-t-g5 {
.el-button {
display: flex;
justify-content: center;
align-items: center;
height: 40px;
line-height: 40px;
padding: 7px 0 7px 24px;
border: none;
color: #606266;
margin-right: 24px;
font-size: 12px;
.iconfont-mg {
margin-right: 4px;
}
}
.el-button:hover {
color: #4178D5;
background-color: #fff;
}
}
.s-p-t-g7::after {
content: "";
height: 16px;
width: 1px;
background: #CBCFD3;
position: absolute;
top: 4px;
right: 0%;
transform: translateY(50%);
}
.s-p-t-g7 {
padding: 0 24px;
position: relative;
.el-button:first-child {
margin-right: 8px;
}
.el-button {
display: flex;
justify-content: center;
align-items: center;
height: 40px;
line-height: 40px;
padding: 7px 8px;
border: none;
color: #606266;
font-size: 12px;
}
.el-button:hover {
color: #4178D5;
background-color: #fff;
}
}
.s-p-t-g8::after,
.s-p-t-g12::after {
content: "";
height: 16px;
width: 1px;
background: #CBCFD3;
position: absolute;
top: 4px;
right: 0%;
transform: translateY(50%);
}
.s-p-t-g8,
.s-p-t-g12 {
padding: 0 24px;
position: relative;
.el-button:first-child {
margin-right: 8px;
}
.el-button {
display: flex;
justify-content: center;
align-items: center;
height: 40px;
line-height: 40px;
padding: 7px 8px;
border: none;
color: #606266;
font-size: 12px;
}
.el-button:hover {
color: #4178D5;
background-color: #fff;
}
}
.s-p-t-g9::after,
.s-p-t-g6::after {
content: "";
height: 16px;
width: 1px;
background: #CBCFD3;
position: absolute;
top: 4px;
right: 0%;
transform: translateY(50%);
}
.s-p-t-g9,
.s-p-t-g6 {
padding: 0 24px;
position: relative;
.el-button:first-child {
margin-right: 8px;
}
.el-button {
display: flex;
justify-content: center;
align-items: center;
height: 40px;
line-height: 40px;
padding: 7px 8px;
border: none;
color: #606266;
font-size: 12px;
}
.el-button:hover {
color: #4178D5;
background-color: #fff;
}
}
.s-p-t-g11,
.s-p-t-g10::after {
content: "";
height: 16px;
width: 1px;
background: #CBCFD3;
position: absolute;
top: 4px;
right: 0%;
transform: translateY(50%);
}
.s-p-t-g11,
.s-p-t-g10 {
padding: 0 24px;
position: relative;
.el-button:first-child {
margin-right: 8px;
}
.el-button {
display: flex;
justify-content: center;
align-items: center;
height: 40px;
line-height: 40px;
padding: 7px 8px;
border: none;
color: #606266;
font-size: 12px;
}
.el-button:hover {
color: #4178D5;
background-color: #fff;
}
}
}
::v-deep(.el-button:visited) {
background-color: #fff;
}
::v-deep(.el-button:focus) {
background-color: #fff;
}
::v-deep(.el-button:hover) {
background-color: #fff;
}

View File

@@ -0,0 +1,574 @@
<!-- 页面顶部公共按钮 -->
<template lang="">
<div class="page-top">
<el-button-group class="s-p-t-g1" v-if="btnType.includes('s-p-t-g11')">
<el-button
@click="actionhandel('edit')"
:disabled="isDisable"
:class="{ isDisable: isDisable }"
>修改</el-button
>
</el-button-group>
<el-button-group class="s-p-t-g1" v-if="!btnType.includes('s-p-t-g1')">
<el-button
@click="actionhandel('add')"
v-if="!btnType.includes('add')"
:disabled="isDisable"
:class="{ isDisable: isDisable }"
><span class="iconfont icon-tianjia iconfont-mg"></span
>新增</el-button
>
<el-button
@click="actionhandel('save')"
v-if="!btnType.includes('save')"
:disabled="isDisable"
:class="{ isDisable: isDisable }"
><span class="iconfont icon-baocun iconfont-mg"></span
>保存</el-button
>
<el-button
@click="actionhandel('copy')"
v-if="!btnType.includes('copy')"
:disabled="isDisable"
:class="{ isDisable: isDisable }"
><span class="iconfont icon-fuzhi iconfont-mg"></span
>克隆</el-button
>
</el-button-group>
<el-button-group class="s-p-t-g2" v-if="!btnType.includes('s-p-t-g2')">
<el-button
@click="actionhandel('submit')"
v-if="!btnType.includes('submit')"
:disabled="isDisable"
:class="{ isDisable: isDisable }"
>提交</el-button
>
<el-button
@click="actionhandel('revoke')"
v-if="!btnType.includes('revoke')"
:disabled="isDisable"
:class="{ isDisable: isDisable }"
>撤销</el-button
>
</el-button-group>
<el-button-group class="s-p-t-g7" v-if="!btnType.includes('s-p-t-g7')">
<el-button
@click="actionhandel('push-order')"
v-if="btnType.includes('push-order')"
:disabled="isDisable"
:class="{ isDisable: isDisable }"
>下单</el-button
>
<el-button
ref="getRefresh"
@click="actionhandel('batch-edit')"
v-if="btnType.includes('batch-edit')"
:disabled="isDisable"
:class="{ isDisable: isDisable }"
>批量修改</el-button
>
</el-button-group>
<el-button-group class="s-p-t-g6" v-if="btnType.includes('s-p-t-g6')">
<el-button
@click="actionhandel('querenorder')"
v-if="!btnType.includes('querenorder')"
>确认订单</el-button
>
<el-button
@click="actionhandel('scruku')"
v-if="!btnType.includes('scruku')"
>生产入库</el-button
>
<el-button
@click="actionhandel('songhuo')"
v-if="!btnType.includes('songhuo')"
>送货</el-button
>
</el-button-group>
<el-button-group class="s-p-t-g3" v-if="!btnType.includes('s-p-t-g3')">
<el-button
@click="actionhandel('audit')"
v-if="!btnType.includes('audit')"
:disabled="isDisable || isExmaineTop == 1"
:class="{ isDisable: isDisable || isExmaineTop == 1 }"
>审核</el-button
>
<el-button
@click="actionhandel('de-approval')"
v-if="!btnType.includes('de-approval')"
:disabled="isDisable || isExmaineTop == 1"
:class="{ isDisable: isDisable || isExmaineTop == 1 }"
>反审</el-button
>
<el-button
@click="actionhandel('setIntoNum')"
v-if="btnType.includes('setIntoNum')"
>调整入库数量</el-button
>
<el-button
@click="actionhandel('Receiving')"
v-if="btnType.includes('Receiving')"
>收货</el-button
>
<el-button
@click="actionhandel('delet')"
v-if="!btnType.includes('delete')"
:disabled="isDisable"
:class="{ isDisable: isDisable }"
>删除</el-button
>
<el-button
@click="actionhandel('gys-close')"
v-if="btnType.includes('gys-close')"
>关闭</el-button
>
<el-button
@click="actionhandel('gys-declose')"
v-if="btnType.includes('gys-declose')"
>反关闭</el-button
>
</el-button-group>
<el-button-group class="s-p-t-g8" v-if="!btnType.includes('s-p-t-g8')">
<el-button
@click="actionhandel('out-export')"
v-if="btnType.includes('out-export')"
:disabled="isDisable"
:class="{ isDisable: isDisable }"
>导出</el-button
>
</el-button-group>
<el-button-group class="s-p-t-g4" v-if="!btnType.includes('s-p-t-g4')">
<div class="btn-flex">
<el-button
@click="actionhandel('push-down')"
v-if="!btnType.includes('push-down')"
:disabled="isDisable || isExmaineTop == 1"
:class="{ isDisable: isDisable || isExmaineTop == 1 }"
>下推</el-button
>
<el-dropdown
v-if="!btnType.includes('operation')"
:trigger="click"
:hide-on-click="true"
:disabled="isDisable || isExmaineTop == 1"
@visible-change="dropDownEnter"
placement="bottom-start"
class="btn-action"
>
<span
class="el-dropdown-link"
:class="{ isDisable: isDisable || isExmaineTop == 1 }"
>
操作<i class="iconfont icon-gengduo f-12"> </i
></span>
<template #dropdown>
<el-dropdown-menu class="insert-row" style="padding: 0">
<el-dropdown-item
class="dropdownselect"
@click="actionhandel('disabled')"
>
<span
style="margin-right: 4px"
v-if="btnType.includes('disabled')"
>禁用</span
>
</el-dropdown-item>
<el-dropdown-item
class="dropdownselect"
@click="actionhandel('de-disabled')"
>
<span
style="margin-right: 4px"
v-if="btnType.includes('de-disabled')"
>反禁用</span
>
</el-dropdown-item>
<el-dropdown-item
class="dropdownselect"
@click="actionhandel('close')"
>
<span
style="margin-right: 4px"
v-if="!btnType.includes('close')"
>关闭</span
>
</el-dropdown-item>
<el-dropdown-item
class="dropdownselect"
@click="actionhandel('de-close')"
>
<span
style="margin-right: 4px"
v-if="!btnType.includes('de-close')"
>反关闭</span
>
</el-dropdown-item>
<el-dropdown-item
class="dropdownselect"
v-if="!btnType.includes('export')"
>
<el-dropdown
placement="right-start"
trigger="hover"
style="
line-height: 36px;
text-align: center;
padding-left: 14px;
"
>
<span class="el-dropdown-link f-12 zdyspan"
>导出<i
class="iconfont icon-youbian f-12"
></i
></span>
<template #dropdown>
<el-dropdown-menu>
<el-dropdown-item
index="2-4-1"
@click="
actionhandel('list-export')
"
v-if="
!btnType.includes(
'list-export'
)
"
>按列表字段导出</el-dropdown-item
>
<el-dropdown-item
index="2-4-2"
@click="
actionhandel('all-export')
"
v-if="
!btnType.includes(
'all-export'
)
"
>按全部字段导出</el-dropdown-item
>
</el-dropdown-menu>
</template>
</el-dropdown>
</el-dropdown-item>
<!-- 新增盘点导入 -->
<el-dropdown-item
class="dropdownselect"
v-if="btnType.includes('out-import')"
click.stop
>
<el-dropdown
style="
line-height: 36px;
text-align: center;
padding-left: 14px;
"
>
<!-- https://login.ops.f2b211.com/api/v1/TrayCount/Import -->
<!--https://proxy.ops.f2b211.com/api/ -->
<!-- https://dev.proxy.ops.f2b211.com/api/ -->
<el-upload
:action="httpUrl"
:on-success="handleSuccess"
:on-error="handleError"
accept=".xlsx,.xls"
:on-exceed="handleExceed"
ref="upload"
:limit="1"
:headers="{
Authorization: token,
}"
:show-file-list="false"
>
<span
class="el-dropdown-link f-12 zdyspan"
>导入</span
>
</el-upload>
</el-dropdown>
</el-dropdown-item>
<!-- 新增盘点下载导入模板 -->
<!-- https://opstestfile.f2b211.com/temp_pandian.xlsx -->
<el-dropdown-item
class="dropdownselect"
click.stop
v-if="
btnType.includes('download-import-template')
"
>
<el-dropdown
style="
line-height: 36px;
text-align: center;
padding-left: 14px;
"
>
<!-- https://opsfile.f2b211.com/temp_pandian.xlsx -->
<!-- https://opstestfile.f2b211.com/temp_pandian.xlsx -->
<a
class="el-dropdown-link f-12 zdyspan"
href="https://opsfile.f2b211.com/temp_pandian.xlsx"
download="p.xlsx"
style="color: #606266"
>
下载导入模板
</a>
</el-dropdown>
</el-dropdown-item>
<el-dropdown-item class="dropdownselect">
<span
style="margin-right: 4px"
@click="actionhandel('print-aterial-list')"
v-if="
!btnType.includes('print-aterial-list')
"
>打印用料清单</span
>
</el-dropdown-item>
<el-dropdown-item
class="dropdownselect"
@click="actionhandel('finish')"
>
<span
style="margin-right: 4px"
v-if="!btnType.includes('finish')"
>完工</span
>
</el-dropdown-item>
<el-dropdown-item
class="dropdownselect"
@click="actionhandel('close-case')"
>
<span
style="margin-right: 4px"
v-if="!btnType.includes('close-case')"
>结案</span
>
</el-dropdown-item>
<el-dropdown-item
class="dropdownselect"
@click="actionhandel('de-excute-start')"
>
<span
style="margin-right: 4px"
v-if="!btnType.includes('de-excute-start')"
>反执行至开工</span
>
</el-dropdown-item>
<el-dropdown-item
class="dropdownselect"
@click="actionhandel('de-excute-finish')"
>
<span
style="margin-right: 4px"
v-if="!btnType.includes('de-excute-finish')"
>反执行至完工</span
>
</el-dropdown-item>
<el-dropdown-item
class="dropdownselect"
@click="actionhandel('print-brower')"
>
<span
style="margin-right: 4px"
v-if="!btnType.includes('print-brower')"
>打印/预览</span
>
</el-dropdown-item>
<!-- 7.5 jx BOM 正查 反查 -->
<el-dropdown-item
class="dropdownselect"
@click="actionhandel('just-check')"
>
<span
style="margin-right: 4px"
v-if="btnType.includes('just-check')"
>BOM正查</span
>
</el-dropdown-item>
<el-dropdown-item
class="dropdownselect"
@click="actionhandel('back-check')"
>
<span
style="margin-right: 4px"
v-if="btnType.includes('back-check')"
>BOM反查</span
>
</el-dropdown-item>
</el-dropdown-menu>
</template>
</el-dropdown>
<el-dropdown
v-if="!btnType.includes('query')"
trigger="click"
:hide-on-click="true"
@visible-change="dropDownEnter"
placement="bottom-start"
:disabled="isDisable"
class="btn-action"
>
<span
class="el-dropdown-link"
:class="{ isDisable: isDisable }"
>
查询<i class="iconfont icon-gengduo f-12"> </i
></span>
<template #dropdown>
<el-dropdown-menu>
<el-dropdown-item
class="dropdownselect"
@click="actionhandel('up-check')"
>
<span
style="margin-right: 4px"
v-if="!btnType.includes('up-check')"
>上查</span
>
</el-dropdown-item>
<el-dropdown-item
class="dropdownselect"
@click="actionhandel('down-check')"
>
<span
style="margin-right: 4px"
v-if="!btnType.includes('down-check')"
>下查</span
>
</el-dropdown-item>
<el-dropdown-item
class="dropdownselect"
@click="actionhandel('exDetails')"
>
<span
style="margin-right: 4px"
v-if="!btnType.includes('exDetails')"
>查看流程图</span
>
</el-dropdown-item>
</el-dropdown-menu>
</template>
</el-dropdown>
</div>
</el-button-group>
<el-button-group class="s-p-t-g12" v-if="btnType.includes('s-p-t-g12')">
<el-button
@click="actionhandel('adjustInventory')"
v-if="btnType.includes('adjustInventory')"
>库存调整</el-button
>
<el-button
@click="actionhandel('addMaterial')"
v-if="btnType.includes('addMaterial')"
>添加物料</el-button
>
<el-button
@click="actionhandel('dayin')"
v-if="!btnType.includes('dayin')"
>打印</el-button
>
<el-button
@click="actionhandel('daochu')"
v-if="!btnType.includes('daochu')"
>导出</el-button
>
</el-button-group>
<el-button-group class="s-p-t-g5" v-if="!btnType.includes('s-p-t-g5')">
<el-button
ref="getRefresh"
@click="actionhandel('refresh')"
v-if="!btnType.includes('refresh')"
:disabled="isDisable"
:class="{ isDisable: isDisable }"
><span class="iconfont icon-shuaxin iconfont-mg"></span
>刷新</el-button
>
</el-button-group>
<el-button-group class="s-p-t-g9" v-if="!btnType.includes('s-p-t-g9')">
<el-button
ref="getRefresh"
@click="actionhandel('global-refresh')"
v-if="btnType.includes('global-refresh')"
:disabled="isDisable"
:class="{ isDisable: isDisable }"
><span class="iconfont icon-shuaxin iconfont-mg"></span
>全局刷新</el-button
>
</el-button-group>
<el-button-group
class="s-p-t-g10"
v-if="!btnType.includes('s-p-t-g10')"
>
<el-button
ref="getRefresh"
@click="actionhandel('tick-refresh')"
v-if="btnType.includes('tick-refresh')"
:disabled="isDisable"
:class="{ isDisable: isDisable }"
><span class="iconfont icon-shuaxin iconfont-mg"></span
>勾选刷新</el-button
>
</el-button-group>
</div>
</template>
<script>
export default {
name: 'toolBtn',
};
</script>
<script setup>
import { toRefs, defineComponent, watch, ref } from 'vue';
import { ElMessage } from 'element-plus';
const props = defineProps({
btnType: {
type: Array,
default: function () {
return [];
},
},
isDisable: {
type: Boolean,
default: function () {
return false;
},
},
isExmaineTop: {
type: Number,
},
});
const companyId = ref(localStorage.getItem('companyId') || 1);
const token = ref(localStorage.getItem('userToken'));
const httpUrl = ref(
`https://proxy.ops.f2b211.com/api/v1/TrayCount/Import?c=${companyId.value}`
);
const emits = defineEmits(['actionhandel']);
const { isDisable, isExmaineTop, btnType } = toRefs(props);
const upload = ref(null);
const actionhandel = (type) => {
emits('actionhandel', type); // type 代表操作类型 type === add 或者 copy 或者... 代表操作状态
};
const handleSuccess = (res) => {
upload.value.clearFiles();
if (res.status === 200) {
ElMessage.success('数据导入成功!');
} else {
ElMessage.error(res.message);
}
};
const handleError = (res) => {
upload.value.clearFiles();
ElMessage.error(res.message);
};
</script>
<style lang="scss" scoped>
@import './toolBtn.scss';
.isDisable {
color: var(--el-text-color-placeholder) !important;
cursor: not-allowed !important;
}
</style>

95
src/main.js Normal file
View File

@@ -0,0 +1,95 @@
import { createApp } from 'vue';
import App from './App.vue';
import router from './router';
import store from './store';
import Request from '@/utils/request';
import '@/router/permission.js';
import '@/assets/font/iconfont.css';
import { ElMessage } from 'element-plus';
import { defineRule, configure } from 'vee-validate';
import all from '@vee-validate/rules';
import allValid from '@/utils/validate';
import 'element-plus/dist/index.css';
import '@/assets/style/global.scss';
import ElementPlus from 'element-plus';
import htmlToPdf from '@/utils/htmlToPdf';
import zhCn from 'element-plus/es/locale/lang/zh-cn';
import {
toolBtn,
InputMini,
operaRecorde,
DetailsOperation,
PrintModel,
prtMoled,
} from '@/components/index';
import 'xe-utils';
import VXETable from 'vxe-table';
import 'vxe-table/lib/style.css';
import 'font-awesome/css/font-awesome.css';
// import
import Clipboard from 'clipboard';
configure({
validateOnBlur: true, // controls if `blur` events should trigger validation with `handleChange` handler
validateOnChange: true, // controls if `change` events should trigger validation with `handleChange` handler
validateOnInput: false, // controls if `input` events should trigger validation with `handleChange` handler
validateOnModelUpdate: true, // controls if `update:modelValue` events should trigger validation with `handleChange` handler
});
Object.keys(all).forEach((rule) => {
defineRule(rule, all[rule]);
});
Object.keys(allValid).forEach((rule) => {
defineRule(rule, allValid[rule]);
});
const app = createApp(App);
// 全局注册组件
app.component('toolBtn', toolBtn);
app.component('InputMini', InputMini);
app.component('operaRecorde', operaRecorde);
app.component('DetailsOperation', DetailsOperation);
app.component('PrintModel', PrintModel);
app.component('prtMoled', prtMoled);
app.use(store);
app.use(router);
app.use(htmlToPdf);
app.use(VXETable);
// 化汉
app.use(ElementPlus, {
locale: zhCn,
});
app.config.globalProperties.$clipboard = Clipboard;
app.config.globalProperties.$http = new Request();
app.config.globalProperties.$message = ElMessage;
app.config.globalProperties.$close = function () {
store.dispatch('topNavTag/close');
};
app.mount('#app');
// app.on('ready',function() {
// mainwindow = new BrowserWindow({
// width: 400,
// height: 300,
// webPreferences: {
// nodeIntegration : true,
// contextIsolation: false
// }
// })
app.config.globalProperties.$topNavTagRename = function (title) {
store.dispatch('topNavTag/rename', title);
};
app.config.globalProperties.$commonData = {};
// 注册一个全局自定义指令 `v-allow` 配合路由meta.permission信息控制节点显示权限
app.directive('allow', {
mounted(el, binding) {
const permission = binding.instance.$route.meta.permission;
if (!permission.includes(binding.value)) {
el.parentNode.removeChild(el);
}
},
});

54
src/router/index.js Normal file
View File

@@ -0,0 +1,54 @@
import { createRouter, createWebHistory } from 'vue-router';
import Layout from '@/components/layout/index.vue';
export const staticRoutes = [];
const systemRoutes = [
{
path: '/',
name: 'Main',
component: Layout,
meta: {
title: '首页',
icon: 'icon-cangku',
},
hidden: true,
redirect: '/index',
children: [
{
path: '/index',
name: 'Index',
meta: {
title: '首页',
icon: 'el-icon-s-home',
},
component: () => import('../views/index/index.vue'),
},
],
},
{
path: '/login',
name: 'Login',
hidden: true,
component: () => import('../views/login/index.vue'),
meta: {
title: '登录页',
},
},
{
path: '/404',
name: '404',
hidden: true,
component: () => import('../views/public/404.vue'),
meta: {
title: '页面未找到',
},
},
];
const router = createRouter({
history: createWebHistory(import.meta.env.BASE_URL),
routes: systemRoutes,
});
export default router;

102
src/router/permission.js Normal file
View File

@@ -0,0 +1,102 @@
import router from '@/router';
import store from '@/store';
// import { title as settingsTitle } from '@/settings'
import { checkSignedInStatus, setNotLoggedIn } from '@/utils/auth';
let loadedDynamicRoutes = false; // 是否已加载动态路由
const whiteList = ['/login'];
router.beforeEach(async (to, from, next) => {
// 网页title跟随路由title
document.title = 'OPS' + '-' + to.meta.title;
if (checkSignedInStatus()) {
// 身份验证通过
if (to.path !== '/login') {
// 不在登录页面,正常进入相应页面
if (loadedDynamicRoutes) {
store.dispatch('topNavTag/addNavTag', to); // 顶部页面标签处理
console.log(
to.path,
'==================to,path================'
);
next();
} else {
try {
// 获取用户信息
await store.dispatch('user/getUserInfo');
// 获取用户权限列表
const authList = store.getters['user/getUserAuthList'];
// 获取用户有权限操作权限的路由
const accessRoutes = await store.dispatch(
'routes/generateRoutes',
authList
);
// 动态添加路由
handleDynamicRoutes(accessRoutes).forEach((route) => {
router.addRoute(route);
});
//404最后添加不然会导致路由混乱
router.addRoute({
path: '/:pathMatch(.*)*',
redirect: '/404',
});
// 设为已加载动态路由
loadedDynamicRoutes = true;
// 确保动态添加的路由已经被完全加载上去并替换浏览器路由使浏览器没有浏览历史可回退
next({
...to,
replace: true,
});
} catch (error) {
// 设为非登录状态
setNotLoggedIn();
next('/login');
}
}
} else {
// 在登录页面
next({
path: '/',
});
}
} else {
// 身份验证不过
// 设为非登录状态
setNotLoggedIn();
if (whiteList.indexOf(to.path) !== -1) {
// 处于不用登录页面
next();
} else {
next('/login');
}
}
});
// 处理动态路由
function handleDynamicRoutes(routes) {
const result = [];
routes.forEach((route) => {
if (route.children) {
route.children = recursionReduce(route.children);
}
result.push(route);
});
return result;
}
// 递归还原
function recursionReduce(data) {
let result = [];
data.forEach((it) => {
if (it.children) {
result = result.concat(recursionReduce(it.children));
delete it.children;
}
result.push(it);
});
return result;
}

120
src/settings.js Normal file
View File

@@ -0,0 +1,120 @@
module.exports = {
"workbench.colorTheme": "One Monokai",
"editor.fontSize": 14,
"workbench.editor.enablePreview": true, //预览模式关闭
"editor.formatOnSave": true, // #每次保存的时候自动格式化
// 自动修复
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true,
},
"eslint.enable": true, //是否开启vscode的eslint
// 配置 ESLint 检查的文件类型
"eslint.validate": [
"javascript",
"vue",
"html"
],
"eslint.options": { //指定vscode的eslint所处理的文件的后缀
"extensions": [
".js",
".vue",
".ts",
".tsx"
]
},
"files.associations": {
"*.wpy": "vue",
"*.wxml": "wxml",
"*.cjson": "jsonc",
"*.wxss": "css",
"*.wxs": "javascript",
"*.html": "html"
},
"emmet.includeLanguages": {
"wxml": "html"
},
"minapp-vscode.disableAutoConfig": true,
// vscode默认启用了根据文件类型自动设置tabsize的选项
"editor.detectIndentation": false,
// 重新设定tabsize
"editor.tabSize": 2,
// #去掉代码结尾的分号
"prettier.semi": false,
// #使用单引号替代双引号
"prettier.singleQuote": true,
// #让函数(名)和后面的括号之间加个空格
"javascript.format.insertSpaceBeforeFunctionParenthesis": true,
// #让vue中的js按编辑器自带的ts格式进行格式化
"vetur.format.defaultFormatter.js": "vscode-typescript",
"git.enableSmartCommit": true,
"editor.quickSuggestions": {
"strings": true
},
//一定要在vutur.defaultFormatterOptions参数中设置单独修改prettier扩展的设置是无法解决这个问题的因为perttier默认忽略了vue文件事实上从忽略列表移除vue也不能解决这个问题
"vetur.format.defaultFormatterOptions": {
"prettier": {
"semi": false, // 格式化不加分号
"singleQuote": true, // 格式化以单引号为主
},
"js-beautify-html": {
// force-aligned | force-expand-multiline
"wrap_attributes": "force-aligned"
},
"prettyhtml": {
"printWidth": 100,
"singleQuote": false,
"wrapAttributes": false,
"sortAttributes": true
},
},
// 插件KoroFileHeader
// 文件头部注释-快捷键crtl+alt+iwindow,ctrl+cmd+t (mac)
"fileheader.customMade": {
"Descripttion": "",
//"version": "",
"Author": "voanit",
"Date": "Do not edit",
"LastEditors": "voanit",
"LastEditTime": "Do not Edit"
},
//函数注释-快捷键ctrl+alt+t (window), ctrl+alt+t(mac)
"fileheader.cursorMode": {
"name": "",
// "test": "test font",
// "msg": "",
"param": "",
"return": ""
},
//安装live Server插件
"liveServer.settings.donotVerifyTags": true,
"liveServer.settings.donotShowInfoMsg": true,
"liveServer.settings.NoBrowser": true,
"liveServer.settings.CustomBrowser": "chrome", //设置默认打开的浏览器
"liveServer.settings.host": "127.0.0.1",
"liveServer.settings.port": 5000, //设置本地服务的端口号
"liveServer.settings.root": "/distserver",
"[vue]": {
"editor.defaultFormatter": "octref.vetur"
},
"javascript.updateImportsOnFileMove.enabled": "never",
"javascript.implicitProjectConfig.experimentalDecorators": true,
"workbench.editor.showTabs": true,
"terminal.integrated.rendererType": "dom",
"sync.gist": "396472a5bb443e3680d5a0e2ffccefe8",
"window.zoomLevel": 0,
"diffEditor.ignoreTrimWhitespace": false,
"launch": {},
"[jsonc]": {
"editor.defaultFormatter": "remimarsal.prettier-now"
},
"[typescript]": {
"editor.defaultFormatter": "remimarsal.prettier-now"
},
"json.schemas": [{
"fileMatch": [
"/myfile"
],
"url": "schemaURL"
}]
}

22
src/store/index.js Normal file
View File

@@ -0,0 +1,22 @@
import { createStore } from 'vuex';
import leftAside from './modules/leftAside';
import topNavTag from './modules/topNavTag';
import routes from './modules/routes';
import user from './modules/user';
import org from './modules/org';
import storeData from './modules/storeData';
import examine from './modules/examine';
export default createStore({
state: {},
mutations: {},
actions: {},
modules: {
leftAside,
topNavTag,
routes,
user,
org,
storeData,
examine,
},
});

Some files were not shown because too many files have changed in this diff Show More