├── .gitignore ├── README.md ├── intro.png ├── server ├── .gitignore ├── .gitignore.txt ├── app.js ├── bin │ └── www ├── models │ ├── auth.js │ ├── charts.js │ ├── commodity.js │ ├── customer.js │ ├── manager.js │ ├── resource.js │ ├── role.js │ ├── supplier.js │ └── warehouse.js ├── package-lock.json ├── package.json ├── public │ └── stylesheets │ │ └── style.css ├── routes │ ├── auth.js │ ├── charts.js │ ├── commodity.js │ ├── customer.js │ ├── index.js │ ├── member.js │ ├── resource.js │ ├── role.js │ ├── supplier.js │ ├── users.js │ └── warehouse.js └── views │ ├── error.jade │ ├── index.jade │ └── layout.jade └── vue_font_end ├── .babelrc ├── .editorconfig ├── .gitignore ├── .gitignore.txt ├── .postcssrc.js ├── README.md ├── build ├── build.js ├── check-versions.js ├── logo.png ├── utils.js ├── vue-loader.conf.js ├── webpack.base.conf.js ├── webpack.dev.conf.js └── webpack.prod.conf.js ├── config ├── dev.env.js ├── index.js ├── prod.env.js └── test.env.js ├── favicon.ico ├── index.html ├── jxc.xmind ├── package-lock.json ├── package.json ├── src ├── App.vue ├── assets │ └── logo.png ├── components │ ├── HelloWorld.vue │ ├── base-title.vue │ ├── commodity-picker │ │ ├── commodity-picker.styl │ │ └── commodity-picker.vue │ └── loading.vue ├── const │ └── api.js ├── containers │ ├── auth.vue │ ├── base-data │ │ ├── address │ │ │ ├── address.styl │ │ │ └── address.vue │ │ ├── client │ │ │ ├── client.styl │ │ │ ├── client.vue │ │ │ └── edit-client │ │ │ │ ├── edit-client.styl │ │ │ │ └── edit-client.vue │ │ ├── commodity │ │ │ ├── commodity.styl │ │ │ ├── commodity.vue │ │ │ └── edit-commodity │ │ │ │ ├── edit-commodity.styl │ │ │ │ └── edit-commodity.vue │ │ ├── contact │ │ │ ├── contact.styl │ │ │ └── contact.vue │ │ ├── materiel │ │ │ ├── edit-materiel │ │ │ │ ├── edit-materiel.styl │ │ │ │ └── edit-materiel.vue │ │ │ ├── materiel.styl │ │ │ └── materiel.vue │ │ ├── present │ │ │ ├── edit-present │ │ │ │ ├── edit-present.styl │ │ │ │ └── edit-present.vue │ │ │ ├── present.styl │ │ │ └── present.vue │ │ ├── stock-price │ │ │ ├── stock-price.styl │ │ │ └── stock-price.vue │ │ ├── supplier │ │ │ ├── edit-supplier │ │ │ │ ├── edit-supplier.styl │ │ │ │ └── edit-supplier.vue │ │ │ ├── supplier.styl │ │ │ └── supplier.vue │ │ ├── unit │ │ │ ├── edit-unit │ │ │ │ ├── edit-unit.styl │ │ │ │ └── edit-unit.vue │ │ │ ├── unit.styl │ │ │ └── unit.vue │ │ └── warehouse │ │ │ ├── edit-warehouse │ │ │ ├── edit-warehouse.styl │ │ │ └── edit-warehouse.vue │ │ │ ├── warehouse.styl │ │ │ └── warehouse.vue │ ├── container │ │ └── container.vue │ ├── data-analyze │ │ ├── china.json │ │ ├── data-analyze.styl │ │ ├── data-analyze.vue │ │ ├── month-sales │ │ │ ├── month-sales.styl │ │ │ └── month-sales.vue │ │ ├── sale-distribution │ │ │ ├── china.json │ │ │ ├── sale-distribution.styl │ │ │ └── sale-distribution.vue │ │ ├── sale-rate │ │ │ ├── sale-rate.styl │ │ │ └── sale-rate.vue │ │ ├── year-grow │ │ │ ├── year-grow.styl │ │ │ └── year-grow.vue │ │ └── year.json │ ├── login │ │ ├── login.styl │ │ └── login.vue │ ├── panel │ │ ├── panel.styl │ │ └── panel.vue │ ├── repertory │ │ ├── in │ │ │ ├── edit-in │ │ │ │ └── edit-in.vue │ │ │ ├── in.styl │ │ │ └── in.vue │ │ ├── out │ │ │ ├── edit-out │ │ │ │ └── edit-out.vue │ │ │ └── out.vue │ │ ├── record │ │ │ ├── edit-record │ │ │ │ └── edit-record.vue │ │ │ ├── record.styl │ │ │ └── record.vue │ │ └── stock-taking │ │ │ ├── stock-taking.styl │ │ │ └── stock-taking.vue │ ├── selling │ │ ├── apply-record │ │ │ ├── apply-record.styl │ │ │ ├── apply-record.vue │ │ │ └── edit-apply-record │ │ │ │ ├── edit-apply-record.styl │ │ │ │ └── edit-apply-record.vue │ │ ├── order-form │ │ │ ├── edit-order-form │ │ │ │ ├── edit-order-form.styl │ │ │ │ └── edit-order-form.vue │ │ │ ├── order-form.styl │ │ │ └── order-form.vue │ │ └── stock-out │ │ │ ├── edit-stock-out │ │ │ ├── edit-stock-out.styl │ │ │ └── edit-stock-out.vue │ │ │ ├── stock-out.styl │ │ │ └── stock-out.vue │ ├── stock │ │ ├── stock-in-order │ │ │ ├── edit-stock-in-order-material │ │ │ │ ├── edit-stock-in-order-material.styl │ │ │ │ └── edit-stock-in-order-material.vue │ │ │ ├── edit-stock-in-order-present │ │ │ │ ├── edit-stock-in-order-present.styl │ │ │ │ └── edit-stock-in-order-present.vue │ │ │ ├── edit-stock-in-order │ │ │ │ ├── edit-stock-in-order.styl │ │ │ │ └── edit-stock-in-order.vue │ │ │ ├── stock-in-order.styl │ │ │ └── stock-in-order.vue │ │ └── stock-order │ │ │ ├── edit-stock-order-material │ │ │ ├── edit-stock-order-material.styl │ │ │ └── edit-stock-order-material.vue │ │ │ ├── edit-stock-order-present │ │ │ ├── edit-stock-order-present.styl │ │ │ └── edit-stock-order-present.vue │ │ │ ├── edit-stock-order │ │ │ ├── edit-stock-order.styl │ │ │ └── edit-stock-order.vue │ │ │ ├── stock-order.styl │ │ │ └── stock-order.vue │ └── sys-manage │ │ ├── organization │ │ ├── edit-organization │ │ │ ├── edit-organization.styl │ │ │ └── edit-organization.vue │ │ ├── organization.styl │ │ └── organization.vue │ │ ├── resource │ │ ├── resource.styl │ │ └── resource.vue │ │ ├── role │ │ ├── auth │ │ │ ├── auth.styl │ │ │ └── auth.vue │ │ ├── editrole │ │ │ ├── editrole.styl │ │ │ └── editrole.vue │ │ ├── role.styl │ │ └── role.vue │ │ ├── usermanage │ │ ├── edit-member │ │ │ └── edit-member.vue │ │ ├── usermanage.vue │ │ └── usermanager.styl │ │ └── wordbook │ │ ├── edit-wordbook │ │ ├── edit-wordBook.styl │ │ └── edit-wordbook.vue │ │ ├── wordbook.styl │ │ └── wordbook.vue ├── interceptor.js ├── main.js ├── router │ └── index.js ├── store │ ├── index.js │ ├── loading.js │ ├── user.js │ └── usermanage │ │ └── usermanage.js ├── stylus │ ├── base.styl │ └── iview-theme-config.less └── util │ ├── convertTime.js │ └── depCompare.js ├── static ├── .gitkeep ├── applyRecord.json ├── auth.json ├── commodity.json ├── customer ├── editApplyRecord1.json ├── editGoodsStock.json ├── editGoodsStockOut1.json ├── editMaterialStock.json ├── editPresentStock.json ├── goodsStockShowBack1.json ├── manager.json ├── materialData.json ├── materiel.json ├── materielone.json ├── newAuth.json ├── organization.json ├── package.json ├── present.json ├── present123.json ├── presentData.json ├── role.json ├── source.json ├── stockOrderGoods.json ├── stockOrderMaterial.json ├── stockOrderPresents.json ├── stockOutData.json ├── supplier.json ├── units.json ├── units1.json └── warehouse.json ├── test ├── e2e │ ├── custom-assertions │ │ └── elementCount.js │ ├── nightwatch.conf.js │ ├── runner.js │ └── specs │ │ └── test.js └── unit │ ├── .eslintrc │ ├── jest.conf.js │ ├── setup.js │ └── specs │ └── HelloWorld.spec.js ├── text.html ├── ui.jpg └── 思维导图.png /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | .idea 4 | /dist/ 5 | npm-debug.log* 6 | yarn-debug.log* 7 | yarn-error.log* 8 | /test/unit/coverage/ 9 | /test/e2e/reports/ 10 | selenium-debug.log 11 | 12 | # Editor directories and files 13 | .idea 14 | .vscode 15 | *.suo 16 | *.ntvs* 17 | *.njsproj 18 | *.sln 19 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## 基于vue的后台管理系统 2 | 3 | ## 一个很小的项目,当时与别人合作的,后台为java,所以当前情况下启动项目应该不会出来内容,或者会有问题,但前端代码是没有错误的 4 | ## server文件夹为前期开发时模拟数据的server,只有很少的一部分接口 5 | 6 | 直接用vue-cli 初始化的项目 7 | 8 | > 技术:vue, vuex, iview, webpack 9 | 10 | 基于vue的后台管理系统,侧重权限控制(accessToken实现)。使用axios全局拦截器配合accessToken实现权限控制。 11 | 项目中并未过多使用vuex,因为基本没有共享状态的组件。只用在了loading的显示与隐藏,加载模态的显示与隐藏。 12 | server文件夹为mock数据时候写的node服务。 13 | 14 | 15 | ## 文件夹结构: 16 | 17 | ![img](https://github.com/capslocktao/vue-backage/blob/master/intro.png) 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /intro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/neroneroffy/vue-backage/98640ebcb54e7a471c3f4248b375b1b9d4ce0e80/intro.png -------------------------------------------------------------------------------- /server/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | /dist/ 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | /test/unit/coverage/ 8 | /test/e2e/reports/ 9 | selenium-debug.log 10 | 11 | # Editor directories and files 12 | .idea 13 | .vscode 14 | *.suo 15 | *.ntvs* 16 | *.njsproj 17 | *.sln 18 | -------------------------------------------------------------------------------- /server/.gitignore.txt: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | 6 | # testing 7 | /coverage 8 | 9 | # production 10 | /build 11 | 12 | # misc 13 | .DS_Store 14 | .env.local 15 | .env.development.local 16 | .env.test.local 17 | .env.production.local 18 | 19 | npm-debug.log* 20 | yarn-debug.log* 21 | yarn-error.log* -------------------------------------------------------------------------------- /server/app.js: -------------------------------------------------------------------------------- 1 | var express = require('express'); 2 | var path = require('path'); 3 | var favicon = require('serve-favicon'); 4 | var logger = require('morgan'); 5 | var cookieParser = require('cookie-parser'); 6 | var bodyParser = require('body-parser'); 7 | 8 | var index = require('./routes/index'); 9 | var users = require('./routes/users'); 10 | var member = require('./routes/member'); 11 | var resource = require('./routes/resource'); 12 | var role = require('./routes/role'); 13 | var authInfo = require('./routes/auth'); 14 | var charts = require('./routes/charts'); 15 | var commodity = require('./routes/commodity'); 16 | var supplier = require('./routes/supplier'); 17 | var warehouse = require('./routes/warehouse'); 18 | var customer = require('./routes/customer'); 19 | 20 | //连接mongodb数据库 21 | let mongoose = require('mongoose'); 22 | const DB_URL = 'mongodb://localhost:27017/vue-db'; 23 | mongoose.connect(DB_URL); 24 | mongoose.connection.on('connected',()=>{ 25 | console.log('mongodb已经连接') 26 | }); 27 | mongoose.connection.on('disconnected',()=>{ 28 | console.log('mongodb已断开连接') 29 | }); 30 | 31 | var app = express(); 32 | 33 | // view engine setup 34 | app.set('views', path.join(__dirname, 'views')); 35 | app.set('view engine', 'jade'); 36 | 37 | // uncomment after placing your favicon in /public 38 | //app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); 39 | app.use(logger('dev')); 40 | app.use(bodyParser.json()); 41 | app.use(bodyParser.urlencoded({ extended: false })); 42 | app.use(cookieParser()); 43 | app.use(express.static(path.join(__dirname, 'public'))); 44 | 45 | app.use('/', index); 46 | app.use('/users', users); 47 | app.use('/auth', member); 48 | app.use('/resource', resource); 49 | app.use('/role', role); 50 | app.use('/authinfo', authInfo); 51 | app.use('/charts', charts); 52 | app.use('/commodity', commodity); 53 | app.use('/supplier', supplier); 54 | app.use('/warehouse', warehouse); 55 | app.use('/customer', customer); 56 | 57 | // catch 404 and forward to error handler 58 | app.use(function(req, res, next) { 59 | var err = new Error('Not Found'); 60 | err.status = 404; 61 | next(err); 62 | }); 63 | 64 | // error handler 65 | app.use(function(err, req, res, next) { 66 | // set locals, only providing error in development 67 | res.locals.message = err.message; 68 | res.locals.error = req.app.get('env') === 'development' ? err : {}; 69 | 70 | // render the error page 71 | res.status(err.status || 500); 72 | res.render('error'); 73 | }); 74 | 75 | module.exports = app; 76 | -------------------------------------------------------------------------------- /server/bin/www: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | /** 4 | * Module dependencies. 5 | */ 6 | 7 | var app = require('../app'); 8 | var debug = require('debug')('server:server'); 9 | var http = require('http'); 10 | 11 | /** 12 | * Get port from environment and store in Express. 13 | */ 14 | 15 | var port = normalizePort(process.env.PORT || '3000'); 16 | app.set('port', port); 17 | 18 | /** 19 | * Create HTTP server. 20 | */ 21 | 22 | var server = http.createServer(app); 23 | 24 | /** 25 | * Listen on provided port, on all network interfaces. 26 | */ 27 | 28 | server.listen(port); 29 | server.on('error', onError); 30 | server.on('listening', onListening); 31 | 32 | /** 33 | * Normalize a port into a number, string, or false. 34 | */ 35 | 36 | function normalizePort(val) { 37 | var port = parseInt(val, 10); 38 | 39 | if (isNaN(port)) { 40 | // named pipe 41 | return val; 42 | } 43 | 44 | if (port >= 0) { 45 | // port number 46 | return port; 47 | } 48 | 49 | return false; 50 | } 51 | 52 | /** 53 | * Event listener for HTTP server "error" event. 54 | */ 55 | 56 | function onError(error) { 57 | if (error.syscall !== 'listen') { 58 | throw error; 59 | } 60 | 61 | var bind = typeof port === 'string' 62 | ? 'Pipe ' + port 63 | : 'Port ' + port; 64 | 65 | // handle specific listen errors with friendly messages 66 | switch (error.code) { 67 | case 'EACCES': 68 | console.error(bind + ' requires elevated privileges'); 69 | process.exit(1); 70 | break; 71 | case 'EADDRINUSE': 72 | console.error(bind + ' is already in use'); 73 | process.exit(1); 74 | break; 75 | default: 76 | throw error; 77 | } 78 | } 79 | 80 | /** 81 | * Event listener for HTTP server "listening" event. 82 | */ 83 | 84 | function onListening() { 85 | var addr = server.address(); 86 | var bind = typeof addr === 'string' 87 | ? 'pipe ' + addr 88 | : 'port ' + addr.port; 89 | debug('Listening on ' + bind); 90 | } 91 | -------------------------------------------------------------------------------- /server/models/auth.js: -------------------------------------------------------------------------------- 1 | let mongoose = require('mongoose'); 2 | let Schema = mongoose.Schema; 3 | let auth = new Schema({ 4 | "pid":String, 5 | "alreadyAuth":Array, 6 | "data":[ 7 | { 8 | "title":String, 9 | "id":String, 10 | "children":[ 11 | { 12 | "title":String, 13 | "id":String, 14 | "children":[ 15 | { 16 | "title":String, 17 | "id":String, 18 | } 19 | ] 20 | } 21 | ] 22 | } 23 | ] 24 | }); 25 | module.exports = mongoose.model('auths',auth); -------------------------------------------------------------------------------- /server/models/charts.js: -------------------------------------------------------------------------------- 1 | var mongoose = require('mongoose'); 2 | var chartsData = new mongoose.Schema({ 3 | "yearSaleData":{ 4 | "dataPrev":Array, 5 | "dataNow":Array 6 | } 7 | }); 8 | module.exports = mongoose.model("charts",chartsData); -------------------------------------------------------------------------------- /server/models/commodity.js: -------------------------------------------------------------------------------- 1 | let mongoose = require('mongoose'); 2 | let Schema = mongoose.Schema; 3 | 4 | let commodity = new Schema({ 5 | "id":String, 6 | "name":String, 7 | "unit":String, 8 | "price":String, 9 | "weight":String 10 | }); 11 | module.exports = mongoose.model('commoditys',commodity); -------------------------------------------------------------------------------- /server/models/customer.js: -------------------------------------------------------------------------------- 1 | let mongoose = require('mongoose'); 2 | let Schema = mongoose.Schema; 3 | 4 | let customer = new Schema({ 5 | "customerName":String, 6 | "customerType":String, 7 | "mobilePhone":String, 8 | "telephone":String, 9 | "wechat":String, 10 | "firstPurchaseTime":String, 11 | "status":String, 12 | "user":String, 13 | "address":String, 14 | "pic":String 15 | }); 16 | module.exports = mongoose.model('customers',customer); -------------------------------------------------------------------------------- /server/models/manager.js: -------------------------------------------------------------------------------- 1 | let mongoose = require('mongoose'); 2 | let Schema = mongoose.Schema; 3 | 4 | let manager = new Schema({ 5 | "id":String, 6 | "account":String, 7 | "pwd":String, 8 | "avatar":String, 9 | "roleId":String, 10 | "roleName":String, 11 | "phone":String, 12 | "status":Boolean 13 | }); 14 | module.exports = mongoose.model('managers',manager); -------------------------------------------------------------------------------- /server/models/resource.js: -------------------------------------------------------------------------------- 1 | let mongoose = require('mongoose'); 2 | let Schema = mongoose.Schema; 3 | let resource = new Schema({ 4 | id:String, 5 | name:String, 6 | path:String, 7 | status:Boolean, 8 | type:String 9 | }); 10 | module.exports = mongoose.model("resources",resource); -------------------------------------------------------------------------------- /server/models/role.js: -------------------------------------------------------------------------------- 1 | let mongoose = require('mongoose'); 2 | let Schema = mongoose.Schema; 3 | let role = new Schema({ 4 | roleId:String, 5 | roleName:String, 6 | roleCode:String, 7 | remark:String 8 | }); 9 | module.exports = mongoose.model('roles',role); -------------------------------------------------------------------------------- /server/models/supplier.js: -------------------------------------------------------------------------------- 1 | let mongoose = require('mongoose'); 2 | let Schema = mongoose.Schema; 3 | 4 | let supplier = new Schema({ 5 | "id":String, 6 | "name":String, 7 | "max":String, 8 | "min":String, 9 | "contact":String, 10 | "status":Boolean 11 | }); 12 | module.exports = mongoose.model('suppliers',supplier); -------------------------------------------------------------------------------- /server/models/warehouse.js: -------------------------------------------------------------------------------- 1 | let mongoose = require('mongoose'); 2 | let Schema = mongoose.Schema; 3 | 4 | let warehouse = new Schema({ 5 | "id":String, 6 | "name":String, 7 | "max":String, 8 | "min":String, 9 | "contact":String, 10 | "phone":String, 11 | "address":String, 12 | "status":Boolean 13 | }); 14 | module.exports = mongoose.model('warehouses',warehouse); -------------------------------------------------------------------------------- /server/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "server", 3 | "version": "0.0.0", 4 | "private": true, 5 | "scripts": { 6 | "start": "node ./bin/www" 7 | }, 8 | "dependencies": { 9 | "body-parser": "~1.18.2", 10 | "cookie-parser": "~1.4.3", 11 | "debug": "~2.6.9", 12 | "express": "~4.15.5", 13 | "jade": "~1.11.0", 14 | "mongoose": "^5.0.1", 15 | "morgan": "~1.9.0", 16 | "serve-favicon": "~2.4.5" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /server/public/stylesheets/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | padding: 50px; 3 | font: 14px "Lucida Grande", Helvetica, Arial, sans-serif; 4 | } 5 | 6 | a { 7 | color: #00B7FF; 8 | } 9 | -------------------------------------------------------------------------------- /server/routes/auth.js: -------------------------------------------------------------------------------- 1 | let express = require('express'); 2 | let router = express.Router(); 3 | let auth = require('../models/auth'); 4 | router.get('/getauthinfo',(req,res,next)=>{ 5 | let pid = req.param("id"); 6 | auth.find({pid},(err,doc)=>{ 7 | if(err){ 8 | return res.json({ 9 | result:false 10 | }) 11 | } 12 | console.log(typeof doc) 13 | return res.json({ 14 | result:true, 15 | data:doc 16 | }) 17 | }) 18 | }); 19 | module.exports = router; -------------------------------------------------------------------------------- /server/routes/charts.js: -------------------------------------------------------------------------------- 1 | let express = require('express'); 2 | let router = express.Router(); 3 | let charts = require('../models/charts'); 4 | router.get('/',(req,res,next)=>{ 5 | 6 | charts.find((err,doc)=>{ 7 | if(err){ 8 | return res.json({ 9 | result:false 10 | }) 11 | } 12 | 13 | return res.json({ 14 | result:true, 15 | data:doc 16 | }) 17 | }) 18 | }); 19 | module.exports = router; -------------------------------------------------------------------------------- /server/routes/commodity.js: -------------------------------------------------------------------------------- 1 | let express = require('express'); 2 | let router = express.Router(); 3 | let Commodity = require('../models/commodity'); 4 | router.get('/getList',(req,res,next)=>{ 5 | let pageNum = parseInt(req.param('pageNum')); 6 | let pageSize = parseInt(req.param('pageSize')); 7 | let skip = (pageNum-1)*pageSize; 8 | 9 | let total = 0; 10 | Commodity.find({}).skip(skip).limit(pageSize).exec((err,doc)=>{ 11 | if(err){ 12 | return res.json({ 13 | result:false 14 | }) 15 | } 16 | let result = doc; 17 | Commodity.find({},(err,doc)=>{ 18 | if (err){ 19 | return res.json({ 20 | result:false 21 | }) 22 | } 23 | return res.json({ 24 | result:true, 25 | list:result, 26 | total:doc.length 27 | }) 28 | }) 29 | 30 | }) 31 | }); 32 | router.get('/querycommodity',(req,res,next)=>{ 33 | let id = req.param('id'); 34 | Commodity.findOne({id},(err,doc)=>{ 35 | if(err){ 36 | return res.json({ 37 | result:false 38 | }) 39 | } 40 | return res.json({ 41 | result:true, 42 | data:doc 43 | }) 44 | }) 45 | }); 46 | router.post('/delete',(req,res,next)=>{ 47 | let id = req.body.id; 48 | Commodity.remove({id},((err,doc)=>{ 49 | if(err){ 50 | return res.json({ 51 | result:false 52 | }) 53 | } 54 | return res.json({ 55 | result:true, 56 | data:doc 57 | }) 58 | })) 59 | 60 | }); 61 | 62 | module.exports = router; -------------------------------------------------------------------------------- /server/routes/customer.js: -------------------------------------------------------------------------------- 1 | let express = require('express'); 2 | let router = express.Router(); 3 | let customer = require('../models/customer'); 4 | router.get('/getList',(req,res,next)=>{ 5 | let pageNum = parseInt(req.param('pageNum')); 6 | let pageSize = parseInt(req.param('pageSize')); 7 | let skip = (pageNum-1)*pageSize; 8 | 9 | let total = 0; 10 | customer.find({}).skip(skip).limit(pageSize).exec((err,doc)=>{ 11 | if(err){ 12 | return res.json({ 13 | result:false 14 | }) 15 | } 16 | let result = doc; 17 | customer.find({},(err,doc)=>{ 18 | if (err){ 19 | return res.json({ 20 | result:false 21 | }) 22 | } 23 | return res.json({ 24 | result:true, 25 | list:result, 26 | total:doc.length 27 | }) 28 | }) 29 | 30 | }) 31 | }); 32 | router.get('/querycustomer',(req,res,next)=>{ 33 | let _id = req.param('id'); 34 | customer.findOne({_id},(err,doc)=>{ 35 | if(err){ 36 | return res.json({ 37 | result:false 38 | }) 39 | } 40 | return res.json({ 41 | result:true, 42 | data:doc 43 | }) 44 | }) 45 | }); 46 | router.post('/delete',(req,res,next)=>{ 47 | let _id = req.body.id; 48 | customer.remove({_id},((err,doc)=>{ 49 | if(err){ 50 | return res.json({ 51 | result:false 52 | }) 53 | } 54 | return res.json({ 55 | result:true, 56 | data:doc 57 | }) 58 | })) 59 | 60 | }); 61 | 62 | module.exports = router; -------------------------------------------------------------------------------- /server/routes/index.js: -------------------------------------------------------------------------------- 1 | var express = require('express'); 2 | var router = express.Router(); 3 | 4 | /* GET home page. */ 5 | router.get('/', function(req, res, next) { 6 | res.render('index', { title: 'Express' }); 7 | }); 8 | 9 | module.exports = router; 10 | -------------------------------------------------------------------------------- /server/routes/member.js: -------------------------------------------------------------------------------- 1 | let express = require('express'); 2 | let router = express.Router(); 3 | let Manager = require('../models/manager'); 4 | router.get('/manager',(req,res,next)=>{ 5 | let pageNum = parseInt(req.param('pageNum')); 6 | let pageSize = parseInt(req.param('pageSize')); 7 | let skip = (pageNum-1)*pageSize; 8 | 9 | let total = 0; 10 | Manager.find({}).skip(skip).limit(pageSize).exec((err,doc)=>{ 11 | if(err){ 12 | return res.json({ 13 | result:false 14 | }) 15 | } 16 | let result = doc; 17 | Manager.find({},(err,doc)=>{ 18 | if (err){ 19 | return res.json({ 20 | result:false 21 | }) 22 | } 23 | return res.json({ 24 | result:true, 25 | list:result, 26 | total:doc.length 27 | }) 28 | }) 29 | 30 | }) 31 | }); 32 | router.get('/queryuser',(req,res,next)=>{ 33 | let id = req.param('id'); 34 | Manager.findOne({id},(err,doc)=>{ 35 | if(err){ 36 | return res.json({ 37 | result:false 38 | }) 39 | } 40 | return res.json({ 41 | result:true, 42 | data:doc 43 | }) 44 | }) 45 | }); 46 | router.post('/delete',(req,res,next)=>{ 47 | let id = req.body.id; 48 | Manager.remove({id},((err,doc)=>{ 49 | if(err){ 50 | return res.json({ 51 | result:false 52 | }) 53 | } 54 | return res.json({ 55 | result:true, 56 | data:doc 57 | }) 58 | })) 59 | 60 | }); 61 | router.post('/updatestatus',(req,res,next)=>{ 62 | let id = req.body.id; 63 | let update = { 64 | $set:{ 65 | status:req.body.status?false:true 66 | } 67 | } 68 | 69 | Manager.findOneAndUpdate({id},update,(err,doc)=>{ 70 | if(err){ 71 | return res.json({ 72 | result:false 73 | }) 74 | } 75 | return res.json({ 76 | result:true, 77 | data:doc 78 | }) 79 | }) 80 | }); 81 | module.exports = router; -------------------------------------------------------------------------------- /server/routes/resource.js: -------------------------------------------------------------------------------- 1 | let express = require('express'); 2 | let router = express.Router(); 3 | let resource = require('../models/resource'); 4 | 5 | router.get('/getlist',(req,res,next)=>{ 6 | resource.find({},(err,doc)=>{ 7 | if(err){ 8 | return res.json({ 9 | result:false 10 | }) 11 | } 12 | console.log(doc) 13 | return res.json({ 14 | result:true, 15 | data:doc 16 | }) 17 | }) 18 | }); 19 | 20 | module.exports = router; -------------------------------------------------------------------------------- /server/routes/role.js: -------------------------------------------------------------------------------- 1 | let express = require('express'); 2 | let router = express.Router(); 3 | let role = require('../models/role'); 4 | let auth = require('../models/auth'); 5 | router.get('/list',(req,res,next)=>{ 6 | role.find({},(err,doc)=>{ 7 | if(err){ 8 | return res.json({ 9 | result:false 10 | }) 11 | } 12 | return res.json({ 13 | result:true, 14 | data:doc 15 | }) 16 | }) 17 | }); 18 | router.get('/info',(req,res,next)=>{ 19 | let id = req.param("id"); 20 | role.findOne({roleId:id},(err,doc)=>{ 21 | if(err){ 22 | return res.json({ 23 | result:false 24 | }) 25 | } 26 | 27 | auth.findOne({pid:id},(err,authInfo)=>{ 28 | if(err){ 29 | return res.json({ 30 | result:false 31 | }) 32 | } 33 | 34 | return res.json({ 35 | result:true, 36 | data:{ 37 | roleInfo:doc, 38 | authInfo:authInfo.data, 39 | alreadyAuth:authInfo.alreadyAuth 40 | } 41 | }) 42 | }) 43 | }) 44 | }); 45 | module.exports = router; -------------------------------------------------------------------------------- /server/routes/supplier.js: -------------------------------------------------------------------------------- 1 | let express = require('express'); 2 | let router = express.Router(); 3 | let Supplier = require('../models/supplier'); 4 | router.get('/getList',(req,res,next)=>{ 5 | let pageNum = parseInt(req.param('pageNum')); 6 | let pageSize = parseInt(req.param('pageSize')); 7 | let skip = (pageNum-1)*pageSize; 8 | 9 | let total = 0; 10 | Supplier.find({}).skip(skip).limit(pageSize).exec((err,doc)=>{ 11 | if(err){ 12 | return res.json({ 13 | result:false 14 | }) 15 | } 16 | let result = doc; 17 | Supplier.find({},(err,doc)=>{ 18 | if (err){ 19 | return res.json({ 20 | result:false 21 | }) 22 | } 23 | return res.json({ 24 | result:true, 25 | list:result, 26 | total:doc.length 27 | }) 28 | }) 29 | 30 | }) 31 | }); 32 | router.get('/query',(req,res,next)=>{ 33 | let id = req.param('id'); 34 | Supplier.findOne({id},(err,doc)=>{ 35 | if(err){ 36 | return res.json({ 37 | result:false 38 | }) 39 | } 40 | return res.json({ 41 | result:true, 42 | data:doc 43 | }) 44 | }) 45 | }); 46 | router.post('/delete',(req,res,next)=>{ 47 | let id = req.body.id; 48 | Supplier.remove({id},((err,doc)=>{ 49 | if(err){ 50 | return res.json({ 51 | result:false 52 | }) 53 | } 54 | return res.json({ 55 | result:true, 56 | data:doc 57 | }) 58 | })) 59 | 60 | }); 61 | router.post('/update',(req,res,next)=>{ 62 | let id = req.body.id; 63 | let update = { 64 | $set:{ 65 | status:req.body.status?false:true 66 | } 67 | } 68 | 69 | Supplier.findOneAndUpdate({id},update,(err,doc)=>{ 70 | if(err){ 71 | return res.json({ 72 | result:false 73 | }) 74 | } 75 | return res.json({ 76 | result:true, 77 | data:doc 78 | }) 79 | }) 80 | }); 81 | module.exports = router; -------------------------------------------------------------------------------- /server/routes/users.js: -------------------------------------------------------------------------------- 1 | var express = require('express'); 2 | var router = express.Router(); 3 | 4 | /* GET users listing. */ 5 | router.get('/', function(req, res, next) { 6 | res.send('respond with a resource'); 7 | }); 8 | 9 | module.exports = router; 10 | -------------------------------------------------------------------------------- /server/routes/warehouse.js: -------------------------------------------------------------------------------- 1 | let express = require('express'); 2 | let router = express.Router(); 3 | let Warehouse = require('../models/warehouse'); 4 | router.get('/getList',(req,res,next)=>{ 5 | let pageNum = parseInt(req.param('pageNum')); 6 | let pageSize = parseInt(req.param('pageSize')); 7 | let skip = (pageNum-1)*pageSize; 8 | 9 | let total = 0; 10 | Warehouse.find({}).skip(skip).limit(pageSize).exec((err,doc)=>{ 11 | if(err){ 12 | return res.json({ 13 | result:false 14 | }) 15 | } 16 | let result = doc; 17 | Warehouse.find({},(err,doc)=>{ 18 | if (err){ 19 | return res.json({ 20 | result:false 21 | }) 22 | } 23 | return res.json({ 24 | result:true, 25 | list:result, 26 | total:doc.length 27 | }) 28 | }) 29 | 30 | }) 31 | }); 32 | router.get('/query',(req,res,next)=>{ 33 | let id = req.param('id'); 34 | Warehouse.findOne({id},(err,doc)=>{ 35 | if(err){ 36 | return res.json({ 37 | result:false 38 | }) 39 | } 40 | return res.json({ 41 | result:true, 42 | data:doc 43 | }) 44 | }) 45 | }); 46 | router.post('/delete',(req,res,next)=>{ 47 | let id = req.body.id; 48 | Warehouse.remove({id},((err,doc)=>{ 49 | if(err){ 50 | return res.json({ 51 | result:false 52 | }) 53 | } 54 | return res.json({ 55 | result:true, 56 | data:doc 57 | }) 58 | })) 59 | 60 | }); 61 | router.post('/update',(req,res,next)=>{ 62 | let id = req.body.id; 63 | let update = { 64 | $set:{ 65 | status:req.body.status?false:true 66 | } 67 | } 68 | 69 | Warehouse.findOneAndUpdate({id},update,(err,doc)=>{ 70 | if(err){ 71 | return res.json({ 72 | result:false 73 | }) 74 | } 75 | return res.json({ 76 | result:true, 77 | data:doc 78 | }) 79 | }) 80 | }); 81 | module.exports = router; -------------------------------------------------------------------------------- /server/views/error.jade: -------------------------------------------------------------------------------- 1 | extends layout 2 | 3 | block content 4 | h1= message 5 | h2= error.status 6 | pre #{error.stack} 7 | -------------------------------------------------------------------------------- /server/views/index.jade: -------------------------------------------------------------------------------- 1 | extends layout 2 | 3 | block content 4 | h1= title 5 | p Welcome to #{title} 6 | -------------------------------------------------------------------------------- /server/views/layout.jade: -------------------------------------------------------------------------------- 1 | doctype html 2 | html 3 | head 4 | title= title 5 | link(rel='stylesheet', href='/stylesheets/style.css') 6 | body 7 | block content 8 | -------------------------------------------------------------------------------- /vue_font_end/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | ["env", { 4 | "modules": false, 5 | "targets": { 6 | "browsers": ["> 1%", "last 2 versions", "not ie <= 8"] 7 | } 8 | }], 9 | "stage-2" 10 | ], 11 | "plugins": ["transform-vue-jsx", "transform-runtime", 12 | ["import", { 13 | "libraryName": "iview", 14 | "libraryDirectory": "src/components" 15 | }] 16 | ], 17 | "env": { 18 | "test": { 19 | "presets": ["env", "stage-2"], 20 | "plugins": ["transform-vue-jsx", "transform-es2015-modules-commonjs", "dynamic-import-node"] 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /vue_font_end/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | -------------------------------------------------------------------------------- /vue_font_end/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | /dist/ 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | /test/unit/coverage/ 8 | /test/e2e/reports/ 9 | selenium-debug.log 10 | 11 | # Editor directories and files 12 | .idea 13 | .vscode 14 | *.suo 15 | *.ntvs* 16 | *.njsproj 17 | *.sln 18 | -------------------------------------------------------------------------------- /vue_font_end/.gitignore.txt: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | 6 | # testing 7 | /coverage 8 | 9 | # production 10 | /build 11 | 12 | # misc 13 | .DS_Store 14 | .env.local 15 | .env.development.local 16 | .env.test.local 17 | .env.production.local 18 | 19 | npm-debug.log* 20 | yarn-debug.log* 21 | yarn-error.log* -------------------------------------------------------------------------------- /vue_font_end/.postcssrc.js: -------------------------------------------------------------------------------- 1 | // https://github.com/michael-ciniawsky/postcss-load-config 2 | 3 | module.exports = { 4 | "plugins": { 5 | "postcss-import": {}, 6 | "postcss-url": {}, 7 | // to edit target browsers: use "browserslist" field in package.json 8 | "autoprefixer": {} 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /vue_font_end/README.md: -------------------------------------------------------------------------------- 1 | # daddy_choice_vue 2 | 3 | > A Vue.js project 4 | 5 | ## Build Setup 6 | 7 | ``` bash 8 | # install dependencies 9 | npm install 10 | 11 | # serve with hot reload at localhost:8080 12 | npm run dev 13 | 14 | # build for production with minification 15 | npm run build 16 | 17 | # build for production and view the bundle analyzer report 18 | npm run build --report 19 | 20 | # run unit tests 21 | npm run unit 22 | 23 | # run e2e tests 24 | npm run e2e 25 | 26 | # run all tests 27 | npm test 28 | ``` 29 | 30 | For a detailed explanation on how things work, check out the [guide](http://vuejs-templates.github.io/webpack/) and [docs for vue-loader](http://vuejs.github.io/vue-loader). 31 | -------------------------------------------------------------------------------- /vue_font_end/build/build.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | require('./check-versions')() 3 | 4 | process.env.NODE_ENV = 'production' 5 | 6 | const ora = require('ora') 7 | const rm = require('rimraf') 8 | const path = require('path') 9 | const chalk = require('chalk') 10 | const webpack = require('webpack') 11 | const config = require('../config') 12 | const webpackConfig = require('./webpack.prod.conf') 13 | 14 | const spinner = ora('building for production...') 15 | spinner.start() 16 | 17 | rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => { 18 | if (err) throw err 19 | webpack(webpackConfig, (err, stats) => { 20 | spinner.stop() 21 | if (err) throw err 22 | process.stdout.write(stats.toString({ 23 | colors: true, 24 | modules: false, 25 | children: false, // If you are using ts-loader, setting this to true will make TypeScript errors show up during build. 26 | chunks: false, 27 | chunkModules: false 28 | }) + '\n\n') 29 | 30 | if (stats.hasErrors()) { 31 | console.log(chalk.red(' Build failed with errors.\n')) 32 | process.exit(1) 33 | } 34 | 35 | console.log(chalk.cyan(' Build complete.\n')) 36 | console.log(chalk.yellow( 37 | ' Tip: built files are meant to be served over an HTTP server.\n' + 38 | ' Opening index.html over file:// won\'t work.\n' 39 | )) 40 | }) 41 | }) 42 | -------------------------------------------------------------------------------- /vue_font_end/build/check-versions.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const chalk = require('chalk') 3 | const semver = require('semver') 4 | const packageConfig = require('../package.json') 5 | const shell = require('shelljs') 6 | 7 | function exec (cmd) { 8 | return require('child_process').execSync(cmd).toString().trim() 9 | } 10 | 11 | const versionRequirements = [ 12 | { 13 | name: 'node', 14 | currentVersion: semver.clean(process.version), 15 | versionRequirement: packageConfig.engines.node 16 | } 17 | ] 18 | 19 | if (shell.which('npm')) { 20 | versionRequirements.push({ 21 | name: 'npm', 22 | currentVersion: exec('npm --version'), 23 | versionRequirement: packageConfig.engines.npm 24 | }) 25 | } 26 | 27 | module.exports = function () { 28 | const warnings = [] 29 | 30 | for (let i = 0; i < versionRequirements.length; i++) { 31 | const mod = versionRequirements[i] 32 | 33 | if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) { 34 | warnings.push(mod.name + ': ' + 35 | chalk.red(mod.currentVersion) + ' should be ' + 36 | chalk.green(mod.versionRequirement) 37 | ) 38 | } 39 | } 40 | 41 | if (warnings.length) { 42 | console.log('') 43 | console.log(chalk.yellow('To use this template, you must update following to modules:')) 44 | console.log() 45 | 46 | for (let i = 0; i < warnings.length; i++) { 47 | const warning = warnings[i] 48 | console.log(' ' + warning) 49 | } 50 | 51 | console.log() 52 | process.exit(1) 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /vue_font_end/build/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/neroneroffy/vue-backage/98640ebcb54e7a471c3f4248b375b1b9d4ce0e80/vue_font_end/build/logo.png -------------------------------------------------------------------------------- /vue_font_end/build/utils.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const path = require('path') 3 | const config = require('../config') 4 | const ExtractTextPlugin = require('extract-text-webpack-plugin') 5 | const packageConfig = require('../package.json') 6 | 7 | exports.assetsPath = function (_path) { 8 | const assetsSubDirectory = process.env.NODE_ENV === 'production' 9 | ? config.build.assetsSubDirectory 10 | : config.dev.assetsSubDirectory 11 | 12 | return path.posix.join(assetsSubDirectory, _path) 13 | } 14 | 15 | exports.cssLoaders = function (options) { 16 | options = options || {} 17 | 18 | const cssLoader = { 19 | loader: 'css-loader', 20 | options: { 21 | sourceMap: options.sourceMap 22 | } 23 | } 24 | 25 | const postcssLoader = { 26 | loader: 'postcss-loader', 27 | options: { 28 | sourceMap: options.sourceMap 29 | } 30 | } 31 | 32 | // generate loader string to be used with extract text plugin 33 | function generateLoaders (loader, loaderOptions) { 34 | const loaders = options.usePostCSS ? [cssLoader, postcssLoader] : [cssLoader] 35 | 36 | if (loader) { 37 | loaders.push({ 38 | loader: loader + '-loader', 39 | options: Object.assign({}, loaderOptions, { 40 | sourceMap: options.sourceMap 41 | }) 42 | }) 43 | } 44 | 45 | // Extract CSS when that option is specified 46 | // (which is the case during production build) 47 | if (options.extract) { 48 | return ExtractTextPlugin.extract({ 49 | use: loaders, 50 | fallback: 'vue-style-loader' 51 | }) 52 | } else { 53 | return ['vue-style-loader'].concat(loaders) 54 | } 55 | } 56 | 57 | // https://vue-loader.vuejs.org/en/configurations/extract-css.html 58 | return { 59 | css: generateLoaders(), 60 | postcss: generateLoaders(), 61 | less: generateLoaders('less'), 62 | sass: generateLoaders('sass', { indentedSyntax: true }), 63 | scss: generateLoaders('sass'), 64 | stylus: generateLoaders('stylus'), 65 | styl: generateLoaders('stylus') 66 | } 67 | } 68 | 69 | // Generate loaders for standalone style files (outside of .vue) 70 | exports.styleLoaders = function (options) { 71 | const output = [] 72 | const loaders = exports.cssLoaders(options) 73 | 74 | for (const extension in loaders) { 75 | const loader = loaders[extension] 76 | output.push({ 77 | test: new RegExp('\\.' + extension + '$'), 78 | use: loader 79 | }) 80 | } 81 | 82 | return output 83 | } 84 | 85 | exports.createNotifierCallback = () => { 86 | const notifier = require('node-notifier') 87 | 88 | return (severity, errors) => { 89 | if (severity !== 'error') return 90 | 91 | const error = errors[0] 92 | const filename = error.file && error.file.split('!').pop() 93 | 94 | notifier.notify({ 95 | title: packageConfig.name, 96 | message: severity + ': ' + error.name, 97 | subtitle: filename || '', 98 | icon: path.join(__dirname, 'logo.png') 99 | }) 100 | } 101 | } 102 | -------------------------------------------------------------------------------- /vue_font_end/build/vue-loader.conf.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const utils = require('./utils') 3 | const config = require('../config') 4 | const isProduction = process.env.NODE_ENV === 'production' 5 | const sourceMapEnabled = isProduction 6 | ? config.build.productionSourceMap 7 | : config.dev.cssSourceMap 8 | 9 | module.exports = { 10 | loaders: utils.cssLoaders({ 11 | sourceMap: sourceMapEnabled, 12 | extract: isProduction 13 | }), 14 | cssSourceMap: sourceMapEnabled, 15 | cacheBusting: config.dev.cacheBusting, 16 | transformToRequire: { 17 | video: ['src', 'poster'], 18 | source: 'src', 19 | img: 'src', 20 | image: 'xlink:href' 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /vue_font_end/build/webpack.base.conf.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const path = require('path') 3 | const utils = require('./utils') 4 | const config = require('../config') 5 | const vueLoaderConfig = require('./vue-loader.conf') 6 | 7 | function resolve (dir) { 8 | return path.join(__dirname, '..', dir) 9 | } 10 | 11 | 12 | 13 | module.exports = { 14 | context: path.resolve(__dirname, '../'), 15 | entry: { 16 | app: './src/main.js' 17 | }, 18 | output: { 19 | path: config.build.assetsRoot, 20 | filename: '[name].js', 21 | publicPath: process.env.NODE_ENV === 'production' 22 | ? config.build.assetsPublicPath 23 | : config.dev.assetsPublicPath 24 | }, 25 | resolve: { 26 | extensions: ['.js', '.vue', '.json'], 27 | alias: { 28 | 'vue$': 'vue/dist/vue.esm.js', 29 | '@': resolve('src'), 30 | } 31 | }, 32 | module: { 33 | rules: [ 34 | { 35 | test: /\.vue$/, 36 | loader: 'vue-loader', 37 | options: vueLoaderConfig 38 | }, 39 | { 40 | test: /\.styl/, 41 | loader: 'stylus-loader' 42 | }, 43 | { 44 | test: /\.js$/, 45 | loader: 'babel-loader', 46 | include: [resolve('src'), resolve('test'), resolve('node_modules/webpack-dev-server/client')] 47 | }, 48 | { 49 | test: /\.(png|jpe?g|gif|svg)(\?.*)?$/, 50 | loader: 'url-loader', 51 | options: { 52 | limit: 10000, 53 | name: utils.assetsPath('img/[name].[hash:7].[ext]') 54 | } 55 | }, 56 | { 57 | test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/, 58 | loader: 'url-loader', 59 | options: { 60 | limit: 10000, 61 | name: utils.assetsPath('media/[name].[hash:7].[ext]') 62 | } 63 | }, 64 | { 65 | test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/, 66 | loader: 'url-loader', 67 | options: { 68 | limit: 80000, 69 | name: utils.assetsPath('fonts/[name].[hash:7].[ext]') 70 | } 71 | } 72 | ] 73 | }, 74 | node: { 75 | // prevent webpack from injecting useless setImmediate polyfill because Vue 76 | // source contains it (although only uses it if it's native). 77 | setImmediate: false, 78 | // prevent webpack from injecting mocks to Node native modules 79 | // that does not make sense for the client 80 | dgram: 'empty', 81 | fs: 'empty', 82 | net: 'empty', 83 | tls: 'empty', 84 | child_process: 'empty' 85 | } 86 | } 87 | -------------------------------------------------------------------------------- /vue_font_end/build/webpack.dev.conf.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const utils = require('./utils') 3 | const webpack = require('webpack') 4 | const config = require('../config') 5 | const merge = require('webpack-merge') 6 | const path = require('path') 7 | const baseWebpackConfig = require('./webpack.base.conf') 8 | const CopyWebpackPlugin = require('copy-webpack-plugin') 9 | const HtmlWebpackPlugin = require('html-webpack-plugin') 10 | const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin') 11 | const portfinder = require('portfinder') 12 | 13 | const HOST = process.env.HOST 14 | const PORT = process.env.PORT && Number(process.env.PORT) 15 | 16 | const devWebpackConfig = merge(baseWebpackConfig, { 17 | module: { 18 | rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap, usePostCSS: true }) 19 | }, 20 | // cheap-module-eval-source-map is faster for development 21 | devtool: config.dev.devtool, 22 | 23 | // these devServer options should be customized in /config/index.js 24 | devServer: { 25 | 26 | clientLogLevel: 'warning', 27 | historyApiFallback: { 28 | rewrites: [ 29 | { from: /.*/, to: path.posix.join(config.dev.assetsPublicPath, 'index.html') }, 30 | ], 31 | }, 32 | 33 | 34 | hot: true, 35 | contentBase: false, // since we use CopyWebpackPlugin. 36 | compress: true, 37 | host: HOST || config.dev.host, 38 | port: PORT || config.dev.port, 39 | open: config.dev.autoOpenBrowser, 40 | overlay: config.dev.errorOverlay 41 | ? { warnings: false, errors: true } 42 | : false, 43 | publicPath: config.dev.assetsPublicPath, 44 | proxy: config.dev.proxyTable, 45 | quiet: true, // necessary for FriendlyErrorsPlugin 46 | watchOptions: { 47 | poll: config.dev.poll, 48 | } 49 | }, 50 | plugins: [ 51 | new webpack.DefinePlugin({ 52 | 'process.env': require('../config/dev.env') 53 | }), 54 | new webpack.HotModuleReplacementPlugin(), 55 | new webpack.NamedModulesPlugin(), // HMR shows correct file names in console on update. 56 | new webpack.NoEmitOnErrorsPlugin(), 57 | // https://github.com/ampedandwired/html-webpack-plugin 58 | new HtmlWebpackPlugin({ 59 | filename: 'index.html', 60 | template: 'index.html', 61 | inject: true, 62 | favicon: path.resolve('favicon.ico') 63 | }), 64 | // copy custom static assets 65 | new CopyWebpackPlugin([ 66 | { 67 | from: path.resolve(__dirname, '../static'), 68 | to: config.dev.assetsSubDirectory, 69 | ignore: ['.*'] 70 | } 71 | ]) 72 | ] 73 | }) 74 | 75 | module.exports = new Promise((resolve, reject) => { 76 | portfinder.basePort = process.env.PORT || config.dev.port 77 | portfinder.getPort((err, port) => { 78 | if (err) { 79 | reject(err) 80 | } else { 81 | // publish the new Port, necessary for e2e tests 82 | process.env.PORT = port 83 | // add port to devServer config 84 | devWebpackConfig.devServer.port = port 85 | 86 | // Add FriendlyErrorsPlugin 87 | devWebpackConfig.plugins.push(new FriendlyErrorsPlugin({ 88 | compilationSuccessInfo: { 89 | messages: [`Your application is running here: http://${devWebpackConfig.devServer.host}:${port}`], 90 | }, 91 | onErrors: config.dev.notifyOnErrors 92 | ? utils.createNotifierCallback() 93 | : undefined 94 | })) 95 | 96 | resolve(devWebpackConfig) 97 | } 98 | }) 99 | }) 100 | -------------------------------------------------------------------------------- /vue_font_end/build/webpack.prod.conf.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const path = require('path') 3 | const utils = require('./utils') 4 | const webpack = require('webpack') 5 | const config = require('../config') 6 | const merge = require('webpack-merge') 7 | const baseWebpackConfig = require('./webpack.base.conf') 8 | const CopyWebpackPlugin = require('copy-webpack-plugin') 9 | const HtmlWebpackPlugin = require('html-webpack-plugin') 10 | const ExtractTextPlugin = require('extract-text-webpack-plugin') 11 | const OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin') 12 | const UglifyJsPlugin = require('uglifyjs-webpack-plugin') 13 | 14 | const env = process.env.NODE_ENV === 'testing' 15 | ? require('../config/test.env') 16 | : require('../config/prod.env') 17 | 18 | const webpackConfig = merge(baseWebpackConfig, { 19 | module: { 20 | rules: utils.styleLoaders({ 21 | sourceMap: config.build.productionSourceMap, 22 | extract: true, 23 | usePostCSS: true 24 | }) 25 | }, 26 | devtool: config.build.productionSourceMap ? config.build.devtool : false, 27 | output: { 28 | path: config.build.assetsRoot, 29 | filename: utils.assetsPath('js/[name].[chunkhash].js'), 30 | chunkFilename: utils.assetsPath('js/[id].[chunkhash].js') 31 | }, 32 | plugins: [ 33 | // http://vuejs.github.io/vue-loader/en/workflow/production.html 34 | new webpack.DefinePlugin({ 35 | 'process.env': env 36 | }), 37 | new UglifyJsPlugin({ 38 | uglifyOptions: { 39 | compress: { 40 | warnings: false 41 | } 42 | }, 43 | sourceMap: config.build.productionSourceMap, 44 | parallel: true 45 | }), 46 | // extract css into its own file 47 | new ExtractTextPlugin({ 48 | filename: utils.assetsPath('css/[name].[contenthash].css'), 49 | // Setting the following option to `false` will not extract CSS from codesplit chunks. 50 | // Their CSS will instead be inserted dynamically with style-loader when the codesplit chunk has been loaded by webpack. 51 | // It's currently set to `true` because we are seeing that sourcemaps are included in the codesplit bundle as well when it's `false`, 52 | // increasing file size: https://github.com/vuejs-templates/webpack/issues/1110 53 | allChunks: true, 54 | }), 55 | // Compress extracted CSS. We are using this plugin so that possible 56 | // duplicated CSS from different components can be deduped. 57 | new OptimizeCSSPlugin({ 58 | cssProcessorOptions: config.build.productionSourceMap 59 | ? { safe: true, map: { inline: false } } 60 | : { safe: true } 61 | }), 62 | // generate dist index.html with correct asset hash for caching. 63 | // you can customize output by editing /index.html 64 | // see https://github.com/ampedandwired/html-webpack-plugin 65 | new HtmlWebpackPlugin({ 66 | filename: process.env.NODE_ENV === 'testing' 67 | ? 'index.html' 68 | : config.build.index, 69 | template: 'index.html', 70 | inject: true, 71 | favicon: path.resolve('favicon.ico'), 72 | minify: { 73 | removeComments: true, 74 | collapseWhitespace: true, 75 | removeAttributeQuotes: true 76 | // more options: 77 | // https://github.com/kangax/html-minifier#options-quick-reference 78 | }, 79 | // necessary to consistently work with multiple chunks via CommonsChunkPlugin 80 | chunksSortMode: 'dependency' 81 | }), 82 | // keep module.id stable when vendor modules does not change 83 | new webpack.HashedModuleIdsPlugin(), 84 | // enable scope hoisting 85 | new webpack.optimize.ModuleConcatenationPlugin(), 86 | // split vendor js into its own file 87 | new webpack.optimize.CommonsChunkPlugin({ 88 | name: 'vendor', 89 | minChunks (module) { 90 | // any required modules inside node_modules are extracted to vendor 91 | return ( 92 | module.resource && 93 | /\.js$/.test(module.resource) && 94 | module.resource.indexOf( 95 | path.join(__dirname, '../node_modules') 96 | ) === 0 97 | ) 98 | } 99 | }), 100 | // extract webpack runtime and module manifest to its own file in order to 101 | // prevent vendor hash from being updated whenever app bundle is updated 102 | new webpack.optimize.CommonsChunkPlugin({ 103 | name: 'manifest', 104 | minChunks: Infinity 105 | }), 106 | // This instance extracts shared chunks from code splitted chunks and bundles them 107 | // in a separate chunk, similar to the vendor chunk 108 | // see: https://webpack.js.org/plugins/commons-chunk-plugin/#extra-async-commons-chunk 109 | new webpack.optimize.CommonsChunkPlugin({ 110 | name: 'app', 111 | async: 'vendor-async', 112 | children: true, 113 | minChunks: 3 114 | }), 115 | 116 | // copy custom static assets 117 | new CopyWebpackPlugin([ 118 | { 119 | from: path.resolve(__dirname, '../static'), 120 | to: config.build.assetsSubDirectory, 121 | ignore: ['.*'] 122 | } 123 | ]) 124 | ] 125 | }) 126 | 127 | if (config.build.productionGzip) { 128 | const CompressionWebpackPlugin = require('compression-webpack-plugin') 129 | 130 | webpackConfig.plugins.push( 131 | new CompressionWebpackPlugin({ 132 | asset: '[path].gz[query]', 133 | algorithm: 'gzip', 134 | test: new RegExp( 135 | '\\.(' + 136 | config.build.productionGzipExtensions.join('|') + 137 | ')$' 138 | ), 139 | threshold: 10240, 140 | minRatio: 0.8 141 | }) 142 | ) 143 | } 144 | 145 | if (config.build.bundleAnalyzerReport) { 146 | const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin 147 | webpackConfig.plugins.push(new BundleAnalyzerPlugin()) 148 | } 149 | 150 | module.exports = webpackConfig 151 | -------------------------------------------------------------------------------- /vue_font_end/config/dev.env.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const merge = require('webpack-merge') 3 | const prodEnv = require('./prod.env') 4 | 5 | module.exports = merge(prodEnv, { 6 | NODE_ENV: '"development"' 7 | }) 8 | -------------------------------------------------------------------------------- /vue_font_end/config/index.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | // Template version: 1.3.1 3 | // see http://vuejs-templates.github.io/webpack for documentation. 4 | var proxy = require('http-proxy-middleware'); 5 | const path = require('path') 6 | 7 | module.exports = { 8 | dev: { 9 | proxyTable: { 10 | '/api': { 11 | target: 'http://localhost:3000', 12 | changeOrigin: true, 13 | pathRewrite: { 14 | '^/api': '' 15 | } 16 | } 17 | }, 18 | // Paths 19 | assetsSubDirectory: 'static', 20 | assetsPublicPath: '/', 21 | 22 | 23 | // Various Dev Server settings 24 | host: 'localhost', // can be overwritten by process.env.HOST 25 | port: 8080, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined 26 | autoOpenBrowser: false, 27 | errorOverlay: true, 28 | notifyOnErrors: true, 29 | poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions- 30 | 31 | 32 | /** 33 | * Source Maps 34 | */ 35 | 36 | // https://webpack.js.org/configuration/devtool/#development 37 | devtool: 'cheap-module-eval-source-map', 38 | 39 | // If you have problems debugging vue-files in devtools, 40 | // set this to false - it *may* help 41 | // https://vue-loader.vuejs.org/en/options.html#cachebusting 42 | cacheBusting: true, 43 | 44 | cssSourceMap: true 45 | }, 46 | 47 | build: { 48 | // Template for index.html 49 | index: path.resolve(__dirname, '../dist/index.html'), 50 | 51 | // Paths 52 | assetsRoot: path.resolve(__dirname, '../dist'), 53 | assetsSubDirectory: 'static', 54 | assetsPublicPath: './', 55 | proxyTable: { 56 | '/auth/manager': { 57 | target: 'http://localhost:3000', 58 | changeOrigin: true 59 | } 60 | }, 61 | 62 | /** 63 | * Source Maps 64 | */ 65 | 66 | productionSourceMap: true, 67 | // https://webpack.js.org/configuration/devtool/#production 68 | devtool: '#source-map', 69 | 70 | // Gzip off by default as many popular static hosts such as 71 | // Surge or Netlify already gzip all static assets for you. 72 | // Before setting to `true`, make sure to: 73 | // npm install --save-dev compression-webpack-plugin 74 | productionGzip: false, 75 | productionGzipExtensions: ['js', 'css'], 76 | 77 | // Run the build command with an extra argument to 78 | // View the bundle analyzer report after build finishes: 79 | // `npm run build --report` 80 | // Set to `true` or `false` to always turn it on or off 81 | bundleAnalyzerReport: process.env.npm_config_report 82 | } 83 | } 84 | -------------------------------------------------------------------------------- /vue_font_end/config/prod.env.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | module.exports = { 3 | NODE_ENV: '"production"' 4 | } 5 | -------------------------------------------------------------------------------- /vue_font_end/config/test.env.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const merge = require('webpack-merge') 3 | const devEnv = require('./dev.env') 4 | 5 | module.exports = merge(devEnv, { 6 | NODE_ENV: '"testing"' 7 | }) 8 | -------------------------------------------------------------------------------- /vue_font_end/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/neroneroffy/vue-backage/98640ebcb54e7a471c3f4248b375b1b9d4ce0e80/vue_font_end/favicon.ico -------------------------------------------------------------------------------- /vue_font_end/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 爸爸的选择供应链 7 | 8 | 9 |
10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /vue_font_end/jxc.xmind: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/neroneroffy/vue-backage/98640ebcb54e7a471c3f4248b375b1b9d4ce0e80/vue_font_end/jxc.xmind -------------------------------------------------------------------------------- /vue_font_end/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "daddy_choice_vue", 3 | "version": "1.0.0", 4 | "description": "A Vue.js project", 5 | "author": "capslocktao", 6 | "private": true, 7 | "scripts": { 8 | "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js", 9 | "start": "npm run dev", 10 | "unit": "jest --config test/unit/jest.conf.js --coverage", 11 | "e2e": "node test/e2e/runner.js", 12 | "test": "npm run unit && npm run e2e", 13 | "build": "node build/build.js" 14 | }, 15 | "dependencies": { 16 | "axios": "^0.17.1", 17 | "echarts": "^4.0.2", 18 | "iview": "^2.8.0", 19 | "vue": "^2.5.2", 20 | "vue-router": "^3.0.1", 21 | "vuex": "^3.0.1" 22 | }, 23 | "devDependencies": { 24 | "autoprefixer": "^7.1.2", 25 | "babel-core": "^6.22.1", 26 | "babel-helper-vue-jsx-merge-props": "^2.0.3", 27 | "babel-jest": "^21.0.2", 28 | "babel-loader": "^7.1.1", 29 | "babel-plugin-dynamic-import-node": "^1.2.0", 30 | "babel-plugin-import": "^1.6.3", 31 | "babel-plugin-syntax-jsx": "^6.18.0", 32 | "babel-plugin-transform-es2015-modules-commonjs": "^6.26.0", 33 | "babel-plugin-transform-runtime": "^6.22.0", 34 | "babel-plugin-transform-vue-jsx": "^3.5.0", 35 | "babel-preset-env": "^1.3.2", 36 | "babel-preset-stage-2": "^6.22.0", 37 | "babel-register": "^6.22.0", 38 | "chalk": "^2.0.1", 39 | "chromedriver": "^2.27.2", 40 | "copy-webpack-plugin": "^4.0.1", 41 | "cross-spawn": "^5.0.1", 42 | "css-loader": "^0.28.0", 43 | "extract-text-webpack-plugin": "^3.0.0", 44 | "file-loader": "^1.1.4", 45 | "friendly-errors-webpack-plugin": "^1.6.1", 46 | "html-webpack-plugin": "^2.30.1", 47 | "http-proxy-middleware": "^0.17.4", 48 | "jest": "^22.0.4", 49 | "jest-serializer-vue": "^0.3.0", 50 | "nightwatch": "^0.9.12", 51 | "node-less": "^1.0.0", 52 | "node-notifier": "^5.1.2", 53 | "optimize-css-assets-webpack-plugin": "^3.2.0", 54 | "ora": "^1.2.0", 55 | "portfinder": "^1.0.13", 56 | "postcss-import": "^11.0.0", 57 | "postcss-loader": "^2.0.8", 58 | "postcss-url": "^7.2.1", 59 | "rimraf": "^2.6.0", 60 | "selenium-server": "^3.0.1", 61 | "semver": "^5.3.0", 62 | "shelljs": "^0.7.6", 63 | "stylus": "^0.54.5", 64 | "stylus-loader": "^3.0.1", 65 | "uglifyjs-webpack-plugin": "^1.1.1", 66 | "url-loader": "^0.5.8", 67 | "vue-jest": "^1.0.2", 68 | "vue-loader": "^13.3.0", 69 | "vue-style-loader": "^3.0.1", 70 | "vue-template-compiler": "^2.5.2", 71 | "webpack": "^3.6.0", 72 | "webpack-bundle-analyzer": "^2.9.0", 73 | "webpack-dev-server": "^2.9.1", 74 | "webpack-merge": "^4.1.0" 75 | }, 76 | "engines": { 77 | "node": ">= 6.0.0", 78 | "npm": ">= 3.0.0" 79 | }, 80 | "browserslist": [ 81 | "> 1%", 82 | "last 2 versions", 83 | "not ie <= 8" 84 | ], 85 | "proxy": "http://localhost:3000" 86 | } 87 | -------------------------------------------------------------------------------- /vue_font_end/src/App.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 27 | 28 | 33 | -------------------------------------------------------------------------------- /vue_font_end/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/neroneroffy/vue-backage/98640ebcb54e7a471c3f4248b375b1b9d4ce0e80/vue_font_end/src/assets/logo.png -------------------------------------------------------------------------------- /vue_font_end/src/components/HelloWorld.vue: -------------------------------------------------------------------------------- 1 | 85 | 86 | 96 | 97 | 98 | 114 | -------------------------------------------------------------------------------- /vue_font_end/src/components/base-title.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 18 | 19 | 38 | -------------------------------------------------------------------------------- /vue_font_end/src/components/commodity-picker/commodity-picker.styl: -------------------------------------------------------------------------------- 1 | .commody-picker 2 | width: 600px 3 | height:450px 4 | position relative 5 | padding-bottom 40px 6 | .loading 7 | width: 30px 8 | height: 30px 9 | position absolute 10 | top:0 11 | left 0 12 | right 0 13 | bottom 0 14 | margin auto 15 | .page 16 | position absolute 17 | bottom -5px 18 | right 0 19 | .search-box 20 | display flex 21 | justify-content flex-end 22 | .input-box 23 | display flex 24 | justify-content flex-end 25 | 26 | -------------------------------------------------------------------------------- /vue_font_end/src/components/loading.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 14 | 15 | 30 | -------------------------------------------------------------------------------- /vue_font_end/src/const/api.js: -------------------------------------------------------------------------------- 1 | export const API = '/api' 2 | export const HOST = '' 3 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/auth.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 55 | 56 | 59 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/base-data/address/address.styl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/neroneroffy/vue-backage/98640ebcb54e7a471c3f4248b375b1b9d4ce0e80/vue_font_end/src/containers/base-data/address/address.styl -------------------------------------------------------------------------------- /vue_font_end/src/containers/base-data/address/address.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | 13 | 16 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/base-data/client/client.styl: -------------------------------------------------------------------------------- 1 | .pagination{ 2 | margin-top: 20px; 3 | display: flex; 4 | justify-content: flex-end; 5 | } 6 | .search-wrapper{ 7 | display: flex; 8 | justify-content: space-between; 9 | .add{ 10 | height: 32px 11 | } 12 | .ivu-form-item{ 13 | margin-right: 30px; 14 | &:last-child{ 15 | margin-right 0 16 | } 17 | } 18 | } 19 | .avatar-edit-display{ 20 | width: 60px; 21 | height: 60px; 22 | line-height :60px 23 | font-size 35px; 24 | margin-top 10px 25 | } 26 | .ivu-page-options{ 27 | position relative 28 | } 29 | .pagination-wrapper{ 30 | position relative; 31 | 32 | } 33 | .ivu-page-options-sizer{ 34 | margin-right 0 35 | } 36 | .status:hover{ 37 | border-color none!important 38 | } 39 | 40 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/base-data/client/edit-client/edit-client.styl: -------------------------------------------------------------------------------- 1 | .edit-client 2 | width: 600px 3 | 4 | .detail-address{ 5 | margin-top 10px 6 | } 7 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/base-data/commodity/commodity.styl: -------------------------------------------------------------------------------- 1 | .pagination{ 2 | margin-top: 20px; 3 | display: flex; 4 | justify-content: flex-end; 5 | } 6 | .search-wrapper{ 7 | display: flex; 8 | justify-content: space-between; 9 | .add{ 10 | height: 32px 11 | } 12 | .ivu-form-item{ 13 | margin-right: 30px; 14 | &:last-child{ 15 | margin-right 0 16 | } 17 | } 18 | } 19 | .avatar-edit-display{ 20 | width: 60px; 21 | height: 60px; 22 | line-height :60px 23 | font-size 35px; 24 | margin-top 10px 25 | } 26 | .ivu-page-options{ 27 | position relative 28 | } 29 | .pagination-wrapper{ 30 | position relative; 31 | 32 | } 33 | .ivu-page-options-sizer{ 34 | margin-right 0 35 | } 36 | .status:hover{ 37 | border-color none!important 38 | } 39 | 40 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/base-data/commodity/edit-commodity/edit-commodity.styl: -------------------------------------------------------------------------------- 1 | .edit-commodity{ 2 | width: 600px 3 | } 4 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/base-data/commodity/edit-commodity/edit-commodity.vue: -------------------------------------------------------------------------------- 1 | 41 | 42 | 128 | 129 | 132 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/base-data/contact/contact.styl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/neroneroffy/vue-backage/98640ebcb54e7a471c3f4248b375b1b9d4ce0e80/vue_font_end/src/containers/base-data/contact/contact.styl -------------------------------------------------------------------------------- /vue_font_end/src/containers/base-data/contact/contact.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | 13 | 16 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/base-data/materiel/edit-materiel/edit-materiel.styl: -------------------------------------------------------------------------------- 1 | .edit-materiel 2 | width: 600px 3 | .detail-address{ 4 | margin-top 10px 5 | } 6 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/base-data/materiel/edit-materiel/edit-materiel.vue: -------------------------------------------------------------------------------- 1 | 26 | 27 | 83 | 84 | 87 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/base-data/materiel/materiel.styl: -------------------------------------------------------------------------------- 1 | .pagination{ 2 | margin-top: 20px; 3 | display: flex; 4 | justify-content: flex-end; 5 | } 6 | .search-wrapper{ 7 | display: flex; 8 | justify-content: space-between; 9 | .add{ 10 | height: 32px 11 | } 12 | .ivu-form-item{ 13 | margin-right: 30px; 14 | &:last-child{ 15 | margin-right 0 16 | } 17 | } 18 | } 19 | .avatar-edit-display{ 20 | width: 60px; 21 | height: 60px; 22 | line-height :60px 23 | font-size 35px; 24 | margin-top 10px 25 | } 26 | .ivu-page-options{ 27 | position relative 28 | } 29 | .pagination-wrapper{ 30 | position relative; 31 | 32 | } 33 | .ivu-page-options-sizer{ 34 | margin-right 0 35 | } 36 | .status:hover{ 37 | border-color none!important 38 | } 39 | 40 | 41 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/base-data/present/edit-present/edit-present.styl: -------------------------------------------------------------------------------- 1 | .edit-client 2 | width: 600px 3 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/base-data/present/edit-present/edit-present.vue: -------------------------------------------------------------------------------- 1 | 33 | 34 | 134 | 135 | 138 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/base-data/present/present.styl: -------------------------------------------------------------------------------- 1 | .pagination{ 2 | margin-top: 20px; 3 | display: flex; 4 | justify-content: flex-end; 5 | } 6 | .search-wrapper{ 7 | display: flex; 8 | justify-content: space-between; 9 | .add{ 10 | height: 32px 11 | } 12 | .ivu-form-item{ 13 | margin-right: 30px; 14 | &:last-child{ 15 | margin-right 0 16 | } 17 | } 18 | } 19 | .avatar-edit-display{ 20 | width: 60px; 21 | height: 60px; 22 | line-height :60px 23 | font-size 35px; 24 | margin-top 10px 25 | } 26 | .ivu-page-options{ 27 | position relative 28 | } 29 | .pagination-wrapper{ 30 | position relative; 31 | 32 | } 33 | .ivu-page-options-sizer{ 34 | margin-right 0 35 | } 36 | .status:hover{ 37 | border-color none!important 38 | } 39 | 40 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/base-data/stock-price/stock-price.styl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/neroneroffy/vue-backage/98640ebcb54e7a471c3f4248b375b1b9d4ce0e80/vue_font_end/src/containers/base-data/stock-price/stock-price.styl -------------------------------------------------------------------------------- /vue_font_end/src/containers/base-data/stock-price/stock-price.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 10 | 11 | 14 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/base-data/supplier/edit-supplier/edit-supplier.styl: -------------------------------------------------------------------------------- 1 | .edit-supplier 2 | width: 600px 3 | 4 | 5 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/base-data/supplier/edit-supplier/edit-supplier.vue: -------------------------------------------------------------------------------- 1 | 42 | 43 | 157 | 158 | 161 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/base-data/supplier/supplier.styl: -------------------------------------------------------------------------------- 1 | .pagination{ 2 | margin-top: 20px; 3 | display: flex; 4 | justify-content: flex-end; 5 | } 6 | .search-wrapper{ 7 | display: flex; 8 | justify-content: space-between; 9 | .add{ 10 | height: 32px 11 | } 12 | .ivu-form-item{ 13 | margin-right: 30px; 14 | &:last-child{ 15 | margin-right 0 16 | } 17 | } 18 | } 19 | .avatar-edit-display{ 20 | width: 60px; 21 | height: 60px; 22 | line-height :60px 23 | font-size 35px; 24 | margin-top 10px 25 | } 26 | .ivu-page-options{ 27 | position relative 28 | } 29 | .pagination-wrapper{ 30 | position relative; 31 | 32 | } 33 | .ivu-page-options-sizer{ 34 | margin-right 0 35 | } 36 | .status:hover{ 37 | border-color none!important 38 | } 39 | 40 | 41 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/base-data/unit/edit-unit/edit-unit.styl: -------------------------------------------------------------------------------- 1 | .edit-unit 2 | width: 900px 3 | .ivu-form-item{ 4 | 5 | 6 | } 7 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/base-data/unit/edit-unit/edit-unit.vue: -------------------------------------------------------------------------------- 1 | 37 | 38 | 171 | 172 | 175 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/base-data/unit/unit.styl: -------------------------------------------------------------------------------- 1 | .pagination{ 2 | margin-top: 20px; 3 | display: flex; 4 | justify-content: flex-end; 5 | } 6 | .search-wrapper{ 7 | display: flex; 8 | justify-content: space-between; 9 | margin-bottom 30px 10 | .add{ 11 | height: 32px 12 | } 13 | .ivu-form-item{ 14 | margin-right: 30px; 15 | &:last-child{ 16 | margin-right 0 17 | } 18 | } 19 | } 20 | .avatar-edit-display{ 21 | width: 60px; 22 | height: 60px; 23 | line-height :60px 24 | font-size 35px; 25 | margin-top 10px 26 | } 27 | .ivu-page-options{ 28 | position relative 29 | } 30 | .pagination-wrapper{ 31 | position relative; 32 | 33 | } 34 | .ivu-page-options-sizer{ 35 | margin-right 0 36 | } 37 | .status:hover{ 38 | border-color none!important 39 | } 40 | 41 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/base-data/unit/unit.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 149 | 150 | 153 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/base-data/warehouse/edit-warehouse/edit-warehouse.styl: -------------------------------------------------------------------------------- 1 | .edit-warehouse{ 2 | width: 600px 3 | } 4 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/base-data/warehouse/edit-warehouse/edit-warehouse.vue: -------------------------------------------------------------------------------- 1 | 41 | 42 | 157 | 158 | 161 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/base-data/warehouse/warehouse.styl: -------------------------------------------------------------------------------- 1 | .pagination{ 2 | margin-top: 20px; 3 | display: flex; 4 | justify-content: flex-end; 5 | } 6 | .search-wrapper{ 7 | display: flex; 8 | justify-content: space-between; 9 | .add{ 10 | height: 32px 11 | 12 | } 13 | .ivu-form-item{ 14 | margin-right: 30px; 15 | &:last-child{ 16 | margin-right 0 17 | } 18 | } 19 | } 20 | .avatar-edit-display{ 21 | width: 60px; 22 | height: 60px; 23 | line-height :60px 24 | font-size 35px; 25 | margin-top 10px 26 | } 27 | .ivu-page-options{ 28 | position relative 29 | } 30 | .pagination-wrapper{ 31 | position relative; 32 | 33 | } 34 | .ivu-page-options-sizer{ 35 | margin-right 0 36 | } 37 | .status:hover{ 38 | border-color none!important 39 | } 40 | 41 | 42 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/data-analyze/data-analyze.styl: -------------------------------------------------------------------------------- 1 | .chart 2 | width: 100%; 3 | .chart-item-wrapper 4 | width: 100% 5 | display flex 6 | justify-content flex-start 7 | margin-bottom 80px; 8 | &:last-child 9 | margin-bottom 0 10 | .chart-item 11 | width: 50%; 12 | height 500px 13 | 14 | 15 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/data-analyze/month-sales/month-sales.styl: -------------------------------------------------------------------------------- 1 | .month-sales 2 | #month-sales 3 | width: 100% 4 | height 700px 5 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/data-analyze/month-sales/month-sales.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 75 | 76 | 79 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/data-analyze/sale-distribution/sale-distribution.styl: -------------------------------------------------------------------------------- 1 | .sale-distribution 2 | #sale-distribution 3 | width: 100% 4 | height 800px 5 | margin-bottom 80px 6 | #area-sale-distribution 7 | width: 100% 8 | height: 800px 9 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/data-analyze/sale-rate/sale-rate.styl: -------------------------------------------------------------------------------- 1 | .sale-rate 2 | #sale-rate-area 3 | width: 100% 4 | height: 700px 5 | #sale-rate-people 6 | width: 100% 7 | height: 700px 8 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/data-analyze/sale-rate/sale-rate.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 155 | 156 | 159 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/data-analyze/year-grow/year-grow.styl: -------------------------------------------------------------------------------- 1 | .year-grow 2 | #year-grow 3 | width: 100% 4 | height: 700px 5 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/data-analyze/year-grow/year-grow.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 120 | 121 | 124 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/data-analyze/year.json: -------------------------------------------------------------------------------- 1 | { 2 | "data":{ 3 | "dataPrev":[2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3], 4 | "dataNow":[3.9, 5.9, 11.1, 18.7, 48.3, 69.2, 231.6, 46.6, 55.4, 18.4, 10.3, 0.7] 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/login/login.styl: -------------------------------------------------------------------------------- 1 | .login{ 2 | width: 100%; 3 | height: 100%; 4 | background-image: url('https://file.iviewui.com/iview-admin/login_bg.jpg'); 5 | background-size: cover; 6 | background-position: center; 7 | position: relative; 8 | &-con{ 9 | position: absolute; 10 | right: 160px; 11 | top: 50%; 12 | transform: translateY(-60%); 13 | width: 300px; 14 | &-header{ 15 | font-size: 16px; 16 | font-weight: 300; 17 | text-align: center; 18 | padding: 30px 0; 19 | } 20 | .form-con{ 21 | padding: 10px 0 0; 22 | } 23 | .login-tip{ 24 | font-size: 10px; 25 | text-align: center; 26 | color: #c3c3c3; 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/login/login.vue: -------------------------------------------------------------------------------- 1 | 35 | 36 | 97 | 98 | 101 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/panel/panel.styl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/neroneroffy/vue-backage/98640ebcb54e7a471c3f4248b375b1b9d4ce0e80/vue_font_end/src/containers/panel/panel.styl -------------------------------------------------------------------------------- /vue_font_end/src/containers/panel/panel.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | 13 | 16 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/repertory/in/edit-in/edit-in.vue: -------------------------------------------------------------------------------- 1 | 16 | 17 | 85 | 86 | 89 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/repertory/in/in.styl: -------------------------------------------------------------------------------- 1 | .search{ 2 | display flex 3 | justify-content flex-end 4 | } 5 | .pagination{ 6 | margin-top: 20px; 7 | display: flex; 8 | justify-content: flex-end; 9 | } 10 | 11 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/repertory/out/edit-out/edit-out.vue: -------------------------------------------------------------------------------- 1 | 16 | 17 | 84 | 85 | 88 | 89 | 90 | 91 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/repertory/record/edit-record/edit-record.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 62 | 63 | 66 | 67 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/repertory/record/record.styl: -------------------------------------------------------------------------------- 1 | .pagination{ 2 | margin-top: 20px; 3 | display: flex; 4 | justify-content: flex-end; 5 | } 6 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/repertory/stock-taking/stock-taking.styl: -------------------------------------------------------------------------------- 1 | .search-wrapper{ 2 | display: flex; 3 | justify-content: space-between; 4 | .ivu-form-item{ 5 | margin-right: 30px; 6 | &:last-child{ 7 | margin-right 0 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/selling/apply-record/apply-record.styl: -------------------------------------------------------------------------------- 1 | .apply-record 2 | .pagination 3 | margin-top: 20px; 4 | display: flex; 5 | justify-content: flex-end; 6 | .search-wrapper 7 | display: flex; 8 | justify-content: space-between; 9 | .add 10 | height: 32px 11 | .ivu-form-item 12 | margin-right: 30px; 13 | &:last-child 14 | margin-right 0 15 | .avatar-edit-display 16 | width: 60px; 17 | height: 60px; 18 | line-height :60px 19 | font-size 35px; 20 | margin-top 10px 21 | .ivu-page-options 22 | position relative 23 | .pagination-wrapper 24 | position relative; 25 | .ivu-page-options-sizer 26 | margin-right 0 27 | .status:hover 28 | border-color none!important 29 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/selling/apply-record/edit-apply-record/edit-apply-record.styl: -------------------------------------------------------------------------------- 1 | .search-wrapper 2 | display: flex; 3 | justify-content: space-between; 4 | .ivu-form-item 5 | margin-right: 10px; 6 | &:last-child 7 | margin-right 5 8 | 9 | .remark 10 | color #666666 11 | margin-top 30px 12 | p 13 | margin-bottom 6px 14 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/selling/apply-record/edit-apply-record/edit-apply-record.vue: -------------------------------------------------------------------------------- 1 | 32 | 33 | 161 | 162 | 166 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/selling/order-form/edit-order-form/edit-order-form.styl: -------------------------------------------------------------------------------- 1 | .pagination{ 2 | margin-top: 20px; 3 | display: flex; 4 | justify-content: flex-end; 5 | } 6 | .search-wrapper{ 7 | display: flex; 8 | justify-content: space-between; 9 | .add{ 10 | height: 32px 11 | } 12 | .ivu-form-item{ 13 | margin-right: 15px; 14 | &:last-child{ 15 | margin-right 0 16 | } 17 | } 18 | } 19 | .avatar-edit-display{ 20 | width: 60px; 21 | height: 60px; 22 | line-height :60px 23 | font-size 35px; 24 | margin-top 10px 25 | } 26 | .ivu-page-options{ 27 | position relative 28 | } 29 | .pagination-wrapper{ 30 | position relative; 31 | 32 | } 33 | .ivu-page-options-sizer{ 34 | margin-right 0 35 | } 36 | .status:hover{ 37 | border-color none!important 38 | } 39 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/selling/order-form/order-form.styl: -------------------------------------------------------------------------------- 1 | .pagination{ 2 | margin-top: 20px; 3 | display: flex; 4 | justify-content: flex-end; 5 | } 6 | .search-wrapper{ 7 | display: flex; 8 | justify-content: space-between; 9 | .add{ 10 | height: 32px 11 | } 12 | .ivu-form-item{ 13 | margin-left: 15px; 14 | 15 | &:last-child{ 16 | margin-right 0 17 | } 18 | } 19 | } 20 | .avatar-edit-display{ 21 | width: 60px; 22 | height: 60px; 23 | line-height :60px 24 | font-size 35px; 25 | margin-top 10px 26 | } 27 | .ivu-page-options{ 28 | position relative 29 | } 30 | .pagination-wrapper{ 31 | position relative; 32 | 33 | } 34 | .ivu-page-options-sizer{ 35 | margin-right 0 36 | } 37 | .status:hover{ 38 | border-color none!important 39 | } 40 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/selling/stock-out/edit-stock-out/edit-stock-out.styl: -------------------------------------------------------------------------------- 1 | .edit-stock-in-order 2 | .search-wrapper 3 | display: flex; 4 | justify-content: space-between; 5 | .right-option 6 | display flex 7 | justify-content flex-end 8 | .ivu-form-item 9 | margin-right: 30px; 10 | &:last-child 11 | margin-right 0 12 | 13 | 14 | .remark 15 | color #666666 16 | margin-top 30px 17 | p 18 | margin-bottom 6px 19 | 20 | 21 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/selling/stock-out/stock-out.styl: -------------------------------------------------------------------------------- 1 | .pagination{ 2 | margin-top: 20px; 3 | display: flex; 4 | justify-content: flex-end; 5 | } 6 | .search-wrapper{ 7 | display: flex; 8 | justify-content: space-between; 9 | .add{ 10 | height: 32px 11 | } 12 | .ivu-form-item{ 13 | margin-right: 30px; 14 | &:last-child{ 15 | margin-right 0 16 | } 17 | } 18 | } 19 | .avatar-edit-display{ 20 | width: 60px; 21 | height: 60px; 22 | line-height :60px 23 | font-size 35px; 24 | margin-top 10px 25 | } 26 | .ivu-page-options{ 27 | position relative 28 | } 29 | .pagination-wrapper{ 30 | position relative; 31 | 32 | } 33 | .ivu-page-options-sizer{ 34 | margin-right 0 35 | } 36 | .status:hover{ 37 | border-color none!important 38 | } 39 | 40 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/stock/stock-in-order/edit-stock-in-order-material/edit-stock-in-order-material.styl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/neroneroffy/vue-backage/98640ebcb54e7a471c3f4248b375b1b9d4ce0e80/vue_font_end/src/containers/stock/stock-in-order/edit-stock-in-order-material/edit-stock-in-order-material.styl -------------------------------------------------------------------------------- /vue_font_end/src/containers/stock/stock-in-order/edit-stock-in-order-present/edit-stock-in-order-present.styl: -------------------------------------------------------------------------------- 1 | .edit-stock-in-order 2 | .search-wrapper 3 | display: flex; 4 | justify-content: space-between; 5 | 6 | .ivu-form-item 7 | margin-right: 30px; 8 | &:last-child 9 | margin-right 0 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/stock/stock-in-order/edit-stock-in-order/edit-stock-in-order.styl: -------------------------------------------------------------------------------- 1 | .edit-stock-in-order 2 | .search-wrapper 3 | display: flex; 4 | justify-content: space-between; 5 | .right-option 6 | display flex 7 | justify-content flex-end 8 | .ivu-form-item 9 | margin-right: 30px; 10 | &:last-child 11 | margin-right 0 12 | 13 | 14 | .remark 15 | color #666666 16 | margin-top 30px 17 | p 18 | margin-bottom 6px 19 | 20 | 21 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/stock/stock-in-order/stock-in-order.styl: -------------------------------------------------------------------------------- 1 | .pagination{ 2 | margin-top: 20px; 3 | display: flex; 4 | justify-content: flex-end; 5 | } 6 | .search-wrapper{ 7 | display: flex; 8 | justify-content: space-between; 9 | .add{ 10 | height: 32px 11 | } 12 | .ivu-form-item{ 13 | margin-right: 30px; 14 | &:last-child{ 15 | margin-right 0 16 | } 17 | } 18 | } 19 | .avatar-edit-display{ 20 | width: 60px; 21 | height: 60px; 22 | line-height :60px 23 | font-size 35px; 24 | margin-top 10px 25 | } 26 | .ivu-page-options{ 27 | position relative 28 | } 29 | .pagination-wrapper{ 30 | position relative; 31 | 32 | } 33 | .ivu-page-options-sizer{ 34 | margin-right 0 35 | } 36 | .status:hover{ 37 | border-color none!important 38 | } 39 | 40 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/stock/stock-order/edit-stock-order-material/edit-stock-order-material.styl: -------------------------------------------------------------------------------- 1 | .search-wrapper 2 | display: flex; 3 | justify-content: space-between; 4 | 5 | .ivu-form-item 6 | margin-right: 10px; 7 | &:last-child 8 | margin-right 5 9 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/stock/stock-order/edit-stock-order-present/edit-stock-order-present.styl: -------------------------------------------------------------------------------- 1 | .search-wrapper 2 | display: flex; 3 | justify-content: space-between; 4 | 5 | .ivu-form-item 6 | margin-right: 10px; 7 | &:last-child 8 | margin-right 5 9 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/stock/stock-order/edit-stock-order/edit-stock-order.styl: -------------------------------------------------------------------------------- 1 | .search-wrapper 2 | display: flex; 3 | justify-content: space-between; 4 | .ivu-form-item 5 | margin-right: 10px; 6 | &:last-child 7 | margin-right 5 8 | 9 | .remark 10 | color #666666 11 | margin-top 30px 12 | p 13 | margin-bottom 6px 14 | .check-btn 15 | height: 32px 16 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/stock/stock-order/stock-order.styl: -------------------------------------------------------------------------------- 1 | .pagination{ 2 | margin-top: 20px; 3 | display: flex; 4 | justify-content: flex-end; 5 | } 6 | .search-wrapper{ 7 | display: flex; 8 | justify-content: space-between; 9 | .add{ 10 | height: 32px 11 | } 12 | .ivu-form-item{ 13 | margin-right: 30px; 14 | &:last-child{ 15 | margin-right 0 16 | } 17 | } 18 | } 19 | .avatar-edit-display{ 20 | width: 60px; 21 | height: 60px; 22 | line-height :60px 23 | font-size 35px; 24 | margin-top 10px 25 | } 26 | .ivu-page-options{ 27 | position relative 28 | } 29 | .pagination-wrapper{ 30 | position relative; 31 | 32 | } 33 | .ivu-page-options-sizer{ 34 | margin-right 0 35 | } 36 | .status:hover{ 37 | border-color none!important 38 | } 39 | 40 | 41 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/sys-manage/organization/edit-organization/edit-organization.styl: -------------------------------------------------------------------------------- 1 | @import '../../../../stylus/base.styl'; 2 | 3 | .edit-organization 4 | .title 5 | font-size 20px 6 | color #666 7 | margin-bottom 35px 8 | position relative 9 | padding-left 15px 10 | &:before 11 | content "" 12 | display block 13 | position absolute 14 | top 4px 15 | left 0 16 | width 5px 17 | height 20px 18 | background #2d8cf0 19 | .edit-organization-wrapper 20 | width: 600px 21 | 22 | 23 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/sys-manage/organization/organization.styl: -------------------------------------------------------------------------------- 1 | #organization{ 2 | .search-wrapper{ 3 | display: flex; 4 | justify-content: space-between; 5 | .add{ 6 | height: 32px 7 | } 8 | .ivu-form-item{ 9 | margin-right: 30px; 10 | &:last-child{ 11 | margin-right 0 12 | } 13 | } 14 | } 15 | .ivu-table-expanded-cell{ 16 | border:none; 17 | background #fff; 18 | .ivu-table-wrapper{ 19 | border:none 20 | } 21 | .ivu-table::after{ 22 | width: 0 23 | } 24 | 25 | .ivu-table-header{ 26 | display :none 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/sys-manage/resource/resource.styl: -------------------------------------------------------------------------------- 1 | 2 | .ivu-btn.active,.ivu-btn:active{ 3 | border-color :none!important 4 | } 5 | .ivu-btn:hover{ 6 | border-color :none!important 7 | } 8 | 9 | 10 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/sys-manage/resource/resource.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 71 | 72 | 75 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/sys-manage/role/auth/auth.styl: -------------------------------------------------------------------------------- 1 | .auth{ 2 | .title{ 3 | font-size 20px 4 | color #666 5 | margin-bottom 35px 6 | position relative 7 | padding-left 15px 8 | &:before{ 9 | content "" 10 | display block 11 | position absolute 12 | top 4px 13 | left 0 14 | width 5px 15 | height 20px 16 | background #2d8cf0 17 | } 18 | 19 | } 20 | .ivu-tree{ 21 | display :flex; 22 | justify-content flex-start 23 | .ivu-tree-children{ 24 | margin-right 20px 25 | } 26 | } 27 | .first-level{ 28 | border-bottom: 1px solid #e9e9e9; 29 | padding-bottom:6px; 30 | margin-bottom:15px; 31 | 32 | &:last-child{ 33 | border-bottom none 34 | } 35 | .second-level{ 36 | margin-left 10px; 37 | margin-top 15px 38 | .second-level-title{ 39 | margin-bottom 5px 40 | } 41 | .third-level{ 42 | margin-left 10px 43 | } 44 | } 45 | } 46 | .submit-button{ 47 | margin-top 30px 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/sys-manage/role/editrole/editrole.styl: -------------------------------------------------------------------------------- 1 | .edit-role{ 2 | .role-info{ 3 | width: 600px 4 | } 5 | .title{ 6 | font-size 20px 7 | color #666 8 | margin-bottom 35px 9 | position relative 10 | padding-left 15px 11 | &:before{ 12 | content "" 13 | display block 14 | position absolute 15 | top 4px 16 | left 0 17 | width 5px 18 | height 20px 19 | background #2d8cf0 20 | } 21 | 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/sys-manage/role/editrole/editrole.vue: -------------------------------------------------------------------------------- 1 | 22 | 23 | 121 | 122 | 125 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/sys-manage/role/role.styl: -------------------------------------------------------------------------------- 1 | .role{ 2 | .new-role{ 3 | margin-bottom 30px 4 | } 5 | .first-level{ 6 | border-bottom: 1px solid #e9e9e9; 7 | padding-bottom:6px; 8 | margin-bottom:15px; 9 | .ivu-checkbox-disabled.ivu-checkbox-checked .ivu-checkbox-inner{ 10 | background #2b85e4 11 | border-color #fff 12 | border-radius 3px 13 | 14 | &:after{ 15 | border-color #fff 16 | } 17 | } 18 | &:last-child{ 19 | border-bottom none 20 | } 21 | .second-level{ 22 | margin-left 10px; 23 | margin-top 10px 24 | .third-level{ 25 | margin-left 10px 26 | } 27 | } 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/sys-manage/role/role.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 180 | 181 | 184 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/sys-manage/usermanage/usermanager.styl: -------------------------------------------------------------------------------- 1 | .pagination{ 2 | margin-top: 20px; 3 | display: flex; 4 | justify-content: flex-end; 5 | } 6 | .search-wrapper{ 7 | display: flex; 8 | justify-content: space-between; 9 | .add{ 10 | height: 32px 11 | } 12 | .ivu-form-item{ 13 | margin-right: 30px; 14 | &:last-child{ 15 | margin-right 0 16 | } 17 | } 18 | } 19 | .avatar-edit-display{ 20 | width: 60px; 21 | height: 60px; 22 | line-height :60px 23 | font-size 35px; 24 | margin-top 10px 25 | } 26 | .ivu-page-options{ 27 | position relative 28 | } 29 | .pagination-wrapper{ 30 | position relative; 31 | 32 | } 33 | .ivu-page-options-sizer{ 34 | margin-right 0 35 | } 36 | .status:hover{ 37 | border-color none!important 38 | } 39 | 40 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/sys-manage/wordbook/edit-wordbook/edit-wordBook.styl: -------------------------------------------------------------------------------- 1 | .edit-client 2 | width: 600px 3 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/sys-manage/wordbook/edit-wordbook/edit-wordbook.vue: -------------------------------------------------------------------------------- 1 | 24 | 25 | 67 | 68 | 71 | -------------------------------------------------------------------------------- /vue_font_end/src/containers/sys-manage/wordbook/wordbook.styl: -------------------------------------------------------------------------------- 1 | .pagination{ 2 | margin-top: 20px; 3 | display: flex; 4 | justify-content: flex-end; 5 | } 6 | .search-wrapper{ 7 | display: flex; 8 | justify-content: space-between; 9 | .add{ 10 | height: 32px 11 | } 12 | .ivu-form-item{ 13 | margin-right: 30px; 14 | &:last-child{ 15 | margin-right 0 16 | } 17 | } 18 | } 19 | .avatar-edit-display{ 20 | width: 60px; 21 | height: 60px; 22 | line-height :60px 23 | font-size 35px; 24 | margin-top 10px 25 | } 26 | .ivu-page-options{ 27 | position relative 28 | } 29 | .pagination-wrapper{ 30 | position relative; 31 | 32 | } 33 | .ivu-page-options-sizer{ 34 | margin-right 0 35 | } 36 | .status:hover{ 37 | border-color none!important 38 | } 39 | 40 | -------------------------------------------------------------------------------- /vue_font_end/src/interceptor.js: -------------------------------------------------------------------------------- 1 | import axios from 'axios'; 2 | import store from './store'; 3 | import router from './router' 4 | axios.interceptors.request.use((config)=>{ 5 | let xAuthToken = localStorage.getItem('xAuthToken'); 6 | 7 | if(xAuthToken){ 8 | config.headers['token'] = xAuthToken 9 | }else{ 10 | 11 | } 12 | 13 | store.dispatch('beginLoading'); 14 | //携带token 15 | return config 16 | }); 17 | axios.interceptors.response.use((config)=>{ 18 | 19 | if(config.data.flag === 'SESSION_INVALID'){ 20 | router.push('/login'); 21 | console.log(config.data); 22 | console.log('失效'); 23 | 24 | return 25 | } 26 | store.dispatch('endLoading'); 27 | 28 | // console.log(config.headers) 29 | 30 | //获取token,验证,跳转 31 | return config 32 | }) 33 | -------------------------------------------------------------------------------- /vue_font_end/src/main.js: -------------------------------------------------------------------------------- 1 | // The Vue build version to load with the `import` command 2 | // (runtime-only or standalone) has been set in webpack.base.conf with an alias. 3 | import Vue from 'vue' 4 | import App from './App' 5 | import router from './router' 6 | import iView from 'iView' 7 | import 'iview/dist/styles/iview.css'; 8 | 9 | import store from './store' 10 | import './interceptor' 11 | import axios from 'axios'; 12 | import echarts from 'echarts' 13 | Vue.use(iView); 14 | Vue.prototype.$echarts = echarts; 15 | axios.create({ 16 | headers: 'X-Auth-Token' 17 | }); 18 | Vue.prototype.$http = axios; 19 | 20 | Vue.prototype.$api = 'http://192.168.31.13:8080'; 21 | 22 | //Vue.prototype.$host = 'http://192.168.31.34:8088'; 23 | Vue.prototype.$host = 'http://jxcb.baobaofarm.com'; 24 | 25 | 26 | Vue.config.productionTip = false; 27 | 28 | //Vue.prototype.HOST = '/api' 29 | /* eslint-disable no-new */ 30 | new Vue({ 31 | el: '#app', 32 | router, 33 | store, 34 | components: { App }, 35 | template: '' 36 | }) 37 | -------------------------------------------------------------------------------- /vue_font_end/src/store/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import Vuex from 'vuex'; 3 | //import usermanage from './usermanage/usermanage'; 4 | //import user from './user'; 5 | import loading from './loading'; 6 | 7 | Vue.use(Vuex); 8 | 9 | const store = new Vuex.Store({ 10 | modules:{ 11 | //usermanage, 12 | loading, 13 | //user, 14 | 15 | } 16 | }); 17 | export default store 18 | -------------------------------------------------------------------------------- /vue_font_end/src/store/loading.js: -------------------------------------------------------------------------------- 1 | const loading = { 2 | state:{ 3 | isLoading:false, 4 | showModal:true 5 | }, 6 | mutations:{ 7 | BEGIN_LOADING(state){ 8 | state.isLoading = true 9 | }, 10 | END_LOADING(state){ 11 | state.isLoading = false 12 | }, 13 | MODAL_LOADING(state){ 14 | state.showModal = false 15 | } 16 | }, 17 | actions:{ 18 | beginLoading({ commit }){ 19 | commit('BEGIN_LOADING') 20 | }, 21 | endLoading({ commit }){ 22 | commit('END_LOADING') 23 | }, 24 | modalLoading({ commit }){ 25 | commit('MODAL_LOADING') 26 | } 27 | } 28 | }; 29 | export default loading 30 | -------------------------------------------------------------------------------- /vue_font_end/src/store/user.js: -------------------------------------------------------------------------------- 1 | const user = { 2 | state:{ 3 | user:"" 4 | }, 5 | mutations:{ 6 | USER_INFO(state,payload){ 7 | state.user = payload 8 | } 9 | }, 10 | actions:{ 11 | saveUserInfo({ commit },data){ 12 | commit('USER_INFO',data) 13 | } 14 | } 15 | }; 16 | export default user 17 | -------------------------------------------------------------------------------- /vue_font_end/src/store/usermanage/usermanage.js: -------------------------------------------------------------------------------- 1 | import axios from 'axios'; 2 | import { API } from '../../const/api' 3 | const usermanage = { 4 | state:{ 5 | list:[], 6 | total:0 7 | }, 8 | mutations:{ 9 | GET_PAGINATION_DATA(state,payload){ 10 | state.list = payload.list; 11 | state.total = payload.total 12 | }, 13 | GET_DEL_DATA(state,payload){ 14 | 15 | } 16 | }, 17 | actions:{ 18 | /* 19 | getList(context){ 20 | axios.get(`${API}/auth/manager`).then(response=>{ 21 | let res = response.data; 22 | if(res.result){ 23 | context.commit("GET_LIST",res.data) 24 | } 25 | }) 26 | }, 27 | */ 28 | getList({ commit },params){ 29 | let defaultParams = { 30 | pageNum :1, 31 | pageSize : 30 32 | }; 33 | params = params? params:defaultParams; 34 | axios.get(`${API}/auth/manager`,{params}).then(response=>{ 35 | let res = response.data; 36 | if(res.result){ 37 | commit('GET_PAGINATION_DATA',res) 38 | } 39 | }) 40 | }, 41 | delData({ commit },param){ 42 | 43 | } 44 | } 45 | }; 46 | export default usermanage 47 | -------------------------------------------------------------------------------- /vue_font_end/src/stylus/base.styl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/neroneroffy/vue-backage/98640ebcb54e7a471c3f4248b375b1b9d4ce0e80/vue_font_end/src/stylus/base.styl -------------------------------------------------------------------------------- /vue_font_end/src/stylus/iview-theme-config.less: -------------------------------------------------------------------------------- 1 | @import '~iview/src/styles/index.less'; 2 | @primary-color: #8c0776; 3 | -------------------------------------------------------------------------------- /vue_font_end/src/util/convertTime.js: -------------------------------------------------------------------------------- 1 | export default function formatDate(date){ 2 | if(!date){ 3 | return "" 4 | } 5 | var now = new Date(date) 6 | var year=now.getFullYear(); 7 | var month=now.getMonth()+1; 8 | var date=now.getDate(); 9 | var hour=now.getHours(); 10 | 11 | if(month<10){ 12 | month = "0"+month 13 | } 14 | if(hour<10){ 15 | hour = "0"+hour 16 | } 17 | var minute=now.getMinutes(); 18 | if(minute<10){ 19 | minute = "0"+minute 20 | } 21 | var second=now.getSeconds(); 22 | if(second<10){ 23 | second = "0"+second 24 | } 25 | 26 | return year+"-"+month+"-"+date+" "+hour+":"+minute+":"+second; 27 | }; 28 | 29 | -------------------------------------------------------------------------------- /vue_font_end/src/util/depCompare.js: -------------------------------------------------------------------------------- 1 | export default function depCompare (arr) { 2 | 3 | } 4 | -------------------------------------------------------------------------------- /vue_font_end/static/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/neroneroffy/vue-backage/98640ebcb54e7a471c3f4248b375b1b9d4ce0e80/vue_font_end/static/.gitkeep -------------------------------------------------------------------------------- /vue_font_end/static/applyRecord.json: -------------------------------------------------------------------------------- 1 | { 2 | "result":true, 3 | "data":[ 4 | { 5 | "date":"2018-07-23", 6 | "id":"1", 7 | "customerId":"客户唯一标识", 8 | "customerName":"客户名称", 9 | "mobilePhone":"客户电话", 10 | "applyNo":"申请单编号", 11 | "salesId":"销售人员唯一标识", 12 | "salesAccount":"所属销售人员账户", 13 | "status":"REPULSE", 14 | "applyType":"申请类型", 15 | "address":"收货地址", 16 | "mark":"备注备注" 17 | }, 18 | { 19 | "date":"2018-07-23", 20 | "id":"2", 21 | "customerId":"客户唯一标识", 22 | "customerName":"客户名称", 23 | "mobilePhone":"客户电话", 24 | "applyNo":"申请单编号", 25 | "salesId":"销售人员唯一标识", 26 | "salesAccount":"所属销售人员账户", 27 | "status":"REPULSE", 28 | "applyType":"申请类型", 29 | "address":"收货地址", 30 | "mark":"备注备注" 31 | }, 32 | { 33 | "date":"2018-07-23", 34 | "id":"3", 35 | "customerId":"客户唯一标识", 36 | "customerName":"客户名称", 37 | "mobilePhone":"客户电话", 38 | "applyNo":"申请单编号", 39 | "salesId":"销售人员唯一标识", 40 | "salesAccount":"所属销售人员账户", 41 | "status":"COMPLETE", 42 | "applyType":"申请类型", 43 | "address":"收货地址", 44 | "mark":"备注备注" 45 | }, 46 | { 47 | "date":"2018-07-23", 48 | "id":"4", 49 | "customerId":"客户唯一标识", 50 | "customerName":"客户名称", 51 | "mobilePhone":"客户电话", 52 | "applyNo":"申请单编号", 53 | "salesId":"销售人员唯一标识", 54 | "salesAccount":"所属销售人员账户", 55 | "status":"ALLSEND", 56 | "applyType":"申请类型", 57 | "address":"收货地址", 58 | "mark":"备注备注" 59 | }, 60 | { 61 | "date":"2018-07-23", 62 | "id":"5", 63 | "customerId":"客户唯一标识", 64 | "customerName":"客户名称", 65 | "mobilePhone":"客户电话", 66 | "applyNo":"申请单编号", 67 | "salesId":"销售人员唯一标识", 68 | "salesAccount":"所属销售人员账户", 69 | "status":"UNSEND", 70 | "applyType":"申请类型", 71 | "address":"收货地址", 72 | "mark":"备注备注" 73 | }, 74 | { 75 | "date":"2018-07-23", 76 | "id":"6", 77 | "customerId":"客户唯一标识", 78 | "customerName":"客户名称", 79 | "mobilePhone":"客户电话", 80 | "applyNo":"申请单编号", 81 | "salesId":"销售人员唯一标识", 82 | "salesAccount":"所属销售人员账户", 83 | "status":"UNAUDIT", 84 | "applyType":"申请类型", 85 | "address":"收货地址", 86 | "mark":"备注备注" 87 | } 88 | 89 | ] 90 | } 91 | -------------------------------------------------------------------------------- /vue_font_end/static/commodity.json: -------------------------------------------------------------------------------- 1 | { 2 | "data":[ 3 | { 4 | "id":"3213423412", 5 | "name":"拉拉裤", 6 | "unit":"包", 7 | "price":"20.00", 8 | "weight":"500g" 9 | }, 10 | { 11 | "id":"53845798", 12 | "name":"拉拉裤", 13 | "unit":"包", 14 | "price":"20.00", 15 | "weight":"500g" 16 | }, 17 | { 18 | "id":"7587539845", 19 | "name":"拉拉裤", 20 | "unit":"包", 21 | "price":"20.00", 22 | "weight":"500g" 23 | }, 24 | { 25 | "id":"8695869846", 26 | "name":"拉拉裤", 27 | "unit":"包", 28 | "price":"20.00", 29 | "weight":"500g" 30 | }, 31 | { 32 | "id":"78743837598", 33 | "name":"拉拉裤", 34 | "unit":"包", 35 | "price":"20.00", 36 | "weight":"500g" 37 | }, 38 | { 39 | "id":"878959857348", 40 | "name":"拉拉裤", 41 | "unit":"包", 42 | "price":"20.00", 43 | "weight":"500g" 44 | }, 45 | { 46 | "id":"432423423932", 47 | "name":"拉拉裤", 48 | "unit":"包", 49 | "price":"20.00", 50 | "weight":"500g" 51 | }, 52 | { 53 | "id":"231213314234", 54 | "name":"拉拉裤", 55 | "unit":"包", 56 | "price":"20.00", 57 | "weight":"500g" 58 | } 59 | ], 60 | "result":true 61 | } 62 | -------------------------------------------------------------------------------- /vue_font_end/static/customer: -------------------------------------------------------------------------------- 1 | { 2 | "result":true, 3 | "data":[ 4 | { 5 | "customerName":"李老三", 6 | "customerType":"大客户", 7 | "mobilePhone":"18840846671", 8 | "telephone":"43423432", 9 | "wechat":"gj4324234", 10 | "firstPurchaseTime":"2017年 8月 10号", 11 | "status":"二次拜访", 12 | "user":"张账户", 13 | "address":"北京市朝阳区河西务镇包楼村", 14 | "pic":"http://d.hiphotos.baidu.com/image/pic/item/43a7d933c895d1435eac3d047ff082025aaf073b.jpg" 15 | }, 16 | { 17 | "customerName":"李老三", 18 | "customerType":"大客户", 19 | "mobilePhone":"18840846671", 20 | "telephone":"43423432", 21 | "wechat":"gj4324234", 22 | "firstPurchaseTime":"2017年 8月 10号", 23 | "status":"二次拜访", 24 | "user":"张账户", 25 | "address":"北京市朝阳区河西务镇包楼村", 26 | "pic":"http://d.hiphotos.baidu.com/image/pic/item/43a7d933c895d1435eac3d047ff082025aaf073b.jpg" 27 | }, 28 | { 29 | "customerName":"李老三", 30 | "customerType":"大客户", 31 | "mobilePhone":"18840846671", 32 | "telephone":"43423432", 33 | "wechat":"gj4324234", 34 | "firstPurchaseTime":"2017年 8月 10号", 35 | "status":"二次拜访", 36 | "user":"张账户", 37 | "address":"北京市朝阳区河西务镇包楼村", 38 | "pic":"http://d.hiphotos.baidu.com/image/pic/item/43a7d933c895d1435eac3d047ff082025aaf073b.jpg" 39 | }, 40 | { 41 | "customerName":"李老三", 42 | "customerType":"大客户", 43 | "mobilePhone":"18840846671", 44 | "telephone":"43423432", 45 | "wechat":"gj4324234", 46 | "firstPurchaseTime":"2017年 8月 10号", 47 | "status":"二次拜访", 48 | "user":"张账户", 49 | "address":"北京市朝阳区河西务镇包楼村", 50 | "pic":"http://d.hiphotos.baidu.com/image/pic/item/43a7d933c895d1435eac3d047ff082025aaf073b.jpg" 51 | }, 52 | { 53 | "customerName":"李老三", 54 | "customerType":"大客户", 55 | "mobilePhone":"18840846671", 56 | "telephone":"43423432", 57 | "wechat":"gj4324234", 58 | "firstPurchaseTime":"2017年 8月 10号", 59 | "status":"二次拜访", 60 | "user":"张账户", 61 | "address":"北京市朝阳区河西务镇包楼村", 62 | "pic":"http://d.hiphotos.baidu.com/image/pic/item/43a7d933c895d1435eac3d047ff082025aaf073b.jpg" 63 | }, 64 | { 65 | "customerName":"李老三", 66 | "customerType":"大客户", 67 | "mobilePhone":"18840846671", 68 | "telephone":"43423432", 69 | "wechat":"gj4324234", 70 | "firstPurchaseTime":"2017年 8月 10号", 71 | "status":"二次拜访", 72 | "user":"张账户", 73 | "address":"北京市朝阳区河西务镇包楼村", 74 | "pic":"http://d.hiphotos.baidu.com/image/pic/item/43a7d933c895d1435eac3d047ff082025aaf073b.jpg" 75 | } 76 | ] 77 | } 78 | -------------------------------------------------------------------------------- /vue_font_end/static/editApplyRecord1.json: -------------------------------------------------------------------------------- 1 | { 2 | "result":true, 3 | "data":[ 4 | { 5 | "goodsName":"产品名称", 6 | "unitsId":"单位", 7 | "num":"数量", 8 | "mark":"备注" 9 | }, 10 | { 11 | "goodsName":"产品名称", 12 | "unitsId":"单位", 13 | "num":"数量", 14 | "mark":"备注" 15 | }, 16 | { 17 | "goodsName":"产品名称", 18 | "unitsId":"单位", 19 | "num":"数量", 20 | "mark":"备注" 21 | }, 22 | { 23 | "goodsName":"产品名称", 24 | "unitsId":"单位", 25 | "num":"数量", 26 | "mark":"备注" 27 | }, 28 | { 29 | "goodsName":"产品名称", 30 | "unitsId":"单位", 31 | "num":"数量", 32 | "mark":"备注" 33 | } 34 | ] 35 | } 36 | -------------------------------------------------------------------------------- /vue_font_end/static/editGoodsStock.json: -------------------------------------------------------------------------------- 1 | { 2 | "result":true, 3 | "baseData":{ 4 | "supplier":"1", 5 | "code":"7894565645665", 6 | "date":"2018-03-21", 7 | "orderRate":"20%", 8 | "mark":"备注备注" 9 | }, 10 | "orderData":[ 11 | { 12 | "goodsName":"没有的啊", 13 | "purchaseOrderId":"22", 14 | "goodsId":"22334", 15 | "modelSize":"NB", 16 | "unipurchasePricetsId":"4512314", 17 | "unitsId":"1", 18 | "taxPrice":"222", 19 | "discountRate":"3333", 20 | "discountAmount":"434", 21 | "num":"1", 22 | "totalPurchasePrice":"33445", 23 | "totalTaxPrice":"frf", 24 | "warehouseId":"2", 25 | "mark":"" 26 | }, 27 | { 28 | "goodsName":"没有的啊", 29 | "purchaseOrderId":"22", 30 | "modelSize":"S", 31 | "goodsId":"22334", 32 | "unipurchasePricetsId":"4512314", 33 | "unitsId":"2", 34 | "taxPrice":"222", 35 | "discountRate":"3333", 36 | "discountAmount":"434", 37 | "num":"1", 38 | "totalPurchasePrice":"33445", 39 | "totalTaxPrice":"frf", 40 | "warehouseId":"2", 41 | "mark":"" 42 | }, 43 | { 44 | "goodsName":"没有的啊", 45 | "purchaseOrderId":"22", 46 | "modelSize":"NB", 47 | "goodsId":"22334", 48 | "unipurchasePricetsId":"4512314", 49 | "taxPrice":"222", 50 | "unitsId":"1", 51 | "discountRate":"3333", 52 | "discountAmount":"434", 53 | "num":"1", 54 | "totalPurchasePrice":"33445", 55 | "totalTaxPrice":"frf", 56 | "warehouseId":"2", 57 | "mark":"" 58 | }, 59 | { 60 | "goodsName":"没有的啊", 61 | "purchaseOrderId":"22", 62 | "modelSize":"NB", 63 | "goodsId":"22334", 64 | "unipurchasePricetsId":"4512314", 65 | "unitsId":"2", 66 | "taxPrice":"222", 67 | "discountRate":"3333", 68 | "discountAmount":"434", 69 | "num":"1", 70 | "totalPurchasePrice":"33445", 71 | "totalTaxPrice":"frf", 72 | "warehouseId":"2", 73 | "mark":"" 74 | } 75 | 76 | ] 77 | } 78 | -------------------------------------------------------------------------------- /vue_font_end/static/editGoodsStockOut1.json: -------------------------------------------------------------------------------- 1 | { 2 | "result":true, 3 | "baseData":{ 4 | "outboundOrderNo":"出库单编号", 5 | "orderNo":"关联客户订单编号", 6 | "date":"2018-03-21", 7 | "orderRate":"20%", 8 | "mark":"备注备注", 9 | "outboundOrderId":"出库单唯一标识" 10 | }, 11 | "orderData":[ 12 | { 13 | "goodsId":"商品唯一标识", 14 | "unitsId":"计量单位唯一标识", 15 | "price":"单价", 16 | "num":"数量", 17 | "total":"总价", 18 | "realPay":"实付金额", 19 | "mark":"备注" 20 | }, 21 | { 22 | "goodsId":"商品唯一标识", 23 | "unitsId":"计量单位唯一标识", 24 | "price":"单价", 25 | "num":"数量", 26 | "total":"总价", 27 | "realPay":"实付金额", 28 | "mark":"备注" 29 | }, 30 | { 31 | "goodsId":"商品唯一标识", 32 | "orderNo":"关联客户订单编号", 33 | "unitsId":"计量单位唯一标识", 34 | "price":"单价", 35 | "num":"数量", 36 | "total":"总价", 37 | "realPay":"实付金额", 38 | "mark":"备注" 39 | } 40 | ] 41 | } 42 | -------------------------------------------------------------------------------- /vue_font_end/static/editMaterialStock.json: -------------------------------------------------------------------------------- 1 | { 2 | "result":true, 3 | "data":[ 4 | { 5 | "goodsName":"没有的啊", 6 | "purchaseOrderId":"22", 7 | "goodsId":"22334", 8 | "unipurchasePricetsId":"4512314", 9 | "taxPrice":"222", 10 | "discountRate":"3333", 11 | "discountAmount":"434", 12 | "num":"1", 13 | "totalPurchasePrice":"33445", 14 | "totalTaxPrice":"frf", 15 | "warehouseId":"22445" 16 | }, 17 | { 18 | "goodsName":"没有的啊", 19 | "purchaseOrderId":"22", 20 | "goodsId":"22334", 21 | "unipurchasePricetsId":"4512314", 22 | "taxPrice":"222", 23 | "discountRate":"3333", 24 | "discountAmount":"434", 25 | "num":"1", 26 | "totalPurchasePrice":"33445", 27 | "totalTaxPrice":"frf", 28 | "warehouseId":"22445" 29 | }, 30 | { 31 | "goodsName":"没有的啊", 32 | "purchaseOrderId":"22", 33 | "goodsId":"22334", 34 | "unipurchasePricetsId":"4512314", 35 | "taxPrice":"222", 36 | "discountRate":"3333", 37 | "discountAmount":"434", 38 | "num":"1", 39 | "totalPurchasePrice":"33445", 40 | "totalTaxPrice":"frf", 41 | "warehouseId":"22445" 42 | }, 43 | { 44 | "goodsName":"没有的啊", 45 | "purchaseOrderId":"22", 46 | "goodsId":"22334", 47 | "unipurchasePricetsId":"4512314", 48 | "taxPrice":"222", 49 | "discountRate":"3333", 50 | "discountAmount":"434", 51 | "num":"1", 52 | "totalPurchasePrice":"33445", 53 | "totalTaxPrice":"frf", 54 | "warehouseId":"22445" 55 | } 56 | 57 | ] 58 | } 59 | -------------------------------------------------------------------------------- /vue_font_end/static/editPresentStock.json: -------------------------------------------------------------------------------- 1 | { 2 | "result":true, 3 | "data":[ 4 | { 5 | "goodsName":"没有的啊", 6 | "purchaseOrderId":"22", 7 | "goodsId":"22334", 8 | "unipurchasePricetsId":"4512314", 9 | "taxPrice":"222", 10 | "discountRate":"3333", 11 | "discountAmount":"434", 12 | "num":"1", 13 | "totalPurchasePrice":"33445", 14 | "totalTaxPrice":"frf", 15 | "warehouseId":"22445" 16 | }, 17 | { 18 | "goodsName":"没有的啊", 19 | "purchaseOrderId":"22", 20 | "goodsId":"22334", 21 | "unipurchasePricetsId":"4512314", 22 | "taxPrice":"222", 23 | "discountRate":"3333", 24 | "discountAmount":"434", 25 | "num":"1", 26 | "totalPurchasePrice":"33445", 27 | "totalTaxPrice":"frf", 28 | "warehouseId":"22445" 29 | }, 30 | { 31 | "goodsName":"没有的啊", 32 | "purchaseOrderId":"22", 33 | "goodsId":"22334", 34 | "unipurchasePricetsId":"4512314", 35 | "taxPrice":"222", 36 | "discountRate":"3333", 37 | "discountAmount":"434", 38 | "num":"1", 39 | "totalPurchasePrice":"33445", 40 | "totalTaxPrice":"frf", 41 | "warehouseId":"22445" 42 | }, 43 | { 44 | "goodsName":"没有的啊", 45 | "purchaseOrderId":"22", 46 | "goodsId":"22334", 47 | "unipurchasePricetsId":"4512314", 48 | "taxPrice":"222", 49 | "discountRate":"3333", 50 | "discountAmount":"434", 51 | "num":"1", 52 | "totalPurchasePrice":"33445", 53 | "totalTaxPrice":"frf", 54 | "warehouseId":"22445" 55 | } 56 | 57 | ] 58 | } 59 | -------------------------------------------------------------------------------- /vue_font_end/static/goodsStockShowBack1.json: -------------------------------------------------------------------------------- 1 | { 2 | "result":true, 3 | "data":{ 4 | "supplier":[ 5 | { 6 | "name":"供货商1", 7 | "id":"1" 8 | }, 9 | { 10 | "name":"供货商2", 11 | "id":"2" 12 | } 13 | ], 14 | "baseData":{ 15 | "supplier":"1", 16 | "code":"7894565645665", 17 | "date":"2018-03-21" 18 | 19 | }, 20 | "orderData":[ 21 | { 22 | "warehouseId":"2", 23 | "goodsId":"1", 24 | "modelSize":"NB", 25 | "goodsName":"产品", 26 | "unitsId":"1", 27 | "price":"15", 28 | "num":"2", 29 | "total":"35", 30 | "mark":"号北九水" 31 | }, 32 | { 33 | "warehouseId":"2", 34 | "goodsId":"2", 35 | "modelSize":"S", 36 | "goodsName":"产品", 37 | "unitsId":"2", 38 | "price":"2", 39 | "num":"50", 40 | "total":"100", 41 | "mark":"好的备注" 42 | }, 43 | { 44 | "warehouseId":"1", 45 | "goodsId":"2", 46 | "modelSize":"S", 47 | "goodsName":"产品", 48 | "unitsId":"2", 49 | "price":"32", 50 | "num":"2", 51 | "total":"64", 52 | "mark":"备注的备注的备注的" 53 | } 54 | ] 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /vue_font_end/static/manager.json: -------------------------------------------------------------------------------- 1 | { 2 | "data":[ 3 | { 4 | "id":"3213423412", 5 | "account":"hgfxdddds", 6 | "pwd":"123456", 7 | "avatar":"https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=482088110,1762848592&fm=27&gp=0.jpg", 8 | "role":"管理员", 9 | "phone":"18840846671" 10 | }, 11 | { 12 | "id":"3213412", 13 | "account":"hgfxdddds", 14 | "pwd":"123456", 15 | "avatar":"https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=482088110,1762848592&fm=27&gp=0.jpg", 16 | "role":"管理员", 17 | "phone":"18840846671" 18 | }, 19 | { 20 | "id":"3213423", 21 | "account":"hgfxdddds", 22 | "pwd":"123456", 23 | "avatar":"https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=482088110,1762848592&fm=27&gp=0.jpg", 24 | "role":"管理员", 25 | "phone":"18840846671" 26 | }, 27 | { 28 | "id":"32134212", 29 | "account":"hgfxdddds", 30 | "pwd":"123456", 31 | "avatar":"https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=482088110,1762848592&fm=27&gp=0.jpg", 32 | "role":"管理员", 33 | "phone":"18840846671" 34 | }, 35 | { 36 | "id":"32123412", 37 | "account":"hgfxdddds", 38 | "pwd":"123456", 39 | "avatar":"https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=482088110,1762848592&fm=27&gp=0.jpg", 40 | "role":"管理员", 41 | "phone":"18840846671" 42 | }, 43 | { 44 | "id":"321342342", 45 | "account":"hgfxdddds", 46 | "pwd":"123456", 47 | "avatar":"https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=482088110,1762848592&fm=27&gp=0.jpg", 48 | "role":"管理员", 49 | "phone":"18840846671" 50 | }, 51 | { 52 | "id":"323423412", 53 | "account":"hgfxdddds", 54 | "pwd":"123456", 55 | "avatar":"https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=482088110,1762848592&fm=27&gp=0.jpg", 56 | "role":"管理员", 57 | "phone":"18840846671" 58 | }, 59 | { 60 | "id":"54324343543", 61 | "account":"hgfxdddds", 62 | "pwd":"123456", 63 | "avatar":"https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=482088110,1762848592&fm=27&gp=0.jpg", 64 | "role":"管理员", 65 | "phone":"18840846671" 66 | }, 67 | { 68 | "id":"6546345544", 69 | "account":"hgfxdddds", 70 | "pwd":"123456", 71 | "avatar":"https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=482088110,1762848592&fm=27&gp=0.jpg", 72 | "role":"管理员", 73 | "phone":"18840846671" 74 | }, 75 | { 76 | "id":"7856775465", 77 | "account":"hgfxdddds", 78 | "pwd":"123456", 79 | "avatar":"https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=482088110,1762848592&fm=27&gp=0.jpg", 80 | "role":"管理员", 81 | "phone":"18840846671" 82 | }, 83 | { 84 | "id":"523543533243", 85 | "account":"hgfxdddds", 86 | "pwd":"123456", 87 | "avatar":"https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=482088110,1762848592&fm=27&gp=0.jpg", 88 | "role":"管理员", 89 | "phone":"18840846671" 90 | } 91 | ], 92 | "result":true 93 | } -------------------------------------------------------------------------------- /vue_font_end/static/materialData.json: -------------------------------------------------------------------------------- 1 | { 2 | "list":[ 3 | { 4 | "orderNo":"32432432", 5 | "purchaseOrderNo":"物料物料", 6 | "inboundType":"1", 7 | "operatorId":"张三", 8 | "id":"1", 9 | "mark":"备注" 10 | }, 11 | { 12 | "orderNo":"32432432", 13 | "purchaseOrderNo":"物料物料", 14 | "inboundType":"1", 15 | "operatorId":"张三", 16 | "id":"2", 17 | "mark":"备注" 18 | }, 19 | { 20 | "orderNo":"32432432", 21 | "purchaseOrderNo":"物料物料", 22 | "inboundType":"1", 23 | "operatorId":"张三", 24 | "id":"3", 25 | "mark":"备注" 26 | }, 27 | { 28 | "orderNo":"32432432", 29 | "purchaseOrderNo":"物料物料", 30 | "inboundType":"1", 31 | "operatorId":"张三", 32 | "id":"4", 33 | "mark":"备注" 34 | }, 35 | { 36 | "orderNo":"32432432", 37 | "purchaseOrderNo":"物料物料", 38 | "inboundType":"1", 39 | "operatorId":"张三", 40 | "mark":"备注", 41 | "id":"5" 42 | } 43 | ] 44 | } 45 | -------------------------------------------------------------------------------- /vue_font_end/static/materiel.json: -------------------------------------------------------------------------------- 1 | { 2 | "list":[{ 3 | "id":"123", 4 | "materielName":"就是的", 5 | "materielCode":"432589", 6 | "barCode":"123456", 7 | "category":"2654", 8 | "mark":"A型"}] 9 | } 10 | -------------------------------------------------------------------------------- /vue_font_end/static/materielone.json: -------------------------------------------------------------------------------- 1 | { 2 | "list":[ 3 | { 4 | "orderNo":"32432432", 5 | "purchaseOrderNo":"纸尿裤", 6 | "inboundType":"1", 7 | "operatorId":"张三", 8 | "id":"1", 9 | "mark":"备注" 10 | }, 11 | { 12 | "orderNo":"32432432", 13 | "purchaseOrderNo":"纸尿裤", 14 | "inboundType":"1", 15 | "operatorId":"张三", 16 | "id":"2", 17 | "mark":"备注" 18 | }, 19 | { 20 | "orderNo":"32432432", 21 | "purchaseOrderNo":"纸尿裤", 22 | "inboundType":"1", 23 | "operatorId":"张三", 24 | "id":"3", 25 | "mark":"备注" 26 | }, 27 | { 28 | "orderNo":"32432432", 29 | "purchaseOrderNo":"纸尿裤", 30 | "inboundType":"1", 31 | "operatorId":"张三", 32 | "id":"4", 33 | "mark":"备注" 34 | }, 35 | { 36 | "orderNo":"32432432", 37 | "purchaseOrderNo":"纸尿裤", 38 | "inboundType":"1", 39 | "operatorId":"张三", 40 | "mark":"备注", 41 | "id":"5" 42 | } 43 | ] 44 | } 45 | -------------------------------------------------------------------------------- /vue_font_end/static/newAuth.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "title": "parent 1", 4 | "expand": true, 5 | "children": [ 6 | { 7 | "title": "parent 1-1", 8 | "expand": true, 9 | "children": [ 10 | { 11 | "title": "leaf 1-1-1" 12 | }, 13 | { 14 | "title": "leaf 1-1-2" 15 | } 16 | ] 17 | }, 18 | { 19 | "title": "parent 1-2", 20 | "expand": true, 21 | "children": [ 22 | { 23 | "title": "leaf 1-2-1" 24 | }, 25 | { 26 | "title": "leaf 1-2-1" 27 | } 28 | ] 29 | } 30 | ] 31 | } 32 | ] 33 | -------------------------------------------------------------------------------- /vue_font_end/static/organization.json: -------------------------------------------------------------------------------- 1 | { 2 | "result":true, 3 | "data":[ 4 | { 5 | "_id":"432534543543", 6 | "name":"行政部", 7 | "department":"行政组织部", 8 | "phone":"29437493" 9 | }, 10 | { 11 | "_id":"765754354343", 12 | "name":"食堂部", 13 | "department":"食堂管理部部", 14 | "phone":"29437493" 15 | } 16 | ] 17 | } 18 | -------------------------------------------------------------------------------- /vue_font_end/static/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "$package_name$", 3 | "version": "0.0.1", 4 | "dependencies": { 5 | $END$ 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /vue_font_end/static/present.json: -------------------------------------------------------------------------------- 1 | { 2 | "list":[{ 3 | "id":"123", 4 | "giftName":"冰淇淋", 5 | "giftCode":"432589", 6 | "barCode":"123456", 7 | "category":"A类", 8 | "modelSize":"A型"}] 9 | } 10 | -------------------------------------------------------------------------------- /vue_font_end/static/present123.json: -------------------------------------------------------------------------------- 1 | { 2 | "data":{ 3 | "id":"123", 4 | "giftName":"冰淇淋", 5 | "giftCode":"432589", 6 | "barCode":"123456", 7 | "category":"43264", 8 | "modelSize":"788768" 9 | }, 10 | "result":true 11 | } 12 | -------------------------------------------------------------------------------- /vue_font_end/static/presentData.json: -------------------------------------------------------------------------------- 1 | { 2 | "list":[ 3 | { 4 | "orderNo":"32432432", 5 | "purchaseOrderNo":"湿巾", 6 | "inboundType":"1", 7 | "operatorId":"大苏打大大", 8 | "id":"1", 9 | "mark":"备注" 10 | }, 11 | { 12 | "orderNo":"32432432", 13 | "purchaseOrderNo":"湿巾", 14 | "inboundType":"1", 15 | "operatorId":"山豆根豆", 16 | "id":"2", 17 | "mark":"备注" 18 | }, 19 | { 20 | "orderNo":"32432432", 21 | "purchaseOrderNo":"湿巾", 22 | "inboundType":"1", 23 | "operatorId":"特瑞特人", 24 | "id":"3", 25 | "mark":"备注" 26 | }, 27 | { 28 | "orderNo":"32432432", 29 | "purchaseOrderNo":"湿巾", 30 | "inboundType":"1", 31 | "operatorId":"认为热望", 32 | "id":"4", 33 | "mark":"备注" 34 | }, 35 | { 36 | "orderNo":"32432432", 37 | "purchaseOrderNo":"湿巾", 38 | "inboundType":"1", 39 | "operatorId":"太热特", 40 | "mark":"备注", 41 | "id":"5" 42 | } 43 | ] 44 | } 45 | -------------------------------------------------------------------------------- /vue_font_end/static/role.json: -------------------------------------------------------------------------------- 1 | { 2 | "data":[ 3 | { 4 | "roleId":"3213423412", 5 | "roleName":"角色1", 6 | "roleCode":"ertyhgfd-oofjivi", 7 | "备注":"物流信息" 8 | }, 9 | { 10 | "roleId":"321342412", 11 | "roleName":"角色2", 12 | "roleCode":"ertyhgfd-oofjivi", 13 | "备注":"很保险大保险" 14 | }, 15 | { 16 | "roleId":"32133412", 17 | "roleName":"角色1", 18 | "roleCode":"erthgfd-oofjivi", 19 | "备注":"迷倒十大苏小诺" 20 | }, 21 | { 22 | "roleId":"321342342", 23 | "roleName":"角色2", 24 | "roleCode":"ertyhgfd-oofjivi", 25 | "备注":"美丽大山村" 26 | }, 27 | { 28 | "roleId":"13423412", 29 | "roleName":"角色4", 30 | "roleCode":"ertyhgfd-oofjivi", 31 | "备注":"奋斗奋斗了榴弹发射器" 32 | } 33 | ], 34 | "result":true 35 | } 36 | -------------------------------------------------------------------------------- /vue_font_end/static/source.json: -------------------------------------------------------------------------------- 1 | { 2 | "data":[ 3 | { 4 | "id":"312343432", 5 | "name":"管理员权限", 6 | "path":"url://mlkjklm.cn", 7 | "status":true, 8 | "type":"按钮" 9 | }, 10 | { 11 | "id":"312343432", 12 | "name":"管理员权限", 13 | "path":"url://mlkjklm.cn", 14 | "status":true, 15 | "type":"按钮" 16 | }, 17 | { 18 | "id":"312343432", 19 | "name":"管理员权限", 20 | "path":"url://mlkjklm.cn", 21 | "status":true, 22 | "type":"按钮" 23 | } 24 | ] 25 | } 26 | -------------------------------------------------------------------------------- /vue_font_end/static/stockOrderGoods.json: -------------------------------------------------------------------------------- 1 | { 2 | "list":[ 3 | { 4 | "id":"250", 5 | "orderNo":"342432432", 6 | "supplierId":"432589", 7 | "purchaseId":"123456", 8 | "totalPurchasePrice":"A", 9 | "totalTaxPrice":"545", 10 | "discountRate":"20%", 11 | "discountAmount":"200", 12 | "realTotalPrice":"33333", 13 | "receiveTime":"33333", 14 | "purchaseType":"线上交易", 15 | "status":"已采购", 16 | "auditStatus":"已审核" 17 | }, 18 | { 19 | "id":"250", 20 | "orderNo":"342432432", 21 | "supplierId":"432589", 22 | "purchaseId":"123456", 23 | "totalPurchasePrice":"A", 24 | "totalTaxPrice":"545", 25 | "discountRate":"20%", 26 | "discountAmount":"200", 27 | "realTotalPrice":"33333", 28 | "receiveTime":"33333", 29 | "purchaseType":"线上交易", 30 | "status":"已采购", 31 | "auditStatus":"已审核" 32 | }, 33 | { 34 | "id":"250", 35 | "orderNo":"342432432", 36 | "supplierId":"432589", 37 | "purchaseId":"123456", 38 | "totalPurchasePrice":"A", 39 | "totalTaxPrice":"545", 40 | "discountRate":"20%", 41 | "discountAmount":"200", 42 | "realTotalPrice":"33333", 43 | "receiveTime":"33333", 44 | "purchaseType":"线上交易", 45 | "status":"已采购", 46 | "auditStatus":"已审核" 47 | }, 48 | { 49 | "id":"250", 50 | "orderNo":"342432432", 51 | "supplierId":"432589", 52 | "purchaseId":"123456", 53 | "totalPurchasePrice":"A", 54 | "totalTaxPrice":"545", 55 | "discountRate":"20%", 56 | "discountAmount":"200", 57 | "realTotalPrice":"33333", 58 | "receiveTime":"33333", 59 | "purchaseType":"线上交易", 60 | "status":"已采购", 61 | "auditStatus":"已审核" 62 | }, 63 | { 64 | "id":"250", 65 | "orderNo":"342432432", 66 | "supplierId":"432589", 67 | "purchaseId":"123456", 68 | "totalPurchasePrice":"A", 69 | "totalTaxPrice":"545", 70 | "discountRate":"20%", 71 | "discountAmount":"200", 72 | "realTotalPrice":"33333", 73 | "receiveTime":"33333", 74 | "purchaseType":"线上交易", 75 | "status":"已采购", 76 | "auditStatus":"已审核" 77 | } 78 | ] 79 | } 80 | -------------------------------------------------------------------------------- /vue_font_end/static/stockOrderMaterial.json: -------------------------------------------------------------------------------- 1 | { 2 | "list":[ 3 | { 4 | "id":"250", 5 | "orderNo":"43424324", 6 | "supplierId":"432589", 7 | "purchaseId":"123456", 8 | "totalPurchasePrice":"A", 9 | "totalTaxPrice":"345", 10 | "discountRate":"20%", 11 | "discountAmount":"200", 12 | "realTotalPrice":"33333", 13 | "receiveTime":"33333", 14 | "purchaseType":"线上交易", 15 | "status":"已采购", 16 | "auditStatus":"已审核" 17 | }, 18 | { 19 | "id":"250", 20 | "orderNo":"43424324", 21 | "supplierId":"432589", 22 | "purchaseId":"123456", 23 | "totalPurchasePrice":"A", 24 | "totalTaxPrice":"345", 25 | "discountRate":"20%", 26 | "discountAmount":"200", 27 | "realTotalPrice":"33333", 28 | "receiveTime":"33333", 29 | "purchaseType":"线上交易", 30 | "status":"已采购", 31 | "auditStatus":"已审核" 32 | }, 33 | { 34 | "id":"250", 35 | "orderNo":"43424324", 36 | "supplierId":"432589", 37 | "purchaseId":"123456", 38 | "totalPurchasePrice":"A", 39 | "totalTaxPrice":"345", 40 | "discountRate":"20%", 41 | "discountAmount":"200", 42 | "realTotalPrice":"33333", 43 | "receiveTime":"33333", 44 | "purchaseType":"线上交易", 45 | "status":"已采购", 46 | "auditStatus":"已审核" 47 | }, 48 | { 49 | "id":"250", 50 | "orderNo":"43424324", 51 | "supplierId":"432589", 52 | "purchaseId":"123456", 53 | "totalPurchasePrice":"A", 54 | "totalTaxPrice":"345", 55 | "discountRate":"20%", 56 | "discountAmount":"200", 57 | "realTotalPrice":"33333", 58 | "receiveTime":"33333", 59 | "purchaseType":"线上交易", 60 | "status":"已采购", 61 | "auditStatus":"已审核" 62 | } 63 | ] 64 | } 65 | -------------------------------------------------------------------------------- /vue_font_end/static/stockOrderPresents.json: -------------------------------------------------------------------------------- 1 | { 2 | "list":[ 3 | { 4 | "id":"250", 5 | "orderNo":"53454353", 6 | "supplierId":"432589", 7 | "purchaseId":"123456", 8 | "totalPurchasePrice":"A", 9 | "totalTaxPrice":"290", 10 | "discountRate":"20%", 11 | "discountAmount":"200", 12 | "realTotalPrice":"33333", 13 | "receiveTime":"33333", 14 | "purchaseType":"线上交易", 15 | "status":"已采购", 16 | "auditStatus":"已审核" 17 | }, 18 | { 19 | "id":"250", 20 | "orderNo":"53454353", 21 | "supplierId":"432589", 22 | "purchaseId":"123456", 23 | "totalPurchasePrice":"A", 24 | "totalTaxPrice":"290", 25 | "discountRate":"20%", 26 | "discountAmount":"200", 27 | "realTotalPrice":"33333", 28 | "receiveTime":"33333", 29 | "purchaseType":"线上交易", 30 | "status":"已采购", 31 | "auditStatus":"已审核" 32 | }, 33 | { 34 | "id":"250", 35 | "orderNo":"53454353", 36 | "supplierId":"432589", 37 | "purchaseId":"123456", 38 | "totalPurchasePrice":"A", 39 | "totalTaxPrice":"290", 40 | "discountRate":"20%", 41 | "discountAmount":"200", 42 | "realTotalPrice":"33333", 43 | "receiveTime":"33333", 44 | "purchaseType":"线上交易", 45 | "status":"已采购", 46 | "auditStatus":"已审核" 47 | }, 48 | { 49 | "id":"250", 50 | "orderNo":"53454353", 51 | "supplierId":"432589", 52 | "purchaseId":"123456", 53 | "totalPurchasePrice":"A", 54 | "totalTaxPrice":"290", 55 | "discountRate":"20%", 56 | "discountAmount":"200", 57 | "realTotalPrice":"33333", 58 | "receiveTime":"33333", 59 | "purchaseType":"线上交易", 60 | "status":"已采购", 61 | "auditStatus":"已审核" 62 | } 63 | ] 64 | } 65 | -------------------------------------------------------------------------------- /vue_font_end/static/stockOutData.json: -------------------------------------------------------------------------------- 1 | { 2 | "result":true, 3 | "data":[ 4 | { 5 | "id":"1", 6 | "outboundOrderNo":"出库单编号", 7 | "orderNo":"关联客户订单编号", 8 | "outboundType":"出库类型", 9 | "customerId":"客户唯一标识", 10 | "salesId":"销售人员标识", 11 | "salesAccount":"所属销售人员账户", 12 | "receiveTime":"交货时间", 13 | "operatorId":"出库人员唯一标识", 14 | "mark":"mark" 15 | }, 16 | { 17 | "id":"1", 18 | "outboundOrderNo":"出库单编号", 19 | "orderNo":"关联客户订单编号", 20 | "outboundType":"出库类型", 21 | "customerId":"客户唯一标识", 22 | "salesId":"销售人员标识", 23 | "salesAccount":"所属销售人员账户", 24 | "receiveTime":"交货时间", 25 | "operatorId":"出库人员唯一标识", 26 | "mark":"mark" 27 | }, 28 | { 29 | "id":"1", 30 | "outboundOrderNo":"出库单编号", 31 | "orderNo":"关联客户订单编号", 32 | "outboundType":"出库类型", 33 | "customerId":"客户唯一标识", 34 | "salesId":"销售人员标识", 35 | "salesAccount":"所属销售人员账户", 36 | "receiveTime":"交货时间", 37 | "operatorId":"出库人员唯一标识", 38 | "mark":"mark" 39 | } 40 | ] 41 | } 42 | -------------------------------------------------------------------------------- /vue_font_end/static/supplier.json: -------------------------------------------------------------------------------- 1 | { 2 | "result":true, 3 | "data":[ 4 | { 5 | "name":"供货商1", 6 | "id":"542354235342", 7 | "area":"北京市", 8 | "money":"0", 9 | "type":"一级供货商", 10 | "status":true 11 | }, 12 | { 13 | "name":"供货商1", 14 | "id":"542334223342", 15 | "area":"北京市", 16 | "money":"0", 17 | "type":"一级供货商", 18 | "status":true 19 | }, 20 | { 21 | "name":"供货商1", 22 | "id":"5435323432243", 23 | "area":"北京市", 24 | "money":"0", 25 | "type":"一级供货商", 26 | "status":false 27 | }, 28 | { 29 | "name":"供货商1", 30 | "id":"75675756655543", 31 | "area":"北京市", 32 | "money":"0", 33 | "type":"一级供货商", 34 | "status":true 35 | }, 36 | { 37 | "name":"供货商1", 38 | "id":"9876856856665543", 39 | "area":"北京市", 40 | "money":"0", 41 | "type":"一级供货商", 42 | "status":false 43 | }, 44 | { 45 | "name":"供货商1", 46 | "id":"5435424312423454", 47 | "area":"北京市", 48 | "money":"0", 49 | "type":"一级供货商", 50 | "status":false 51 | }, 52 | { 53 | "name":"供货商1", 54 | "id":"54235435431523", 55 | "area":"北京市", 56 | "money":"0", 57 | "type":"一级供货商", 58 | "status":true 59 | }, 60 | { 61 | "name":"供货商1", 62 | "id":"21321312342333523", 63 | "area":"北京市", 64 | "money":"0", 65 | "type":"一级供货商", 66 | "status":false 67 | } 68 | ] 69 | } 70 | -------------------------------------------------------------------------------- /vue_font_end/static/units.json: -------------------------------------------------------------------------------- 1 | { 2 | "result":true, 3 | "data":[ 4 | { 5 | "unitsId":"1", 6 | "baseUnit":"片", 7 | "units":"包", 8 | "unitsType":"复合单位" 9 | }, 10 | { 11 | "unitsId":"2", 12 | "baseUnit":"袋", 13 | "units":"箱", 14 | "unitsType":"复合单位" 15 | }, 16 | { 17 | "unitsId":"3", 18 | "baseUnit":"克", 19 | "unitsType":"单单位" 20 | }, 21 | { 22 | "unitsId":"4", 23 | "baseUnit":"斤", 24 | "unitsType":"单单位" 25 | } 26 | ] 27 | } 28 | -------------------------------------------------------------------------------- /vue_font_end/static/units1.json: -------------------------------------------------------------------------------- 1 | { 2 | "result":true, 3 | "data": { 4 | "unitsId":"1", 5 | "baseUnit":"片", 6 | "unitsType":{ 7 | "name":"复合单位", 8 | "value":"DOUBLE" 9 | } 10 | }, 11 | "units":[ 12 | { 13 | "viceUnit":"包", 14 | "num":"50" 15 | }, 16 | { 17 | "viceUnit":"箱", 18 | "num":"10" 19 | } 20 | ] 21 | } 22 | -------------------------------------------------------------------------------- /vue_font_end/static/warehouse.json: -------------------------------------------------------------------------------- 1 | { 2 | "result":true, 3 | "data":[ 4 | { 5 | "id":"432423423", 6 | "name":"一号仓库", 7 | "max":"8990", 8 | "min":"500", 9 | "contact":"李先生", 10 | "phone":"18844390284", 11 | "address":"北京市丰台区", 12 | "status":true 13 | }, 14 | { 15 | "id":"54234535234", 16 | "name":"一号仓库", 17 | "max":"8990", 18 | "min":"500", 19 | "contact":"李先生", 20 | "phone":"18844390284", 21 | "address":"北京市丰台区", 22 | "status":true 23 | }, 24 | { 25 | "id":"7567654654", 26 | "name":"一号仓库", 27 | "max":"8990", 28 | "min":"500", 29 | "contact":"李先生", 30 | "phone":"18844390284", 31 | "address":"北京市丰台区", 32 | "status":true 33 | }, 34 | { 35 | "id":"76564756455", 36 | "name":"一号仓库", 37 | "max":"8990", 38 | "min":"500", 39 | "contact":"李先生", 40 | "phone":"18844390284", 41 | "address":"北京市丰台区", 42 | "status":true 43 | }, 44 | { 45 | "id":"4321432423543", 46 | "name":"一号仓库", 47 | "max":"8990", 48 | "min":"500", 49 | "contact":"李先生", 50 | "phone":"18844390284", 51 | "address":"北京市丰台区", 52 | "status":true 53 | }, 54 | { 55 | "id":"4535234355", 56 | "name":"一号仓库", 57 | "max":"8990", 58 | "min":"500", 59 | "contact":"李先生", 60 | "phone":"18844390284", 61 | "address":"北京市丰台区", 62 | "status":true 63 | }, 64 | { 65 | "id":"43421431212234", 66 | "name":"一号仓库", 67 | "max":"8990", 68 | "min":"500", 69 | "contact":"李先生", 70 | "phone":"18844390284", 71 | "address":"北京市丰台区", 72 | "status":true 73 | }, 74 | { 75 | "id":"12312312343", 76 | "name":"一号仓库", 77 | "max":"8990", 78 | "min":"500", 79 | "contact":"李先生", 80 | "phone":"18844390284", 81 | "address":"北京市丰台区", 82 | "status":true 83 | } 84 | ] 85 | } 86 | -------------------------------------------------------------------------------- /vue_font_end/test/e2e/custom-assertions/elementCount.js: -------------------------------------------------------------------------------- 1 | // A custom Nightwatch assertion. 2 | // The assertion name is the filename. 3 | // Example usage: 4 | // 5 | // browser.assert.elementCount(selector, count) 6 | // 7 | // For more information on custom assertions see: 8 | // http://nightwatchjs.org/guide#writing-custom-assertions 9 | 10 | exports.assertion = function (selector, count) { 11 | this.message = 'Testing if element <' + selector + '> has count: ' + count 12 | this.expected = count 13 | this.pass = function (val) { 14 | return val === this.expected 15 | } 16 | this.value = function (res) { 17 | return res.value 18 | } 19 | this.command = function (cb) { 20 | var self = this 21 | return this.api.execute(function (selector) { 22 | return document.querySelectorAll(selector).length 23 | }, [selector], function (res) { 24 | cb.call(self, res) 25 | }) 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /vue_font_end/test/e2e/nightwatch.conf.js: -------------------------------------------------------------------------------- 1 | require('babel-register') 2 | var config = require('../../config') 3 | 4 | // http://nightwatchjs.org/gettingstarted#settings-file 5 | module.exports = { 6 | src_folders: ['test/e2e/specs'], 7 | output_folder: 'test/e2e/reports', 8 | custom_assertions_path: ['test/e2e/custom-assertions'], 9 | 10 | selenium: { 11 | start_process: true, 12 | server_path: require('selenium-server').path, 13 | host: '127.0.0.1', 14 | port: 4444, 15 | cli_args: { 16 | 'webdriver.chrome.driver': require('chromedriver').path 17 | } 18 | }, 19 | 20 | test_settings: { 21 | default: { 22 | selenium_port: 4444, 23 | selenium_host: 'localhost', 24 | silent: true, 25 | globals: { 26 | devServerURL: 'http://localhost:' + (process.env.PORT || config.dev.port) 27 | } 28 | }, 29 | 30 | chrome: { 31 | desiredCapabilities: { 32 | browserName: 'chrome', 33 | javascriptEnabled: true, 34 | acceptSslCerts: true 35 | } 36 | }, 37 | 38 | firefox: { 39 | desiredCapabilities: { 40 | browserName: 'firefox', 41 | javascriptEnabled: true, 42 | acceptSslCerts: true 43 | } 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /vue_font_end/test/e2e/runner.js: -------------------------------------------------------------------------------- 1 | // 1. start the dev server using production config 2 | process.env.NODE_ENV = 'testing' 3 | 4 | const webpack = require('webpack') 5 | const DevServer = require('webpack-dev-server') 6 | 7 | const webpackConfig = require('../../build/webpack.prod.conf') 8 | const devConfigPromise = require('../../build/webpack.dev.conf') 9 | 10 | let server 11 | 12 | devConfigPromise.then(devConfig => { 13 | const devServerOptions = devConfig.devServer 14 | const compiler = webpack(webpackConfig) 15 | server = new DevServer(compiler, devServerOptions) 16 | const port = devServerOptions.port 17 | const host = devServerOptions.host 18 | return server.listen(port, host) 19 | }) 20 | .then(() => { 21 | // 2. run the nightwatch test suite against it 22 | // to run in additional browsers: 23 | // 1. add an entry in test/e2e/nightwatch.conf.js under "test_settings" 24 | // 2. add it to the --env flag below 25 | // or override the environment flag, for example: `npm run e2e -- --env chrome,firefox` 26 | // For more information on Nightwatch's config file, see 27 | // http://nightwatchjs.org/guide#settings-file 28 | let opts = process.argv.slice(2) 29 | if (opts.indexOf('--config') === -1) { 30 | opts = opts.concat(['--config', 'test/e2e/nightwatch.conf.js']) 31 | } 32 | if (opts.indexOf('--env') === -1) { 33 | opts = opts.concat(['--env', 'chrome']) 34 | } 35 | 36 | const spawn = require('cross-spawn') 37 | const runner = spawn('./node_modules/.bin/nightwatch', opts, { stdio: 'inherit' }) 38 | 39 | runner.on('exit', function (code) { 40 | server.close() 41 | process.exit(code) 42 | }) 43 | 44 | runner.on('error', function (err) { 45 | server.close() 46 | throw err 47 | }) 48 | }) 49 | -------------------------------------------------------------------------------- /vue_font_end/test/e2e/specs/test.js: -------------------------------------------------------------------------------- 1 | // For authoring Nightwatch tests, see 2 | // http://nightwatchjs.org/guide#usage 3 | 4 | module.exports = { 5 | 'default e2e tests': function (browser) { 6 | // automatically uses dev Server port from /config.index.js 7 | // default: http://localhost:8080 8 | // see nightwatch.conf.js 9 | const devServer = browser.globals.devServerURL 10 | 11 | browser 12 | .url(devServer) 13 | .waitForElementVisible('#app', 5000) 14 | .assert.elementPresent('.hello') 15 | .assert.containsText('h1', 'Welcome to Your Vue.js App') 16 | .assert.elementCount('img', 1) 17 | .end() 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /vue_font_end/test/unit/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "jest": true 4 | }, 5 | "globals": { 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /vue_font_end/test/unit/jest.conf.js: -------------------------------------------------------------------------------- 1 | const path = require('path') 2 | 3 | module.exports = { 4 | rootDir: path.resolve(__dirname, '../../'), 5 | moduleFileExtensions: [ 6 | 'js', 7 | 'json', 8 | 'vue' 9 | ], 10 | moduleNameMapper: { 11 | '^@/(.*)$': '/src/$1' 12 | }, 13 | transform: { 14 | '^.+\\.js$': '/node_modules/babel-jest', 15 | '.*\\.(vue)$': '/node_modules/vue-jest' 16 | }, 17 | testPathIgnorePatterns: [ 18 | '/test/e2e' 19 | ], 20 | snapshotSerializers: ['/node_modules/jest-serializer-vue'], 21 | setupFiles: ['/test/unit/setup'], 22 | mapCoverage: true, 23 | coverageDirectory: '/test/unit/coverage', 24 | collectCoverageFrom: [ 25 | 'src/**/*.{js,vue}', 26 | '!src/main.js', 27 | '!src/router/index.js', 28 | '!**/node_modules/**' 29 | ] 30 | } 31 | -------------------------------------------------------------------------------- /vue_font_end/test/unit/setup.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | 3 | Vue.config.productionTip = false 4 | -------------------------------------------------------------------------------- /vue_font_end/test/unit/specs/HelloWorld.spec.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import HelloWorld from '@/components/HelloWorld' 3 | 4 | describe('HelloWorld.vue', () => { 5 | it('should render correct contents', () => { 6 | const Constructor = Vue.extend(HelloWorld) 7 | const vm = new Constructor().$mount() 8 | expect(vm.$el.querySelector('.hello h1').textContent) 9 | .toEqual('Welcome to Your Vue.js App') 10 | }) 11 | }) 12 | -------------------------------------------------------------------------------- /vue_font_end/text.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Title 6 | 7 | 8 | 9 | 10 | 11 | 29 | -------------------------------------------------------------------------------- /vue_font_end/ui.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/neroneroffy/vue-backage/98640ebcb54e7a471c3f4248b375b1b9d4ce0e80/vue_font_end/ui.jpg -------------------------------------------------------------------------------- /vue_font_end/思维导图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/neroneroffy/vue-backage/98640ebcb54e7a471c3f4248b375b1b9d4ce0e80/vue_font_end/思维导图.png --------------------------------------------------------------------------------