commit f7eb22e5bb2688e0d5337a0b72c8d4b4ad148cd7
Author: hedekun <200858424@qq.com>
Date: Thu Nov 8 08:39:42 2018 +0800
添加营销系统模块
diff --git a/.babelrc b/.babelrc
new file mode 100644
index 00000000..a2a380fe
--- /dev/null
+++ b/.babelrc
@@ -0,0 +1,12 @@
+{
+ "presets": [
+ ["env", {
+ "modules": false,
+ "targets": {
+ "browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
+ }
+ }],
+ "stage-2"
+ ],
+ "plugins":["transform-vue-jsx", "transform-runtime"]
+}
diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 00000000..ea6e20f5
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,14 @@
+# http://editorconfig.org
+root = true
+
+[*]
+charset = utf-8
+indent_style = space
+indent_size = 2
+end_of_line = lf
+insert_final_newline = true
+trim_trailing_whitespace = true
+
+[*.md]
+insert_final_newline = false
+trim_trailing_whitespace = false
diff --git a/.eslintignore b/.eslintignore
new file mode 100644
index 00000000..7a8a0c6b
--- /dev/null
+++ b/.eslintignore
@@ -0,0 +1,5 @@
+build/*.js
+config/*.js
+src/assets
+src/icon
+src/views/ProjectManagement
diff --git a/.eslintrc.js b/.eslintrc.js
new file mode 100644
index 00000000..0e5c28a5
--- /dev/null
+++ b/.eslintrc.js
@@ -0,0 +1,196 @@
+module.exports = {
+ root: true,
+ parserOptions: {
+ parser: 'babel-eslint',
+ sourceType: 'module'
+ },
+ env: {
+ browser: true,
+ node: true,
+ es6: true,
+ },
+ extends: ['plugin:vue/recommended', 'eslint:recommended'],
+
+ // add your custom rules here
+ //it is base on https://github.com/vuejs/eslint-config-vue
+ rules: {
+ "vue/max-attributes-per-line": [2, {
+ "singleline": 10,
+ "multiline": {
+ "max": 1,
+ "allowFirstLine": false
+ }
+ }],
+ "vue/name-property-casing": ["error", "PascalCase"],
+ 'accessor-pairs': 2,
+ 'arrow-spacing': [2, {
+ 'before': true,
+ 'after': true
+ }],
+ 'block-spacing': [2, 'always'],
+ 'brace-style': [2, '1tbs', {
+ 'allowSingleLine': true
+ }],
+ 'camelcase': [0, {
+ 'properties': 'always'
+ }],
+ 'comma-dangle': [2, 'never'],
+ 'comma-spacing': [2, {
+ 'before': false,
+ 'after': true
+ }],
+ 'comma-style': [2, 'last'],
+ 'constructor-super': 2,
+ 'curly': [2, 'multi-line'],
+ 'dot-location': [2, 'property'],
+ 'eol-last': 2,
+ 'eqeqeq': [2, 'allow-null'],
+ 'generator-star-spacing': [2, {
+ 'before': true,
+ 'after': true
+ }],
+ 'handle-callback-err': [2, '^(err|error)$'],
+ 'indent': [2, 2, {
+ 'SwitchCase': 1
+ }],
+ 'jsx-quotes': [2, 'prefer-single'],
+ 'key-spacing': [2, {
+ 'beforeColon': false,
+ 'afterColon': true
+ }],
+ 'keyword-spacing': [2, {
+ 'before': true,
+ 'after': true
+ }],
+ 'new-cap': [2, {
+ 'newIsCap': true,
+ 'capIsNew': false
+ }],
+ 'new-parens': 2,
+ 'no-array-constructor': 2,
+ 'no-caller': 2,
+ 'no-console': 'off',
+ 'no-class-assign': 2,
+ 'no-cond-assign': 2,
+ 'no-const-assign': 2,
+ 'no-control-regex': 2,
+ 'no-delete-var': 2,
+ 'no-dupe-args': 2,
+ 'no-dupe-class-members': 2,
+ 'no-dupe-keys': 2,
+ 'no-duplicate-case': 2,
+ 'no-empty-character-class': 2,
+ 'no-empty-pattern': 2,
+ 'no-eval': 2,
+ 'no-ex-assign': 2,
+ 'no-extend-native': 2,
+ 'no-extra-bind': 2,
+ 'no-extra-boolean-cast': 2,
+ 'no-extra-parens': [2, 'functions'],
+ 'no-fallthrough': 2,
+ 'no-floating-decimal': 2,
+ 'no-func-assign': 2,
+ 'no-implied-eval': 2,
+ 'no-inner-declarations': [2, 'functions'],
+ 'no-invalid-regexp': 2,
+ 'no-irregular-whitespace': 2,
+ 'no-iterator': 2,
+ 'no-label-var': 2,
+ 'no-labels': [2, {
+ 'allowLoop': false,
+ 'allowSwitch': false
+ }],
+ 'no-lone-blocks': 2,
+ 'no-mixed-spaces-and-tabs': 2,
+ 'no-multi-spaces': 2,
+ 'no-multi-str': 2,
+ 'no-multiple-empty-lines': [2, {
+ 'max': 1
+ }],
+ 'no-native-reassign': 2,
+ 'no-negated-in-lhs': 2,
+ 'no-new-object': 2,
+ 'no-new-require': 2,
+ 'no-new-symbol': 2,
+ 'no-new-wrappers': 2,
+ 'no-obj-calls': 2,
+ 'no-octal': 2,
+ 'no-octal-escape': 2,
+ 'no-path-concat': 2,
+ 'no-proto': 2,
+ 'no-redeclare': 2,
+ 'no-regex-spaces': 2,
+ 'no-return-assign': [2, 'except-parens'],
+ 'no-self-assign': 2,
+ 'no-self-compare': 2,
+ 'no-sequences': 2,
+ 'no-shadow-restricted-names': 2,
+ 'no-spaced-func': 2,
+ 'no-sparse-arrays': 2,
+ 'no-this-before-super': 2,
+ 'no-throw-literal': 2,
+ 'no-trailing-spaces': 2,
+ 'no-undef': 2,
+ 'no-undef-init': 2,
+ 'no-unexpected-multiline': 2,
+ 'no-unmodified-loop-condition': 2,
+ 'no-unneeded-ternary': [2, {
+ 'defaultAssignment': false
+ }],
+ 'no-unreachable': 2,
+ 'no-unsafe-finally': 2,
+ 'no-unused-vars': [2, {
+ 'vars': 'all',
+ 'args': 'none'
+ }],
+ 'no-useless-call': 2,
+ 'no-useless-computed-key': 2,
+ 'no-useless-constructor': 2,
+ 'no-useless-escape': 0,
+ 'no-whitespace-before-property': 2,
+ 'no-with': 2,
+ 'one-var': [2, {
+ 'initialized': 'never'
+ }],
+ 'operator-linebreak': [2, 'after', {
+ 'overrides': {
+ '?': 'before',
+ ':': 'before'
+ }
+ }],
+ 'padded-blocks': [2, 'never'],
+ 'quotes': [2, 'single', {
+ 'avoidEscape': true,
+ 'allowTemplateLiterals': true
+ }],
+ 'semi': [2, 'never'],
+ 'semi-spacing': [2, {
+ 'before': false,
+ 'after': true
+ }],
+ 'space-before-blocks': [2, 'always'],
+ 'space-before-function-paren': [2, 'never'],
+ 'space-in-parens': [2, 'never'],
+ 'space-infix-ops': 2,
+ 'space-unary-ops': [2, {
+ 'words': true,
+ 'nonwords': false
+ }],
+ 'spaced-comment': [2, 'always', {
+ 'markers': ['global', 'globals', 'eslint', 'eslint-disable', '*package', '!', ',']
+ }],
+ 'template-curly-spacing': [2, 'never'],
+ 'use-isnan': 2,
+ 'valid-typeof': 2,
+ 'wrap-iife': [2, 'any'],
+ 'yield-star-spacing': [2, 'both'],
+ 'yoda': [2, 'never'],
+ 'prefer-const': 2,
+ 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0,
+ 'object-curly-spacing': [2, 'always', {
+ objectsInObjects: false
+ }],
+ 'array-bracket-spacing': [2, 'never']
+ }
+}
+
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 00000000..78a0eada
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,15 @@
+.DS_Store
+node_modules/
+dist/
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+package-lock.json
+
+# Editor directories and files
+.idea
+.vscode
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
diff --git a/.postcssrc.js b/.postcssrc.js
new file mode 100644
index 00000000..eee3e92d
--- /dev/null
+++ b/.postcssrc.js
@@ -0,0 +1,10 @@
+// https://github.com/michael-ciniawsky/postcss-load-config
+
+module.exports = {
+ "plugins": {
+ "postcss-import": {},
+ "postcss-url": {},
+ // to edit target browsers: use "browserslist" field in package.json
+ "autoprefixer": {}
+ }
+}
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 00000000..16574d97
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,5 @@
+language: node_js
+node_js: stable
+script: npm run test
+notifications:
+ email: false
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 00000000..61515750
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2017-present PanJiaChen
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/build/build.js b/build/build.js
new file mode 100644
index 00000000..8c6cebd6
--- /dev/null
+++ b/build/build.js
@@ -0,0 +1,45 @@
+'use strict'
+require('./check-versions')()
+
+process.env.NODE_ENV = 'production'
+
+const ora = require('ora')
+const rm = require('rimraf')
+const path = require('path')
+const chalk = require('chalk')
+const webpack = require('webpack')
+const config = require('../config')
+const webpackConfig = require('./webpack.prod.conf')
+
+const spinner = ora('building for production...')
+spinner.start()
+
+rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => {
+ if (err) throw err
+ webpack(webpackConfig, (err, stats) => {
+ spinner.stop()
+ if (err) throw err
+ process.stdout.write(
+ stats.toString({
+ colors: true,
+ modules: false,
+ children: false,
+ chunks: false,
+ chunkModules: false
+ }) + '\n\n'
+ )
+
+ if (stats.hasErrors()) {
+ console.log(chalk.red(' Build failed with errors.\n'))
+ process.exit(1)
+ }
+
+ console.log(chalk.cyan(' Build complete.\n'))
+ console.log(
+ chalk.yellow(
+ ' Tip: built files are meant to be served over an HTTP server.\n' +
+ " Opening index.html over file:// won't work.\n"
+ )
+ )
+ })
+})
diff --git a/build/check-versions.js b/build/check-versions.js
new file mode 100644
index 00000000..c5c29e90
--- /dev/null
+++ b/build/check-versions.js
@@ -0,0 +1,64 @@
+'use strict'
+const chalk = require('chalk')
+const semver = require('semver')
+const packageConfig = require('../package.json')
+const shell = require('shelljs')
+
+function exec(cmd) {
+ return require('child_process')
+ .execSync(cmd)
+ .toString()
+ .trim()
+}
+
+const versionRequirements = [
+ {
+ name: 'node',
+ currentVersion: semver.clean(process.version),
+ versionRequirement: packageConfig.engines.node
+ }
+]
+
+if (shell.which('npm')) {
+ versionRequirements.push({
+ name: 'npm',
+ currentVersion: exec('npm --version'),
+ versionRequirement: packageConfig.engines.npm
+ })
+}
+
+module.exports = function() {
+ const warnings = []
+
+ for (let i = 0; i < versionRequirements.length; i++) {
+ const mod = versionRequirements[i]
+
+ if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) {
+ warnings.push(
+ mod.name +
+ ': ' +
+ chalk.red(mod.currentVersion) +
+ ' should be ' +
+ chalk.green(mod.versionRequirement)
+ )
+ }
+ }
+
+ if (warnings.length) {
+ console.log('')
+ console.log(
+ chalk.yellow(
+ 'To use this template, you must update following to modules:'
+ )
+ )
+ console.log()
+
+ for (let i = 0; i < warnings.length; i++) {
+ const warning = warnings[i]
+ console.log(' ' + warning)
+ }
+
+ console.log()
+ process.exit(1)
+ }
+}
diff --git a/build/logo.png b/build/logo.png
new file mode 100644
index 00000000..f3d2503f
Binary files /dev/null and b/build/logo.png differ
diff --git a/build/utils.js b/build/utils.js
new file mode 100644
index 00000000..c96d0936
--- /dev/null
+++ b/build/utils.js
@@ -0,0 +1,108 @@
+'use strict'
+const path = require('path')
+const config = require('../config')
+const MiniCssExtractPlugin = require('mini-css-extract-plugin')
+const packageConfig = require('../package.json')
+
+exports.assetsPath = function(_path) {
+ const assetsSubDirectory =
+ process.env.NODE_ENV === 'production'
+ ? config.build.assetsSubDirectory
+ : config.dev.assetsSubDirectory
+
+ return path.posix.join(assetsSubDirectory, _path)
+}
+
+exports.cssLoaders = function(options) {
+ options = options || {}
+
+ const cssLoader = {
+ loader: 'css-loader',
+ options: {
+ sourceMap: options.sourceMap
+ }
+ }
+
+ const postcssLoader = {
+ loader: 'postcss-loader',
+ options: {
+ sourceMap: options.sourceMap
+ }
+ }
+
+ // generate loader string to be used with extract text plugin
+ function generateLoaders(loader, loaderOptions) {
+ const loaders = []
+
+ // Extract CSS when that option is specified
+ // (which is the case during production build)
+ if (options.extract) {
+ loaders.push(MiniCssExtractPlugin.loader)
+ } else {
+ loaders.push('vue-style-loader')
+ }
+
+ loaders.push(cssLoader)
+
+ if (options.usePostCSS) {
+ loaders.push(postcssLoader)
+ }
+
+ if (loader) {
+ loaders.push({
+ loader: loader + '-loader',
+ options: Object.assign({}, loaderOptions, {
+ sourceMap: options.sourceMap
+ })
+ })
+ }
+
+ return loaders
+ }
+ // https://vue-loader.vuejs.org/en/configurations/extract-css.html
+ return {
+ css: generateLoaders(),
+ postcss: generateLoaders(),
+ less: generateLoaders('less'),
+ sass: generateLoaders('sass', {
+ indentedSyntax: true
+ }),
+ scss: generateLoaders('sass'),
+ stylus: generateLoaders('stylus'),
+ styl: generateLoaders('stylus')
+ }
+}
+
+// Generate loaders for standalone style files (outside of .vue)
+exports.styleLoaders = function(options) {
+ const output = []
+ const loaders = exports.cssLoaders(options)
+
+ for (const extension in loaders) {
+ const loader = loaders[extension]
+ output.push({
+ test: new RegExp('\\.' + extension + '$'),
+ use: loader
+ })
+ }
+
+ return output
+}
+
+exports.createNotifierCallback = () => {
+ const notifier = require('node-notifier')
+
+ return (severity, errors) => {
+ if (severity !== 'error') return
+
+ const error = errors[0]
+ const filename = error.file && error.file.split('!').pop()
+
+ notifier.notify({
+ title: packageConfig.name,
+ message: severity + ': ' + error.name,
+ subtitle: filename || '',
+ icon: path.join(__dirname, 'logo.png')
+ })
+ }
+}
diff --git a/build/vue-loader.conf.js b/build/vue-loader.conf.js
new file mode 100644
index 00000000..5496c931
--- /dev/null
+++ b/build/vue-loader.conf.js
@@ -0,0 +1,5 @@
+'use strict'
+
+module.exports = {
+ //You can set the vue-loader configuration by yourself.
+}
diff --git a/build/webpack.base.conf.js b/build/webpack.base.conf.js
new file mode 100644
index 00000000..4be51b10
--- /dev/null
+++ b/build/webpack.base.conf.js
@@ -0,0 +1,107 @@
+'use strict'
+const path = require('path')
+const utils = require('./utils')
+const config = require('../config')
+const { VueLoaderPlugin } = require('vue-loader')
+const vueLoaderConfig = require('./vue-loader.conf')
+
+function resolve(dir) {
+ return path.join(__dirname, '..', dir)
+}
+
+const createLintingRule = () => ({
+ test: /\.(js|vue)$/,
+ loader: 'eslint-loader',
+ enforce: 'pre',
+ include: [resolve('src'), resolve('test')],
+ options: {
+ formatter: require('eslint-friendly-formatter'),
+ emitWarning: !config.dev.showEslintErrorsInOverlay
+ }
+})
+
+module.exports = {
+ context: path.resolve(__dirname, '../'),
+ entry: {
+ app: './src/main.js'
+ },
+ output: {
+ path: config.build.assetsRoot,
+ filename: '[name].js',
+ publicPath:
+ process.env.NODE_ENV === 'production'
+ ? config.build.assetsPublicPath
+ : config.dev.assetsPublicPath
+ },
+ resolve: {
+ extensions: ['.js', '.vue', '.json'],
+ alias: {
+ '@': resolve('src')
+ }
+ },
+ module: {
+ rules: [
+ ...(config.dev.useEslint ? [createLintingRule()] : []),
+ {
+ test: /\.vue$/,
+ loader: 'vue-loader',
+ options: vueLoaderConfig
+ },
+ {
+ test: /\.js$/,
+ loader: 'babel-loader',
+ include: [
+ resolve('src'),
+ resolve('test'),
+ resolve('node_modules/webpack-dev-server/client')
+ ]
+ },
+ {
+ test: /\.svg$/,
+ loader: 'svg-sprite-loader',
+ include: [resolve('src/icons')],
+ options: {
+ symbolId: 'icon-[name]'
+ }
+ },
+ {
+ test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
+ loader: 'url-loader',
+ exclude: [resolve('src/icons')],
+ options: {
+ limit: 10000,
+ name: utils.assetsPath('img/[name].[hash:7].[ext]')
+ }
+ },
+ {
+ test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
+ loader: 'url-loader',
+ options: {
+ limit: 10000,
+ name: utils.assetsPath('media/[name].[hash:7].[ext]')
+ }
+ },
+ {
+ test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
+ loader: 'url-loader',
+ options: {
+ limit: 10000,
+ name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
+ }
+ }
+ ]
+ },
+ plugins: [new VueLoaderPlugin()],
+ node: {
+ // prevent webpack from injecting useless setImmediate polyfill because Vue
+ // source contains it (although only uses it if it's native).
+ setImmediate: false,
+ // prevent webpack from injecting mocks to Node native modules
+ // that does not make sense for the client
+ dgram: 'empty',
+ fs: 'empty',
+ net: 'empty',
+ tls: 'empty',
+ child_process: 'empty'
+ }
+}
diff --git a/build/webpack.dev.conf.js b/build/webpack.dev.conf.js
new file mode 100644
index 00000000..4c1525da
--- /dev/null
+++ b/build/webpack.dev.conf.js
@@ -0,0 +1,93 @@
+'use strict'
+const path = require('path')
+const utils = require('./utils')
+const webpack = require('webpack')
+const config = require('../config')
+const merge = require('webpack-merge')
+const baseWebpackConfig = require('./webpack.base.conf')
+const HtmlWebpackPlugin = require('html-webpack-plugin')
+const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin')
+const portfinder = require('portfinder')
+
+function resolve(dir) {
+ return path.join(__dirname, '..', dir)
+}
+
+const HOST = process.env.HOST
+const PORT = process.env.PORT && Number(process.env.PORT)
+
+const devWebpackConfig = merge(baseWebpackConfig, {
+ mode: 'development',
+ module: {
+ rules: utils.styleLoaders({
+ sourceMap: config.dev.cssSourceMap,
+ usePostCSS: true
+ })
+ },
+ // cheap-module-eval-source-map is faster for development
+ devtool: config.dev.devtool,
+
+ // these devServer options should be customized in /config/index.js
+ devServer: {
+ clientLogLevel: 'warning',
+ historyApiFallback: true,
+ hot: true,
+ compress: true,
+ host: HOST || config.dev.host,
+ port: PORT || config.dev.port,
+ open: config.dev.autoOpenBrowser,
+ overlay: config.dev.errorOverlay
+ ? { warnings: false, errors: true }
+ : false,
+ publicPath: config.dev.assetsPublicPath,
+ proxy: config.dev.proxyTable,
+ quiet: true, // necessary for FriendlyErrorsPlugin
+ watchOptions: {
+ poll: config.dev.poll
+ }
+ },
+ plugins: [
+ new webpack.DefinePlugin({
+ 'process.env': require('../config/dev.env')
+ }),
+ new webpack.HotModuleReplacementPlugin(),
+ // https://github.com/ampedandwired/html-webpack-plugin
+ new HtmlWebpackPlugin({
+ filename: 'index.html',
+ template: 'index.html',
+ inject: true,
+ favicon: resolve('favicon.ico'),
+ title: 'vue-admin-template'
+ })
+ ]
+})
+
+module.exports = new Promise((resolve, reject) => {
+ portfinder.basePort = process.env.PORT || config.dev.port
+ portfinder.getPort((err, port) => {
+ if (err) {
+ reject(err)
+ } else {
+ // publish the new Port, necessary for e2e tests
+ process.env.PORT = port
+ // add port to devServer config
+ devWebpackConfig.devServer.port = port
+
+ // Add FriendlyErrorsPlugin
+ devWebpackConfig.plugins.push(
+ new FriendlyErrorsPlugin({
+ compilationSuccessInfo: {
+ messages: [
+ `Your application is running here: http://${devWebpackConfig.devServer.host}:${port}`
+ ]
+ },
+ onErrors: config.dev.notifyOnErrors
+ ? utils.createNotifierCallback()
+ : undefined
+ })
+ )
+
+ resolve(devWebpackConfig)
+ }
+ })
+})
diff --git a/build/webpack.prod.conf.js b/build/webpack.prod.conf.js
new file mode 100644
index 00000000..2cfaedc8
--- /dev/null
+++ b/build/webpack.prod.conf.js
@@ -0,0 +1,178 @@
+'use strict'
+const path = require('path')
+const utils = require('./utils')
+const webpack = require('webpack')
+const config = require('../config')
+const merge = require('webpack-merge')
+const baseWebpackConfig = require('./webpack.base.conf')
+const CopyWebpackPlugin = require('copy-webpack-plugin')
+const HtmlWebpackPlugin = require('html-webpack-plugin')
+const ScriptExtHtmlWebpackPlugin = require('script-ext-html-webpack-plugin')
+const MiniCssExtractPlugin = require('mini-css-extract-plugin')
+const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin')
+const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
+
+function resolve(dir) {
+ return path.join(__dirname, '..', dir)
+}
+
+const env = require('../config/prod.env')
+
+// For NamedChunksPlugin
+const seen = new Set()
+const nameLength = 4
+
+const webpackConfig = merge(baseWebpackConfig, {
+ mode: 'production',
+ module: {
+ rules: utils.styleLoaders({
+ sourceMap: config.build.productionSourceMap,
+ extract: true,
+ usePostCSS: true
+ })
+ },
+ devtool: config.build.productionSourceMap ? config.build.devtool : false,
+ output: {
+ path: config.build.assetsRoot,
+ filename: utils.assetsPath('js/[name].[chunkhash:8].js'),
+ chunkFilename: utils.assetsPath('js/[name].[chunkhash:8].js')
+ },
+ plugins: [
+ // http://vuejs.github.io/vue-loader/en/workflow/production.html
+ new webpack.DefinePlugin({
+ 'process.env': env
+ }),
+ // extract css into its own file
+ new MiniCssExtractPlugin({
+ filename: utils.assetsPath('css/[name].[contenthash:8].css'),
+ chunkFilename: utils.assetsPath('css/[name].[contenthash:8].css')
+ }),
+ // generate dist index.html with correct asset hash for caching.
+ // you can customize output by editing /index.html
+ // see https://github.com/ampedandwired/html-webpack-plugin
+ new HtmlWebpackPlugin({
+ filename: config.build.index,
+ template: 'index.html',
+ inject: true,
+ favicon: resolve('favicon.ico'),
+ title: 'vue-admin-template',
+ minify: {
+ removeComments: true,
+ collapseWhitespace: true,
+ removeAttributeQuotes: true
+ // more options:
+ // https://github.com/kangax/html-minifier#options-quick-reference
+ }
+ // default sort mode uses toposort which cannot handle cyclic deps
+ // in certain cases, and in webpack 4, chunk order in HTML doesn't
+ // matter anyway
+ }),
+ new ScriptExtHtmlWebpackPlugin({
+ //`runtime` must same as runtimeChunk name. default is `runtime`
+ inline: /runtime\..*\.js$/
+ }),
+ // keep chunk.id stable when chunk has no name
+ new webpack.NamedChunksPlugin(chunk => {
+ if (chunk.name) {
+ return chunk.name
+ }
+ const modules = Array.from(chunk.modulesIterable)
+ if (modules.length > 1) {
+ const hash = require('hash-sum')
+ const joinedHash = hash(modules.map(m => m.id).join('_'))
+ let len = nameLength
+ while (seen.has(joinedHash.substr(0, len))) len++
+ seen.add(joinedHash.substr(0, len))
+ return `chunk-${joinedHash.substr(0, len)}`
+ } else {
+ return modules[0].id
+ }
+ }),
+ // keep module.id stable when vender modules does not change
+ new webpack.HashedModuleIdsPlugin(),
+ // copy custom static assets
+ new CopyWebpackPlugin([
+ {
+ from: path.resolve(__dirname, '../static'),
+ to: config.build.assetsSubDirectory,
+ ignore: ['.*']
+ }
+ ])
+ ],
+ optimization: {
+ splitChunks: {
+ chunks: 'all',
+ cacheGroups: {
+ libs: {
+ name: 'chunk-libs',
+ test: /[\\/]node_modules[\\/]/,
+ priority: 10,
+ chunks: 'initial' // 只打包初始时依赖的第三方
+ },
+ elementUI: {
+ name: 'chunk-elementUI', // 单独将 elementUI 拆包
+ priority: 20, // 权重要大于 libs 和 app 不然会被打包进 libs 或者 app
+ test: /[\\/]node_modules[\\/]element-ui[\\/]/
+ }
+ }
+ },
+ runtimeChunk: 'single',
+ minimizer: [
+ new UglifyJsPlugin({
+ uglifyOptions: {
+ mangle: {
+ safari10: true
+ }
+ },
+ sourceMap: config.build.productionSourceMap,
+ cache: true,
+ parallel: true
+ }),
+ // Compress extracted CSS. We are using this plugin so that possible
+ // duplicated CSS from different components can be deduped.
+ new OptimizeCSSAssetsPlugin()
+ ]
+ }
+})
+
+if (config.build.productionGzip) {
+ const CompressionWebpackPlugin = require('compression-webpack-plugin')
+
+ webpackConfig.plugins.push(
+ new CompressionWebpackPlugin({
+ asset: '[path].gz[query]',
+ algorithm: 'gzip',
+ test: new RegExp(
+ '\\.(' + config.build.productionGzipExtensions.join('|') + ')$'
+ ),
+ threshold: 10240,
+ minRatio: 0.8
+ })
+ )
+}
+
+if (config.build.generateAnalyzerReport || config.build.bundleAnalyzerReport) {
+ const BundleAnalyzerPlugin = require('webpack-bundle-analyzer')
+ .BundleAnalyzerPlugin
+
+ if (config.build.bundleAnalyzerReport) {
+ webpackConfig.plugins.push(
+ new BundleAnalyzerPlugin({
+ analyzerPort: 8080,
+ generateStatsFile: false
+ })
+ )
+ }
+
+ if (config.build.generateAnalyzerReport) {
+ webpackConfig.plugins.push(
+ new BundleAnalyzerPlugin({
+ analyzerMode: 'static',
+ reportFilename: 'bundle-report.html',
+ openAnalyzer: false
+ })
+ )
+ }
+}
+
+module.exports = webpackConfig
diff --git a/config/dev.env.js b/config/dev.env.js
new file mode 100644
index 00000000..e3c8ffc7
--- /dev/null
+++ b/config/dev.env.js
@@ -0,0 +1,8 @@
+'use strict'
+const merge = require('webpack-merge')
+const prodEnv = require('./prod.env')
+
+module.exports = merge(prodEnv, {
+ NODE_ENV: '"development"',
+ BASE_API: '"https://easy-mock.com/mock/5950a2419adc231f356a6636/vue-admin"',
+})
diff --git a/config/index.js b/config/index.js
new file mode 100644
index 00000000..67d50d5d
--- /dev/null
+++ b/config/index.js
@@ -0,0 +1,91 @@
+'use strict'
+// Template version: 1.2.6
+// see http://vuejs-templates.github.io/webpack for documentation.
+
+const path = require('path')
+const os = require('os')
+
+const networkInterfaces = os.networkInterfaces()
+
+const ip = networkInterfaces['WLAN'][1].address
+
+module.exports = {
+ dev: {
+ // Paths
+ assetsSubDirectory: 'static',
+ assetsPublicPath: '/',
+ proxyTable: {},
+
+ // Various Dev Server settings
+ host: ip, // can be overwritten by process.env.HOST
+ port: 9528, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
+ autoOpenBrowser: true,
+ errorOverlay: true,
+ notifyOnErrors: false,
+ poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions-
+
+ // Use Eslint Loader?
+ // If true, your code will be linted during bundling and
+ // linting errors and warnings will be shown in the console.
+ useEslint: true,
+ // If true, eslint errors and warnings will also be shown in the error overlay
+ // in the browser.
+ showEslintErrorsInOverlay: false,
+
+ /**
+ * Source Maps
+ */
+
+ // https://webpack.js.org/configuration/devtool/#development
+ devtool: 'cheap-source-map',
+
+ // CSS Sourcemaps off by default because relative paths are "buggy"
+ // with this option, according to the CSS-Loader README
+ // (https://github.com/webpack/css-loader#sourcemaps)
+ // In our experience, they generally work as expected,
+ // just be aware of this issue when enabling this option.
+ cssSourceMap: false
+ },
+
+ build: {
+ // Template for index.html
+ index: path.resolve(__dirname, '../dist/index.html'),
+
+ // Paths
+ assetsRoot: path.resolve(__dirname, '../dist'),
+ assetsSubDirectory: 'static',
+
+ /**
+ * You can set by youself according to actual condition
+ * You will need to set this if you plan to deploy your site under a sub path,
+ * for example GitHub pages. If you plan to deploy your site to https://foo.github.io/bar/,
+ * then assetsPublicPath should be set to "/bar/".
+ * In most cases please use '/' !!!
+ */
+ assetsPublicPath: '/',
+
+ /**
+ * Source Maps
+ */
+
+ productionSourceMap: false,
+ // https://webpack.js.org/configuration/devtool/#production
+ devtool: 'source-map',
+
+ // Gzip off by default as many popular static hosts such as
+ // Surge or Netlify already gzip all static assets for you.
+ // Before setting to `true`, make sure to:
+ // npm install --save-dev compression-webpack-plugin
+ productionGzip: false,
+ productionGzipExtensions: ['js', 'css'],
+
+ // Run the build command with an extra argument to
+ // View the bundle analyzer report after build finishes:
+ // `npm run build --report`
+ // Set to `true` or `false` to always turn it on or off
+ bundleAnalyzerReport: process.env.npm_config_report || false,
+
+ // `npm run build:prod --generate_report`
+ generateAnalyzerReport: process.env.npm_config_generate_report || false
+ }
+}
diff --git a/config/prod.env.js b/config/prod.env.js
new file mode 100644
index 00000000..836ec67c
--- /dev/null
+++ b/config/prod.env.js
@@ -0,0 +1,5 @@
+'use strict'
+module.exports = {
+ NODE_ENV: '"production"',
+ BASE_API: '"https://easy-mock.com/mock/5950a2419adc231f356a6636/vue-admin"',
+}
diff --git a/favicon.ico b/favicon.ico
new file mode 100644
index 00000000..34b63ac6
Binary files /dev/null and b/favicon.ico differ
diff --git a/index.html b/index.html
new file mode 100644
index 00000000..deed4af4
--- /dev/null
+++ b/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+ 高精机电装备有限公司数字化工厂
+
+
+
+
+
+
diff --git a/package.json b/package.json
new file mode 100644
index 00000000..98cf47a5
--- /dev/null
+++ b/package.json
@@ -0,0 +1,89 @@
+{
+ "name": "gaojing",
+ "version": "1.1.0",
+ "description": "A Management Information System of JANGSU GAOJING MECHANICAL EQUIPMENET CO,.LTD,the template is from git+https://github.com/PanJiaChen/vue-element-admin.git",
+ "author": "MESWORK",
+ "scripts": {
+ "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
+ "start": "npm run dev",
+ "build": "node build/build.js",
+ "build:report": "npm_config_report=true npm run build",
+ "lint": "eslint --fix --ext .js,.vue src",
+ "test": "npm run lint",
+ "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml"
+ },
+ "dependencies": {
+ "axios": "0.18.0",
+ "echarts": "^4.2.0-rc.2",
+ "element-ui": "2.4.6",
+ "file-saver": "^1.3.8",
+ "js-cookie": "2.2.0",
+ "node-sass": "^4.9.3",
+ "normalize.css": "7.0.0",
+ "nprogress": "0.2.0",
+ "time-formater": "^1.0.3",
+ "vue": "2.5.17",
+ "vue-router": "3.0.1",
+ "vuex": "3.0.1",
+ "xlsx": "^0.14.0",
+ "xlsx-style": "^0.8.13"
+ },
+ "devDependencies": {
+ "autoprefixer": "8.5.0",
+ "babel-core": "6.26.0",
+ "babel-eslint": "8.2.6",
+ "babel-helper-vue-jsx-merge-props": "2.0.3",
+ "babel-loader": "7.1.5",
+ "babel-plugin-syntax-jsx": "6.18.0",
+ "babel-plugin-transform-runtime": "6.23.0",
+ "babel-plugin-transform-vue-jsx": "3.7.0",
+ "babel-preset-env": "1.7.0",
+ "babel-preset-stage-2": "6.24.1",
+ "chalk": "2.4.1",
+ "copy-webpack-plugin": "4.5.2",
+ "css-loader": "1.0.0",
+ "eslint": "4.19.1",
+ "eslint-friendly-formatter": "4.0.1",
+ "eslint-loader": "2.0.0",
+ "eslint-plugin-vue": "4.7.1",
+ "eventsource-polyfill": "0.9.6",
+ "file-loader": "1.1.11",
+ "friendly-errors-webpack-plugin": "1.7.0",
+ "html-webpack-plugin": "4.0.0-alpha",
+ "mini-css-extract-plugin": "0.4.1",
+ "node-notifier": "5.2.1",
+ "optimize-css-assets-webpack-plugin": "5.0.0",
+ "ora": "3.0.0",
+ "portfinder": "1.0.16",
+ "postcss-import": "12.0.0",
+ "postcss-loader": "2.1.6",
+ "postcss-url": "7.3.2",
+ "rimraf": "2.6.2",
+ "sass-loader": "7.0.3",
+ "script-ext-html-webpack-plugin": "2.0.1",
+ "script-loader": "^0.7.2",
+ "semver": "5.5.0",
+ "shelljs": "0.8.2",
+ "svg-sprite-loader": "3.8.0",
+ "svgo": "1.0.5",
+ "uglifyjs-webpack-plugin": "1.2.7",
+ "url-loader": "1.0.1",
+ "vue-loader": "15.3.0",
+ "vue-style-loader": "4.1.2",
+ "vue-template-compiler": "2.5.17",
+ "webpack": "4.16.5",
+ "webpack-bundle-analyzer": "2.13.1",
+ "webpack-cli": "3.1.0",
+ "webpack-dev-server": "3.1.5",
+ "webpack-merge": "4.1.4"
+ },
+ "engines": {
+ "node": ">= 6.0.0",
+ "npm": ">= 3.0.0"
+ },
+ "browserslist": [
+ "> 1%",
+ "last 2 versions",
+ "not ie <= 8"
+ ]
+}
diff --git a/src/App.vue b/src/App.vue
new file mode 100644
index 00000000..721d3a32
--- /dev/null
+++ b/src/App.vue
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
diff --git a/src/api/BasicData/PersonnelManagement.js b/src/api/BasicData/PersonnelManagement.js
new file mode 100644
index 00000000..fff648d1
--- /dev/null
+++ b/src/api/BasicData/PersonnelManagement.js
@@ -0,0 +1,332 @@
+import request from '@/utils/request'
+export function getTree() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: 1,
+ name: '人事档案管理_部门关系_查询节点',
+ param: '子节点=0=int'
+ }
+ })
+}
+export function tree(data, pid) {
+ const result = []
+ let temp
+ for (let i = 0; i < data.length; i++) {
+ if (data[i].父节点 === pid) {
+ const obj = { label: data[i].节点名称, id: data[i].子节点 }
+ temp = tree(data, data[i].子节点)
+ if (temp.length > 0) {
+ obj.children = temp
+ }
+ result.push(obj)
+ }
+ }
+ return result
+}
+export function getTablePeople(code, pageCurrent, pageSize) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: 1,
+ name: '人事档案管理_人员_部门与人员_查询数据_根据部门编号',
+ param: '考核部门编号=' + code + '=int',
+ pagination: pageCurrent + '&' + pageSize
+ }
+ })
+}
+export function getTablePeopleForName(name) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: 1,
+ name: '人事档案管理_人员名单_查询数据_根据姓名_MESWORK',
+ param: '姓名=' + name + '=string'
+ }
+ })
+}
+// 新增部门
+export function addDepartmentName(num1, num2, num3) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: 2,
+ name: '人事档案管理_部门关系_增加节点',
+ param: '父节点=' + num1 + '=int&节点名称=' + num2 + '=string&子节点=' + num3
+ }
+ })
+}
+// 删除部门
+export function delList(num1) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: 2,
+ name: '人事档案管理_部门关系_删除节点',
+ param: '子节点=' + num1 + '=int'
+ }
+ })
+}
+// 编辑部门
+export function editList(num1, num2) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: 2,
+ name: '人事档案管理_部门关系_修改节点',
+ param: '子节点=' + num1 + '=int&节点名称=' + num2 + '=string'
+ }
+ })
+}
+export function delPeopleList(num1) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: 2,
+ name: '人事档案管理_人员名单_删除数据_MESWORK',
+ param: '人员编号=' + num1 + '=int'
+ }
+ })
+}
+export function initUniversity() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: 1,
+ name: '人事档案管理_基础表_毕业院校_查询数据'
+ }
+ })
+}
+export function fetchEducationData() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: 1,
+ name: '人事档案管理_基础表_学历_查询数据'
+ }
+ })
+}
+export function initMajor() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: 1,
+ name: '人事档案管理_基础表_所学专业_查询数据'
+ }
+ })
+}
+export function fetchForeignLanguageLevelDate() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: 1,
+ name: '人事档案管理_基础表_外语及熟练程度_查询数据'
+ }
+ })
+}
+export function fetchTitleData() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: 1,
+ name: '人事档案管理_基础表_职称_查询数据'
+ }
+ })
+}
+export function fetchPostData() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: 1,
+ name: '人事档案管理_基础表_人员岗位_查询数据'
+ }
+ })
+}
+export function fetchPositionStatusData() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: 1,
+ name: '人事档案管理_基础表_岗位状态_查询数据'
+ }
+ })
+}
+export function addPeople(id, Sex, Education, Address, Nation, Post, AccountNumber, Password, Name, IDcard, TimeOfEntry, Birthday, ContactInformation) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: 2,
+ name: '人事档案管理_人员名单_增加数据_MESWORK',
+ param: '考核部门编号=' + id + '=int&性别编号=' + Sex + '=int&学历编号=' + Education + '=int&家庭住址=' + Address + '&民族=' + Nation + '&岗位编号=' + Post + '=int&考勤编号=' + AccountNumber + '=string&密码=' + Password + '=string&姓名=' + Name + '=string&身份证号=' + IDcard + '=string&入公司时间=' + TimeOfEntry + '=string&出生日期=' + Birthday + '=string&联系电话=' + ContactInformation + '=string'
+ }
+ })
+}
+export function editPeople(id, Sex, Education, Address, Nation, Post, AccountNumber, Password, Name, IDcard, TimeOfEntry, Birthday, ContactInformation) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: 2,
+ name: '人事档案管理_人员名单_修改数据_MESWORK',
+ param: '人员编号=' + id + '=int&性别编号=' + Sex + '=int&学历编号=' + Education + '=int&家庭住址=' + Address + '&民族=' + Nation + '&岗位编号=' + Post + '=int&考勤编号=' + AccountNumber + '=string&密码=' + Password + '=string&姓名=' + Name + '=string&身份证号=' + IDcard + '=string&入公司时间=' + TimeOfEntry + '=string&出生日期=' + Birthday + '=string&联系电话=' + ContactInformation + '=string'
+ }
+ })
+}
+export function moveGroups(num1, num2) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: 2,
+ name: '人事档案管理_人员名单_移动数据_MESWORK',
+ param: '人员编号=' + num1 + '=int&考核部门编号=' + num2 + '=int'
+ }
+ })
+}
+export function feacthUniversity(num1) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: 1,
+ name: '人事档案管理_基础表_毕业院校_查询数据_根据学校名_MESWORK',
+ param: '毕业院校名称=' + num1 + '=string'
+ }
+ })
+}
+export function addUniversity(num1) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: 2,
+ name: '人事档案管理_基础表_毕业院校_增加数据',
+ param: '毕业院校名称=' + num1 + '=string'
+ }
+ })
+}
+export function editUniversity(num1, num2) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: 2,
+ name: '人事档案管理_基础表_毕业院校_修改数据',
+ param: '毕业院校编号=' + num1 + '=int&毕业院校名称=' + num2 + '=string'
+ }
+ })
+}
+export function delUniversity(num1) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: 2,
+ name: '人事档案管理_基础表_毕业院校_删除数据',
+ param: '毕业院校编号=' + num1 + '=int'
+ }
+ })
+}
+export function fetchMajor(num1) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: 1,
+ name: '人事档案管理_基础表_所学专业_查询数据_根据专业名_MESWORK',
+ param: '专业名称=' + num1 + '=string'
+ }
+ })
+}
+export function addMajor(num1) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: 2,
+ name: '人事档案管理_基础表_所学专业_增加数据',
+ param: '专业名称=' + num1 + '=string'
+ }
+ })
+}
+export function editMajor(num1, num2) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: 2,
+ name: '人事档案管理_基础表_所学专业_修改数据',
+ param: '专业编号=' + num1 + '=int&专业名称=' + num2 + '=string'
+ }
+ })
+}
+export function delMajor(num1) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: 2,
+ name: '人事档案管理_基础表_所学专业_删除数据',
+ param: '专业编号=' + num1 + '=int'
+ }
+ })
+}
+export function fetchPost(num1) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: 1,
+ name: '人事档案管理_基础表_人员岗位_查询数据_根据岗位名_MESWORK',
+ param: '岗位名称=' + num1 + '=string'
+ }
+ })
+}
+export function addPost(num1) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: 2,
+ name: '人事档案管理_基础表_人员岗位_增加数据',
+ param: '岗位名称=' + num1 + '=string'
+ }
+ })
+}
+export function editPost(num1, num2) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: 2,
+ name: '人事档案管理_基础表_人员岗位_修改数据',
+ param: '岗位编号=' + num1 + '=int&岗位名称=' + num2 + '=string'
+ }
+ })
+}
+export function delPost(num1) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: 2,
+ name: '人事档案管理_基础表_人员岗位_删除数据',
+ param: '岗位编号=' + num1 + '=int'
+ }
+ })
+}
diff --git a/src/api/BasicData/UserRightsManagement.js b/src/api/BasicData/UserRightsManagement.js
new file mode 100644
index 00000000..31da703e
--- /dev/null
+++ b/src/api/BasicData/UserRightsManagement.js
@@ -0,0 +1,82 @@
+import request from '@/utils/request'
+
+export function getRole() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '菜单系统模块_项目角色_查询数据_new'
+ }
+ })
+}
+
+export function getModule(role_check, role) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '菜单系统模块_项目主模块列表_查询数据_gj',
+ param: `角色编号_check=${role_check}&角色编号=${role}=int`
+ }
+ })
+}
+export function addModule(module, role) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '菜单系统模块_项目角色模块列表_增加数据_gj',
+ param: `角色编号=${role}=int&主模块编号=${module}=int`
+ }
+ })
+}
+export function deleteModule(module, role) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '菜单系统模块_项目角色模块列表_删除数据_gj',
+ param: `角色编号=${role}=int&主模块编号=${module}=int`
+ }
+ })
+}
+
+export function getModelData(role) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '菜单系统模块_项目主模块列表_查询单个模块_gj',
+ param: `主模块编号=${role}=int`
+ }
+ })
+}
+
+export function addModelData(component, title, icons) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '菜单系统模块_项目主模块列表_增加单个模块_gj',
+ param: `父路径=/${icons}&子名称=${icons}&子组件=${component}&标题=${title}&图标=${icons}`
+ }
+ })
+}
+
+export function editModelData(modelNum, component, title, icons) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '菜单系统模块_项目主模块列表_修改单个模块_gj',
+ param: `主模块编号=${modelNum}&父路径=/${icons}&子名称=${icons}&子组件=${component}&标题=${title}&图标=${icons}`
+ }
+ })
+}
diff --git a/src/api/ManufacturingCenter/DiscardedPartsInquiry.js b/src/api/ManufacturingCenter/DiscardedPartsInquiry.js
new file mode 100644
index 00000000..238b9303
--- /dev/null
+++ b/src/api/ManufacturingCenter/DiscardedPartsInquiry.js
@@ -0,0 +1,72 @@
+import request from '@/utils/request'
+
+// 初始化项目名称
+export function initProject() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: 'PDM_项目名称_查询数据_按时间排序'
+ }
+ })
+}
+// 用项目查机床
+export function searchMachine(num) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: 'PDM_机床名称_查询数据2',
+ param: '项目流水号=' + num
+ }
+ })
+}
+// 用机床查组件名称/号
+export function searchGroupNum(num) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: 'PDM_零件明细表_组件流水号_查询数据_根据机床',
+ param: '机床流水号=' + num
+ }
+ })
+}
+export function searchTable(entryValue, machineValue, check2, GroupNumValue, check3, PartDrawingNumber, pageCurrent, pageSize) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_传递后_零件报废补投_查询数据_综合查询',
+ param: '项目流水号_check=1&项目流水号=' + entryValue + '&机床流水号_check=1&机床流水号=' + machineValue + '&组件流水号_check=' + check2 + '&组件流水号=' + GroupNumValue + '&组件零件基本件流水号_check=0&工艺计划流水号_check=0&工艺计划流水号_补投前_check=0&零件图号_check=' + check3 + '&零件图号=' + PartDrawingNumber,
+ pagination: pageCurrent + '&' + pageSize
+ }
+ })
+}
+export function searchTable1(num) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_零件工序_查询数据_根据工艺计划流水号',
+ param: '工艺计划流水号=' + num
+ }
+ })
+}
+export function searchTable2(check, entryNameValue, check1, machineNameValue, pageCurrent1, pageSize1) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_传递后_零件报废补投_查询数据_按机床查询',
+ param: '项目流水号_check=' + check + '&项目流水号=' + entryNameValue + '&机床流水号_check=' + check1 + '&机床流水号=' + machineNameValue,
+ pagination: pageCurrent1 + '&' + pageSize1
+ }
+ })
+}
diff --git a/src/api/ManufacturingCenter/GroupMatching.js b/src/api/ManufacturingCenter/GroupMatching.js
new file mode 100644
index 00000000..1b9b2502
--- /dev/null
+++ b/src/api/ManufacturingCenter/GroupMatching.js
@@ -0,0 +1,46 @@
+import request from '@/utils/request'
+
+export function initProject() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_基本件成组配套_查询项目名称'
+ }
+ })
+}
+export function searchmachine(num, check, pageCurrent, pageSize) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: 'PDM_机床名称_查询数据_分页',
+ param: '项目流水号_check=' + check + '=int&项目流水号=' + num + '=int&机床类型代码_check=0=int&机床类型代码=1=int&机床流水号_check=0=int&PageCurrent=' + pageCurrent + '=int&PageSize=' + pageSize + '=int&PageCount=1=int=output&ItemCount=1=int=output'
+ }
+ })
+}
+export function searchgroup(num, pageCurrent, pageSize) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: 'PDM_组件名称_查询数据_分页',
+ param: '机床流水号=' + num + '=int&PageCurrent=' + pageCurrent + '=int&PageSize=' + pageSize + '=int&PageCount=1=int=output&ItemCount=1=int=output'
+ }
+ })
+}
+export function searchTable(check, entryNameValue, check1, machine, check2, groupNum, check3, year, check4, month, check5, time, pageCurrent, pageSize) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_基本件成组配套_查询数据',
+ param: '项目流水号_check=' + check + '=int&项目流水号=' + entryNameValue + '=int&机床流水号_check=' + check1 + '=int&机床流水号=' + machine + '=int&组件流水号_check=' + check2 + '=int&组件流水号=' + groupNum + '=int&年_check=' + check3 + '=int&年=' + year + '=string&月_check=' + check4 + '=int&月=' + month + '=int&入库时间_check=' + check5 + '=int&入库时间=' + time + '=string',
+ pagination: pageCurrent + '&' + pageSize
+ }
+ })
+}
diff --git a/src/api/ManufacturingCenter/InitialProduction.js b/src/api/ManufacturingCenter/InitialProduction.js
new file mode 100644
index 00000000..ceeba752
--- /dev/null
+++ b/src/api/ManufacturingCenter/InitialProduction.js
@@ -0,0 +1,113 @@
+import request from '@/utils/request'
+
+// 初始化 项目名称
+export function getEntryNameValue() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_传递前_投产项目名称_查询数据',
+ param: '是否传递=1=int'
+ }
+ })
+}
+// 项目名称
+export function getToolNum(num) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_传递后_机床名称_查询数据',
+ param: '项目流水号=' + num + '=int&是否传递=1=int'
+ }
+ })
+}
+// 组号
+export function getNum(num) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_传递后_组件名称_查询数据',
+ param: '机床流水号=' + num + '=int&是否传递=1=int'
+ }
+ })
+}
+// 获取表格数据
+export function getTable(num, pageList, pageSize) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_零件工艺计划_已投产_按组查',
+ param: '组件流水号=' + num + '=int',
+ Pagination: pageList + '&' + pageSize
+ }
+ })
+}
+// 投产
+export function production(num, a, b, d, e, f, g, h, i, j, k, l, m, n, o, p, q, x, s, t, u, v, w) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '设备管理_可安排生产计划零件排序_制定组时间_同时传递',
+ param: '组件零件基本件流水号=' + num + '=int&投产类型流水号=' + a + '=int&数据类型=' + b + '=int&投产批次=1=int&批次数量=' + d + '=string&计划开始时间=' + e + '=string&计划结束时间=' + f + '=string&工艺计划开始时间=' + g + '=string&工艺计划结束时间=' + h + '=string&定额计划开始时间=' + i + '=string&定额计划结束时间=' + j + '=string&计划编制计划开始时间=' + k + '=string&计划编制计划结束时间=' + l + '=string&机加工开始时间=' + m + '=string&机加工结束时间=' + n + '=string&单件外协时间=' + o + '=string&单件是否外协=' + p + '=int&单件是否外协分类=' + q + '=string&计划制定人员编号=' + x + '&材料流水号=' + s + '=int&是否临时件=' + t + '=int&是否难度件=' + u + '=string&是否着急=' + v + '=int&是否白图=' + w + '=int'
+ }
+ })
+}
+// 获取表2的值
+export function getTable1(num, pageList, pageSize) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_零件工艺计划_分批投产计划查询_查询显示',
+ param: '组件零件基本件流水号=' + num + '=int',
+ Pagination: pageList + '&' + pageSize
+ }
+ })
+}
+// 分批投产
+export function revisionBatch(num, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, x, s, t, u, v, w) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '设备管理_可安排生产计划零件排序_制定组时间_同时传递',
+ param: '组件零件基本件流水号=' + num + '=int&投产类型流水号=' + a + '=int&数据类型=' + b + '=int&投产批次=' + c + '=int&批次数量=' + d + '=string&计划开始时间=' + e + '=string&计划结束时间=' + f + '=string&工艺计划开始时间=' + g + '=string&工艺计划结束时间=' + h + '=string&定额计划开始时间=' + i + '=string&定额计划结束时间=' + j + '=string&计划编制计划开始时间=' + k + '=string&计划编制计划结束时间=' + l + '=string&机加工开始时间=' + m + '=string&机加工结束时间=' + n + '=string&单件外协时间=' + o + '=string&单件是否外协=' + p + '=int&单件是否外协分类=' + q + '=string&计划制定人员编号=' + x + '&材料流水号=' + s + '=int&是否临时件=' + t + '=int&是否难度件=' + u + '=string&是否着急=' + v + '=int&是否白图=' + w + '=int'
+ }
+ })
+}
+// 编辑
+export function editList(num, a, b, c) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理工艺_零件工艺计划_修改批次数量',
+ param: '工艺计划流水号=' + num + '=int&批次数量=' + a + '=string&机加工开始时间=' + b + '=string&机加工结束时间=' + c + '=string'
+ }
+ })
+}
+// 打回档案
+export function dele(num, a, b) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: 'MRP_计划订单_车间打回零件_增加数据',
+ param: '组件零件基本件流水号=' + num + '=int&打回原因=' + a + '=string&打回时间=' + b + '=string'
+ }
+ })
+}
+
diff --git a/src/api/ManufacturingCenter/OwnTimeStatistics.js b/src/api/ManufacturingCenter/OwnTimeStatistics.js
new file mode 100644
index 00000000..96837534
--- /dev/null
+++ b/src/api/ManufacturingCenter/OwnTimeStatistics.js
@@ -0,0 +1,24 @@
+import request from '@/utils/request'
+
+export function initProject() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '设备管理_传递后_项目名称_查询数据',
+ param: '考核状态=5'
+ }
+ })
+}
+export function searchData(check1, num1, check2, start, end, type) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_新排产算法_工时统计_单个项目总工时',
+ param: '项目流水号_check=' + check1 + '&项目流水号=' + num1 + '&日期_check=' + check2 + '&开始日期=' + start + '&结束日期=' + end + '&查询类型=' + type
+ }
+ })
+}
diff --git a/src/api/ManufacturingCenter/PartAssignment.js b/src/api/ManufacturingCenter/PartAssignment.js
new file mode 100644
index 00000000..de76d929
--- /dev/null
+++ b/src/api/ManufacturingCenter/PartAssignment.js
@@ -0,0 +1,191 @@
+import request from '@/utils/request'
+
+// 初始化项目
+export function initProject() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: 'PDM_项目名称_查询数据'
+ }
+ })
+}
+// 机床查询
+export function searchmachine(num, check) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: 'PDM_机床名称_查询数据',
+ param: '项目流水号_check=' + check + '=int&项目流水号=' + num
+ }
+ })
+}
+// 组件查询
+export function searchgroup(num) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: 'PDM_组件名称_查询数据',
+ param: '机床流水号=' + num
+ }
+ })
+}
+export function searchTable(projectValue, check1, machineNumberValue, check2, groupNumberValue, check3) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间管理_基本件采购_查询数据',
+ param: '项目流水号_check=' + check1 + '&项目流水号=' + projectValue + '&机床流水号_check=' + check2 + '&机床流水号=' + machineNumberValue + '&组件流水号_check=' + check3 + '&组件流水号=' + groupNumberValue
+ }
+ })
+}
+export function searchPart(num) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: 'PDM_零件明细表_基本件_查询数据',
+ param: '组件流水号=' + num
+ }
+ })
+}
+export function searchPart1(num, type) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: 'PDM_项目管理_零件明细表_标准件和外购件_车间采购_查询数据',
+ param: '组件流水号=' + num + '&标准件类型=' + type
+ }
+ })
+}
+export function searchTable1(PurchaseOrder, check4) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间管理_基本件采购_请购单_查询数据',
+ param: '请购单编号=' + PurchaseOrder + '&请购单编号_check=' + check4
+ }
+ })
+}
+export function addData(num, num1, num2, id, time) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间管理_基本件采购_请购单_增加数据',
+ param: '请购单编号=' + num + '&请购车间=' + num1 + '&请购人=' + num2 + '&人员编号=' + id + '&请购时间=' + time
+ }
+ })
+}
+export function editData(RequisitionList, num, num1, time) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间管理_基本件采购_请购单_编辑数据',
+ param: '请购单流水号=' + RequisitionList + '&请购单编号=' + num + '&请购车间=' + num1 + '&请购时间=' + time
+ }
+ })
+}
+export function deleteData(RequisitionList) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间管理_基本件采购_请购单_删除数据',
+ param: '请购单流水号=' + RequisitionList
+ }
+ })
+}
+export function searchDetailed(num) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间管理_基本件采购_请购单明细_查询数据',
+ param: '请购单流水号=' + num
+ }
+ })
+}
+export function purchaseRequisition(RequisitionList, projectName, projectFloatValue, MachineToolNumber, machineFloatValue, groupName, groupFloatValue, BasicPartsNumber, MaterialName, NumberOfParts, PartType, time, MaterialNum) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间管理_基本件采购_请购单明细_请购',
+ param: '请购单流水号=' + RequisitionList + '&项目名称=' + projectName + '&项目流水号=' + projectFloatValue + '&机床图号=' + MachineToolNumber + '&机床流水号=' + machineFloatValue + '&组号=' + groupName + '&组件流水号=' + groupFloatValue + '&基本件流水号=' + BasicPartsNumber + '&物料名称=' + MaterialName + '&零件数量=' + NumberOfParts + '&零件类型=' + PartType + '&物料计划到货时间=' + time + '&物料流水号=' + MaterialNum
+ }
+ })
+}
+export function purchaseRequisition1(RequisitionList, projectName, projectFloatValue, MachineToolNumber, machineFloatValue, groupName, groupFloatValue, StandardPartsAndOutsourcing, MaterialName, MaterialSpecification, MaterialModel, NumberOfParts, PartType, time, MaterialNum) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间管理_基本件采购_请购单明细_请购',
+ param: '请购单流水号=' + RequisitionList + '&项目名称=' + projectName + '&项目流水号=' + projectFloatValue + '&机床图号=' + MachineToolNumber + '&机床流水号=' + machineFloatValue + '&组号=' + groupName + '&组件流水号=' + groupFloatValue + '&标准件和外购件流水号=' + StandardPartsAndOutsourcing + '&物料名称=' + MaterialName + '&物料规格=' + MaterialSpecification + '&物料型号=' + MaterialModel + '&零件数量=' + NumberOfParts + '&零件类型=' + PartType + '&物料计划到货时间=' + time + '&物料流水号=' + MaterialNum
+ }
+ })
+}
+export function MoveOut(num, num1) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间管理_基本件采购_请购单明细_移出',
+ param: '请购单明细流水号=' + num + '&基本件流水号=' + num1
+ }
+ })
+}
+export function MoveOut1(num, num1) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间管理_基本件采购_请购单明细_移出',
+ param: '请购单明细流水号=' + num + '&标准件和外购件流水号=' + num1
+ }
+ })
+}
+export function PurchasingDepartment(num, num1, time, MaterialNum, NumberOfParts, projectFloatValue, machineFloatValue) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间管理_车间采购_标准件和外购件_传递数据',
+ param: `组件流水号=${num}&标准件和外购件流水号组=${num1}&物料计划到货时间=${time}=datetime&物料流水号组=${MaterialNum}&零件数量组=${NumberOfParts}&项目流水号=${projectFloatValue}&机床流水号=${machineFloatValue}`
+ }
+ })
+}
+export function Production(num, MaterialNum, projectFloatValue, machineFloatValue) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间管理_车间采购_基本件_传递数据',
+ param: `组件流水号=${num}&基本件流水号组=${MaterialNum}&项目流水号=${projectFloatValue}&机床流水号=${machineFloatValue}`
+ }
+ })
+}
diff --git a/src/api/ManufacturingCenter/PartWorkCraftSelect_rdlc.js b/src/api/ManufacturingCenter/PartWorkCraftSelect_rdlc.js
new file mode 100644
index 00000000..c5abf284
--- /dev/null
+++ b/src/api/ManufacturingCenter/PartWorkCraftSelect_rdlc.js
@@ -0,0 +1,38 @@
+import request from '@/utils/request'
+
+// 查询
+export function search(pageCurrent, pageSize, num) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_零件工序_查询数据_已编制工序的全部零件及工序_按零件图号查',
+ param: '零件图号=' + num,
+ Pagination: pageCurrent + '&' + pageSize
+ }
+ })
+}
+// 显示表1
+export function searchtable1(num) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_零件工序_查询数据_根据工艺计划流水号_工艺定额查询_系数',
+ param: '工艺计划流水号=' + num
+ }
+ })
+}
+export function searchtable2(num) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_零件加工路线单_查询数据_系数',
+ param: '工艺计划流水号=' + num
+ }
+ })
+}
diff --git a/src/api/ManufacturingCenter/ProcessPlanning.js b/src/api/ManufacturingCenter/ProcessPlanning.js
new file mode 100644
index 00000000..55ef5727
--- /dev/null
+++ b/src/api/ManufacturingCenter/ProcessPlanning.js
@@ -0,0 +1,384 @@
+import request from '@/utils/request'
+
+// 初始化 工艺员A
+export function initCraftmen() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '人事档案管理_人员_部门与人员_查询数据_根据部门编号',
+ param: '考核部门编号=10'
+ }
+ })
+}
+// 查询 未编制 零件号
+export function getPartnames1(num1, num2) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_零件工艺计划_编制工艺_按人员查',
+ param: '工艺人员编号=' + num1 + '&零件图号=' + num2
+ }
+ })
+}
+// 初始化 已编制 零件号
+export function getPartnames2(num1, num2) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_零件工艺计划_查询已完成工艺制定零件',
+ param: '工艺人员编号=' + num1 + '&零件图号=' + num2
+ }
+ })
+}
+// 零件详细信息
+export function detailInfo(serialNum) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_零件工艺计划_查已投产零件信息',
+ param: '工艺计划流水号=' + serialNum + '=int'
+ }
+ })
+}
+// 初始化材质
+export function getMaterial(pageCurrent, pageSize) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_材质表_查询数据',
+ Pagination: pageCurrent + '&' + pageSize
+ }
+ })
+}
+// 根据材质名称查材质
+export function searchMaterial(pageCurrent, pageSize, name) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_材质表_查询数据_根据材料名称',
+ param: '材料名称=' + name,
+ Pagination: pageCurrent + '&' + pageSize
+ }
+ })
+}
+// 典型工艺选择零件分类A
+export function typicalProcess() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_基础表_典型工艺名称_分类_查询数据'
+ }
+ })
+}
+// 典型工艺选择零件名称、工艺号、备注
+export function FcK(serialNum) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_基础表_典型工艺名称_查询数据_查典型工艺名称',
+ param: '典型工艺名称分类流水号=' + serialNum + '=int'
+ }
+ })
+}
+// 典型工艺查询
+export function searchProcess(check1, a, check2, b, check3, c) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_基础表_典型工艺名称_查询数据_综合查询',
+ param: '典型工艺名称分类流水号_check=' + check1 + '=bit&典型工艺名称分类流水号=' + a + '=int&典型工艺流水号_check=' + check2 + '=bit&典型工艺流水号=' + b + '=int&典型工艺流水号1_check=' + check3 + '=bit&典型工艺流水号1=' + c + '=int'
+ }
+ })
+}
+// 初始化工艺名称
+export function processNameClick() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_基础表_工艺分类名称_查询数据'
+ }
+ })
+}
+// 工艺名称查询
+export function processNameSelect(val) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_基础表_工艺名称_查询数据',
+ param: '工艺分类流水号_check=1=bit&工艺分类流水号=' + val + '=int'
+ }
+ })
+}
+// 工艺要求查询
+export function processRequestSelect(val) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理_基础表_工艺要求_查询数据',
+ param: '工艺编号=' + val + '=int'
+ }
+ })
+}
+// 初始化公差A
+export function initTolerance() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_基础表_公差对照表_查询数据'
+ }
+ })
+}
+// 公差查询
+export function searchTolerance(val1, val2) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_基础表_公差对照表_公差_查询数据',
+ param: '输入数值=' + val1 + '&参数=' + val2
+ }
+ })
+}
+// 工艺定额人员查询
+export function initPerson() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '人事档案管理_人员_部门与人员_查询数据_根据部门编号',
+ param: '考核部门编号=10=int'
+ }
+ })
+}
+// 完艺工艺查询
+export function searchWYgongyi(check1, tuhao, check2, bianhao, check3, start, end, check4, name) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_零件工艺计划_查询数据_根据零件图号查询已投产的工艺计划流水号',
+ param: '零件图号_check=' + check1 + '&零件图号=' + tuhao + '&工艺员编号_check=' + check2 + '&工艺员编号=' + bianhao + '&工艺时间_check=' + check3 + '&工艺开始时间=' + start + '=datetime&工艺结束时间=' + end + '=datetime&零件名称_check=' + check4 + '&零件名称=' + name
+ }
+ })
+}
+// 完艺工艺要求查询
+export function gongyiYQ(num) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_零件工艺计划_查询数据',
+ param: '工艺计划流水号=' + num
+ }
+ })
+}
+// 完艺工艺拷贝
+export function gongyiCopy(num1, num2) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_零件工序_工艺拷贝_工艺计划流水号',
+ param: '工艺计划流水号_完成工艺=' + num1 + '=int&工艺计划流水号_被拷工艺=' + num2 + '=int'
+ }
+ })
+}
+// 主界面选择零件号查主表
+export function mainTable(num) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_零件工序_查询工序信息',
+ param: '工艺计划流水号=' + num + '=int'
+ }
+ })
+}
+// 主界面主表难度等级修改
+export function hardEdit(num, hard) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理工艺_零件工序_修改数据_工艺难度等级',
+ param: '工序流水号=' + num + '=int&工艺难度等级=' + hard
+ }
+ })
+}
+// 主界面主表工艺要求修改
+export function requestEdit(num, request0) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理工艺_零件工序_修改数据_工艺要求_根据工序流水号',
+ param: '工序流水号=' + num + '=int&工艺要求=' + request0
+ }
+ })
+}
+// 主界面主表插入功能
+export function insertOne(num0, num1) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理工艺_零件工序_修改数据_工艺计划流水号和工序流水号',
+ param: '工艺计划流水号=' + num0 + '=int&工序流水号=' + num1 + '=int'
+ }
+ })
+}
+// 主界面主表删除功能
+export function deleteOne(num0, num1) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理工艺_零件工序_删除数据_工序流水号',
+ param: '工艺计划流水号=' + num0 + '=int&工序流水号=' + num1 + '=int'
+ }
+ })
+}
+// 主界面主表上移功能
+export function upOne(num0, num1) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理工艺_零件工序_修改数据_上移工序',
+ param: '工艺计划流水号=' + num0 + '=int&工序流水号=' + num1 + '=int'
+ }
+ })
+}
+// 主界面主表下移功能
+export function downOne(num0, num1) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理工艺_零件工序_修改数据_下移工序',
+ param: '工艺计划流水号=' + num0 + '=int&工序流水号=' + num1 + '=int'
+ }
+ })
+}
+// 保存变更材质
+export function saveMaterial(num0, num1) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理工艺_零件工艺计划_修改零件材料',
+ param: '工艺计划流水号=' + num0 + '&材料流水号=' + num1
+ }
+ })
+}
+// 核准保存
+export function saveApprove(num0, num1, request0, spec, num2, outhelp, num3, num4, weight, area, num5, level) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理工艺_零件工序_增加数据_同时修改工艺计划',
+ param: '工艺计划流水号=' + num0 + '&工艺编号=' + num1 + '&工艺要求=' + request0 + '&原材料规格=' + spec + '&工序顺序=' + num2 + '&工序间是否外协=' + outhelp + '&工序流水号=' + num3 + '&材料流水号=' + num4 + '&重量=' + weight + '&面积=' + area + '&工艺人员编号=' + num5 + '&工艺难度等级=' + level
+ }
+ })
+}
+// 选择工艺要求
+export function selectRequest(num0, num1, num2, num3, request0) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理工艺_零件工序_修改数据_根据工序流水号和工艺计划流水号',
+ param: '工序流水号=' + num0 + '&工艺计划流水号=' + num1 + '&工艺编号=' + num2 + '&工艺顺序=' + num3 + '&工艺要求=' + request0
+ }
+ })
+}
+// 粘贴
+export function pasteTable(oldNum, newNum) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理工艺_零件工艺计划_拷贝零件工艺',
+ param: '工艺计划流水号旧=' + oldNum + '&工艺计划流水号新=' + newNum
+ }
+ })
+}
+// 删除
+export function deleteTable(num) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理工艺_零件工序_删除零件工艺',
+ param: '工艺计划流水号=' + num
+ }
+ })
+}
+// 在制零件工艺修改
+export function returnEdit(num) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理工艺_在制零件工艺调整_修改工艺',
+ param: '工艺计划流水号=' + num
+ }
+ })
+}
+// 查询工艺记录
+export function searchRecord(num) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_在制零件工艺调整_查询工艺',
+ param: '工艺计划流水号=' + num
+ }
+ })
+}
diff --git a/src/api/ManufacturingCenter/ProcessTaskAssignment.js b/src/api/ManufacturingCenter/ProcessTaskAssignment.js
new file mode 100644
index 00000000..db286aa4
--- /dev/null
+++ b/src/api/ManufacturingCenter/ProcessTaskAssignment.js
@@ -0,0 +1,135 @@
+import request from '@/utils/request'
+
+// 初始化项目(全部)
+export function getProject() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_传递后_项目名称_查询数据_工艺定额任务分配',
+ param: '考核状态=3&工艺任务分配状态=1&定额任务分配状态=1'
+ }
+ })
+}
+// 初始化项目(当天)
+export function getProject0() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_零件工艺计划_工艺任务分配_项目查询'
+ }
+ })
+}
+// 获取机床图号(全部)
+export function getGraphNum(num) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_传递后_机床名称_查询数据',
+ param: '项目流水号=' + num + '&是否传递=2&考核状态=3&工艺任务分配状态=1&定额任务分配状态=1&单件是否外协=0'
+ }
+ })
+}
+// 获取机床图号(当天)//////////////
+export function getGraphNum0(num) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_零件工艺计划_工艺任务分配_机床查询',
+ param: '项目流水号=' + num
+ }
+ })
+}
+// 获取组号(全部)
+export function getGroupNum(num) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_传递后_组件名称_查询数据',
+ param: '机床流水号=' + num + '&是否传递=2&考核状态=3&工艺任务分配状态=1&定额任务分配状态=1&单件是否外协=0'
+ }
+ })
+}
+// 获取组号(当天)/////////
+export function getGroupNum0(num) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_零件工艺计划_工艺任务分配_组件查询',
+ param: '机床流水号=' + num
+ }
+ })
+}
+// 获取工艺计划,填充主表
+export function getTable0(PageCurrent, PageSize, num) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_零件工艺计划_已制定计划_按组查',
+ param: '组件流水号=' + num,
+ Pagination: PageCurrent + '&' + PageSize
+ }
+ })
+}
+// 查询主表(当天)////////
+export function getTable00(PageCurrent, PageSize, num) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_零件工艺计划_工艺任务分配_零件查询',
+ param: '组件流水号=' + num,
+ Pagination: PageCurrent + '&' + PageSize
+ }
+ })
+}
+// 保存
+export function save(num1, num2, num3) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理工艺_工艺任务分配_保存数据',
+ param: '工艺计划流水号=' + num1 + '&人员编号=' + num2 + '&零件图号=' + num3
+ }
+ })
+}
+// // 模糊查询
+// export function fuzzyQuery(num) {
+// return request({
+// url: '',
+// method: 'post',
+// data: {
+// type: '1',
+// name: '车间生产管理工艺_传递后_机床名称_查询数据_模糊查询',
+// param: '机床图号=' + num + '&是否传递=2&考核状态=3&工艺任务分配状态=1&定额任务分配状态=1'
+// }
+// })
+// }
+// 工艺定额人员查询
+export function initPerson() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '人事档案管理_人员_部门与人员_查询数据_根据部门编号',
+ param: '考核部门编号=10=int'
+ }
+ })
+}
diff --git a/src/api/ManufacturingCenter/ProcessingStatus.js b/src/api/ManufacturingCenter/ProcessingStatus.js
new file mode 100644
index 00000000..f77b1134
--- /dev/null
+++ b/src/api/ManufacturingCenter/ProcessingStatus.js
@@ -0,0 +1,63 @@
+import request from '@/utils/request'
+
+export function getNames() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_传递后_项目名称_查询数据',
+ param: '考核状态=6=int'
+ }
+ })
+}
+
+export function getMachines(gongyi) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_传递后_机床名称_查询数据_查询所有机床',
+ param: '项目流水号=' + gongyi + '=int'
+ }
+ })
+}
+
+export function getGroups(stepNumber) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_传递后_组件名称_查询数据_查询所有组',
+ param: '机床流水号=' + stepNumber + '=int'
+ }
+ })
+}
+
+export function getTable(stepNumber, a, b, c, d, e, f, g, i, pageCurrent, pageSize) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_零件工序_查询数据_已编制工序的全部零件及工序_横向赋值新建存储过程',
+ // param: '项目流水号_check=0=string&项目流水号=428=string&机床流水号_check=0=string&机床流水号=8903=string&组件流水号_check=1=string&组件流水号=39539=string&零件图号_check=0=string&零件图号=0=string&是否查询全部数据=1=string&单件是否外协=1=string&考核状态=6=string',
+ param: '项目流水号_check=' + stepNumber + '=string&项目流水号=' + a + '=string&机床流水号_check=' + b + '=string&机床流水号=' + c + '=string&组件流水号_check=' + d + '=string&组件流水号=' + e + '=string&零件图号_check=' + f + '=string&零件图号=' + g + '=string&是否查询全部数据=1=string&单件是否外协=' + i + '=string&考核状态=6=int',
+ Pagination: pageCurrent + '&' + pageSize
+ }
+ })
+}
+
+export function getTable2(stepNumber, a, b, c, d, e, g, i) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_零件工序_查询数据_已编制工序的全部零件及工序',
+ param: '项目流水号_check=' + stepNumber + '=string&项目流水号=' + a + '=string&机床流水号_check=' + b + '=string&机床流水号=' + c + '=string&组件流水号_check=' + d + '=string&组件流水号=' + e + '=string&零件图号_check=1=string&零件图号=' + g + '=string&是否查询全部数据=1=string&单件是否外协=' + i + '=string&考核状态=6=int'
+ }
+ })
+}
diff --git a/src/api/ManufacturingCenter/QuotaFormulation.js b/src/api/ManufacturingCenter/QuotaFormulation.js
new file mode 100644
index 00000000..89c27cd6
--- /dev/null
+++ b/src/api/ManufacturingCenter/QuotaFormulation.js
@@ -0,0 +1,100 @@
+import request from '@/utils/request'
+
+// 初始化 未编制 零件号111
+export function getPartnames1() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_零件工艺计划_编制定额_查询数据'
+ }
+ })
+}
+// 初始化 已编制 零件号
+export function getPartnames2(person) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_零件工艺计划_查询已完成定额制定零件',
+ param: '定额人员编号=' + person + '=int'
+ }
+ })
+}
+
+// 人员111
+export function getPerson() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '人事档案管理_人员_部门与人员_查询数据_根据部门编号',
+ param: '考核部门编号=11=int'
+
+ }
+ })
+}
+// 零件详细信息111
+export function detailInfo(serialNum) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_零件工艺计划_查已投产零件信息',
+ param: '工艺计划流水号=' + serialNum + '=int'
+ }
+ })
+}
+
+// 主界面选择零件号查主表
+export function mainTable(num) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_零件工序_查询数据_根据工艺计划流水号_零件定额制定',
+ param: '工艺计划流水号=' + num + '=int'
+ }
+ })
+}
+export function mainTable1(num) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_零件工序_查询数据_根据工艺计划流水号',
+ param: '工艺计划流水号=' + num + '=int'
+ }
+ })
+}
+
+// 已编制保存
+export function TableAddLi(a, b, c, num0, num1) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理工艺_零件工序_增加数据_修改数据',
+ param: '单件定额工时=' + a + '=string&准结定额工时=' + b + '=string&零件图号=' + c + '=string&工序流水号=' + num0 + '=int&工艺计划流水号=' + num1 + '=int'
+ }
+ })
+}
+// 未编制保存
+export function TableAddLi1(a, b) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理工艺_定额任务分配_保存数据',
+ param: '工艺计划流水号=' + a + '=string&人员编号=' + b + '=string'
+ }
+ })
+}
diff --git a/src/api/ManufacturingCenter/RepairTimeEntry.js b/src/api/ManufacturingCenter/RepairTimeEntry.js
new file mode 100644
index 00000000..fc99ccd6
--- /dev/null
+++ b/src/api/ManufacturingCenter/RepairTimeEntry.js
@@ -0,0 +1,113 @@
+import request from '@/utils/request'
+
+// 初始化工艺
+export function searchTechnology(num) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_基础表_工艺名称_查询数据',
+ param: '工艺分类流水号_check=0&工艺分类流水号=' + num
+ }
+ })
+}
+// 查询人员编号
+export function searchperson(num) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_员工回用报废工时统计表_查询数据',
+ param: '序号=' + num
+ }
+ })
+}
+// 查询
+export function searchtable(check, num, pageCurrent, pageSize) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理_基础表_员工月修补工时_查询数据',
+ param: '人员编号_check=' + check + '&人员编号=' + num,
+ Pagination: pageCurrent + '&' + pageSize
+ }
+ })
+}
+// 增加
+export function edittype(ManufacturerNumber, ManufacturerName, ManufacturerAbbreviation, address, roleName) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理_基础表_员工月修补工时_增加数据',
+ param: '人员编号=' + ManufacturerNumber + '&工艺编号=' + ManufacturerName + '&年=' + ManufacturerAbbreviation + '&月=' + address + '&修补工时=' + roleName
+ }
+ })
+}
+// 编辑
+export function handlechange(CoManufacturerFlowNumber, ManufacturerNumber, ManufacturerName, ManufacturerAbbreviation, address, roleName) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理_基础表_员工月修补工时_修改数据',
+ param: '员工月修补工时流水号=' + CoManufacturerFlowNumber + '&人员编号=' + ManufacturerNumber + '&工艺编号=' + ManufacturerName + '&年=' + ManufacturerAbbreviation + '&月=' + address + '&修补工时=' + roleName
+ }
+ })
+}
+export function dialogtablevisible() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '人事档案管理_部门关系_查询节点',
+ param: '子节点=0'
+ }
+ })
+}
+// 初始化人员信息 弹出框
+export function getTree() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: 1,
+ name: '人事档案管理_部门关系_查询节点',
+ param: '子节点=0=int'
+ }
+ })
+}
+export function fn(data, pid) {
+ const result = []
+ let temp
+ for (let i = 0; i < data.length; i++) {
+ if (data[i].父节点 === pid) {
+ const obj = { label: data[i].节点名称, id: data[i].子节点 }
+ temp = fn(data, data[i].子节点)
+ if (temp.length > 0) {
+ obj.children = temp
+ }
+ result.push(obj)
+ }
+ }
+ return result
+}
+
+export function getTable8(code) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: 1,
+ name: '人事档案管理_人员_部门与人员_查询数据_根据部门编号',
+ param: '考核部门编号=' + code + '=int'
+ }
+ })
+}
diff --git a/src/api/ManufacturingCenter/SparePartsForScrap.js b/src/api/ManufacturingCenter/SparePartsForScrap.js
new file mode 100644
index 00000000..6167fe8a
--- /dev/null
+++ b/src/api/ManufacturingCenter/SparePartsForScrap.js
@@ -0,0 +1,113 @@
+import request from '@/utils/request'
+export function ProjectNameSelect(stateID) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_传递后_项目名称_查询数据',
+ param: '考核状态=' + stateID + '=int'
+ }
+ })
+}
+export function MachineDrawingSelect(ProjectCode) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_传递后_机床名称_查询数据_查询所有机床',
+ param: '项目流水号=' + ProjectCode + '=int'
+ }
+ })
+}
+export function TeamSelect(MachineCode) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_传递后_组件名称_查询数据_查询所有组',
+ param: '机床流水号=' + MachineCode + '=int'
+ }
+ })
+}
+export function TableDataSelect(ProjectCode_check, ProjectCode, MachineCode_check, MachineCode, TeamCode_check, TeamCode, ComponentPartsBasicCattleTaxNumber_check, ComponentPartsBasicCattleTaxNumber, CutCode_check, CutCode, CutCodeBefore_check, CutCodeBefore, Assess_check, Assess, PartDrawing_check, PartDrawing, currentPage1, pageSize1) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_传递后_零件报废补投_查询数据',
+ param: '项目流水号_check=' + ProjectCode_check + '=int&项目流水号=' + ProjectCode + '=string&机床流水号_check=' + MachineCode_check + '=int&机床流水号=' + MachineCode + '=string&组件流水号_check=' + TeamCode_check + '=int&组件流水号=' + TeamCode + '=string&组件零件基本件流水号_check=' + ComponentPartsBasicCattleTaxNumber_check + '=int&组件零件基本件流水号=' + ComponentPartsBasicCattleTaxNumber + '=string&工艺计划流水号_check=' + CutCode_check + '=int&工艺计划流水号=' + CutCode + '=string&工艺计划流水号_补投前_check=' + CutCodeBefore_check + '=int&工艺计划流水号_补投前=' + CutCodeBefore + '=string&考核状态_check=' + Assess_check + '=int&考核状态=' + Assess + '=string&零件图号_check=' + PartDrawing_check + '=int&零件图号=' + PartDrawing + '=string',
+ Pagination: currentPage1 + '&' + pageSize1
+ }
+ })
+}
+export function editTime(CutCode, StartTime, FinishTime) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理工艺_零件工艺计划_修改时间_修改机加日期',
+ param: '工艺计划流水号=' + CutCode + '=string&机加工开始时间=' + StartTime + '=string&机加工结束时间=' + FinishTime + '=string'
+ }
+ })
+}
+export function editStop(CutCode, temp) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理工艺_零件工艺计划_修改停产',
+ param: '工艺计划流水号=' + CutCode + '=string&批次零件状态=' + temp + '=string'
+ }
+ })
+}
+export function TableDta2Select(CutCode, currentPage2, pageSize2) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_零件工序_查询数据_根据工艺计划流水号',
+ param: '工艺计划流水号=' + CutCode + '=string',
+ Pagination: currentPage2 + '&' + pageSize2
+ }
+ })
+}
+export function editA(CutCodebefore, Number, startCut) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理工艺_零件工艺计划_增加数据_补投',
+ param: '工艺计划流水号_补投前=' + CutCodebefore + '=string&批次数量=' + Number + '=string&开始工序=' + startCut + '=string'
+ }
+ })
+}
+export function TableData3Select(ProjectCode_check, ProjectCode, MachineCode_check, MachineCode, TeamCode_check, TeamCode, ComponentPartsBasicCattleTaxNumber_check, ComponentPartsBasicCattleTaxNumber, CutCode_check, CutCode, CutCodeBefore_check, CutCodeBefore, Assess_check, Assess) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_传递后_零件入库单_查询数据',
+ param: '项目流水号_check=' + ProjectCode_check + '=int&项目流水号=' + ProjectCode + '=string&机床流水号_check=' + MachineCode_check + '=int&机床流水号=' + MachineCode + '=string&组件流水号_check=' + TeamCode_check + '=int&组件流水号=' + TeamCode + '=string&组件零件基本件流水号_check=' + ComponentPartsBasicCattleTaxNumber_check + '=int&组件零件基本件流水号=' + ComponentPartsBasicCattleTaxNumber + '=string&工艺计划流水号_check=' + CutCode_check + '=int&工艺计划流水号=' + CutCode + '=string&工艺计划流水号_补投前_check=' + CutCodeBefore_check + '=int&工艺计划流水号_补投前=' + CutCodeBefore + '=string&考核状态_check=' + Assess_check + '=int&考核状态=' + Assess + '=string'
+ }
+ })
+}
+export function editchar(reason, time, num) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理工艺_零件工艺计划_增加数据_停产原因与时间_MESWORK',
+ param: '停产原因=' + reason + '=string&停产时间=' + time + '=string&工艺计划流水号=' + num + '=int'
+ }
+ })
+}
diff --git a/src/api/ManufacturingCenter/StatusQuery.js b/src/api/ManufacturingCenter/StatusQuery.js
new file mode 100644
index 00000000..1dea4f95
--- /dev/null
+++ b/src/api/ManufacturingCenter/StatusQuery.js
@@ -0,0 +1,67 @@
+import request from '@/utils/request'
+
+export function initProject() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: 'PDM_项目名称_查询数据_按时间排序'
+ }
+ })
+}
+export function intPartState() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_基础表_零件考核状态_查询数据'
+ }
+ })
+}
+export function searchmachine(num, check, pageCurrent, pageSize) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: 'PDM_机床名称_查询数据_分页',
+ param: '项目流水号_check=' + check + '=int&项目流水号=' + num + '&机床类型代码_check=0=int&机床类型代码=1=int&机床流水号_check=0=int&PageCurrent=' + pageCurrent + '=int&PageSize=' + pageSize + '=int&PageCount=1=int=output&ItemCount=1=int=output'
+ }
+ })
+}
+export function searchgroup(num, pageCurrent, pageSize) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: 'PDM_组件名称_查询数据_分页',
+ param: '机床流水号=' + num + '=int&PageCurrent=' + pageCurrent + '=int&PageSize=' + pageSize + '=int&PageCount=1=int=output&ItemCount=1=int=output'
+ }
+ })
+}
+export function searchTable(check, entryNameValue, check1, machine, check2, groupNum, check3, partNumber, check4, partStateValue, check5, partTypeValue, pageSize, pageCurrent) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_零件工艺计划_查询数据_状态_新',
+ param: '项目流水号_check=' + check + '=int&项目流水号=' + entryNameValue + '&机床流水号_check=' + check1 + '=int&机床流水号=' + machine + '=int&组件流水号_check=' + check2 + '=int&组件流水号=' + groupNum + '=int&零件图号_check=' + check3 + '=int&零件图号=' + partNumber + '=string&考核状态_check=' + check4 + '=int&考核状态=' + partStateValue + '=int&单件是否外协_check=' + check5 + '=int&单件是否外协=' + partTypeValue + '=int',
+ pagination: pageCurrent + '&' + pageSize
+ }
+ })
+}
+export function editData(num, state) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理工艺_零件工艺计划_考核状态',
+ param: '工艺计划流水号=' + num + '=int&考核状态=' + state + '=int'
+ }
+ })
+}
diff --git a/src/api/ManufacturingCenter/TypicalProcessMaintenance.js b/src/api/ManufacturingCenter/TypicalProcessMaintenance.js
new file mode 100644
index 00000000..a40b448c
--- /dev/null
+++ b/src/api/ManufacturingCenter/TypicalProcessMaintenance.js
@@ -0,0 +1,167 @@
+import request from '@/utils/request'
+
+export function getPartsCategories() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_基础表_典型工艺名称_分类_查询数据 '
+ }
+ })
+}
+
+export function getPartsName(num) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_基础表_典型工艺名称_查询数据_查典型工艺名称',
+ param: `典型工艺名称分类流水号=${num}`
+ }
+ })
+}
+
+export function getTableData(partsCategoriesCheck, partsCategories, partsNameCheck, partsName) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_基础表_典型工艺名称_查询数据_综合查询',
+ param: `典型工艺名称分类流水号_check=${partsCategoriesCheck}&典型工艺名称分类流水号=${partsCategories}&典型工艺流水号_check=${partsNameCheck}&典型工艺流水号=${partsName}&典型工艺流水号1_check=0`
+ }
+ })
+}
+
+export function upMove(typicalProcessNum, typicalSerialNum) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理工艺_基础表_典型工艺工序_上移工序',
+ param: `典型工艺流水号=${typicalProcessNum}&典型工艺工序流水号=${typicalSerialNum}`
+ }
+ })
+}
+
+export function downMove(typicalProcessNum, typicalSerialNum) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理工艺_基础表_典型工艺工序_下移工序',
+ param: `典型工艺流水号=${typicalProcessNum}&典型工艺工序流水号=${typicalSerialNum}`
+ }
+ })
+}
+
+export function insertRow(typicalProcessNum, typicalSerialNum) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理工艺_基础表_典型工艺工序_添加工序',
+ param: `典型工艺流水号=${typicalProcessNum}&典型工艺工序流水号=${typicalSerialNum}`
+ }
+ })
+}
+
+export function deleRow(typicalProcessNum, typicalSerialNum) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理工艺_基础表_典型工艺名称_删除数据',
+ param: `典型工艺流水号=${typicalProcessNum}&典型工艺工序流水号=${typicalSerialNum}`
+ }
+ })
+}
+
+export function editConfirm(typicalProcessNum, typicalSerialNum, processNum, processNo, processClaim, pieceQuota, quasiQuota, remarks) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理工艺_基础表_典型工艺工序_修改数据',
+ param: `典型工艺流水号=${typicalProcessNum}&典型工艺工序流水号=${typicalSerialNum}&工艺序号=${processNum}&工艺编号=${processNo}&工艺要求=${processClaim}&单件定额工时=${pieceQuota}&准结定额工时=${quasiQuota}&备注=${remarks}`
+ }
+ })
+}
+
+export function processNameClick() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_基础表_工艺分类名称_查询数据'
+ }
+ })
+}
+
+export function processNameSelect(val) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_基础表_工艺名称_查询数据',
+ param: `工艺分类流水号_check=1=bit&工艺分类流水号=${val}=int`
+ }
+ })
+}
+
+export function processRequestSelect(val) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理_基础表_工艺要求_查询数据',
+ param: `工艺编号=${val}=int`
+ }
+ })
+}
+
+export function difficultyLevel(level, typicalSerialNum) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理工艺_零件工序_修改数据_典型工艺难度等级',
+ param: `工艺难度等级=${level}&典型工艺工序流水号=${typicalSerialNum}`
+ }
+ })
+}
+
+export function isAddOrEdit(typicalSerialNum) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_基础表_典型工艺工序_查询数据_根据典型工艺流水号',
+ param: `典型工艺流水号=${typicalSerialNum}`
+ }
+ })
+}
+
+export function addProcess(typicalSerialNum, processNum, processNo) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_基础表_典型工艺工序_增加数据_NEW',
+ param: `典型工艺流水号=${typicalSerialNum}&工艺序号=${processNum}&工艺编号=${processNo}`
+ }
+ })
+}
diff --git a/src/api/ManufacturingCenter/WorkshopEquipmentManagement.js b/src/api/ManufacturingCenter/WorkshopEquipmentManagement.js
new file mode 100644
index 00000000..3d4cfda6
--- /dev/null
+++ b/src/api/ManufacturingCenter/WorkshopEquipmentManagement.js
@@ -0,0 +1,58 @@
+import request from '@/utils/request'
+
+export function getData(check, equipmentName, pageCurrent, pageSize) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '设备管理_设备加工能力_查询数据_设备维护',
+ param: '设备名称_check=' + check + '=int&设备名称=' + equipmentName,
+ pagination: pageCurrent + '&' + pageSize
+ }
+ })
+}
+export function initProcessing(a = '') {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_基础表_工艺名称_查询数据',
+ param: '工艺分类流水号_check=0=int&工艺分类流水号=' + a
+ }
+ })
+}
+export function addTable(equipmentName, equipmentModel, performance, processingCapacity, workingTimeFactor, processName, processNumber, shift, reorganizationTimeFactor, equipmentNumber, reservedTimeFactor) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '设备管理_设备加工能力_增加数据_设备维护New',
+ param: '设备名称=' + equipmentName + '=string&设备型号=' + equipmentModel + '=string&设备性能指标=' + performance + '= string&设备加工能力工时=' + processingCapacity + '=string&设备工时系数=' + workingTimeFactor + '=string&工艺名称简称=' + processName + '=string&工艺编号=' + processNumber + '=string&班次类型=' + shift + '= string&整改工时系数=' + reorganizationTimeFactor + '=string&设备编号=' + equipmentNumber + '=string&预留工时系数=' + reservedTimeFactor
+ }
+ })
+}
+export function editTable(equipmentSerialNumber, equipmentName, equipmentModel, performance, processingCapacity, workingTimeFactor, shift, processCode, reorganizationTimeFactor, equipmentNumber, reservedTimeFactor) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '设备管理_设备加工能力_修改数据_设备维护New',
+ param: '设备流水号=' + equipmentSerialNumber + '=int&设备名称=' + equipmentName + '=string&设备型号=' + equipmentModel + '=string&设备性能指标=' + performance + '= string&设备加工能力工时=' + processingCapacity + '=string&设备工时系数=' + workingTimeFactor + '=string&班次类型=' + shift + '=int&工艺属性代码=' + processCode + '=string&整改工时系数=' + reorganizationTimeFactor + '=string&设备编号=' + equipmentNumber + '=string&预留工时系数=' + reservedTimeFactor
+ }
+ })
+}
+export function deleteTable(number) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '设备管理_设备加工能力_删除数据_设备维护',
+ param: '设备流水号=' + number + '=int'
+ }
+ })
+}
diff --git a/src/api/MarketingCenter/BidBond.js b/src/api/MarketingCenter/BidBond.js
new file mode 100644
index 00000000..888db345
--- /dev/null
+++ b/src/api/MarketingCenter/BidBond.js
@@ -0,0 +1,118 @@
+import request from '@/utils/request'
+
+export function initType() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '投标保证金管理_保证金类型查询'
+ }
+ })
+}
+
+export function selectBidBond() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '投标保证金管理_投标保证金查询',
+ param: '是否收回_check=' + arguments[0] + '&是否收回=' + arguments[1] + '&保金类型_check=' + arguments[2] + '&保金类型=' + arguments[3] + '&投标人_check=' + arguments[4] + '&投标人=' + arguments[5] + '&招标企业_check=' + arguments[6] + '&招标企业=' + arguments[7] + '&开始日期_check=' + arguments[8] + '&开始日期=' + arguments[9] + '&结束日期_check=' + arguments[10] + '&结束日期=' + arguments[11],
+ Pagination: arguments[12] + '&' + arguments[13]
+ }
+ })
+}
+
+export function getTree() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: 1,
+ name: '人事档案管理_部门关系_查询节点',
+ param: '子节点=0=int'
+ }
+ })
+}
+export function tree(data, pid) {
+ const result = []
+ let temp
+ for (let i = 0; i < data.length; i++) {
+ if (data[i].父节点 === pid) {
+ const obj = { label: data[i].节点名称, id: data[i].子节点 }
+ temp = tree(data, data[i].子节点)
+ if (temp.length > 0) {
+ obj.children = temp
+ }
+ result.push(obj)
+ }
+ }
+ return result
+}
+export function getTablePeople(code) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: 1,
+ name: '人事档案管理_人员_部门与人员_查询数据_根据部门编号',
+ param: '考核部门编号=' + code + '=int'
+ }
+ })
+}
+export function TakeBack() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '投标保证金管理_投标保证金_收回',
+ param: '招标保证金流水号=' + arguments[0] + '&实际收回日期=' + arguments[1]
+ }
+ })
+}
+export function ComplianceGold() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '招标保证金管理_招标保证金_转履约金',
+ param: '招标保证金流水号=' + arguments[0]
+ }
+ })
+}
+export function addBidBond() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '投标保证金管理_投标保证金信息_增加',
+ param: '招标企业=' + arguments[0] + '&联系人=' + arguments[1] + '&联系电话=' + arguments[2] + '&保证金金额=' + arguments[3] + '&人员流水号=' + arguments[4] + '&保证金类型流水号=' + arguments[5] + '&投标日期=' + arguments[6] + '&预计收回日期=' + arguments[7] + '&备注=' + arguments[8] + '&提前X天提醒=' + arguments[9]
+ }
+ })
+}
+export function editBidBond() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '投标保证金管理_投标保证金信息_修改',
+ param: '招标企业=' + arguments[0] + '&联系人=' + arguments[1] + '&联系电话=' + arguments[2] + '&保证金金额=' + arguments[3] + '&人员流水号=' + arguments[4] + '&保证金类型流水号=' + arguments[5] + '&投标日期=' + arguments[6] + '&预计收回日期=' + arguments[7] + '&备注=' + arguments[8] + '&提前X天提醒=' + arguments[9] + '&招标保证金流水号=' + arguments[10]
+ }
+ })
+}
+export function delBidBond() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '投标保证金管理_投标保证金信息_删除',
+ param: '招标保证金流水号=' + arguments[0]
+ }
+ })
+}
diff --git a/src/api/MarketingCenter/CRM.js b/src/api/MarketingCenter/CRM.js
new file mode 100644
index 00000000..54dab127
--- /dev/null
+++ b/src/api/MarketingCenter/CRM.js
@@ -0,0 +1,185 @@
+import request from '@/utils/request'
+
+// 查询价值评估等级下拉框
+export function searchValue() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: 'dbo.客户关系管理系统_价值评估_查询数据_MESWORK'
+ }
+ })
+}
+// 地区查询
+export function selectAdress() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '发货管理_省份查询'
+ }
+ })
+}
+export function selectCustomer(AdressID, pageCurrent, pageSize) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '客户关系管理系统_按地区查询_客户名称',
+ param: '省份流水号=' + AdressID,
+ Pagination: pageCurrent + '&' + pageSize
+ }
+ })
+}
+// 通过名称查
+export function selectCustomerOfName(name, pageCurrent, pageSize) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '客户关系管理系统_按客户名称查询_客户名称',
+ param: '客户流水号=' + name,
+ Pagination: pageCurrent + '&' + pageSize
+ }
+ })
+}
+export function selectMarketingManager(AdressID) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '客户关系管理系统_按地区查询_营销经理',
+ param: '省份流水号=' + AdressID
+ }
+ })
+}
+export function initCustomer() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '客户关系管理系统_初始化查询_客户名称'
+ }
+ })
+}
+export function getTree() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: 1,
+ name: '人事档案管理_部门关系_查询节点',
+ param: '子节点=0=int'
+ }
+ })
+}
+export function tree(data, pid) {
+ const result = []
+ let temp
+ for (let i = 0; i < data.length; i++) {
+ if (data[i].父节点 === pid) {
+ const obj = { label: data[i].节点名称, id: data[i].子节点 }
+ temp = tree(data, data[i].子节点)
+ if (temp.length > 0) {
+ obj.children = temp
+ }
+ result.push(obj)
+ }
+ }
+ return result
+}
+export function getTablePeople(code) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: 1,
+ name: '人事档案管理_人员_部门与人员_查询数据_根据部门编号',
+ param: '考核部门编号=' + code + '=int'
+ }
+ })
+}
+export function deleteCustomer(customerId) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: 'dbo.客户关系管理系统_客户_删除数据_MESWORK',
+ param: '客户流水号=' + customerId
+ }
+ })
+}
+export function deleteMarketingManager(MarketingManagerId) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '客户关系管理系统_营销经理_删除数据_MESWORK',
+ param: '营销经理地区流水号=' + MarketingManagerId
+ }
+ })
+}
+export function addMarketingManager(MarketingManagerId, AdressID) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '客户关系管理系统_营销经理_增加数据_MESWORK',
+ param: '营销经理流水号=' + MarketingManagerId + '&省份流水号=' + AdressID
+ }
+ })
+}
+export function editMarketingManager(MarketingManagerId, AdressID) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '客户关系管理系统_营销经理_修改数据_MESWORK',
+ param: '营销经理流水号=' + MarketingManagerId + '&营销经理地区流水号=' + AdressID
+ }
+ })
+}
+export function addCustomer(AdressID, CustomerName, CallNumber, Fax, Adress, People, Email, BankAccount, DutyParagraph, Assessment, Remark) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '客户关系管理系统_客户_增加数据_MESWORK',
+ param: '省份流水号=' + AdressID + '&客户名称=' + CustomerName + '&电话=' + CallNumber + '&传真=' + Fax + '&地址=' + Adress + '&联系人=' + People + '&电子邮箱=' + Email + '&银行账号=' + BankAccount + '&税号=' + DutyParagraph + '&价值评估流水号=' + Assessment + '&备注=' + Remark
+ }
+ })
+}
+export function selectAdressOfID(AdressID) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '客户关系管理系统_通过省份流水号查省份名称_查询数据_MESWORK',
+ param: '省份流水号=' + AdressID
+ }
+ })
+}
+export function editCustomer(AdressID, CustomerName, CallNumber, Fax, Adress, People, Email, BankAccount, DutyParagraph, Assessment, Remark, ID) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '客户关系管理系统_客户_修改数据_MESWORK',
+ param: '省份流水号=' + AdressID + '&客户名称=' + CustomerName + '&电话=' + CallNumber + '&传真=' + Fax + '&地址=' + Adress + '&联系人=' + People + '&电子邮箱=' + Email + '&银行账号=' + BankAccount + '&税号=' + DutyParagraph + '&价值评估流水号=' + Assessment + '&备注=' + Remark + '&客户流水号=' + ID
+ }
+ })
+}
+
diff --git a/src/api/MarketingCenter/ContractCapitalManagement.js b/src/api/MarketingCenter/ContractCapitalManagement.js
new file mode 100644
index 00000000..d2fcf8a7
--- /dev/null
+++ b/src/api/MarketingCenter/ContractCapitalManagement.js
@@ -0,0 +1,344 @@
+import request from '@/utils/request'
+
+export function initProject() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '合同信息管理_项目名称_总_查询'
+ }
+ })
+}
+export function initMarketingManager() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '合同信息管理_营销人员_总_查询'
+ }
+ })
+}
+export function searchTable1(pageCurrent, pageSize, num1, num2) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '合同资金管理_资金信息_查询',
+ param: '合同ID=' + num1 + '=int&人员ID=' + num2 + '=int',
+ Pagination: pageCurrent + '&' + pageSize
+ }
+ })
+}
+export function searchTable2(pageCurrent, pageSize, num1) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '合同资金管理_分批资金_查询',
+ param: '资金ID=' + num1 + '=int',
+ Pagination: pageCurrent + '&' + pageSize
+ }
+ })
+}
+export function editBatchCapitalChar(num1, num2, num3, num4) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '合同资金管理_批次付款表_增加数据',
+ param: '资金ID=' + num1 + '=int&付款阶段ID=' + num2 + '=int&本次付款=' + num3 + '=float&付款时间=' + num4 + '=string'
+ }
+ })
+}
+export function deletechar(num1) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '合同资金管理_批次付款表_删除',
+ param: '批次资金ID=' + num1 + '=int'
+ }
+ })
+}
+export function addList(num1, num2) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '基础表_合同资金表_增加数据',
+ param: '合同ID=' + num1 + '=int&合同总金额=' + num2 + '=float'
+ }
+ })
+}
+export function searchProjectNumber() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '合同信息管理_项目名称_总_查询'
+ }
+ })
+}
+export function searchProjectName(num1) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '合同信息管理_项目名称_通过合同ID查_查询',
+ param: '合同ID=' + num1 + '=int'
+ }
+ })
+}
+export function PaymentPhase() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '合同资金管理_付款阶段_查询'
+ }
+ })
+}
+export function dellist(num1) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '合同资金管理_资金信息_删除',
+ param: '资金ID=' + num1 + '=int'
+ }
+ })
+}
+export function getTree() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: 1,
+ name: '人事档案管理_部门关系_查询节点',
+ param: '子节点=0=int'
+ }
+ })
+}
+export function tree(data, pid) {
+ const result = []
+ let temp
+ for (let i = 0; i < data.length; i++) {
+ if (data[i].父节点 === pid) {
+ const obj = { label: data[i].节点名称, id: data[i].子节点 }
+ temp = tree(data, data[i].子节点)
+ if (temp.length > 0) {
+ obj.children = temp
+ }
+ result.push(obj)
+ }
+ }
+ return result
+}
+export function getTablePeople(code) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: 1,
+ name: '人事档案管理_人员_部门与人员_查询数据_根据部门编号',
+ param: '考核部门编号=' + code + '=int'
+ }
+ })
+}
+export function editChart(code, num1, num2, num3) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: 2,
+ name: '合同资金管理_批次付款表_修改',
+ param: '批次资金ID=' + code + '=int&本次付款金额新=' + num1 + '=string&付款时间=' + num2 + '=string&付款阶段ID=' + num3 + '=int'
+ }
+ })
+}
+export function editTableData(code, num1) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: 2,
+ name: '合同资金管理_合同资金表_修改',
+ param: '资金ID=' + code + '=int&合同总金额=' + num1 + '=string'
+ }
+ })
+}
+export function selectMachine(code) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: 'PDM_机床名称_查询数据_通过项目流水号',
+ param: '项目流水号=' + code
+ }
+ })
+}
+export function selectBatchFundingDetails(code) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '合同资金管理_分批付款明细_查询',
+ param: '批次资金ID=' + code
+ }
+ })
+}
+export function SelectMarketingManager(code) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '客户关系管理系统_按地区查询_营销经理',
+ param: '省份流水号=' + code
+ }
+ })
+}
+export function selectProvince() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '发货管理_省份查询'
+ }
+ })
+}
+export function fukuan(code, num1, num2) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '合同资金管理_批次付款明细表_增加数据',
+ param: '批次资金ID=' + code + '=int&本次收款金额=' + num1 + '=string&本次收款时间=' + num2 + '=string'
+ }
+ })
+}
+export function editFukuan(code, num1, num2) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '合同资金管理_批次付款明细表_修改数据',
+ param: '批次付款明细ID=' + code + '=int&本次收款金额=' + num1 + '=string&本次收款时间=' + num2 + '=string'
+ }
+ })
+}
+export function selectMax(code) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '合同资金管理_批次资金明细修改最大值_查询',
+ param: '批次付款明细ID=' + code + '=int'
+ }
+ })
+}
+export function editTime(code, num2) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '合同资金管理_批次付款表_修改计划时间',
+ param: '批次资金ID=' + code + '=int&计划付款时间=' + num2 + '=string'
+ }
+ })
+}
+export function delMoney(code) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '合同资金管理_批次付款明细表_删除数据新',
+ param: '批次付款明细ID=' + code + '=int'
+ }
+ })
+}
+export function editList(num1, num2, num3) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '基础表_合同资金表_修改数据',
+ param: '合同ID=' + num1 + '=int&合同总金额=' + num2 + '=float&资金ID=' + num3 + '=int'
+ }
+ })
+}
+export function selectBatch(num1) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '合同资金管理_分批资金_批次查询',
+ param: '资金ID=' + num1 + '=int'
+ }
+ })
+}
+export function TransPlanning(num1, num2, num3) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '合同资金管理_批次付款表_转移计划',
+ param: '批次资金ID原=' + num1 + '=int&批次资金ID转=' + num2 + '=int&转移金额=' + num3 + '=string'
+ }
+ })
+}
+export function editDay(num1, num2) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '合同资金管理_分批资金表_修改提醒天数',
+ param: '批次资金ID=' + num1 + '=int&提前X天提醒=' + num2 + '=int'
+ }
+ })
+}
+export function AccountsReceivable() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '合同资金管理_催收账款_查询'
+ }
+ })
+}
+export function SelectContractFunds(num1, pageCurrent, pageSize) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '合同资金管理_资金信息_查询_通过资金ID',
+ param: '资金ID=' + num1 + '=int',
+ Pagination: pageCurrent + '&' + pageSize
+ }
+ })
+}
diff --git a/src/api/MarketingCenter/ContractInformationManagement.js b/src/api/MarketingCenter/ContractInformationManagement.js
new file mode 100644
index 00000000..4bc92b69
--- /dev/null
+++ b/src/api/MarketingCenter/ContractInformationManagement.js
@@ -0,0 +1,245 @@
+import request from '@/utils/request'
+
+export function initProject() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '合同信息管理_项目名称_总_查询'
+ }
+ })
+}
+export function initMarketingManager() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '合同信息管理_营销人员_总_查询'
+ }
+ })
+}
+export function searchTable1(pageCurrent, pageSize, num1, num2) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '合同信息管理_合同信息_查询',
+ param: '合同ID=' + num1 + '=int&人员ID=' + num2 + '=int',
+ Pagination: pageCurrent + '&' + pageSize
+ }
+ })
+}
+export function fetchExecutionProgress(num) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '合同信息管理_执行进度_通过合同ID查_查询',
+ param: '合同ID=' + num + '=int'
+ }
+ })
+}
+export function delList(num) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '合同信息管理_合同信息_删除',
+ param: '合同ID=' + num + '=int'
+ }
+ })
+}
+export function addList() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '基础表_合同信息表_增加数据',
+ param: '项目名称=' + arguments[0] + '&图纸会签节点=' + arguments[1] + '&设备预验收节点=' + arguments[2] + '&发货节点=' + arguments[3] + '&安装调试节点=' + arguments[4] + '&人员ID=' + arguments[5] + '&执行进度ID=' + arguments[6] + '&客户流水号=' + arguments[7] + '&备注=' + arguments[8] + '&付款方式代码=' + arguments[9]
+ }
+ })
+}
+export function fetchPersonnelID() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '合同信息管理_营销人员_查询'
+ }
+ })
+}
+export function executionProgressID() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '合同信息管理_执行进度_查询'
+ }
+ })
+}
+export function editchar() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '合同信息管理_合同信息_编辑',
+ param: '项目名称=' + arguments[0] + '&图纸会签节点=' + arguments[1] + '&设备预验收节点=' + arguments[2] + '&发货节点=' + arguments[3] + '&安装调试节点=' + arguments[4] + '&人员ID=' + arguments[5] + '&执行进度ID=' + arguments[6] + '&客户流水号=' + arguments[7] + '&合同信息备注=' + arguments[8] + '&项目流水号=' + arguments[9] + '&付款方式代码=' + arguments[10]
+ }
+ })
+}
+export function getTree() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: 1,
+ name: '人事档案管理_部门关系_查询节点',
+ param: '子节点=0=int'
+ }
+ })
+}
+export function tree(data, pid) {
+ const result = []
+ let temp
+ for (let i = 0; i < data.length; i++) {
+ if (data[i].父节点 === pid) {
+ const obj = { label: data[i].节点名称, id: data[i].子节点 }
+ temp = tree(data, data[i].子节点)
+ if (temp.length > 0) {
+ obj.children = temp
+ }
+ result.push(obj)
+ }
+ }
+ return result
+}
+export function getTablePeople(code) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: 1,
+ name: '人事档案管理_人员_部门与人员_查询数据_根据部门编号',
+ param: '考核部门编号=' + code + '=int'
+ }
+ })
+}
+export function fetchCustomerData(PageCurrent, PageSize, name) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: 1,
+ name: '创建合同_客户信息查询',
+ param: '客户名称=' + name + '=string',
+ Pagination: PageCurrent + '&' + PageSize
+ }
+ })
+}
+
+export function getFileData(projectNum) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '合同管理_文件路径_查询数据',
+ param: `项目流水号=${projectNum}`
+ }
+ })
+}
+export function deleteFileData(id) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '合同管理_文件路径_删除数据',
+ param: `文件标识=${id}`
+ }
+ })
+}
+export function selectMachine(code) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: 'PDM_机床名称_查询数据_通过项目流水号',
+ param: '项目流水号=' + code
+ }
+ })
+}
+export function selectProvince() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '发货管理_省份查询'
+ }
+ })
+}
+export function SelectMarketingManager(code) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '客户关系管理系统_按地区查询_营销经理',
+ param: '省份流水号=' + code
+ }
+ })
+}
+export function submitMachine() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '创建合同_机床名称_增加数据',
+ param: '项目流水号=' + arguments[0] + '&机床图号=' + arguments[1] + '&机床名称=' + arguments[2]
+ }
+ })
+}
+export function editMachine() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '创建合同_机床名称_修改数据',
+ param: '机床流水号=' + arguments[0] + '&机床图号=' + arguments[1] + '&机床名称=' + arguments[2]
+ }
+ })
+}
+export function delMachine() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: 'PDM_机床名称_删除数据',
+ param: '机床流水号=' + arguments[0]
+ }
+ })
+}
+export function money() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '合同信息管理_付款方式_查询'
+ }
+ })
+}
diff --git a/src/api/MarketingCenter/SafetyMargin.js b/src/api/MarketingCenter/SafetyMargin.js
new file mode 100644
index 00000000..71a5cc7e
--- /dev/null
+++ b/src/api/MarketingCenter/SafetyMargin.js
@@ -0,0 +1,114 @@
+import request from '@/utils/request'
+
+export function initProject() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '合同信息管理_项目名称_总_查询'
+ }
+ })
+}
+export function searchTable1(pageCurrent, pageSize, num1, num2) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '安全保证金管理_安全保证金信息查询',
+ param: '项目流水号=' + num1 + '=int&查询类型=' + num2 + '=int',
+ Pagination: pageCurrent + '&' + pageSize
+ }
+ })
+}
+export function searchTable2(pageCurrent, pageSize, num1) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '安全保证金管理_扣款记录查询',
+ param: '安全保证金流水号=' + num1,
+ Pagination: pageCurrent + '&' + pageSize
+ }
+ })
+}
+export function addSafetyMargin() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '安全保证金管理_安全保证金信息_增加',
+ param: '项目流水号=' + arguments[0] + '&保证金金额=' + arguments[1] + '&交付日期=' + arguments[2] + '&提前X天提醒=' + arguments[3] + '&预计收回日期=' + arguments[4] + '&备注=' + arguments[5]
+ }
+ })
+}
+export function editSafetyMargin() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '安全保证金管理_安全保证金信息_修改',
+ param: '项目流水号=' + arguments[0] + '&保证金金额=' + arguments[1] + '&交付日期=' + arguments[2] + '&提前X天提醒=' + arguments[3] + '&预计收回日期=' + arguments[4] + '&备注=' + arguments[5] + '&安全保证金流水号=' + arguments[6]
+ }
+ })
+}
+export function Withdrawing() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '安全保证金管理_扣款记录表_增加',
+ param: '安全保证金流水号=' + arguments[0] + '&扣款金额=' + arguments[1] + '&被扣款人=' + arguments[2] + '&扣款原因=' + arguments[3] + '&扣款日期=' + arguments[4]
+ }
+ })
+}
+export function delSafetyMargin() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '安全保证金管理_安全保证金信息_删除',
+ param: '安全保证金流水号=' + arguments[0]
+ }
+ })
+}
+
+export function delWithdrawing() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '安全保证金管理_扣款记录表_删除',
+ param: '扣款流水号=' + arguments[0]
+ }
+ })
+}
+export function edtWithdrawing() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '安全保证金管理_扣款记录表_修改',
+ param: '扣款流水号=' + arguments[0] + '&扣款金额新=' + arguments[1] + '&被扣款人=' + arguments[2] + '&扣款原因=' + arguments[3] + '&扣款日期=' + arguments[4]
+ }
+ })
+}
+export function TakeBack() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '安全保证金管理_安全保证金_收回',
+ param: '安全保证金流水号=' + arguments[0] + '&实际收回日期=' + arguments[1]
+ }
+ })
+}
diff --git a/src/api/Outsourcing/InterBudgetaryBudgets.js b/src/api/Outsourcing/InterBudgetaryBudgets.js
new file mode 100644
index 00000000..69e43574
--- /dev/null
+++ b/src/api/Outsourcing/InterBudgetaryBudgets.js
@@ -0,0 +1,76 @@
+import request from '@/utils/request'
+
+// 查询(未编制)
+export function searchPartNum1(num1, start, end, pageCurrent, pageSize) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_零件工艺计划_查询序间外协零件_价格预算',
+ param: '定额人员编号=0&零件图号=' + num1 + '&开始时间=' + start + '&结束时间=' + end + '&预算状态=0',
+ Pagination: pageCurrent + '&' + pageSize
+ }
+ })
+}
+// 查询零件号(已编制)
+export function searchPartNum2(num, start, end, pageCurrent, pageSize) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_零件工艺计划_查询序间外协零件_价格预算',
+ param: '定额人员编号=0&零件图号=' + num + '&开始时间=' + start + '&结束时间=' + end + '&预算状态=1',
+ Pagination: pageCurrent + '&' + pageSize
+ }
+ })
+}
+// 查询零件工艺
+export function searchTable(num, outHelp) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_零件工序_查询数据_根据工艺计划流水号_新',
+ param: '工艺计划流水号=' + num + '&单件是否外协=' + outHelp
+ }
+ })
+}
+// 保存重量面积
+export function saveWeightArea(num, weight, area) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理工艺_零件工艺计划_修改数据_重量面积',
+ param: '工艺计划流水号=' + num + '&重量=' + weight + '&面积=' + area
+ }
+ })
+}
+// 保存材料费
+export function saveMaterialPrice(num, price) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理工艺_零件工艺计划_修改数据_材料费',
+ param: '工艺计划流水号=' + num + '&材料费=' + price
+ }
+ })
+}
+// 保存每行价格
+export function saveRowPrice(num1, price1, num2, price2) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理工艺_零件工序_修改数据_序间外协预算价格_系数',
+ param: '工序流水号=' + num1 + '&外协预算价格=' + price1 + '&工艺计划流水号=' + num2 + '&材料费=' + price2
+ }
+ })
+}
diff --git a/src/api/Outsourcing/OutFactoryMaintenance.js b/src/api/Outsourcing/OutFactoryMaintenance.js
new file mode 100644
index 00000000..57e6a68d
--- /dev/null
+++ b/src/api/Outsourcing/OutFactoryMaintenance.js
@@ -0,0 +1,51 @@
+import request from '@/utils/request'
+
+// 查询按钮功能实现
+export function searchtable(pageCurrent, pageSize, num1, ManufacturerNumber, num2, ManufacturerName, num10, ManufacturerAbbreviation, num3, address, num4, roleName, num5, phNumber, num6, Fax, num7, Remarks, num8, category, num11, attention, num9, EquipmentCondition) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_基础表_外协厂家_查询数据_ 根据条件',
+ param: '序号_check=' + num1 + '=int&序号=' + ManufacturerNumber + '&外协厂家名称_check=' + num2 + '=int&外协厂家名称=' + ManufacturerName + '&外协厂家简称_check=' + num10 + '=int&外协厂家简称=' + ManufacturerAbbreviation + '&地址_check=' + num3 + '=int&地址=' + address + '&联系人_check=' + num4 + '=int&联系人=' + roleName + '&电话_check=' + num5 + '=int&电话=' + phNumber + '&传真_check=' + num6 + '=int&传真=' + Fax + '&备注_check=' + num7 + '=int&备注=' + Remarks + '&类别_check=' + num8 + '=int&类别=' + category + '&关注_check=' + num11 + '=int&关注=' + attention + '&设备情况_check=' + num9 + '=int&设备情况=' + EquipmentCondition,
+ Pagination: pageCurrent + '&' + pageSize
+ }
+ })
+}
+// 增加按钮功能
+export function edittype(ManufacturerNumber, ManufacturerName, ManufacturerAbbreviation, address, roleName, phNumber, Fax, Remarks, category, attention, EquipmentCondition) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理工艺_基础表_外协厂家_增加数据',
+ param: '序号=' + ManufacturerNumber + '&外协厂家名称=' + ManufacturerName + '&外协厂家简称=' + ManufacturerAbbreviation + '&地址=' + address + '&联系人=' + roleName + '&电话=' + phNumber + '&传真=' + Fax + '&备注=' + Remarks + '&类别=' + category + '&关注=' + attention + '&设备情况=' + EquipmentCondition
+ }
+ })
+}
+// 编辑按钮功能
+export function handlechange(CoManufacturerFlowNumber, ManufacturerNumber, ManufacturerName, ManufacturerAbbreviation, address, roleName, phNumber, Fax, Remarks, category, attention, EquipmentCondition) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理工艺_基础表_外协厂家_修改数据',
+ param: '外协厂家流水号=' + CoManufacturerFlowNumber + '&序号=' + ManufacturerNumber + '&外协厂家名称=' + ManufacturerName + '&外协厂家简称=' + ManufacturerAbbreviation + '&地址=' + address + '&联系人=' + roleName + '&电话=' + phNumber + '&传真=' + Fax + '&备注=' + Remarks + '&类别=' + category + '&关注=' + attention + '&设备情况=' + EquipmentCondition
+ }
+ })
+}
+// 删除按钮功能
+export function handledelete(CoManufacturerFlowNumber) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理工艺_基础表_外协厂家_删除数据',
+ param: '外协厂家流水号=' + CoManufacturerFlowNumber + '=int'
+ }
+ })
+}
diff --git a/src/api/Outsourcing/OutsourcingDataMaintenance.js b/src/api/Outsourcing/OutsourcingDataMaintenance.js
new file mode 100644
index 00000000..b08f61eb
--- /dev/null
+++ b/src/api/Outsourcing/OutsourcingDataMaintenance.js
@@ -0,0 +1,62 @@
+import request from '@/utils/request'
+
+// 初始化获取分类
+export function getType() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_基础表_工艺分类名称_查询数据'
+ }
+ })
+}
+// 根据条件查询工艺信息
+export function getTable(check, Code, check1, Code1, pageList, pageSize) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_基础表_工艺名称_查询数据_按工艺名称和分类查',
+ param: '工艺名称_check=' + check + '&工艺名称=' + Code + '&工艺分类流水号_check=' + check1 + '&工艺分类流水号=' + Code1,
+ Pagination: pageList + '&' + pageSize
+ }
+ })
+}
+// 删除工艺信息
+export function delList(MaterialCode) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理工艺_基础表_工艺名称_删除数据',
+ param: '工艺编号=' + MaterialCode
+ }
+ })
+}
+// 新增工艺信息
+export function Add(Name, ShortName) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理工艺_基础表_工艺名称_增加数据',
+ param: '工艺名称=' + Name + '&工艺名称简称=' + ShortName
+ }
+ })
+}
+// 修改工艺信息
+export function editList(Code, Price, weightPrice, areaPrice, FlowNumber) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理工艺_基础表_工艺名称_外协价格_修改数据',
+ param: '工艺编号=' + Code + '&外协价格1=' + Price + '&重量价格1=' + weightPrice + '&面积价格1=' + areaPrice + '&外协价格计算标准流水号=' + FlowNumber
+ }
+ })
+}
diff --git a/src/api/Outsourcing/OutsourcingInspectionEntry.js b/src/api/Outsourcing/OutsourcingInspectionEntry.js
new file mode 100644
index 00000000..e5589f53
--- /dev/null
+++ b/src/api/Outsourcing/OutsourcingInspectionEntry.js
@@ -0,0 +1,38 @@
+import request from '@/utils/request'
+
+// 初始化 外协厂商
+export function initOutHelp() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_基础表_外协厂家_查询数据'
+ }
+ })
+}
+// 查询主表
+export function searchTable(PageCurrent, PageSize, check1, num1, check2, num2, check3, num3) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理_外协加工任务单明细_查询数据_条件查询_新1',
+ param: '外协厂家_check=' + check1 + '&外协厂家流水号=' + num1 + '&表单号_check=' + check2 + '&表单号=' + num2 + '&零件图号_check=' + check3 + '&零件图号=' + num3,
+ Pagination: PageCurrent + '&' + PageSize
+ }
+ })
+}
+// 保存
+export function saveRow(num1, inspectDate1, inspectNum1, checkDate1, qualifyNum1, inspectDate2, inspectNum2, checkDate2, qualifyNum2, inspectDate3, inspectNum3, checkDate3, qualifyNum3, num2) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理_外协加工任务单明细_修改数据_交检',
+ param: '外协加工任务单明细流水号=' + num1 + '&交检日期1=' + inspectDate1 + '&交检数量1=' + inspectNum1 + '&检查日期1=' + checkDate1 + '&合格数量1=' + qualifyNum1 + '&交检日期2=' + inspectDate2 + '&交检数量2=' + inspectNum2 + '&检查日期2=' + checkDate2 + '&合格数量2=' + qualifyNum2 + '&交检日期3=' + inspectDate3 + '&交检数量3=' + inspectNum3 + '&检查日期3=' + checkDate3 + '&合格数量3=' + qualifyNum3 + '&废品数量=' + num2
+ }
+ })
+}
diff --git a/src/api/Outsourcing/OutsourcingPaymentPlanManagement.js b/src/api/Outsourcing/OutsourcingPaymentPlanManagement.js
new file mode 100644
index 00000000..d400c370
--- /dev/null
+++ b/src/api/Outsourcing/OutsourcingPaymentPlanManagement.js
@@ -0,0 +1,75 @@
+import request from '@/utils/request'
+
+// 初始化 外协厂商
+export function initOutHelp() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_基础表_外协厂家_查询数据'
+ }
+ })
+}
+// 查询表格数据
+export function searchtable(num2, ManufacturerName, num10, ManufacturerAbbreviation, num3, address, num4, roleName, phNumber, Fax, pageCurrent, pageSize) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理_外协加工任务单_查询数据_付款计划',
+ param: '外协加工任务单_check=0&外协加工任务单流水号=0&表单号_check=' + num2 + '&表单号=' + ManufacturerName + '&外协厂家_check=' + num10 + '&外协厂家=' + ManufacturerAbbreviation + '&任务下达日期时间_check=' + num3 + '&开始时间=' + address + '&结束时间=' + num4 + '&实际付款时间段_check=' + roleName + '&实际付款开始时间=' + phNumber + '&实际付款结束时间=' + Fax + '&外协计划员编号_check=0&外协计划员编号=0',
+ Pagination: pageCurrent + '&' + pageSize
+ }
+ })
+}
+// 修改实际付款日期
+export function payTime(num, time) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理_外协加工任务单_修改数据_实际付款时间',
+ param: '外协加工任务单流水号=' + num + '&实际付款时间=' + time
+ }
+ })
+}
+// 修改扣款数据、扣款说明
+export function WithdrawingEdit(num, quality, plan, Other, Explain) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理_外协加工任务单_修改数据',
+ param: '外协加工任务单流水号=' + num + '&扣款_质量=' + quality + '&扣款_计划=' + plan + '&扣款_其他=' + Other + '&扣款说明=' + Explain
+ }
+ })
+}
+// 单据状态: 1 未成交 2 成交 3 作废
+export function payment(num) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理_外协加工任务单_修改数据_作废',
+ param: '外协加工任务单流水号=' + num + '&单据状态=3'
+ }
+ })
+}
+// 查询零件信息
+export function getParts(Number, pageCurrent, pageSize) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理_外协加工任务单明细_查询数据',
+ param: '外协加工任务单流水号=' + Number + '=int',
+ Pagination: pageCurrent + '&' + pageSize
+ }
+ })
+}
diff --git a/src/api/Outsourcing/OutsourcingPriceBudget.js b/src/api/Outsourcing/OutsourcingPriceBudget.js
new file mode 100644
index 00000000..4baf9614
--- /dev/null
+++ b/src/api/Outsourcing/OutsourcingPriceBudget.js
@@ -0,0 +1,77 @@
+import request from '@/utils/request'
+
+// 查询(未编制)
+export function searchPartNum1(num1, start, end, pageCurrent, pageSize) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '外协价格预算查询零件_MESWORK',
+ param: '零件图号=' + num1 + '&开始时间=' + start + '&结束时间=' + end,
+ Pagination: pageCurrent + '&' + pageSize
+ }
+ })
+}
+// 查询零件号(已编制)
+export function searchPartNum2(num, start, end, pageCurrent, pageSize) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '外协价格预算查询零件已编制_MESWORK',
+ param: '零件图号=' + num + '&开始时间=' + start + '&结束时间=' + end,
+ Pagination: pageCurrent + '&' + pageSize
+ }
+ })
+}
+
+// 查询零件工艺
+export function searchTable(num, outHelp) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_零件工序_查询数据_根据工艺计划流水号_新',
+ param: '工艺计划流水号=' + num + '&单件是否外协=' + outHelp
+ }
+ })
+}
+// 保存重量面积
+export function saveWeightArea(num, weight, area) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理工艺_零件工艺计划_修改数据_重量面积',
+ param: '工艺计划流水号=' + num + '&重量=' + weight + '&面积=' + area
+ }
+ })
+}
+// 保存材料费
+export function saveMaterialPrice(num, price) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理工艺_零件工艺计划_修改数据_材料费',
+ param: '工艺计划流水号=' + num + '&材料费=' + price
+ }
+ })
+}
+// 保存每行价格
+export function saveRowPrice(num1, price1, num2, price2) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理工艺_零件工序_修改数据_外协预算价格_系数',
+ param: '工序流水号=' + num1 + '&外协预算价格=' + price1 + '&工艺计划流水号=' + num2 + '&材料费=' + price2
+ }
+ })
+}
diff --git a/src/api/Outsourcing/OutsourcingStatus.js b/src/api/Outsourcing/OutsourcingStatus.js
new file mode 100644
index 00000000..3ca5a933
--- /dev/null
+++ b/src/api/Outsourcing/OutsourcingStatus.js
@@ -0,0 +1,15 @@
+import request from '@/utils/request'
+
+// 查询外协零件状态
+export function searchOutHelpState(PageCurrent, PageSize, check, num) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理_外协零件状态_查询数据',
+ param: '零件图号_check=' + check + '&零件图号=' + num + '&外协零件状态_check=0&外协零件状态=0',
+ Pagination: PageCurrent + '&' + PageSize
+ }
+ })
+}
diff --git a/src/api/Outsourcing/OutsourcingTaskChanges.js b/src/api/Outsourcing/OutsourcingTaskChanges.js
new file mode 100644
index 00000000..322d6cb5
--- /dev/null
+++ b/src/api/Outsourcing/OutsourcingTaskChanges.js
@@ -0,0 +1,178 @@
+import request from '@/utils/request'
+
+export function getTable(checked, contractNumber, checked1, manufacturers, checked2, time1, time2) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理_外协加工任务单_查询数据',
+ param: '外协加工任务单_check=0=int&表单号_check=' + checked + '=int&表单号=' + contractNumber + '=string&外协厂家_check=' + checked1 + '=int&外协厂家=' + manufacturers + '=int&任务下达日期_时间段=' + checked2 + '=int&开始时间=' + time1 + '&结束时间=' + time2 + '&单据状态_check=1=int&单据状态=2=int&外协员编号_check=1=int&外协员编号=1180=int'
+ }
+ })
+}
+export function getData1() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_基础表_外协厂家_查询数据'
+ }
+ })
+}
+export function getTable1(check, partNumber) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_零件工艺计划_查询数据_外协_新',
+ param: '零件图号_check=' + check + '=int&零件图号=' + partNumber + '=string'
+ }
+ })
+}
+export function getprocedure(processPlan, single) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_零件工序_查询数据_根据工艺计划流水号_工艺名称简称_新',
+ param: '工艺计划流水号=' + processPlan + '=int&单件是否外协=' + single + '=int'
+ }
+ })
+}
+export function searchManufactor(name) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_基础表_外协厂家_查询数据_ 根据条件',
+ param: '序号_check=0=bit&序号=' + ' ' + '=string&外协厂家名称_check=1=bit&外协厂家名称=' + name + '=string&外协厂家简称_check=0=bit&外协厂家简称=' + ' ' + '=string&地址_check=0=bit&地址=' + ' ' + '=string&联系人_check=0=bit&联系人=' + ' ' + '=string&电话_check=0=bit&电话=' + ' ' + '=string&传真_check=0=bit&传真=' + ' ' + '=string&备注_check=0=bit&备注=' + ' ' + '=string&类别_check=0=bit&类别=' + ' ' + '=string&关注_check=0=bit&关注=' + ' ' + '=string&设备情况_check=0=bit&设备情况=' + ' ' + '=string'
+ }
+ })
+}
+export function spareParts(processNum, single) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_零件工序_查询数据_根据工艺计划流水号_全部_新',
+ param: '工艺计划流水号=' + processNum + '=int&工序数量=21=int&单件是否外协=' + single + '=int'
+ }
+ })
+}
+export function spareParts1(processNum, single) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_零件工序_查询数据_根据工艺计划流水号_全部_新',
+ param: '工艺计划流水号=' + processNum + '=int&工序数量=31=int&单件是否外协=' + single + '=int'
+ }
+ })
+}
+export function addTable(contractNumber, manufacturers, time, freight) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理_外协加工任务单_增加数据',
+ param: '表单号=' + contractNumber + '=string&外协计划员编号=1180=int&外协厂家=' + manufacturers + '=int&任务下达日期=' + time + '=string&运费=' + freight + '=int'
+ }
+ })
+}
+
+export function deleteData(Number) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理_外协加工任务单_删除数据',
+ param: '外协加工任务单流水号=' + Number + '=int'
+ }
+ })
+}
+export function deleteData1(Number) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理_外协加工任务单明细_删除数据',
+ param: '外协加工任务单明细流水号=' + Number + '=int'
+ }
+ })
+}
+export function insertParts(processNum, Number) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理_外协加工任务单明细_增加数据',
+ param: '外协加工任务单流水号=' + Number + '=int&工艺计划流水号=' + processNum + '=int'
+ }
+ })
+}
+export function getParts(Number) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理_外协加工任务单明细_查询数据',
+ param: '外协加工任务单流水号=' + Number + '=int'
+ }
+ })
+}
+export function getNumber(time) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理_外协加工任务单_查询数据_单据编号',
+ param: '任务下达日期=' + time + '=string&表单号=1=string=output'
+ }
+ })
+}
+export function getPrice(Number, money, money1, money2, money3) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理_外协加工任务单明细_修改数据',
+ param: '外协加工任务单明细流水号=' + Number + '=int&加工价格_预算=' + money + '&加工价格_成交=' + money1 + '&材料价格_价格=' + money2 + '&其他价格=' + money3 + '&入库标志=1=int&交检数量=0=int&合格数量=0=int&回用数量=0=int&废品数量=0=int'
+ }
+ })
+}
+export function editData(Number, manufacturers, freight, documentStatus, sign, Explain) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理_外协加工任务单_修改数据',
+ param: '外协加工任务单流水号=' + Number + '=int&外协厂家=' + manufacturers + '=int&运费=' + freight + '=int&单据状态=' + documentStatus + '=int&入库标志=' + sign + '=int&扣款说明=' + Explain
+ }
+ })
+}
+export function editData1(Number, manufacturers, freight, documentStatus, sign, Explain) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理_外协加工任务单_修改数据',
+ param: '外协加工任务单流水号=' + Number + '=int&外协厂家=' + manufacturers + '=int&运费=' + freight + '=int&单据状态=' + documentStatus + '=int&入库标志=' + sign + '=int&扣款说明=' + Explain + '&扣款_质量=0=int&扣款_计划=0=int&扣款_其他=0=int'
+ }
+ })
+}
diff --git a/src/api/Outsourcing/OutsourcingTaskExecution.js b/src/api/Outsourcing/OutsourcingTaskExecution.js
new file mode 100644
index 00000000..e0f7fc7c
--- /dev/null
+++ b/src/api/Outsourcing/OutsourcingTaskExecution.js
@@ -0,0 +1,194 @@
+import request from '@/utils/request'
+
+// 初始化获取已生成的外协加工任务单初始化获取已生成的外协加工任务单
+export function getTable(checked, contractNumber, checked1, manufacturers, checked2, time1, time2, num, pageCurrent, pageSize) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理_外协加工任务单_查询数据',
+ param: '外协加工任务单_check=0&外协加工任务单流水号=null&表单号_check=' + checked + '&表单号=' + contractNumber + '&外协厂家_check=' + checked1 + '&外协厂家=' + manufacturers + '&任务下达日期_时间段=' + checked2 + '&开始时间=' + time1 + '&结束时间=' + time2 + '&单据状态_check=0&单据状态=1&外协员编号_check=0&外协员编号=' + num,
+ Pagination: pageCurrent + '&' + pageSize
+ }
+ })
+}
+// 初始化获取外协厂家数据
+export function getData1() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_基础表_外协厂家_查询数据'
+ }
+ })
+}
+// 初始化获取已预算价格,未选入到外协加工任务单的零件
+export function getTable1(check, partNumber) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_零件工艺计划_查询数据_外协_新',
+ param: '零件图号_check=' + check + '=int&零件图号=' + partNumber + '=string'
+ }
+ })
+}
+// 获取零件工序信息(零件号表中)
+export function getprocedure(processPlan, single) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_零件工序_查询数据_根据工艺计划流水号_工艺名称简称_新',
+ param: '工艺计划流水号=' + processPlan + '=int&单件是否外协=' + single + '=int'
+ }
+ })
+}
+// 外协厂家查询
+export function searchManufactor(name) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_基础表_外协厂家_查询数据_ 根据条件',
+ param: '序号_check=0=bit&序号=' + ' ' + '=string&外协厂家名称_check=1=bit&外协厂家名称=' + name + '=string&外协厂家简称_check=0=bit&外协厂家简称=' + ' ' + '=string&地址_check=0=bit&地址=' + ' ' + '=string&联系人_check=0=bit&联系人=' + ' ' + '=string&电话_check=0=bit&电话=' + ' ' + '=string&传真_check=0=bit&传真=' + ' ' + '=string&备注_check=0=bit&备注=' + ' ' + '=string&类别_check=0=bit&类别=' + ' ' + '=string&关注_check=0=bit&关注=' + ' ' + '=string&设备情况_check=0=bit&设备情况=' + ' ' + '=string'
+ }
+ })
+}
+// 确定价格
+export function spareParts(processNum, single) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_零件工序_查询数据_根据工艺计划流水号_全部_新',
+ param: '工艺计划流水号=' + processNum + '=int&工序数量=21=int&单件是否外协=' + single + '=int'
+ }
+ })
+}
+// 暂未启用
+export function spareParts1(processNum, single) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_零件工序_查询数据_根据工艺计划流水号_全部_新',
+ param: '工艺计划流水号=' + processNum + '=int&工序数量=31=int&单件是否外协=' + single + '=int'
+ }
+ })
+}
+// 新建外协加工任务单
+export function addTable(contractNumber, personNum, manufacturers, time, freight) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理_外协加工任务单_增加数据',
+ param: '表单号=' + contractNumber + '=string&外协计划员编号=' + personNum + '&外协厂家=' + manufacturers + '=int&任务下达日期=' + time + '=string&运费=' + freight + '=int'
+ }
+ })
+}
+// 外协加工任务单修改
+export function editData(Number, manufacturers, freight, documentStatus, sign, Explain) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理_外协加工任务单_修改数据',
+ param: '外协加工任务单流水号=' + Number + '=int&外协厂家=' + manufacturers + '=int&运费=' + freight + '=int&单据状态=' + documentStatus + '=int&入库标志=' + sign + '=int&扣款说明=' + Explain
+ }
+ })
+}
+// 成交
+export function editData1(Number, manufacturers, freight, documentStatus, sign, Explain) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理_外协加工任务单_修改数据',
+ param: '外协加工任务单流水号=' + Number + '=int&外协厂家=' + manufacturers + '=int&运费=' + freight + '=int&单据状态=' + documentStatus + '=int&入库标志=' + sign + '=int&扣款说明=' + Explain + '&扣款_质量=0&扣款_计划=0&扣款_其他=0'
+ }
+ })
+}
+// 删除外协加工任务单
+export function deleteData(Number) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理_外协加工任务单_删除数据',
+ param: '外协加工任务单流水号=' + Number + '=int'
+ }
+ })
+}
+// 移除零件
+export function deleteData1(Number) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理_外协加工任务单明细_删除数据',
+ param: '外协加工任务单明细流水号=' + Number + '=int'
+ }
+ })
+}
+// 选入零件
+export function insertParts(processNum, Number) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理_外协加工任务单明细_增加数据',
+ param: '外协加工任务单流水号=' + Number + '=int&工艺计划流水号=' + processNum + '=int'
+ }
+ })
+}
+// 查询任务单明细
+export function getParts(Number) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理_外协加工任务单明细_查询数据',
+ param: '外协加工任务单流水号=' + Number + '=int'
+ }
+ })
+}
+// 数据库生产表单号
+export function getNumber(time) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理_外协加工任务单_查询数据_单据编号',
+ param: '任务下达日期=' + time + '=string&表单号=1=string=output'
+ }
+ })
+}
+// 计算价格
+export function getPrice(Number, money, money1, money2, money3) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理_外协加工任务单明细_修改数据',
+ param: '外协加工任务单明细流水号=' + Number + '=int&加工价格_预算=' + money + '&加工价格_成交=' + money1 + '&材料价格_价格=' + money2 + '&其他价格=' + money3 + '&入库标志=1=int&交检数量=0=int&合格数量=0=int&回用数量=0=int&废品数量=0=int'
+ }
+ })
+}
diff --git a/src/api/Outsourcing/OutsourcingTimeBalance.js b/src/api/Outsourcing/OutsourcingTimeBalance.js
new file mode 100644
index 00000000..6657ebf1
--- /dev/null
+++ b/src/api/Outsourcing/OutsourcingTimeBalance.js
@@ -0,0 +1,237 @@
+import request from '@/utils/request'
+
+// 初始化项目名称
+export function initProject() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_传递后_项目名称_查询数据',
+ param: '考核状态=5'
+ }
+ })
+}
+// 查询机床号
+export function searchMachine(num) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_传递后_机床名称_查询数据',
+ param: '项目流水号=' + num + '&是否传递=2&考核状态=5&工艺任务分配状态=2&定额任务分配状态=2&单件是否外协=2'
+ }
+ })
+}
+// 查询组号
+export function searchGroup(num) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_传递后_组件名称_查询数据',
+ param: '机床流水号=' + num + '&是否传递=2&考核状态=5&工艺任务分配状态=2&定额任务分配状态=2&单件是否外协=2'
+ }
+ })
+}
+// 查询表1
+export function searchTable1(PageCurrent, PageSize, check1, num1, check2, num2, check3, num3, check4, num4) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_零件工序_查询数据_已编制工序的全部零件及工序_New',
+ param: '项目流水号_check=' + check1 + '&项目流水号=' + num1 + '&机床流水号_check=' + check2 + '&机床流水号=' + num2 + '&组件流水号_check=' + check3 + '&组件流水号=' + num3 + '&零件图号_check=' + check4 + '&零件图号=' + num4 + '&是否查询全部数据=1&单件是否外协=2&考核状态=5',
+ Pagination: PageCurrent + '&' + PageSize
+ }
+ })
+}
+// 判断上班状态
+export function judgeWork(date) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_基础表_工作日历_获得状态',
+ param: '工作日期=' + date
+ }
+ })
+}
+// 修改机加工开始结束时间
+export function makePartPlan(num, start, end) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理工艺_零件工艺计划_机加工时间_修改数据',
+ param: '工艺计划流水号=' + num + '&机加工开始时间=' + start + '&机加工结束时间=' + end
+ }
+ })
+}
+// 制定零件计划 计算工序时间(猜测:机加工开始时间和计划开始时间应该是同一个)
+export function computeProcedureTime(num, start, end) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理工艺_零件工序_修改数据_计算工序计划时间',
+ param: '工艺计划流水号=' + num + '&计划开始时间=' + start + '&计划结束时间=' + end
+ }
+ })
+}
+// 板焊结束
+export function boardWeldEnd(num, time) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理工艺_零件工艺计划_修改数据_修改板焊工段计划完成时间',
+ param: '工艺计划流水号=' + num + '&板焊工段计划完成时间=' + time
+ }
+ })
+}
+// 取消外协
+export function cancelOut(num, num1) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理工艺_零件工艺计划_划为外协',
+ param: '工艺计划流水号=' + num + '&单件是否外协=1&单件是否外协分类=' + num1
+ }
+ })
+}
+// 查询工序能力
+export function searchProcessAbility(start, end, PageCurrent, PageSize) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_计划平衡表_各个工序总加工能力_查询数据_新',
+ param: '查询开始日期=' + start + '&查询结束日期=' + end + '&单件是否外协=2',
+ Pagination: PageCurrent + '&' + PageSize
+ }
+ })
+}
+// 查询工序工时
+export function searchProcedureTime(time, num1, PageCurrent, PageSize) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_零件工序_查询数据_工序工时',
+ param: '计划日期_check=1&计划日期=' + time + '&工艺编号_check=1&工艺编号=' + num1 + '&组件流水号_check=0&组件流水号=0&单件是否外协=2',
+ Pagination: PageCurrent + '&' + PageSize
+ // check1, time, check2, num1, check3, num2
+ // param: '计划日期_check=' + check1 + '&计划日期=' + time + '&工艺编号_check=' + check2 + '&工艺编号=' + num1 + '&组件流水号_check=' + check3 + '&组件流水号=' + num2 + '&单件是否外协=2'
+ }
+ })
+}
+// 调整单件进度(↑)
+export function adjustSingleProgress(num, start, end) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理工艺_零件工艺计划_机加工时间_修改数据',
+ param: '工艺计划流水号=' + num + '&机加工开始时间=' + start + '&机加工结束时间=' + end
+ }
+ })
+}
+// 确定零件进度(↑)
+export function confirmPartProgress(num, num1) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理工艺_零件工艺计划_划为外协',
+ param: '工艺计划流水号=' + num + '&单件是否外协=1&单件是否外协分类=' + num1
+ }
+ })
+}
+// 确定零件计划
+export function confirmPartPlan(num, num1) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理工艺_零件工艺计划_划为外协_系数',
+ param: '工艺计划流水号=' + num + '&单件是否外协=2&单件是否外协分类=' + num1
+ }
+ })
+}
+// 查询表1(零件图号等)
+export function searchTable11(PageCurrent, PageSize, check1, num1, check2, num2, check3, num3, check4, num4) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_零件工序_查询数据_已编制工序的全部零件及工序_Newdistinct',
+ param: '项目流水号_check=' + check1 + '&项目流水号=' + num1 + '&机床流水号_check=' + check2 + '&机床流水号=' + num2 + '&组件流水号_check=' + check3 + '&组件流水号=' + num3 + '&零件图号_check=' + check4 + '&零件图号=' + num4 + '&是否查询全部数据=1&单件是否外协=2&考核状态=5',
+ Pagination: PageCurrent + '&' + PageSize
+ }
+ })
+}
+// 查询表1(30列)
+export function searchTable12(num4) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_零件工序_查询数据_已编制工序的全部零件及工序_NewNew',
+ param: '零件图号=' + num4
+ }
+ })
+}
+// 点击表格外协更改状态
+export function table1Out(num1, num3) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理工艺_零件工艺计划_外协平衡',
+ param: '工艺计划流水号=' + num1 + '&是否预计外协=1&是否预计外协分类=' + num3
+ }
+ })
+}
+// 修改零件着急状态
+export function zhaoji(num, a) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理工艺_零件工艺计划_修改数据_修改零件着急状态',
+ param: '工艺计划流水号=' + num + '&零件类型=' + a
+ }
+ })
+}
+// 修改加工件合格时间
+export function machiningQualified(num, a) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理工艺_零件工艺计划_修改数据_修改加工件合格时间',
+ param: '工艺计划流水号=' + num + '&加工件合格时间=' + a
+ }
+ })
+}
+
diff --git a/src/api/Outsourcing/PreorderAssociation.js b/src/api/Outsourcing/PreorderAssociation.js
new file mode 100644
index 00000000..47747967
--- /dev/null
+++ b/src/api/Outsourcing/PreorderAssociation.js
@@ -0,0 +1,50 @@
+import request from '@/utils/request'
+
+// 查询表1
+export function searchTable(check, num1, pageCurrent, pageSize) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_零件工艺计划_查询数据_状态_新',
+ param: '项目流水号_check=0&项目流水号=0&机床流水号_check=0&机床流水号=0&组件流水号_check=0&组件流水号=0&零件图号_check=' + check + '&零件图号=' + num1 + '&考核状态_check=0&考核状态=0&单件是否外协_check=1&单件是否外协=1&时间=0&机加工开始时间=0&机加工结束时间=0&零件类型=0',
+ Pagination: pageCurrent + '&' + pageSize
+ }
+ })
+}
+// 查询表2
+export function searchTable2(num1) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_零件工序_查询数据_工序工时_划单序外协',
+ param: '工艺计划流水号=' + num1
+ }
+ })
+}
+// 序间外协状态更改
+export function edit(num1, num2) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理工艺_零件工序_修改数据_单序外协',
+ param: '工序流水号=' + num1 + '&工序间是否外协=' + num2
+ }
+ })
+}
+export function edit2(num1, num2, num3) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理工艺_零件工艺计划_序间外协转换',
+ param: '工序流水号=' + num1 + '&工艺计划流水号=' + num2 + '&是否外协=' + num3
+ }
+ })
+}
diff --git a/src/api/Outsourcing/UnqualifiedTreatment.js b/src/api/Outsourcing/UnqualifiedTreatment.js
new file mode 100644
index 00000000..03b64f4d
--- /dev/null
+++ b/src/api/Outsourcing/UnqualifiedTreatment.js
@@ -0,0 +1,38 @@
+import request from '@/utils/request'
+
+// 初始化 外协厂商
+export function initOutHelp() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理工艺_基础表_外协厂家_查询数据'
+ }
+ })
+}
+// 查询主表
+export function searchTable(PageCurrent, PageSize, check1, num1, check2, num2, check3, num3, check4, num4, check5, num5) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '车间生产管理_外协加工任务单明细_查询数据_条件查询_新1',
+ param: '外协厂家_check=' + check1 + '&外协厂家流水号=' + num1 + '&表单号_check=' + check2 + '&表单号=' + num2 + '&零件图号_check=' + check3 + '&零件图号=' + num3 + '&任务下达日期_年_check=' + check4 + '&任务下达日期_年=' + num4 + '&任务下达日期_月_check=' + check5 + '&任务下达日期_月=' + num5,
+ Pagination: PageCurrent + '&' + PageSize
+ }
+ })
+}
+// 编辑不合格数量
+export function editList(num, num1, num2) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '车间生产管理_外协加工任务单明细_修改数据_不合格处理',
+ param: '外协加工任务单明细流水号=' + num + '&废品数量=' + num1 + '&不合格处理方式=' + num2
+ }
+ })
+}
diff --git a/src/api/ProjectManagement/progress.js b/src/api/ProjectManagement/progress.js
new file mode 100644
index 00000000..9048515f
--- /dev/null
+++ b/src/api/ProjectManagement/progress.js
@@ -0,0 +1,12 @@
+import request from '@/utils/request'
+
+export function projectSelect() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: 'PDM_项目名称_查询数据'
+ }
+ })
+}
diff --git a/src/api/ProjectManagement/summarize.js b/src/api/ProjectManagement/summarize.js
new file mode 100644
index 00000000..93a87cec
--- /dev/null
+++ b/src/api/ProjectManagement/summarize.js
@@ -0,0 +1,36 @@
+import request from '@/utils/request'
+
+export function projectSelect() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: 'PDM_项目名称_查询数据'
+ }
+ })
+}
+
+export function getTableData(num) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '项目总结_查询数据',
+ param: `项目流水号=${num}`
+ }
+ })
+}
+
+export function editTableData(num, projectValue, projectName, projectNum, producer, reviewer, projectManager, makeTime, startTime, planTime, accturalTime, timeAnalysis, planCost, accturalCost, costAnalysis, planResult, accturalResult, notResult, resultAnalysis, summary, projectManagerDate, reviewerDate) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '项目总结_编辑数据',
+ param: `项目总结流水号=${num}&项目流水号=${projectValue}&项目名称=${projectName}&项目编号=${projectNum}&制作人=${producer}&审核人=${reviewer}&项目经理=${projectManager}&制作日期=${makeTime}&开始时间=${startTime}&计划完成日期=${planTime}&实际完成日期=${accturalTime}&时间分析=${timeAnalysis}&计划费用=${planCost}&实际费用=${accturalCost}&成本分析=${costAnalysis}&计划交付结果=${planResult}&实际交付结果=${accturalResult}&未交付结果=${notResult}&交付结果分析=${resultAnalysis}&项目经验教训总结=${summary}&项目经理签字日期=${projectManagerDate}&审核人签字日期=${reviewerDate}`
+ }
+ })
+}
diff --git a/src/api/TechnologyCenter/CreatePackingList.js b/src/api/TechnologyCenter/CreatePackingList.js
new file mode 100644
index 00000000..82c9e20b
--- /dev/null
+++ b/src/api/TechnologyCenter/CreatePackingList.js
@@ -0,0 +1,226 @@
+import request from '@/utils/request'
+
+export function projectSelect() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: 'PDM_项目名称_查询数据'
+ }
+ })
+}
+export function getReciptData(projectNum) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: 'PDM_装箱单_总单据_查询数据',
+ param: `项目流水号=${projectNum}`
+ }
+ })
+}
+export function insertReciptData(num, time, name, address, tel, contact, projectNum) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: 'PDM_装箱单_总单据_增加数据',
+ param: `装箱单号=${num}&发货节点=${time}&名称=${name}&收货单位=${address}&联系方式=${tel}&联系人=${contact}&项目流水号=${projectNum}`
+ }
+ })
+}
+
+export function updateReciptData(num, time, name, address, tel, contact, projectNum) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: 'PDM_装箱单_总单据_修改数据',
+ param: `装箱单号=${num}&发货节点=${time}&名称=${name}&收货单位=${address}&联系方式=${tel}&联系人=${contact}&装箱单编号=${projectNum}`
+ }
+ })
+}
+
+export function deleteReciptData(num) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: 'PDM_装箱单_总单据_删除数据',
+ param: `装箱单编号=${num}`
+ }
+ })
+}
+
+export function getMachineData(num) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: 'PDM_装箱单_主机_查询数据',
+ param: `装箱单编号=${num}`
+ }
+ })
+}
+
+export function deleteMachineData(num) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: 'PDM_装箱单_主机_删除数据',
+ param: `序号=${num}`
+ }
+ })
+}
+
+export function addMachineData(projectName, machine, remark, number, num) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: 'PDM_装箱单_主机_增加数据',
+ param: `项目=${projectName}&机床号=${machine}&数量=${number}&备注=${remark}&装箱单编号=${num}`
+ }
+ })
+}
+
+export function updateMachineData(No, number, remark) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: 'PDM_装箱单_主机_修改数据',
+ param: `序号=${No}&数量=${number}&备注=${remark}`
+ }
+ })
+}
+
+export function getGroupData(project, machine) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: 'PDM_装箱单_机床所属部件_查询数据',
+ param: `项目=${project}&机床=${machine}`
+ }
+ })
+}
+
+export function machineSelect(projectValue) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: 'PDM_机床名称_查询数据2',
+ param: `项目流水号=${projectValue}`
+ }
+ })
+}
+
+export function getFileData(num) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: 'PDM_装箱单_随机技术文件_查询数据',
+ param: `装箱单编号=${num}`
+ }
+ })
+}
+
+export function deleteFileData(num) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: 'PDM_装箱单_随机技术文件_删除数据',
+ param: `序号=${num}`
+ }
+ })
+}
+
+export function editFileData(name, number, remark, num) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: 'PDM_装箱单_随机技术文件_修改数据',
+ param: `名称=${name}&数量=${number}&备注=${remark}&序号=${num}`
+ }
+ })
+}
+
+export function addFileData(name, number, remark, num) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: 'PDM_装箱单_随机技术文件_增加数据',
+ param: `名称=${name}&数量=${number}&备注=${remark}&装箱单编号=${num}`
+ }
+ })
+}
+
+export function getSpareData(num) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: 'PDM_装箱单_备件_查询数据',
+ param: `装箱单编号=${num}`
+ }
+ })
+}
+
+export function deleteSpareData(num) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: 'PDM_装箱单_备件_删除数据',
+ param: `序号=${num}`
+ }
+ })
+}
+
+export function editSpareData(name, specification, number, unit, remark, num) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: 'PDM_装箱单_备件_修改数据',
+ param: `名称=${name}&规格=${specification}&数量=${number}&单位=${unit}&备注=${remark}&序号=${num}`
+ }
+ })
+}
+
+export function addSpareData(name, specification, number, unit, remark, num) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: 'PDM_装箱单_备件_增加数据',
+ param: `名称=${name}&规格=${specification}&数量=${number}&单位=${unit}&备注=${remark}&装箱单编号=${num}`
+ }
+ })
+}
diff --git a/src/api/TechnologyCenter/ImportParts.js b/src/api/TechnologyCenter/ImportParts.js
new file mode 100644
index 00000000..a90bbca2
--- /dev/null
+++ b/src/api/TechnologyCenter/ImportParts.js
@@ -0,0 +1,249 @@
+import request from '@/utils/request'
+
+// 初始化 项目名称
+export function initProject() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: 'PDM_项目名称_查询数据_按时间排序'
+ }
+ })
+}
+
+export function isExit(projectNum, machineNum) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '组件明细表_基本件_导入数据_校验',
+ param: `项目流水号=${projectNum}&机床图号=${machineNum}`
+ }
+ })
+}
+export function isDrawingNum(projectName, machineNum, groupNum, drawingNum) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '组件明细表_基本件_导入验证gj',
+ param: `项目名称=${projectName}&机床名称=${machineNum}&分组名称=${groupNum}&图号=${drawingNum}`
+ }
+ })
+}
+
+export function importBasics(establishment, proofread, review, date, projectName, machineNum, machineName, componentName, componentNum, groupNum, contractNum, totalNum, pageNum, drawingNum, name, type, material, spareNum, useNum, manufacturer, remarks, classificationCode) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '组件明细表_基本件_导入数据gj',
+ param: `编制=${establishment}&校对=${proofread}&审核=${review}&日期=${date}&项目=${projectName}&机床=${machineNum}&设备名称=${machineName}&部件名称=${componentName}&部件数量=${componentNum}&组号=${groupNum}&合同编号=${contractNum}&合计页码=${totalNum}&页码=${pageNum}&图号=${drawingNum}&名称=${name}&规格=${type}&材料=${material}&备件数量=${spareNum}&装机数量=${useNum}&制造商=${manufacturer}&备注=${remarks}&分类码=${classificationCode}`
+ }
+ })
+}
+
+export function importPurcharse(establishment, proofread, review, date, projectName, machineNum, machineName, componentName, componentNum, groupNum, contractNum, totalNum, pageNum, drawingNum, name, type, material, spareNum, useNum, manufacturer, remarks, classificationCode) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '零件明细表_外购件和标准件_导入数据gj',
+ param: `编制=${establishment}&校对=${proofread}&审核=${review}&日期=${date}&项目=${projectName}&机床=${machineNum}&设备名称=${machineName}&部件名称=${componentName}&部件数量=${componentNum}&组号=${groupNum}&合同编号=${contractNum}&合计页码=${totalNum}&页码=${pageNum}&图号=${drawingNum}&名称=${name}&规格=${type}&材料=${material}&备件数量=${spareNum}&装机数量=${useNum}&制造商=${manufacturer}&备注=${remarks}&分类码=${classificationCode}`
+ }
+ })
+}
+
+export function specificationQuery(projectCheck, project, machineCheck, machine, groupCheck, group) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: 'PDM_零件明细表_基本件_规范数据查询_gj',
+ param: `项目名字_check=${projectCheck}&项目名字=${project}&机床名字_check=${machineCheck}&机床名字=${machine}&组号_check=${groupCheck}&组号=${group}`
+ }
+ })
+}
+export function specificationQueryWB(projectCheck, project, machineCheck, machine, groupCheck, group) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: 'PDM_零件明细表_外购件和标准件_规范数据查询_gj',
+ param: `项目名字_check=${projectCheck}&项目名字=${project}&机床名字_check=${machineCheck}&机床名字=${machine}&组号_check=${groupCheck}&组号=${group}`
+ }
+ })
+}
+export function unSpecificationQuery(projectCheck, project, machineCheck, machine, groupCheck, group) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: 'PDM_零件明细表_基本件_不规范数据查询_gj',
+ param: `项目名字_check=${projectCheck}&项目名字=${project}&机床名字_check=${machineCheck}&机床名字=${machine}&组号_check=${groupCheck}&组号=${group}`
+ }
+ })
+}
+export function unSpecificationQueryWB(projectCheck, project, machineCheck, machine, groupCheck, group) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: 'PDM_零件明细表_外购件和标准件_不规范数据查询gj',
+ param: `项目名字_check=${projectCheck}&项目名字=${project}&机床名字_check=${machineCheck}&机床名字=${machine}&组号_check=${groupCheck}&组号=${group}`
+ }
+ })
+}
+
+export function deleteBasicParts(id) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: 'PDM_零件明细表_基本件_数据导入保存_删除数据gj',
+ param: 'id=' + id
+ }
+ })
+}
+
+export function deleteBWParts(id) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: 'PDM_零件明细表_外购件和标准件_数据导入保存_删除数据gj',
+ param: 'id=' + id
+ }
+ })
+}
+
+export function getMaterial() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: 'PDM_零件明细表_材料_名称_查询数据_gj'
+ }
+ })
+}
+
+export function getMaterialWB(pageCurrent, pageSize) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: 'PDM_零件明细表_物料查询总gj',
+ pagination: pageCurrent + '&' + pageSize
+ }
+ })
+}
+
+export function searchMaterialWB(material, pageCurrent, pageSize) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: 'PDM_零件明细表_物料查询gj',
+ param: `物料=${material}`,
+ pagination: pageCurrent + '&' + pageSize
+ }
+ })
+}
+
+export function updateRow(drawingNum, name, type, materialName, spareNum, useNum, manufacturer, remarks, classificationCode, id, materialNum, partsNum) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '组件明细表_基本件_导入数据_更新数据_gj',
+ param: `图号=${drawingNum}&名称=${name}&规格=${type}&材料=${materialName}&备件数量=${spareNum}&装机数量=${useNum}&制造商=${manufacturer}&备注=${remarks}&分类码=${classificationCode}&id=${id}&材料流水号=${materialNum}&部件数量=${partsNum}`
+ }
+ })
+}
+
+export function updateRowWB(drawingNum, name, type, materialName, spareNum, useNum, manufacturer, remarks, classificationCode, id, materialNum, partsNum) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '零件明细表_外购件和标准件_导入数据_更新数据_gj',
+ param: `图号=${drawingNum}&名称=${name}&规格=${type}&材料=${materialName}&备件数量=${spareNum}&装机数量=${useNum}&制造商=${manufacturer}&备注=${remarks}&分类码=${classificationCode}&id=${id}&物料流水号=${materialNum}&部件数量=${partsNum}`
+ }
+ })
+}
+// 查询机床名称
+export function searchMachine(project) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: 'PDM_零件明细表_基本件_数据导入保存_机床_查询数据gj',
+ param: `项目=${project}`
+ }
+ })
+}
+
+export function searchMachine2(project) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: 'PDM_零件明细表_外购件和标准件_数据导入保存_机床_查询数据gj',
+ param: `项目=${project}`
+ }
+ })
+}
+// 查询组号
+export function searchGroupNum(project, name) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: 'PDM_零件明细表_基本件_数据导入保存_组号_查询数据gj',
+ param: `项目=${project}&机床=${name}`
+ }
+ })
+}
+// 传递零件
+export function transferMX(num1, name, num2, remark, mark, num3, num4, num5, type, transmit, num6, id) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: 'PDM_零件明细表_基本件_大量导入',
+ param: '图号或者型号=' + num1 + '&零件名称=' + name + '&零件数量=' + num2 + '&零件备注=' + remark + '&标记=' + mark + '&设计者编号=' + num3 + '&组件流水号=' + num4 + '&材料流水号=' + num5 + '&数据类型=' + type + '&是否传递=' + transmit + '&序号=' + num6 + '&id=' + id
+ }
+ })
+}
+
+export function transferWG(groupNum, materialNum, totalNum, remarks, mark, designNum, isTransfer, dataType, No, id) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: 'PDM_零件明细表_标准件和外购件_大量导入',
+ param: `组件流水号=${groupNum}&物料流水号=${materialNum}&零件数量=${totalNum}&备注=${remarks}&标记=${mark}&设计者编号=${designNum}&是否传递=${isTransfer}&数据类型=${dataType}&序号=${No}&id=${id}`
+ }
+ })
+}
diff --git a/src/api/TechnologyCenter/QueryParts.js b/src/api/TechnologyCenter/QueryParts.js
new file mode 100644
index 00000000..772fec3c
--- /dev/null
+++ b/src/api/TechnologyCenter/QueryParts.js
@@ -0,0 +1,83 @@
+import request from '@/utils/request'
+
+export function projectSelect() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: 'PDM_项目名称_查询数据'
+ }
+ })
+}
+
+export function machineSelect(projectValue) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: 'PDM_机床名称_查询数据2',
+ param: `项目流水号=${projectValue}`
+ }
+ })
+}
+
+export function groupSelect(machineValue) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: 'PDM_零件明细表_组件流水号_查询数据_根据机床',
+ param: `机床流水号=${machineValue}`
+ }
+ })
+}
+
+export function basicPartsData(project_check, project, machine_check, machine, group_check, group, pageSize, pageCurrent) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: 'PDM_零件明细表_基本件_查询数据_综合gj',
+ param: `项目流水号_check=${project_check}&项目流水号=${project}&机床流水号_check=${machine_check}&机床流水号=${machine}&组件流水号_check=${group_check}&组件流水号=${group}`,
+ Pagination: pageCurrent + '&' + pageSize
+ }
+ })
+}
+export function purchasePartsData(num, type, pageCurrent, pageSize) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: 'PDM_零件明细表_标准件和外购件_查询数据',
+ param: `组件流水号=${num}&标准件类型=${type}`,
+ pagination: pageCurrent + '&' + pageSize
+ }
+ })
+}
+export function deleteBasicParts(basicNum) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: 'PDM_零件明细表_基本件_删除数据',
+ param: `基本件流水号=${basicNum}`
+ }
+ })
+}
+export function deletePurchaseData(num) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: 'PDM_零件明细表_标准件和外购件_删除数据',
+ param: '标准件和外购件流水号=' + num + '=int'
+ }
+ })
+}
diff --git a/src/api/login.js b/src/api/login.js
new file mode 100644
index 00000000..f83d46dc
--- /dev/null
+++ b/src/api/login.js
@@ -0,0 +1,38 @@
+import request from '@/utils/request'
+
+export function login(username, password) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '菜单系统模块_用户名密码_查询数据_new2',
+ param: `用户名=${username}&密码=${password}`
+ }
+ })
+}
+
+export function getInfo(token) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '菜单系统模块_项目角色模块列表_查询数据gj',
+ param: `角色编号=${token}`
+ }
+ })
+}
+
+// 查询按钮功能实现
+export function editPassword(num1, num2, num3, num4) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '账号信息_修改密码_MESWORK',
+ param: '考勤编号=' + num1 + '=int&原始密码=' + num2 + '=string&新密码=' + num3 + '=string&返回=' + num4 + '=string=output'
+ }
+ })
+}
diff --git a/src/assets/404_images/404.png b/src/assets/404_images/404.png
new file mode 100644
index 00000000..3d8e2305
Binary files /dev/null and b/src/assets/404_images/404.png differ
diff --git a/src/assets/404_images/404_cloud.png b/src/assets/404_images/404_cloud.png
new file mode 100644
index 00000000..c6281d09
Binary files /dev/null and b/src/assets/404_images/404_cloud.png differ
diff --git a/src/assets/img/gaojingLogo.png b/src/assets/img/gaojingLogo.png
new file mode 100644
index 00000000..f6cf33b3
Binary files /dev/null and b/src/assets/img/gaojingLogo.png differ
diff --git a/src/assets/img/user.jpg b/src/assets/img/user.jpg
new file mode 100644
index 00000000..a968d954
Binary files /dev/null and b/src/assets/img/user.jpg differ
diff --git a/src/components/Breadcrumb/index.vue b/src/components/Breadcrumb/index.vue
new file mode 100644
index 00000000..4fdd7bea
--- /dev/null
+++ b/src/components/Breadcrumb/index.vue
@@ -0,0 +1,51 @@
+
+
+
+
+ {{ item.meta.title }}
+ {{ item.meta.title }}
+
+
+
+
+
+
+
+
diff --git a/src/components/Hamburger/index.vue b/src/components/Hamburger/index.vue
new file mode 100644
index 00000000..f1f9bda1
--- /dev/null
+++ b/src/components/Hamburger/index.vue
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
diff --git a/src/components/Scrollpane/index.vue b/src/components/Scrollpane/index.vue
new file mode 100644
index 00000000..7b25e7b6
--- /dev/null
+++ b/src/components/Scrollpane/index.vue
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
diff --git a/src/components/SvgIcon/index.vue b/src/components/SvgIcon/index.vue
new file mode 100644
index 00000000..12a1f58d
--- /dev/null
+++ b/src/components/SvgIcon/index.vue
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
diff --git a/src/icon/demo.css b/src/icon/demo.css
new file mode 100644
index 00000000..3d9cbe76
--- /dev/null
+++ b/src/icon/demo.css
@@ -0,0 +1,370 @@
+*{margin: 0;padding: 0;list-style: none;}
+/*
+KISSY CSS Reset
+理念:1. reset 的目的不是清除浏览器的默认样式,这仅是部分工作。清除和重置是紧密不可分的。
+2. reset 的目的不是让默认样式在所有浏览器下一致,而是减少默认样式有可能带来的问题。
+3. reset 期望提供一套普适通用的基础样式。但没有银弹,推荐根据具体需求,裁剪和修改后再使用。
+特色:1. 适应中文;2. 基于最新主流浏览器。
+维护:玉伯, 正淳
+ */
+
+/** 清除内外边距 **/
+body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, /* structural elements 结构元素 */
+dl, dt, dd, ul, ol, li, /* list elements 列表元素 */
+pre, /* text formatting elements 文本格式元素 */
+form, fieldset, legend, button, input, textarea, /* form elements 表单元素 */
+th, td /* table elements 表格元素 */ {
+ margin: 0;
+ padding: 0;
+}
+
+/** 设置默认字体 **/
+body,
+button, input, select, textarea /* for ie */ {
+ font: 12px/1.5 tahoma, arial, \5b8b\4f53, sans-serif;
+}
+h1, h2, h3, h4, h5, h6 { font-size: 100%; }
+address, cite, dfn, em, var { font-style: normal; } /* 将斜体扶正 */
+code, kbd, pre, samp { font-family: courier new, courier, monospace; } /* 统一等宽字体 */
+small { font-size: 12px; } /* 小于 12px 的中文很难阅读,让 small 正常化 */
+
+/** 重置列表元素 **/
+ul, ol { list-style: none; }
+
+/** 重置文本格式元素 **/
+a { text-decoration: none; }
+a:hover { text-decoration: underline; }
+
+
+/** 重置表单元素 **/
+legend { color: #000; } /* for ie6 */
+fieldset, img { border: 0; } /* img 搭车:让链接里的 img 无边框 */
+button, input, select, textarea { font-size: 100%; } /* 使得表单元素在 ie 下能继承字体大小 */
+/* 注:optgroup 无法扶正 */
+
+/** 重置表格元素 **/
+table { border-collapse: collapse; border-spacing: 0; }
+
+/* 清除浮动 */
+.ks-clear:after, .clear:after {
+ content: '\20';
+ display: block;
+ height: 0;
+ clear: both;
+}
+.ks-clear, .clear {
+ *zoom: 1;
+}
+
+.main {
+ padding: 30px 100px;
+width: 960px;
+margin: 0 auto;
+}
+.main h1{font-size:36px; color:#333; text-align:left;margin-bottom:30px; border-bottom: 1px solid #eee;}
+
+.helps{margin-top:40px;}
+.helps pre{
+ padding:20px;
+ margin:10px 0;
+ border:solid 1px #e7e1cd;
+ background-color: #fffdef;
+ overflow: auto;
+}
+
+.icon_lists{
+ width: 100% !important;
+
+}
+
+.icon_lists li{
+ float:left;
+ width: 100px;
+ height:180px;
+ text-align: center;
+ list-style: none !important;
+}
+.icon_lists .icon{
+ font-size: 42px;
+ line-height: 100px;
+ margin: 10px 0;
+ color:#333;
+ -webkit-transition: font-size 0.25s ease-out 0s;
+ -moz-transition: font-size 0.25s ease-out 0s;
+ transition: font-size 0.25s ease-out 0s;
+
+}
+.icon_lists .icon:hover{
+ font-size: 100px;
+}
+
+
+
+.markdown {
+ color: #666;
+ font-size: 14px;
+ line-height: 1.8;
+}
+
+.highlight {
+ line-height: 1.5;
+}
+
+.markdown img {
+ vertical-align: middle;
+ max-width: 100%;
+}
+
+.markdown h1 {
+ color: #404040;
+ font-weight: 500;
+ line-height: 40px;
+ margin-bottom: 24px;
+}
+
+.markdown h2,
+.markdown h3,
+.markdown h4,
+.markdown h5,
+.markdown h6 {
+ color: #404040;
+ margin: 1.6em 0 0.6em 0;
+ font-weight: 500;
+ clear: both;
+}
+
+.markdown h1 {
+ font-size: 28px;
+}
+
+.markdown h2 {
+ font-size: 22px;
+}
+
+.markdown h3 {
+ font-size: 16px;
+}
+
+.markdown h4 {
+ font-size: 14px;
+}
+
+.markdown h5 {
+ font-size: 12px;
+}
+
+.markdown h6 {
+ font-size: 12px;
+}
+
+.markdown hr {
+ height: 1px;
+ border: 0;
+ background: #e9e9e9;
+ margin: 16px 0;
+ clear: both;
+}
+
+.markdown p,
+.markdown pre {
+ margin: 1em 0;
+}
+
+.markdown > p,
+.markdown > blockquote,
+.markdown > .highlight,
+.markdown > ol,
+.markdown > ul {
+ width: 80%;
+}
+
+.markdown ul > li {
+ list-style: circle;
+}
+
+.markdown > ul li,
+.markdown blockquote ul > li {
+ margin-left: 20px;
+ padding-left: 4px;
+}
+
+.markdown > ul li p,
+.markdown > ol li p {
+ margin: 0.6em 0;
+}
+
+.markdown ol > li {
+ list-style: decimal;
+}
+
+.markdown > ol li,
+.markdown blockquote ol > li {
+ margin-left: 20px;
+ padding-left: 4px;
+}
+
+.markdown code {
+ margin: 0 3px;
+ padding: 0 5px;
+ background: #eee;
+ border-radius: 3px;
+}
+
+.markdown pre {
+ border-radius: 6px;
+ background: #f7f7f7;
+ padding: 20px;
+}
+
+.markdown pre code {
+ border: none;
+ background: #f7f7f7;
+ margin: 0;
+}
+
+.markdown strong,
+.markdown b {
+ font-weight: 600;
+}
+
+.markdown > table {
+ border-collapse: collapse;
+ border-spacing: 0px;
+ empty-cells: show;
+ border: 1px solid #e9e9e9;
+ width: 95%;
+ margin-bottom: 24px;
+}
+
+.markdown > table th {
+ white-space: nowrap;
+ color: #333;
+ font-weight: 600;
+
+}
+
+.markdown > table th,
+.markdown > table td {
+ border: 1px solid #e9e9e9;
+ padding: 8px 16px;
+ text-align: left;
+}
+
+.markdown > table th {
+ background: #F7F7F7;
+}
+
+.markdown blockquote {
+ font-size: 90%;
+ color: #999;
+ border-left: 4px solid #e9e9e9;
+ padding-left: 0.8em;
+ margin: 1em 0;
+ font-style: italic;
+}
+
+.markdown blockquote p {
+ margin: 0;
+}
+
+.markdown .anchor {
+ opacity: 0;
+ transition: opacity 0.3s ease;
+ margin-left: 8px;
+}
+
+.markdown .waiting {
+ color: #ccc;
+}
+
+.markdown h1:hover .anchor,
+.markdown h2:hover .anchor,
+.markdown h3:hover .anchor,
+.markdown h4:hover .anchor,
+.markdown h5:hover .anchor,
+.markdown h6:hover .anchor {
+ opacity: 1;
+ display: inline-block;
+}
+
+.markdown > br,
+.markdown > p > br {
+ clear: both;
+}
+
+
+.hljs {
+ display: block;
+ background: white;
+ padding: 0.5em;
+ color: #333333;
+ overflow-x: auto;
+}
+
+.hljs-comment,
+.hljs-meta {
+ color: #969896;
+}
+
+.hljs-string,
+.hljs-variable,
+.hljs-template-variable,
+.hljs-strong,
+.hljs-emphasis,
+.hljs-quote {
+ color: #df5000;
+}
+
+.hljs-keyword,
+.hljs-selector-tag,
+.hljs-type {
+ color: #a71d5d;
+}
+
+.hljs-literal,
+.hljs-symbol,
+.hljs-bullet,
+.hljs-attribute {
+ color: #0086b3;
+}
+
+.hljs-section,
+.hljs-name {
+ color: #63a35c;
+}
+
+.hljs-tag {
+ color: #333333;
+}
+
+.hljs-title,
+.hljs-attr,
+.hljs-selector-id,
+.hljs-selector-class,
+.hljs-selector-attr,
+.hljs-selector-pseudo {
+ color: #795da3;
+}
+
+.hljs-addition {
+ color: #55a532;
+ background-color: #eaffea;
+}
+
+.hljs-deletion {
+ color: #bd2c00;
+ background-color: #ffecec;
+}
+
+.hljs-link {
+ text-decoration: underline;
+}
+
+pre{
+ background: #fff;
+}
+
+
+
+
+
diff --git a/src/icon/iconfont.css b/src/icon/iconfont.css
new file mode 100644
index 00000000..6cf229f0
--- /dev/null
+++ b/src/icon/iconfont.css
@@ -0,0 +1,30 @@
+
+@font-face {font-family: "fontFamily";
+ src: url('iconfont.eot?t=1527493375212'); /* IE9*/
+ src: url('iconfont.eot?t=1527493375212#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url('data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAAAXoAAsAAAAACHwAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAADMAAABCsP6z7U9TLzIAAAE8AAAARAAAAFZW7kf3Y21hcAAAAYAAAABjAAABnM7GacRnbHlmAAAB5AAAAfsAAAIsdf0weGhlYWQAAAPgAAAALwAAADYRguv+aGhlYQAABBAAAAAcAAAAJAfeA4VobXR4AAAELAAAABAAAAAQD+kAAGxvY2EAAAQ8AAAACgAAAAoBjAC6bWF4cAAABEgAAAAfAAAAIAEaAF1uYW1lAAAEaAAAAVMAAAKFV8s9R3Bvc3QAAAW8AAAAKgAAADsY6RIYeJxjYGRgYOBikGPQYWB0cfMJYeBgYGGAAJAMY05meiJQDMoDyrGAaQ4gZoOIAgCKIwNPAHicY2Bk/sU4gYGVgYOpk+kMAwNDP4RmfM1gxMjBwMDEwMrMgBUEpLmmMDgwVDzjZm7438AQw9zA0AAUZgTJAQAk0wx5eJzFkNENgCAMRK+ChIij+GkcyC9HYOKugdfCDxNw5JX2ckkJAHYAgVwkAvJBYHrpivsBh/sRD+fMs/GumrS0NnUm8UT2LlhSEpZJ1q2edXq9x2T/XQd8oqaO+Vo62H4fLw+3AHicLZC/b9NAFMffu6udpM0PbMdx4jQ/LhfXoDRBtpN2IGkXkArNgNQpKkiNYlSBRNd2YKiQEB0YWFDFCkiIiYEfytAJVbDTv6CFjYXSFhbsckE53dP3fZ/e6X3egQRwfkj3aBY0uAgOXIWbACjXsJIkBWR2s0FqqDNJN9JJanObRXilQTtoVOR0xp1rzhhyRE5hEovoMXfObhAbW80FcgXdTAExlzdXVGtapU9xMmsXH4U3yAvUS3w6tVAPr88upt2yFt2Mq2pOVZ9EZUmKEjKRSuJ9IxOTYpNy+EpKmfpe6RIpYTxnm91eopxX+zvNjYJlxBC3t1HLl5OvFxVTEfeBmdHUXORCIpo1E7yaxs3vU1ktXpj5BuJExK7P6A/agwmIQhxyUAAGltiXKUyxmM5GicaF4Yqns5ZnoCjqns5RBK0GlO4Hy7gTbuFRcESKu6vBvdVdAurL4DF2w/cHB1jvdGjvb5uy9Q/B3VFt1E27x8cPw2vtdpt83QIxGc6f0190A6hgmoKU+HsD8lACDpfBg3kAQ4AYo5ljRcFEecuTRG6NeSzeEpj/QTkVfl5EFofh0trp6dpY8RMOBycnwbLrkpLjBIdC3w1+zvaxduez73/x/XUc3jrDjzi8/RtXwiXx7u2Z7zhOmHbq+8JXB3/CN/1+H+AfnVR/vQB4nGNgZGBgAOLuWSW34/ltvjJwszCAwHXDy/8R9P+pLAzMeUAuBwMTSBQAWOoL7AB4nGNgZGBgbvjfwBDDwgACQJKRARWwAABHCgJtBAAAAAPpAAAEAAAABAAAAAAAAAAAdgC6ARYAAHicY2BkYGBgYQhk4GEAASYg5gJCBob/YD4DABGzAXgAeJxtkk1uwjAQhZ/LT9UgddHSdlmvWBQp/CzZooZlJRbsQ3AgKIkjxyDRXQ/Q8/QQPUE3vUHv0EcwQkIk8uibN2/GthIAd/iFwOF54DqwgMfswFe4xrPjGvWO4zq577iBFkaOm9RfHXvo4s1xC/d45wRRv2H2gk/HAm18Ob7CLb4d16j/OK6T/xw38CiE4yba4smxh5noOm6hIz68sVGhVQs538kk0nmsc+vtQxBmSbqbquUmDc1JONFMmTLRuRz4/ZM4Ubkyx3nldjm0Npax0ZkM6FFpqmVh9FpF1l9ZW4x6vdjpfqQzHm8MA4UQlnEBiTl2jAkiaOSIq2jpO1JAb8Z6St+UPUtsyCGnXHJc0mbsMiiZ7WsSA/j8ZJecEzrzyn1+vhJb7jykatkpuQz7M1Lg5ihOSMkSRVVbU4mo+1hVXQV/jR7f+MzvVzfP/gHCFnRdAHicY2BigAAuBuyAhZGJkZmRhZGVgbGCycCSI7WoPDUzN9GQgQEAJkQEKgAA') format('woff'),
+ url('iconfont.ttf?t=1527493375212') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/
+ url('iconfont.svg?t=1527493375212#fontFamily') format('svg'); /* iOS 4.1- */
+}
+
+.fontFamily {
+ font-family:"fontFamily" !important;
+ font-size:16px;
+ font-style:normal;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+[class^="el-icon-cjn"], [class*=" el-icon-cjn"] {
+ font-family:"fontFamily" !important;
+ /* 以下内容参照第三方图标库本身的规则 */
+ font-size: 13px;
+ font-style:normal;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+.el-icon-cjn-09:before { content: "\e60b"; }
+
+.el-icon-cjn-erweima1:before { content: "\e606"; }
+
diff --git a/src/icon/iconfont.eot b/src/icon/iconfont.eot
new file mode 100644
index 00000000..805da984
Binary files /dev/null and b/src/icon/iconfont.eot differ
diff --git a/src/icon/iconfont.js b/src/icon/iconfont.js
new file mode 100644
index 00000000..0a1c3360
--- /dev/null
+++ b/src/icon/iconfont.js
@@ -0,0 +1 @@
+(function(window) { var svgSprite = ''; var script = (function() { var scripts = document.getElementsByTagName('script'); return scripts[scripts.length - 1] }()); var shouldInjectCss = script.getAttribute('data-injectcss'); var ready = function(fn) { if (document.addEventListener) { if (~['complete', 'loaded', 'interactive'].indexOf(document.readyState)) { setTimeout(fn, 0) } else { var loadFn = function() { document.removeEventListener('DOMContentLoaded', loadFn, false); fn() }; document.addEventListener('DOMContentLoaded', loadFn, false) } } else if (document.attachEvent) { IEContentLoaded(window, fn) } function IEContentLoaded(w, fn) { var d = w.document, done = false, init = function() { if (!done) { done = true; fn() } }; var polling = function() { try { d.documentElement.doScroll('left') } catch (e) { setTimeout(polling, 50); return }init() }; polling(); d.onreadystatechange = function() { if (d.readyState == 'complete') { d.onreadystatechange = null; init() } } } }; var before = function(el, target) { target.parentNode.insertBefore(el, target) }; var prepend = function(el, target) { if (target.firstChild) { before(el, target.firstChild) } else { target.appendChild(el) } }; function appendSvg() { var div, svg; div = document.createElement('div'); div.innerHTML = svgSprite; svgSprite = null; svg = div.getElementsByTagName('svg')[0]; if (svg) { svg.setAttribute('aria-hidden', 'true'); svg.style.position = 'absolute'; svg.style.width = 0; svg.style.height = 0; svg.style.overflow = 'hidden'; prepend(svg, document.body) } } if (shouldInjectCss && !window.__iconfont__svg__cssinject__) { window.__iconfont__svg__cssinject__ = true; try { document.write('') } catch (e) { console && console.log(e) } }ready(appendSvg) })(window)
diff --git a/src/icon/iconfont.svg b/src/icon/iconfont.svg
new file mode 100644
index 00000000..b4a1d7b2
--- /dev/null
+++ b/src/icon/iconfont.svg
@@ -0,0 +1,39 @@
+
+
+
+
diff --git a/src/icon/iconfont.ttf b/src/icon/iconfont.ttf
new file mode 100644
index 00000000..73ff92a1
Binary files /dev/null and b/src/icon/iconfont.ttf differ
diff --git a/src/icon/iconfont.woff b/src/icon/iconfont.woff
new file mode 100644
index 00000000..c74a2be5
Binary files /dev/null and b/src/icon/iconfont.woff differ
diff --git a/src/icons/index.js b/src/icons/index.js
new file mode 100644
index 00000000..d9fe4d86
--- /dev/null
+++ b/src/icons/index.js
@@ -0,0 +1,9 @@
+import Vue from 'vue'
+import SvgIcon from '@/components/SvgIcon' // svg组件
+
+// register globally
+Vue.component('svg-icon', SvgIcon)
+
+const requireAll = requireContext => requireContext.keys().map(requireContext)
+const req = require.context('./svg', false, /\.svg$/)
+requireAll(req)
diff --git a/src/icons/svg/BidBond.svg b/src/icons/svg/BidBond.svg
new file mode 100644
index 00000000..b792bda9
--- /dev/null
+++ b/src/icons/svg/BidBond.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/CRM.svg b/src/icons/svg/CRM.svg
new file mode 100644
index 00000000..7eed9d58
--- /dev/null
+++ b/src/icons/svg/CRM.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/ContractCapitalManagement.svg b/src/icons/svg/ContractCapitalManagement.svg
new file mode 100644
index 00000000..5c08ce66
--- /dev/null
+++ b/src/icons/svg/ContractCapitalManagement.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/ContractInformationManagement.svg b/src/icons/svg/ContractInformationManagement.svg
new file mode 100644
index 00000000..44df9be7
--- /dev/null
+++ b/src/icons/svg/ContractInformationManagement.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/CreatePackingList.svg b/src/icons/svg/CreatePackingList.svg
new file mode 100644
index 00000000..362dad83
--- /dev/null
+++ b/src/icons/svg/CreatePackingList.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/ImportParts.svg b/src/icons/svg/ImportParts.svg
new file mode 100644
index 00000000..573d7494
--- /dev/null
+++ b/src/icons/svg/ImportParts.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/PartAssignment.svg b/src/icons/svg/PartAssignment.svg
new file mode 100644
index 00000000..7cebf7c5
--- /dev/null
+++ b/src/icons/svg/PartAssignment.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/PersonnelManagement.svg b/src/icons/svg/PersonnelManagement.svg
new file mode 100644
index 00000000..b57a24eb
--- /dev/null
+++ b/src/icons/svg/PersonnelManagement.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/QueryParts.svg b/src/icons/svg/QueryParts.svg
new file mode 100644
index 00000000..60fcb677
--- /dev/null
+++ b/src/icons/svg/QueryParts.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/SafetyMargin.svg b/src/icons/svg/SafetyMargin.svg
new file mode 100644
index 00000000..17c5f1e1
--- /dev/null
+++ b/src/icons/svg/SafetyMargin.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/UserRightsManagement.svg b/src/icons/svg/UserRightsManagement.svg
new file mode 100644
index 00000000..d79089f4
--- /dev/null
+++ b/src/icons/svg/UserRightsManagement.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/eye.svg b/src/icons/svg/eye.svg
new file mode 100644
index 00000000..16ed2d87
--- /dev/null
+++ b/src/icons/svg/eye.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/password.svg b/src/icons/svg/password.svg
new file mode 100644
index 00000000..c7cf461b
--- /dev/null
+++ b/src/icons/svg/password.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/username.svg b/src/icons/svg/username.svg
new file mode 100644
index 00000000..6b087db1
--- /dev/null
+++ b/src/icons/svg/username.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svgo.yml b/src/icons/svgo.yml
new file mode 100644
index 00000000..d11906ae
--- /dev/null
+++ b/src/icons/svgo.yml
@@ -0,0 +1,22 @@
+# replace default config
+
+# multipass: true
+# full: true
+
+plugins:
+
+ # - name
+ #
+ # or:
+ # - name: false
+ # - name: true
+ #
+ # or:
+ # - name:
+ # param1: 1
+ # param2: 2
+
+- removeAttrs:
+ attrs:
+ - 'fill'
+ - 'fill-rule'
diff --git a/src/main.js b/src/main.js
new file mode 100644
index 00000000..df82ab70
--- /dev/null
+++ b/src/main.js
@@ -0,0 +1,39 @@
+import Vue from 'vue'
+
+import 'normalize.css/normalize.css' // A modern alternative to CSS resets
+
+import ElementUI from 'element-ui'
+import 'element-ui/lib/theme-chalk/index.css'
+
+import '@/styles/index.scss' // global css
+
+import App from './App'
+import router from './router'
+import store from './store'
+import echarts from 'echarts'
+import '@/icons' // icon
+import '@/permission' // permission control
+import curd from '@/utils/curd'
+import time from 'time-formater'
+
+Vue.use(curd)
+
+Vue.use(ElementUI)
+// 处理时间字符串格式全局过滤器 '2018/1/23 00:00:00' to '2018-01-23'
+Vue.filter('formatTime', function(value) {
+ if (!value) return ''
+ const isTime = /^\d{4}([-\/.])\d{1,2}\1\d{1,2}/
+ if (!isTime.test(value)) return value
+ let result = time(value).format('YYYY-MM-DD')
+ result = result.indexOf('1900-01-01') > -1 ? '' : result
+ return result
+})
+Vue.prototype.$echarts = echarts
+Vue.config.productionTip = false
+
+new Vue({
+ el: '#app',
+ router,
+ store,
+ render: h => h(App)
+})
diff --git a/src/permission.js b/src/permission.js
new file mode 100644
index 00000000..faf8b4a4
--- /dev/null
+++ b/src/permission.js
@@ -0,0 +1,83 @@
+import router from './router'
+import store from './store'
+import { Message } from 'element-ui'
+import NProgress from 'nprogress' // progress bar
+import 'nprogress/nprogress.css'// progress bar style
+import { getToken } from '@/utils/auth' // getToken from cookie
+
+NProgress.configure({ showSpinner: false })// NProgress Configuration
+
+// permission judge function
+function hasPermission(roles, permissionRoles) {
+ if (roles.indexOf('admin') >= 0) return true // admin permission passed directly
+ if (!permissionRoles) return true
+ return roles.some(role => permissionRoles.indexOf(role) >= 0)
+}
+function getRouter(data) {
+ const result = []
+ for (let i = 0; i < data.length; i++) {
+ const obj = {
+ 'path': data[i].父路径,
+ 'component': () => import(`@/views/layout/${data[i].父组件}`),
+ 'children': [
+ {
+ 'path': data[i].子路径,
+ 'name': data[i].子名称,
+ 'component': () => import(`@/views${data[i].子组件}`),
+ 'meta': { 'title': data[i].标题, 'icon': data[i].图标 }
+ }
+ ]
+ }
+ result.push(obj)
+ }
+ return result
+}
+const whiteList = ['/login', '/auth-redirect']// no redirect whitelist
+
+router.beforeEach((to, from, next) => {
+ NProgress.start() // start progress bar
+ if (getToken()) { // determine if there has token
+ /* has token*/
+ if (to.path === '/login') {
+ next({ path: '/' })
+ NProgress.done() // if current page is dashboard will not trigger afterEach hook, so manually handle it
+ } else {
+ if (store.getters.roles.length === 0) { // 判断当前用户是否已拉取完user_info信息
+ store.dispatch('GetInfo').then(res => { // 拉取user_info
+ const data = res.data
+ const asyncRouterMap = getRouter(data)
+ asyncRouterMap.push({ path: '*', redirect: '/404', hidden: true })
+ store.dispatch('GenerateRoutes', asyncRouterMap).then(() => { // 根据roles权限生成可访问的路由表
+ router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表
+ next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record
+ })
+ }).catch((err) => {
+ store.dispatch('FedLogOut').then(() => {
+ Message.error(err || 'Verification failed, please login again')
+ next({ path: '/' })
+ })
+ })
+ } else {
+ // 没有动态改变权限的需求可直接next() 删除下方权限判断 ↓
+ if (hasPermission(store.getters.roles, to.meta.roles)) {
+ next()
+ } else {
+ next({ path: '/401', replace: true, query: { noGoBack: true }})
+ }
+ // 可删 ↑
+ }
+ }
+ } else {
+ /* has no token*/
+ if (whiteList.indexOf(to.path) !== -1) { // 在免登录白名单,直接进入
+ next()
+ } else {
+ next(`/login?redirect=${to.path}`) // 否则全部重定向到登录页
+ NProgress.done() // if current page is login will not trigger afterEach hook, so manually handle it
+ }
+ }
+})
+
+router.afterEach(() => {
+ NProgress.done() // finish progress bar
+})
diff --git a/src/router/index.js b/src/router/index.js
new file mode 100644
index 00000000..5b19d1cd
--- /dev/null
+++ b/src/router/index.js
@@ -0,0 +1,145 @@
+import Vue from 'vue'
+import Router from 'vue-router'
+
+// in development-env not use lazy-loading, because lazy-loading too many pages will cause webpack hot update too slow. so only in production use lazy-loading;
+// detail: https://panjiachen.github.io/vue-element-admin-site/#/lazy-loading
+
+Vue.use(Router)
+
+/* Layout */
+import Layout from '../views/layout/Layout'
+
+/**
+* hidden: true if `hidden:true` will not show in the sidebar(default is false)
+* alwaysShow: true if set true, will always show the root menu, whatever its child routes length
+* if not set alwaysShow, only more than one route under the children
+* it will becomes nested mode, otherwise not show the root menu
+* redirect: noredirect if `redirect:noredirect` will no redirect in the breadcrumb
+* name:'router-name' the name is used by (must set!!!)
+* meta : {
+ title: 'title' the name show in submenu and breadcrumb (recommend set)
+ icon: 'svg-name' the icon show in the sidebar,
+ }
+**/
+export const constantRouterMap = [
+ { path: '/login', component: () => import('@/views/login/index'), hidden: true },
+ { path: '/404', component: () => import('@/views/404'), hidden: true },
+
+ {
+ path: '/',
+ component: Layout,
+ redirect: '/dashboard',
+ name: 'Dashboard',
+ hidden: true,
+ children: [{
+ path: 'dashboard',
+ component: () => import('@/views/dashboard/index')
+ }]
+ }
+ // {
+ // path: '/ProjectManagement',
+ // component: Layout,
+ // children: [
+ // {
+ // path: 'summarize',
+ // name: 'summarize',
+ // component: () => import('@/views/ProjectManagement/summarize'),
+ // meta: { title: '项目总结', icon: 'summarize' }
+ // }
+ // ]
+ // },
+ // {
+ // path: '/ProjectManagement',
+ // component: Layout,
+ // children: [
+ // {
+ // path: 'assess',
+ // name: 'assess',
+ // component: () => import('@/views/ProjectManagement/assess'),
+ // meta: { title: '项目考核', icon: 'assess' }
+ // }
+ // ]
+ // },
+ // {
+ // path: '/ProjectManagement',
+ // component: Layout,
+ // children: [
+ // {
+ // path: 'progress',
+ // name: 'progress',
+ // component: () => import('@/views/ProjectManagement/progress'),
+ // meta: { title: '项目进展', icon: 'progress' }
+ // }
+ // ]
+ // }
+]
+
+export default new Router({
+ // mode: 'history', //后端支持可开
+ scrollBehavior: () => ({ y: 0 }),
+ routes: constantRouterMap
+})
+
+export const asyncRouterMap = [
+ {
+ path: '/BasicData',
+ component: Layout,
+ children: [
+ {
+ path: 'PersonnelManagement',
+ name: 'PersonnelManagement',
+ component: () => import('@/views/BasicData/PersonnelManagement'),
+ meta: { title: '人员管理', icon: 'PersonnelManagement' }
+ }
+ ]
+ },
+ {
+ path: '/BasicData',
+ component: Layout,
+ children: [
+ {
+ path: 'UserRightsManagement',
+ name: 'UserRightsManagement',
+ component: () => import('@/views/BasicData/UserRightsManagement'),
+ meta: { title: '用户权限管理', icon: 'UserRightsManagement' }
+ }
+ ]
+ },
+ {
+ path: '/TechnologyCenter',
+ component: Layout,
+ children: [
+ {
+ path: 'ImportParts',
+ name: 'ImportParts',
+ component: () => import('@/views/TechnologyCenter/ImportParts'),
+ meta: { title: '零件导入', icon: 'ImportParts' }
+ }
+ ]
+ },
+ {
+ path: '/QueryParts',
+ component: Layout,
+ children: [
+ {
+ path: 'QueryParts',
+ name: 'QueryParts',
+ component: () => import('@/views/TechnologyCenter/QueryParts'),
+ meta: { title: '零件查询', icon: 'QueryParts' }
+ }
+ ]
+ },
+ {
+ path: '/CreatePackingList',
+ component: Layout,
+ children: [
+ {
+ path: 'CreatePackingList',
+ name: 'CreatePackingList',
+ component: () => import('@/views/TechnologyCenter/CreatePackingList'),
+ meta: { title: '创建装箱单', icon: 'CreatePackingList' }
+ }
+ ]
+ },
+ { path: '*', redirect: '/404', hidden: true }
+]
diff --git a/src/store/getters.js b/src/store/getters.js
new file mode 100644
index 00000000..aae15309
--- /dev/null
+++ b/src/store/getters.js
@@ -0,0 +1,13 @@
+const getters = {
+ sidebar: state => state.app.sidebar,
+ device: state => state.app.device,
+ token: state => state.user.token,
+ avatar: state => state.user.avatar,
+ name: state => state.user.name,
+ roles: state => state.user.roles,
+ visitedViews: state => state.tagsView.visitedViews,
+ cachedViews: state => state.tagsView.cachedViews,
+ permission_routers: state => state.permission.routers,
+ addRouters: state => state.permission.addRouters
+}
+export default getters
diff --git a/src/store/index.js b/src/store/index.js
new file mode 100644
index 00000000..464a49a2
--- /dev/null
+++ b/src/store/index.js
@@ -0,0 +1,21 @@
+import Vue from 'vue'
+import Vuex from 'vuex'
+import app from './modules/app'
+import tagsView from './modules/tagsView'
+import user from './modules/user'
+import permission from './modules/permission'
+import getters from './getters'
+
+Vue.use(Vuex)
+
+const store = new Vuex.Store({
+ modules: {
+ app,
+ user,
+ tagsView,
+ permission
+ },
+ getters
+})
+
+export default store
diff --git a/src/store/modules/app.js b/src/store/modules/app.js
new file mode 100644
index 00000000..f4872415
--- /dev/null
+++ b/src/store/modules/app.js
@@ -0,0 +1,43 @@
+import Cookies from 'js-cookie'
+
+const app = {
+ state: {
+ sidebar: {
+ opened: !+Cookies.get('sidebarStatus'),
+ withoutAnimation: false
+ },
+ device: 'desktop'
+ },
+ mutations: {
+ TOGGLE_SIDEBAR: state => {
+ if (state.sidebar.opened) {
+ Cookies.set('sidebarStatus', 1)
+ } else {
+ Cookies.set('sidebarStatus', 0)
+ }
+ state.sidebar.opened = !state.sidebar.opened
+ state.sidebar.withoutAnimation = false
+ },
+ CLOSE_SIDEBAR: (state, withoutAnimation) => {
+ Cookies.set('sidebarStatus', 1)
+ state.sidebar.opened = false
+ state.sidebar.withoutAnimation = withoutAnimation
+ },
+ TOGGLE_DEVICE: (state, device) => {
+ state.device = device
+ }
+ },
+ actions: {
+ ToggleSideBar: ({ commit }) => {
+ commit('TOGGLE_SIDEBAR')
+ },
+ CloseSideBar({ commit }, { withoutAnimation }) {
+ commit('CLOSE_SIDEBAR', withoutAnimation)
+ },
+ ToggleDevice({ commit }, device) {
+ commit('TOGGLE_DEVICE', device)
+ }
+ }
+}
+
+export default app
diff --git a/src/store/modules/permission.js b/src/store/modules/permission.js
new file mode 100644
index 00000000..faa96a72
--- /dev/null
+++ b/src/store/modules/permission.js
@@ -0,0 +1,25 @@
+import { constantRouterMap } from '@/router'
+
+const permission = {
+ state: {
+ routers: constantRouterMap,
+ addRouters: []
+ },
+ mutations: {
+ SET_ROUTERS: (state, routers) => {
+ state.addRouters = routers
+ state.routers = constantRouterMap.concat(routers)
+ }
+ },
+ actions: {
+ GenerateRoutes({ commit }, data) {
+ return new Promise(resolve => {
+ const accessedRouters = data
+ commit('SET_ROUTERS', accessedRouters)
+ resolve()
+ })
+ }
+ }
+}
+
+export default permission
diff --git a/src/store/modules/tagsView.js b/src/store/modules/tagsView.js
new file mode 100644
index 00000000..273d33bd
--- /dev/null
+++ b/src/store/modules/tagsView.js
@@ -0,0 +1,78 @@
+const tagsView = {
+ state: {
+ visitedViews: [],
+ cachedViews: []
+ },
+ mutations: {
+ ADD_VISITED_VIEWS: (state, view) => {
+ if (state.visitedViews.some(v => v.path === view.path)) return
+ state.visitedViews.push({
+ name: view.name,
+ path: view.path,
+ title: view.meta.title || 'no-name'
+ })
+ if (!view.meta.noCache) {
+ state.cachedViews.push(view.name)
+ }
+ },
+ DEL_VISITED_VIEWS: (state, view) => {
+ for (const [i, v] of state.visitedViews.entries()) {
+ if (v.path === view.path) {
+ state.visitedViews.splice(i, 1)
+ break
+ }
+ }
+ for (const i of state.cachedViews) {
+ if (i === view.name) {
+ const index = state.cachedViews.indexOf(i)
+ state.cachedViews.splice(index, 1)
+ break
+ }
+ }
+ },
+ DEL_OTHERS_VIEWS: (state, view) => {
+ for (const [i, v] of state.visitedViews.entries()) {
+ if (v.path === view.path) {
+ state.visitedViews = state.visitedViews.slice(i, i + 1)
+ break
+ }
+ }
+ for (const i of state.cachedViews) {
+ if (i === view.name) {
+ const index = state.cachedViews.indexOf(i)
+ state.cachedViews = state.cachedViews.slice(index, i + 1)
+ break
+ }
+ }
+ },
+ DEL_ALL_VIEWS: (state) => {
+ state.visitedViews = []
+ state.cachedViews = []
+ }
+ },
+ actions: {
+ addVisitedViews({ commit }, view) {
+ commit('ADD_VISITED_VIEWS', view)
+ },
+ delVisitedViews({ commit, state }, view) {
+ return new Promise((resolve) => {
+ commit('DEL_VISITED_VIEWS', view)
+ resolve([...state.visitedViews])
+ })
+ },
+ delOthersViews({ commit, state }, view) {
+ return new Promise((resolve) => {
+ commit('DEL_OTHERS_VIEWS', view)
+ resolve([...state.visitedViews])
+ })
+ },
+ delAllViews({ commit, state }) {
+ return new Promise((resolve) => {
+ commit('DEL_ALL_VIEWS')
+ resolve([...state.visitedViews])
+ })
+ }
+ }
+}
+
+export default tagsView
diff --git a/src/store/modules/user.js b/src/store/modules/user.js
new file mode 100644
index 00000000..7a99b4f0
--- /dev/null
+++ b/src/store/modules/user.js
@@ -0,0 +1,67 @@
+import { login, getInfo } from '@/api/login'
+import { getToken, setToken, removeToken } from '@/utils/auth'
+import { Message } from 'element-ui'
+const user = {
+ state: {
+ token: getToken(),
+ name: '',
+ roles: []
+ },
+
+ mutations: {
+ SET_TOKEN: (state, token) => {
+ state.token = token
+ },
+ SET_NAME: (state, name) => {
+ state.name = name
+ },
+ SET_ROLES: (state, roles) => {
+ state.roles = roles
+ }
+ },
+
+ actions: {
+ // 登录
+ Login({ commit }, userInfo) {
+ const username = userInfo.username.trim()
+ return new Promise((resolve, reject) => {
+ login(username, userInfo.password).then(response => {
+ const data = response.data
+ if (data.length === 0 || data.result === '0') {
+ Message.error('账号或密码错误,请重新登录')
+ this.$router.push({ path: '/login' })
+ } else {
+ setToken(data[0].角色编号)
+ commit('SET_TOKEN', data[0].角色编号)
+ resolve()
+ }
+ }).catch(error => {
+ reject(error)
+ })
+ })
+ },
+
+ // 获取用户信息
+ GetInfo({ commit, state }) {
+ return new Promise((resolve, reject) => {
+ getInfo(state.token).then(response => {
+ commit('SET_ROLES', 'admin')
+ commit('SET_NAME', 'admin')
+ resolve(response)
+ }).catch(error => {
+ reject(error)
+ })
+ })
+ },
+ // 登出
+ FedLogOut({ commit }) {
+ return new Promise(resolve => {
+ commit('SET_TOKEN', '')
+ removeToken()
+ resolve()
+ })
+ }
+ }
+}
+
+export default user
diff --git a/src/styles/element-ui.scss b/src/styles/element-ui.scss
new file mode 100644
index 00000000..ef7bb5da
--- /dev/null
+++ b/src/styles/element-ui.scss
@@ -0,0 +1,29 @@
+ //to reset element-ui default css
+.el-upload {
+ input[type="file"] {
+ display: none !important;
+ }
+}
+
+.el-upload__input {
+ display: none;
+}
+
+//暂时性解决diolag 问题 https://github.com/ElemeFE/element/issues/2461
+.el-dialog {
+ transform: none;
+ left: 0;
+ position: relative;
+ margin: 0 auto;
+}
+
+//element ui upload
+.upload-container {
+ .el-upload {
+ width: 100%;
+ .el-upload-dragger {
+ width: 100%;
+ height: 200px;
+ }
+ }
+}
diff --git a/src/styles/index.scss b/src/styles/index.scss
new file mode 100644
index 00000000..a40b40fc
--- /dev/null
+++ b/src/styles/index.scss
@@ -0,0 +1,110 @@
+@import './variables.scss';
+@import './mixin.scss';
+@import './transition.scss';
+@import './element-ui.scss';
+@import './sidebar.scss';
+
+body {
+ height: 100%;
+ -moz-osx-font-smoothing: grayscale;
+ -webkit-font-smoothing: antialiased;
+ text-rendering: optimizeLegibility;
+ font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, sans-serif;
+}
+
+label {
+ font-weight: 700;
+}
+
+html {
+ height: 100%;
+ box-sizing: border-box;
+}
+
+#app{
+ height: 100%;
+ .sidebar-container{
+ background-color: #2e296a;
+ }
+}
+
+*,
+*:before,
+*:after {
+ box-sizing: inherit;
+}
+
+a,
+a:focus,
+a:hover {
+ cursor: pointer;
+ color: inherit;
+ outline: none;
+ text-decoration: none;
+}
+
+div:focus{
+ outline: none;
+ }
+
+a:focus,
+a:active {
+ outline: none;
+}
+
+a,
+a:focus,
+a:hover {
+ cursor: pointer;
+ color: inherit;
+ text-decoration: none;
+}
+
+.clearfix {
+ &:after {
+ visibility: hidden;
+ display: block;
+ font-size: 0;
+ content: " ";
+ clear: both;
+ height: 0;
+ }
+}
+
+//main-container全局样式
+.app-main{
+ min-height: 100%
+}
+
+.app-container {
+ padding: 20px;
+}
+
+.navbar{
+ background-color: #fff!important;
+}
+.submenu-title-noDropdown{
+ background-color: #2e296a!important;
+ color: #cccccc!important;
+}
+.el-menu-item.is-active{
+ color:#409EFF!important;
+}
+el-form-item__content{
+ background-color: #3d3780!important;
+}
+.el-menu-item:hover{
+ background-color: #9892E4 !important;
+}
+.el-menu-item, .el-submenu__title{
+ line-height: 42px;
+ height: 42px;
+ background-color: #2e296a!important;
+}
+.el-scrollbar{
+ height: 100%;
+}
+
+.el-submenu__title{
+ background-color: #2e296a!important;
+}
diff --git a/src/styles/mixin.scss b/src/styles/mixin.scss
new file mode 100644
index 00000000..601d7a03
--- /dev/null
+++ b/src/styles/mixin.scss
@@ -0,0 +1,27 @@
+@mixin clearfix {
+ &:after {
+ content: "";
+ display: table;
+ clear: both;
+ }
+}
+
+@mixin scrollBar {
+ &::-webkit-scrollbar-track-piece {
+ background: #d3dce6;
+ }
+ &::-webkit-scrollbar {
+ width: 6px;
+ }
+ &::-webkit-scrollbar-thumb {
+ background: #99a9bf;
+ border-radius: 20px;
+ }
+}
+
+@mixin relative {
+ position: relative;
+ width: 100%;
+ height: 100%;
+}
+
diff --git a/src/styles/sidebar.scss b/src/styles/sidebar.scss
new file mode 100644
index 00000000..4d2b09c1
--- /dev/null
+++ b/src/styles/sidebar.scss
@@ -0,0 +1,123 @@
+#app {
+ // 主体区域
+ .main-container {
+ min-height: 100%;
+ transition: margin-left .28s;
+ margin-left: 200px;
+ position: relative;
+ }
+ // 侧边栏
+ .sidebar-container {
+ transition: width 0.28s;
+ width: 200px !important;
+ height: 100%;
+ position: fixed;
+ font-size: 0px;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1001;
+ overflow: hidden;
+ //reset element-ui css
+ .horizontal-collapse-transition {
+ transition: 0s width ease-in-out, 0s padding-left ease-in-out, 0s padding-right ease-in-out;
+ }
+ .el-scrollbar__bar.is-vertical{
+ right: 0px;
+ }
+ .scrollbar-wrapper {
+ overflow-x: hidden!important;
+ .el-scrollbar__view {
+ height: 100%;
+ }
+ }
+ .is-horizontal {
+ display: none;
+ }
+ a {
+ display: inline-block;
+ width: 100%;
+ overflow: hidden;
+ }
+ .svg-icon {
+ margin-right: 16px;
+ }
+ .el-menu {
+ border: none;
+ height: 100%;
+ background: #2e296a!important;
+ width: 100% !important;
+ }
+ }
+ .hideSidebar {
+ .sidebar-container {
+ width: 36px !important;
+ }
+ .main-container {
+ margin-left: 36px;
+ }
+ .submenu-title-noDropdown {
+ padding-left: 10px !important;
+ position: relative;
+ .el-tooltip {
+ padding: 0 10px !important;
+ }
+ }
+ .el-submenu {
+ overflow: hidden;
+ &>.el-submenu__title {
+ padding-left: 10px !important;
+ .el-submenu__icon-arrow {
+ display: none;
+ }
+ }
+ }
+ .el-menu--collapse {
+ .el-submenu {
+ &>.el-submenu__title {
+ &>span {
+ height: 0;
+ width: 0;
+ overflow: hidden;
+ visibility: hidden;
+ display: inline-block;
+ }
+ }
+ }
+ }
+ }
+ .sidebar-container .nest-menu .el-submenu>.el-submenu__title,
+ .sidebar-container .el-submenu .el-menu-item {
+ min-width: 200px !important;
+ background-color: $subMenuBg !important;
+ &:hover {
+ background-color: $menuHover !important;
+ }
+ }
+ .el-menu--collapse .el-menu .el-submenu {
+ min-width: 180px !important;
+ }
+
+ //适配移动端
+ .mobile {
+ .main-container {
+ margin-left: 0px;
+ }
+ .sidebar-container {
+ transition: transform .28s;
+ width: 180px !important;
+ }
+ &.hideSidebar {
+ .sidebar-container {
+ transition-duration: 0.3s;
+ transform: translate3d(-180px, 0, 0);
+ }
+ }
+ }
+ .withoutAnimation {
+ .main-container,
+ .sidebar-container {
+ transition: none;
+ }
+ }
+}
diff --git a/src/styles/transition.scss b/src/styles/transition.scss
new file mode 100644
index 00000000..8dd9b04a
--- /dev/null
+++ b/src/styles/transition.scss
@@ -0,0 +1,46 @@
+//globl transition css
+
+/*fade*/
+.fade-enter-active,
+.fade-leave-active {
+ transition: opacity 0.28s;
+}
+
+.fade-enter,
+.fade-leave-active {
+ opacity: 0;
+}
+
+/*fade-transform*/
+.fade-transform-leave-active,
+.fade-transform-enter-active {
+ transition: all .5s;
+}
+.fade-transform-enter {
+ opacity: 0;
+ transform: translateX(-30px);
+}
+.fade-transform-leave-to {
+ opacity: 0;
+ transform: translateX(30px);
+}
+
+/*fade*/
+.breadcrumb-enter-active,
+.breadcrumb-leave-active {
+ transition: all .5s;
+}
+
+.breadcrumb-enter,
+.breadcrumb-leave-active {
+ opacity: 0;
+ transform: translateX(20px);
+}
+
+.breadcrumb-move {
+ transition: all .5s;
+}
+
+.breadcrumb-leave-active {
+ position: absolute;
+}
diff --git a/src/styles/variables.scss b/src/styles/variables.scss
new file mode 100644
index 00000000..6bac2213
--- /dev/null
+++ b/src/styles/variables.scss
@@ -0,0 +1,4 @@
+//sidebar
+$menuBg:#304156;
+$subMenuBg:#3d3780;
+$menuHover:#9892E4;
diff --git a/src/utils/auth.js b/src/utils/auth.js
new file mode 100644
index 00000000..08a43d6e
--- /dev/null
+++ b/src/utils/auth.js
@@ -0,0 +1,15 @@
+import Cookies from 'js-cookie'
+
+const TokenKey = 'Admin-Token'
+
+export function getToken() {
+ return Cookies.get(TokenKey)
+}
+
+export function setToken(token) {
+ return Cookies.set(TokenKey, token)
+}
+
+export function removeToken() {
+ return Cookies.remove(TokenKey)
+}
diff --git a/src/utils/curd.js b/src/utils/curd.js
new file mode 100644
index 00000000..3cca2d30
--- /dev/null
+++ b/src/utils/curd.js
@@ -0,0 +1,249 @@
+/**
+Created by hedekun
+20180727
+ */
+import { type } from './tool' // type判断传入值的类型,比typeof更详细
+export default {
+ install(Vue) {
+ // 用于打开增加框,方法能重置表单,并使表单内容回到初始化状态。
+ // 传入参数
+ // 1)表单名称,字符串形式如'form',必须
+ // 2) 打开表单后需要做什么,可以传数组[this.dialogvisiale = false, fetchData],也可以传回调函数function() { this.dialogvisiale = false } 可选
+ Vue.prototype.addForm = function(form, callback) {
+ if (type(form) === 'string') {
+ if (this.$refs[form]) { // 判断是否需要重置表单,如果需要重置表单
+ this.$refs[form].resetFields()
+ }
+ if (type(callback) === 'array') { // 判断传入是否为数组,如果是遍历数组,遇到函数将函数体变成函数执行,其余正常执行
+ if (callback && callback.length !== 0) {
+ for (let i = 0, len = callback.length; i < len; i++) {
+ typeof callback[i] === 'function' ? callback[i]() : callback[i]
+ }
+ }
+ } else if (type(callback) === 'function') { // 判断传入是否为回调函数
+ callback.call(this) // 回调函数执行,需将this改为该组件
+ }
+ this[form] = Object.assign(this.$data[form], this.$options.data()[form]) // 将表单中的数据变为初始状态。其中,this.$options.data是所有初始化的数据,this.$data是目前的数据
+ } else {
+ console.error('传入参数错误')
+ }
+ }
+ // 用于打开编辑框,方法能自动传入行的数据到对应的表单中,并将表单中所有纯数字转成int。前提是行的名称需跟表单名称一样。
+ // 传入参数
+ // 1) 编辑这一行的row
+ // 2)表单名称,字符串形式如'form'
+ // 3) 打开编辑需要做什么,同样是[] 和 function
+ Vue.prototype.editForm = function(row, form, callback) {
+ if (type(row) === 'object' && type(form) === 'string') {
+ if (this.$refs[form]) { // 判断是否需要重置表单
+ this.$refs[form].resetFields()
+ }
+ const isNum = /^[0-9]+$/ // 正则表达式,是否全都为纯数字
+ for (const prop in this[form]) { // 遍历表单,当表单和row中属性名一样时,表单row中的属性赋值给form
+ isNum.lastIndex = 0 // 正则每一次匹配后的索引归0,否则循环会造成问题
+ isNum.exec(row[prop]) ? this[form][prop] = parseInt(row[prop]) : this[form][prop] = row[prop] // 通过正则匹配数字,当匹配成功后,将字符串转为int。当然你也不用担心空转成NaN,因为''匹配通不过!
+ }
+ if (type(callback) === 'array') { // 这部分处理与打开表单相同
+ if (callback && callback.length !== 0) {
+ for (let i = 0, len = callback.length; i < len; i++) {
+ typeof callback[i] === 'function' ? callback[i]() : callback[i]
+ }
+ }
+ } else if (type(callback) === 'function') {
+ callback.call(this)
+ }
+ } else {
+ console.error('传入参数错误')
+ }
+ }
+ // 用于获取下拉框中的数据
+ // 传入参数
+ // 1)请求数据函数引用如getXXX,必须
+ // 2)数组的实行名称['XXXX名称', 'XXXX代码'],必须
+ // 3)需要用哪个数组接收这个结果,字符串形式。如在组件也需要用this.select,传入值就为'select',必须
+ // 4) 请求函数传入的参数,可选
+ Vue.prototype.getSelect = function(requestData, select, carrier, param) {
+ if (type(requestData) === 'function' && type(select) === 'array' && type(carrier) === 'string') {
+ if (type(param) === 'array') {
+ requestData(...param).then(response => { // 这个方法没什么难度,不注释了
+ this[carrier] = []
+ for (let i = 0, len = response.data.length; i < len; i++) {
+ if (select.length === 2) {
+ this[carrier].push({
+ label: response.data[i][select[0]],
+ value: response.data[i][select[1]]
+ })
+ } else {
+ this[carrier].push({
+ value: response.data[i][select[0]]
+ })
+ }
+ }
+ if (this[carrier].length !== 0) {
+ this[carrier] = response.data[0][select[0]]
+ }
+ })
+ } else {
+ requestData(param).then(response => { // 这个方法没什么难度,不注释了
+ this[carrier] = []
+ for (let i = 0, len = response.data.length; i < len; i++) {
+ if (select.length === 2) {
+ this[carrier].push({
+ label: response.data[i][select[0]],
+ value: response.data[i][select[1]]
+ })
+ } else {
+ this[carrier].push({
+ value: response.data[i][select[0]]
+ })
+ }
+ }
+ })
+ }
+ } else {
+ console.error('参数传递错误')
+ }
+ }
+ // 普通获取数据
+ // 传入参数
+ // 1) 请求数据函数引用如getXXX,必须
+ // 2) 需要用哪个数组接收这个结果,字符串形式。如在组件也需要用this.select,传入值就为'select',必须
+ // 3) 请求函数传入的参数,可选
+ Vue.prototype.getData = function(requestData, carrier, param) {
+ if (type(requestData) === 'function' && type(carrier) === 'string') {
+ if (type(param) === 'undefined') {
+ requestData(param).then(response => {
+ const data = response.data
+ this[carrier] = data
+ })
+ } else {
+ let Param = []
+ if (type(param) !== 'array') {
+ Param.push(param)
+ } else {
+ Param = param
+ }
+ requestData(...Param).then(response => {
+ const data = response.data
+ this[carrier] = data
+ })
+ }
+ } else {
+ console.error('传入参数错误')
+ }
+ }
+ // 获取表格数据,将表格中的年月日时分秒,转换成年月日
+ // 传入参数
+ // 1)请求数据函数引用如getXXX,必须
+ // 2)请求的参数,可选
+ // 3)接受值,数组,一般是['table','total','loading']顺序不能变
+ Vue.prototype.getTable = function(requestData, param, e) {
+ requestData(...param).then(response => {
+ const data = response.data.rows ? response.data.rows : response.data
+ this[e[0]] = []
+ this[e[1]] = 0
+ if (data && data.length > 0) {
+ const isTime = /^\d{4}([-\/.])\d{1,2}\1\d{1,2}/ // 判断是否是时间的正则表达式
+ for (let i = 0, len = data.length; i < len; i++) { // 循环得到每一条数据
+ for (const prop in data[i]) { // 循环每一条的每一项
+ isTime.lastIndex = 0 // 正则每一次指针复位
+ if (isTime.test(data[i][prop])) { // 判断是否是时间,如果是切割
+ data[i][prop] = data[i][prop].split(' ')[0]
+ }
+ }
+ }
+ this[e[0]] = data
+ this[e[1]] = parseInt(response.data.total)
+ } else {
+ this[e[0]] = []
+ // console.log('暂无数据')
+ }
+ }).then(() => {
+ if (this[e[2]]) {
+ this[e[2]] = false
+ }
+ })
+ }
+ // 添加表格数据
+ // 传入参数
+ // 1) 请求数据函数引用如getXXX,必须
+ // 2) 请求的参数,可选
+ // 3) 验证的表单名称,必须
+ // 4) 回调函数,必须
+ Vue.prototype.addTable = function(requestData, param, form, callback) {
+ if (type(callback) === 'function' && type(requestData) === 'function' && type(form) === 'string') {
+ this.$refs[form].validate((valid) => {
+ if (valid) {
+ requestData(...param).then(response => {
+ if (response.data[0].result === '1') {
+ this.$message.success('增加成功')
+ callback.call(this)
+ } else { this.$message.error('增加失败') }
+ })
+ } else {
+ console.error('error submit!!')
+ return false
+ }
+ })
+ } else {
+ console.error('参数传递错误')
+ }
+ }
+ // 编辑表格数据
+ // 传入参数
+ // 1) 请求数据函数引用如getXXX,必须
+ // 2) 请求的参数,可选
+ // 3) 验证的表单名称,必须
+ // 4) 回调函数,必须
+ Vue.prototype.editTable = function(requestData, param, form, callback) {
+ if (type(callback) === 'function' && type(requestData) === 'function' && type(form) === 'string') {
+ this.$refs[form].validate((valid) => {
+ if (valid) {
+ requestData(...param).then(response => {
+ if (response.data[0].result === '1') {
+ this.$message.success('修改成功')
+ callback.call(this) // 回调函数修正this指向组件本身
+ } else { this.$message.error('修改失败') }
+ })
+ } else {
+ console.error('error submit!!')
+ return false
+ }
+ })
+ } else {
+ console.error('参数传递错误')
+ }
+ }
+ // 删除表格数据
+ // 传入参数
+ // 1) 请求数据函数引用如getXXX,必须
+ // 2) id传入删除条件,必须
+ // 3) 回调函数,必须
+ Vue.prototype.deleteRow = function(requestData, id, callback) {
+ if (type(callback) === 'function' && type(requestData) === 'function') {
+ if (this.tableData && this.tableData.length === 1 && this.pageCurrent > 1) { // 判断删除的是否是最后一页最后一行,如果是且不是第一页,页数减一
+ this.pageCurrent--
+ }
+ this.$confirm('此操作将永久删除该行, 是否继续?', '提示', {
+ confirmButtonText: '确定',
+ cancelButtonText: '取消',
+ type: 'warning'
+ }).then(() => {
+ requestData(id).then(response => {
+ if (response.data[0].result === '1') {
+ this.$message.success('删除成功')
+ callback.call(this) // 回调函数修正this指向组件本身
+ } else { this.$message.error('删除失败') }
+ })
+ }).catch(() => {
+ this.$message({
+ type: 'info',
+ message: '已取消删除'
+ })
+ })
+ } else {
+ console.error('参数传递错误')
+ }
+ }
+ }
+}
diff --git a/src/utils/index.js b/src/utils/index.js
new file mode 100644
index 00000000..e97a8bea
--- /dev/null
+++ b/src/utils/index.js
@@ -0,0 +1,70 @@
+/**
+ * Created by jiachenpan on 16/11/18.
+ */
+
+export function parseTime(time, cFormat) {
+ if (arguments.length === 0) {
+ return null
+ }
+ const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'
+ let date
+ if (typeof time === 'object') {
+ date = time
+ } else {
+ if (('' + time).length === 10) time = parseInt(time) * 1000
+ date = new Date(time)
+ }
+ const formatObj = {
+ y: date.getFullYear(),
+ m: date.getMonth() + 1,
+ d: date.getDate(),
+ h: date.getHours(),
+ i: date.getMinutes(),
+ s: date.getSeconds(),
+ a: date.getDay()
+ }
+ const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
+ let value = formatObj[key]
+ // Note: getDay() returns 0 on Sunday
+ if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value ] }
+ if (result.length > 0 && value < 10) {
+ value = '0' + value
+ }
+ return value || 0
+ })
+ return time_str
+}
+
+export function formatTime(time, option) {
+ time = +time * 1000
+ const d = new Date(time)
+ const now = Date.now()
+
+ const diff = (now - d) / 1000
+
+ if (diff < 30) {
+ return '刚刚'
+ } else if (diff < 3600) {
+ // less 1 hour
+ return Math.ceil(diff / 60) + '分钟前'
+ } else if (diff < 3600 * 24) {
+ return Math.ceil(diff / 3600) + '小时前'
+ } else if (diff < 3600 * 24 * 2) {
+ return '1天前'
+ }
+ if (option) {
+ return parseTime(time, option)
+ } else {
+ return (
+ d.getMonth() +
+ 1 +
+ '月' +
+ d.getDate() +
+ '日' +
+ d.getHours() +
+ '时' +
+ d.getMinutes() +
+ '分'
+ )
+ }
+}
diff --git a/src/utils/request.js b/src/utils/request.js
new file mode 100644
index 00000000..13bfc172
--- /dev/null
+++ b/src/utils/request.js
@@ -0,0 +1,75 @@
+import axios from 'axios'
+// import { Message, MessageBox } from 'element-ui'
+// import store from '../store'
+// import { getToken } from '@/utils/auth'
+
+// 创建axios实例
+export const upload = `http://123.56.95.229:8411/submit/uploadFile.ashx`
+export const download = `http://123.56.95.229:8411/submit/downloadFile.ashx`
+const service = axios.create({
+ baseURL: `http://localhost:8411/submit/MESCommonBase.ashx`,
+ timeout: 1500000 // 请求超时时间
+})
+
+// request拦截器
+// service.interceptors.request.use(
+// config => {
+// if (store.getters.token) {
+// config.headers['X-Token'] = getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
+// }
+// return config
+// },
+// error => {
+// // Do something with request error
+// console.log(error) // for debug
+// Promise.reject(error)
+// }
+// )
+
+// // response 拦截器
+// service.interceptors.response.use(
+// response => {
+// /**
+// * code为非20000是抛错 可结合自己业务进行修改
+// */
+// const res = response.data
+// if (res.code !== 20000) {
+// Message({
+// message: res.message,
+// type: 'error',
+// duration: 5 * 1000
+// })
+//
+// // 50008:非法的token; 50012:其他客户端登录了; 50014:Token 过期了;
+// if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
+// MessageBox.confirm(
+// '你已被登出,可以取消继续留在该页面,或者重新登录',
+// '确定登出',
+// {
+// confirmButtonText: '重新登录',
+// cancelButtonText: '取消',
+// type: 'warning'
+// }
+// ).then(() => {
+// store.dispatch('FedLogOut').then(() => {
+// location.reload() // 为了重新实例化vue-router对象 避免bug
+// })
+// })
+// }
+// return Promise.reject('error')
+// } else {
+// return response.data
+// }
+// },
+// error => {
+// console.log('err' + error) // for debug
+// Message({
+// message: error.message,
+// type: 'error',
+// duration: 5 * 1000
+// })
+// return Promise.reject(error)
+// }
+// )
+
+export default service
diff --git a/src/utils/tool.js b/src/utils/tool.js
new file mode 100644
index 00000000..e027fe25
--- /dev/null
+++ b/src/utils/tool.js
@@ -0,0 +1,101 @@
+// 数组去重
+export function arrayUnique(arr) {
+ arr.filter((element, index, arr) => {
+ return arr.indexOf(element) === index
+ })
+}
+
+// 数组去重,数组中值是对象
+export function arrayUnique2(arr, name) {
+ const hash = {}
+ return arr.reduce(function(item, next) {
+ hash[next[name]] ? '' : hash[next[name]] = true && item.push(next)
+ return item
+ }, [])
+}
+
+// 时间转时间戳
+export function timeToStamp(time) {
+ const date = new Date(time)
+ return date.getTime()
+}
+
+// 数组的深度拷贝
+export function arrDeepCopy(arr) {
+ const newArr = []
+ for (const prop in arr) newArr[prop] = typeof arr[prop] === 'object' ? arrDeepCopy(arr[prop]) : arr[prop]
+ return newArr
+}
+
+// 对象的深度拷贝
+export function objDeepCopy(obj) {
+ const newObj = {}
+ for (const prop in obj) newObj[prop] = typeof obj[prop] === 'object' ? objDeepCopy(obj[prop]) : obj[prop]
+ return newObj
+}
+
+function zeroFill(i) {
+ if (i >= 0 && i <= 9) {
+ return '0' + i
+ } else {
+ return i
+ }
+}
+// 获取当前时间
+export function getNowTime() {
+ const date = new Date()
+ const month = zeroFill(date.getMonth() + 1)
+ const day = zeroFill(date.getDate())
+ const hour = zeroFill(date.getHours())
+ const minute = zeroFill(date.getMinutes())
+ const second = zeroFill(date.getSeconds())
+ const time = date.getFullYear() + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second
+ return time
+}
+
+// 判断类型
+export function type(target) {
+ const ret = typeof (target)
+ const template = {
+ '[object Array]': 'array',
+ '[object Object]': 'object',
+ '[object String]': 'string - object',
+ '[object Number]': 'Number - object',
+ '[object Boolean]': 'Boolean - object'
+ }
+ if (target === null) {
+ return 'null'
+ }
+ if (ret === 'object') {
+ const str = Object.prototype.toString.call(target)
+ return template[str]
+ } else {
+ return ret
+ }
+}
+
+export function SectionToChinese(section) {
+ const chnNumChar = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九']
+ const chnUnitChar = ['', '十', '百', '千']
+ let strIns = ''
+ let chnStr = ''
+ let unitPos = 0
+ let zero = true
+ while (section > 0) {
+ const v = section % 10
+ if (v === 0) {
+ if (!zero) {
+ zero = true
+ chnStr = chnNumChar[v] + chnStr
+ }
+ } else {
+ zero = false
+ strIns = chnNumChar[v]
+ strIns += chnUnitChar[unitPos]
+ chnStr = strIns + chnStr
+ }
+ unitPos++
+ section = Math.floor(section / 10)
+ }
+ return chnStr
+}
diff --git a/src/utils/validate.js b/src/utils/validate.js
new file mode 100644
index 00000000..c5a87686
--- /dev/null
+++ b/src/utils/validate.js
@@ -0,0 +1,32 @@
+/**
+ * Created by jiachenpan on 16/11/18.
+ */
+
+export function isvalidUsername(str) {
+ const user = /^[0-9]{4,5}$/
+ return user.test(str)
+}
+
+/* 合法uri*/
+export function validateURL(textval) {
+ const urlregex = /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/
+ return urlregex.test(textval)
+}
+
+/* 小写字母*/
+export function validateLowerCase(str) {
+ const reg = /^[a-z]+$/
+ return reg.test(str)
+}
+
+/* 大写字母*/
+export function validateUpperCase(str) {
+ const reg = /^[A-Z]+$/
+ return reg.test(str)
+}
+
+/* 大小写字母*/
+export function validatAlphabets(str) {
+ const reg = /^[A-Za-z]+$/
+ return reg.test(str)
+}
diff --git a/src/vendor/Blob.js b/src/vendor/Blob.js
new file mode 100644
index 00000000..989403ba
--- /dev/null
+++ b/src/vendor/Blob.js
@@ -0,0 +1,179 @@
+/* eslint-disable */
+/* Blob.js
+ * A Blob implementation.
+ * 2014-05-27
+ *
+ * By Eli Grey, http://eligrey.com
+ * By Devin Samarin, https://github.com/eboyjr
+ * License: X11/MIT
+ * See LICENSE.md
+ */
+
+/*global self, unescape */
+/*jslint bitwise: true, regexp: true, confusion: true, es5: true, vars: true, white: true,
+ plusplus: true */
+
+/*! @source http://purl.eligrey.com/github/Blob.js/blob/master/Blob.js */
+
+(function (view) {
+ "use strict";
+
+ view.URL = view.URL || view.webkitURL;
+
+ if (view.Blob && view.URL) {
+ try {
+ new Blob;
+ return;
+ } catch (e) {}
+ }
+
+ // Internally we use a BlobBuilder implementation to base Blob off of
+ // in order to support older browsers that only have BlobBuilder
+ var BlobBuilder = view.BlobBuilder || view.WebKitBlobBuilder || view.MozBlobBuilder || (function(view) {
+ var
+ get_class = function(object) {
+ return Object.prototype.toString.call(object).match(/^\[object\s(.*)\]$/)[1];
+ }
+ , FakeBlobBuilder = function BlobBuilder() {
+ this.data = [];
+ }
+ , FakeBlob = function Blob(data, type, encoding) {
+ this.data = data;
+ this.size = data.length;
+ this.type = type;
+ this.encoding = encoding;
+ }
+ , FBB_proto = FakeBlobBuilder.prototype
+ , FB_proto = FakeBlob.prototype
+ , FileReaderSync = view.FileReaderSync
+ , FileException = function(type) {
+ this.code = this[this.name = type];
+ }
+ , file_ex_codes = (
+ "NOT_FOUND_ERR SECURITY_ERR ABORT_ERR NOT_READABLE_ERR ENCODING_ERR "
+ + "NO_MODIFICATION_ALLOWED_ERR INVALID_STATE_ERR SYNTAX_ERR"
+ ).split(" ")
+ , file_ex_code = file_ex_codes.length
+ , real_URL = view.URL || view.webkitURL || view
+ , real_create_object_URL = real_URL.createObjectURL
+ , real_revoke_object_URL = real_URL.revokeObjectURL
+ , URL = real_URL
+ , btoa = view.btoa
+ , atob = view.atob
+
+ , ArrayBuffer = view.ArrayBuffer
+ , Uint8Array = view.Uint8Array
+ ;
+ FakeBlob.fake = FB_proto.fake = true;
+ while (file_ex_code--) {
+ FileException.prototype[file_ex_codes[file_ex_code]] = file_ex_code + 1;
+ }
+ if (!real_URL.createObjectURL) {
+ URL = view.URL = {};
+ }
+ URL.createObjectURL = function(blob) {
+ var
+ type = blob.type
+ , data_URI_header
+ ;
+ if (type === null) {
+ type = "application/octet-stream";
+ }
+ if (blob instanceof FakeBlob) {
+ data_URI_header = "data:" + type;
+ if (blob.encoding === "base64") {
+ return data_URI_header + ";base64," + blob.data;
+ } else if (blob.encoding === "URI") {
+ return data_URI_header + "," + decodeURIComponent(blob.data);
+ } if (btoa) {
+ return data_URI_header + ";base64," + btoa(blob.data);
+ } else {
+ return data_URI_header + "," + encodeURIComponent(blob.data);
+ }
+ } else if (real_create_object_URL) {
+ return real_create_object_URL.call(real_URL, blob);
+ }
+ };
+ URL.revokeObjectURL = function(object_URL) {
+ if (object_URL.substring(0, 5) !== "data:" && real_revoke_object_URL) {
+ real_revoke_object_URL.call(real_URL, object_URL);
+ }
+ };
+ FBB_proto.append = function(data/*, endings*/) {
+ var bb = this.data;
+ // decode data to a binary string
+ if (Uint8Array && (data instanceof ArrayBuffer || data instanceof Uint8Array)) {
+ var
+ str = ""
+ , buf = new Uint8Array(data)
+ , i = 0
+ , buf_len = buf.length
+ ;
+ for (; i < buf_len; i++) {
+ str += String.fromCharCode(buf[i]);
+ }
+ bb.push(str);
+ } else if (get_class(data) === "Blob" || get_class(data) === "File") {
+ if (FileReaderSync) {
+ var fr = new FileReaderSync;
+ bb.push(fr.readAsBinaryString(data));
+ } else {
+ // async FileReader won't work as BlobBuilder is sync
+ throw new FileException("NOT_READABLE_ERR");
+ }
+ } else if (data instanceof FakeBlob) {
+ if (data.encoding === "base64" && atob) {
+ bb.push(atob(data.data));
+ } else if (data.encoding === "URI") {
+ bb.push(decodeURIComponent(data.data));
+ } else if (data.encoding === "raw") {
+ bb.push(data.data);
+ }
+ } else {
+ if (typeof data !== "string") {
+ data += ""; // convert unsupported types to strings
+ }
+ // decode UTF-16 to binary string
+ bb.push(unescape(encodeURIComponent(data)));
+ }
+ };
+ FBB_proto.getBlob = function(type) {
+ if (!arguments.length) {
+ type = null;
+ }
+ return new FakeBlob(this.data.join(""), type, "raw");
+ };
+ FBB_proto.toString = function() {
+ return "[object BlobBuilder]";
+ };
+ FB_proto.slice = function(start, end, type) {
+ var args = arguments.length;
+ if (args < 3) {
+ type = null;
+ }
+ return new FakeBlob(
+ this.data.slice(start, args > 1 ? end : this.data.length)
+ , type
+ , this.encoding
+ );
+ };
+ FB_proto.toString = function() {
+ return "[object Blob]";
+ };
+ FB_proto.close = function() {
+ this.size = this.data.length = 0;
+ };
+ return FakeBlobBuilder;
+ }(view));
+
+ view.Blob = function Blob(blobParts, options) {
+ var type = options ? (options.type || "") : "";
+ var builder = new BlobBuilder();
+ if (blobParts) {
+ for (var i = 0, len = blobParts.length; i < len; i++) {
+ builder.append(blobParts[i]);
+ }
+ }
+ return builder.getBlob(type);
+ };
+}(typeof self !== "undefined" && self || typeof window !== "undefined" && window || this.content || this));
diff --git a/src/vendor/Export2Excel.js b/src/vendor/Export2Excel.js
new file mode 100644
index 00000000..8fad94f5
--- /dev/null
+++ b/src/vendor/Export2Excel.js
@@ -0,0 +1,141 @@
+/* eslint-disable */
+require('script-loader!file-saver');
+require('script-loader!@/vendor/Blob');
+require('script-loader!xlsx/dist/xlsx.core.min');
+function generateArray(table) {
+ var out = [];
+ var rows = table.querySelectorAll('tr');
+ var ranges = [];
+ for (var R = 0; R < rows.length; ++R) {
+ var outRow = [];
+ var row = rows[R];
+ var columns = row.querySelectorAll('td');
+ for (var C = 0; C < columns.length; ++C) {
+ var cell = columns[C];
+ var colspan = cell.getAttribute('colspan');
+ var rowspan = cell.getAttribute('rowspan');
+ var cellValue = cell.innerText;
+ if (cellValue !== "" && cellValue == +cellValue) cellValue = +cellValue;
+
+ //Skip ranges
+ ranges.forEach(function (range) {
+ if (R >= range.s.r && R <= range.e.r && outRow.length >= range.s.c && outRow.length <= range.e.c) {
+ for (var i = 0; i <= range.e.c - range.s.c; ++i) outRow.push(null);
+ }
+ });
+
+ //Handle Row Span
+ if (rowspan || colspan) {
+ rowspan = rowspan || 1;
+ colspan = colspan || 1;
+ ranges.push({s: {r: R, c: outRow.length}, e: {r: R + rowspan - 1, c: outRow.length + colspan - 1}});
+ }
+ ;
+
+ //Handle Value
+ outRow.push(cellValue !== "" ? cellValue : null);
+
+ //Handle Colspan
+ if (colspan) for (var k = 0; k < colspan - 1; ++k) outRow.push(null);
+ }
+ out.push(outRow);
+ }
+ return [out, ranges];
+};
+
+function datenum(v, date1904) {
+ if (date1904) v += 1462;
+ var epoch = Date.parse(v);
+ return (epoch - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000);
+}
+
+function sheet_from_array_of_arrays(data, opts) {
+ var ws = {};
+ var range = {s: {c: 10000000, r: 10000000}, e: {c: 0, r: 0}};
+ for (var R = 0; R != data.length; ++R) {
+ for (var C = 0; C != data[R].length; ++C) {
+ if (range.s.r > R) range.s.r = R;
+ if (range.s.c > C) range.s.c = C;
+ if (range.e.r < R) range.e.r = R;
+ if (range.e.c < C) range.e.c = C;
+ var cell = {v: data[R][C]};
+ if (cell.v == null) continue;
+ var cell_ref = XLSX.utils.encode_cell({c: C, r: R}); // here
+
+ if (typeof cell.v === 'number') cell.t = 'n';
+ else if (typeof cell.v === 'boolean') cell.t = 'b';
+ else if (cell.v instanceof Date) {
+ cell.t = 'n';
+ cell.z = XLSX.SSF._table[14];
+ cell.v = datenum(cell.v);
+ }
+ else cell.t = 's';
+
+ ws[cell_ref] = cell;
+ }
+ }
+ if (range.s.c < 10000000) ws['!ref'] = XLSX.utils.encode_range(range);
+ return ws;
+}
+
+function Workbook() {
+ if (!(this instanceof Workbook)) return new Workbook();
+ this.SheetNames = [];
+ this.Sheets = {};
+}
+
+function s2ab(s) {
+ var buf = new ArrayBuffer(s.length);
+ var view = new Uint8Array(buf);
+ for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
+ return buf;
+}
+
+export function export_table_to_excel(id) {
+ var theTable = document.getElementById(id);
+ console.log('a')
+ var oo = generateArray(theTable);
+ var ranges = oo[1];
+
+ /* original data */
+ var data = oo[0];
+ var ws_name = "SheetJS";
+ console.log(data);
+
+ var wb = new Workbook(), ws = sheet_from_array_of_arrays(data);
+
+ /* add ranges to worksheet */
+ // ws['!cols'] = ['apple', 'banan'];
+ ws['!merges'] = ranges;
+
+ /* add worksheet to workbook */
+ wb.SheetNames.push(ws_name);
+ wb.Sheets[ws_name] = ws;
+
+ var wbout = XLSX.write(wb, {bookType: 'xlsx', bookSST: false, type: 'binary'});
+
+ saveAs(new Blob([s2ab(wbout)], {type: "application/octet-stream"}), "test.xlsx")
+}
+
+function formatJson(jsonData) {
+ console.log(jsonData)
+}
+export function export_json_to_excel(th, jsonData, defaultTitle) {
+
+ /* original data */
+
+ var data = jsonData;
+ data.unshift(th);
+ var ws_name = "SheetJS";
+
+ var wb = new Workbook(), ws = sheet_from_array_of_arrays(data);
+
+
+ /* add worksheet to workbook */
+ wb.SheetNames.push(ws_name);
+ wb.Sheets[ws_name] = ws;
+
+ var wbout = XLSX.write(wb, {bookType: 'xlsx', bookSST: false, type: 'binary'});
+ var title = defaultTitle || '列表'
+ saveAs(new Blob([s2ab(wbout)], {type: "application/octet-stream"}), title + ".xlsx")
+}
diff --git a/src/vendor/Export2Excel1.js b/src/vendor/Export2Excel1.js
new file mode 100644
index 00000000..ab955047
--- /dev/null
+++ b/src/vendor/Export2Excel1.js
@@ -0,0 +1,1444 @@
+/* eslint-disable */
+require('script-loader!file-saver');
+require('script-loader!@/vendor/Blob');
+import XLSX from 'xlsx-style'
+
+function generateArray(table) {
+ var out = [];
+ var rows = table.querySelectorAll('tr');
+ var ranges = [];
+ for (var R = 0; R < rows.length; ++R) {
+ var outRow = [];
+ var row = rows[R];
+ var columns = row.querySelectorAll('td');
+ for (var C = 0; C < columns.length; ++C) {
+ var cell = columns[C];
+ var colspan = cell.getAttribute('colspan');
+ var rowspan = cell.getAttribute('rowspan');
+ var cellValue = cell.innerText;
+ if (cellValue !== "" && cellValue == +cellValue) cellValue = +cellValue;
+
+ //Skip ranges
+ ranges.forEach(function (range) {
+ if (R >= range.s.r && R <= range.e.r && outRow.length >= range.s.c && outRow.length <= range.e.c) {
+ for (var i = 0; i <= range.e.c - range.s.c; ++i) outRow.push(null);
+ }
+ });
+
+ //Handle Row Span
+ if (rowspan || colspan) {
+ rowspan = rowspan || 1;
+ colspan = colspan || 1;
+ ranges.push({s: {r: R, c: outRow.length}, e: {r: R + rowspan - 1, c: outRow.length + colspan - 1}});
+ }
+ ;
+
+ //Handle Value
+ outRow.push(cellValue !== "" ? cellValue : null);
+
+ //Handle Colspan
+ if (colspan) for (var k = 0; k < colspan - 1; ++k) outRow.push(null);
+ }
+ out.push(outRow);
+ }
+ return [out, ranges];
+};
+
+function datenum(v, date1904) {
+ if (date1904) v += 1462;
+ var epoch = Date.parse(v);
+ return (epoch - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000);
+}
+
+function sheet_from_array_of_arrays(data, opts) {
+ var ws = {};
+ var range = {s: {c: 10000000, r: 10000000}, e: {c: 0, r: 0}};
+ for (var R = 0; R != data.length; ++R) {
+ for (var C = 0; C != data[R].length; ++C) {
+ if (range.s.r > R) range.s.r = R;
+ if (range.s.c > C) range.s.c = C;
+ if (range.e.r < R) range.e.r = R;
+ if (range.e.c < C) range.e.c = C;
+ var cell = {v: data[R][C]};
+ if (cell.v == null) continue;
+ var cell_ref = XLSX.utils.encode_cell({c: C, r: R});
+
+ if (typeof cell.v === 'number') cell.t = 'n';
+ else if (typeof cell.v === 'boolean') cell.t = 'b';
+ else if (cell.v instanceof Date) {
+ cell.t = 'n';
+ cell.z = XLSX.SSF._table[14];
+ cell.v = datenum(cell.v);
+ }
+ else cell.t = 's';
+
+ ws[cell_ref] = cell;
+ }
+ }
+ if (range.s.c < 10000000) ws['!ref'] = XLSX.utils.encode_range(range);
+ return ws;
+}
+
+function Workbook() {
+ if (!(this instanceof Workbook)) return new Workbook();
+ this.SheetNames = [];
+ this.Sheets = {};
+}
+
+function s2ab(s) {
+ if (typeof ArrayBuffer !== 'undefined') {
+ var buf = new ArrayBuffer(s.length);
+ var view = new Uint8Array(buf);
+ for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
+ return buf;
+ } else {
+ var buf = new Array(s.length);
+ for (var i = 0; i != s.length; ++i) buf[i] = s.charCodeAt(i) & 0xFF;
+ return buf;
+ }
+}
+
+function format2Sheet(e, r, n, o) {
+ o = o || Object.keys(e[0]),
+ r = r || 0,
+ n = n || 0;
+ var a = {};
+ return e.map(function(e, a) {
+ return o.map(function(o, i) {
+ return Object.assign({},
+ {
+ v: e[o],
+ position: (i + r > 25 ? t.getCharCol(i + r) : String.fromCharCode(65 + (i + r))) + (a + 1 + n)
+ })
+ })
+ }).reduce(function(e, r) {
+ return e.concat(r)
+ }).forEach(function(e, r) {
+ return a[e.position] = {
+ v: e.v
+ }
+ }),
+ a
+}
+function getCharCol(n) {
+ let temCol = '',
+ s = '',
+ m = 0
+ while (n > 0) {
+ m = n % 26 + 1
+ s = String.fromCharCode(m + 64) + s
+ n = (n - m) / 26
+ }
+ return s
+}
+export function export_table_to_excel(id) {
+ var theTable = document.getElementById(id);
+ var oo = generateArray(theTable);
+ var ranges = oo[1];
+
+ /* original data */
+ var data = oo[0];
+ var ws_name = "SheetJS";
+
+ var wb = new Workbook(), ws = sheet_from_array_of_arrays(data);
+
+ /* add ranges to worksheet */
+ // ws['!cols'] = ['apple', 'banan'];
+ ws['!merges'] = ranges;
+
+ /* add worksheet to workbook */
+ wb.SheetNames.push(ws_name);
+ wb.Sheets[ws_name] = ws;
+
+ var wbout = XLSX.write(wb, {bookType: 'xlsx', bookSST: false, type: 'binary'});
+
+ saveAs(new Blob([s2ab(wbout)], {type: "application/octet-stream"}), "test.xlsx")
+}
+
+export function export_json_to_excel(Data, Title, cell) { // 数据,标题,单元格坐标
+ const data = {
+ "!ref": "A1:I28", // cellRangecjn
+ "!merges": [
+ {
+ "s": { "c": 3, "r": 23 },
+ "e": { "c": 6, "r": 23 }
+ },
+ {
+ "s": { "c": 3, "r": 24 },
+ "e": { "c": 6, "r": 24 }
+ },
+ {
+ "s": { "c": 3, "r": 25 },
+ "e": { "c": 6, "r": 25 }
+ },
+ {
+ "s": { "c": 6, "r": 26 },
+ "e": { "c": 8, "r": 26 }
+ },
+ {
+ "s": {
+ "c": 3,
+ "r": 18
+ },
+ "e": {
+ "c": 6,
+ "r": 18
+ }
+ },
+ {
+ "s": {
+ "c": 3,
+ "r": 19
+ },
+ "e": {
+ "c": 6,
+ "r": 19
+ }
+ },
+ {
+ "s": {
+ "c": 3,
+ "r": 20
+ },
+ "e": {
+ "c": 6,
+ "r": 20
+ }
+ },
+ {
+ "s": {
+ "c": 3,
+ "r": 21
+ },
+ "e": {
+ "c": 6,
+ "r": 21
+ }
+ },
+ {
+ "s": {
+ "c": 3,
+ "r": 22
+ },
+ "e": {
+ "c": 6,
+ "r": 22
+ }
+ },
+ {
+ "s": {
+ "c": 1,
+ "r": 22
+ },
+ "e": {
+ "c": 2,
+ "r": 22
+ }
+ },
+ {
+ "s": {
+ "c": 1,
+ "r": 23
+ },
+ "e": {
+ "c": 2,
+ "r": 23
+ }
+ },
+ {
+ "s": {
+ "c": 1,
+ "r": 24
+ },
+ "e": {
+ "c": 2,
+ "r": 24
+ }
+ },
+ {
+ "s": {
+ "c": 1,
+ "r": 25
+ },
+ "e": {
+ "c": 2,
+ "r": 25
+ }
+ },
+ {
+ "s": {
+ "c": 1,
+ "r": 26
+ },
+ "e": {
+ "c": 2,
+ "r": 26
+ }
+ },
+ {
+ "s": {
+ "c": 3,
+ "r": 6
+ },
+ "e": {
+ "c": 6,
+ "r": 6
+ }
+ },
+ {
+ "s": {
+ "c": 3,
+ "r": 7
+ },
+ "e": {
+ "c": 6,
+ "r": 7
+ }
+ },
+ {
+ "s": {
+ "c": 3,
+ "r": 8
+ },
+ "e": {
+ "c": 6,
+ "r": 8
+ }
+ },
+ {
+ "s": {
+ "c": 3,
+ "r": 9
+ },
+ "e": {
+ "c": 6,
+ "r": 9
+ }
+ },
+ {
+ "s": {
+ "c": 3,
+ "r": 10
+ },
+ "e": {
+ "c": 6,
+ "r": 10
+ }
+ },
+ {
+ "s": {
+ "c": 3,
+ "r": 11
+ },
+ "e": {
+ "c": 6,
+ "r": 11
+ }
+ },
+ {
+ "s": {
+ "c": 3,
+ "r": 12
+ },
+ "e": {
+ "c": 6,
+ "r": 12
+ }
+ },
+ {
+ "s": {
+ "c": 3,
+ "r": 13
+ },
+ "e": {
+ "c": 6,
+ "r": 13
+ }
+ },
+ {
+ "s": {
+ "c": 3,
+ "r": 14
+ },
+ "e": {
+ "c": 6,
+ "r": 14
+ }
+ },
+ {
+ "s": {
+ "c": 3,
+ "r": 15
+ },
+ "e": {
+ "c": 6,
+ "r": 15
+ }
+ },
+ {
+ "s": {
+ "c": 3,
+ "r": 16
+ },
+ "e": {
+ "c": 6,
+ "r": 16
+ }
+ },
+ {
+ "s": {
+ "c": 3,
+ "r": 17
+ },
+ "e": {
+ "c": 6,
+ "r": 17
+ }
+ },
+ {
+ "s": {
+ "c": 1,
+ "r": 17
+ },
+ "e": {
+ "c": 2,
+ "r": 17
+ }
+ },
+ {
+ "s": {
+ "c": 1,
+ "r": 18
+ },
+ "e": {
+ "c": 2,
+ "r": 18
+ }
+ },
+ {
+ "s": {
+ "c": 1,
+ "r": 19
+ },
+ "e": {
+ "c": 2,
+ "r": 19
+ }
+ },
+ {
+ "s": {
+ "c": 1,
+ "r": 20
+ },
+ "e": {
+ "c": 2,
+ "r": 20
+ }
+ },
+ {
+ "s": {
+ "c": 1,
+ "r": 21
+ },
+ "e": {
+ "c": 2,
+ "r": 21
+ }
+ },
+ {
+ "s": {
+ "c": 1,
+ "r": 12
+ },
+ "e": {
+ "c": 2,
+ "r": 12
+ }
+ },
+ {
+ "s": {
+ "c": 1,
+ "r": 13
+ },
+ "e": {
+ "c": 2,
+ "r": 13
+ }
+ },
+ {
+ "s": {
+ "c": 1,
+ "r": 14
+ },
+ "e": {
+ "c": 2,
+ "r": 14
+ }
+ },
+ {
+ "s": {
+ "c": 1,
+ "r": 15
+ },
+ "e": {
+ "c": 2,
+ "r": 15
+ }
+ },
+ {
+ "s": {
+ "c": 1,
+ "r": 16
+ },
+ "e": {
+ "c": 2,
+ "r": 16
+ }
+ },
+ {
+ "s": {
+ "c": 1,
+ "r": 7
+ },
+ "e": {
+ "c": 2,
+ "r": 7
+ }
+ },
+ {
+ "s": {
+ "c": 1,
+ "r": 8
+ },
+ "e": {
+ "c": 2,
+ "r": 8
+ }
+ },
+ {
+ "s": {
+ "c": 1,
+ "r": 9
+ },
+ "e": {
+ "c": 2,
+ "r": 9
+ }
+ },
+ {
+ "s": {
+ "c": 1,
+ "r": 10
+ },
+ "e": {
+ "c": 2,
+ "r": 10
+ }
+ },
+ {
+ "s": {
+ "c": 1,
+ "r": 11
+ },
+ "e": {
+ "c": 2,
+ "r": 11
+ }
+ },
+ {
+ "s": {
+ "c": 0,
+ "r": 4
+ },
+ "e": {
+ "c": 0,
+ "r": 5
+ }
+ },
+ {
+ "s": {
+ "c": 3,
+ "r": 4
+ },
+ "e": {
+ "c": 6,
+ "r": 5
+ }
+ },
+ {
+ "s": {
+ "c": 1,
+ "r": 4
+ },
+ "e": {
+ "c": 2,
+ "r": 5
+ }
+ },
+ {
+ "s": {
+ "c": 1,
+ "r": 6
+ },
+ "e": {
+ "c": 2,
+ "r": 6
+ }
+ },
+ {
+ "s": {
+ "c": 0,
+ "r": 2
+ },
+ "e": {
+ "c": 3,
+ "r": 2
+ }
+ },
+ {
+ "s": {
+ "c": 4,
+ "r": 0
+ },
+ "e": {
+ "c": 4,
+ "r": 3
+ }
+ },
+ {
+ "s": {
+ "c": 6,
+ "r": 0
+ },
+ "e": {
+ "c": 8,
+ "r": 0
+ }
+ },
+ {
+ "s": {
+ "c": 5,
+ "r": 2
+ },
+ "e": {
+ "c": 6,
+ "r": 2
+ }
+ },
+ {
+ "s": {
+ "c": 7,
+ "r": 2
+ },
+ "e": {
+ "c": 8,
+ "r": 2
+ }
+ },
+ {
+ "s": {
+ "c": 5,
+ "r": 3
+ },
+ "e": {
+ "c": 6,
+ "r": 3
+ }
+ },
+ {
+ "s": {
+ "c": 7,
+ "r": 3
+ },
+ "e": {
+ "c": 8,
+ "r": 3
+ }
+ },
+ {
+ "s": {
+ "c": 7,
+ "r": 4
+ },
+ "e": {
+ "c": 8,
+ "r": 4
+ }
+ },
+ {
+ "s": {
+ "c": 0,
+ "r": 0
+ },
+ "e": {
+ "c": 3,
+ "r": 1
+ }
+ }] // cellMergescjn
+ }
+ for (let i = 0; i < cell.length; i++) { // drawAllCellBordercjn
+ data[cell[i]] = {
+ "v": "",
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium"
+ },
+ "right": {
+ "style": "medium"
+ },
+ "top": {
+ "style": "medium"
+ },
+ "bottom": {
+ "style": "medium"
+ }
+ }
+ }
+ }
+ }
+ // thereGiveCellValuecjn
+ data.A1 = {
+ "t": "s",
+ "v": "HAOSEN",
+ "s": {
+ "alignment": {
+ "vertical": "center",
+ "horizontal": "center"
+ },
+ "font": {
+ "sz" : 20,
+ "bold": true
+ },
+ "border": {
+ "left": {
+ "style": "medium",
+ "color": {
+ "auto": 1
+ }
+ },
+ "right": {
+ "style": "medium",
+ "color": {
+ "auto": 1
+ }
+ },
+ "top": {
+ "style": "medium",
+ "color": {
+ "auto": 1
+ }
+ },
+ "bottom": {
+ "style": "medium",
+ "color": {
+ "auto": 1
+ }
+ }
+ }
+ }
+ },
+ data.E1 = {
+ "t": "s",
+ "v": "工艺、定额卡",
+ "s": {
+ "alignment": {
+ "vertical": "center",
+ "horizontal": "center"
+ },
+ "font": {
+ "sz" : 20,
+ "bold": true
+ },
+ "border": {
+ "left": {
+ "style": "medium",
+ "color": {
+ "auto": 1
+ }
+ },
+ "right": {
+ "style": "medium",
+ "color": {
+ "auto": 1
+ }
+ },
+ "top": {
+ "style": "medium",
+ "color": {
+ "auto": 1
+ }
+ },
+ "bottom": {
+ "style": "medium",
+ "color": {
+ "auto": 1
+ }
+ }
+ }
+ },
+ },
+ data.F1 = {
+ "t": "s",
+ "v": "零件图号",
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ "color": {
+ "auto": 1
+ }
+ },
+ "right": {
+ "style": "medium",
+ "color": {
+ "auto": 1
+ }
+ },
+ "top": {
+ "style": "medium",
+ "color": {
+ "auto": 1
+ }
+ },
+ "bottom": {
+ "style": "medium",
+ "color": {
+ "auto": 1
+ }
+ }
+ }
+ }
+ },
+ data.G1 = {
+ "t": "s",
+ "v": Data[0].零件图号,
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ "color": {
+ "auto": 1
+ }
+ },
+ "right": {
+ "style": "medium",
+ "color": {
+ "auto": 1
+ }
+ },
+ "top": {
+ "style": "medium",
+ "color": {
+ "auto": 1
+ }
+ },
+ "bottom": {
+ "style": "medium",
+ "color": {
+ "auto": 1
+ }
+ }
+ }
+ }
+},
+ data.F2 = {
+ "t": "s",
+ "v": "零件名称",
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ "color": {
+ "auto": 1
+ }
+ },
+ "right": {
+ "style": "medium",
+ "color": {
+ "auto": 1
+ }
+ },
+ "top": {
+ "style": "medium",
+ "color": {
+ "auto": 1
+ }
+ },
+ "bottom": {
+ "style": "medium",
+ "color": {
+ "auto": 1
+ }
+ }
+ }
+ }
+ },
+ data.G2 = {
+ "t": "s",
+ "v": Data[0].零件名称,
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ },
+ "right": {
+ "style": "medium",
+ },
+ "top": {
+ "style": "medium",
+ },
+ "bottom": {
+ "style": "medium",
+ }
+ }
+ }
+ },
+ data.H2 = {
+ "t": "s",
+ "v": "数量",
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ },
+ "right": {
+ "style": "medium",
+ },
+ "top": {
+ "style": "medium",
+ },
+ "bottom": {
+ "style": "medium",
+ }
+ }
+ }
+ },
+ data.I2 = {
+ "t": "n",
+ "v": Data[0].投产数量,
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ },
+ "right": {
+ "style": "medium",
+ },
+ "top": {
+ "style": "medium",
+ },
+ "bottom": {
+ "style": "medium",
+ }
+ }
+ }
+ },
+ data.A3 = {
+ "t": "s",
+ "v": "大连豪森设备制造有限公司",
+ "s": {
+ "alignment": {
+ "vertical": "center",
+ "horizontal": "center"
+ },
+ "border": {
+ "left": {
+ "style": "medium",
+ },
+ "right": {
+ "style": "medium",
+ },
+ "top": {
+ "style": "medium",
+ },
+ "bottom": {
+ "style": "medium",
+ }
+ }
+ }
+ },
+ data.F3 = {
+ "t": "s",
+ "v": "材料",
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ },
+ "right": {
+ "style": "medium",
+ },
+ "top": {
+ "style": "medium",
+ },
+ "bottom": {
+ "style": "medium",
+ }
+ }
+ }
+ },
+ data.H3 = {
+ "t": "s",
+ "v": "原材料规格",
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ },
+ "right": {
+ "style": "medium",
+ },
+ "top": {
+ "style": "medium",
+ },
+ "bottom": {
+ "style": "medium",
+ }
+ }
+ }
+ },
+ data.A4 = {
+ "t": "s",
+ "v": "机床号",
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ },
+ "right": {
+ "style": "medium",
+ },
+ "top": {
+ "style": "medium",
+ },
+ "bottom": {
+ "style": "medium",
+ }
+ }
+ }
+ },
+ data.B4 = {
+ "t": "s",
+ "v": Data[0].机床图号,
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ },
+ "right": {
+ "style": "medium",
+ },
+ "top": {
+ "style": "medium",
+ },
+ "bottom": {
+ "style": "medium",
+ }
+ }
+ }
+ },
+ data.C4 = {
+ "t": "s",
+ "v": "组号",
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ },
+ "right": {
+ "style": "medium",
+ },
+ "top": {
+ "style": "medium",
+ },
+ "bottom": {
+ "style": "medium",
+ }
+ }
+ }
+ },
+ data.D4 = {
+ "t": "s",
+ "v": Data[0].组号,
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ },
+ "right": {
+ "style": "medium",
+ },
+ "top": {
+ "style": "medium",
+ },
+ "bottom": {
+ "style": "medium",
+ }
+ }
+ }
+ },
+ data.F4 = {
+ "t": "s",
+ "v": Data[0].材料,
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ },
+ "right": {
+ "style": "medium",
+ },
+ "top": {
+ "style": "medium",
+ },
+ "bottom": {
+ "style": "medium",
+ }
+ }
+ }
+ },
+ data.A5 = {
+ "t": "s",
+ "v": "序次",
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ },
+ "right": {
+ "style": "medium",
+ },
+ "top": {
+ "style": "medium",
+ },
+ "bottom": {
+ "style": "medium",
+ }
+ }
+ }
+ },
+ data.B5 = {
+ "t": "s",
+ "v": "工艺名称",
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ },
+ "right": {
+ "style": "medium",
+ },
+ "top": {
+ "style": "medium",
+ },
+ "bottom": {
+ "style": "medium",
+ }
+ }
+ }
+ },
+ data.D5 = {
+ "t": "s",
+ "v": "工艺要求",
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ },
+ "right": {
+ "style": "medium",
+ },
+ "top": {
+ "style": "medium",
+ },
+ "bottom": {
+ "style": "medium",
+ }
+ }
+ }
+ },
+ data.H5 = {
+ "t": "s",
+ "v": "定额工时",
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ },
+ "right": {
+ "style": "medium",
+ },
+ "top": {
+ "style": "medium",
+ },
+ "bottom": {
+ "style": "medium",
+ }
+ }
+ }
+ },
+ data.H6 = {
+ "t": "s",
+ "v": "单件",
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ },
+ "right": {
+ "style": "medium",
+ },
+ "top": {
+ "style": "medium",
+ },
+ "bottom": {
+ "style": "medium",
+ }
+ }
+ }
+ },
+ data.I6 = {
+ "t": "s",
+ "v": "准结",
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ },
+ "right": {
+ "style": "medium",
+ },
+ "top": {
+ "style": "medium",
+ },
+ "bottom": {
+ "style": "medium",
+ }
+ }
+ }
+ },
+ data.A27 = {
+ "t": "s",
+ "v": "工艺员",
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ },
+ "right": {
+ "style": "medium",
+ },
+ "top": {
+ "style": "medium",
+ },
+ "bottom": {
+ "style": "medium",
+ }
+ }
+ }
+ },
+ data.B27 = {
+ "t": "s",
+ "v": Data[0].工艺员,
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ },
+ "right": {
+ "style": "medium",
+ },
+ "top": {
+ "style": "medium",
+ },
+ "bottom": {
+ "style": "medium",
+ }
+ }
+ }
+ },
+ data.D27 = {
+ "t": "s",
+ "v": "定额员",
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ },
+ "right": {
+ "style": "medium",
+ },
+ "top": {
+ "style": "medium",
+ },
+ "bottom": {
+ "style": "medium",
+ }
+ }
+ }
+ },
+ data.E27 = {
+ "t": "s",
+ "v": Data[0].定额员,
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ },
+ "right": {
+ "style": "medium",
+ },
+ "top": {
+ "style": "medium",
+ },
+ "bottom": {
+ "style": "medium",
+ }
+ }
+ }
+ },
+ data.F27 = {
+ "t": "s",
+ "v": "日期",
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ },
+ "right": {
+ "style": "medium",
+ },
+ "top": {
+ "style": "medium",
+ },
+ "bottom": {
+ "style": "medium",
+ }
+ }
+ }
+ },
+ data.G27 = {
+ "t": "n",
+ "v": Data[0].工艺实际完成时间,
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ },
+ "right": {
+ "style": "medium",
+ },
+ "top": {
+ "style": "medium",
+ },
+ "bottom": {
+ "style": "medium",
+ }
+ }
+ }
+ }
+ for (let i = 0; i < Data.length; i++) {
+ data['A' + (i + 7)] = {
+ "v": i + 1,
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ },
+ "right": {
+ "style": "medium",
+ },
+ "top": {
+ "style": "medium",
+ },
+ "bottom": {
+ "style": "medium",
+ }
+ }
+ }
+ }
+ data['B' + (i + 7)] = {
+ "v": Data[i].工艺名称,
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ },
+ "right": {
+ "style": "medium",
+ },
+ "top": {
+ "style": "medium",
+ },
+ "bottom": {
+ "style": "medium",
+ }
+ }
+ }
+ }
+ data['D' + (i + 7)] = {
+ "v": Data[i].工艺要求,
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ },
+ "right": {
+ "style": "medium",
+ },
+ "top": {
+ "style": "medium",
+ },
+ "bottom": {
+ "style": "medium",
+ }
+ }
+ }
+ }
+ data['H' + (i + 7)] = {
+ "v": Data[i].单件定额工时,
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ },
+ "right": {
+ "style": "medium",
+ },
+ "top": {
+ "style": "medium",
+ },
+ "bottom": {
+ "style": "medium",
+ }
+ }
+ }
+ }
+ data['I' + (i + 7)] = {
+ "v": Data[i].准结定额工时,
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ },
+ "right": {
+ "style": "medium",
+ },
+ "top": {
+ "style": "medium",
+ },
+ "bottom": {
+ "style": "medium",
+ }
+ }
+ }
+ }
+ }
+
+ data['!cols'] = [{'wch': 8},{'wch': 12},{'wch': 8},{'wch': 12},{'wch': 20},{'wch': 8},{'wch': 8},{'wch': 8},{'wch': 8}]
+ var wb = { SheetNames: ['Sheet1'], Sheets: {}, Props: {} };
+ wb.Sheets['Sheet1'] = data
+ var wbout = XLSX.write(wb, {bookType: 'xlsx', bookSST: false, type: 'binary'});
+ saveAs(new Blob([s2ab(wbout)], {type: "application/octet-stream"}), Title + ".xlsx");
+}
diff --git a/src/vendor/Export2Excel2.js b/src/vendor/Export2Excel2.js
new file mode 100644
index 00000000..f34bf19d
--- /dev/null
+++ b/src/vendor/Export2Excel2.js
@@ -0,0 +1,1445 @@
+/* eslint-disable */
+require('script-loader!file-saver');
+require('script-loader!@/vendor/Blob');
+import XLSX from 'xlsx-style'
+
+function generateArray(table) {
+ var out = [];
+ var rows = table.querySelectorAll('tr');
+ var ranges = [];
+ for (var R = 0; R < rows.length; ++R) {
+ var outRow = [];
+ var row = rows[R];
+ var columns = row.querySelectorAll('td');
+ for (var C = 0; C < columns.length; ++C) {
+ var cell = columns[C];
+ var colspan = cell.getAttribute('colspan');
+ var rowspan = cell.getAttribute('rowspan');
+ var cellValue = cell.innerText;
+ if (cellValue !== "" && cellValue == +cellValue) cellValue = +cellValue;
+
+ //Skip ranges
+ ranges.forEach(function (range) {
+ if (R >= range.s.r && R <= range.e.r && outRow.length >= range.s.c && outRow.length <= range.e.c) {
+ for (var i = 0; i <= range.e.c - range.s.c; ++i) outRow.push(null);
+ }
+ });
+
+ //Handle Row Span
+ if (rowspan || colspan) {
+ rowspan = rowspan || 1;
+ colspan = colspan || 1;
+ ranges.push({s: {r: R, c: outRow.length}, e: {r: R + rowspan - 1, c: outRow.length + colspan - 1}});
+ }
+ ;
+
+ //Handle Value
+ outRow.push(cellValue !== "" ? cellValue : null);
+
+ //Handle Colspan
+ if (colspan) for (var k = 0; k < colspan - 1; ++k) outRow.push(null);
+ }
+ out.push(outRow);
+ }
+ return [out, ranges];
+};
+
+function datenum(v, date1904) {
+ if (date1904) v += 1462;
+ var epoch = Date.parse(v);
+ return (epoch - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000);
+}
+
+function sheet_from_array_of_arrays(data, opts) {
+ var ws = {};
+ var range = {s: {c: 10000000, r: 10000000}, e: {c: 0, r: 0}};
+ for (var R = 0; R != data.length; ++R) {
+ for (var C = 0; C != data[R].length; ++C) {
+ if (range.s.r > R) range.s.r = R;
+ if (range.s.c > C) range.s.c = C;
+ if (range.e.r < R) range.e.r = R;
+ if (range.e.c < C) range.e.c = C;
+ var cell = {v: data[R][C]};
+ if (cell.v == null) continue;
+ var cell_ref = XLSX.utils.encode_cell({c: C, r: R});
+
+ if (typeof cell.v === 'number') cell.t = 'n';
+ else if (typeof cell.v === 'boolean') cell.t = 'b';
+ else if (cell.v instanceof Date) {
+ cell.t = 'n';
+ cell.z = XLSX.SSF._table[14];
+ cell.v = datenum(cell.v);
+ }
+ else cell.t = 's';
+
+ ws[cell_ref] = cell;
+ }
+ }
+ if (range.s.c < 10000000) ws['!ref'] = XLSX.utils.encode_range(range);
+ return ws;
+}
+
+function Workbook() {
+ if (!(this instanceof Workbook)) return new Workbook();
+ this.SheetNames = [];
+ this.Sheets = {};
+}
+
+function s2ab(s) {
+ if (typeof ArrayBuffer !== 'undefined') {
+ var buf = new ArrayBuffer(s.length);
+ var view = new Uint8Array(buf);
+ for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
+ return buf;
+ } else {
+ var buf = new Array(s.length);
+ for (var i = 0; i != s.length; ++i) buf[i] = s.charCodeAt(i) & 0xFF;
+ return buf;
+ }
+}
+
+function format2Sheet(e, r, n, o) {
+ o = o || Object.keys(e[0]),
+ r = r || 0,
+ n = n || 0;
+ var a = {};
+ return e.map(function(e, a) {
+ return o.map(function(o, i) {
+ return Object.assign({},
+ {
+ v: e[o],
+ position: (i + r > 25 ? t.getCharCol(i + r) : String.fromCharCode(65 + (i + r))) + (a + 1 + n)
+ })
+ })
+ }).reduce(function(e, r) {
+ return e.concat(r)
+ }).forEach(function(e, r) {
+ return a[e.position] = {
+ v: e.v
+ }
+ }),
+ a
+}
+function getCharCol(n) {
+ let temCol = '',
+ s = '',
+ m = 0
+ while (n > 0) {
+ m = n % 26 + 1
+ s = String.fromCharCode(m + 64) + s
+ n = (n - m) / 26
+ }
+ return s
+}
+export function export_table_to_excel(id) {
+ var theTable = document.getElementById(id);
+ var oo = generateArray(theTable);
+ var ranges = oo[1];
+
+ /* original data */
+ var data = oo[0];
+ var ws_name = "SheetJS";
+
+ var wb = new Workbook(), ws = sheet_from_array_of_arrays(data);
+
+ /* add ranges to worksheet */
+ // ws['!cols'] = ['apple', 'banan'];
+ ws['!merges'] = ranges;
+
+ /* add worksheet to workbook */
+ wb.SheetNames.push(ws_name);
+ wb.Sheets[ws_name] = ws;
+
+ var wbout = XLSX.write(wb, {bookType: 'xlsx', bookSST: false, type: 'binary'});
+
+ saveAs(new Blob([s2ab(wbout)], {type: "application/octet-stream"}), "test.xlsx")
+}
+
+export function export_json_to_excel(Data, Title, cell) { // 数据,标题,单元格坐标
+ console.log(Data, cell, 520)
+ const data = {
+ "!ref": "A1:I28", // cellRangecjn
+ "!merges": [
+ {
+ "s": { "c": 3, "r": 23 },
+ "e": { "c": 6, "r": 23 }
+ },
+ {
+ "s": { "c": 3, "r": 24 },
+ "e": { "c": 6, "r": 24 }
+ },
+ {
+ "s": { "c": 3, "r": 25 },
+ "e": { "c": 6, "r": 25 }
+ },
+ {
+ "s": { "c": 6, "r": 26 },
+ "e": { "c": 8, "r": 26 }
+ },
+ {
+ "s": {
+ "c": 3,
+ "r": 18
+ },
+ "e": {
+ "c": 6,
+ "r": 18
+ }
+ },
+ {
+ "s": {
+ "c": 3,
+ "r": 19
+ },
+ "e": {
+ "c": 6,
+ "r": 19
+ }
+ },
+ {
+ "s": {
+ "c": 3,
+ "r": 20
+ },
+ "e": {
+ "c": 6,
+ "r": 20
+ }
+ },
+ {
+ "s": {
+ "c": 3,
+ "r": 21
+ },
+ "e": {
+ "c": 6,
+ "r": 21
+ }
+ },
+ {
+ "s": {
+ "c": 3,
+ "r": 22
+ },
+ "e": {
+ "c": 6,
+ "r": 22
+ }
+ },
+ {
+ "s": {
+ "c": 1,
+ "r": 22
+ },
+ "e": {
+ "c": 2,
+ "r": 22
+ }
+ },
+ {
+ "s": {
+ "c": 1,
+ "r": 23
+ },
+ "e": {
+ "c": 2,
+ "r": 23
+ }
+ },
+ {
+ "s": {
+ "c": 1,
+ "r": 24
+ },
+ "e": {
+ "c": 2,
+ "r": 24
+ }
+ },
+ {
+ "s": {
+ "c": 1,
+ "r": 25
+ },
+ "e": {
+ "c": 2,
+ "r": 25
+ }
+ },
+ {
+ "s": {
+ "c": 1,
+ "r": 26
+ },
+ "e": {
+ "c": 2,
+ "r": 26
+ }
+ },
+ {
+ "s": {
+ "c": 3,
+ "r": 6
+ },
+ "e": {
+ "c": 6,
+ "r": 6
+ }
+ },
+ {
+ "s": {
+ "c": 3,
+ "r": 7
+ },
+ "e": {
+ "c": 6,
+ "r": 7
+ }
+ },
+ {
+ "s": {
+ "c": 3,
+ "r": 8
+ },
+ "e": {
+ "c": 6,
+ "r": 8
+ }
+ },
+ {
+ "s": {
+ "c": 3,
+ "r": 9
+ },
+ "e": {
+ "c": 6,
+ "r": 9
+ }
+ },
+ {
+ "s": {
+ "c": 3,
+ "r": 10
+ },
+ "e": {
+ "c": 6,
+ "r": 10
+ }
+ },
+ {
+ "s": {
+ "c": 3,
+ "r": 11
+ },
+ "e": {
+ "c": 6,
+ "r": 11
+ }
+ },
+ {
+ "s": {
+ "c": 3,
+ "r": 12
+ },
+ "e": {
+ "c": 6,
+ "r": 12
+ }
+ },
+ {
+ "s": {
+ "c": 3,
+ "r": 13
+ },
+ "e": {
+ "c": 6,
+ "r": 13
+ }
+ },
+ {
+ "s": {
+ "c": 3,
+ "r": 14
+ },
+ "e": {
+ "c": 6,
+ "r": 14
+ }
+ },
+ {
+ "s": {
+ "c": 3,
+ "r": 15
+ },
+ "e": {
+ "c": 6,
+ "r": 15
+ }
+ },
+ {
+ "s": {
+ "c": 3,
+ "r": 16
+ },
+ "e": {
+ "c": 6,
+ "r": 16
+ }
+ },
+ {
+ "s": {
+ "c": 3,
+ "r": 17
+ },
+ "e": {
+ "c": 6,
+ "r": 17
+ }
+ },
+ {
+ "s": {
+ "c": 1,
+ "r": 17
+ },
+ "e": {
+ "c": 2,
+ "r": 17
+ }
+ },
+ {
+ "s": {
+ "c": 1,
+ "r": 18
+ },
+ "e": {
+ "c": 2,
+ "r": 18
+ }
+ },
+ {
+ "s": {
+ "c": 1,
+ "r": 19
+ },
+ "e": {
+ "c": 2,
+ "r": 19
+ }
+ },
+ {
+ "s": {
+ "c": 1,
+ "r": 20
+ },
+ "e": {
+ "c": 2,
+ "r": 20
+ }
+ },
+ {
+ "s": {
+ "c": 1,
+ "r": 21
+ },
+ "e": {
+ "c": 2,
+ "r": 21
+ }
+ },
+ {
+ "s": {
+ "c": 1,
+ "r": 12
+ },
+ "e": {
+ "c": 2,
+ "r": 12
+ }
+ },
+ {
+ "s": {
+ "c": 1,
+ "r": 13
+ },
+ "e": {
+ "c": 2,
+ "r": 13
+ }
+ },
+ {
+ "s": {
+ "c": 1,
+ "r": 14
+ },
+ "e": {
+ "c": 2,
+ "r": 14
+ }
+ },
+ {
+ "s": {
+ "c": 1,
+ "r": 15
+ },
+ "e": {
+ "c": 2,
+ "r": 15
+ }
+ },
+ {
+ "s": {
+ "c": 1,
+ "r": 16
+ },
+ "e": {
+ "c": 2,
+ "r": 16
+ }
+ },
+ {
+ "s": {
+ "c": 1,
+ "r": 7
+ },
+ "e": {
+ "c": 2,
+ "r": 7
+ }
+ },
+ {
+ "s": {
+ "c": 1,
+ "r": 8
+ },
+ "e": {
+ "c": 2,
+ "r": 8
+ }
+ },
+ {
+ "s": {
+ "c": 1,
+ "r": 9
+ },
+ "e": {
+ "c": 2,
+ "r": 9
+ }
+ },
+ {
+ "s": {
+ "c": 1,
+ "r": 10
+ },
+ "e": {
+ "c": 2,
+ "r": 10
+ }
+ },
+ {
+ "s": {
+ "c": 1,
+ "r": 11
+ },
+ "e": {
+ "c": 2,
+ "r": 11
+ }
+ },
+ {
+ "s": {
+ "c": 0,
+ "r": 4
+ },
+ "e": {
+ "c": 0,
+ "r": 5
+ }
+ },
+ {
+ "s": {
+ "c": 3,
+ "r": 4
+ },
+ "e": {
+ "c": 6,
+ "r": 5
+ }
+ },
+ {
+ "s": {
+ "c": 1,
+ "r": 4
+ },
+ "e": {
+ "c": 2,
+ "r": 5
+ }
+ },
+ {
+ "s": {
+ "c": 1,
+ "r": 6
+ },
+ "e": {
+ "c": 2,
+ "r": 6
+ }
+ },
+ {
+ "s": {
+ "c": 0,
+ "r": 2
+ },
+ "e": {
+ "c": 3,
+ "r": 2
+ }
+ },
+ {
+ "s": {
+ "c": 4,
+ "r": 0
+ },
+ "e": {
+ "c": 4,
+ "r": 3
+ }
+ },
+ {
+ "s": {
+ "c": 6,
+ "r": 0
+ },
+ "e": {
+ "c": 8,
+ "r": 0
+ }
+ },
+ {
+ "s": {
+ "c": 5,
+ "r": 2
+ },
+ "e": {
+ "c": 6,
+ "r": 2
+ }
+ },
+ {
+ "s": {
+ "c": 7,
+ "r": 2
+ },
+ "e": {
+ "c": 8,
+ "r": 2
+ }
+ },
+ {
+ "s": {
+ "c": 5,
+ "r": 3
+ },
+ "e": {
+ "c": 6,
+ "r": 3
+ }
+ },
+ {
+ "s": {
+ "c": 7,
+ "r": 3
+ },
+ "e": {
+ "c": 8,
+ "r": 3
+ }
+ },
+ {
+ "s": {
+ "c": 7,
+ "r": 4
+ },
+ "e": {
+ "c": 8,
+ "r": 4
+ }
+ },
+ {
+ "s": {
+ "c": 0,
+ "r": 0
+ },
+ "e": {
+ "c": 3,
+ "r": 1
+ }
+ }] // cellMergescjn
+ }
+ for (let i = 0; i < cell.length; i++) { // drawAllCellBordercjn
+ data[cell[i]] = {
+ "v": "",
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium"
+ },
+ "right": {
+ "style": "medium"
+ },
+ "top": {
+ "style": "medium"
+ },
+ "bottom": {
+ "style": "medium"
+ }
+ }
+ }
+ }
+ }
+ // thereGiveCellValuecjn
+ data.A1 = {
+ "t": "s",
+ "v": "HAOSEN",
+ "s": {
+ "alignment": {
+ "vertical": "center",
+ "horizontal": "center"
+ },
+ "font": {
+ "sz" : 20,
+ "bold": true
+ },
+ "border": {
+ "left": {
+ "style": "medium",
+ "color": {
+ "auto": 1
+ }
+ },
+ "right": {
+ "style": "medium",
+ "color": {
+ "auto": 1
+ }
+ },
+ "top": {
+ "style": "medium",
+ "color": {
+ "auto": 1
+ }
+ },
+ "bottom": {
+ "style": "medium",
+ "color": {
+ "auto": 1
+ }
+ }
+ }
+ }
+ },
+ data.E1 = {
+ "t": "s",
+ "v": "工艺、定额卡",
+ "s": {
+ "alignment": {
+ "vertical": "center",
+ "horizontal": "center"
+ },
+ "font": {
+ "sz" : 20,
+ "bold": true
+ },
+ "border": {
+ "left": {
+ "style": "medium",
+ "color": {
+ "auto": 1
+ }
+ },
+ "right": {
+ "style": "medium",
+ "color": {
+ "auto": 1
+ }
+ },
+ "top": {
+ "style": "medium",
+ "color": {
+ "auto": 1
+ }
+ },
+ "bottom": {
+ "style": "medium",
+ "color": {
+ "auto": 1
+ }
+ }
+ }
+ },
+ },
+ data.F1 = {
+ "t": "s",
+ "v": "零件图号",
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ "color": {
+ "auto": 1
+ }
+ },
+ "right": {
+ "style": "medium",
+ "color": {
+ "auto": 1
+ }
+ },
+ "top": {
+ "style": "medium",
+ "color": {
+ "auto": 1
+ }
+ },
+ "bottom": {
+ "style": "medium",
+ "color": {
+ "auto": 1
+ }
+ }
+ }
+ }
+ },
+ data.G1 = {
+ "t": "s",
+ "v": Data[0].零件图号,
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ "color": {
+ "auto": 1
+ }
+ },
+ "right": {
+ "style": "medium",
+ "color": {
+ "auto": 1
+ }
+ },
+ "top": {
+ "style": "medium",
+ "color": {
+ "auto": 1
+ }
+ },
+ "bottom": {
+ "style": "medium",
+ "color": {
+ "auto": 1
+ }
+ }
+ }
+ }
+ },
+ data.F2 = {
+ "t": "s",
+ "v": "零件名称",
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ "color": {
+ "auto": 1
+ }
+ },
+ "right": {
+ "style": "medium",
+ "color": {
+ "auto": 1
+ }
+ },
+ "top": {
+ "style": "medium",
+ "color": {
+ "auto": 1
+ }
+ },
+ "bottom": {
+ "style": "medium",
+ "color": {
+ "auto": 1
+ }
+ }
+ }
+ }
+ },
+ data.G2 = {
+ "t": "s",
+ "v": Data[0].零件名称,
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ },
+ "right": {
+ "style": "medium",
+ },
+ "top": {
+ "style": "medium",
+ },
+ "bottom": {
+ "style": "medium",
+ }
+ }
+ }
+ },
+ data.H2 = {
+ "t": "s",
+ "v": "数量",
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ },
+ "right": {
+ "style": "medium",
+ },
+ "top": {
+ "style": "medium",
+ },
+ "bottom": {
+ "style": "medium",
+ }
+ }
+ }
+ },
+ data.I2 = {
+ "t": "n",
+ "v": Data[0].投产数量,
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ },
+ "right": {
+ "style": "medium",
+ },
+ "top": {
+ "style": "medium",
+ },
+ "bottom": {
+ "style": "medium",
+ }
+ }
+ }
+ },
+ data.A3 = {
+ "t": "s",
+ "v": "大连豪森设备制造有限公司",
+ "s": {
+ "alignment": {
+ "vertical": "center",
+ "horizontal": "center"
+ },
+ "border": {
+ "left": {
+ "style": "medium",
+ },
+ "right": {
+ "style": "medium",
+ },
+ "top": {
+ "style": "medium",
+ },
+ "bottom": {
+ "style": "medium",
+ }
+ }
+ }
+ },
+ data.F3 = {
+ "t": "s",
+ "v": "材料",
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ },
+ "right": {
+ "style": "medium",
+ },
+ "top": {
+ "style": "medium",
+ },
+ "bottom": {
+ "style": "medium",
+ }
+ }
+ }
+ },
+ data.H3 = {
+ "t": "s",
+ "v": "原材料规格",
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ },
+ "right": {
+ "style": "medium",
+ },
+ "top": {
+ "style": "medium",
+ },
+ "bottom": {
+ "style": "medium",
+ }
+ }
+ }
+ },
+ data.A4 = {
+ "t": "s",
+ "v": "机床号",
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ },
+ "right": {
+ "style": "medium",
+ },
+ "top": {
+ "style": "medium",
+ },
+ "bottom": {
+ "style": "medium",
+ }
+ }
+ }
+ },
+ data.B4 = {
+ "t": "s",
+ "v": Data[0].机床图号,
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ },
+ "right": {
+ "style": "medium",
+ },
+ "top": {
+ "style": "medium",
+ },
+ "bottom": {
+ "style": "medium",
+ }
+ }
+ }
+ },
+ data.C4 = {
+ "t": "s",
+ "v": "组号",
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ },
+ "right": {
+ "style": "medium",
+ },
+ "top": {
+ "style": "medium",
+ },
+ "bottom": {
+ "style": "medium",
+ }
+ }
+ }
+ },
+ data.D4 = {
+ "t": "s",
+ "v": Data[0].组号,
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ },
+ "right": {
+ "style": "medium",
+ },
+ "top": {
+ "style": "medium",
+ },
+ "bottom": {
+ "style": "medium",
+ }
+ }
+ }
+ },
+ data.F4 = {
+ "t": "s",
+ "v": Data[0].材料,
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ },
+ "right": {
+ "style": "medium",
+ },
+ "top": {
+ "style": "medium",
+ },
+ "bottom": {
+ "style": "medium",
+ }
+ }
+ }
+ },
+ data.A5 = {
+ "t": "s",
+ "v": "序次",
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ },
+ "right": {
+ "style": "medium",
+ },
+ "top": {
+ "style": "medium",
+ },
+ "bottom": {
+ "style": "medium",
+ }
+ }
+ }
+ },
+ data.B5 = {
+ "t": "s",
+ "v": "工艺名称",
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ },
+ "right": {
+ "style": "medium",
+ },
+ "top": {
+ "style": "medium",
+ },
+ "bottom": {
+ "style": "medium",
+ }
+ }
+ }
+ },
+ data.D5 = {
+ "t": "s",
+ "v": "工艺要求",
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ },
+ "right": {
+ "style": "medium",
+ },
+ "top": {
+ "style": "medium",
+ },
+ "bottom": {
+ "style": "medium",
+ }
+ }
+ }
+ },
+ data.H5 = {
+ "t": "s",
+ "v": "定额工时",
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ },
+ "right": {
+ "style": "medium",
+ },
+ "top": {
+ "style": "medium",
+ },
+ "bottom": {
+ "style": "medium",
+ }
+ }
+ }
+ },
+ data.H6 = {
+ "t": "s",
+ "v": "单件",
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ },
+ "right": {
+ "style": "medium",
+ },
+ "top": {
+ "style": "medium",
+ },
+ "bottom": {
+ "style": "medium",
+ }
+ }
+ }
+ },
+ data.I6 = {
+ "t": "s",
+ "v": "准结",
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ },
+ "right": {
+ "style": "medium",
+ },
+ "top": {
+ "style": "medium",
+ },
+ "bottom": {
+ "style": "medium",
+ }
+ }
+ }
+ },
+ data.A27 = {
+ "t": "s",
+ "v": "工艺员",
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ },
+ "right": {
+ "style": "medium",
+ },
+ "top": {
+ "style": "medium",
+ },
+ "bottom": {
+ "style": "medium",
+ }
+ }
+ }
+ },
+ data.B27 = {
+ "t": "s",
+ "v": Data[0].工艺员,
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ },
+ "right": {
+ "style": "medium",
+ },
+ "top": {
+ "style": "medium",
+ },
+ "bottom": {
+ "style": "medium",
+ }
+ }
+ }
+ },
+ data.D27 = {
+ "t": "s",
+ "v": "定额员",
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ },
+ "right": {
+ "style": "medium",
+ },
+ "top": {
+ "style": "medium",
+ },
+ "bottom": {
+ "style": "medium",
+ }
+ }
+ }
+ },
+ data.E27 = {
+ "t": "s",
+ "v": Data[0].定额员,
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ },
+ "right": {
+ "style": "medium",
+ },
+ "top": {
+ "style": "medium",
+ },
+ "bottom": {
+ "style": "medium",
+ }
+ }
+ }
+ },
+ data.F27 = {
+ "t": "s",
+ "v": "日期",
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ },
+ "right": {
+ "style": "medium",
+ },
+ "top": {
+ "style": "medium",
+ },
+ "bottom": {
+ "style": "medium",
+ }
+ }
+ }
+ },
+ data.G27 = {
+ "t": "n",
+ "v": Data[0].工艺实际完成时间,
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ },
+ "right": {
+ "style": "medium",
+ },
+ "top": {
+ "style": "medium",
+ },
+ "bottom": {
+ "style": "medium",
+ }
+ }
+ }
+ }
+ for (let i = 0; i < Data.length; i++) {
+ data['A' + (i + 7)] = {
+ "v": i + 1,
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ },
+ "right": {
+ "style": "medium",
+ },
+ "top": {
+ "style": "medium",
+ },
+ "bottom": {
+ "style": "medium",
+ }
+ }
+ }
+ }
+ data['B' + (i + 7)] = {
+ "v": Data[i].工艺名称,
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ },
+ "right": {
+ "style": "medium",
+ },
+ "top": {
+ "style": "medium",
+ },
+ "bottom": {
+ "style": "medium",
+ }
+ }
+ }
+ }
+ data['D' + (i + 7)] = {
+ "v": Data[i].工艺要求,
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ },
+ "right": {
+ "style": "medium",
+ },
+ "top": {
+ "style": "medium",
+ },
+ "bottom": {
+ "style": "medium",
+ }
+ }
+ }
+ }
+ data['H' + (i + 7)] = {
+ "v": Data[i].单件定额工时,
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ },
+ "right": {
+ "style": "medium",
+ },
+ "top": {
+ "style": "medium",
+ },
+ "bottom": {
+ "style": "medium",
+ }
+ }
+ }
+ }
+ data['I' + (i + 7)] = {
+ "v": Data[i].准结定额工时,
+ "s": {
+ "border": {
+ "left": {
+ "style": "medium",
+ },
+ "right": {
+ "style": "medium",
+ },
+ "top": {
+ "style": "medium",
+ },
+ "bottom": {
+ "style": "medium",
+ }
+ }
+ }
+ }
+ }
+
+ data['!cols'] = [{'wch': 8},{'wch': 12},{'wch': 8},{'wch': 12},{'wch': 20},{'wch': 8},{'wch': 8},{'wch': 8},{'wch': 8}]
+ var wb = { SheetNames: ['Sheet1'], Sheets: {}, Props: {} };
+ wb.Sheets['Sheet1'] = data
+ var wbout = XLSX.write(wb, {bookType: 'xlsx', bookSST: false, type: 'binary'});
+ saveAs(new Blob([s2ab(wbout)], {type: "application/octet-stream"}), Title + ".xlsx");
+}
diff --git a/src/vendor/exportExcel.js b/src/vendor/exportExcel.js
new file mode 100644
index 00000000..cecba6b0
--- /dev/null
+++ b/src/vendor/exportExcel.js
@@ -0,0 +1,39 @@
+// 导出Excel方法
+let idTmr
+export function getExplorer() {
+ const explorer = window.navigator.userAgent
+ if (explorer.indexOf('Firefox') >= 0) { // firefox
+ return 'Firefox'
+ } else if (explorer.indexOf('Chrome') >= 0) { // Chrome
+ return 'Chrome'
+ } else if (explorer.indexOf('Opera') >= 0) { // Opera
+ return 'Opera'
+ } else if (explorer.indexOf('Safari') >= 0) { // Safari
+ return 'Safari'
+ }
+}
+export function method5(tableid) {
+ tableToExcel(tableid)
+}
+export function Cleanup() {
+ window.clearInterval(idTmr)
+}
+const tableToExcel = (function() {
+ const uri = 'data:application/vnd.ms-excel;base64,'
+ const template = ''
+ const base64 = function(s) { return window.btoa(unescape(encodeURIComponent(s))) }
+ const format = function(s, c) {
+ return s.replace(/{(\w+)}/g,
+ function(m, p) {
+ return c[p]
+ }
+ )
+ }
+ return function(table) {
+ if (!table.nodeType) table = document.getElementById(table)
+ const ctx = { worksheet: 'Worksheet', table: table.innerHTML }
+ window.location.href = uri + base64(format(template, ctx))
+ console.log(ctx)
+ }
+})()
+
diff --git a/src/vendor/htmlToPdf.js b/src/vendor/htmlToPdf.js
new file mode 100644
index 00000000..3cef9ee3
--- /dev/null
+++ b/src/vendor/htmlToPdf.js
@@ -0,0 +1,78 @@
+// // /* eslint-disable */
+// // import html2Canvas from 'html2canvas'
+// // import JsPDF from 'jspdf'
+// // export default{
+// // install (Vue, options) {
+// // Vue.prototype.getPdf = function (id) {
+// // let title = this.htmlTitle
+// // html2Canvas(document.querySelector(`#${id}`), {
+// // allowTaint: true
+// // }).then(function (canvas) {
+// // let contentWidth = canvas.width
+// // let contentHeight = canvas.height
+// // let pageHeight = contentWidth / 592.28 * 841.89 //一页pdf显示html页面生成的canvas高度;
+// // let leftHeight = contentHeight //未生成pdf的html页面高度
+// // let position = 0 //页面偏移
+// // let imgWidth = 595.28 //a4纸的尺寸[595.28,841.89],html页面生成的canvas在pdf中图片的宽高
+// // let imgHeight = 592.28 / contentWidth * contentHeight
+// // let pageData = canvas.toDataURL('image/jpeg', 1.0)
+// // window.print(pageData)
+// // let PDF = new JsPDF('', 'pt', 'a4')
+// // if (leftHeight < pageHeight) { //当内容未超过pdf一页显示的范围,无需分页
+// // PDF.addImage(pageData, 'JPEG', 0, 0, imgWidth, imgHeight)
+// // } else {
+// // while (leftHeight > 0) {
+// // PDF.addImage(pageData, 'JPEG', 0, position, imgWidth, imgHeight)
+// // leftHeight -= pageHeight
+// // position -= 841.89
+// // if (leftHeight > 0) { //避免添加空白页
+// // PDF.addPage()
+// // }
+// // }
+// // }
+// // PDF.save(title + '.pdf')
+// // }
+// // )
+// // }
+// // }
+// // }
+//
+// /* eslint-disable */
+// import html2Canvas from 'html2canvas'
+// import JsPDF from 'jspdf'
+// export default{
+// install (Vue, options) {
+// Vue.prototype.getPdf = function (id) {
+// let title = this.htmlTitle
+// html2Canvas(document.querySelector(`#${id}`), {
+// allowTaint: true
+// }).then(function (canvas) {
+// let contentWidth = canvas.width
+// let contentHeight = canvas.height
+// let pageHeight = contentWidth / 592.28 * 841.89 //一页pdf显示html页面生成的canvas高度;
+// let leftHeight = contentHeight //未生成pdf的html页面高度
+// let position = 0 //页面偏移
+// let imgWidth = 595.28 //a4纸的尺寸[595.28,841.89],html页面生成的canvas在pdf中图片的宽高
+// let imgHeight = 592.28 / contentWidth * contentHeight
+// let pageData = canvas.toDataURL('image/jpeg', 1.0)
+// window.print(pageData)
+// let PDF = new JsPDF('', 'pt', 'a4')
+// if (leftHeight < pageHeight) { //当内容未超过pdf一页显示的范围,无需分页
+// PDF.addImage(pageData, 'JPEG', 0, 0, imgWidth, imgHeight)
+// } else {
+// while (leftHeight > 0) {
+// PDF.addImage(pageData, 'JPEG', 0, position, imgWidth, imgHeight)
+// leftHeight -= pageHeight
+// position -= 841.89
+// if (leftHeight > 0) { //避免添加空白页
+// PDF.addPage()
+// }
+// }
+// }
+// PDF.save(title + '.pdf')
+// }
+// )
+// }
+// }
+// }
+//
diff --git a/src/vendor/int2Chinese.js b/src/vendor/int2Chinese.js
new file mode 100644
index 00000000..b3e1df00
--- /dev/null
+++ b/src/vendor/int2Chinese.js
@@ -0,0 +1,85 @@
+export function convertCurrency(money) {
+ // 汉字的数字
+ const cnNums = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖']
+ // 基本单位
+ const cnIntRadice = ['', '拾', '佰', '仟']
+ // 对应整数部分扩展单位
+ const cnIntUnits = ['', '万', '亿', '兆']
+ // 对应小数部分单位
+ const cnDecUnits = ['角', '分', '毫', '厘']
+ // 整数金额时后面跟的字符
+ const cnInteger = '整'
+ // 整型完以后的单位
+ const cnIntLast = '元'
+ // 最大处理的数字
+ const maxNum = 999999999999999.9999
+ // 金额整数部分
+ let integerNum
+ // 金额小数部分
+ let decimalNum
+ // 输出的中文金额字符串
+ let chineseStr = ''
+ // 分离金额后用的数组,预定义
+ let parts
+ if (money === '') { return '' }
+ money = parseFloat(money)
+ if (money >= maxNum) {
+ // 超出最大处理数字
+ return ''
+ }
+ if (money === 0) {
+ chineseStr = cnNums[0] + cnIntLast + cnInteger
+ return chineseStr
+ }
+ // 转换为字符串
+ money = money.toString()
+ if (money.indexOf('.') === -1) {
+ integerNum = money
+ decimalNum = ''
+ } else {
+ parts = money.split('.')
+ integerNum = parts[0]
+ decimalNum = parts[1].substr(0, 4)
+ }
+ // 获取整型部分转换
+ if (parseInt(integerNum, 10) > 0) {
+ let zeroCount = 0
+ const IntLen = integerNum.length
+ for (let i = 0; i < IntLen; i++) {
+ const n = integerNum.substr(i, 1)
+ const p = IntLen - i - 1
+ const q = p / 4
+ const m = p % 4
+ if (n === '0') {
+ zeroCount++
+ } else {
+ if (zeroCount > 0) {
+ chineseStr += cnNums[0]
+ }
+ // 归零
+ zeroCount = 0
+ chineseStr += cnNums[parseInt(n)] + cnIntRadice[m]
+ }
+ if (m === 0 && zeroCount < 4) {
+ chineseStr += cnIntUnits[q]
+ }
+ }
+ chineseStr += cnIntLast
+ }
+ // 小数部分
+ if (decimalNum !== '') {
+ const decLen = decimalNum.length
+ for (let i = 0; i < decLen; i++) {
+ const n = decimalNum.substr(i, 1)
+ if (n !== '0') {
+ chineseStr += cnNums[Number(n)] + cnDecUnits[i]
+ }
+ }
+ }
+ if (chineseStr === '') {
+ chineseStr += cnNums[0] + cnIntLast + cnInteger
+ } else if (decimalNum === '') {
+ chineseStr += cnInteger
+ }
+ return chineseStr
+}
diff --git a/src/vendor/print.js b/src/vendor/print.js
new file mode 100644
index 00000000..5a76434d
--- /dev/null
+++ b/src/vendor/print.js
@@ -0,0 +1,117 @@
+/* eslint-disable */
+ let Print = function(dom, options) {
+ if (!(this instanceof Print)) return new Print(dom, options)
+
+ this.options = this.extend({
+ 'noPrint': '.no-print'
+ }, options)
+
+ if ((typeof dom) === 'string') {
+ this.dom = document.querySelector(dom)
+ } else {
+ this.dom = dom
+ }
+
+ this.init()
+ }
+ Print.prototype = {
+ init: function() {
+ let content = this.getStyle() + this.getHtml()
+ this.writeIframe(content)
+ },
+ extend: function(obj, obj2) {
+ for (let k in obj2) {
+ obj[k] = obj2[k]
+ }
+ return obj
+ },
+
+ getStyle: function() {
+ let str = '',
+ styles = document.querySelectorAll('style,link')
+ for (let i = 0; i < styles.length; i++) {
+ str += styles[i].outerHTML
+ }
+ str += ''
+
+ return str
+ },
+
+ getHtml: function() {
+ let inputs = document.querySelectorAll('input')
+ let textareas = document.querySelectorAll('textarea')
+ let selects = document.querySelectorAll('select')
+
+ for (let k in inputs) {
+ if (inputs[k].type === 'checkbox' || inputs[k].type === 'radio') {
+ if (inputs[k].checked === true) {
+ inputs[k].setAttribute('checked', 'checked')
+ } else {
+ inputs[k].removeAttribute('checked')
+ }
+ } else if (inputs[k].type === 'text') {
+ inputs[k].setAttribute('value', inputs[k].value)
+ }
+ }
+
+ for (let k2 in textareas) {
+ if (textareas[k2].type === 'textarea') {
+ textareas[k2].innerHTML = textareas[k2].value
+ }
+ }
+
+ for (let k3 in selects) {
+ if (selects[k3].type === 'select-one') {
+ let child = selects[k3].children
+ for (let i in child) {
+ if (child[i].tagName === 'OPTION') {
+ if (child[i].selected === true) {
+ child[i].setAttribute('selected', 'selected')
+ } else {
+ child[i].removeAttribute('selected')
+ }
+ }
+ }
+ }
+ }
+
+ return this.dom.outerHTML
+ },
+
+ writeIframe: function(content) {
+ let w, doc, iframe = document.createElement('iframe'),
+ f = document.body.appendChild(iframe)
+ iframe.id = 'myIframe'
+ iframe.style = 'position:absolutewidth:0height:0top:-10pxleft:-10px'
+
+ w = f.contentWindow || f.contentDocument
+ doc = f.contentDocument || f.contentWindow.document
+ doc.open()
+ doc.write(content)
+ doc.close()
+ this.toPrint(w)
+
+ setTimeout(function() {
+ document.body.removeChild(iframe)
+ }, 100)
+ },
+
+ toPrint: function(frameWindow) {
+ try {
+ setTimeout(function() {
+ frameWindow.focus()
+ try {
+ if (!frameWindow.document.execCommand('print', false, null)) {
+ frameWindow.print()
+ }
+ } catch (e) {
+ frameWindow.print()
+ }
+ frameWindow.close()
+ }, 10)
+ } catch (err) {
+ console.log('err', err)
+ }
+ }
+ }
+ export default Print
diff --git a/src/views/404.vue b/src/views/404.vue
new file mode 100644
index 00000000..aa9adcf1
--- /dev/null
+++ b/src/views/404.vue
@@ -0,0 +1,229 @@
+
+
+
+
+
+
OOPS!
+
+
{{ message }}
+
请检查您输入的网址是否正确,请点击以下按钮返回主页或者发送错误报告
+
返回首页
+
+
+
+
+
+
+
+
diff --git a/src/views/BasicData/PersonnelManagement/123.vue b/src/views/BasicData/PersonnelManagement/123.vue
new file mode 100644
index 00000000..fb6decc0
--- /dev/null
+++ b/src/views/BasicData/PersonnelManagement/123.vue
@@ -0,0 +1,1245 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/BasicData/PersonnelManagement/index.vue b/src/views/BasicData/PersonnelManagement/index.vue
new file mode 100644
index 00000000..76cbc503
--- /dev/null
+++ b/src/views/BasicData/PersonnelManagement/index.vue
@@ -0,0 +1,580 @@
+
+
+
+
+
+ 新增
+ 编辑
+ 删除
+
+
+
+
+ 人员名称:
+
+
+
+ 新增
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 部门维护
+ 展开
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.节点名称 }}
+
+
+
+
+ {{ scope.row.考勤编号 }}
+
+
+
+
+ {{ scope.row.密码 }}
+
+
+
+
+ {{ scope.row.姓名 }}
+
+
+
+
+ {{ scope.row.性别 }}
+
+
+
+
+ {{ scope.row.身份证号 }}
+
+
+
+
+ {{ scope.row.学历名称 }}
+
+
+
+
+ {{ scope.row.入公司时间 }}
+
+
+
+
+ {{ scope.row.出生日期 }}
+
+
+
+
+ {{ scope.row.联系电话 }}
+
+
+
+
+ {{ scope.row.岗位名称 }}
+
+
+
+
+ {{ scope.row.民族 }}
+
+
+
+
+ {{ scope.row.家庭住址 }}
+
+
+
+
+ 编辑
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/BasicData/UserRightsManagement/index.vue b/src/views/BasicData/UserRightsManagement/index.vue
new file mode 100644
index 00000000..33d6df25
--- /dev/null
+++ b/src/views/BasicData/UserRightsManagement/index.vue
@@ -0,0 +1,259 @@
+
+
+
+
+ 角色名称:
+
+
+
+ 添加模块(开发使用)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 选择模块名称是修改,没选择是增加
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/ManufacturingCenter/DiscardedPartsInquiry/index.vue b/src/views/ManufacturingCenter/DiscardedPartsInquiry/index.vue
new file mode 100644
index 00000000..ba3f9445
--- /dev/null
+++ b/src/views/ManufacturingCenter/DiscardedPartsInquiry/index.vue
@@ -0,0 +1,399 @@
+
+
+
+
+ 项目名称:
+
+
+
+ 机床图号:
+
+
+
+ 查询
+
+
+
+
+
+
+ {{ scope.row.机床流水号 }}
+
+
+
+
+ {{ scope.row.机床图号 }}
+
+
+
+
+ {{ scope.row.停产零件种类 }}
+
+
+
+
+ {{ scope.row.停产零件数量 }}
+
+
+
+
+ {{ scope.row.已加工工时 }}
+
+
+
+
+
+
+
+
+
+ 组号:
+
+
+
+ 零件图号:
+
+ 查询
+
+
+
+
+
+
+ {{ scope.row.组号 }}
+
+
+
+
+ {{ scope.row.零件图号 }}
+
+
+
+
+ {{ scope.row.零件名称 }}
+
+
+
+
+ {{ scope.row.投产数量 }}
+
+
+
+
+ {{ scope.row.停产时间 }}
+
+
+
+
+ {{ scope.row.停产原因 }}
+
+
+
+
+ {{ scope.row.加工工时 }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.工序顺序 }}
+
+
+
+
+ {{ scope.row.工艺名称 }}
+
+
+
+
+ {{ scope.row.工艺要求 }}
+
+
+
+
+ {{ scope.row.单件定额工时 }}
+
+
+
+
+ {{ scope.row.准结定额工时 }}
+
+
+
+
+ {{ scope.row.工序状态 }}
+
+
+
+
+ {{ scope.row.工序工时 }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/ManufacturingCenter/GroupMatching/index.vue b/src/views/ManufacturingCenter/GroupMatching/index.vue
new file mode 100644
index 00000000..a5e4c68d
--- /dev/null
+++ b/src/views/ManufacturingCenter/GroupMatching/index.vue
@@ -0,0 +1,468 @@
+
+
+
+ 项目名称:
+
+
+
+ 机床号:
+
+ 组号:
+
+ 年:
+
+ 月:
+
+
+
+ 入库时间:
+
+ 查询
+
+
+
+
+
+
+ {{ scope.row.零件图号 }}
+
+
+
+
+ {{ scope.row.零件名称 }}
+
+
+
+
+ {{ scope.row.投产数量 }}
+
+
+
+
+ {{ scope.row.入库数量 }}
+
+
+
+
+ {{ scope.row.类别 }}
+
+
+
+
+ {{ scope.row.计划完成时间 }}
+
+
+
+
+ {{ scope.row.入库时间 }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.机床图号 }}
+
+
+
+
+ {{ scope.row.机床名称 }}
+
+
+
+
+ {{ scope.row.机床开始时间 }}
+
+
+
+
+ {{ scope.row.机床结束时间 }}
+
+
+
+
+ {{ scope.row.工位属性 }}
+
+
+
+
+ {{ scope.row.机床主管 }}
+
+
+
+
+
+
+ 提交
+
+
+
+
+
+
+ {{ scope.row.机床图号 }}
+
+
+
+
+ {{ scope.row.机床名称 }}
+
+
+
+
+ {{ scope.row.组号 }}
+
+
+
+
+ {{ scope.row.组件名称 }}
+
+
+
+
+ {{ scope.row.组件介绍 }}
+
+
+
+
+
+
+ 提交
+
+
+
+
+
+
+
diff --git a/src/views/ManufacturingCenter/InitialProduction/index.vue b/src/views/ManufacturingCenter/InitialProduction/index.vue
new file mode 100644
index 00000000..16eeca05
--- /dev/null
+++ b/src/views/ManufacturingCenter/InitialProduction/index.vue
@@ -0,0 +1,968 @@
+
+
+
+
+
+
+
+
+
+ 正常件投产
+ 整改件投产
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 查询
+
+
+
+
+
+
+
+
+
+
+ ~
+
+
+
+
+
+
+
+
+ ~
+
+
+
+
+
+
+
+
+ ~
+
+
+
+
+
+
+
+
+ ~
+
+
+
+
+
+
+
+
+ ~
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.零件图号 }}
+
+
+
+
+ {{ scope.row.零件名称 }}
+
+
+
+
+ {{ scope.row.投产总数量 }}
+
+
+
+
+ {{ scope.row.最大投产批次 }}
+
+
+
+
+ {{ scope.row.已投产数量 }}
+
+
+
+
+ {{ scope.row.未投产数量 }}
+
+
+
+
+ {{ scope.row.零件类型名称 }}
+
+
+
+
+
+ 外协
+
+
+
+
+
+ 带料
+
+
+
+
+
+ 着急
+
+
+
+
+
+
+
+
+
+
+ 分批投产
+ 打回档案
+
+
+
+
+
+ 是否白图
+ 是否高难度
+ 投产
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.零件图号 }}
+
+
+ {{ scope.row.零件名称 }}
+
+
+ {{ scope.row.投产总数量 }}
+
+
+ {{ scope.row.未投产数量 }}
+
+
+ {{ scope.row.投产批次 }}
+
+
+ {{ scope.row.批次数量 }}
+
+
+ {{ scope.row.是否外协 }}
+
+
+ {{ scope.row.是否带料 }}
+
+
+ {{ scope.row.机加工开始时间 }}
+
+
+ {{ scope.row.机加工结束时间 }}
+
+
+
+ 编辑
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 取消
+ 确 定
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/ManufacturingCenter/OwnTimeStatistics/index.vue b/src/views/ManufacturingCenter/OwnTimeStatistics/index.vue
new file mode 100644
index 00000000..292ac286
--- /dev/null
+++ b/src/views/ManufacturingCenter/OwnTimeStatistics/index.vue
@@ -0,0 +1,202 @@
+
+
+
+
+ 项目名称:
+
+
+
+ 开始日期:
+
+ 结束日期:
+
+
+ 天
+ 周
+ 月
+
+ 查询
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/ManufacturingCenter/PartAssignment/index.vue b/src/views/ManufacturingCenter/PartAssignment/index.vue
new file mode 100644
index 00000000..b10cc0e0
--- /dev/null
+++ b/src/views/ManufacturingCenter/PartAssignment/index.vue
@@ -0,0 +1,773 @@
+
+
+
+
+ 项目名称:
+
+
+
+ 机床编号:
+
+
+
+ 组号:
+
+
+
+ 查询
+
+
+
+
+
+
+ {{ scope.row.项目名称 }}
+
+
+
+
+ {{ scope.row.机床图号 }}
+
+
+
+
+ {{ scope.row.机床名称 }}
+
+
+
+
+ {{ scope.row.组号 }}
+
+
+
+
+ {{ scope.row.组件名称 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.零件名称 }}
+
+
+
+
+ {{ scope.row.物料规格 }}
+
+
+
+
+ {{ scope.row.物料型号 }}
+
+
+
+
+ {{ scope.row.零件数量 }}
+
+
+
+
+ {{ scope.row.库存量 }}
+
+
+
+
+ {{ scope.row.备注 }}
+
+
+
+
+
+
+
+
+
+ {{ scope.row.物料名称 }}
+
+
+
+
+ {{ scope.row.物料规格 }}
+
+
+
+
+ {{ scope.row.物料型号 }}
+
+
+
+
+ {{ scope.row.零件数量 }}
+
+
+
+
+ {{ scope.row.库存量 }}
+
+
+
+
+ {{ scope.row.备注 }}
+
+
+
+
+
+
+
+
+
+ {{ scope.row.物料名称 }}
+
+
+
+
+ {{ scope.row.物料规格 }}
+
+
+
+
+ {{ scope.row.物料型号 }}
+
+
+
+
+ {{ scope.row.零件数量 }}
+
+
+
+
+ {{ scope.row.库存量 }}
+
+
+
+
+ {{ scope.row.备注 }}
+
+
+
+
+
+ 物料计划到货时间:
+
+ 车间请购
+ 采购部门采购
+ 车间生产
+
+
+
+ 请购单号:
+
+ 查询
+ 创建
+ 导出Excel
+
+
+
+
+
+
+ {{ scope.row.请购单编号 }}
+
+
+
+
+ {{ scope.row.请购车间 }}
+
+
+
+
+ {{ scope.row.请购人 }}
+
+
+
+
+ {{ scope.row.请购时间 }}
+
+
+
+
+ 编辑
+ 删除
+
+
+
+
+
+
+
+
+ {{ scope.row.物料名称 }}
+
+
+
+
+ {{ scope.row.物料规格 }}
+
+
+
+
+ {{ scope.row.物料型号 }}
+
+
+
+
+ {{ scope.row.零件数量 }}
+
+
+
+
+ {{ scope.row.零件类型 }}
+
+
+
+
+ {{ scope.row.物料计划到货时间 }}
+
+
+
+
+ {{ scope.row.项目名称 }}
+
+
+
+
+ {{ scope.row.机床图号 }}
+
+
+
+
+ {{ scope.row.组号 }}
+
+
+
+
+ 移出
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/ManufacturingCenter/PartWorkCraftSelect_rdlc/index.vue b/src/views/ManufacturingCenter/PartWorkCraftSelect_rdlc/index.vue
new file mode 100644
index 00000000..363e9397
--- /dev/null
+++ b/src/views/ManufacturingCenter/PartWorkCraftSelect_rdlc/index.vue
@@ -0,0 +1,721 @@
+
+
+
+ 零件号:
+
+ 查询
+ 导出工艺定额卡
+ 导出加工路线单
+
+
+
+
+
+
+ {{ scope.row.零件图号 }}
+
+
+
+
+ {{ scope.row.零件名称 }}
+
+
+
+
+ {{ scope.row.投产总数量 }}
+
+
+
+
+
+
+
+
+
+
+
+ | GAOJING |
+ 工艺、定额卡 |
+ 零件图号 |
+ {{ 零件图号 }} |
+
+
+ | 零件名称 |
+ {{ 零件名称 }} |
+ 数量 |
+ {{ 投产数量 }} |
+
+
+ | 江苏高精机电装备有限公司 |
+ 材料 |
+ 原材料规格 |
+
+
+ | 机床号 |
+ {{ 机床号 }} |
+ 组号 |
+ {{ 组号 }} |
+ {{ 材料 }} |
+ {{ 原材料规格 }} |
+
+
+ | 序次 |
+ 工艺名称 |
+ 工艺要求 |
+ 定额工时 |
+
+
+ | 单件 |
+ 准结 |
+
+
+
+
+ | 1 |
+ |
+ |
+ |
+ |
+
+
+ | 2 |
+ |
+ |
+ |
+ |
+
+
+ | 3 |
+ |
+ |
+ |
+ |
+
+
+ | 4 |
+ |
+ |
+ |
+ |
+
+
+ | 5 |
+ |
+ |
+ |
+ |
+
+
+ | 6 |
+ |
+ |
+ |
+ |
+
+
+ | 7 |
+ |
+ |
+ |
+ |
+
+
+ | 8 |
+ |
+ |
+ |
+ |
+
+
+ | 9 |
+ |
+ |
+ |
+ |
+
+
+ | 10 |
+ |
+ |
+ |
+ |
+
+
+ | 11 |
+ |
+ |
+ |
+ |
+
+
+ | 12 |
+ |
+ |
+ |
+ |
+
+
+ | 13 |
+ |
+ |
+ |
+ |
+
+
+ | 14 |
+ |
+ |
+ |
+ |
+
+
+ | 15 |
+ |
+ |
+ |
+ |
+
+
+ | 16 |
+ |
+ |
+ |
+ |
+
+
+ | 17 |
+ |
+ |
+ |
+ |
+
+
+ | 18 |
+ |
+ |
+ |
+ |
+
+
+ | 19 |
+ |
+ |
+ |
+ |
+
+
+ | 20 |
+ |
+ |
+ |
+ |
+
+
+
+
+ | 工艺员: |
+ {{ 工艺员 }} |
+ 定额员: |
+ {{ 定额员 }} |
+ 日期: |
+ {{ 日期 }} |
+
+
+
+
+
+
+
+
+ 江苏高精机电 装备有限公司 |
+ 零件加工路线单 |
+ 毛 坯 别 铸 锻 铆 锯 材 |
+
+
+ | 材料 |
+ {{ 材料 }} |
+ 材料规格 |
+ {{ 原材料规格 }} |
+
+
+ | 机床号 |
+ 组号 |
+ 零件图号 |
+ 零件名称 |
+ 数量 |
+
+
+ | {{ 机床号 }} |
+ {{ 组号 }} |
+ {{ 零件图号 }} |
+ {{ 零件名称 }} |
+ {{ 投产数量 }} |
+
+
+ | 工序 |
+ 工时定额 |
+ 工作者 (设备) |
+ 检查结果 |
+ 检章 |
+ 计划完成日期 |
+ 月/日 |
+
+
+ | 次序 |
+ 名称 |
+ 单件 |
+ 准结 |
+ 合格 |
+ 回用 |
+ 废品 |
+
+
+ | 工 |
+ 料 |
+
+
+
+
+ | 1 |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+
+
+ | 2 |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+
+
+ | 3 |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+
+
+ | 4 |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+
+
+ | 5 |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+
+
+ | 6 |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+
+
+ | 7 |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+
+
+ | 8 |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+
+
+ | 9 |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+
+
+ | 10 |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+
+
+ | 11 |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+
+
+ | 12 |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+
+
+ | 13 |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+
+
+ | 14 |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+
+
+ | 15 |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+
+
+ | 16 |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+
+
+ | 17 |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+
+
+ | 18 |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+
+
+ | 19 |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+
+
+ | 20 |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/ManufacturingCenter/ProcessPlanning/index.vue b/src/views/ManufacturingCenter/ProcessPlanning/index.vue
new file mode 100644
index 00000000..bf114849
--- /dev/null
+++ b/src/views/ManufacturingCenter/ProcessPlanning/index.vue
@@ -0,0 +1,1109 @@
+
+
+
+
+
+ 未编制
+ 已编制
+
+ 工艺员:
+
+
+
+ 零件号:
+
+
+
+ 查询
+ 在制零件工艺调整
+ 切换编辑模式
+
+ 种类:
+
+ 零件名称:
+
+ 材质:
+
+
+
+
+ 是否核准
+ 规格:
+
+ 投产总数量:
+
+
+
+
+
+
+ 输入数值:
+
+ 选择参数:
+
+
+
+ 公差:
+
+ 计算公差
+
+ 复制并保存
+ 粘贴
+ 典艺
+ 完艺
+ 删除
+ 保存
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.value }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 查询
+
+
+
+ {{ scope.row.材料 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 确定选择
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 查询
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 工艺拷贝
+
+
+
+
+
+ {{ scope.row.工艺序号 }}
+
+
+
+
+ {{ scope.row.工艺名称 }}
+
+
+
+
+ {{ scope.row.工艺要求 }}
+
+
+
+
+ {{ scope.row.工艺难度等级 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 查询
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 工艺拷贝
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.工序顺序 }}
+
+
+
+
+ {{ scope.row.工艺名称 }}
+
+
+
+
+ {{ scope.row.工艺要求 }}
+
+
+
+
+ {{ scope.row.单件定额工时 }}
+
+
+
+
+ {{ scope.row.准结定额工时 }}
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.考勤编号 }}
+
+
+
+
+ {{ scope.row.姓名 }}
+
+
+
+
+ {{ scope.row.性别 }}
+
+
+
+
+ {{ scope.row.岗位名称 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/ManufacturingCenter/ProcessTaskAssignment/index.vue b/src/views/ManufacturingCenter/ProcessTaskAssignment/index.vue
new file mode 100644
index 00000000..e56ed66b
--- /dev/null
+++ b/src/views/ManufacturingCenter/ProcessTaskAssignment/index.vue
@@ -0,0 +1,375 @@
+
+
+
+
+ 当天
+ 全部
+
+ 项目名称:
+
+
+
+ 机床图号:
+
+
+
+ 组号:
+
+
+
+ 全选
+ 保存
+
+
+
+
+
+
+ {{ scope.row.零件号 }}
+
+
+
+
+ {{ scope.row.零件名称 }}
+
+
+
+
+ {{ scope.row.工艺开始时间 }}
+
+
+
+
+ {{ scope.row.工艺结束时间 }}
+
+
+
+
+
+
+
+
+
+ {{ scope.row.数量 }}
+
+
+
+
+ {{ scope.row.投产时间 }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.考勤编号 }}
+
+
+
+
+ {{ scope.row.姓名 }}
+
+
+
+
+ {{ scope.row.性别 }}
+
+
+
+
+ {{ scope.row.岗位名称 }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/ManufacturingCenter/ProcessingStatus/index.vue b/src/views/ManufacturingCenter/ProcessingStatus/index.vue
new file mode 100644
index 00000000..58f6697d
--- /dev/null
+++ b/src/views/ManufacturingCenter/ProcessingStatus/index.vue
@@ -0,0 +1,564 @@
+
+
+
+
+ 项目名称:
+
+
+
+ 机床号:
+
+
+
+ 组号:
+
+
+
+
+
+ 是否外协:
+
+
+
+ 零件号:
+
+ 查询
+ 进度颜色:
+ 全部
+ 拖期
+ 即将拖期
+ 如期
+ 工序外协
+
+
+
+
+
+
+
+ {{ 零件图号[scope.$index] }}
+
+
+ {{ 零件名称[scope.$index] }}
+
+
+ {{ 投产数量[scope.$index] }}
+
+
+
+
+
+
{{ process[scope.$index][0] }}
{{ planDate[scope.$index][0] }}
{{ realDate[scope.$index][0] }}
{{ worker[scope.$index][0] }}
+
+
+
+
+
+
+
{{ process[scope.$index][1] }}
{{ planDate[scope.$index][1] }}
{{ realDate[scope.$index][1] }}
{{ worker[scope.$index][1] }}
+
+
+
+
+
+
+
{{ process[scope.$index][2] }}
{{ planDate[scope.$index][2] }}
{{ realDate[scope.$index][2] }}
{{ worker[scope.$index][2] }}
+
+
+
+
+
+
+
{{ process[scope.$index][3] }}
{{ planDate[scope.$index][3] }}
{{ realDate[scope.$index][3] }}
{{ worker[scope.$index][3] }}
+
+
+
+
+
+
+
{{ process[scope.$index][4] }}
{{ planDate[scope.$index][4] }}
{{ realDate[scope.$index][4] }}
{{ worker[scope.$index][4] }}
+
+
+
+
+
+
+
{{ process[scope.$index][5] }}
{{ planDate[scope.$index][5] }}
{{ realDate[scope.$index][5] }}
{{ worker[scope.$index][5] }}
+
+
+
+
+
+
+
{{ process[scope.$index][6] }}
{{ planDate[scope.$index][6] }}
{{ realDate[scope.$index][6] }}
{{ worker[scope.$index][6] }}
+
+
+
+
+
+
+
{{ process[scope.$index][7] }}
{{ planDate[scope.$index][7] }}
{{ realDate[scope.$index][7] }}
{{ worker[scope.$index][7] }}
+
+
+
+
+
+
+
{{ process[scope.$index][8] }}
{{ planDate[scope.$index][8] }}
{{ realDate[scope.$index][8] }}
{{ worker[scope.$index][8] }}
+
+
+
+
+
+
+
{{ process[scope.$index][9] }}
{{ planDate[scope.$index][9] }}
{{ realDate[scope.$index][9] }}
{{ worker[scope.$index][9] }}
+
+
+
+
+
+
+
{{ process[scope.$index][10] }}
{{ planDate[scope.$index][10] }}
{{ realDate[scope.$index][10] }}
{{ worker[scope.$index][10] }}
+
+
+
+
+
+
+
{{ process[scope.$index][11] }}
{{ planDate[scope.$index][11] }}
{{ realDate[scope.$index][11] }}
{{ worker[scope.$index][11] }}
+
+
+
+
+
+
+
{{ process[scope.$index][12] }}
{{ planDate[scope.$index][12] }}
{{ realDate[scope.$index][12] }}
{{ worker[scope.$index][12] }}
+
+
+
+
+
+
+
{{ process[scope.$index][13] }}
{{ planDate[scope.$index][13] }}
{{ realDate[scope.$index][13] }}
{{ worker[scope.$index][13] }}
+
+
+
+
+
+
+
{{ process[scope.$index][14] }}
{{ planDate[scope.$index][14] }}
{{ realDate[scope.$index][14] }}
{{ worker[scope.$index][14] }}
+
+
+
+
+
+
+
{{ process[scope.$index][15] }}
{{ planDate[scope.$index][15] }}
{{ realDate[scope.$index][15] }}
{{ worker[scope.$index][15] }}
+
+
+
+
+
+
+
{{ process[scope.$index][16] }}
{{ planDate[scope.$index][16] }}
{{ realDate[scope.$index][16] }}
{{ worker[scope.$index][16] }}
+
+
+
+
+
+
+
{{ process[scope.$index][17] }}
{{ planDate[scope.$index][17] }}
{{ realDate[scope.$index][17] }}
{{ worker[scope.$index][17] }}
+
+
+
+
+
+
+
{{ process[scope.$index][18] }}
{{ planDate[scope.$index][18] }}
{{ realDate[scope.$index][18] }}
{{ worker[scope.$index][18] }}
+
+
+
+
+
+
+
{{ process[scope.$index][19] }}
{{ planDate[scope.$index][19] }}
{{ realDate[scope.$index][19] }}
{{ worker[scope.$index][19] }}
+
+
+
+
+
+
+
{{ process[scope.$index][20] }}
{{ planDate[scope.$index][20] }}
{{ realDate[scope.$index][20] }}
{{ worker[scope.$index][20] }}
+
+
+
+
+
+
+
{{ process[scope.$index][21] }}
{{ planDate[scope.$index][21] }}
{{ realDate[scope.$index][21] }}
{{ worker[scope.$index][21] }}
+
+
+
+
+
+
+
{{ process[scope.$index][22] }}
{{ planDate[scope.$index][22] }}
{{ realDate[scope.$index][22] }}
{{ worker[scope.$index][22] }}
+
+
+
+
+
+
+
{{ process[scope.$index][23] }}
{{ planDate[scope.$index][23] }}
{{ realDate[scope.$index][23] }}
{{ worker[scope.$index][23] }}
+
+
+
+
+
+
+
{{ process[scope.$index][24] }}
{{ planDate[scope.$index][24] }}
{{ realDate[scope.$index][24] }}
{{ worker[scope.$index][24] }}
+
+
+
+
+
+
+
{{ process[scope.$index][25] }}
{{ planDate[scope.$index][25] }}
{{ realDate[scope.$index][25] }}
{{ worker[scope.$index][25] }}
+
+
+
+
+
+
+
{{ process[scope.$index][26] }}
{{ planDate[scope.$index][26] }}
{{ realDate[scope.$index][26] }}
{{ worker[scope.$index][26] }}
+
+
+
+
+
+
+
{{ process[scope.$index][27] }}
{{ planDate[scope.$index][27] }}
{{ realDate[scope.$index][27] }}
{{ worker[scope.$index][27] }}
+
+
+
+
+
+
+
{{ process[scope.$index][28] }}
{{ planDate[scope.$index][28] }}
{{ realDate[scope.$index][28] }}
{{ worker[scope.$index][28] }}
+
+
+
+
+
+
+
{{ process[scope.$index][29] }}
{{ planDate[scope.$index][29] }}
{{ realDate[scope.$index][29] }}
{{ worker[scope.$index][29] }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/ManufacturingCenter/QuotaFormulation/index.vue b/src/views/ManufacturingCenter/QuotaFormulation/index.vue
new file mode 100644
index 00000000..e893d321
--- /dev/null
+++ b/src/views/ManufacturingCenter/QuotaFormulation/index.vue
@@ -0,0 +1,352 @@
+
+
+
+
+
+ 未编制
+ 已编制
+
+ 定额员:
+
+
+
+ 零件号:
+
+
+
+ 查询
+ 未编制的数量{{ partNum.length }}
+ {{ shuliang }}
+
+
+
+ 种类:
+
+ 零件名称:
+
+ 投产总数量:
+
+ 材质:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 保存
+ 保存
+
+
+
+
+
+
+
+
+
diff --git a/src/views/ManufacturingCenter/RepairTimeEntry/index.vue b/src/views/ManufacturingCenter/RepairTimeEntry/index.vue
new file mode 100644
index 00000000..71056898
--- /dev/null
+++ b/src/views/ManufacturingCenter/RepairTimeEntry/index.vue
@@ -0,0 +1,390 @@
+
+
+
+
+
+ 人员名称:
+
+
+
+ 查询
+ 新增
+
+
+
+
+
+
+
+
+ {{ scope.row.工艺名称 }}
+
+
+
+
+ {{ scope.row.修补工时 }}
+
+
+
+
+ {{ scope.row.年 }}
+
+
+
+
+ {{ scope.row.月 }}
+
+
+
+
+ {{ scope.row.姓名 }}
+
+
+
+
+ {{ scope.row.操作时间 }}
+
+
+
+
+ 编辑
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 取消
+ 确 定
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.考勤编号 }}
+
+
+
+
+ {{ scope.row.姓名 }}
+
+
+
+
+ {{ scope.row.性别 }}
+
+
+
+
+ {{ scope.row.岗位名称 }}
+
+
+
+
+ 取消
+ 确认
+
+
+
+
+
+
+
+
diff --git a/src/views/ManufacturingCenter/SparePartsForScrap/index.vue b/src/views/ManufacturingCenter/SparePartsForScrap/index.vue
new file mode 100644
index 00000000..f1bf022b
--- /dev/null
+++ b/src/views/ManufacturingCenter/SparePartsForScrap/index.vue
@@ -0,0 +1,528 @@
+
+
+
+
+
+
+
+ 项目名称:
+
+
+
+
+ 机床号:
+
+
+
+
+ 组号:
+
+
+
+ 零件图号:
+
+ 查询
+
+
+
+
+
+
+ {{ scope.row.零件图号 }}
+
+
+ {{ scope.row.零件名称 }}
+
+
+ {{ scope.row.批次数量 }}
+
+
+ {{ scope.row.机加工开始时间 }}
+
+
+ {{ scope.row.机加工结束时间 }}
+
+
+
+ 停产
+ 正常生产
+
+
+
+
+ 编辑
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.工序顺序 }}
+
+
+ {{ scope.row.工艺名称 }}
+
+
+ {{ scope.row.工艺要求 }}
+
+
+ {{ scope.row.单件定额工时 }}
+
+
+ {{ scope.row.准结定额工时 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 取消
+ 确定
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 确定
+
+
+
+
+ 停产后,将重新补投两种零件,一种是接着加工(执行原来的加工计划),另一种是从第一序重新加工(重新制定零件的加工计划),补投的零件号后加B
+
+ 补投接着加工零件数量
+
+ 开始工序
+
+ 补投接着生产零件
+
+ >>>>制定计划
+
+ 补投重新加工零件数量
+
+ 开始工序
+
+ 补投重新生产零件
+
+
+
+
+
+
+ {{ scope.row.零件图号 }}
+
+
+ {{ scope.row.零件名称 }}
+
+
+ {{ scope.row.批次数量 }}
+
+
+ {{ scope.row.开始工序 }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/ManufacturingCenter/StatusQuery/index.vue b/src/views/ManufacturingCenter/StatusQuery/index.vue
new file mode 100644
index 00000000..b2ff8692
--- /dev/null
+++ b/src/views/ManufacturingCenter/StatusQuery/index.vue
@@ -0,0 +1,512 @@
+
+
+
+
+ 项目名称:
+
+
+
+ 机床号:
+
+ 组号:
+
+ 零件号:
+
+
+ 零件状态:
+
+
+
+ 零件类型:
+
+
+
+ 查询
+
+
+
+
+
+
+
+ {{ scope.row.机床图号 }}
+
+
+
+
+ {{ scope.row.组号 }}
+
+
+
+
+ {{ scope.row.零件图号 }}
+
+
+
+
+ {{ scope.row.零件名称 }}
+
+
+
+
+ {{ scope.row.投产总数量 }}
+
+
+
+
+ {{ scope.row.传递时间 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 编辑
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.机床图号 }}
+
+
+
+
+ {{ scope.row.机床名称 }}
+
+
+
+
+ {{ scope.row.机床开始时间 }}
+
+
+
+
+ {{ scope.row.机床结束时间 }}
+
+
+
+
+ {{ scope.row.工位属性 }}
+
+
+
+
+ {{ scope.row.机床主管 }}
+
+
+
+
+
+
+ 提交
+
+
+
+
+
+
+ {{ scope.row.机床图号 }}
+
+
+
+
+ {{ scope.row.机床名称 }}
+
+
+
+
+ {{ scope.row.组号 }}
+
+
+
+
+ {{ scope.row.组件名称 }}
+
+
+
+
+ {{ scope.row.组件介绍 }}
+
+
+
+
+
+
+ 提交
+
+
+
+
+
+
+
+
diff --git a/src/views/ManufacturingCenter/TypicalProcessMaintenance/index.vue b/src/views/ManufacturingCenter/TypicalProcessMaintenance/index.vue
new file mode 100644
index 00000000..c95d5e7f
--- /dev/null
+++ b/src/views/ManufacturingCenter/TypicalProcessMaintenance/index.vue
@@ -0,0 +1,305 @@
+
+
+
+
+
+
+ 零件分类:
+
+
+
+
+ 零件名称:
+
+
+
+
+ 典型工艺号:
+
+ 查询
+ 增加
+ 保存
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.value }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 确定选择
+
+
+
+
+
+
+
+
+
diff --git a/src/views/ManufacturingCenter/WorkshopEquipmentManagement/index.vue b/src/views/ManufacturingCenter/WorkshopEquipmentManagement/index.vue
new file mode 100644
index 00000000..a6f5bd35
--- /dev/null
+++ b/src/views/ManufacturingCenter/WorkshopEquipmentManagement/index.vue
@@ -0,0 +1,344 @@
+
+
+
+ 设备名称:
+
+ 查询
+ 增加
+
+
+
+
+
+
+ {{ scope.row.设备名称 }}
+
+
+
+
+ {{ scope.row.设备编号 }}
+
+
+
+
+ {{ scope.row.设备型号 }}
+
+
+
+
+ {{ scope.row.设备性能指标 }}
+
+
+
+
+ {{ scope.row.设备加工能力工时 }}
+
+
+
+
+ {{ scope.row.工艺属性 }}
+
+
+
+
+ {{ scope.row.班次类型 }}
+
+
+
+
+ {{ scope.row.设备工时系数 }}
+
+
+
+
+ {{ scope.row.整改工时比例 }}
+
+
+
+
+ {{ scope.row.设备预留工时系数 }}
+
+
+
+
+ 编辑
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/MarketingCenter/BidBond/index.vue b/src/views/MarketingCenter/BidBond/index.vue
new file mode 100644
index 00000000..4ffa32a0
--- /dev/null
+++ b/src/views/MarketingCenter/BidBond/index.vue
@@ -0,0 +1,586 @@
+
+
+
+
+ 未收回
+ 已收回
+ 保金类型:
+
+
+
+ 投标人:
+
+ 招标企业:
+
+ 开始日期:
+
+ 结束日期:
+
+ 查询
+ 增加
+
+
+ 预警颜色说明:
+ 未到时间
+ 即将拖期
+ 已拖期
+ 已收回
+ 履约金
+
+
+
+
+
+
+
+ {{ scope.row.招标企业 }}
+
+
+
+
+ {{ scope.row.联系人 }}
+
+
+
+
+ {{ scope.row.联系电话 }}
+
+
+
+
+ {{ scope.row.保证金金额 }}
+
+
+
+
+ {{ scope.row.投标人 }}
+
+
+
+
+ {{ scope.row.保证金类型 }}
+
+
+
+
+ {{ scope.row.投标日期 }}
+
+
+
+
+ {{ scope.row.预计收回日期 }}
+
+
+
+
+ {{ scope.row.实际收回日期 }}
+
+
+
+
+ 未到预警时间
+ 即将拖期
+ 已拖期
+ 已收回
+
+
+
+
+ {{ scope.row.备注 }}
+
+
+
+
+ 收回
+ 履约
+ 编辑
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.考勤编号 }}
+
+
+
+
+ {{ scope.row.姓名 }}
+
+
+
+
+ {{ scope.row.性别 }}
+
+
+
+
+ {{ scope.row.岗位名称 }}
+
+
+
+
+ 取消
+ 确认
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/MarketingCenter/CRM/index.vue b/src/views/MarketingCenter/CRM/index.vue
new file mode 100644
index 00000000..904f117a
--- /dev/null
+++ b/src/views/MarketingCenter/CRM/index.vue
@@ -0,0 +1,573 @@
+
+
+
+ 客户名称:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 查询
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.省份 }}
+
+
+
+
+
+
+
+ 添加销售经理
+ 销售经理
+
+
+
+ {{ scope.row.省份 }}
+
+
+
+
+ {{ scope.row.姓名 }}
+
+
+
+
+ {{ scope.row.性别 }}
+
+
+
+
+ {{ scope.row.联系电话 }}
+
+
+
+
+ {{ scope.row.出生日期 }}
+
+
+
+
+ 编辑
+ 删除
+
+
+
+
+
+ 新增客户
+ 客户信息
+
+
+
+ {{ scope.row.省份 }}
+
+
+
+
+ {{ scope.row.客户名称 }}
+
+
+
+
+ {{ scope.row.联系人 }}
+
+
+
+
+ {{ scope.row.电话 }}
+
+
+
+
+ {{ scope.row.传真 }}
+
+
+
+
+ {{ scope.row.地址 }}
+
+
+
+
+ {{ scope.row.电子邮箱 }}
+
+
+
+
+ {{ scope.row.税号 }}
+
+
+
+
+ {{ scope.row.银行账号 }}
+
+
+
+
+ {{ scope.row.价值评估 }}
+
+
+
+
+ {{ scope.row.备注 }}
+
+
+
+
+ 编辑
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.考勤编号 }}
+
+
+
+
+ {{ scope.row.姓名 }}
+
+
+
+
+ {{ scope.row.性别 }}
+
+
+
+
+ {{ scope.row.岗位名称 }}
+
+
+
+
+ 取消
+ 确认
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/MarketingCenter/ContractCapitalManagement/index.vue b/src/views/MarketingCenter/ContractCapitalManagement/index.vue
new file mode 100644
index 00000000..21a433ee
--- /dev/null
+++ b/src/views/MarketingCenter/ContractCapitalManagement/index.vue
@@ -0,0 +1,1462 @@
+
+
+
+ 项目名称
+
+
+
+ 销售经理
+
+ 查询收款计划
+ 新增收款计划
+
+ 查看收款信息
+
+
+
+
+
+
+
+
+
+ {{ scope.row.机床图号 }}
+
+
+
+
+ {{ scope.row.机床名称 }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.合同编号 }}
+
+
+
+
+ {{ scope.row.项目名称 }}
+
+
+
+
+ {{ scope.row.付款方式 }}
+
+
+
+
+ {{ scope.row.合同总金额 }}
+
+
+
+
+ {{ scope.row.已支付 }}
+
+
+
+
+ {{ scope.row.未支付金额 }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.姓名 }}
+
+
+
+
+ {{ scope.row.客户名称 }}
+
+
+
+
+ {{ scope.row.联系人 }}
+
+
+
+
+ {{ scope.row.电话 }}
+
+
+
+
+ {{ scope.row.银行账号 }}
+
+
+
+
+ {{ scope.row.税号 }}
+
+
+
+
+ 编辑
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.本次收款金额 }}
+
+
+
+
+ {{ scope.row.本次收款时间 }}
+
+
+
+
+ 编辑
+ 删除
+
+
+
+
+
+
+
+
+ {{ scope.row.应收金额 }}
+
+
+
+
+ {{ scope.row.已收金额 }}
+
+
+
+
+ {{ scope.row.未收金额 }}
+
+
+
+
+ {{ scope.row.转下阶段金额 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.状态 }}
+
+
+
+
+ 收款
+ 转移计划
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 责权省份
+
+
+
+
+
+
+
+ {{ scope.row.姓名 }}
+
+
+
+
+ {{ scope.row.性别 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.项目名称 }}
+
+
+
+
+ {{ scope.row.客户名称 }}
+
+
+
+
+ {{ scope.row.联系人 }}
+
+
+
+
+ {{ scope.row.电话 }}
+
+
+
+
+ {{ scope.row.计划付款时间 }}
+
+
+
+
+ {{ scope.row.付款批次 }}
+
+
+
+
+ {{ scope.row.状态 }}
+
+
+
+
+ 立即收款
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/MarketingCenter/ContractInformationManagement/index.vue b/src/views/MarketingCenter/ContractInformationManagement/index.vue
new file mode 100644
index 00000000..3b7b95ce
--- /dev/null
+++ b/src/views/MarketingCenter/ContractInformationManagement/index.vue
@@ -0,0 +1,821 @@
+
+
+
+ 项目名称
+
+
+
+ 销售经理
+
+ 查询
+ 增加
+
+
+
+
+
+
+
+
+ {{ scope.row.机床图号 }}
+
+
+
+
+ {{ scope.row.机床名称 }}
+
+
+
+
+ 编辑
+ 删除
+
+
+
+
+
+
+
+ {{ scope.row.合同编号 }}
+
+
+
+
+ {{ scope.row.项目名称 }}
+
+
+
+
+ {{ scope.row.付款方式 }}
+
+
+
+
+ {{ scope.row.图纸会签节点 }}
+
+
+
+
+ {{ scope.row.设备预验收节点 }}
+
+
+
+
+ {{ scope.row.发货节点 }}
+
+
+
+
+ {{ scope.row.安装调试节点 }}
+
+
+
+
+ {{ scope.row.营销经理 }}
+
+
+
+
+ {{ scope.row.客户名称 }}
+
+
+
+
+ {{ scope.row.联系人 }}
+
+
+
+
+ {{ scope.row.电话 }}
+
+
+
+
+ {{ scope.row.合同信息备注 }}
+
+
+
+
+ 机床
+ 编辑
+ 删除
+
+
+
+
+
+
+
+
+ 合同进度
+
+
+
+
+
+
+
+
+
+
+
+ 纪要文件
+
+
+ 点击上传
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 责权省份
+
+
+
+
+
+
+
+ {{ scope.row.姓名 }}
+
+
+
+
+ {{ scope.row.性别 }}
+
+
+
+
+
+
+
+
+
+
+ 查询
+
+
+
+ {{ scope.row.省份 }}
+
+
+
+
+ {{ scope.row.客户名称 }}
+
+
+
+
+ {{ scope.row.联系人 }}
+
+
+
+
+ {{ scope.row.电话 }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/MarketingCenter/SafetyMargin/index.vue b/src/views/MarketingCenter/SafetyMargin/index.vue
new file mode 100644
index 00000000..973bb103
--- /dev/null
+++ b/src/views/MarketingCenter/SafetyMargin/index.vue
@@ -0,0 +1,668 @@
+
+
+
+
+ 未收回
+ 已收回
+ 项目名称:
+
+
+
+ 查询
+ 增加
+ 预警颜色说明:
+ 未到时间
+ 即将拖期
+ 已拖期
+ 已收回
+
+
+
+
+
+
+
+ {{ scope.row.项目名称 }}
+
+
+
+
+ {{ scope.row.交付日期 }}
+
+
+
+
+ {{ scope.row.保证金金额 }}
+
+
+
+
+ {{ scope.row.扣款金额 }}
+
+
+
+
+ {{ scope.row.应收回金额 }}
+
+
+
+
+ {{ scope.row.预计收回日期 }}
+
+
+
+
+ {{ scope.row.实际收回日期 }}
+
+
+
+
+ 未到预警时间
+ 即将拖期
+ 已拖期
+ 已收回
+
+
+
+
+ {{ scope.row.备注 }}
+
+
+
+
+ 收回
+ 扣款
+ 编辑
+ 删除
+
+
+
+
+
+
+
+
+
+
+ 扣款记录
+
+
+
+ {{ scope.row.扣款金额 }}
+
+
+
+
+ {{ scope.row.被扣款人 }}
+
+
+
+
+ {{ scope.row.扣款原因 }}
+
+
+
+
+ {{ scope.row.扣款日期 }}
+
+
+
+
+ 编辑
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/Outsourcing/InterBudgetaryBudgets/index.vue b/src/views/Outsourcing/InterBudgetaryBudgets/index.vue
new file mode 100644
index 00000000..dba02f81
--- /dev/null
+++ b/src/views/Outsourcing/InterBudgetaryBudgets/index.vue
@@ -0,0 +1,338 @@
+
+
+
+
+
+
+ 未编制
+ 已编制
+
+
+ 零件图号:
+
+
+ 开始时间:
+
+
+ 结束时间:
+
+
+ 查询
+
+
+
+
+
+
+
+
+
+ {{ scope.row.零件图号 }}
+
+
+
+
+ {{ scope.row.零件名称 }}
+
+
+
+
+ {{ scope.row.材料 }}
+
+
+
+
+ {{ scope.row.零件类型名称 }}
+
+
+
+
+ {{ scope.row.批次数量 }}
+
+
+
+
+ {{ scope.row.原材料规格 }}
+
+
+
+
+ {{ scope.row.面积 }}
+
+
+
+
+ {{ scope.row.重量 }}
+
+
+
+
+ {{ scope.row.材料费 }}
+
+
+
+
+ 编辑
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 保存
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/Outsourcing/OutFactoryMaintenance/index.vue b/src/views/Outsourcing/OutFactoryMaintenance/index.vue
new file mode 100644
index 00000000..0530e2ff
--- /dev/null
+++ b/src/views/Outsourcing/OutFactoryMaintenance/index.vue
@@ -0,0 +1,461 @@
+
+
+
+
+ 厂家名称:
+
+ 电话:
+
+ 查询
+ 新增
+
+
+
+
+
+
+
+ {{ scope.row.外协厂家名称 }}
+
+
+
+
+ {{ scope.row.外协厂家简称 }}
+
+
+
+
+ {{ scope.row.地址 }}
+
+
+
+
+ {{ scope.row.联系人 }}
+
+
+
+
+ {{ scope.row.电话 }}
+
+
+
+
+ {{ scope.row.传真 }}
+
+
+
+
+ {{ scope.row.设备情况 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.备注 }}
+
+
+
+
+
+
+
+
+
+ 编辑
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/Outsourcing/OutsourcingDataMaintenance/index.vue b/src/views/Outsourcing/OutsourcingDataMaintenance/index.vue
new file mode 100644
index 00000000..674b7b24
--- /dev/null
+++ b/src/views/Outsourcing/OutsourcingDataMaintenance/index.vue
@@ -0,0 +1,388 @@
+
+
+
+
+ 工艺名称:
+
+ 工艺分类:
+
+
+
+ 查询
+ 新增
+
+
+
+
+
+
+ {{ scope.row.工艺名称 }}
+
+
+ {{ scope.row.工艺名称简称 }}
+
+
+
+
+
+
{{ scope.row.外协价格1 }}
+
+
+
+
+
+
+
+
{{ scope.row.重量价格1 }}
+
+
+
+
+
+
+
+
{{ scope.row.面积价格1 }}
+
+
+
+
+
+
+ 编辑
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+ 工时
+ 重量
+ 面积
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 取消
+ 确 定
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/Outsourcing/OutsourcingInspectionEntry/index.vue b/src/views/Outsourcing/OutsourcingInspectionEntry/index.vue
new file mode 100644
index 00000000..68e70d69
--- /dev/null
+++ b/src/views/Outsourcing/OutsourcingInspectionEntry/index.vue
@@ -0,0 +1,344 @@
+
+
+
+
+ 合同号:
+
+ 外协厂家:
+
+
+
+ 零件号:
+
+ 查询
+
+
+
+
+
+
+ {{ scope.row.表单号 }}
+
+
+
+
+ {{ scope.row.外协厂家简称 }}
+
+
+
+
+ {{ scope.row.零件图号 }}
+
+
+
+
+ {{ scope.row.零件名称 }}
+
+
+
+
+ {{ scope.row.批次数量 }}
+
+
+
+
+ 保存
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/Outsourcing/OutsourcingInspectionEntry2/index.vue b/src/views/Outsourcing/OutsourcingInspectionEntry2/index.vue
new file mode 100644
index 00000000..a8efa57f
--- /dev/null
+++ b/src/views/Outsourcing/OutsourcingInspectionEntry2/index.vue
@@ -0,0 +1,405 @@
+
+
+
+
+ 合同号:
+
+ 外协厂家:
+
+
+
+ 零件号:
+
+ 查询
+
+
+
+
+
+
+ {{ scope.row.表单号 }}
+
+
+
+
+ {{ scope.row.外协厂家简称 }}
+
+
+
+
+ {{ scope.row.零件图号 }}
+
+
+
+
+ {{ scope.row.零件名称 }}
+
+
+
+
+ {{ scope.row.批次数量 }}
+
+
+
+
+ 保存
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/Outsourcing/OutsourcingPaymentPlanManagement/index.vue b/src/views/Outsourcing/OutsourcingPaymentPlanManagement/index.vue
new file mode 100644
index 00000000..331a9933
--- /dev/null
+++ b/src/views/Outsourcing/OutsourcingPaymentPlanManagement/index.vue
@@ -0,0 +1,488 @@
+
+
+
+
+
+ 表单号:
+
+ 任务下达时间段:
+
+ ~
+
+
+
+ 厂家名:
+
+
+
+ 实际付款时间段:
+
+ ~
+
+ 查询
+
+
+
+
+
+
+
+
+ {{ scope.row.表单号 }}
+
+
+
+
+ {{ scope.row.外协厂家名称 }}
+
+
+
+
+ {{ scope.row.任务下达日期 }}
+
+
+
+
+ {{ scope.row.外协员姓名 }}
+
+
+
+
+
+ {{ scope.row.加工价格_预算_总价 }}
+
+
+
+
+ {{ scope.row.加工价格_成交_总价 }}
+
+
+
+
+
+ {{ scope.row.材料价格_价格_总价 }}
+
+
+
+
+ {{ scope.row.运费 }}
+
+
+
+
+ {{ scope.row.其他价格_总价 }}
+
+
+
+
+ {{ scope.row.总价 }}
+
+
+
+
+
+ {{ scope.row.扣款_质量 }}
+
+
+
+
+ {{ scope.row.扣款_计划 }}
+
+
+
+
+ {{ scope.row.扣款_其他 }}
+
+
+
+
+
+ {{ scope.row.应付总额 }}
+
+
+
+
+
+
+
+
+ {{ scope.row.入库时间 }}
+
+
+
+
+ {{ scope.row.计划付款时间 }}
+
+
+
+
+ {{ scope.row.实际付款时间 }}
+
+
+
+
+
+ {{ scope.row.扣款说明 }}
+
+
+
+
+ 扣款
+ 付款
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.零件图号 }}
+
+
+
+
+ {{ scope.row.零件名称 }}
+
+
+
+
+ {{ scope.row.项目名称 }}
+
+
+
+
+ {{ scope.row.机床图号 }}
+
+
+
+
+ {{ scope.row.组号 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/Outsourcing/OutsourcingPriceBudget/index.vue b/src/views/Outsourcing/OutsourcingPriceBudget/index.vue
new file mode 100644
index 00000000..bca49e07
--- /dev/null
+++ b/src/views/Outsourcing/OutsourcingPriceBudget/index.vue
@@ -0,0 +1,351 @@
+
+
+
+
+
+
+ 未编制
+ 已编制
+
+
+ 零件图号:
+
+
+ 开始时间:
+
+
+ 结束时间:
+
+
+ 查询
+
+
+
+
+
+
+
+
+
+ {{ scope.row.零件图号 }}
+
+
+
+
+ {{ scope.row.零件名称 }}
+
+
+
+
+ {{ scope.row.材料 }}
+
+
+
+
+ {{ scope.row.零件类型名称 }}
+
+
+
+
+ {{ scope.row.批次数量 }}
+
+
+
+
+ {{ scope.row.原材料规格 }}
+
+
+
+
+ {{ scope.row.面积 }}
+
+
+
+
+ {{ scope.row.重量 }}
+
+
+
+
+ {{ scope.row.材料费 }}
+
+
+
+
+ 编辑
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 保存
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/Outsourcing/OutsourcingStatus/index.vue b/src/views/Outsourcing/OutsourcingStatus/index.vue
new file mode 100644
index 00000000..2b889a3e
--- /dev/null
+++ b/src/views/Outsourcing/OutsourcingStatus/index.vue
@@ -0,0 +1,127 @@
+
+
+
+
+ 零件号:
+
+ 查询
+
+
+
+
+
+
+ {{ scope.row.机床图号 }}
+
+
+
+
+ {{ scope.row.组号 }}
+
+
+
+
+ {{ scope.row.零件图号 }}
+
+
+
+
+ {{ scope.row.零件名称 }}
+
+
+
+
+ {{ scope.row.批次数量 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/Outsourcing/OutsourcingTaskExecution/index.vue b/src/views/Outsourcing/OutsourcingTaskExecution/index.vue
new file mode 100644
index 00000000..c95d71d2
--- /dev/null
+++ b/src/views/Outsourcing/OutsourcingTaskExecution/index.vue
@@ -0,0 +1,1601 @@
+
+
+
+
+ 表单号:
+
+ 外协厂家:
+
+ 下达任务日期:
+
+ 查询
+ 增加
+
+
+
+
+
+
+ {{ scope.row.表单号 }}
+
+
+
+
+ {{ scope.row.外协厂家 }}
+
+
+
+
+ {{ scope.row.任务下达日期 }}
+
+
+
+
+ {{ scope.row.外协计划员 }}
+
+
+
+
+ {{ scope.row.运费 }}
+
+
+
+
+ 编辑
+ 删除
+
+
+
+
+
+
+
+
+
+ 零件号:
+
+ 查询
+
+
+
+
+ {{ scope.row.项目名称 }}
+
+
+
+
+ {{ scope.row.零件图号 }}
+
+
+
+
+ {{ scope.row.零件名称 }}
+
+
+
+
+ {{ scope.row.批次数量 }}
+
+
+
+
+ {{ scope.row.材料费 }}
+
+
+
+
+ {{ scope.row.外协分类 }}
+
+
+
+
+ {{ scope.row.传递时间_短 }}
+
+
+
+
+ {{ scope.row.计划结束时间_短 }}
+
+
+
+
+ {{ (scope.row.外协预算总价格).toFixed(2) }}
+
+
+
+
+ {{ scope.row.是否临时件 }}
+
+
+
+
+ {{ scope.row.外协工序 }}
+
+
+
+ 选入零件
+
+
+
+
+
+
+
+ {{ 零件图号[scope.$index] }}
+
+
+
+
+ {{ 零件名称[scope.$index] }}
+
+
+
+
+ {{ 批次数量[scope.$index] }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ 外协预算总价格[scope.$index] }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ 外协分类[scope.$index] }}
+
+
+
+
+ {{ 材料费[scope.$index] }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ (机加工开始时间[scope.$index]) }}
+
+
+
+
+ {{ (机加工结束时间[scope.$index]) }}
+
+
+
+
+
+ 移除
+
+
+
+
+ 下调金额:(百分比)
+
+ 计算价格
+ 确定价格
+ 成交
+ 导出外协加工任务单
+
+
+
+
+
+
+
+ | GAOJING |
+ 外协加工任务单 |
+
+
+ | 任务单号: |
+ {{ 任务单号 }} |
+ 任务下达日期: |
+ {{ 任务下达日期 }} |
+ 外协厂家: |
+ {{ 外协厂家 }} |
+
+
+ | 外协员: |
+ {{ 外协员 }} |
+ 电话: |
+ {{ 外协员电话 }} |
+ 联系人: |
+ {{ 联系人 }} |
+ 电话: |
+ {{ 联系人电话 }} |
+
+
+ | 序号 |
+ 零件图号 |
+ 零件名称 |
+ 数量 |
+ 内容 |
+ 零件类型 |
+ 外协类别 |
+ 加工价格 |
+ 材料价格 |
+ 其他价格 |
+ 计划开始 |
+ 计划结束 |
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 查询
+
+
+
+
+ {{ scope.row.外协厂家名称 }}
+
+
+
+
+ 提交
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/Outsourcing/PreorderAssociation/index.vue b/src/views/Outsourcing/PreorderAssociation/index.vue
new file mode 100644
index 00000000..eb16c1cf
--- /dev/null
+++ b/src/views/Outsourcing/PreorderAssociation/index.vue
@@ -0,0 +1,280 @@
+
+
+
+
+ 零件图号:
+
+ 查询
+
+
+
+
+
+
+
+
+
+ {{ scope.row.零件图号 }}
+
+
+
+
+
+ {{ scope.row.零件名称 }}
+
+
+
+
+ {{ scope.row.材料 }}
+
+
+
+
+ {{ scope.row.零件类型名称 }}
+
+
+
+
+ {{ scope.row.批次数量 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 选择
+
+
+
+
+
+ {{ scope.row.工艺名称 }}
+
+
+
+
+
+
+
+
+
+ {{ scope.row.机加工开始时间 }}
+
+
+
+
+ {{ scope.row.机加工结束时间 }}
+
+
+
+
+ {{ scope.row.计划日期 }}
+
+
+
+
+ {{ scope.row.工序工时 }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/Outsourcing/UnqualifiedTreatment/index.vue b/src/views/Outsourcing/UnqualifiedTreatment/index.vue
new file mode 100644
index 00000000..ad6ebdec
--- /dev/null
+++ b/src/views/Outsourcing/UnqualifiedTreatment/index.vue
@@ -0,0 +1,297 @@
+
+
+
+
+ 零件号:
+
+
+ 任务下达时间:
+
+
+ 合同号:
+
+ 外协厂家:
+
+
+
+
+ 查询
+
+
+
+
+
+
+
+
+
+ {{ scope.row.零件图号 }}
+
+
+
+
+ {{ scope.row.零件名称 }}
+
+
+
+
+ {{ scope.row.外协厂家简称 }}
+
+
+
+
+ {{ scope.row.表单号 }}
+
+
+
+
+ {{ scope.row.材料 }}
+
+
+
+
+ {{ scope.row.项目名称 }}
+
+
+
+
+ {{ scope.row.批次数量 }}
+
+
+
+
+ {{ scope.row.废品数量 }}
+
+
+
+
+ {{ scope.row.不合格处理方式 }}
+
+
+
+
+ 编辑
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 取消
+ 确 定
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/ProjectManagement/assess.vue b/src/views/ProjectManagement/assess.vue
new file mode 100644
index 00000000..fb37a0a8
--- /dev/null
+++ b/src/views/ProjectManagement/assess.vue
@@ -0,0 +1,405 @@
+
+
+
+
+
项目名称
+
+
+
+
修改
+
保存
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ | 序号 |
+ 部门 |
+ 部门分配比例 |
+ 阶段 |
+ 阶段分配比例 |
+ 阶段应发 |
+ 考核条件 |
+ 考核系数 |
+ 考核部门 |
+ 实际完成情况 |
+ 应得系数 |
+
+
+ | 1 |
+ 电气 |
+ 20% |
+ 设计完成 |
+ 20% |
+ |
+ a)按时完成率;(1-拖期时间/计划时间) |
+ 0.8 |
+ 销售/采购 |
+ |
+ |
+
+
+ | b)客户满意度;(满意1、不满意0~0.5) |
+ 0.2 |
+ 销售 |
+ |
+ |
+
+
+ | 装配完成(发货) |
+ 20% |
+ |
+ a)按时完成率;(1-拖期时间/计划时间) |
+ 0.5 |
+ 生产部 |
+ |
+ |
+
+
+ | b)差错率;(基本无差错1、机构小改动0.8、大的机构变更0.5) |
+ 0.3 |
+ 生产部 |
+ |
+ |
+
+
+ | c)设计合理性;(设计合理1、设计不合理0.5) |
+ 0.2 |
+ 设计部 |
+ |
+ |
+
+
+ | 客户调试 |
+ 40% |
+ |
+ a)按时完成率;(1-拖期时间/计划时间) |
+ 0.2 |
+ 销售 |
+ |
+ |
+
+
+ | b)客户满意度;(满意1、不满意0~0.5) |
+ 0.8 |
+ 销售 |
+ |
+ |
+
+
+ | 终验收 |
+ 20% |
+ |
+ a)终验收通过 |
+ 1 |
+ 销售 |
+ |
+ |
+
+
+ | 1 |
+ 机械 |
+ 20% |
+ 设计完成 |
+ 20% |
+ |
+ a)按时完成率;(1-拖期时间/计划时间) |
+ 0.8 |
+ 销售/采购 |
+ |
+ |
+
+
+ | b)客户满意度;(满意1、不满意0~0.5) |
+ 0.2 |
+ 销售 |
+ |
+ |
+
+
+ | 装配完成(发货) |
+ 20% |
+ |
+ a)按时完成率;(1-拖期时间/计划时间) |
+ 0.5 |
+ 生产部 |
+ |
+ |
+
+
+ | b)差错率;(基本无差错1、机构小改动0.8、大的机构变更0.5) |
+ 0.3 |
+ 生产部 |
+ |
+ |
+
+
+ | c)设计合理性;(设计合理1、设计不合理0.5) |
+ 0.2 |
+ 设计部 |
+ |
+ |
+
+
+ | 客户调试 |
+ 40% |
+ |
+ a)按时完成率;(1-拖期时间/计划时间) |
+ 0.2 |
+ 销售 |
+ |
+ |
+
+
+ | b)客户满意度;(满意1、不满意0~0.5) |
+ 0.8 |
+ 销售 |
+ |
+ |
+
+
+ | 终验收 |
+ 20% |
+ |
+ a)终验收通过 |
+ 1 |
+ 销售 |
+ |
+ |
+
+
+ | 1 |
+ 生产 |
+ 20% |
+ 设计完成 |
+ 20% |
+ |
+ a)按时完成率;(1-拖期时间/计划时间) |
+ 0.8 |
+ 销售/采购 |
+ |
+ |
+
+
+ | b)客户满意度;(满意1、不满意0~0.5) |
+ 0.2 |
+ 销售 |
+ |
+ |
+
+
+ | 装配完成(发货) |
+ 20% |
+ |
+ a)按时完成率;(1-拖期时间/计划时间) |
+ 0.5 |
+ 生产部 |
+ |
+ |
+
+
+ | b)差错率;(基本无差错1、机构小改动0.8、大的机构变更0.5) |
+ 0.3 |
+ 生产部 |
+ |
+ |
+
+
+ | c)设计合理性;(设计合理1、设计不合理0.5) |
+ 0.2 |
+ 设计部 |
+ |
+ |
+
+
+ | 客户调试 |
+ 40% |
+ |
+ a)按时完成率;(1-拖期时间/计划时间) |
+ 0.2 |
+ 销售 |
+ |
+ |
+
+
+ | b)客户满意度;(满意1、不满意0~0.5) |
+ 0.8 |
+ 销售 |
+ |
+ |
+
+
+ | 终验收 |
+ 20% |
+ |
+ a)终验收通过 |
+ 1 |
+ 销售 |
+ |
+ |
+
+
+ | 1 |
+ 采购与外协 |
+ 10% |
+ 设计完成 |
+ 20% |
+ |
+ a)按时完成率;(1-拖期时间/计划时间) |
+ 0.8 |
+ 销售/采购 |
+ |
+ |
+
+
+ | b)客户满意度;(满意1、不满意0~0.5) |
+ 0.2 |
+ 销售 |
+ |
+ |
+
+
+ | 装配完成(发货) |
+ 20% |
+ |
+ a)按时完成率;(1-拖期时间/计划时间) |
+ 0.5 |
+ 生产部 |
+ |
+ |
+
+
+ | b)差错率;(基本无差错1、机构小改动0.8、大的机构变更0.5) |
+ 0.3 |
+ 生产部 |
+ |
+ |
+
+
+ | c)设计合理性;(设计合理1、设计不合理0.5) |
+ 0.2 |
+ 设计部 |
+ |
+ |
+
+
+ | 客户调试 |
+ 40% |
+ |
+ a)按时完成率;(1-拖期时间/计划时间) |
+ 0.2 |
+ 销售 |
+ |
+ |
+
+
+ | b)客户满意度;(满意1、不满意0~0.5) |
+ 0.8 |
+ 销售 |
+ |
+ |
+
+
+ | 终验收 |
+ 20% |
+ |
+ a)终验收通过 |
+ 1 |
+ 销售 |
+ |
+ |
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/ProjectManagement/change.vue b/src/views/ProjectManagement/change.vue
new file mode 100644
index 00000000..fc8d2a6e
--- /dev/null
+++ b/src/views/ProjectManagement/change.vue
@@ -0,0 +1,249 @@
+
+
+
+
+
项目名称
+
+
+
+
修改
+
保存
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ | 一、项目基本情况 |
+
+
+ | 项目名称 |
+ |
+ 项目编号 |
+ |
+
+
+ | 制作人 |
+ |
+ 审核人 |
+ |
+
+
+ | 项目经理 |
+ |
+ 制作日期 |
+ |
+
+
+ | 二、历史变更记录(按时间顺序记录项目每一次变更情况) |
+
+
+ | 序号 |
+ 变更时间 |
+ 涉及项目任务 |
+ 变更要点 |
+ 变更理由 |
+ 申请人 |
+ 部门负责人 |
+
+
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+
+
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+
+
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+
+
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+
+
+ | 三、请求变更信息 |
+
+
+ | 1、申请变更的内容 |
+
+
+ |
+
+
+ | 2、申请变更的原因 |
+
+
+ |
+
+
+ | 四、影响分析 |
+
+
+ | 受影响的基准计划 |
+ 1、进度计划 |
+ 2、费用计划 |
+ 3、资源计划 |
+
+
+ | 是否需要成本/进度影响分析? |
+ 是 |
+ 否 |
+
+
+ | 对成本影响 |
+ |
+
+
+ | 对进度影响 |
+ |
+
+
+ | 对资源的影响 |
+ |
+
+
+ | 变更程度分类 |
+ 高 |
+ 中 |
+ 低 |
+
+
+ | 若不进行变更有何影响 |
+ |
+
+
+ | 申请人签字 |
+ |
+ 申请日期 |
+ 项目经理签字 |
+ |
+ 日期 |
+ |
+
+
+ | 五、审批结果 |
+
+
+ | 审批意见 |
+ |
+ 审批人签字 |
+ |
+ 日期 |
+ |
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/ProjectManagement/progress.vue b/src/views/ProjectManagement/progress.vue
new file mode 100644
index 00000000..2b160785
--- /dev/null
+++ b/src/views/ProjectManagement/progress.vue
@@ -0,0 +1,193 @@
+
+
+
+
+
项目名称
+
+
+
+
修改
+
保存
+
+
+
+
+
+
+
+
+
+
+ | 项目名称 |
+ 山东XX新线项目 |
+ 客户 |
+ xxx有限公司 |
+
+
+ | 时间 |
+ 2016年_月_日 |
+ 项目阶段 |
+ |
+ 项目负责人 |
+ |
+
+
+ | 类别 |
+ 内容 |
+ 目标 |
+ 计划时间 |
+ 原因分析 |
+ 下一步措施 |
+
+
+ | 本周项目计划 |
+ |
+ |
+ |
+ |
+ |
+
+
+ |
+ |
+ |
+ |
+ |
+
+
+ |
+ |
+ |
+ |
+ |
+
+
+ | 本周出现的问题 |
+ |
+ |
+ |
+ |
+ |
+
+
+ |
+ |
+ |
+ |
+ |
+
+
+ |
+ |
+ |
+ |
+ |
+
+
+ | 下周计划 |
+ |
+ |
+ |
+ |
+ |
+
+
+ |
+ |
+ |
+ |
+ |
+
+
+ |
+ |
+ |
+ |
+ |
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/ProjectManagement/summarize.vue b/src/views/ProjectManagement/summarize.vue
new file mode 100644
index 00000000..50c93864
--- /dev/null
+++ b/src/views/ProjectManagement/summarize.vue
@@ -0,0 +1,327 @@
+
+
+
+
+ 项目名称
+
+
+
+ 修改
+ 保存
+
+
+
+
+ | 一、项目基本情况 |
+
+
+ | 项目名称 |
+ {{ projectName }} |
+ 项目编号 |
+
+
+
+ {{ tableData.项目编号 }}
+ |
+
+
+ | 制作人 |
+
+
+
+ {{ tableData.制作人 }}
+ |
+ 审核人 |
+
+
+
+ {{ tableData.审核人 }}
+ |
+
+
+ | 项目经理 |
+
+
+
+ {{ tableData.项目经理 }}
+ |
+ 制作品日期 |
+
+
+
+ {{ tableData.制作日期 | formatTime }}
+ |
+
+
+ | 二、项目完成情况总结 |
+
+
+ | 1、时间总结 |
+
+
+ | 开始时间 |
+
+
+
+ {{ tableData.开始时间 | formatTime }}
+ |
+ 计划完成日期 |
+
+
+
+ {{ tableData.计划完成日期 | formatTime }}
+ |
+ 实际完成日期 |
+
+
+
+ {{ tableData.实际完成日期 | formatTime }}
+ |
+
+
+ | 时间(差异)分析 |
+
+
+ |
+
+
+ {{ tableData.时间分析 }}
+ |
+
+
+ | 2、成本总结 |
+
+
+ | 计划费用 |
+
+
+
+ {{ tableData.计划费用 }}
+ |
+ 实际费用 |
+
+
+
+ {{ tableData.实际费用 }}
+ |
+
+
+ | 成本(差异)分析 |
+
+
+ |
+
+
+ {{ tableData.成本分析 }}
+ |
+
+
+ | 3、交付结果总结 |
+
+
+ | 计划交付结果 |
+
+
+ |
+
+
+ {{ tableData.计划交付结果 }}
+ |
+
+
+ | 实际交付结果 |
+
+
+ |
+
+
+ {{ tableData.实际交付结果 }}
+ |
+
+
+ | 未交付结果 |
+
+
+ |
+
+
+ {{ tableData.未交付结果 }}
+ |
+
+
+ | 交付结果(差异)分析 |
+
+
+ |
+
+
+ {{ tableData.交付结果分析 }}
+ |
+
+
+ | 三、项目经验、教训总结 |
+
+
+ |
+
+
+
+ |
+
+
+ | 签字 |
+ 日期 |
+
+
+ | 审核人 |
+
+
+
+ {{ tableData.审核人 }}
+ |
+
+
+
+ {{ tableData.审核人签字日期 | formatTime }}
+ |
+
+
+ | 项目经理 |
+
+
+
+ {{ tableData.项目经理 }}
+ |
+
+
+
+ {{ tableData.项目经理签字日期 | formatTime }}
+ |
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/TechnologyCenter/CreatePackingList/index.vue b/src/views/TechnologyCenter/CreatePackingList/index.vue
new file mode 100644
index 00000000..ee3a44f7
--- /dev/null
+++ b/src/views/TechnologyCenter/CreatePackingList/index.vue
@@ -0,0 +1,710 @@
+
+
+
+ 项目名称
+
+
+
+ 增加
+ 导出
+ 总装箱单
+
+
+ {{ scope.row.装箱单号 }}
+
+
+ {{ scope.row.发货节点 }}
+
+
+ {{ scope.row.名称 }}
+
+
+ {{ scope.row.收货单位 }}
+
+
+ {{ scope.row.联系人 }}
+
+
+ {{ scope.row.联系方式 }}
+
+
+
+ 编辑
+ 删除
+
+
+
+
+
+ 添加主机
+ 主机
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.代号 }}
+
+
+ {{ scope.row.机床名称 }}
+
+
+ {{ scope.row.数量 }}
+
+
+ {{ scope.row.备注 }}
+
+
+
+ 编辑
+ 删除
+
+
+
+
+
+
+ 添加备件
+ 随机供应的备件
+
+
+
+ {{ scope.row.名称 }}
+
+
+ {{ scope.row.规格 }}
+
+
+ {{ scope.row.数量 }}
+
+
+ {{ scope.row.单位 }}
+
+
+ {{ scope.row.备注 }}
+
+
+
+ 编辑
+ 删除
+
+
+
+
+
+
+ 添加文件
+ 随机技术文件
+
+
+
+ {{ scope.row.名称 }}
+
+
+ {{ scope.row.数量 }}
+
+
+ {{ scope.row.备注 }}
+
+
+
+ 编辑
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/TechnologyCenter/ImportParts/UploadExcel/index.vue b/src/views/TechnologyCenter/ImportParts/UploadExcel/index.vue
new file mode 100644
index 00000000..6b5d69e4
--- /dev/null
+++ b/src/views/TechnologyCenter/ImportParts/UploadExcel/index.vue
@@ -0,0 +1,103 @@
+
+
+
+
+ 将Excel文件拖到这或
+ 浏览
+
+
+
+
+
+
+
diff --git a/src/views/TechnologyCenter/ImportParts/index.vue b/src/views/TechnologyCenter/ImportParts/index.vue
new file mode 100644
index 00000000..570f1ccc
--- /dev/null
+++ b/src/views/TechnologyCenter/ImportParts/index.vue
@@ -0,0 +1,230 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ 导入到数据库
+
+
+
+
+
+
+
+
+
diff --git a/src/views/TechnologyCenter/ImportParts/specificationData.vue b/src/views/TechnologyCenter/ImportParts/specificationData.vue
new file mode 100644
index 00000000..89f8be63
--- /dev/null
+++ b/src/views/TechnologyCenter/ImportParts/specificationData.vue
@@ -0,0 +1,546 @@
+
+
+
+
+ 机床名称:
+
+
+
+ 分组名称:
+
+
+
+ 传递
+
+
+
+
+
+
+ {{ scope.row.图号或者型号 }}
+
+
+
+
+ {{ scope.row.名称 }}
+
+
+
+
+ {{ scope.row.材料或者规格 }}
+
+
+
+
+ {{ scope.row.规格 }}
+
+
+
+
+ {{ scope.row.备件数量 }}
+
+
+
+
+ {{ scope.row.装机数量 }}
+
+
+
+
+ {{ scope.row.部件数量 }}
+
+
+
+
+ {{ scope.row.制造商 }}
+
+
+
+
+ {{ scope.row.备注 }}
+
+
+
+
+ {{ scope.row.分类码 }}
+
+
+
+
+ 编辑
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 查询
+
+
+
+ {{ scope.row.物料代码 }}
+
+
+
+
+ {{ scope.row.物料名称 }}
+
+
+
+
+ {{ scope.row.物料规格 }}
+
+
+
+
+ {{ scope.row.物料型号 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/TechnologyCenter/ImportParts/uploadFile.js b/src/views/TechnologyCenter/ImportParts/uploadFile.js
new file mode 100644
index 00000000..f34e1116
--- /dev/null
+++ b/src/views/TechnologyCenter/ImportParts/uploadFile.js
@@ -0,0 +1,166 @@
+import request from '@/utils/request'
+
+// 初始化 项目名称
+export function initProject() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: 'PDM_项目名称_查询数据_按时间排序'
+ }
+ })
+}
+// 导入Excel
+export function upload(project, machine, group, designer) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '组件明细表_基本件_导入数据',
+ param: '项目=' + project + '&机床=' + machine + '&组号=' + group + '&设计者=' + designer
+ }
+ })
+}
+// 导入Excel1
+export function upload1(designer, time, project, machine, group, num1, num2, name, size, num3, supplier, remark, mark) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '组件明细表_基本件_导入数据1',
+ param: '设计者=' + designer + '&保存时间=' + time + '&项目=' + project + '&机床=' + machine + '&组号=' + group + '&序号=' + num1 + '&图号或者型号=' + num2 + '=string&名称=' + name + '&材料或者规格=' + size + '&数量=' + num3 + '&供货商=' + supplier + '&备注=' + remark + '&标记=' + mark
+ }
+ })
+}
+// 查询零件(查重)
+export function searchPart(project, machine, group) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '导入数据_查询',
+ param: '项目=' + project + '&机床=' + machine + '&组号=' + group
+ }
+ })
+}
+// 导入Excel外购件
+export function outBuyUpload(project, machine, group, designer) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '组件明细表_外购件_导入数据',
+ param: '项目=' + project + '&机床=' + machine + '&组号=' + group + '&设计者=' + designer
+ }
+ })
+}
+// 导入Excel1外购件
+export function outBuyUpload1(designer, time, project, machine, group, num1, num2, name, size, num3, supplier, remark, mark) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: '组件明细表_外购件_导入数据1',
+ param: '设计者=' + designer + '&保存时间=' + time + '&项目=' + project + '&机床=' + machine + '&组号=' + group + '&序号=' + num1 + '&图号或者型号=' + num2 + '&名称=' + name + '&材料或者规格=' + size + '&数量=' + num3 + '&供货商=' + supplier + '&备注=' + remark + '&标记=' + mark
+ }
+ })
+}
+// 查询零件(查重)外购件
+export function outBuySearchPart(project, machine, group) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: '导入数据_外购件_查询',
+ param: '项目=' + project + '&机床=' + machine + '&组号=' + group
+ }
+ })
+}
+// 查询零件 基本件
+export function searchBasePartDetail(project, machine, group) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: 'PDM_零件明细表_基本件_数据导入保存_查询数据_综合_全部',
+ param: '项目=' + project + '&机床=' + machine + '&组号=' + group
+ }
+ })
+}
+// 查询零件 基本件
+export function searchOutPartDetail(project, machine, group) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: 'PDM_零件明细表_外购件和标准件_数据导入保存_综合_全部',
+ param: '项目=' + project + '&机床=' + machine + '&组号=' + group
+ }
+ })
+}
+// 删除 基本件
+export function deleteTable1(id) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: 'PDM_零件明细表_基本件_数据导入保存_删除数据',
+ param: 'id=' + id
+ }
+ })
+}
+// 删除 外购件
+export function deleteTable2(id) {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '2',
+ name: 'PDM_零件明细表_外购件和标准件_数据导入保存_删除数据',
+ param: 'id=' + id
+ }
+ })
+}
+// 初始化规范 备注
+export function initStandard1() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: 'PDM_零件明细表_基本件_数据导入保存_查询数据_规范表_备注'
+ }
+ })
+}
+// 初始化规范 材料或者规格
+export function initStandard2() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: 'PDM_零件明细表_基本件_数据导入保存_查询数据_规范表_材料或者规格'
+ }
+ })
+}
+// 初始化规范 物料流水号
+export function initStandard3() {
+ return request({
+ url: '',
+ method: 'post',
+ data: {
+ type: '1',
+ name: 'PDM_零件明细表_基本件_数据导入保存_查询数据_规范表_物料流水号'
+ }
+ })
+}
diff --git a/src/views/TechnologyCenter/QueryParts/index.vue b/src/views/TechnologyCenter/QueryParts/index.vue
new file mode 100644
index 00000000..97dfd673
--- /dev/null
+++ b/src/views/TechnologyCenter/QueryParts/index.vue
@@ -0,0 +1,325 @@
+
+
+
+ 项目名称
+
+
+
+
+ 机床图号
+
+
+
+
+ 组号
+
+
+
+
+ 查询
+
+
+
+
+ {{ scope.row.机床图号 }}
+
+
+ {{ scope.row.零件图号 }}
+
+
+ {{ scope.row.零件名称 }}
+
+
+ {{ scope.row.组号 }}
+
+
+ {{ scope.row.零件数量 }}
+
+
+ {{ scope.row.材料 }}
+
+
+ {{ scope.row.零件备注 }}
+
+
+ {{ scope.row.零件类型名称 }}
+
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.物料名称 }}
+
+
+
+
+ {{ scope.row.物料规格 }}
+
+
+
+
+ {{ scope.row.物料型号 }}
+
+
+
+
+ {{ scope.row.零件数量 }}
+
+
+
+
+ {{ scope.row.标准件类型 }}
+
+
+
+
+ {{ scope.row.供货商 }}
+
+
+
+
+ {{ scope.row.备注 }}
+
+
+
+
+ {{ scope.row.标记 }}
+
+
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dashboard/index.vue b/src/views/dashboard/index.vue
new file mode 100644
index 00000000..c411c98f
--- /dev/null
+++ b/src/views/dashboard/index.vue
@@ -0,0 +1,32 @@
+
+
+
name:{{ name }}
+
roles:{{ role }}
+
+
+
+
+
+
diff --git a/src/views/layout/Layout.vue b/src/views/layout/Layout.vue
new file mode 100644
index 00000000..5fb50146
--- /dev/null
+++ b/src/views/layout/Layout.vue
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+
diff --git a/src/views/layout/components/AppMain.vue b/src/views/layout/components/AppMain.vue
new file mode 100644
index 00000000..8b46239c
--- /dev/null
+++ b/src/views/layout/components/AppMain.vue
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
diff --git a/src/views/layout/components/Navbar.vue b/src/views/layout/components/Navbar.vue
new file mode 100644
index 00000000..79c2e1b7
--- /dev/null
+++ b/src/views/layout/components/Navbar.vue
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+
![]()
+
+
+
+
+
+ 主页
+
+
+
+ 登出
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/layout/components/Sidebar/Item.vue b/src/views/layout/components/Sidebar/Item.vue
new file mode 100644
index 00000000..b515f615
--- /dev/null
+++ b/src/views/layout/components/Sidebar/Item.vue
@@ -0,0 +1,29 @@
+
diff --git a/src/views/layout/components/Sidebar/SidebarItem.vue b/src/views/layout/components/Sidebar/SidebarItem.vue
new file mode 100644
index 00000000..3a0ac2f9
--- /dev/null
+++ b/src/views/layout/components/Sidebar/SidebarItem.vue
@@ -0,0 +1,104 @@
+
+
+
+
+
diff --git a/src/views/layout/components/Sidebar/index.vue b/src/views/layout/components/Sidebar/index.vue
new file mode 100644
index 00000000..c93ffa81
--- /dev/null
+++ b/src/views/layout/components/Sidebar/index.vue
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
diff --git a/src/views/layout/components/TagsView.vue b/src/views/layout/components/TagsView.vue
new file mode 100644
index 00000000..e37ac230
--- /dev/null
+++ b/src/views/layout/components/TagsView.vue
@@ -0,0 +1,205 @@
+
+
+
+
+ {{ tag.title }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/layout/components/index.js b/src/views/layout/components/index.js
new file mode 100644
index 00000000..9fc98d69
--- /dev/null
+++ b/src/views/layout/components/index.js
@@ -0,0 +1,4 @@
+export { default as Navbar } from './Navbar'
+export { default as Sidebar } from './Sidebar'
+export { default as AppMain } from './AppMain'
+export { default as TagsView } from './TagsView'
diff --git a/src/views/layout/mixin/ResizeHandler.js b/src/views/layout/mixin/ResizeHandler.js
new file mode 100644
index 00000000..7bd91b7d
--- /dev/null
+++ b/src/views/layout/mixin/ResizeHandler.js
@@ -0,0 +1,52 @@
+import store from '@/store'
+
+const { body } = document
+const WIDTH = 1024
+const RATIO = 3
+
+export default {
+ watch: {
+ $route(route) {
+ if (this.device === 'mobile' && this.sidebar.opened) {
+ store.dispatch('CloseSideBar', { withoutAnimation: false })
+ }
+ }
+ },
+ beforeMount() {
+ window.addEventListener('resize', this.resizeHandler)
+ },
+ mounted() {
+ const isMobile = this.isMobile()
+ const isSmallDesktop = this.isSmallDesktop()
+ if (isSmallDesktop) {
+ store.dispatch('CloseSideBar', { withoutAnimation: false })
+ }
+ if (isMobile) {
+ store.dispatch('ToggleDevice', 'mobile')
+ store.dispatch('CloseSideBar', { withoutAnimation: true })
+ }
+ },
+ methods: {
+ isMobile() {
+ const rect = body.getBoundingClientRect()
+ return rect.width - RATIO < WIDTH
+ },
+ isSmallDesktop() {
+ const rect = body.getBoundingClientRect()
+ return rect.width - RATIO < 1300
+ },
+ resizeHandler() {
+ if (!document.hidden) {
+ const isMobile = this.isMobile()
+ const isSmallDesktop = this.isSmallDesktop()
+ store.dispatch('ToggleDevice', isMobile ? 'mobile' : 'desktop')
+ if (isSmallDesktop) {
+ store.dispatch('CloseSideBar', { withoutAnimation: false })
+ }
+ if (isMobile) {
+ store.dispatch('CloseSideBar', { withoutAnimation: true })
+ }
+ }
+ }
+ }
+}
diff --git a/src/views/login/index.vue b/src/views/login/index.vue
new file mode 100644
index 00000000..bb20e20a
--- /dev/null
+++ b/src/views/login/index.vue
@@ -0,0 +1,411 @@
+
+
+
+
+
+ 高精机电装备有限公司数字化工厂
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 记住账号密码
+ 修改密码
+
+
+ 登录
+
+
+ 超级管理员
+ 账号:1001
+ 密码:1001
+
+
+ 采购管理员
+ 账号:6201
+ 密码:6201
+
+
+ 外协管理员
+ 账号:1003
+ 密码:1003
+
+
+ 车间计划管理员
+ 账号:2002
+ 密码:2002
+
+
+ 技术中心管理员
+ 账号:3001
+ 密码:3001
+
+
+ 库存管理员
+ 账号:3002
+ 密码:3002
+
+
+ 营销中心管理员
+ 账号:4001
+ 密码:4001
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/static/.gitkeep b/static/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/static/login.png b/static/login.png
new file mode 100644
index 00000000..08252259
Binary files /dev/null and b/static/login.png differ