first commit
21
衣莎项目/源码/gc_nwjs/.gitignore
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
.DS_Store
|
||||
node_modules
|
||||
/dist
|
||||
|
||||
# local env files
|
||||
.env.local
|
||||
.env.*.local
|
||||
|
||||
# Log files
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
|
||||
# Editor directories and files
|
||||
.idea
|
||||
.vscode
|
||||
*.suo
|
||||
*.ntvs*
|
||||
*.njsproj
|
||||
*.sln
|
||||
*.sw?
|
||||
1
衣莎项目/源码/gc_nwjs/.pydio
Normal file
@@ -0,0 +1 @@
|
||||
896ba979-b208-46d3-85b6-5c2b48e764b1
|
||||
10
衣莎项目/源码/gc_nwjs/README.md
Normal file
@@ -0,0 +1,10 @@
|
||||
条码:034000567
|
||||
|
||||
返工效
|
||||
|
||||
营业额度
|
||||
|
||||
|
||||
|
||||
"main": "https://ceshi.yishaxiyi.com/factoryUpadate/index.html",
|
||||
"node-remote": "https://ceshi.yishaxiyi.com/factoryUpadate/index.html",
|
||||
5
衣莎项目/源码/gc_nwjs/babel.config.js
Normal file
@@ -0,0 +1,5 @@
|
||||
module.exports = {
|
||||
presets: [
|
||||
'@vue/app'
|
||||
]
|
||||
}
|
||||
14
衣莎项目/源码/gc_nwjs/builder.bat
Normal file
@@ -0,0 +1,14 @@
|
||||
@echo off
|
||||
set root_path=D:\nwjs-sdk-v0.33.4-win-x64\
|
||||
set work_path=D:\nwjs-sdk-v0.33.4-win-x64\app\
|
||||
D:
|
||||
cd %work_path%
|
||||
"D:\Program Files\WinRAR\WinRAR.exe" a -r -ep1 %root_path%app.zip %work_path%
|
||||
echo ----------压缩包app.zip生成成功
|
||||
echo ----------开始创建app.exe
|
||||
cd %root_path%
|
||||
copy /b nw.exe+app.zip app.exe
|
||||
echo -----------创建app.exe成功
|
||||
del app.zip
|
||||
echo ----------删除app.zip成功
|
||||
pause
|
||||
1
衣莎项目/源码/gc_nwjs/note.txt
Normal file
@@ -0,0 +1 @@
|
||||
https://ceshi.yishaxiyi.com/factoryUpadate/index.html
|
||||
12452
衣莎项目/源码/gc_nwjs/package-lock.json
generated
Normal file
86
衣莎项目/源码/gc_nwjs/package.json
Normal file
@@ -0,0 +1,86 @@
|
||||
{
|
||||
"main": "http://localhost:8081/",
|
||||
"node-remote": "http://localhost:8081/",
|
||||
"name": "nwjs",
|
||||
"version": "0.1.0",
|
||||
"private": true,
|
||||
"chromium-args": "--mixed-context",
|
||||
"scripts": {
|
||||
"dev": "vue-cli-service serve",
|
||||
"build": "vue-cli-service build",
|
||||
"lint": "vue-cli-service lint"
|
||||
},
|
||||
"dependencies": {
|
||||
"@bmy/axios": "^0.19.3",
|
||||
"core-js": "^2.6.5",
|
||||
"element-ui": "^2.12.0",
|
||||
"readline": "^1.3.0",
|
||||
"vue": "^2.6.10",
|
||||
"vue-router": "^3.0.3",
|
||||
"vuex": "^3.0.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@vue/cli-plugin-babel": "^3.11.0",
|
||||
"@vue/cli-plugin-eslint": "^3.11.0",
|
||||
"@vue/cli-service": "^3.11.0",
|
||||
"babel-eslint": "^10.0.1",
|
||||
"eslint": "^5.16.0",
|
||||
"eslint-plugin-vue": "^5.0.0",
|
||||
"less": "^3.10.3",
|
||||
"less-loader": "^5.0.0",
|
||||
"vue-particles": "^1.0.9",
|
||||
"vue-template-compiler": "^2.6.10"
|
||||
},
|
||||
"eslintConfig": {
|
||||
"root": true,
|
||||
"env": {
|
||||
"node": true
|
||||
},
|
||||
"extends": [
|
||||
"plugin:vue/essential",
|
||||
"eslint:recommended"
|
||||
],
|
||||
"rules": {
|
||||
"no-console": "off"
|
||||
},
|
||||
"parserOptions": {
|
||||
"parser": "babel-eslint"
|
||||
}
|
||||
},
|
||||
"postcss": {
|
||||
"plugins": {
|
||||
"autoprefixer": {}
|
||||
}
|
||||
},
|
||||
"window": {
|
||||
"title": "NetEaseMusic",
|
||||
"toolbar": true,
|
||||
"frame": true,
|
||||
"width": 1000,
|
||||
"height": 800
|
||||
},
|
||||
"platformOverrides": {
|
||||
"windows": {
|
||||
"window": {
|
||||
"title": "伊莎洗衣工厂端 for Windows",
|
||||
"toolbar": false
|
||||
}
|
||||
},
|
||||
"linux": {
|
||||
"window": {
|
||||
"title": "伊莎洗衣工厂端 for Linux",
|
||||
"toolbar": false
|
||||
}
|
||||
},
|
||||
"osx": {
|
||||
"window": {
|
||||
"title": "伊莎洗衣工厂端 for OsX",
|
||||
"toolbar": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"browserslist": [
|
||||
"> 1%",
|
||||
"last 2 versions"
|
||||
]
|
||||
}
|
||||
1
衣莎项目/源码/gc_nwjs/public/.pydio
Normal file
@@ -0,0 +1 @@
|
||||
43debd52-a7b6-4996-a291-b377201d7c52
|
||||
BIN
衣莎项目/源码/gc_nwjs/public/favicon.ico
Normal file
|
After Width: | Height: | Size: 4.2 KiB |
26
衣莎项目/源码/gc_nwjs/public/index.html
Normal file
@@ -0,0 +1,26 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||
<meta HTTP-EQUIV="pragma" CONTENT="no-cache">
|
||||
<meta HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate">
|
||||
<meta HTTP-EQUIV="expires" CONTENT="0">
|
||||
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
|
||||
<title>伊莎洗衣工厂端</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<noscript>
|
||||
<strong>We're sorry but nwjs doesn't work properly without JavaScript enabled. Please enable it to
|
||||
continue.</strong>
|
||||
</noscript>
|
||||
<div id="app"></div>
|
||||
<!-- built files will be auto injected -->
|
||||
<!-- <script src="http://static.geekhelp.cn/chunk-0fc93251.545b08f2.js"></script> -->
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
1
衣莎项目/源码/gc_nwjs/src/.pydio
Normal file
@@ -0,0 +1 @@
|
||||
62724cb0-3c83-4705-acbe-5d51e3da5454
|
||||
30
衣莎项目/源码/gc_nwjs/src/App.vue
Normal file
@@ -0,0 +1,30 @@
|
||||
<template>
|
||||
<div id="app">
|
||||
<router-view />
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
// import utils from '@/utils/utils'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
|
||||
}
|
||||
},
|
||||
created() {
|
||||
// 监听扫码枪事件
|
||||
// utils.sweepCode((code) => {
|
||||
// console.log(code);
|
||||
// })
|
||||
},
|
||||
methods: {
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang='less'>
|
||||
@import url("./assets/less/mian.less");
|
||||
#app {
|
||||
height: 100%;
|
||||
}
|
||||
</style>
|
||||
1
衣莎项目/源码/gc_nwjs/src/assets/.pydio
Normal file
@@ -0,0 +1 @@
|
||||
1441cb92-7f04-4a74-838f-2172ae0b338e
|
||||
1
衣莎项目/源码/gc_nwjs/src/assets/img/.pydio
Normal file
@@ -0,0 +1 @@
|
||||
39b57e87-6f9e-47bd-8f58-8566d2c63801
|
||||
BIN
衣莎项目/源码/gc_nwjs/src/assets/img/Enter-factory.png
Normal file
|
After Width: | Height: | Size: 6.3 KiB |
BIN
衣莎项目/源码/gc_nwjs/src/assets/img/Factory.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
衣莎项目/源码/gc_nwjs/src/assets/img/Handle.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
1
衣莎项目/源码/gc_nwjs/src/assets/img/icon/.pydio
Normal file
@@ -0,0 +1 @@
|
||||
d66d282d-4ebf-4556-99d7-a74146d2f098
|
||||
BIN
衣莎项目/源码/gc_nwjs/src/assets/img/icon/1.png
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
BIN
衣莎项目/源码/gc_nwjs/src/assets/img/icon/2.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
衣莎项目/源码/gc_nwjs/src/assets/img/icon/3.png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
衣莎项目/源码/gc_nwjs/src/assets/img/icon/4.png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
衣莎项目/源码/gc_nwjs/src/assets/img/icon/5.png
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
BIN
衣莎项目/源码/gc_nwjs/src/assets/img/icon/6.png
Normal file
|
After Width: | Height: | Size: 4.6 KiB |
BIN
衣莎项目/源码/gc_nwjs/src/assets/img/icon/close.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
衣莎项目/源码/gc_nwjs/src/assets/img/logo.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
1
衣莎项目/源码/gc_nwjs/src/assets/js/.pydio
Normal file
@@ -0,0 +1 @@
|
||||
4220b0b1-29c3-4f1a-a9b6-39d125f80835
|
||||
151
衣莎项目/源码/gc_nwjs/src/assets/js/LodopFuncs.js
Normal file
@@ -0,0 +1,151 @@
|
||||
var CreatedOKLodop7766 = null, CLodopIsLocal;
|
||||
|
||||
//====判断是否需要 Web打印服务CLodop:===
|
||||
//===(不支持插件的浏览器版本需要用它)===
|
||||
function needCLodop() {
|
||||
try {
|
||||
var ua = navigator.userAgent;
|
||||
if (ua.match(/Windows\sPhone/i))
|
||||
return true;
|
||||
if (ua.match(/iPhone|iPod|iPad/i))
|
||||
return true;
|
||||
if (ua.match(/Android/i))
|
||||
return true;
|
||||
if (ua.match(/Edge\D?\d+/i))
|
||||
return true;
|
||||
|
||||
var verTrident = ua.match(/Trident\D?\d+/i);
|
||||
var verIE = ua.match(/MSIE\D?\d+/i);
|
||||
var verOPR = ua.match(/OPR\D?\d+/i);
|
||||
var verFF = ua.match(/Firefox\D?\d+/i);
|
||||
var x64 = ua.match(/x64/i);
|
||||
if ((!verTrident) && (!verIE) && (x64))
|
||||
return true;
|
||||
else if (verFF) {
|
||||
verFF = verFF[0].match(/\d+/);
|
||||
if ((verFF[0] >= 41) || (x64))
|
||||
return true;
|
||||
} else if (verOPR) {
|
||||
verOPR = verOPR[0].match(/\d+/);
|
||||
if (verOPR[0] >= 32)
|
||||
return true;
|
||||
} else if ((!verTrident) && (!verIE)) {
|
||||
var verChrome = ua.match(/Chrome\D?\d+/i);
|
||||
if (verChrome) {
|
||||
verChrome = verChrome[0].match(/\d+/);
|
||||
if (verChrome[0] >= 41)
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
} catch (err) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
//====页面引用CLodop云打印必须的JS文件,用双端口(8000和18000)避免其中某个被占用:====
|
||||
if (needCLodop()) {
|
||||
var src1 = "http://localhost:8000/CLodopfuncs.js?priority=1";
|
||||
var src2 = "http://localhost:18000/CLodopfuncs.js?priority=0";
|
||||
|
||||
var head = document.head || document.getElementsByTagName("head")[0] || document.documentElement;
|
||||
var oscript = document.createElement("script");
|
||||
oscript.src = src1;
|
||||
head.insertBefore(oscript, head.firstChild);
|
||||
oscript = document.createElement("script");
|
||||
oscript.src = src2;
|
||||
head.insertBefore(oscript, head.firstChild);
|
||||
CLodopIsLocal = !!((src1 + src2).match(/\/\/localho|\/\/127.0.0./i));
|
||||
}
|
||||
|
||||
//====获取LODOP对象的主过程:====
|
||||
function getLodop(oOBJECT, oEMBED) {
|
||||
var strHtmInstall = "<br><font color='#FF00FF'>打印控件未安装!点击这里<a href='install_lodop32.zip' target='_self'>执行安装</a>,安装后请刷新页面或重新进入。</font>";
|
||||
var strHtmUpdate = "<br><font color='#FF00FF'>打印控件需要升级!点击这里<a href='install_lodop32.zip' target='_self'>执行升级</a>,升级后请重新进入。</font>";
|
||||
var strHtm64_Install = "<br><font color='#FF00FF'>打印控件未安装!点击这里<a href='install_lodop64.zip' target='_self'>执行安装</a>,安装后请刷新页面或重新进入。</font>";
|
||||
var strHtm64_Update = "<br><font color='#FF00FF'>打印控件需要升级!点击这里<a href='install_lodop64.zip' target='_self'>执行升级</a>,升级后请重新进入。</font>";
|
||||
var strHtmFireFox = "<br><br><font color='#FF00FF'>(注意:如曾安装过Lodop旧版附件npActiveXPLugin,请在【工具】->【附加组件】->【扩展】中先卸它)</font>";
|
||||
var strHtmChrome = "<br><br><font color='#FF00FF'>(如果此前正常,仅因浏览器升级或重安装而出问题,需重新执行以上安装)</font>";
|
||||
var strCLodopInstall_1 = "<br><font color='#FF00FF'>Web打印服务CLodop未安装启动,点击这里<a href='CLodop_Setup_for_Win32NT.zip' target='_self'>下载执行安装</a>";
|
||||
var strCLodopInstall_2 = "<br>(若此前已安装过,可<a href='CLodop.protocol:setup' target='_self'>点这里直接再次启动</a>)";
|
||||
var strCLodopInstall_3 = ",成功后请刷新本页面。</font>";
|
||||
var strCLodopUpdate = "<br><font color='#FF00FF'>Web打印服务CLodop需升级!点击这里<a href='CLodop_Setup_for_Win32NT.zip' target='_self'>执行升级</a>,升级后请刷新页面。</font>";
|
||||
var LODOP;
|
||||
try {
|
||||
var ua = navigator.userAgent;
|
||||
var isIE = !!(ua.match(/MSIE/i)) || !!(ua.match(/Trident/i));
|
||||
if (needCLodop()) {
|
||||
try {
|
||||
/* eslint-disable */
|
||||
LODOP = getCLodop();
|
||||
/* eslint-disable */
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
}
|
||||
if (!LODOP && document.readyState !== "complete") {
|
||||
alert("网页还没下载完毕,请稍等一下再操作.");
|
||||
return;
|
||||
}
|
||||
if (!LODOP) {
|
||||
document.body.innerHTML = strCLodopInstall_1 + (CLodopIsLocal ? strCLodopInstall_2 : "") + strCLodopInstall_3 + document.body.innerHTML;
|
||||
return;
|
||||
} else {
|
||||
if (CLODOP.CVERSION < "3.0.6.0") {
|
||||
document.body.innerHTML = strCLodopUpdate + document.body.innerHTML;
|
||||
}
|
||||
if (oEMBED && oEMBED.parentNode)
|
||||
oEMBED.parentNode.removeChild(oEMBED);
|
||||
if (oOBJECT && oOBJECT.parentNode)
|
||||
oOBJECT.parentNode.removeChild(oOBJECT);
|
||||
}
|
||||
} else {
|
||||
var is64IE = isIE && !!(ua.match(/x64/i));
|
||||
//=====如果页面有Lodop就直接使用,没有则新建:==========
|
||||
if (oOBJECT || oEMBED) {
|
||||
if (isIE)
|
||||
LODOP = oOBJECT;
|
||||
else
|
||||
LODOP = oEMBED;
|
||||
} else if (!CreatedOKLodop7766) {
|
||||
LODOP = document.createElement("object");
|
||||
LODOP.setAttribute("width", 0);
|
||||
LODOP.setAttribute("height", 0);
|
||||
LODOP.setAttribute("style", "position:absolute;left:0px;top:-100px;width:0px;height:0px;");
|
||||
if (isIE)
|
||||
LODOP.setAttribute("classid", "clsid:2105C259-1E0C-4534-8141-A753534CB4CA");
|
||||
else
|
||||
LODOP.setAttribute("type", "application/x-print-lodop");
|
||||
document.documentElement.appendChild(LODOP);
|
||||
CreatedOKLodop7766 = LODOP;
|
||||
} else
|
||||
LODOP = CreatedOKLodop7766;
|
||||
//=====Lodop插件未安装时提示下载地址:==========
|
||||
if ((!LODOP) || (!LODOP.VERSION)) {
|
||||
if (ua.indexOf('Chrome') >= 0)
|
||||
document.body.innerHTML = strHtmChrome + document.body.innerHTML;
|
||||
if (ua.indexOf('Firefox') >= 0)
|
||||
document.body.innerHTML = strHtmFireFox + document.body.innerHTML;
|
||||
document.body.innerHTML = (is64IE ? strHtm64_Install : strHtmInstall) + document.body.innerHTML;
|
||||
return LODOP;
|
||||
}
|
||||
}
|
||||
if (LODOP.VERSION < "6.2.2.4") {
|
||||
if (!needCLodop())
|
||||
document.body.innerHTML = (is64IE ? strHtm64_Update : strHtmUpdate) + document.body.innerHTML;
|
||||
return LODOP;
|
||||
}
|
||||
//===如下空白位置适合调用统一功能(如注册语句、语言选择等):==
|
||||
|
||||
|
||||
LODOP.SET_LICENSES("", "13528A153BAEE3A0254B9507DCDE2839", "", "");
|
||||
//=======================================================
|
||||
return LODOP;
|
||||
} catch (err) {
|
||||
alert("getLodop出错:" + err);
|
||||
}
|
||||
}
|
||||
|
||||
export default {
|
||||
needCLodop,
|
||||
getLodop
|
||||
}
|
||||
1
衣莎项目/源码/gc_nwjs/src/assets/less/.pydio
Normal file
@@ -0,0 +1 @@
|
||||
8e34f6f4-10a7-4535-8918-c502d8d24e45
|
||||
1
衣莎项目/源码/gc_nwjs/src/assets/less/mian.less
Normal file
@@ -0,0 +1 @@
|
||||
@import './public/_mian.less';
|
||||
1
衣莎项目/源码/gc_nwjs/src/assets/less/public/.pydio
Normal file
@@ -0,0 +1 @@
|
||||
3321e8ce-1ea1-4cc3-be89-c313bb85455e
|
||||
3
衣莎项目/源码/gc_nwjs/src/assets/less/public/_mian.less
Normal file
@@ -0,0 +1,3 @@
|
||||
@import './common.less';
|
||||
@import './color.less';
|
||||
@import './margin.less';
|
||||
44
衣莎项目/源码/gc_nwjs/src/assets/less/public/color.less
Normal file
@@ -0,0 +1,44 @@
|
||||
@Brand100:#ecf5ff;
|
||||
@Brand200:#d9ecff;
|
||||
@Brand300:#c6e2ff;
|
||||
@Brand400:#b3d8ff;
|
||||
@Brand500:#a0cfff;
|
||||
@Brand600:#8cc5ff;
|
||||
@Brand700:#79bbff;
|
||||
@Brand800:#66b1ff;
|
||||
@Brand900:#53a8ff;
|
||||
@Brand900:#409EFF;
|
||||
@Brand:@Brand500;
|
||||
|
||||
@Success100:#f0f9eb;
|
||||
@Success200:#e1f3d8;
|
||||
@Success300:#67c23a;
|
||||
|
||||
@Warning100:#fdf6ec;
|
||||
@Warning200:#faecd8;
|
||||
@Warning300:#e6a23c;
|
||||
|
||||
@Danger100:#fef0f0;
|
||||
@Danger200:#fde2e2;
|
||||
@Danger300:#f56c6c;
|
||||
|
||||
@Info100:#f4f4f5;
|
||||
@Info200:#e9e9eb;
|
||||
@Info300:#909399;
|
||||
|
||||
@FontIndex100:#303133;
|
||||
@FontIndex200:#606266;
|
||||
@FontIndex300:#909399;
|
||||
@FontIndex400:#C0C4CC;
|
||||
|
||||
@borderIndex100:#DCDFE6;
|
||||
@borderIndex200:#E4E7ED;
|
||||
@borderIndex300:#EBEEF5;
|
||||
@borderIndex400:#F2F6FC;
|
||||
|
||||
@black:#000000;
|
||||
@white:#ffffff;
|
||||
|
||||
@body:#edf0ef;
|
||||
|
||||
@themeColor:#04B84F;
|
||||
246
衣莎项目/源码/gc_nwjs/src/assets/less/public/common.less
Normal file
@@ -0,0 +1,246 @@
|
||||
@import './color.less';
|
||||
body, div, span, header, footer, nav, section, aside, article, ul, dl, dt, dd, li, a, p, h1, h2, h3, h4,h5, h6, i, b, textarea, button, input, select, figure, figcaption {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
list-style: none;
|
||||
font-style: normal;
|
||||
text-decoration: none;
|
||||
border: none;
|
||||
font-family: "Microsoft Yahei",sans-serif;
|
||||
-webkit-tap-highlight-color:transparent;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
&:focus {
|
||||
outline: none;
|
||||
}
|
||||
}
|
||||
|
||||
::-webkit-scrollbar
|
||||
{
|
||||
width: 0px;
|
||||
cursor: pointer;
|
||||
border-radius: inherit;
|
||||
// background-color: rgba(144,147,153,.3);
|
||||
}
|
||||
|
||||
/*定义滚动条轨道 内阴影+圆角*/
|
||||
::-webkit-scrollbar-track
|
||||
{
|
||||
-webkit-box-shadow: inset 0 0 6px #00000000;
|
||||
border-radius: 10px;
|
||||
background-color: #00000000;
|
||||
}
|
||||
|
||||
/*定义滑块 内阴影+圆角*/
|
||||
::-webkit-scrollbar-thumb
|
||||
{
|
||||
border-radius: 10px;
|
||||
-webkit-box-shadow: inset 0 0 6px rgba(144,147,153,.3);
|
||||
background-color: rgba(144,147,153,.3);
|
||||
}
|
||||
|
||||
|
||||
input[type="button"], input[type="submit"], input[type="search"], input[type="reset"] {
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
textarea { -webkit-appearance: none;}
|
||||
|
||||
html,body{
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
background-color: #edf0ef;
|
||||
}
|
||||
|
||||
.clear{
|
||||
clear: both;
|
||||
}
|
||||
.h100{
|
||||
height: 100%;
|
||||
}
|
||||
.w100{
|
||||
width: 100%;
|
||||
}
|
||||
.b_img{
|
||||
background-repeat: no-repeat;
|
||||
background-size: 100% 100%;
|
||||
}
|
||||
|
||||
.pointer{
|
||||
cursor: pointer;
|
||||
}
|
||||
.img{
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
}
|
||||
.margin{
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.left{
|
||||
float: left;
|
||||
}
|
||||
|
||||
.right{
|
||||
float: right;
|
||||
}
|
||||
|
||||
.hide{
|
||||
display: none;
|
||||
}
|
||||
.show{
|
||||
display: block;
|
||||
}
|
||||
.tc{
|
||||
text-align: center;
|
||||
}
|
||||
.tl{
|
||||
text-align: left;
|
||||
}
|
||||
.tr{
|
||||
text-align: right;
|
||||
}
|
||||
.ver_align{
|
||||
vertical-align: middle;
|
||||
}
|
||||
.dis-flex1{
|
||||
display: -webkit-flex;
|
||||
display: flex;
|
||||
-webkit-justify-content: center;
|
||||
justify-content: center;
|
||||
-webkit-align-items: center;
|
||||
align-items: center;
|
||||
}
|
||||
// 垂直方向居中
|
||||
.dis-flex2{
|
||||
display: -webkit-flex;
|
||||
display: flex;
|
||||
-webkit-align-items: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.inblock{
|
||||
display: inline-block;
|
||||
}
|
||||
.block{
|
||||
display: block;
|
||||
}
|
||||
.flex{
|
||||
display: flex;
|
||||
}
|
||||
.flex-column{
|
||||
display: flex;
|
||||
flex-direction:column;
|
||||
}
|
||||
.flex1{
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
// 重写ui框架样式
|
||||
.el-dialog__header{
|
||||
background: @themeColor !important;
|
||||
.el-dialog__title{
|
||||
color: #ffffff !important;
|
||||
}
|
||||
.el-dialog__close{
|
||||
color: #ffffff !important;
|
||||
}
|
||||
}
|
||||
.el-button--primary{
|
||||
background-color: @themeColor !important;
|
||||
border-color: @themeColor !important;
|
||||
}
|
||||
// 卡片样式重写
|
||||
.Exhibition {
|
||||
.el-card__header {
|
||||
padding: 25px 20px 10px 20px !important;
|
||||
border-bottom: 0px !important;
|
||||
}
|
||||
.clearfix {
|
||||
font-size: 18px;
|
||||
font-weight: bold;
|
||||
color: rgba(51, 51, 51, 1);
|
||||
}
|
||||
.el-card__body{
|
||||
padding: 0 10px 10px 10px !important;
|
||||
.body_content{
|
||||
background-color: #E6E6E6;
|
||||
padding: 20px 36px;
|
||||
color: #333333;
|
||||
font-weight:500;
|
||||
span{
|
||||
min-width: 250px;
|
||||
margin-right: 20px;
|
||||
margin-top: 10px;
|
||||
display: inline-block;
|
||||
i{
|
||||
display: inline-block;
|
||||
width: 80px;
|
||||
text-align: right;
|
||||
margin-right: 5px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 表单样式重写
|
||||
.el-table .warning-row {
|
||||
background: #f6f6f6 !important;
|
||||
}
|
||||
.el-table__body tr:hover > td {
|
||||
background-color: #e0f5e9 !important;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
// // 输入框样式重写
|
||||
// .el-input__inner:hover {
|
||||
// border-color: @themeColor !important;
|
||||
// }
|
||||
// .el-input__inner:focus-within{
|
||||
// border-color: @themeColor !important;
|
||||
// }
|
||||
|
||||
// // tab样式重写
|
||||
// .el-tabs__item:hover{
|
||||
// color: @themeColor !important;
|
||||
// }
|
||||
// .el-tabs__item.is-active {
|
||||
// color: @themeColor !important;
|
||||
// }
|
||||
// .el-tabs__active-bar{
|
||||
// background-color: @themeColor !important;
|
||||
// }
|
||||
|
||||
// // 重写单选框样式
|
||||
// .el-radio__input.is-checked .el-radio__inner {
|
||||
// border-color: @themeColor !important;
|
||||
// background: @themeColor !important;
|
||||
// }
|
||||
// .el-radio__input.is-checked+.el-radio__label {
|
||||
// color: @themeColor !important;
|
||||
// }
|
||||
|
||||
// // 重写复选框样式
|
||||
// .el-checkbox__input.is-checked .el-checkbox__inner, .el-checkbox__input.is-indeterminate .el-checkbox__inner {
|
||||
// background-color: @themeColor !important;
|
||||
// border-color: @themeColor !important;
|
||||
// }
|
||||
// .el-checkbox__input.is-checked+.el-checkbox__label {
|
||||
// color: @themeColor !important;
|
||||
// }
|
||||
|
||||
// // 重写选择器样式
|
||||
// .el-select-dropdown__item.selected {
|
||||
// color: @themeColor !important;
|
||||
// }
|
||||
|
||||
// // 重写时间选择器样式
|
||||
// .el-date-table td.end-date span, .el-date-table td.start-date span {
|
||||
// background-color: @themeColor !important;
|
||||
// }
|
||||
// .el-date-table td.today span {
|
||||
// color: @themeColor !important;
|
||||
// }
|
||||
// .el-date-table td.available:hover {
|
||||
// color: @themeColor !important;
|
||||
// }
|
||||
15
衣莎项目/源码/gc_nwjs/src/assets/less/public/margin.less
Normal file
@@ -0,0 +1,15 @@
|
||||
.ml10{
|
||||
margin-left: 10px;
|
||||
}
|
||||
.mr10{
|
||||
margin-right: 10px;
|
||||
}
|
||||
.mt10{
|
||||
margin-top: 10px;
|
||||
}
|
||||
.mb10{
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.mb30{
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
1
衣莎项目/源码/gc_nwjs/src/assets/less/view/.pydio
Normal file
@@ -0,0 +1 @@
|
||||
31247e0f-3b3b-43eb-9dd9-6e6f58ec30e6
|
||||
45
衣莎项目/源码/gc_nwjs/src/assets/less/view/dropMark.less
Normal file
@@ -0,0 +1,45 @@
|
||||
@import '../public/color.less';
|
||||
.dropMark {
|
||||
padding: 0 10px 30px 10px;
|
||||
box-sizing: border-box;
|
||||
.el-input {
|
||||
width: auto;
|
||||
}
|
||||
.list {
|
||||
overflow-y: scroll;
|
||||
.clearfix:before,
|
||||
.clearfix:after {
|
||||
display: table;
|
||||
content: "";
|
||||
}
|
||||
|
||||
.clearfix:after {
|
||||
clear: both;
|
||||
}
|
||||
.el-col-8{
|
||||
width: 18%;
|
||||
&:nth-child(n+6) {
|
||||
margin-top: 2%;
|
||||
}
|
||||
}
|
||||
.el-col-offset-2,
|
||||
.el-col-offset-0 {
|
||||
margin-left: 0 !important;
|
||||
margin-right: 2%;
|
||||
}
|
||||
.shop{
|
||||
height: 150px;
|
||||
.shopImg{
|
||||
width: 150px;
|
||||
}
|
||||
}
|
||||
.clearfix{
|
||||
color: @FontIndex200;
|
||||
font-weight: 500;
|
||||
font-size: 14px;
|
||||
.name{
|
||||
color: @FontIndex100;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
74
衣莎项目/源码/gc_nwjs/src/assets/less/view/index.less
Normal file
@@ -0,0 +1,74 @@
|
||||
@import '../public/color.less';
|
||||
.index {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
flex-direction:column;
|
||||
.el-row{
|
||||
width: 100%;
|
||||
}
|
||||
.header {
|
||||
height: 100px;
|
||||
width: 100%;
|
||||
padding: 0 10px;
|
||||
box-sizing: border-box;
|
||||
border-bottom: 1px solid #dcdfe6;
|
||||
background-color: #04B84F;
|
||||
.logo {
|
||||
height: 100px;
|
||||
padding-left: 30px;
|
||||
img{
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
.ul {
|
||||
height: 100px;
|
||||
.li {
|
||||
width: 100px;
|
||||
.hamburger{
|
||||
height: 50px;
|
||||
width: 50px;
|
||||
}
|
||||
p{
|
||||
margin-top: 5px;
|
||||
font-size:16px;
|
||||
color: @white;
|
||||
font-weight:400;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.mian{
|
||||
li{
|
||||
width: 288px;
|
||||
height: 240px;
|
||||
margin: 0 30px;
|
||||
}
|
||||
}
|
||||
.bootom{
|
||||
height: 40px;
|
||||
line-height: 40px;
|
||||
padding: 0 30px;
|
||||
background-color: #04B84F;
|
||||
.secondary{
|
||||
color: @white;
|
||||
}
|
||||
}
|
||||
.close{
|
||||
position: fixed;
|
||||
right: 20px;
|
||||
top: 35px;
|
||||
color: @white;
|
||||
.closeCen{
|
||||
width: 120px;
|
||||
float: right;
|
||||
img{
|
||||
height: 25px;
|
||||
width: 23px;
|
||||
}
|
||||
.closeCen-p{
|
||||
margin-left: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
32
衣莎项目/源码/gc_nwjs/src/assets/less/view/login.less
Normal file
@@ -0,0 +1,32 @@
|
||||
@import '../public/color.less';
|
||||
.login,
|
||||
.ion,
|
||||
.lizi {
|
||||
height: 100%;
|
||||
}
|
||||
.login {
|
||||
.ion {
|
||||
position: fixed;
|
||||
left: 0;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
z-index: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: url(https://vue-particles.netlify.com/static/img/sky.871d198.jpg);
|
||||
background-size: cover;
|
||||
}
|
||||
.form {
|
||||
position: relative;
|
||||
height: 100%;
|
||||
.demo-ruleForm {
|
||||
width: 500px;
|
||||
}
|
||||
}
|
||||
// 重写ui框架样式
|
||||
.el-form-item__label{
|
||||
color: @white !important;
|
||||
font-size: 24px !important;
|
||||
}
|
||||
}
|
||||
BIN
衣莎项目/源码/gc_nwjs/src/assets/logo.png
Normal file
|
After Width: | Height: | Size: 6.7 KiB |
1
衣莎项目/源码/gc_nwjs/src/components/.pydio
Normal file
@@ -0,0 +1 @@
|
||||
c907d9fe-0cc4-4d67-91c0-acce284348c2
|
||||
171
衣莎项目/源码/gc_nwjs/src/components/dropCheck.vue
Normal file
@@ -0,0 +1,171 @@
|
||||
<template>
|
||||
<div class="dropMark flex1">
|
||||
<div class="flex-column h100 flex1">
|
||||
<div>
|
||||
<div class="block">
|
||||
<div class="inblock">
|
||||
时间:
|
||||
<el-date-picker
|
||||
v-model="time"
|
||||
type="daterange"
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
value-format="yyyy-MM-dd hh:mm:ss"
|
||||
></el-date-picker>
|
||||
</div>
|
||||
<div class="inblock ml10">
|
||||
条码:
|
||||
<el-input v-model="really_code" placeholder="请输入内容"></el-input>
|
||||
</div>
|
||||
<div class="inblock ml10">
|
||||
<el-radio v-model="radio" label="1">领取</el-radio>
|
||||
<el-radio v-model="radio" label="2">未领取</el-radio>
|
||||
</div>
|
||||
</div>
|
||||
<div class="block mt10">
|
||||
<div class="inblock">
|
||||
颜色:
|
||||
<el-input v-model="color" placeholder="请输入内容"></el-input>
|
||||
</div>
|
||||
<div class="inblock ml10">
|
||||
品牌:
|
||||
<el-input v-model="brand" placeholder="请输入内容"></el-input>
|
||||
</div>
|
||||
<div class="inblock ml10">
|
||||
名称:
|
||||
<el-input v-model="name" placeholder="请输入内容"></el-input>
|
||||
</div>
|
||||
<div class="inblock ml10">
|
||||
<el-button type="primary" @click="_query()">查询</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mt10">
|
||||
<el-card class="box-card">
|
||||
<div>
|
||||
<el-pagination
|
||||
background
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
:current-page="page"
|
||||
:page-sizes="[20, 30, 40, 50]"
|
||||
:page-size="limit"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="dropWatchList.info.count"
|
||||
></el-pagination>
|
||||
</div>
|
||||
</el-card>
|
||||
</div>
|
||||
<div class="mt10 flex1 flex-column h100">
|
||||
<el-card class="flex1 flex list">
|
||||
<div>
|
||||
<el-row>
|
||||
<el-col
|
||||
:span="8"
|
||||
v-for="(item, index) in dropWatchList.list"
|
||||
:key="index"
|
||||
:offset="index > 0 ? 2 : 0"
|
||||
>
|
||||
<el-card :body-style="{ padding: '0px' }">
|
||||
<div class="flex shop">
|
||||
<div class="shopImg">
|
||||
<img class="img" :src="item.image" alt="图片地址不正确请联系开发人员" />
|
||||
</div>
|
||||
<div style="padding: 14px;" class="bottom clearfix flex1">
|
||||
<div class="name">名称: {{item.name}}</div>
|
||||
<div>颜色: {{item.color}}</div>
|
||||
<div>品牌: {{item.brand}}</div>
|
||||
<div>水洗码: {{item.provision_code}}</div>
|
||||
<div>{{item.find_time}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</el-card>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
</el-card>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
tableHeight: window.innerHeight - 300,
|
||||
time: [],
|
||||
color: '',
|
||||
brand: '',
|
||||
name: '',
|
||||
really_code: '',
|
||||
radio: '1',
|
||||
currentPage4: 4,
|
||||
dropWatchList: {
|
||||
list: [],
|
||||
info: {}
|
||||
},
|
||||
page: 1,
|
||||
limit: 20
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.time[0] = this.$utils.formatTime(new Date().getTime(), 'Y-M-D h:m:s')
|
||||
this.time[1] = this.$utils.formatTime(new Date().getTime(), 'Y-M-D h:m:s')
|
||||
this._query()
|
||||
},
|
||||
methods: {
|
||||
handleSizeChange(val) {
|
||||
// console.log(`每页 ${val} 条`);
|
||||
this.limit = val
|
||||
this._query()
|
||||
},
|
||||
handleCurrentChange(val) {
|
||||
// console.log(`当前页: ${val}`);
|
||||
this.page = val
|
||||
this._query()
|
||||
},
|
||||
tableRowClassName({ rowIndex }) {
|
||||
if (rowIndex % 2 == 0) {
|
||||
return 'warning-row';
|
||||
}
|
||||
return '';
|
||||
},
|
||||
async _query() {
|
||||
let data = {
|
||||
startTime: this.time[0],
|
||||
endTime: this.time[1],
|
||||
status: this.radio,
|
||||
really_code: this.really_code,
|
||||
brand: this.brand,
|
||||
color: this.color,
|
||||
name: this.name,
|
||||
page: this.page,
|
||||
limit: this.limit
|
||||
|
||||
}
|
||||
let res = await this.$http.findLossBid(data)
|
||||
this.dropWatchList = res.data.data
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
@import "../assets/less/view/dropMark.less";
|
||||
</style>
|
||||
<style lang="less">
|
||||
.dropMark {
|
||||
.el-card__body {
|
||||
overflow-y: scroll;
|
||||
flex: 1;
|
||||
}
|
||||
.el-tabs__content {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
.el-tab-pane {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
162
衣莎项目/源码/gc_nwjs/src/components/dropMatching.vue
Normal file
@@ -0,0 +1,162 @@
|
||||
<template>
|
||||
<div class="dropMark w100">
|
||||
<div class="flex-column h100 flex1">
|
||||
<div>
|
||||
<div class="block">
|
||||
<div class="inblock">
|
||||
时间:
|
||||
<el-date-picker
|
||||
v-model="time"
|
||||
type="daterange"
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
value-format="yyyy-MM-dd hh:mm:ss"
|
||||
></el-date-picker>
|
||||
</div>
|
||||
<div class="inblock ml10">
|
||||
<el-radio v-model="radio" label="1">未出厂</el-radio>
|
||||
<el-radio v-model="radio" label="2">已出厂</el-radio>
|
||||
</div>
|
||||
</div>
|
||||
<div class="block mt10">
|
||||
<div class="inblock">
|
||||
品牌:
|
||||
<el-input v-model="brand" placeholder="请输入内容"></el-input>
|
||||
</div>
|
||||
<div class="inblock ml10">
|
||||
名称:
|
||||
<el-input v-model="name" placeholder="请输入内容"></el-input>
|
||||
</div>
|
||||
<div class="inblock ml10">
|
||||
网格:
|
||||
<el-select v-model="value" placeholder="请选择">
|
||||
<el-option
|
||||
v-for="item in options"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="inblock ml10">
|
||||
颜色:
|
||||
<el-select v-model="color" placeholder="请选择">
|
||||
<el-option
|
||||
v-for="item in colorData"
|
||||
:key="item.color_name"
|
||||
:label="item.color_name"
|
||||
:value="item.color_name"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="inblock ml10">
|
||||
<el-button type="primary" @click="matchBid">开始匹配</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mt10 flex1 flex-column h100">
|
||||
<el-table
|
||||
:data="tableData"
|
||||
height="250"
|
||||
border
|
||||
style="width: 100%"
|
||||
:row-class-name="tableRowClassName"
|
||||
>
|
||||
<el-table-column prop="shop_order_no" label="订单号" width="180"></el-table-column>
|
||||
<el-table-column prop="code_num" label="条形码" width="180"></el-table-column>
|
||||
<el-table-column prop="name" label="衣物名称"></el-table-column>
|
||||
<el-table-column prop="create_time" label="下单时间"></el-table-column>
|
||||
<el-table-column prop="color" label="颜色"></el-table-column>
|
||||
<el-table-column prop="brand" label="品牌"></el-table-column>
|
||||
<el-table-column prop="cloth_wg" label="网格"></el-table-column>
|
||||
<el-table-column prop="appendix" label="附件"></el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
tableHeight: window.innerHeight - 300,
|
||||
time: [],
|
||||
brand: '',
|
||||
name: '',
|
||||
color: '',
|
||||
radio: '1',
|
||||
currentPage4: 4,
|
||||
colorData: [],
|
||||
options: [{
|
||||
value: '请选择',
|
||||
label: '请选择'
|
||||
}, {
|
||||
value: '方格',
|
||||
label: '方格'
|
||||
}, {
|
||||
value: '花纹',
|
||||
label: '花纹'
|
||||
}, {
|
||||
value: '条纹',
|
||||
label: '条纹'
|
||||
}, {
|
||||
value: '卡通',
|
||||
label: '卡通'
|
||||
}, {
|
||||
value: '字母',
|
||||
label: '字母'
|
||||
}],
|
||||
value: '',
|
||||
tableData: []
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.time[0] = this.$utils.formatTime(new Date().getTime(), 'Y-M-D h:m:s')
|
||||
this.time[1] = this.$utils.formatTime(new Date().getTime(), 'Y-M-D h:m:s')
|
||||
this.matchBid()
|
||||
this.$http.getShopColor()
|
||||
.then(res => {
|
||||
this.colorData = [{ id: null, color_name: '请选择' }, ...res.data.data]
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
tableRowClassName({ rowIndex }) {
|
||||
if (rowIndex % 2 == 0) {
|
||||
return 'warning-row';
|
||||
}
|
||||
return '';
|
||||
},
|
||||
async matchBid() {
|
||||
let data = {
|
||||
outStatus: this.radio,
|
||||
startTime: this.time[0],
|
||||
endTime: this.time[1],
|
||||
color: this.color == '请选择' ? '' : this.color,
|
||||
brand: this.brand,
|
||||
name: this.name
|
||||
}
|
||||
let res = await this.$http.matchBid(data)
|
||||
this.tableData = res.data.data
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
@import "../assets/less/view/dropMark.less";
|
||||
</style>
|
||||
<style lang="less">
|
||||
.dropMark {
|
||||
.el-card__body {
|
||||
overflow-y: scroll;
|
||||
}
|
||||
.el-tabs__content {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
.el-tab-pane {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
54
衣莎项目/源码/gc_nwjs/src/components/header.vue
Normal file
@@ -0,0 +1,54 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="header">
|
||||
<div class="title">{{title}}</div>
|
||||
<div class="right">
|
||||
<el-button type="danger" plain @click="close()">关闭</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
export default {
|
||||
props: {
|
||||
title: {
|
||||
type: String,
|
||||
value: ''
|
||||
}
|
||||
},
|
||||
created() {
|
||||
console.log(this.title);
|
||||
},
|
||||
methods: {
|
||||
close() {
|
||||
this.$nw.close()
|
||||
},
|
||||
},
|
||||
mounted() {
|
||||
console.log(this.title)
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
.header {
|
||||
width: 100%;
|
||||
height: 50px;
|
||||
text-align: center;
|
||||
background: #04b84f;
|
||||
position: relative;
|
||||
.title {
|
||||
width: 30%;
|
||||
margin: 0 auto;
|
||||
height: 50px;
|
||||
line-height: 50px;
|
||||
color: #ffffff;
|
||||
font-size: 24px;
|
||||
font-weight: 400;
|
||||
}
|
||||
.right {
|
||||
position: absolute;
|
||||
top: 5px;
|
||||
right: 10px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
118
衣莎项目/源码/gc_nwjs/src/components/login.vue
Normal file
@@ -0,0 +1,118 @@
|
||||
<template>
|
||||
<div class="logins">
|
||||
<div class="form dis-flex1">
|
||||
<el-form
|
||||
:model="ruleForm"
|
||||
status-icon
|
||||
:rules="rules"
|
||||
ref="ruleForm"
|
||||
label-width="100px"
|
||||
class="demo-ruleForm margin"
|
||||
size="medium"
|
||||
>
|
||||
<el-form-item label="账号" prop="user">
|
||||
<el-input v-model="ruleForm.user" autocomplete="off"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="密码" prop="pass">
|
||||
<el-input type="password" v-model="ruleForm.pass" autocomplete="off"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="submitForm('ruleForm')" :loading="loading">登录</el-button>
|
||||
<el-button @click="resetForm('ruleForm')">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
var validatePass = (rule, value, callback) => {
|
||||
if (value === "") {
|
||||
callback(new Error("请输入账号"));
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
};
|
||||
var validatePass2 = (rule, value, callback) => {
|
||||
if (value === "") {
|
||||
callback(new Error("请输入密码"));
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
};
|
||||
return {
|
||||
loading: false, //按钮加载状态
|
||||
ruleForm: {
|
||||
user: "",
|
||||
pass: ""
|
||||
},
|
||||
rules: {
|
||||
user: [{ validator: validatePass, trigger: "blur" }],
|
||||
pass: [{ validator: validatePass2, trigger: "blur" }]
|
||||
}
|
||||
};
|
||||
},
|
||||
created() {
|
||||
if (
|
||||
localStorage.getItem("login") !== "" ||
|
||||
localStorage.getItem("login") !== null
|
||||
) {
|
||||
let login = JSON.parse(localStorage.getItem("login")) || {};
|
||||
this.ruleForm = {
|
||||
user: login["user"],
|
||||
pass: login["pass"]
|
||||
};
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
submitForm(formName) {
|
||||
this.$refs[formName].validate(async valid => {
|
||||
if (valid) {
|
||||
this.loading = true;
|
||||
let res = await this.$http.login(
|
||||
this.ruleForm.user,
|
||||
this.ruleForm.pass
|
||||
);
|
||||
this.loading = false;
|
||||
if (res.data.status == 1) {
|
||||
await localStorage.setItem(
|
||||
"login",
|
||||
JSON.stringify({
|
||||
user: this.ruleForm.user,
|
||||
pass: this.ruleForm.pass
|
||||
})
|
||||
);
|
||||
this.$router.go(0);
|
||||
} else {
|
||||
this.$message({
|
||||
message: res.data.msg,
|
||||
type: "warning"
|
||||
});
|
||||
}
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
},
|
||||
resetForm(formName) {
|
||||
this.$refs[formName].resetFields();
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<style lang="less">
|
||||
.logins {
|
||||
.el-form-item__label {
|
||||
color: #000000 !important;
|
||||
font-size: 24px !important;
|
||||
}
|
||||
.form {
|
||||
position: relative;
|
||||
height: 100%;
|
||||
.demo-ruleForm {
|
||||
width: 500px;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
77
衣莎项目/源码/gc_nwjs/src/components/selectionMenu.vue
Normal file
@@ -0,0 +1,77 @@
|
||||
<template>
|
||||
<div class="selectionMenu">
|
||||
<el-dialog title="功能选择" :visible.sync="dialogVisible" width="40%" :before-close="handleClose">
|
||||
<div class="border">
|
||||
<ul class="border-ul">
|
||||
<li v-for="(item,index) in dataList" :key="index" @click="goUrl(item)">{{item.title}}</li>
|
||||
</ul>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
export default {
|
||||
props: {
|
||||
dataList: {
|
||||
type: Array,
|
||||
default() {
|
||||
return []
|
||||
}
|
||||
},
|
||||
isShow: {
|
||||
type: Boolean,
|
||||
default() {
|
||||
return false
|
||||
}
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
dialogVisible: false
|
||||
};
|
||||
},
|
||||
created() {
|
||||
},
|
||||
methods: {
|
||||
// 关闭弹出框
|
||||
handleClose(done) {
|
||||
done();
|
||||
},
|
||||
// 跳转
|
||||
goUrl(item) {
|
||||
if (typeof item.url !== 'string') return;
|
||||
let baseUrl = window.location;
|
||||
nw.Window.open(`${baseUrl.origin}${baseUrl.pathname}#${item.url}?title=${item.title}&status=${item.status}`, { fullscreen: true, frame: true }, () => { });
|
||||
// nw.Window.open('http://192.168.0.126:8080/#/exitFactory', {}, () => { });
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
isShow() {
|
||||
this.dialogVisible = !this.dialogVisible
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
.border {
|
||||
width: 100%;
|
||||
height: 500px;
|
||||
overflow-y: scroll;
|
||||
.border-ul {
|
||||
li {
|
||||
width: 120px;
|
||||
height: 90px;
|
||||
line-height: 90px;
|
||||
text-align: center;
|
||||
margin: 10px;
|
||||
background: red;
|
||||
display: inline-block;
|
||||
font-size: 18px;
|
||||
letter-spacing: 3px;
|
||||
color: #ffffff;
|
||||
float: left;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
1
衣莎项目/源码/gc_nwjs/src/config/.pydio
Normal file
@@ -0,0 +1 @@
|
||||
eae39927-dd05-43a2-92b5-b1b6e2dc9e19
|
||||
6
衣莎项目/源码/gc_nwjs/src/config/index.js
Normal file
@@ -0,0 +1,6 @@
|
||||
export default {
|
||||
// baseUrl: 'https://yitest.yishaxiyi.com/factoryapi',// 开发阶段测试地址
|
||||
baseUrl: 'https://ceshi.yishaxiyi.com/factoryapi',// 上线正式地址
|
||||
prefix: '',//缓存前缀
|
||||
a:'https://yitest.yishaxiyi.com/factoryUpadate/index.html'
|
||||
}
|
||||
1
衣莎项目/源码/gc_nwjs/src/http/.pydio
Normal file
@@ -0,0 +1 @@
|
||||
432d26c6-e88c-4dab-a39d-8d4970ed0cc8
|
||||
33
衣莎项目/源码/gc_nwjs/src/http/api.js
Normal file
@@ -0,0 +1,33 @@
|
||||
export default {
|
||||
login: '/login',
|
||||
getShopMember: '/getShopMember',//获取门店员工信息
|
||||
allShop: '/allShop',//获取门店信息
|
||||
allPosition: '/allPosition',//获取岗位信息
|
||||
allPeople: '/allPeople',//获取工厂所有员工信息
|
||||
getShopColor: '/getShopColor',//获取颜色
|
||||
allDriver: '/allDriver',//获取驾驶员数据接口
|
||||
|
||||
findOut: '/findOut',//出厂查询
|
||||
getOutByNo: '/getOutByNo',//根据出厂单号查询衣物信息
|
||||
queryOrder: '/queryOrder',//订单号或条形码查询
|
||||
orderAbout: 'orderAbout',//点击衣物信息查询工厂和门店操作记录
|
||||
warn: '/warn',//衣物预警
|
||||
workCount: '/workCount',//业绩查询
|
||||
findLossBid: '/findLossBid',//掉标衣物查看
|
||||
matchBid: '/matchBid',//掉标衣物匹配
|
||||
operate: '/operate',//员工的岗位操作权限
|
||||
changeClothProcess: '/changeClothProcess',//衣物工序(出厂单独接口)
|
||||
outFactory: '/outFactory',//衣物出厂
|
||||
countPosition: '/countPosition',//今日工作件数
|
||||
outSys: '/outSys',//确认出厂
|
||||
returnWhy: '/returnWhy', // 返工原因
|
||||
insertReturn: '/insertReturn', // 添加返工
|
||||
addExtra: '/addExtra',
|
||||
returnList: '/returnList', // 返工记录列表接口
|
||||
extraList: '/extraList', // 补款列表
|
||||
sureAccept: '/sureAccept', // 接收返工
|
||||
shopMoney: '/shopMoney', // 单个门店营业额查询
|
||||
shopTypeMoney: '/shopTypeMoney', // 门店类型营业额统计
|
||||
shopClothCount: '/shopClothCount', // 门店每日收衣统计
|
||||
checkClothCount: '/checkClothCount' // 工厂总检数据查询
|
||||
}
|
||||
148
衣莎项目/源码/gc_nwjs/src/http/http.js
Normal file
@@ -0,0 +1,148 @@
|
||||
import ajax from './index'
|
||||
import api from './api'
|
||||
import util from '../utils/utils'
|
||||
import store from '../store/index'
|
||||
import type from '../store/type'
|
||||
|
||||
export default {
|
||||
async login(user, pass) {
|
||||
let res = await ajax.request1({ url: api.login, method: "POST", data: { job_number: user, password: pass } })
|
||||
if (res.data.status == 1) {
|
||||
util.setStorage('userInfo', res.data.data)
|
||||
store.commit(type.ACTIONS.SET_USERINFO, res.data.data)
|
||||
}
|
||||
return res
|
||||
},
|
||||
async findOut(data) {
|
||||
return await ajax.request1({ url: api.findOut, method: "POST", data: data })
|
||||
},
|
||||
async getOutByNo(exit_factory_no) {
|
||||
return await ajax.request1({ url: api.getOutByNo, params: { exit_factory_no: exit_factory_no } })
|
||||
},
|
||||
|
||||
// 订单号或条形码查询
|
||||
async queryOrder(clothTerm) {
|
||||
return await ajax.request1({ url: api.queryOrder, method: 'POST', data: { clothTerm: clothTerm } })
|
||||
},
|
||||
//点击衣物信息查询工厂和门店操作记录
|
||||
async orderAbout(code) {
|
||||
return await ajax.request1({ url: api.orderAbout, params: { code: code } })
|
||||
},
|
||||
|
||||
//衣物预警
|
||||
async warn(data) {
|
||||
return await ajax.request1({ url: api.warn, method: 'POST', data: data })
|
||||
},
|
||||
|
||||
//业绩查询
|
||||
async workCount(data) {
|
||||
return await ajax.request1({ url: api.workCount, method: 'POST', data: data })
|
||||
},
|
||||
|
||||
//掉标衣物查看
|
||||
async findLossBid(data) {
|
||||
return await ajax.request1({ url: api.findLossBid, method: 'POST', data: data })
|
||||
},
|
||||
|
||||
//掉标衣物匹配
|
||||
async matchBid(data) {
|
||||
return await ajax.request1({ url: api.matchBid, method: 'POST', data: data })
|
||||
},
|
||||
|
||||
//员工的岗位操作权限
|
||||
async operate(type) {
|
||||
let res = await ajax.request1({ url: api.operate, method: 'POST', data: { type: type } })
|
||||
let rel = res.data.data
|
||||
rel.map((v, i) => {
|
||||
rel[i].title = v.name
|
||||
})
|
||||
return rel
|
||||
},
|
||||
|
||||
// 衣物工序(出厂单独接口)
|
||||
async changeClothProcess(data) {
|
||||
return await ajax.request1({ url: api.changeClothProcess, method: 'POST', data: data })
|
||||
},
|
||||
|
||||
// 衣物出厂
|
||||
async outFactory(data) {
|
||||
return await ajax.request1({ url: api.outFactory, method: 'POST', data: data })
|
||||
},
|
||||
|
||||
// 今日工作件数
|
||||
async countPosition(status) {
|
||||
return await ajax.request1({ url: api.countPosition, method: 'POST', data: { status: status } })
|
||||
},
|
||||
|
||||
// 确认出厂
|
||||
async outSys() {
|
||||
return await ajax.request1({ url: api.outSys, method: 'POST' })
|
||||
},
|
||||
|
||||
// 公共接口
|
||||
//获取门店员工信息
|
||||
async getShopMember(shop_id) {
|
||||
return await ajax.request1({ url: api.getShopMember, params: { shop_id: shop_id } })
|
||||
},
|
||||
//获取门店信息
|
||||
async allShop() {
|
||||
return await ajax.request1({ url: api.allShop })
|
||||
},
|
||||
//获取岗位信息
|
||||
async allPosition() {
|
||||
return await ajax.request1({ url: api.allPosition })
|
||||
},
|
||||
//获取工厂所有员工信息
|
||||
async allPeople() {
|
||||
return await ajax.request1({ url: api.allPeople })
|
||||
},
|
||||
//获取颜色
|
||||
async getShopColor() {
|
||||
return await ajax.request1({ url: api.getShopColor })
|
||||
},
|
||||
//获取驾驶员数据接口
|
||||
async allDriver() {
|
||||
return await ajax.request1({ url: api.allDriver })
|
||||
},
|
||||
//获取驾驶员数据接口
|
||||
async returnWhy() {
|
||||
return await ajax.request1({ url: api.returnWhy })
|
||||
},
|
||||
//添加返工
|
||||
async insertReturn(params) {
|
||||
return await ajax.request1({ url: api.insertReturn, method: 'POST', data: params })
|
||||
},
|
||||
//添加返工
|
||||
async addExtra(params) {
|
||||
return await ajax.request1({ url: api.addExtra, method: 'POST', data: params })
|
||||
},
|
||||
// 返工记录列表接口
|
||||
async returnList(params) {
|
||||
return await ajax.request1({ url: api.returnList, method: 'POST', data: params })
|
||||
},
|
||||
// 衣物补款列表接口
|
||||
async extraList(params) {
|
||||
return await ajax.request1({ url: api.extraList, method: 'POST', data: params })
|
||||
},
|
||||
async sureAccept(params) {
|
||||
return await ajax.request1({ url: api.sureAccept, method: 'POST', data: params })
|
||||
},
|
||||
// 单个门店营业额查询
|
||||
async shopMoney(params) {
|
||||
return await ajax.request1({ url: api.shopMoney, method: 'POST', data: params })
|
||||
},
|
||||
// 门店类型营业额统计
|
||||
async shopTypeMoney(params) {
|
||||
return await ajax.request1({ url: api.shopTypeMoney, method: 'POST', data: params })
|
||||
},
|
||||
|
||||
// 门店每日收衣统计
|
||||
async shopClothCount(params) {
|
||||
return await ajax.request1({ url: api.shopClothCount, method: 'POST', data: params })
|
||||
},
|
||||
|
||||
// 工厂总检数据查询
|
||||
async checkClothCount(params) {
|
||||
return await ajax.request1({ url: api.checkClothCount, method: 'POST', data: params })
|
||||
}
|
||||
}
|
||||
31
衣莎项目/源码/gc_nwjs/src/http/index.js
Normal file
@@ -0,0 +1,31 @@
|
||||
import axios from '@bmy/axios';
|
||||
import config from '@/config/index';
|
||||
import store from '../store/index'
|
||||
|
||||
// Vue.use(axios)
|
||||
|
||||
export default {
|
||||
/**
|
||||
* 通用请求
|
||||
* @param {*} option
|
||||
* url 请求地址, data 请求参数, method请求方式默认get
|
||||
*/
|
||||
request1(option) {
|
||||
let token = store.getters.userInfo['token']
|
||||
let headers = { ...option.headers, token }
|
||||
return new Promise((resolve, reject) => {
|
||||
axios({
|
||||
method: option.method || 'GET',
|
||||
url: `${config.baseUrl}${option.url}`,
|
||||
data: option.data,
|
||||
params: option.params,
|
||||
headers: headers
|
||||
}).then(function (response) {
|
||||
resolve(response)
|
||||
}).catch(function (error) {
|
||||
console.error(error, `======${option.url}请求出错`)
|
||||
reject(error)
|
||||
});
|
||||
})
|
||||
}
|
||||
}
|
||||
29
衣莎项目/源码/gc_nwjs/src/main.js
Normal file
@@ -0,0 +1,29 @@
|
||||
import Vue from 'vue'
|
||||
import App from './App.vue'
|
||||
import router from './router'
|
||||
import store from './store/index'
|
||||
import ElementUI from 'element-ui';
|
||||
// import 'element-ui/lib/theme-chalk/index.css';
|
||||
// 自定义主题引入
|
||||
import '@/static/style/theme/index.css'
|
||||
// import VueParticles from 'vue-particles';
|
||||
import http from '@/http/http';
|
||||
import nw from '@/utils/nw'
|
||||
import utils from '@/utils/utils'
|
||||
import printing from '@/utils/printing'
|
||||
|
||||
Vue.config.productionTip = false
|
||||
|
||||
Vue.use(ElementUI)
|
||||
// Vue.use(VueParticles)
|
||||
|
||||
Vue.prototype.$http = http
|
||||
Vue.prototype.$nw = nw
|
||||
Vue.prototype.$utils = utils
|
||||
Vue.prototype.$printing = printing
|
||||
|
||||
new Vue({
|
||||
router,
|
||||
store,
|
||||
render: h => h(App)
|
||||
}).$mount('#app')
|
||||
83
衣莎项目/源码/gc_nwjs/src/router.js
Normal file
@@ -0,0 +1,83 @@
|
||||
import Vue from 'vue'
|
||||
import Router from 'vue-router'
|
||||
|
||||
Vue.use(Router);
|
||||
|
||||
export default new Router({
|
||||
routes: [
|
||||
{
|
||||
path: '/',
|
||||
redirect: '/login'
|
||||
},
|
||||
{
|
||||
path: '/login',
|
||||
name: 'login',
|
||||
component: () => import('./views/login.vue')
|
||||
},
|
||||
{
|
||||
path: '/index',
|
||||
name: 'index',
|
||||
component: () => import('./views/index.vue')
|
||||
},
|
||||
{
|
||||
path: '/Statistics',
|
||||
name: 'Statistics',
|
||||
component: () => import('./views/Statistics.vue')
|
||||
},
|
||||
{
|
||||
path: '/checkClothCount',
|
||||
name: 'checkClothCount',
|
||||
component: () => import('./views/checkClothCount.vue')
|
||||
},
|
||||
{
|
||||
path: '/StoreTurnover',
|
||||
name: 'StoreTurnover',
|
||||
component: () => import('./views/StoreTurnover.vue')
|
||||
},
|
||||
{
|
||||
path: '/exitFactory',
|
||||
name: 'exitFactory',
|
||||
component: () => import('./views/exitFactory.vue')
|
||||
},
|
||||
{
|
||||
path: '/clothingInquiries',
|
||||
name: 'clothingInquiries',
|
||||
component: () => import('./views/clothingInquiries.vue')
|
||||
},
|
||||
{
|
||||
path: '/productionEarlyWarning',
|
||||
name: 'productionEarlyWarning',
|
||||
component: () => import('./views/productionEarlyWarning.vue')
|
||||
},
|
||||
{
|
||||
path: '/workload',
|
||||
name: 'workload',
|
||||
component: () => import('./views/workload.vue')
|
||||
},
|
||||
{
|
||||
path: '/dropMark',
|
||||
name: 'dropMark',
|
||||
component: () => import('./views/dropMark.vue')
|
||||
},
|
||||
{
|
||||
path: '/enterFactory',
|
||||
name: 'enterFactory',
|
||||
component: () => import('./views/enterFactory.vue')
|
||||
},
|
||||
{
|
||||
path: '/factory',
|
||||
name: 'factory',
|
||||
component: () => import('./views/factory.vue')
|
||||
},
|
||||
{
|
||||
path: '/rework',
|
||||
name: 'rework',
|
||||
component: () => import('./views/ReworkManagement.vue')
|
||||
},
|
||||
{
|
||||
path: '/compensation',
|
||||
name: 'compensation',
|
||||
component: () => import('./views/CompensationManagement.vue')
|
||||
}
|
||||
]
|
||||
})
|
||||
1
衣莎项目/源码/gc_nwjs/src/static/.pydio
Normal file
@@ -0,0 +1 @@
|
||||
e7cc86a5-d0e2-4423-bb9c-da3907e6df82
|
||||
1
衣莎项目/源码/gc_nwjs/src/static/style/.pydio
Normal file
@@ -0,0 +1 @@
|
||||
ed5fbef0-9eb6-4404-bc96-9040ef1e48d7
|
||||
1
衣莎项目/源码/gc_nwjs/src/static/style/config.json
Normal file
@@ -0,0 +1 @@
|
||||
{"global":{"$--color-primary":"#04B84F"},"local":{}}
|
||||
1
衣莎项目/源码/gc_nwjs/src/static/style/theme/.pydio
Normal file
@@ -0,0 +1 @@
|
||||
52889fa6-0d07-4ff7-b45a-8a6bfdb10aa9
|
||||
1
衣莎项目/源码/gc_nwjs/src/static/style/theme/fonts/.pydio
Normal file
@@ -0,0 +1 @@
|
||||
d54b3aac-8937-4e4f-9fe4-156d92db3c0d
|
||||
BIN
衣莎项目/源码/gc_nwjs/src/static/style/theme/fonts/element-icons.ttf
Normal file
BIN
衣莎项目/源码/gc_nwjs/src/static/style/theme/fonts/element-icons.woff
Normal file
1
衣莎项目/源码/gc_nwjs/src/static/style/theme/index.css
Normal file
1
衣莎项目/源码/gc_nwjs/src/store/.pydio
Normal file
@@ -0,0 +1 @@
|
||||
37e078d8-c5dc-4fc5-a289-b8f0ef2bd216
|
||||
3
衣莎项目/源码/gc_nwjs/src/store/actions.js
Normal file
@@ -0,0 +1,3 @@
|
||||
export default {
|
||||
|
||||
}
|
||||
6
衣莎项目/源码/gc_nwjs/src/store/getters.js
Normal file
@@ -0,0 +1,6 @@
|
||||
import utils from '../utils/utils'
|
||||
export default {
|
||||
userInfo: (state) => {
|
||||
return state.userInfo['name'] ? state.userInfo : utils.getStorage('userInfo') || {}
|
||||
}
|
||||
}
|
||||
26
衣莎项目/源码/gc_nwjs/src/store/index.js
Normal file
@@ -0,0 +1,26 @@
|
||||
import Vue from 'vue'
|
||||
import Vuex from 'vuex'
|
||||
import getters from '@/store/getters'
|
||||
|
||||
import home from './modules/Home'
|
||||
|
||||
import mutations from './mutations'
|
||||
import state from './state'
|
||||
|
||||
Vue.use(Vuex)
|
||||
|
||||
export default new Vuex.Store({
|
||||
state: {
|
||||
...state
|
||||
},
|
||||
modules: {
|
||||
home
|
||||
},
|
||||
mutations: {
|
||||
...mutations
|
||||
},
|
||||
actions: {
|
||||
|
||||
},
|
||||
getters
|
||||
})
|
||||
1
衣莎项目/源码/gc_nwjs/src/store/modules/.pydio
Normal file
@@ -0,0 +1 @@
|
||||
a36ffe4c-da6b-427a-8a73-87dab63869fb
|
||||
16
衣莎项目/源码/gc_nwjs/src/store/modules/Home.js
Normal file
@@ -0,0 +1,16 @@
|
||||
import type from '../type'
|
||||
export default {
|
||||
state: {
|
||||
num:1
|
||||
},
|
||||
mutations: {
|
||||
ADDNUM(state, n){
|
||||
state.num += n
|
||||
}
|
||||
},
|
||||
actions: {
|
||||
[type.ACTIONS.NUM]({ commit },n){
|
||||
commit('ADDNUM',n)
|
||||
}
|
||||
}
|
||||
}
|
||||
6
衣莎项目/源码/gc_nwjs/src/store/mutations.js
Normal file
@@ -0,0 +1,6 @@
|
||||
import type from './type';
|
||||
export default {
|
||||
[type.MUTATIONS.SET_USERINFO](state, n) {
|
||||
state.userInfo = n
|
||||
}
|
||||
}
|
||||
5
衣莎项目/源码/gc_nwjs/src/store/state.js
Normal file
@@ -0,0 +1,5 @@
|
||||
export default {
|
||||
userInfo: {
|
||||
token: ''
|
||||
}
|
||||
}
|
||||
11
衣莎项目/源码/gc_nwjs/src/store/type.js
Normal file
@@ -0,0 +1,11 @@
|
||||
export default {
|
||||
ACTIONS: {
|
||||
NUM: 'NUM',
|
||||
SET_USERINFO: 'SET_USERINFO',
|
||||
GET_USERINFO: 'GET_USERINFO'
|
||||
},
|
||||
MUTATIONS: {
|
||||
SET_USERINFO: 'SET_USERINFO',
|
||||
GET_USERINFO: 'GET_USERINFO'
|
||||
}
|
||||
};
|
||||
1
衣莎项目/源码/gc_nwjs/src/utils/.pydio
Normal file
@@ -0,0 +1 @@
|
||||
0feac996-cd60-4ced-a233-680f85e85da3
|
||||
27
衣莎项目/源码/gc_nwjs/src/utils/nw.js
Normal file
@@ -0,0 +1,27 @@
|
||||
/* eslint-disable */
|
||||
let win = nw.Window.get() || '';
|
||||
|
||||
export default {
|
||||
big() {
|
||||
win.toggleFullscreen();
|
||||
},
|
||||
/**
|
||||
* 打开新窗口跳转
|
||||
* @param {*} url
|
||||
* @param {*} option
|
||||
* @param {*} callback
|
||||
*/
|
||||
openWin(url, option, callback) {
|
||||
let baseUrl = window.location
|
||||
nw.Window.open(`${baseUrl.origin}${baseUrl.pathname}#${url}`, { fullscreen: true, frame: true }, () => {
|
||||
// And listen to new window's focus event
|
||||
// callback(win)
|
||||
// win.on('focus', () => {
|
||||
// win.toggleFullscreen();
|
||||
// });
|
||||
});
|
||||
},
|
||||
close() {
|
||||
win.close();
|
||||
}
|
||||
}
|
||||
101
衣莎项目/源码/gc_nwjs/src/utils/printing.js
Normal file
@@ -0,0 +1,101 @@
|
||||
var ws;
|
||||
var wsUrl = 'ws://localhost:2012';//打印后台地址与
|
||||
var isWx = true;
|
||||
function connection() {
|
||||
if ('WebSocket' in window) {
|
||||
ws = new WebSocket(wsUrl);
|
||||
}
|
||||
else if ('MozWebSocket' in window) {
|
||||
ws = new MozWebSocket(wsUrl);
|
||||
} else {
|
||||
alert('当前浏览器不支持');
|
||||
|
||||
}
|
||||
|
||||
//注册各类回调
|
||||
ws.onopen = function () {
|
||||
// alert('连接打印后台成功');
|
||||
isWx = true
|
||||
}
|
||||
|
||||
ws.onclose = function () {
|
||||
// alert('与打印后台断开连接');
|
||||
isWx = false
|
||||
}
|
||||
ws.onerror = function () {
|
||||
alert('数据传输发生错误');
|
||||
isWx = false
|
||||
}
|
||||
ws.onmessage = function (receiveMsg) {
|
||||
if (receiveMsg.data.split("|")[0] == "A_GetPrinterStatus") {
|
||||
|
||||
var ret = receiveMsg.data.split("|")[1];
|
||||
if (ret == 0) {
|
||||
document.getElementById("status").value = "无返回值";
|
||||
return;
|
||||
}
|
||||
else if (ret == 1) {
|
||||
document.getElementById("status").value = "打印机命令解析器忙碌中!";
|
||||
return;
|
||||
}
|
||||
else if (ret == 2) {
|
||||
document.getElementById("status").value = "2 纸张用完或安装错误!"; //纸张用完或安装错误!
|
||||
return;
|
||||
}
|
||||
else if (ret == 4) {
|
||||
document.getElementById("status").value = "4 碳带用完或安装错误!"; //碳带用完或安装错误!";
|
||||
return;
|
||||
}
|
||||
else if (ret == 8) {
|
||||
document.getElementById("status").value = "8 打印批次文档中!"; //打印批次文档中!";
|
||||
return;
|
||||
}
|
||||
else if (ret == 16) {
|
||||
document.getElementById("status").value = "16 正在打印文件!"; //正在打印文件!
|
||||
return;
|
||||
}
|
||||
else if (ret == 32) {
|
||||
document.getElementById("status").value = "32 打印机暂停!"; //打印机暂停!
|
||||
return;
|
||||
}
|
||||
else if (ret == 64) {
|
||||
document.getElementById("status").value = "64 正在送出标签纸!"; //正在送出标签纸!
|
||||
return;
|
||||
}
|
||||
else if (ret == 9) {
|
||||
document.getElementById("status").value = "9 打印机待机中!"; //打印机待机中!
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
function sendMessage(data) {
|
||||
//尝试向打印后台发送消息
|
||||
if (!isWx) return;
|
||||
ws.send('A_EnumUSB');
|
||||
ws.send('A_CreateUSBPort|1');
|
||||
ws.send('A_Prn_Text_TrueType|5|0|35|宋体|1|600|0|0|0|AA|' + data.code_num + '|1');
|
||||
ws.send('A_Prn_Text_TrueType|5|20|34|宋体|1|900|0|800|0|BB|' + data.shopName + '|1');
|
||||
ws.send('A_Prn_Text_TrueType|5|40|28|宋体|1|600|0|0|0|DD|' + data.username + '|1');
|
||||
ws.send('A_Prn_Text_TrueType|5|60|24|宋体|1|600|0|0|0|HH|' + data.appendix + '|1');
|
||||
ws.send('A_Prn_Text_TrueType|5|80|28|宋体|1|600|0|0|0|CC|' + data.color + ' ' + '共' + data.total_count + '件|1');
|
||||
ws.send('A_Prn_Text_TrueType|5|100|28|宋体|1|600|0|0|0|EE|' + data.name + '|1');
|
||||
ws.send('A_Prn_Text_TrueType|5|120|24|宋体|1|600|0|0|0|FF|' + data.shop_order_no + '|1');
|
||||
|
||||
ws.send('A_Prn_Barcode|110|134|2|o|2|3|60|B|1|' + data.code_num + '');
|
||||
ws.send('A_Prn_Text_TrueType|170|30|32|宋体|4|600|0|0|0|GG|' + data.telnum + '|1');
|
||||
ws.send('A_Print_Out|1|1|1|1');
|
||||
ws.send('A_ClosePrn');
|
||||
}
|
||||
|
||||
// function getStatus() {
|
||||
// ws.send('A_EnumUSB');
|
||||
// ws.send('A_CreateUSBPort|1');
|
||||
// ws.send('A_GetPrinterStatus');
|
||||
// ws.send('A_ClosePrn');
|
||||
// }
|
||||
export default {
|
||||
sendMessage: sendMessage,
|
||||
connection: connection
|
||||
}
|
||||
144
衣莎项目/源码/gc_nwjs/src/utils/utils.js
Normal file
@@ -0,0 +1,144 @@
|
||||
import config from '@/config/index';
|
||||
|
||||
export default {
|
||||
/**
|
||||
* 使用百度api,把文字转换成语音并播放
|
||||
* @param {string} str 需要转换成语音的字符串
|
||||
*/
|
||||
voiceText(str) {
|
||||
var url = "http://tsn.baidu.com/text2audio?lan=zh&ie=UTF-8&text=" + encodeURI(str);
|
||||
var audio = new Audio(url);
|
||||
audio.src = url;
|
||||
audio.play();
|
||||
},
|
||||
/**
|
||||
* 获取扫码枪扫码的内容
|
||||
* @param {Function} cell 回调函数返回扫码结果
|
||||
*/
|
||||
sweepCode(cell) {
|
||||
window.onload = function () {
|
||||
var code = "";
|
||||
var lastTime, nextTime;
|
||||
var lastCode, nextCode;
|
||||
document.onkeypress = function (e) {
|
||||
nextCode = e.which;
|
||||
nextTime = new Date().getTime();
|
||||
if (lastCode != null && lastTime != null && nextTime - lastTime <= 30) {
|
||||
code += String.fromCharCode(lastCode);
|
||||
} else if (lastCode != null && lastTime != null && nextTime - lastTime > 100) {
|
||||
code = "";
|
||||
}
|
||||
lastCode = nextCode;
|
||||
lastTime = nextTime;
|
||||
}
|
||||
this.onkeypress = function (e) {
|
||||
if (e.which == 13) {
|
||||
cell(code)
|
||||
code = "";
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 判断是字符且存在
|
||||
* @param {*} str
|
||||
*/
|
||||
isString(str) {
|
||||
if (Object.prototype.toString.call(str) !== '[object String]' && str.length <= 0) return true;
|
||||
return false
|
||||
},
|
||||
/**
|
||||
* 获取本地缓存
|
||||
* @param {string} key 需要获取缓存中的名字
|
||||
*/
|
||||
getStorage(key) {
|
||||
if (this.isString(key)) return;
|
||||
try {
|
||||
return JSON.parse(localStorage.getItem(`${config.prefix}${key}`));
|
||||
} catch (err) {
|
||||
console.error(err)
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 存储本地缓存
|
||||
* @param {string} key 需要缓存的名字
|
||||
* @param {any} value 需要set的值
|
||||
*/
|
||||
setStorage(key, value) {
|
||||
if (this.isString(key)) return;
|
||||
try {
|
||||
localStorage.setItem(key, JSON.stringify(value))
|
||||
return 'ok'
|
||||
} catch (err) {
|
||||
console.error(err)
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 获取本地缓存
|
||||
* @param {string} key 需要获取缓存中的名字
|
||||
*/
|
||||
getSession(key) {
|
||||
if (this.isString(key)) return;
|
||||
console.log(key);
|
||||
try {
|
||||
return JSON.parse(sessionStorage.getItem(`${config.prefix}${key}`));
|
||||
} catch (err) {
|
||||
console.error(err)
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 存储本地缓存
|
||||
* @param {string} key 需要缓存的名字
|
||||
* @param {any} value 需要set的值
|
||||
*/
|
||||
setSession(key, value) {
|
||||
if (this.isString(key)) return;
|
||||
try {
|
||||
localStorage.setItem(key, JSON.stringify(value))
|
||||
return 'ok'
|
||||
} catch (err) {
|
||||
console.error(err)
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 删除指定key
|
||||
* @param {string} key
|
||||
*/
|
||||
removeItemSession(key) {
|
||||
if (this.isString(key)) return;
|
||||
try {
|
||||
sessionStorage.removeItem(`${config.prefix}${key}`)
|
||||
return 'ok'
|
||||
} catch (err) {
|
||||
console.error(err)
|
||||
}
|
||||
},
|
||||
// 格式化日期,如月、日、时、分、秒保证为2位数
|
||||
formatNumber(n) {
|
||||
n = n.toString()
|
||||
return n[1] ? n : '0' + n;
|
||||
},
|
||||
/**
|
||||
* 用法formatTime(1545903266795, 'Y-M-D h:m:s')
|
||||
* @param {number} number 毫秒时间戳
|
||||
* @param {string} format 日期格式
|
||||
*/
|
||||
formatTime(number, format) {
|
||||
if (typeof number !== 'number') {
|
||||
number = parseInt(number)
|
||||
}
|
||||
let time = new Date(number)
|
||||
let newArr = []
|
||||
let formatArr = ['Y', 'M', 'D', 'h', 'm', 's']
|
||||
newArr.push(time.getFullYear())
|
||||
newArr.push(this.formatNumber(time.getMonth() + 1))
|
||||
newArr.push(this.formatNumber(time.getDate()))
|
||||
newArr.push(this.formatNumber(time.getHours()))
|
||||
newArr.push(this.formatNumber(time.getMinutes()))
|
||||
newArr.push(this.formatNumber(time.getSeconds()))
|
||||
for (let i in newArr) {
|
||||
format = format.replace(formatArr[i], newArr[i])
|
||||
}
|
||||
return format;
|
||||
}
|
||||
}
|
||||
1
衣莎项目/源码/gc_nwjs/src/views/.pydio
Normal file
@@ -0,0 +1 @@
|
||||
29a202df-9102-4462-a3e3-e18196dbbd26
|
||||
159
衣莎项目/源码/gc_nwjs/src/views/CompensationManagement.vue
Normal file
@@ -0,0 +1,159 @@
|
||||
<template>
|
||||
<div class="compensation">
|
||||
<navbar title="补款管理"></navbar>
|
||||
<div class="flex1 workload flex-column h100">
|
||||
<div class="mt10">
|
||||
<el-card class="box-card">
|
||||
<div>
|
||||
<div class="inblock">
|
||||
<span class="demonstration">
|
||||
订单号 :
|
||||
<el-input v-model="from.order_no" placeholder="条形码输入" @keyup.enter.native='queryList'></el-input>
|
||||
</span>
|
||||
</div>
|
||||
<!--门店选择-->
|
||||
<div class="inblock time">
|
||||
<el-select v-model="from.shop_id" @change="shopidChage" placeholder="--请选择门店--">
|
||||
<el-option
|
||||
v-for="(item,index) in allShop"
|
||||
:key="index"
|
||||
:label="item.name"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
|
||||
<!--订单选择-->
|
||||
<div class="inblock time">
|
||||
<el-select v-model="from.is_online" @change="shopidChage" placeholder="--请选择订单类型--">
|
||||
<el-option
|
||||
label="门店"
|
||||
value="1">
|
||||
</el-option>
|
||||
<el-option
|
||||
label="线上"
|
||||
value="2">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
|
||||
<!--订单选择-->
|
||||
<div class="inblock time">
|
||||
<el-select v-model="from.status" @change="shopidChage" placeholder="--请选择订单状态--">
|
||||
<el-option
|
||||
label="待补款"
|
||||
value="1">
|
||||
</el-option>
|
||||
<el-option
|
||||
label="已补款"
|
||||
value="2">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
|
||||
<!--开始结束时间-->
|
||||
<div class="inblock time">
|
||||
开始/结束时间:
|
||||
<el-date-picker
|
||||
v-model="time"
|
||||
@change="DateChange"
|
||||
type="daterange"
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
value-format="yyyy-MM-dd"
|
||||
></el-date-picker>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</el-card>
|
||||
</div>
|
||||
|
||||
<div class="flex1 mt10">
|
||||
<el-table
|
||||
:data="tableData"
|
||||
border
|
||||
style="width: 100%"
|
||||
:height="tableHeight"
|
||||
:row-class-name="tableRowClassName">
|
||||
<el-table-column prop="startTime" label="订单号" sortable></el-table-column>
|
||||
<el-table-column prop="endTime" label="添加补款员工" sortable></el-table-column>
|
||||
<el-table-column prop="factory_member_name" label="补款金额"></el-table-column>
|
||||
<el-table-column prop="factory_position_id" label="实际补款金额"></el-table-column>
|
||||
<el-table-column prop="factory_position_id" label="补款原因"></el-table-column>
|
||||
<el-table-column prop="factory_position_id" label="用户姓名"></el-table-column>
|
||||
<el-table-column prop="factory_position_id" label="电话"></el-table-column>
|
||||
<el-table-column prop="factory_position_id" label="添加时间"></el-table-column>
|
||||
<el-table-column prop="factory_position_id" label="补款时间"></el-table-column>
|
||||
<el-table-column prop="totalCount" label="所属门店"></el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import header from '@/components/header'
|
||||
export default {
|
||||
components: {
|
||||
navbar: header
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
tableHeight: window.innerHeight - 200,
|
||||
allShop: {},
|
||||
tableData: [],
|
||||
time: [new Date(), new Date()],
|
||||
from: {
|
||||
token: JSON.parse(localStorage.getItem("userInfo")).token,
|
||||
shop_id: '',
|
||||
status: '',
|
||||
is_online: '',
|
||||
order_no: '',
|
||||
start_time: '',
|
||||
end_time: ''
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.time[0] = this.$utils.formatTime(new Date().getTime(), 'Y-M-D');
|
||||
this.time[1] = this.$utils.formatTime(new Date().getTime(), 'Y-M-D');
|
||||
this.getAllShop()
|
||||
},
|
||||
methods: {
|
||||
tableRowClassName({ rowIndex }) {
|
||||
if (rowIndex % 2 == 0) {
|
||||
return 'warning-row';
|
||||
}
|
||||
return '';
|
||||
},
|
||||
async queryList() {
|
||||
this.from.start_time = this.time[0];
|
||||
this.from.end_time = this.time[1];
|
||||
this.tableData = (await this.$http.extraList(this.from)).data.data.data;
|
||||
console.log("this.tableData ------: ", this.tableData)
|
||||
},
|
||||
shopidChage() {
|
||||
this.queryList();
|
||||
},
|
||||
// 时间被选择的时候,发送ajax
|
||||
DateChange() {
|
||||
this.queryList();
|
||||
},
|
||||
async getAllShop() {
|
||||
this.allShop = (await this.$http.allShop()).data.data;
|
||||
console.log(" allShop: ", this.allShop)
|
||||
}
|
||||
},
|
||||
name: "ReworkManagement"
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
.el-input {
|
||||
width: auto !important;
|
||||
}
|
||||
.time {
|
||||
margin-left: 40px;
|
||||
}
|
||||
</style>
|
||||
129
衣莎项目/源码/gc_nwjs/src/views/ReworkManagement.vue
Normal file
@@ -0,0 +1,129 @@
|
||||
<template>
|
||||
<div class="rework">
|
||||
<navbar title="返工管理"></navbar>
|
||||
<div class="flex1 workload flex-column h100">
|
||||
<div class="mt10">
|
||||
<el-card class="box-card">
|
||||
<div>
|
||||
<div class="inblock">
|
||||
<span class="demonstration">
|
||||
条形码 :
|
||||
<el-input v-model="from.barCode" placeholder="条形码输入" @keyup.enter.native='queryList'></el-input>
|
||||
</span>
|
||||
|
||||
</div>
|
||||
<div class="inblock time">
|
||||
统计日期:
|
||||
<el-date-picker
|
||||
v-model="time"
|
||||
@change="DateChange"
|
||||
type="daterange"
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
value-format="yyyy-MM-dd"
|
||||
></el-date-picker>
|
||||
</div>
|
||||
<div class="inblock time">
|
||||
<el-radio-group @change="radioChange" v-model="from.return_status">
|
||||
<el-radio label="2" checked>我发布的</el-radio>
|
||||
<el-radio label="1">我的返工</el-radio>
|
||||
</el-radio-group>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</el-card>
|
||||
</div>
|
||||
<div class="flex1 mt10">
|
||||
<el-table
|
||||
:data="tableData"
|
||||
border
|
||||
style="width: 100%"
|
||||
:height="tableHeight"
|
||||
:row-class-name="tableRowClassName"
|
||||
>
|
||||
<el-table-column prop="find_member" label="发现员工" sortable></el-table-column>
|
||||
<el-table-column prop="return_member" label="返工员工"></el-table-column>
|
||||
<el-table-column prop="return_position" label="返工岗位"></el-table-column>
|
||||
<el-table-column prop="remarks" label="返工原因"></el-table-column>
|
||||
<el-table-column prop="code_num" label="条形码"></el-table-column>
|
||||
<el-table-column prop="create_time" label="返工时间"></el-table-column>
|
||||
<el-table-column prop="factory_position_id" label="操作">
|
||||
<template slot-scope="scope">
|
||||
<el-button type="text" @click="AcknowledgeReceipt(scope.row)" size="small">确认接收</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import header from '@/components/header'
|
||||
export default {
|
||||
components: {
|
||||
navbar: header
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
tableHeight: window.innerHeight - 200,
|
||||
time: [new Date(), new Date()],
|
||||
tableData: [],
|
||||
from: {
|
||||
limit: 10,
|
||||
barCode: "",
|
||||
start_time: '',
|
||||
end_time: '',
|
||||
return_status: "2",
|
||||
token: JSON.parse(localStorage.getItem("userInfo")).token
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.time[0] = this.$utils.formatTime(new Date().getTime(), 'Y-M-D')
|
||||
this.time[1] = this.$utils.formatTime(new Date().getTime(), 'Y-M-D')
|
||||
},
|
||||
methods: {
|
||||
// 接收返工
|
||||
async AcknowledgeReceipt(row){
|
||||
console.log("ROW: ", row)
|
||||
let list = await this.$http.sureAccept({
|
||||
token: JSON.parse(localStorage.getItem("userInfo")).token,
|
||||
id: row.id
|
||||
});
|
||||
console.log("list: ", list)
|
||||
},
|
||||
tableRowClassName({ rowIndex }) {
|
||||
if (rowIndex % 2 == 0) {
|
||||
return 'warning-row';
|
||||
}
|
||||
return '';
|
||||
},
|
||||
async queryList() {
|
||||
this.from.start_time = this.time[0];
|
||||
this.from.end_time = this.time[1];
|
||||
this.tableData = (await this.$http.returnList(this.from)).data.data.data;
|
||||
console.log("this.tableData ------: ", this.tableData)
|
||||
},
|
||||
// 时间被选择的时候,发送ajax
|
||||
DateChange() {
|
||||
this.queryList();
|
||||
},
|
||||
// 单选被选择时候,发送ajax
|
||||
radioChange() {
|
||||
this.queryList();
|
||||
}
|
||||
},
|
||||
name: "ReworkManagement"
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
.el-input {
|
||||
width: auto !important;
|
||||
}
|
||||
.time {
|
||||
margin-left: 40px;
|
||||
}
|
||||
</style>
|
||||
131
衣莎项目/源码/gc_nwjs/src/views/Statistics.vue
Normal file
@@ -0,0 +1,131 @@
|
||||
<template>
|
||||
<div class="Statistics">
|
||||
<navbar title="收衣统计"></navbar>
|
||||
|
||||
<!--门店类型营业额统计-->
|
||||
<div class="flex1 workload flex-column h100">
|
||||
<!--顶部选项-->
|
||||
<el-card class="box-card">
|
||||
<!--门店选择-->
|
||||
<span>请选择门店:</span>
|
||||
<div class="inblock m-left time">
|
||||
<el-select v-model="StoreSingleData.shop_id" @change="StoreSingleChange" placeholder="--请选择门店--">
|
||||
<el-option
|
||||
v-for="(item,index) in allShop"
|
||||
:key="index"
|
||||
:label="item.name"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
</el-card>
|
||||
|
||||
<!--数据展示-->
|
||||
<div class="flex1 mt10">
|
||||
<el-table
|
||||
:data="StoreSingleListData.list"
|
||||
border
|
||||
style="width: 100%"
|
||||
:height="tableHeight"
|
||||
:row-class-name="tableRowClassName">
|
||||
<el-table-column prop="name" label="门店名称" sortable></el-table-column>
|
||||
<el-table-column prop="totalCount" label="收衣件数"></el-table-column>
|
||||
<el-table-column prop="startTime" label="开始时间" sortable></el-table-column>
|
||||
<el-table-column prop="endTime" label="结束时间"></el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
|
||||
<el-card v-if="isShowPagination" class="box-card1">
|
||||
<div>
|
||||
<el-pagination
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
:current-page.sync="StoreSingleData.page"
|
||||
:page-size.sync="StoreSingleData.limit"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="StoreSingleListData.info.count"
|
||||
background
|
||||
></el-pagination>
|
||||
</div>
|
||||
</el-card>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import header from '@/components/header'
|
||||
|
||||
export default {
|
||||
components: {
|
||||
navbar: header
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
// 保存所有门店数据
|
||||
allShop: [],
|
||||
isShowPagination: false,
|
||||
tableHeight: window.innerHeight - 200,
|
||||
StoreSingleListData: [],
|
||||
StoreSingleData: {
|
||||
shop_id: '',
|
||||
page: 1,
|
||||
limit: 10
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getAllShop()
|
||||
this.StoreSingleGetData()
|
||||
},
|
||||
methods: {
|
||||
// 分页大小变化
|
||||
handleSizeChange(val) {
|
||||
console.log("分页大小变化: ", val)
|
||||
this.StoreSingleData.limit = val;
|
||||
this.StoreSingleChange()
|
||||
},
|
||||
|
||||
// 当前页变化
|
||||
handleCurrentChange(val) {
|
||||
console.log("当前页变化: ", val)
|
||||
this.StoreSingleData.page = val;
|
||||
this.StoreSingleChange()
|
||||
},
|
||||
|
||||
// 下拉地址选择的时候
|
||||
StoreSingleChange(item) {
|
||||
this.StoreSingleGetData()
|
||||
},
|
||||
|
||||
/**
|
||||
* 请求单个门店营业额 发送请求
|
||||
* @constructor
|
||||
*/
|
||||
async StoreSingleGetData() {
|
||||
this.StoreSingleListData = await (await this.$http.shopClothCount(this.StoreSingleData)).data.data
|
||||
if (this.StoreSingleListData.list.length !== 0) {
|
||||
this.isShowPagination = true
|
||||
} else {
|
||||
this.isShowPagination = false
|
||||
}
|
||||
},
|
||||
|
||||
// 获取所有门店数据
|
||||
async getAllShop() {
|
||||
this.allShop = (await this.$http.allShop()).data.data;
|
||||
},
|
||||
tableRowClassName({ rowIndex }) {
|
||||
if (rowIndex % 2 == 0) {
|
||||
return 'warning-row';
|
||||
}
|
||||
return '';
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
|
||||
</style>
|
||||
228
衣莎项目/源码/gc_nwjs/src/views/StoreTurnover.vue
Normal file
@@ -0,0 +1,228 @@
|
||||
<template>
|
||||
<div class="StoreTurnover">
|
||||
<navbar title="营业额管理"></navbar>
|
||||
|
||||
<!--门店类型营业额统计-->
|
||||
<div class="flex1 workload flex-column h100">
|
||||
<!--顶部选项-->
|
||||
<div class="mt10">
|
||||
<el-card class="box-card">
|
||||
<div>
|
||||
<!--开始时间-->
|
||||
<div class="inblock time">
|
||||
开始/结束时间:
|
||||
<el-date-picker
|
||||
v-model="StoreTypeTime"
|
||||
@change="StoreTypeTimeChange"
|
||||
type="daterange"
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
value-format="yyyy-MM-dd">
|
||||
</el-date-picker>
|
||||
</div>
|
||||
</div>
|
||||
</el-card>
|
||||
</div>
|
||||
<!--数据展示-->
|
||||
<div class="flex1 mt10">
|
||||
<el-row type="flex" :gutter="30" justify="center">
|
||||
<el-col :span="7" class="item-l" v-for="(item,index) in StoreTypeListData" :key="index">
|
||||
<h2>{{item.totalMoney}}</h2>
|
||||
<p>{{item.name}}</p>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<br><br>
|
||||
|
||||
<!--单个门店营业额查询-->
|
||||
<div class="flex1 workload flex-column h100">
|
||||
<!--顶部选项-->
|
||||
<div class="mt10">
|
||||
<el-card class="box-card">
|
||||
<div>
|
||||
|
||||
<!--开始时间-->
|
||||
<div class="inblock time">
|
||||
开始/结束时间:
|
||||
<el-date-picker
|
||||
v-model="StoreSingleTime"
|
||||
@change="StoreSingleChange"
|
||||
type="daterange"
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
value-format="yyyy-MM-dd">
|
||||
</el-date-picker>
|
||||
</div>
|
||||
|
||||
<!--门店选择-->
|
||||
<div class="inblock m-left time">
|
||||
<el-select v-model="StoreSingleData.shop_id" @change="StoreSingleChange" placeholder="--请选择门店--">
|
||||
<el-option
|
||||
v-for="(item,index) in allShop"
|
||||
:key="index"
|
||||
:label="item.name"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</el-card>
|
||||
<el-card v-if="StoreSingleListData.length != 0" class="box-card1">
|
||||
<div>
|
||||
<el-pagination
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
:current-page="page"
|
||||
:page-sizes="[20, 30, 40, 50]"
|
||||
:page-size="limit"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="StoreSingleListData.info.count"
|
||||
background
|
||||
></el-pagination>
|
||||
</div>
|
||||
</el-card>
|
||||
</div>
|
||||
<!--数据展示-->
|
||||
<div class="flex1 mt10">
|
||||
<el-table
|
||||
:data="StoreSingleListData.list"
|
||||
border
|
||||
style="width: 100%"
|
||||
:height="tableHeight"
|
||||
:row-class-name="tableRowClassName">
|
||||
<el-table-column prop="name" label="门店名称" sortable></el-table-column>
|
||||
<el-table-column prop="totalMoney" label="营业额" sortable></el-table-column>
|
||||
<el-table-column prop="startTime" label="开始时间"></el-table-column>
|
||||
<el-table-column prop="endTime" label="结束时间"></el-table-column>
|
||||
</el-table>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import header from '@/components/header'
|
||||
export default {
|
||||
components: {
|
||||
navbar: header
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
page: 1,
|
||||
limit: 20,
|
||||
tableHeight: window.innerHeight - 200,
|
||||
StoreTypeTime: [new Date(), new Date()], // 门店类型营业额
|
||||
StoreSingleTime: [new Date(), new Date()], // 单个门店营业额
|
||||
allShop: {},
|
||||
StoreSingleListData: [],
|
||||
// 单个门店营业额的数据
|
||||
StoreSingleData: {
|
||||
page: 1,
|
||||
limit: 20,
|
||||
shop_id: '',
|
||||
startTime: '',
|
||||
endTime: ''
|
||||
},
|
||||
// 门店类型营业额统计
|
||||
StoreTypeListData: [],
|
||||
StoreTypeData: {
|
||||
token: JSON.parse(localStorage.getItem("userInfo")).token,
|
||||
startTime: '',
|
||||
endTime: ''
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.StoreTypeTime[0] = this.$utils.formatTime(new Date().getTime(), 'Y-M-D');
|
||||
this.StoreTypeTime[1] = this.$utils.formatTime(new Date().getTime(), 'Y-M-D');
|
||||
|
||||
this.StoreSingleTime[0] = this.$utils.formatTime(new Date().getTime(), 'Y-M-D');
|
||||
this.StoreSingleTime[1] = this.$utils.formatTime(new Date().getTime(), 'Y-M-D');
|
||||
this.getAllShop();
|
||||
},
|
||||
methods: {
|
||||
// 分页大小变化
|
||||
handleSizeChange(val) {
|
||||
console.log("分页大小变化: ", val)
|
||||
this.StoreSingleData.limit = val;
|
||||
this.StoreSingleChange()
|
||||
},
|
||||
|
||||
// 当前页变化
|
||||
handleCurrentChange(val) {
|
||||
console.log("当前页变化: ", val)
|
||||
this.StoreSingleData.page = val;
|
||||
this.StoreSingleChange()
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* 请求单个门店营业额 发送请求
|
||||
* @constructor
|
||||
*/
|
||||
async StoreSingleGetData() {
|
||||
this.StoreSingleListData = await (await this.$http.shopMoney(this.StoreSingleData)).data.data
|
||||
console.log("this.StoreSingleListData: ", this.StoreSingleListData)
|
||||
},
|
||||
// 单个门店营业额 的 门店选择 和 时间选择发生改变的时候
|
||||
StoreSingleChange() {
|
||||
this.StoreSingleData.startTime = this.StoreSingleTime[0];
|
||||
this.StoreSingleData.endTime = this.StoreSingleTime[1];
|
||||
console.log("this.StoreSingleData: ", this.StoreSingleData)
|
||||
this.StoreSingleGetData()
|
||||
},
|
||||
|
||||
/**
|
||||
* 门店类型营业额统计 发送请求
|
||||
* @returns {Promise<void>}
|
||||
* @constructor
|
||||
*/
|
||||
async StoreTypeGetData() {
|
||||
this.StoreTypeListData = await (await this.$http.shopTypeMoney(this.StoreTypeData)).data.data
|
||||
console.log("this.StoreTypeListData: ", this.StoreTypeListData)
|
||||
},
|
||||
|
||||
// 门店类型营业额统计 时间选择发生改变的时候
|
||||
StoreTypeTimeChange() {
|
||||
console.log("时间选择发生变化")
|
||||
this.StoreTypeData.startTime = this.StoreTypeTime[0];
|
||||
this.StoreTypeData.endTime = this.StoreTypeTime[1];
|
||||
this.StoreTypeGetData()
|
||||
|
||||
},
|
||||
// 获取所有门店数据
|
||||
async getAllShop() {
|
||||
this.allShop = (await this.$http.allShop()).data.data;
|
||||
},
|
||||
tableRowClassName({ rowIndex }) {
|
||||
if (rowIndex % 2 == 0) {
|
||||
return 'warning-row';
|
||||
}
|
||||
return '';
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
.m-left {
|
||||
margin-left: 20px;
|
||||
}
|
||||
.item-l {
|
||||
background: #06b84f;
|
||||
color: #fff;
|
||||
margin-bottom: 15px;
|
||||
padding: 40px 0;
|
||||
margin-left: 10px;
|
||||
text-align: center;
|
||||
}
|
||||
</style>
|
||||
160
衣莎项目/源码/gc_nwjs/src/views/checkClothCount.vue
Normal file
@@ -0,0 +1,160 @@
|
||||
<template>
|
||||
<div class="checkClothCount">
|
||||
<navbar title="总检查询"></navbar>
|
||||
<div class="flex1 workload flex-column h100">
|
||||
<!--顶部选项-->
|
||||
|
||||
<el-card class="box-card">
|
||||
|
||||
<div class="inblock">
|
||||
<!--门店选择-->
|
||||
<span>请选择门店:</span>
|
||||
<div class="inblock m-left time">
|
||||
<el-select v-model="StoreSingleData.shop_id" @change="StoreSingleChange" placeholder="--请选择门店--">
|
||||
<el-option
|
||||
v-for="(item,index) in allShop"
|
||||
:key="index"
|
||||
:label="item.name"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="inblock time">
|
||||
统计日期:
|
||||
<el-date-picker
|
||||
v-model="time"
|
||||
@change="DateChange"
|
||||
type="daterange"
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
value-format="yyyy-MM-dd"
|
||||
></el-date-picker>
|
||||
</div>
|
||||
</el-card>
|
||||
|
||||
<div class="flex1 mt10">
|
||||
<el-table
|
||||
:data="StoreSingleListData.list"
|
||||
border
|
||||
style="width: 100%"
|
||||
:height="tableHeight"
|
||||
:row-class-name="tableRowClassName">
|
||||
<el-table-column prop="mall_product_name" label="名称" sortable></el-table-column>
|
||||
<el-table-column prop="shopName" label="门店" sortable></el-table-column>
|
||||
<el-table-column prop="code_num" label="条形码"></el-table-column>
|
||||
<el-table-column prop="create_time" label="时间"></el-table-column>
|
||||
<el-table-column prop="cloth_status" label="状态"></el-table-column>
|
||||
|
||||
</el-table>
|
||||
</div>
|
||||
|
||||
<el-card v-if="isShowPagination" class="box-card1">
|
||||
<div>
|
||||
<el-pagination
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
:current-page.sync="StoreSingleData.page"
|
||||
:page-size.sync="StoreSingleData.limit"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="StoreSingleListData.info.count"
|
||||
background
|
||||
></el-pagination>
|
||||
</div>
|
||||
</el-card>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import header from '@/components/header'
|
||||
|
||||
export default {
|
||||
components: {
|
||||
navbar: header
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
time: [new Date(), new Date()],
|
||||
tableHeight: window.innerHeight - 200,
|
||||
allShop: [],
|
||||
StoreSingleListData: [],
|
||||
isShowPagination: false,
|
||||
StoreSingleData: {
|
||||
shop_id: '',
|
||||
startTime: '',
|
||||
endTime: '',
|
||||
page: 1,
|
||||
limit: 10
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.time[0] = this.$utils.formatTime(new Date().getTime(), 'Y-M-D');
|
||||
this.time[1] = this.$utils.formatTime(new Date().getTime(), 'Y-M-D');
|
||||
|
||||
this.getAllShop();
|
||||
},
|
||||
methods: {
|
||||
// 分页大小变化
|
||||
handleSizeChange(val) {
|
||||
this.StoreSingleData.limit = val;
|
||||
this.StoreSingleChange()
|
||||
},
|
||||
|
||||
// 当前页变化
|
||||
handleCurrentChange(val) {
|
||||
console.log("当前页变化: ", val)
|
||||
this.StoreSingleData.page = val;
|
||||
this.StoreSingleChange()
|
||||
},
|
||||
|
||||
// 下拉地址选择的时候
|
||||
StoreSingleChange() {
|
||||
console.log("StoreSingleData.shop_id: ", this.StoreSingleData.shop_id)
|
||||
this.StoreSingleData.startTime = this.time[0]
|
||||
this.StoreSingleData.endTime = this.time[1]
|
||||
this.StoreSingleGetData()
|
||||
},
|
||||
// 时间选择的时候
|
||||
DateChange() {
|
||||
this.StoreSingleData.startTime = this.time[0]
|
||||
this.StoreSingleData.endTime = this.time[1]
|
||||
this.StoreSingleGetData()
|
||||
},
|
||||
getAllShop() {},
|
||||
// 获取所有门店数据
|
||||
async getAllShop() {
|
||||
this.allShop = (await this.$http.allShop()).data.data;
|
||||
},
|
||||
/**
|
||||
* 请求单个门店工厂总检数据查询
|
||||
*/
|
||||
async StoreSingleGetData() {
|
||||
this.StoreSingleListData = await (await this.$http.checkClothCount(this.StoreSingleData)).data.data
|
||||
console.log("this.StoreSingleListData: ", this.StoreSingleListData)
|
||||
if (this.StoreSingleListData.list.length !== 0) {
|
||||
this.isShowPagination = true
|
||||
} else {
|
||||
this.isShowPagination = false
|
||||
}
|
||||
},
|
||||
tableRowClassName({ rowIndex }) {
|
||||
if (rowIndex % 2 == 0) {
|
||||
return 'warning-row';
|
||||
}
|
||||
return '';
|
||||
}
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.time {
|
||||
margin-left: 30px;
|
||||
}
|
||||
</style>
|
||||
263
衣莎项目/源码/gc_nwjs/src/views/clothingInquiries.vue
Normal file
@@ -0,0 +1,263 @@
|
||||
<template>
|
||||
<div class="flex-column h100">
|
||||
<navbar title="衣物查询"></navbar>
|
||||
<div class="clothingInquiries flex1 flex-column h100">
|
||||
<div>
|
||||
<el-tabs v-model="activeName" @tab-click="handleClick">
|
||||
<el-tab-pane label="衣物操作" name="first">
|
||||
<div class="inblock">
|
||||
<span>衣物编号或订单 :</span>
|
||||
<el-input
|
||||
class="mr10 ml10"
|
||||
v-model="order"
|
||||
placeholder="请输入内容"
|
||||
@keyup.enter.native="queryOrder()"
|
||||
></el-input>
|
||||
<el-button type="primary" @click="queryOrder">查询</el-button>
|
||||
<el-button type="primary">打印</el-button>
|
||||
</div>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</div>
|
||||
<div class="mt10">
|
||||
<el-card class="box-card Exhibition">
|
||||
<div slot="header" class="clearfix">
|
||||
<span>订单详情</span>
|
||||
</div>
|
||||
<div class="body_content">
|
||||
<span>
|
||||
<i>订单编号:</i>
|
||||
{{orderInfo.shop_order_no}}
|
||||
</span>
|
||||
<span>
|
||||
<i>订单金额:</i>
|
||||
{{orderInfo.order_total_price}}元
|
||||
</span>
|
||||
<span>
|
||||
<i>实收金额:</i>
|
||||
{{orderInfo.total_price}}元
|
||||
</span>
|
||||
<br />
|
||||
<span>
|
||||
<i>收衣门店:</i>
|
||||
{{orderInfo.shopName}}
|
||||
</span>
|
||||
<span>
|
||||
<i>店员姓名:</i>
|
||||
{{orderInfo.name}}
|
||||
</span>
|
||||
<span>
|
||||
<i>联系电话:</i>
|
||||
{{orderInfo.mobile}}
|
||||
</span>
|
||||
<span>
|
||||
<i>详细地址:</i>
|
||||
{{orderInfo.user_address}}
|
||||
</span>
|
||||
<br />
|
||||
<span>
|
||||
<i>客户姓名:</i>
|
||||
{{orderInfo.username}}
|
||||
</span>
|
||||
<span>
|
||||
<i>联系电话:</i>
|
||||
{{orderInfo.telnum}}
|
||||
</span>
|
||||
<span>
|
||||
<i>衣服件数:</i>
|
||||
{{orderInfo.total_count}}件
|
||||
</span>
|
||||
<span>
|
||||
<i>收衣时间:</i>
|
||||
{{orderInfo.create_time}}
|
||||
</span>
|
||||
</div>
|
||||
</el-card>
|
||||
</div>
|
||||
<div class="flex1 mt10 flex-column h100">
|
||||
<div class="flex1">
|
||||
<el-card class="box-card">
|
||||
<div slot="header" class="clearfix">
|
||||
<span>衣物信息</span>
|
||||
</div>
|
||||
<div>
|
||||
<el-table
|
||||
:height="250"
|
||||
:data="orderInfo.cloth"
|
||||
border
|
||||
style="width: 100%"
|
||||
:row-class-name="tableRowClassName"
|
||||
@cell-dblclick="tableDbEdit"
|
||||
>
|
||||
<el-table-column prop="shop_order_no" label="订单号" sortable></el-table-column>
|
||||
<el-table-column prop="code_num" label="条形码"></el-table-column>
|
||||
<el-table-column prop="name" label="衣物名称"></el-table-column>
|
||||
<el-table-column prop="brand" label="品牌"></el-table-column>
|
||||
<el-table-column prop="color" label="颜色"></el-table-column>
|
||||
<el-table-column prop="cloth_wg" label="网格"></el-table-column>
|
||||
<el-table-column prop="price" label="价格"></el-table-column>
|
||||
<el-table-column prop="wash_remark" label="洗涤方式、附加服务、附加费"></el-table-column>
|
||||
<el-table-column prop="remark" label="备注"></el-table-column>
|
||||
<el-table-column prop="appendix" label="附件"></el-table-column>
|
||||
<el-table-column prop="cloth_status" label="衣物状态"></el-table-column>
|
||||
<el-table-column prop="hang_num" label="挂衣点"></el-table-column>
|
||||
<el-table-column prop="is_return" label="返洗"></el-table-column>
|
||||
<el-table-column prop="create_time" label="时间" sortable></el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</el-card>
|
||||
</div>
|
||||
<div class="flex1 flex mt10">
|
||||
<div class="flex1">
|
||||
<el-card class="box-card">
|
||||
<div slot="header" class="clearfix">
|
||||
<span>资金记录</span>
|
||||
</div>
|
||||
<div>
|
||||
<el-table
|
||||
:height="250"
|
||||
:data="orderInfo.moneyInfo"
|
||||
border
|
||||
style="width: 100%"
|
||||
:row-class-name="tableRowClassName"
|
||||
>
|
||||
<el-table-column prop="money" label="交易金额" width="180"></el-table-column>
|
||||
<el-table-column prop="pay_type" label="支付方式" width="180"></el-table-column>
|
||||
<el-table-column prop="scen" label="交易类型"></el-table-column>
|
||||
<el-table-column prop="remark" label="备注"></el-table-column>
|
||||
<el-table-column prop="create_time" label="时间" sortable></el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</el-card>
|
||||
</div>
|
||||
<div class="flex1 ml10">
|
||||
<el-card class="box-card">
|
||||
<div slot="header" class="clearfix">
|
||||
<span>工厂操作记录</span>
|
||||
</div>
|
||||
<div>
|
||||
<el-table
|
||||
:height="250"
|
||||
:data="orderInfo.factoryRecord"
|
||||
border
|
||||
style="width: 100%"
|
||||
:row-class-name="tableRowClassName"
|
||||
>
|
||||
<el-table-column prop="code_num" label="条形码" width="180"></el-table-column>
|
||||
<el-table-column prop="factory_position_id" label="工序" width="180"></el-table-column>
|
||||
<el-table-column prop="factory_member_name" label="员工"></el-table-column>
|
||||
<el-table-column prop="create_time" label="操作时间" sortable></el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</el-card>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex1 flex mt10 mb30">
|
||||
<div class="flex1">
|
||||
<el-card class="box-card">
|
||||
<div slot="header" class="clearfix">
|
||||
<span>门店操作</span>
|
||||
</div>
|
||||
<div>
|
||||
<el-table
|
||||
:height="250"
|
||||
:data="orderInfo.shopRecord"
|
||||
border
|
||||
style="width: 100%"
|
||||
:row-class-name="tableRowClassName"
|
||||
>
|
||||
<el-table-column prop="code_num" label="条形码" width="180"></el-table-column>
|
||||
<el-table-column prop="factory_position_id" label="状态" width="180"></el-table-column>
|
||||
<el-table-column prop="remark" label="备注信息"></el-table-column>
|
||||
<el-table-column prop="shopName" label="门店"></el-table-column>
|
||||
<el-table-column prop="create_time" label="时间" sortable></el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</el-card>
|
||||
</div>
|
||||
<div class="flex1 ml10">
|
||||
<el-card class="box-card">
|
||||
<div slot="header" class="clearfix">
|
||||
<span>误扫码操作记录</span>
|
||||
</div>
|
||||
<div>
|
||||
<el-table
|
||||
:height="250"
|
||||
:data="tableData"
|
||||
border
|
||||
style="width: 100%"
|
||||
:row-class-name="tableRowClassName"
|
||||
>
|
||||
<el-table-column prop="date" label="条形码" width="180"></el-table-column>
|
||||
<el-table-column prop="name" label="工序" width="180"></el-table-column>
|
||||
<el-table-column prop="address" label="员工"></el-table-column>
|
||||
<el-table-column prop="address" label="门店"></el-table-column>
|
||||
<el-table-column prop="date" label="操作时间" sortable></el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</el-card>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import header from '@/components/header'
|
||||
export default {
|
||||
components: {
|
||||
navbar: header
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
activeName: 'first',
|
||||
order: '',
|
||||
orderInfo: {
|
||||
cloth: [],
|
||||
moneyInfo: [],
|
||||
factoryRecord: [],
|
||||
shopRecord: []
|
||||
},
|
||||
tableData: []
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async tableDbEdit(row) {
|
||||
if (row['code_num']) {
|
||||
let res = await this.$http.orderAbout(row['code_num'])
|
||||
this.orderInfo.factoryRecord = res.data.data.factory_record
|
||||
this.orderInfo.shopRecord = res.data.data.shop_record
|
||||
}
|
||||
},
|
||||
handleClick(tab, event) {
|
||||
console.log(tab, event);
|
||||
},
|
||||
tableRowClassName({ rowIndex }) {
|
||||
if (rowIndex % 2 == 0) {
|
||||
return 'warning-row';
|
||||
}
|
||||
return '';
|
||||
},
|
||||
async queryOrder() {
|
||||
let res = await this.$http.queryOrder(this.order)
|
||||
this.orderInfo = res.data.data
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
.clothingInquiries {
|
||||
margin: 0 10px;
|
||||
.el-input {
|
||||
width: auto;
|
||||
}
|
||||
}
|
||||
.clearfix:before,
|
||||
.clearfix:after {
|
||||
display: table;
|
||||
content: "";
|
||||
}
|
||||
.clearfix:after {
|
||||
clear: both;
|
||||
}
|
||||
</style>
|
||||
67
衣莎项目/源码/gc_nwjs/src/views/dropMark.vue
Normal file
@@ -0,0 +1,67 @@
|
||||
<template>
|
||||
<div class="flex-column h100">
|
||||
<navbar title="掉标管理"></navbar>
|
||||
<div class="dropMark flex1 flex-column h100">
|
||||
<el-tabs v-model="activeName" @tab-click="handleClick" class="flex1 flex-column h100">
|
||||
<el-tab-pane label="掉标衣物查看" name="first" class="flex1">
|
||||
<dropCheck></dropCheck>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="掉标衣物匹配" name="second">
|
||||
<dropMatching></dropMatching>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import header from '@/components/header';
|
||||
import dropCheck from '@/components/dropCheck';
|
||||
import dropMatching from '@/components/dropMatching';
|
||||
export default {
|
||||
components: {
|
||||
navbar: header,
|
||||
dropCheck: dropCheck,
|
||||
dropMatching: dropMatching
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
activeName: 'first'
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handleSizeChange(val) {
|
||||
console.log(`每页 ${val} 条`);
|
||||
},
|
||||
handleCurrentChange(val) {
|
||||
console.log(`当前页: ${val}`);
|
||||
},
|
||||
handleClick(tab, event) {
|
||||
console.log(tab, event);
|
||||
},
|
||||
tableRowClassName({ rowIndex }) {
|
||||
if (rowIndex % 2 == 0) {
|
||||
return 'warning-row';
|
||||
}
|
||||
return '';
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
@import "../assets/less/view/dropMark.less";
|
||||
</style>
|
||||
<style lang="less">
|
||||
.dropMark {
|
||||
.el-card__body {
|
||||
overflow-y: scroll;
|
||||
}
|
||||
.el-tabs__content {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
.el-tab-pane {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
469
衣莎项目/源码/gc_nwjs/src/views/enterFactory.vue
Normal file
@@ -0,0 +1,469 @@
|
||||
<template>
|
||||
<div class="flex-column h100">
|
||||
<navbar :title="title"></navbar>
|
||||
<div class="enterFactory flex1 flex-column">
|
||||
<el-card class="box-card mt10">
|
||||
<div class="inblock">
|
||||
<span class="demonstration">条形码 :</span>
|
||||
<el-input v-model="barCode" placeholder="条形码输入" @keyup.enter.native="_query" :autofocus="true"></el-input>
|
||||
<span class="ml10">
|
||||
<el-button type="primary" @click="_query()">查询</el-button>
|
||||
</span>
|
||||
<span class="ml10">
|
||||
<el-button type="primary" @click="print">打印</el-button>
|
||||
</span>
|
||||
<span class="ml10">
|
||||
<el-button type="primary" @click="openRework">返工</el-button>
|
||||
</span>
|
||||
<span class="ml10">
|
||||
<el-button type="primary" @click="openSupplement">补款</el-button>
|
||||
</span>
|
||||
</div>
|
||||
</el-card>
|
||||
<el-card class="box-card mt10">
|
||||
<div class="news">{{laundryData.msg}}</div>
|
||||
</el-card>
|
||||
<el-card class="box-card mt10 flex1">
|
||||
<div>
|
||||
<div class="orderInfo left">
|
||||
<div class="text">
|
||||
<div class="name">条形码 :</div>
|
||||
<div class="words flex1">{{laundryData.data.code_num}}</div>
|
||||
</div>
|
||||
<div class="text">
|
||||
<div class="name">订单号 :</div>
|
||||
<div class="words flex1">{{laundryData.data.shop_order_no}}</div>
|
||||
</div>
|
||||
<div class="text">
|
||||
<div class="name">洗衣方式 :</div>
|
||||
<div class="words flex1">{{laundryData.data.wash_remark}}</div>
|
||||
</div>
|
||||
<div class="text">
|
||||
<div class="name">附件 :</div>
|
||||
<div class="words flex1">{{laundryData.data.appendix}}</div>
|
||||
</div>
|
||||
<div class="text">
|
||||
<div class="name">备注 :</div>
|
||||
<div class="words flex1">{{laundryData.data.remark}}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="orderInfo left">
|
||||
<div class="text">
|
||||
<div class="name">衣物名称 :</div>
|
||||
<div class="words flex1">{{laundryData.data.name}}</div>
|
||||
</div>
|
||||
<div class="text">
|
||||
<div class="name">门店 :</div>
|
||||
<div class="words flex1">{{laundryData.data.shopName}}</div>
|
||||
</div>
|
||||
<div class="text">
|
||||
<div class="name">单价 :</div>
|
||||
<div class="words flex1">{{laundryData.data.price}}元</div>
|
||||
</div>
|
||||
<div class="text">
|
||||
<div class="name">时间 :</div>
|
||||
<div class="words flex1">{{laundryData.data.create_time}}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="orderInfo left">
|
||||
<div class="text">
|
||||
<div class="name">品牌 :</div>
|
||||
<div class="words flex1">{{laundryData.data.brand}}</div>
|
||||
</div>
|
||||
<div class="text">
|
||||
<div class="name">颜色 :</div>
|
||||
<div class="words flex1">{{laundryData.data.color}}</div>
|
||||
</div>
|
||||
<div class="text">
|
||||
<div class="name">网格 :</div>
|
||||
<div class="words flex1">{{laundryData.data.cloth_wg}}</div>
|
||||
</div>
|
||||
<div class="text">
|
||||
<div class="name">返洗 :</div>
|
||||
<div class="words flex1">{{laundryData.data.is_return}}</div>
|
||||
</div>
|
||||
<div class="text">
|
||||
<div class="name">状态 :</div>
|
||||
<div class="words flex1">{{laundryData.data.cloth_status}}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</el-card>
|
||||
<el-card class="box-card mt10">
|
||||
<div class="userDay">
|
||||
<span>工号:【{{operationRecord.job_number}}】</span>
|
||||
<span>姓名:【{{operationRecord.userName}}】</span>
|
||||
<span>今日计件:【{{operationRecord.countWork}}】</span>
|
||||
</div>
|
||||
</el-card>
|
||||
</div>
|
||||
|
||||
<!--返工管理-->
|
||||
<el-dialog title="返工管理" width="30%" :visible.sync="isOpenRework">
|
||||
<el-form :model="ReworkList">
|
||||
|
||||
<el-form-item label="返工员工" label-width="120px">
|
||||
<el-select v-model="ReworkList.return_member_id"
|
||||
@change="SelectPeople"
|
||||
style="width: 100%;"
|
||||
placeholder="--请选择返工员工--">
|
||||
<el-option v-for="(item,index) in allPeopleList"
|
||||
:key="index"
|
||||
:label="item.name"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="返工岗位" label-width="120px">
|
||||
<el-select v-model="ReworkList.return_position_id" style="width: 100%;" placeholder="--请选择返工岗位--">
|
||||
<el-option v-for="(item,index) in allPositionList"
|
||||
:key="index"
|
||||
:label="item.name"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="返工原因" label-width="120px">
|
||||
<el-select v-model="ReworkList.title" style="width: 100%;" placeholder="--请选择返工原因--">
|
||||
<el-option v-for="(item,index) in allreturnWhy"
|
||||
:key="index"
|
||||
:label="item.title"
|
||||
:value="item.title">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="isOpenRework = false">取 消</el-button>
|
||||
<el-button type="primary" @click="submitOpenRework">提 交</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
|
||||
<el-dialog title="补款" width="30%" :visible.sync="isOpenSupplement">
|
||||
<el-form :model="SupplementList">
|
||||
|
||||
<el-form-item label="补款金额" label-width="120px">
|
||||
<el-input placeholder="请输入补款金额" v-model="SupplementList.extra_money"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="补款原因" label-width="120px">
|
||||
<el-input placeholder="补款原因" type="textarea" v-model="SupplementList.extra_reason"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="isOpenSupplement = false">取 消</el-button>
|
||||
<el-button type="primary" @click="submitSupplement">提 交</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
|
||||
<el-dialog
|
||||
title="提示"
|
||||
:visible.sync="dialogVisible"
|
||||
width="60%">
|
||||
|
||||
<el-table
|
||||
:data="repeatList"
|
||||
stripe
|
||||
style="width: 100%">
|
||||
|
||||
<el-table-column
|
||||
prop="username"
|
||||
label="姓名"
|
||||
width="180">
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
prop="telnum"
|
||||
label="手机"
|
||||
width="180">
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
prop="code_num"
|
||||
label="条码"
|
||||
width="180">
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
prop="mall_product_name"
|
||||
label="名称"
|
||||
width="180">
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
label="操作">
|
||||
|
||||
<template slot-scope="scope">
|
||||
<el-button type="danger" @click="repeatListHandleClick(scope.row)" size="small">选择</el-button>
|
||||
</template>
|
||||
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
</el-dialog>
|
||||
|
||||
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import header from "@/components/header";
|
||||
export default {
|
||||
components: {
|
||||
navbar: header
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
|
||||
dialogVisible: false, // 是否显示 数据重复的时候的弹窗列表
|
||||
repeatList: [], // 重复的衣物数据
|
||||
title: "发生未知错误",
|
||||
barCode: null,
|
||||
isCheck: 0,
|
||||
status: null,
|
||||
laundryData: {
|
||||
msg: "系统准备完毕,请输入条形码!",
|
||||
data: {}
|
||||
},
|
||||
allPositionList: {},
|
||||
allPeopleList: {},
|
||||
allreturnWhy: {},
|
||||
// 表单数据
|
||||
ReworkList: {
|
||||
return_member_id: '', // 返工员工
|
||||
return_member: '', // 返工员工姓名
|
||||
return_position_id: '', // 返工岗位id
|
||||
title: '', // 返工原因
|
||||
code_num: '', // 条形码
|
||||
token: '' // token
|
||||
},
|
||||
SupplementList: {
|
||||
token: '', // token
|
||||
extra_reason: '', // 补款原因
|
||||
extra_money: '', // 补款金额
|
||||
order_id: '', // 订单 id
|
||||
},
|
||||
// 返工管理变量弹窗
|
||||
isOpenRework: false,
|
||||
// 补款变量的弹窗
|
||||
isOpenSupplement: false,
|
||||
isGetOrder: false,
|
||||
operationRecord: {}
|
||||
};
|
||||
},
|
||||
created() {
|
||||
if (this.$route.query["title"]) {
|
||||
this.title = this.$route.query["title"];
|
||||
}
|
||||
if (this.$route.query["status"]) {
|
||||
this.status = this.$route.query["status"];
|
||||
this.countPosition();
|
||||
}
|
||||
this.$printing.connection();
|
||||
},
|
||||
methods: {
|
||||
// 提交补款被点击
|
||||
async submitSupplement() {
|
||||
if (!this.isGetOrder) {
|
||||
this.$notify.error({
|
||||
title: '提示',
|
||||
message: '请先输入条形码进行查询!'
|
||||
});
|
||||
} else {
|
||||
this.SupplementList.token = JSON.parse(localStorage.getItem("userInfo")).token;
|
||||
this.SupplementList.order_id = this.laundryData.data.order_id;
|
||||
let SupplementData = await this.$http.addExtra(this.SupplementList);
|
||||
if(SupplementData.data.status == 1) {
|
||||
this.$notify({
|
||||
title: '提示',
|
||||
type: 'success',
|
||||
message: SupplementData.data.msg,
|
||||
});
|
||||
this.isOpenSupplement = false;
|
||||
} else {
|
||||
this.$notify.error({
|
||||
title: '提示',
|
||||
message: '添加失败...'
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
},
|
||||
// 打开补款弹窗
|
||||
async openSupplement() {
|
||||
this.isOpenSupplement = true;
|
||||
},
|
||||
// 打开返工弹窗
|
||||
async openRework() {
|
||||
this.allPositionList = (await this.$http.allPosition()).data.data;
|
||||
this.allPeopleList = (await this.$http.allPeople()).data.data;
|
||||
this.allreturnWhy = (await this.$http.returnWhy()).data.data;
|
||||
this.isOpenRework = true;
|
||||
},
|
||||
// 提交返工信息
|
||||
async submitOpenRework() {
|
||||
if (this.barCode == null || this.barCode.length == 0) {
|
||||
this.$notify.error({
|
||||
title: '提示',
|
||||
message: '条形码未输入'
|
||||
});
|
||||
} else {
|
||||
// 保存条形码
|
||||
this.ReworkList.code_num = this.barCode;
|
||||
this.ReworkList.token = JSON.parse(localStorage.getItem("userInfo")).token;
|
||||
// console.log("提交的信息:", this.ReworkList)
|
||||
let resData = await this.$http.insertReturn(this.ReworkList);
|
||||
// console.log("添加成功:", resData);
|
||||
if(resData.data.status == 1) {
|
||||
this.$notify({
|
||||
title: '提示',
|
||||
type: 'success',
|
||||
message: resData.data.msg,
|
||||
});
|
||||
this.isOpenRework = false;
|
||||
} else {
|
||||
this.$notify.error({
|
||||
title: '提示',
|
||||
message: '添加失败...'
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
// 获取选中的用户名字
|
||||
SelectPeople(item) {
|
||||
let chooseItem = this.allPeopleList.filter(val=> val.id == item);
|
||||
this.ReworkList.return_member = chooseItem[0].name;
|
||||
},
|
||||
print() {
|
||||
if (this.status == 5) {
|
||||
this.$printing.sendMessage(this.laundryData.data);
|
||||
}
|
||||
},
|
||||
|
||||
// 弹窗列表重复数据被点击选择按钮后
|
||||
async repeatListHandleClick(row) {
|
||||
let res = await this.$http.changeClothProcess({
|
||||
status: parseInt(this.status),
|
||||
order_id: row.mall_order_id,
|
||||
barCode: this.barCode,
|
||||
isCheck: parseInt(this.isCheck)
|
||||
});
|
||||
this.dialogVisible = false
|
||||
this.checkShopCode(res.data)
|
||||
},
|
||||
// 查询
|
||||
async _query() {
|
||||
let data = {
|
||||
status: parseInt(this.status),
|
||||
barCode: this.barCode,
|
||||
isCheck: parseInt(this.isCheck)
|
||||
};
|
||||
this.isGetOrder = true;
|
||||
let res = await this.$http.changeClothProcess(data);
|
||||
let rel = res.data;
|
||||
this.checkShopCode(rel)
|
||||
},
|
||||
checkShopCode(rel) {
|
||||
// 如果状态等于2,表示数据出现重复了,这边需要显示一个弹窗展示一个列表
|
||||
// 让用户去选择,用户选择后 重新调用 changeClothProcess 接口,传入
|
||||
// 用户选中的 item的 order_id 034000572
|
||||
if (rel.status == 2) {
|
||||
this.repeatList = rel.data;
|
||||
this.dialogVisible = true;
|
||||
console.log("显示弹窗")
|
||||
} else {
|
||||
// 判断是否已经处理过该物件
|
||||
if (rel.data.isProcess == 2) {
|
||||
this.$utils.voiceText("该条码已处理");
|
||||
this.laundryData = rel;
|
||||
this.barCode = null;
|
||||
return;
|
||||
}
|
||||
// 附件弹窗
|
||||
if (rel.data.checkStatus == 0) {
|
||||
this.isCheck = 0
|
||||
this.$utils.voiceText("该条码有附件");
|
||||
this.open(rel.msg);
|
||||
return;
|
||||
}
|
||||
this.isCheck = 0;
|
||||
this.laundryData = rel;
|
||||
this.barCode = null;
|
||||
this.countPosition();
|
||||
this.$utils.voiceText(rel.data.name);
|
||||
if (this.status == 5) {
|
||||
this.$printing.sendMessage(rel.data);
|
||||
}
|
||||
}
|
||||
},
|
||||
open(msg) {
|
||||
this.$confirm(msg, "提示", {
|
||||
confirmButtonText: "完整",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
})
|
||||
.then(() => {
|
||||
this.isCheck = 1;
|
||||
this._query();
|
||||
})
|
||||
.catch(() => {});
|
||||
},
|
||||
// 今日操作记录
|
||||
async countPosition() {
|
||||
let res = await this.$http.countPosition(this.status);
|
||||
this.operationRecord = res.data.data;
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
.enterFactory {
|
||||
padding: 0 10px 30px 10px;
|
||||
.demonstration {
|
||||
margin-left: 5px;
|
||||
margin-right: 10px;
|
||||
font-size: 24px;
|
||||
font-weight: 700;
|
||||
color: #303133;
|
||||
}
|
||||
.el-input {
|
||||
width: auto;
|
||||
}
|
||||
.news {
|
||||
text-align: center;
|
||||
font-size: 20px;
|
||||
color: #f56c6c;
|
||||
letter-spacing: 4px;
|
||||
}
|
||||
.orderInfo {
|
||||
min-width: 300px;
|
||||
color: #04b84f;
|
||||
font-size: 20px;
|
||||
.text {
|
||||
max-width: 500px;
|
||||
margin-bottom: 20px;
|
||||
margin-right: 20px;
|
||||
display: flex;
|
||||
.name {
|
||||
width: 100px;
|
||||
text-align: right;
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.userDay {
|
||||
font-size: 20px;
|
||||
color: #303133;
|
||||
text-align: center;
|
||||
span {
|
||||
margin: 0 20px;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
179
衣莎项目/源码/gc_nwjs/src/views/exitFactory.vue
Normal file
@@ -0,0 +1,179 @@
|
||||
<template>
|
||||
<div class="flex-column h100">
|
||||
<navbar title="出厂查询"></navbar>
|
||||
<div class="exitFactory flex1 flex-column">
|
||||
<div class="query">
|
||||
<div class="inblock">
|
||||
<span class="demonstration">出厂时间 :</span>
|
||||
<el-date-picker
|
||||
v-model="time"
|
||||
type="daterange"
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
value-format="yyyy-MM-dd"
|
||||
></el-date-picker>
|
||||
</div>
|
||||
<div class="inblock">
|
||||
<span class="demonstration">出厂门店 :</span>
|
||||
<el-select v-model="store" placeholder="请选择">
|
||||
<el-option
|
||||
v-for="item in options1"
|
||||
:key="item.name"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="inblock">
|
||||
<span class="demonstration">驾驶员 :</span>
|
||||
<el-select v-model="driver" placeholder="请选择">
|
||||
<el-option
|
||||
v-for="item in options2"
|
||||
:key="item.name"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="inblock">
|
||||
<span class="demonstration">出厂单号 :</span>
|
||||
<el-input v-model="oddNumbers" placeholder="请输入内容"></el-input>
|
||||
</div>
|
||||
<div class="but inblock">
|
||||
<el-button type="primary" @click="_query">查询</el-button>
|
||||
<el-button type="primary">重新打印</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex">
|
||||
<div class="table-left">
|
||||
<el-table
|
||||
border
|
||||
:data="factoryData"
|
||||
:height="tableHeight"
|
||||
style="width: 100%"
|
||||
@cell-dblclick="tableDbEdit"
|
||||
:row-class-name="tableRowClassName"
|
||||
>
|
||||
<el-table-column prop="create_time" label="出厂时间" width="150"></el-table-column>
|
||||
<el-table-column prop="exit_factory_no" label="出场单号" width="150"></el-table-column>
|
||||
<el-table-column prop="name" label="门店名称"></el-table-column>
|
||||
<el-table-column prop="factory_member_name" label="驾驶员"></el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="table-right flex1">
|
||||
<el-table
|
||||
border
|
||||
:data="tableData"
|
||||
:height="tableHeight"
|
||||
style="width: 100%"
|
||||
:row-class-name="tableRowClassName"
|
||||
>
|
||||
<el-table-column prop="order_no" label="订单号"></el-table-column>
|
||||
<el-table-column prop="code_num" label="条形码"></el-table-column>
|
||||
<el-table-column prop="name" label="衣物名称"></el-table-column>
|
||||
<el-table-column prop="create_time" label="时间"></el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import header from '@/components/header'
|
||||
export default {
|
||||
components: {
|
||||
navbar: header
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
tableHeight: window.innerHeight - 100,
|
||||
time: [new Date(), new Date()],
|
||||
oddNumbers: '',
|
||||
store: '',
|
||||
driver: '',
|
||||
options1: [],
|
||||
options2: [],
|
||||
factoryData: [],
|
||||
tableData: []
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.time[0] = this.$utils.formatTime(new Date().getTime(), 'Y-M-D')
|
||||
this.time[1] = this.$utils.formatTime(new Date().getTime(), 'Y-M-D')
|
||||
Promise.all([this._query(), this.allShop()]).then(() => {
|
||||
if (this.factoryData.length > 0) this.getOutByNo(this.factoryData[0].exit_factory_no);
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
tableDbEdit(row) {
|
||||
if (row['exit_factory_no']) this.getOutByNo(row.exit_factory_no);
|
||||
},
|
||||
tableRowClassName({ rowIndex }) {
|
||||
if (rowIndex % 2 == 0) {
|
||||
return 'warning-row';
|
||||
}
|
||||
return '';
|
||||
},
|
||||
// 按钮查询
|
||||
async _query() {
|
||||
let data = {
|
||||
startTime: this.time[0],
|
||||
endTime: this.time[1],
|
||||
shop_id: this.store,
|
||||
userID: this.driver,
|
||||
exit_factory_no: this.oddNumbers
|
||||
}
|
||||
let res = await this.$http.findOut(data)
|
||||
this.factoryData = res.data.data;
|
||||
},
|
||||
async getOutByNo(id) {
|
||||
if (id == null) return;
|
||||
let res = await this.$http.getOutByNo(id)
|
||||
this.tableData = res.data.data
|
||||
},
|
||||
async allShop() {
|
||||
let res = await this.$http.allShop()
|
||||
let res1 = await this.$http.allDriver()
|
||||
let data = {
|
||||
id: '',
|
||||
name: '请选择'
|
||||
}
|
||||
this.options2 = [data, ...res1.data.data]
|
||||
this.options1 = [data, ...res.data.data]
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
.exitFactory {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
padding: 0 10px;
|
||||
margin-bottom: 30px;
|
||||
box-sizing: border-box;
|
||||
overflow: hidden;
|
||||
.query {
|
||||
padding: 20px 0px;
|
||||
box-sizing: border-box;
|
||||
.but {
|
||||
margin-left: 20px;
|
||||
}
|
||||
}
|
||||
.demonstration {
|
||||
margin-left: 5px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
.table-left {
|
||||
width: 30%;
|
||||
margin-right: 30px;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
.table-right {
|
||||
overflow-y: scroll;
|
||||
}
|
||||
.el-input {
|
||||
width: auto;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
195
衣莎项目/源码/gc_nwjs/src/views/factory.vue
Normal file
@@ -0,0 +1,195 @@
|
||||
<template>
|
||||
<div class="flex-column h100">
|
||||
<navbar :title="title"></navbar>
|
||||
<div class="enterFactory flex1 flex-column">
|
||||
<el-card class="box-card mt10">
|
||||
<div class="inblock">
|
||||
<span class="demonstration">条形码 :</span>
|
||||
<el-input v-model="barCode" placeholder="条形码输入" @keyup.enter.native='outFactory'></el-input>
|
||||
<span class="ml10">
|
||||
<el-button type="primary" @click="outFactory">查询</el-button>
|
||||
</span>
|
||||
<span class="ml10">
|
||||
<el-button type="primary" @click="outSys">出厂</el-button>
|
||||
</span>
|
||||
<span class="ml10">
|
||||
<el-button type="primary" @click="delTableData()">取消物件</el-button>
|
||||
</span>
|
||||
</div>
|
||||
</el-card>
|
||||
<el-card class="box-card mt10">
|
||||
<div class="news">{{codeText}}</div>
|
||||
</el-card>
|
||||
<el-card class="box-card mt10 flex1">
|
||||
<el-table
|
||||
ref="multipleTable"
|
||||
:data="tableData"
|
||||
tooltip-effect="dark"
|
||||
style="width: 100%"
|
||||
:height="tableHeight"
|
||||
@selection-change="handleSelectionChange"
|
||||
:row-class-name="tableRowClassName"
|
||||
@row-click="rowClick"
|
||||
>
|
||||
<el-table-column type="selection" width="55"></el-table-column>
|
||||
<el-table-column label="订单号">
|
||||
<template slot-scope="scope">{{ scope.row.order_no }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="code_num" label="条形码"></el-table-column>
|
||||
<el-table-column prop="name" label="衣物名称"></el-table-column>
|
||||
<el-table-column prop="shopName" label="所属门店"></el-table-column>
|
||||
<el-table-column prop="create_time" label="时间"></el-table-column>
|
||||
</el-table>
|
||||
</el-card>
|
||||
<el-card class="box-card mt10">
|
||||
<div class="userDay">
|
||||
<span>工号:【{{operationRecord.job_number}}】</span>
|
||||
<span>姓名:【{{operationRecord.userName}}】</span>
|
||||
<span>今日计件:【{{operationRecord.countWork}}】</span>
|
||||
</div>
|
||||
</el-card>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import header from '@/components/header';
|
||||
export default {
|
||||
components: {
|
||||
navbar: header
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
tableHeight: window.innerHeight - 400,
|
||||
title: '发生未知错误',
|
||||
barCode: '',
|
||||
status: null,
|
||||
codeText: '系统准备完毕,请输入条形码!',
|
||||
operationRecord: {},
|
||||
tableData: [],
|
||||
multipleSelection: []
|
||||
}
|
||||
},
|
||||
created() {
|
||||
if (this.$route.query['title']) {
|
||||
this.title = this.$route.query['title']
|
||||
}
|
||||
if (this.$route.query['status']) {
|
||||
this.status = this.$route.query['status']
|
||||
this.countPosition()
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 行的选中函数
|
||||
toggleSelection(rows) {
|
||||
if (rows) {
|
||||
rows.forEach(row => {
|
||||
this.$refs.multipleTable.toggleRowSelection(row);
|
||||
});
|
||||
} else {
|
||||
this.$refs.multipleTable.clearSelection();
|
||||
}
|
||||
},
|
||||
handleSelectionChange(val) {
|
||||
this.multipleSelection = val;
|
||||
},
|
||||
// 把当前行的下表插入row
|
||||
tableRowClassName({ row, rowIndex }) {
|
||||
row.index = rowIndex
|
||||
},
|
||||
// 点击行选中
|
||||
rowClick(row) {
|
||||
if (row !== null) {
|
||||
this.toggleSelection([this.tableData[row.index]])
|
||||
}
|
||||
},
|
||||
// 删除
|
||||
delTableData() {
|
||||
let newArr = [];
|
||||
this.tableData.map((v, i) => {
|
||||
let arr = this.multipleSelection.filter((n) => {
|
||||
return n.order_no == v.order_no
|
||||
})
|
||||
if (arr.length <= 0) {
|
||||
newArr.push(v)
|
||||
}
|
||||
})
|
||||
this.tableData = [...newArr]
|
||||
},
|
||||
// 出厂衣物扫描
|
||||
async outFactory() {
|
||||
let data = {
|
||||
barCode: this.barCode,
|
||||
status: parseInt(this.status)
|
||||
};
|
||||
let res = await this.$http.outFactory(data)
|
||||
if (res.data.data['0']) this.tableData.push(res.data.data['0']);
|
||||
this.codeText = res.data.msg
|
||||
if(res.data.data.isProcess == 2){
|
||||
this.$utils.voiceText('该物件已出厂');
|
||||
this.barCode = ''
|
||||
return
|
||||
}
|
||||
this.countPosition()
|
||||
if(res.data.status == 1){
|
||||
this.$utils.voiceText(res.data.data[0].name);
|
||||
}
|
||||
this.barCode = ''
|
||||
},
|
||||
// 今日操作记录
|
||||
async countPosition() {
|
||||
let res = await this.$http.countPosition(this.status)
|
||||
this.operationRecord = res.data.data
|
||||
},
|
||||
// 出厂
|
||||
async outSys() {
|
||||
let res = await this.$http.outSys()
|
||||
this.codeText = res.data.msg
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
.enterFactory {
|
||||
padding: 0 10px 30px 10px;
|
||||
.demonstration {
|
||||
margin-left: 5px;
|
||||
margin-right: 10px;
|
||||
font-size: 24px;
|
||||
font-weight: 700;
|
||||
color: #303133;
|
||||
}
|
||||
.el-input {
|
||||
width: auto;
|
||||
}
|
||||
.news {
|
||||
text-align: center;
|
||||
font-size: 20px;
|
||||
color: #f56c6c;
|
||||
letter-spacing: 4px;
|
||||
}
|
||||
.orderInfo {
|
||||
min-width: 300px;
|
||||
color: #04b84f;
|
||||
font-size: 20px;
|
||||
.text {
|
||||
max-width: 500px;
|
||||
margin-bottom: 20px;
|
||||
margin-right: 20px;
|
||||
display: flex;
|
||||
.name {
|
||||
width: 100px;
|
||||
text-align: right;
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.userDay {
|
||||
font-size: 20px;
|
||||
color: #303133;
|
||||
text-align: center;
|
||||
span {
|
||||
margin: 0 20px;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
217
衣莎项目/源码/gc_nwjs/src/views/index.vue
Normal file
@@ -0,0 +1,217 @@
|
||||
<template>
|
||||
<div class="index">
|
||||
<div class="header dis-flex2">
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="4">
|
||||
<div class="logo dis-flex2">
|
||||
<img src="@/assets/img/logo.png" alt srcset />
|
||||
</div>
|
||||
</el-col>
|
||||
<!-- 菜单开始 -->
|
||||
<el-col :span="10">
|
||||
<ul class="ul dis-flex2">
|
||||
<li
|
||||
v-for="(item,index) in menu"
|
||||
:key="index"
|
||||
class="li left pointer"
|
||||
@click="hamburger(index)"
|
||||
>
|
||||
<div class="hamburger margin">
|
||||
<img class="img" :src="item.imgUrl" alt srcset />
|
||||
</div>
|
||||
<p class="tc">{{item.title}}</p>
|
||||
</li>
|
||||
</ul>
|
||||
</el-col>
|
||||
<!-- 菜单结束 -->
|
||||
<el-col :span="5">
|
||||
<div class="grid-content bg-purple"></div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
<div class="mian flex1 dis-flex1">
|
||||
<div>
|
||||
<ul class>
|
||||
<li class="left" v-for="(item,index) in ImgArr" :key="index" @click="openFunWin(index)">
|
||||
<img class="img" :src="item" alt srcset />
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bootom">
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<div class="tl secondary">登录用户: {{userInfo['job_number']}} 【{{userInfo['name']}}】</div>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<div class="tr secondary">当前时间: {{time}}</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
<div class="close pointer">
|
||||
<div class="flex closeCen" @click="close()">
|
||||
<div>
|
||||
<img src="../assets/img/icon/close.png" alt srcset />
|
||||
</div>
|
||||
<div class="closeCen-p">退出系统</div>
|
||||
</div>
|
||||
<div class="flex closeCen" @click="dialogVisible = true">
|
||||
<div class="closeCen-p">切换账号</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 弹出层开始 -->
|
||||
<selectionMenu :isShow="isShow" :dataList="dataList"></selectionMenu>
|
||||
<!-- 弹出层结束 -->
|
||||
<!-- 切换账号开始 -->
|
||||
<el-dialog title="提示" :visible.sync="dialogVisible" width="30%" :before-close="handleClose">
|
||||
<login></login>
|
||||
</el-dialog>
|
||||
<!-- 切换账号结束 -->
|
||||
|
||||
<!-- <el-dialog title="其他管理" :visible.sync="otherSetting">-->
|
||||
<!-- <el-row class="other" :gutter="24">-->
|
||||
<!-- <el-col class="other-item fg" :span="12">返工管理</el-col>-->
|
||||
<!-- <el-col class="other-item bk" :span="12">补款管理</el-col>-->
|
||||
<!-- </el-row>-->
|
||||
<!-- </el-dialog>-->
|
||||
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import selectionMenu from "@/components/selectionMenu";
|
||||
import login from "@/components/login";
|
||||
import { mapGetters } from "vuex";
|
||||
export default {
|
||||
components: {
|
||||
selectionMenu: selectionMenu,
|
||||
login: login
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
isShow: false, //弹出层
|
||||
dialogVisible: false, //切换账号弹窗
|
||||
dataList: [],
|
||||
time: "",
|
||||
otherSetting: false,
|
||||
ImgArr: [
|
||||
require("../assets/img/Enter-factory.png"),
|
||||
require("../assets/img/Handle.png"),
|
||||
require("../assets/img/Factory.png")
|
||||
],
|
||||
menu: [
|
||||
{
|
||||
imgUrl: require("../assets/img/icon/1.png"),
|
||||
title: "打开菜单"
|
||||
},
|
||||
{
|
||||
imgUrl: require("../assets/img/icon/2.png"),
|
||||
title: "衣物查询"
|
||||
},
|
||||
{
|
||||
imgUrl: require("../assets/img/icon/3.png"),
|
||||
title: "衣物预警"
|
||||
},
|
||||
{
|
||||
imgUrl: require("../assets/img/icon/4.png"),
|
||||
title: "业绩查询"
|
||||
},
|
||||
{
|
||||
imgUrl: require("../assets/img/icon/5.png"),
|
||||
title: "掉标管理"
|
||||
},
|
||||
{
|
||||
imgUrl: require("../assets/img/icon/6.png"),
|
||||
title: "其他管理"
|
||||
}
|
||||
]
|
||||
};
|
||||
},
|
||||
created() {
|
||||
setInterval(() => {
|
||||
this.time = new Date().toLocaleString();
|
||||
}, 1000);
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(["userInfo"])
|
||||
},
|
||||
methods: {
|
||||
close() {
|
||||
this.$confirm("即将退出程序, 是否继续?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
}).then(() => {
|
||||
nw.App.quit();
|
||||
});
|
||||
},
|
||||
// 点击菜单
|
||||
hamburger(index) {
|
||||
switch (index) {
|
||||
case 0:
|
||||
this.dataList = [{ title: "出厂查询", url: "exitFactory" }];
|
||||
this.isShow = !this.isShow;
|
||||
break;
|
||||
case 1:
|
||||
this.$nw.openWin("/clothingInquiries");
|
||||
break;
|
||||
case 2:
|
||||
this.$nw.openWin("/productionEarlyWarning");
|
||||
break;
|
||||
case 3:
|
||||
this.$nw.openWin("/workload");
|
||||
break;
|
||||
case 4:
|
||||
this.$nw.openWin("/dropMark");
|
||||
break;
|
||||
case 5:
|
||||
this.dataList = [
|
||||
{ title: "返工管理", url: "rework" },
|
||||
{ title: "补款管理", url: "compensation" },
|
||||
{ title: "营业额管理", url: "StoreTurnover" },
|
||||
{ title: "收衣统计", url: "Statistics" },
|
||||
{ title: "总检查询", url: "checkClothCount" }
|
||||
];
|
||||
this.isShow = !this.isShow;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
},
|
||||
async openFunWin(code) {
|
||||
let res = await this.$http.operate(code + 1);
|
||||
switch (code) {
|
||||
case 0:
|
||||
res.map((v, i) => {
|
||||
res[i].url = "enterFactory";
|
||||
});
|
||||
this.dataList = res;
|
||||
break;
|
||||
case 1:
|
||||
res.map((v, i) => {
|
||||
res[i].url = "enterFactory";
|
||||
});
|
||||
this.dataList = res;
|
||||
break;
|
||||
case 2:
|
||||
res.map((v, i) => {
|
||||
res[i].url = "factory";
|
||||
});
|
||||
this.dataList = res;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
this.isShow = !this.isShow;
|
||||
},
|
||||
// 切换账号关闭
|
||||
handleClose(done) {
|
||||
done();
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<style lang="less">
|
||||
@import "../assets/less/view/index.less";
|
||||
</style>
|
||||
119
衣莎项目/源码/gc_nwjs/src/views/login.vue
Normal file
@@ -0,0 +1,119 @@
|
||||
<template>
|
||||
<div class="login">
|
||||
<div class="ion">
|
||||
<!-- <vue-particles
|
||||
color="#7b7d7d"
|
||||
:particleOpacity="0.7"
|
||||
:particlesNumber="60"
|
||||
shapeType="circle"
|
||||
:particleSize="4"
|
||||
linesColor="#203c77"
|
||||
:linesWidth="1"
|
||||
:lineLinked="true"
|
||||
:lineOpacity="0.4"
|
||||
:linesDistance="100"
|
||||
:moveSpeed="2"
|
||||
:hoverEffect="true"
|
||||
hoverMode="grab"
|
||||
:clickEffect="true"
|
||||
clickMode="push"
|
||||
class="lizi"
|
||||
></vue-particles>-->
|
||||
</div>
|
||||
<div class="form dis-flex1">
|
||||
<el-form
|
||||
:model="ruleForm"
|
||||
status-icon
|
||||
:rules="rules"
|
||||
ref="ruleForm"
|
||||
label-width="100px"
|
||||
class="demo-ruleForm margin"
|
||||
size="medium"
|
||||
>
|
||||
<el-form-item label="账号" prop="user">
|
||||
<el-input v-model="ruleForm.user" autocomplete="off"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="密码" prop="pass">
|
||||
<el-input type="password" v-model="ruleForm.pass" autocomplete="off"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="submitForm('ruleForm')" :loading="loading">登录</el-button>
|
||||
<el-button @click="resetForm('ruleForm')">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
var validatePass = (rule, value, callback) => {
|
||||
if (value === '') {
|
||||
callback(new Error('请输入账号'));
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
};
|
||||
var validatePass2 = (rule, value, callback) => {
|
||||
if (value === '') {
|
||||
callback(new Error('请输入密码'));
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
};
|
||||
return {
|
||||
loading: false,//按钮加载状态
|
||||
ruleForm: {
|
||||
user: '',
|
||||
pass: ''
|
||||
},
|
||||
rules: {
|
||||
user: [
|
||||
{ validator: validatePass, trigger: 'blur' }
|
||||
],
|
||||
pass: [
|
||||
{ validator: validatePass2, trigger: 'blur' }
|
||||
]
|
||||
}
|
||||
};
|
||||
},
|
||||
created() {
|
||||
if (localStorage.getItem('login') !== '' || localStorage.getItem('login') !== null) {
|
||||
let login = JSON.parse(localStorage.getItem('login')) || {}
|
||||
this.ruleForm = {
|
||||
user: login['user'],
|
||||
pass: login['pass']
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
submitForm(formName) {
|
||||
this.$refs[formName].validate(async (valid) => {
|
||||
if (valid) {
|
||||
this.loading = true
|
||||
let res = await this.$http.login(this.ruleForm.user, this.ruleForm.pass)
|
||||
this.loading = false
|
||||
if (res.data.status == 1) {
|
||||
await localStorage.setItem('login', JSON.stringify({ user: this.ruleForm.user, pass: this.ruleForm.pass }))
|
||||
this.$nw.big();
|
||||
this.$router.push('/index')
|
||||
} else {
|
||||
this.$message({
|
||||
message: res.data.msg,
|
||||
type: 'warning'
|
||||
});
|
||||
}
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
},
|
||||
resetForm(formName) {
|
||||
this.$refs[formName].resetFields();
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="less">
|
||||
@import "../assets/less/view/login.less";
|
||||
</style>
|
||||
238
衣莎项目/源码/gc_nwjs/src/views/productionEarlyWarning.vue
Normal file
@@ -0,0 +1,238 @@
|
||||
<template>
|
||||
<div class="flex-column h100">
|
||||
<navbar title="衣物预警"></navbar>
|
||||
<div class="subject flex1 flex-column h100 w100">
|
||||
<div class="flex">
|
||||
<div class="mt10">
|
||||
<el-card class="box-card">
|
||||
<div slot="header" class="clearfix">
|
||||
<span>超出时间</span>
|
||||
</div>
|
||||
<div>
|
||||
<div class="radio-time">
|
||||
<el-radio v-model="timeRadio" label="0">所有</el-radio>
|
||||
</div>
|
||||
<el-radio v-model="timeRadio" label="1">1天</el-radio>
|
||||
<el-radio v-model="timeRadio" label="2">2天</el-radio>
|
||||
<el-radio v-model="timeRadio" label="3">3天</el-radio>
|
||||
<el-radio v-model="timeRadio" label="7">1周</el-radio>
|
||||
<el-radio v-model="timeRadio" label="14">2周</el-radio>
|
||||
<el-radio v-model="timeRadio" label="30">1个月</el-radio>
|
||||
</div>
|
||||
</el-card>
|
||||
</div>
|
||||
<div class="mt10 ml10">
|
||||
<el-card class="box-card">
|
||||
<div slot="header" class="clearfix">
|
||||
<span>衣物状态</span>
|
||||
</div>
|
||||
<div>
|
||||
<div class="radio-time">
|
||||
<el-radio v-model="stateRadio" label="1">未完成</el-radio>
|
||||
</div>
|
||||
<el-radio v-model="stateRadio" label="2">收衣未入厂</el-radio>
|
||||
<el-radio v-model="stateRadio" label="3">已入厂未出厂</el-radio>
|
||||
<el-radio v-model="stateRadio" label="4">出厂未到店</el-radio>
|
||||
<el-radio v-model="stateRadio" label="5">返店未取衣</el-radio>
|
||||
</div>
|
||||
</el-card>
|
||||
</div>
|
||||
<div class="mt10 ml10">
|
||||
<el-card class="box-card">
|
||||
<div slot="header" class="clearfix">
|
||||
<span>其他筛选</span>
|
||||
</div>
|
||||
<div>
|
||||
<div class="radio-time">
|
||||
<el-checkbox v-model="checked">是否加快</el-checkbox>
|
||||
</div>
|
||||
<div class="mt10">
|
||||
选择门店:
|
||||
<el-select v-model="value" placeholder="请选择">
|
||||
<el-option
|
||||
v-for="item in options"
|
||||
:key="item.name"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
</div>
|
||||
</el-card>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex-column flex1 mt10">
|
||||
<div>
|
||||
<el-card class="box-card1">
|
||||
<div>
|
||||
<el-pagination
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
:current-page="page"
|
||||
:page-sizes="[20, 30, 40, 50]"
|
||||
:page-size="limit"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="tableData.info.count"
|
||||
background
|
||||
></el-pagination>
|
||||
</div>
|
||||
</el-card>
|
||||
</div>
|
||||
<div class="flex1 mt10">
|
||||
<el-table
|
||||
:data="tableData.list"
|
||||
border
|
||||
:height="tableHeight"
|
||||
style="width: 100%"
|
||||
:row-class-name="tableRowClassName"
|
||||
@row-dblclick="dblclick"
|
||||
>
|
||||
<el-table-column prop="create_time" label="下单时间" width="180"></el-table-column>
|
||||
<el-table-column prop="shop_order_no" label="订单号" width="180"></el-table-column>
|
||||
<el-table-column prop="shopName" label="所属门店"></el-table-column>
|
||||
<el-table-column prop="code_num" label="条形码"></el-table-column>
|
||||
<el-table-column prop="name" label="衣物名称"></el-table-column>
|
||||
<el-table-column prop="cloth_status" label="状态"></el-table-column>
|
||||
<el-table-column prop="remark" label="备注"></el-table-column>
|
||||
<el-table-column prop="wash_remark" label="洗衣方式、附加服务、附加费"></el-table-column>
|
||||
<el-table-column prop="total_price" label="价格"></el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 弹出层 -->
|
||||
<el-dialog
|
||||
title="详情跟踪"
|
||||
:visible.sync="dialogVisible"
|
||||
width="40%"
|
||||
:before-close="handleClose"
|
||||
:row-class-name="tableRowClassName"
|
||||
>
|
||||
<div class="border">
|
||||
<el-table :data="tableData.list" height="250" border style="width: 100%">
|
||||
<el-table-column prop="date" label="订单号" width="120"></el-table-column>
|
||||
<el-table-column prop="name" label="条形码"></el-table-column>
|
||||
<el-table-column prop="name" label="状态"></el-table-column>
|
||||
<el-table-column prop="name" label="门店"></el-table-column>
|
||||
<el-table-column prop="name" label="收衣店员"></el-table-column>
|
||||
<el-table-column prop="name" label="工厂洗衣师" width="120"></el-table-column>
|
||||
<el-table-column prop="address" label="备注" width="180"></el-table-column>
|
||||
<el-table-column prop="date" label="操作时间" width="120"></el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import header from '@/components/header'
|
||||
export default {
|
||||
components: {
|
||||
navbar: header
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
tableHeight: window.innerHeight - 400,
|
||||
timeRadio: '0',
|
||||
stateRadio: '1',
|
||||
checked: false,
|
||||
options: [],
|
||||
value: '',
|
||||
tableData: {
|
||||
info: {},
|
||||
list: []
|
||||
},
|
||||
dialogVisible: false,
|
||||
page: 1,
|
||||
limit: 20
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.warn()
|
||||
this.$http.allShop()
|
||||
.then(res => {
|
||||
this.options = [{ id: null, name: "请选择" }, ...res.data.data]
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
// 分页大小变化
|
||||
handleSizeChange(val) {
|
||||
this.limit = val
|
||||
this.warn()
|
||||
},
|
||||
// 当前页变化
|
||||
handleCurrentChange(val) {
|
||||
this.page = val
|
||||
this.warn()
|
||||
},
|
||||
tableRowClassName({ rowIndex }) {
|
||||
if (rowIndex % 2 == 0) {
|
||||
return 'warning-row';
|
||||
}
|
||||
return '';
|
||||
},
|
||||
// 关闭弹出框
|
||||
handleClose(done) {
|
||||
done();
|
||||
},
|
||||
//
|
||||
dblclick(row) {
|
||||
console.log(row);
|
||||
this.dialogVisible = true
|
||||
},
|
||||
|
||||
// 获取衣物预警数据
|
||||
async warn() {
|
||||
let data = {
|
||||
dayCount: parseInt(this.timeRadio),
|
||||
status: parseInt(this.stateRadio),
|
||||
shop_id: parseInt(this.value),
|
||||
is_urgent: this.checked ? 1 : 0,
|
||||
page: this.page,
|
||||
limit: this.limit
|
||||
}
|
||||
let res = await this.$http.warn(data)
|
||||
this.tableData = res.data.data
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
timeRadio() {
|
||||
this.warn()
|
||||
},
|
||||
stateRadio() {
|
||||
this.warn()
|
||||
},
|
||||
value() {
|
||||
this.warn()
|
||||
},
|
||||
checked() {
|
||||
this.warn()
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
.subject {
|
||||
padding: 0 10px 30px 10px;
|
||||
box-sizing: border-box;
|
||||
.radio-time {
|
||||
width: 60px;
|
||||
}
|
||||
}
|
||||
.box-card {
|
||||
width: 320px;
|
||||
height: 180px;
|
||||
}
|
||||
.box-card1 {
|
||||
width: 100%;
|
||||
}
|
||||
</style>
|
||||
<style lang="less">
|
||||
// .subject {
|
||||
// .el-table {
|
||||
// height: 100% !important;
|
||||
// .el-table__body-wrapper {
|
||||
// height: 100% !important;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
</style>
|
||||
142
衣莎项目/源码/gc_nwjs/src/views/workload.vue
Normal file
@@ -0,0 +1,142 @@
|
||||
<template>
|
||||
<div class="flex-column h100">
|
||||
<navbar title="工厂工作量统计"></navbar>
|
||||
<div class="flex1 workload flex-column h100">
|
||||
<div class="mt10">
|
||||
<el-card class="box-card">
|
||||
<div>
|
||||
<div class="inblock">
|
||||
统计日期:
|
||||
<el-date-picker
|
||||
v-model="time"
|
||||
type="daterange"
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
value-format="yyyy-MM-dd"
|
||||
></el-date-picker>
|
||||
</div>
|
||||
<div class="inblock ml10">
|
||||
统计岗位:
|
||||
<el-select v-model="value1" placeholder="请选择">
|
||||
<el-option
|
||||
v-for="item in options1"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.name"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="inblock ml10">
|
||||
操作伙伴:
|
||||
<el-select v-model="value2" placeholder="请选择">
|
||||
<el-option
|
||||
v-for="item in options2"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
</div>
|
||||
</el-card>
|
||||
</div>
|
||||
<div class="flex1 mt10">
|
||||
<el-table
|
||||
:data="tableData"
|
||||
border
|
||||
style="width: 100%"
|
||||
:height="tableHeight"
|
||||
:row-class-name="tableRowClassName"
|
||||
>
|
||||
<el-table-column prop="startTime" label="开始时间" sortable></el-table-column>
|
||||
<el-table-column prop="endTime" label="结束时间" sortable></el-table-column>
|
||||
<el-table-column prop="factory_member_name" label="伙伴"></el-table-column>
|
||||
<el-table-column prop="factory_position_id" label="岗位"></el-table-column>
|
||||
<el-table-column prop="totalCount" label="工作计件"></el-table-column>
|
||||
<el-table-column prop="return_percent" label="返工率"></el-table-column>
|
||||
<el-table-column prop="position_money" label="营业额度"></el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="bottom mt10">
|
||||
<span
|
||||
v-for="(item,index) in allCount"
|
||||
:key="index"
|
||||
>{{item.position_name}}: {{item.allCount}}件</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import header from '@/components/header'
|
||||
export default {
|
||||
components: {
|
||||
navbar: header
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
tableHeight: window.innerHeight - 200,
|
||||
time: [new Date(), new Date()],
|
||||
options1: [],
|
||||
options2: [],
|
||||
value1: '',
|
||||
value2: '',
|
||||
tableData: [],
|
||||
allCount: []
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.time[0] = this.$utils.formatTime(new Date().getTime(), 'Y-M-D')
|
||||
this.time[1] = this.$utils.formatTime(new Date().getTime(), 'Y-M-D')
|
||||
Promise.all([this.qSelect(), this.workCount()])
|
||||
},
|
||||
methods: {
|
||||
tableRowClassName({ rowIndex }) {
|
||||
if (rowIndex % 2 == 0) {
|
||||
return 'warning-row';
|
||||
}
|
||||
return '';
|
||||
},
|
||||
async workCount() {
|
||||
let data = {
|
||||
startTime: this.time[0],
|
||||
endTime: this.time[1],
|
||||
stationID: this.value1 != '请选择' ? this.value1 : '',
|
||||
userID: this.value2
|
||||
}
|
||||
let res = await this.$http.workCount(data)
|
||||
this.tableData = res.data.data.positionCount
|
||||
this.allCount = res.data.data.allCount
|
||||
},
|
||||
async qSelect() {
|
||||
let res1 = await this.$http.allPosition()
|
||||
let res2 = await this.$http.allPeople()
|
||||
this.options1 = [{ id: null, name: '请选择' }, ...res1.data.data]
|
||||
this.options2 = [{ id: null, name: '请选择' }, ...res2.data.data]
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
value1() {
|
||||
this.workCount()
|
||||
},
|
||||
value2() {
|
||||
this.workCount()
|
||||
},
|
||||
time() {
|
||||
this.workCount()
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
.workload {
|
||||
padding: 0 10px 30px 10px;
|
||||
box-sizing: border-box;
|
||||
.bottom {
|
||||
text-align: center;
|
||||
span {
|
||||
margin: 0 20px;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
17
衣莎项目/源码/gc_nwjs/vue.config.js
Normal file
@@ -0,0 +1,17 @@
|
||||
module.exports = {
|
||||
//...
|
||||
publicPath: process.env.NODE_ENV === 'production' ? './' : '/',
|
||||
//...
|
||||
// devServer: {
|
||||
// proxy: {
|
||||
// '/api': {
|
||||
// target: 'https://ceshi.yishaxiyi.com/factoryapi',
|
||||
// ws: true,
|
||||
// changeOrigin: true,
|
||||
// pathRewrite: {
|
||||
// '^/api': '' //通过pathRewrite重写地址,将前缀/api转为/
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
}
|
||||