From 0d659cff38f50d83e782a9f8c5c20fb54a5c0321 Mon Sep 17 00:00:00 2001 From: zm <zm@iemsoft.cn> Date: Sun, 12 Apr 2020 17:28:28 +0800 Subject: [PATCH] 创建 --- src/static/img/budget_card.png | 0 src/static/img/request_billing_setting_guid.jpg | 0 src/static/css/templates_center.less | 22 src/static/templates/no_permission.html | 3 src/static/img/user2.png | 0 src/static/img/travel_expense_del.png | 0 src/static/js/data/travel_expense_list.json | 89 src/static/sonar-project.json | 17 src/static/css/todos.less | 25 src/static/templates/templates_center.html | 218 src/static/img/form_default.png | 0 src/static/img/ad.jpg | 0 src/static/js/budget_forms/module.js | 66 src/sonar-project.properties | 17 src/static/img/cfg_center_4.png | 0 src/static/js/travel_expense/module.js | 4195 +++++ src/bs-config.json | 5 src/static/css/jquery-ui.less | 1311 + src/static/css/form.less | 170 src/static/img/ordering_2.png | 0 src/static/css/forms_center.less | 55 src/.bowerrc | 3 src/static/img/query.png | 0 src/static/img/system_settings.jpg | 0 src/差旅部署说明.txt | 5 src/static/img/unfold.png | 0 src/index.html | 148 src/static/img/arrow.png | 0 src/static/css/base.less | 6 src/package-lock.json | 6928 +++++++++ src/static/templates/business.html | 38 src/static/templates/select3.html | 25 src/static/templates/travel_expense_todos_all.html | 136 src/README.md | 37 src/static/js/billing_cfg_guide/module.js | 39 src/static/js/system_config/module.js | 577 src/static/css/flowstatus.less | 40 src/static/img/cfg_center_2.png | 0 src/static/templates/frm_elem_cloud_attr.html | 97 src/static/css/travel_expense.less | 1069 + src/static/img/rebuise_card.png | 0 src/static/img/more_collapse.png | 0 src/static/js/utils/bootstrap-wysiwyg.min.js | 10 src/static/css/system_config.less | 125 src/static/css/workflow.less | 93 src/static/img/heroico.ico | 0 src/static/img/bs5.jpg | 0 src/static/img/form_created.png | 0 src/static/templates/budget_form_customize.html | 55 src/static/css/lesshat.less | 886 + src/static/css/lesshat-prefixed.less | 886 + src/static/js/.DS_Store | 0 src/static/img/doc.png | 0 src/static/img/to_do.png | 0 src/static/templates/user_select.html | 0 src/static/img/createorder.png.BASE.png | 0 src/static/templates/saved_form.html | 911 + src/static/img/yes.png | 0 src/static/img/deleteelement.png | 0 src/static/img/page.png | 0 src/static/templates/city.html | 37 src/static/css/base_red.less | 6 src/static/img/travel_expense_export.png | 0 src/.project | 28 src/static/img/hero.png | 0 src/static/img/reimbursement_settings_guid.jpg | 0 src/static/img/business-textbook.jpg | 0 src/static/js/utils/jquery.base64.min.js | 1 src/static/js/config_center/module.js | 21 src/static/js/templates_center/module.js | 518 src/.DS_Store | 0 src/static/img/loading.gif | 0 src/static/.DS_Store | 0 src/static/img/user4.png | 0 src/static/img/close.png | 0 src/static/templates/travel_expense_detail_popup.html | 118 src/static/img/calculate.png | 0 src/static/js/forms_center/module.js | 17 src/static/img/bs7.jpg | 0 src/static/js/budget_form_customize/module.js | 2018 ++ src/static/img/cfg_center_6.png | 0 src/static/templates/config_center.html | 67 src/static/css/cfg_center.less | 34 src/origin_change.html | 92 src/static/js/qxv5.json | 884 + src/static/templates/travel_expense_todos_rebuise.html | 182 src/static/js/qxv2.json | 279 src/static/templates/budget_forms.html | 87 src/static/img/workflow_bx.png | 0 src/static/img/switch_on.png | 0 src/static/img/guide.png | 0 src/static/templates/travel_expense_todos_request.html | 181 src/static/img/pic.png | 0 src/static/js/registry/module.js | 72 src/gulpfile.js | 189 src/static/img/cfg_center_3.png | 0 src/static/templates/frm_elem_attrs_editor.html | 1018 + src/static/js/expend_standard/module.js | 2539 +++ src/static/js/utils/jquery.md5.js | 229 src/static/img/user1.png | 0 src/static/img/travel_expense_view_content.png | 0 src/static/img/createorder.png.LOCAL.png | 0 src/static/templates/pic.html | 74 src/static/img/delete.png | 0 src/static/js/utils/des.js | 867 + src/static/img/create_form.png | 0 src/static/img/ordering_1.png | 0 src/static/img/system_entry.jpg | 0 src/static/img/update.png | 0 src/static/img/bs9.jpg | 0 src/static/img/next_step.jpg | 0 src/static/img/user3.png | 0 src/static/img/cfg_center_1.png | 0 src/static/templates/expense_standard_table.html | 177 src/static/js/utils/uuid.js | 109 src/static/img/cfg_center_5.png | 0 src/static/templates/travel_expense_todos_budget.html | 178 src/static/templates/to_do_list.html | 46 src/static/img/workflow_ys.png | 0 src/static/templates/system_config.html | 341 src/static/js/messages_center/module.js | 164 src/static/templates/travel_expense_todos.html | 108 src/static/css/app.less | 17 src/static/img/business3.png | 0 src/package.json | 36 src/static/img/reimbursement_standard_settings_guid.jpg | 0 src/static/templates/drop_down_selector.html | 14 src/static/img/createorder.png | 0 src/static/templates/iframe_test.html | 39 src/static/templates/messages_center.html | 98 src/static/img/folder.png | 0 src/static/css/city.less | 165 src/static/css/frm_elem_editor.less | 173 src/static/js/business/module.js | 57 src/static/templates/forms_center.html | 135 src/static/css/registry.less | 84 src/static/js/qxv6.json | 886 + src/static/js/travel_expense_todos/module.js | 1326 + src/bower.json | 37 src/static/js/userPermission.json | 134 src/static/templates/travel_expense.html | 262 src/static/img/search_item.png | 0 src/static/img/workflow_sq.png | 0 src/static/img/workflowing_settins_guid.png | 0 src/static/js/work_flow/module.js | 276 src/static/js/qxv3.json | 1010 + src/static/js/data/form.json | 113 src/static/templates/work_flow.html | 48 src/static/img/request_card.png | 0 src/static/js/app.js | 756 + src/static/img/edit_saved_templates.jpg | 0 src/static/templates/guide.html | 21 src/static/css/saved_form.less | 1221 + src/static/img/calendar.png | 0 src/static/img/continue.png | 0 src/static/js/utils/form-builder.js | 441 src/static/img/travel_expense_full.png | 0 src/static/templates/apply_select.html | 0 src/static/js/qxv4.json | 878 + src/.gitignore | 6 src/static/img/list.png | 0 src/static/img/switch_off.png | 0 src/static/templates/bill_create_popup.html | 42 src/static/js/saved_form/module.js | 5364 +++++++ src/static/js/qxv7.json | 71 src/static/img/budget_settings_guid.jpg | 0 src/static/img/bs8.jpg | 0 src/static/img/hero_guide.png | 0 src/static/templates/form_item.html | 90 src/static/js/utils/http.js | 162 src/static/img/no.png | 0 src/static/templates/expend_standard.html | 78 src/static/templates/registry.html | 21 src/static/img/addelement.png | 0 src/static/img/createorder.png.REMOTE.png | 0 src/static/img/u6181.png | 0 src/static/js/config.json | 26 src/static/img/bs6.jpg | 0 src/static/templates/billing_cfg_guide.html | 168 src/static/img/travel_expense_import.png | 0 src/static/css/index.less | 1168 + src/static/img/close2.png | 0 src/static/img/cfg_center_7.png | 0 183 files changed, 44,411 insertions(+), 0 deletions(-) diff --git a/src/.DS_Store b/src/.DS_Store new file mode 100644 index 0000000..5008ddf --- /dev/null +++ b/src/.DS_Store Binary files differ diff --git a/src/.bowerrc b/src/.bowerrc new file mode 100644 index 0000000..291bae8 --- /dev/null +++ b/src/.bowerrc @@ -0,0 +1,3 @@ +{ + "directory": "static/vendors/" +} \ No newline at end of file diff --git a/src/.gitignore b/src/.gitignore new file mode 100644 index 0000000..01e0a3f --- /dev/null +++ b/src/.gitignore @@ -0,0 +1,6 @@ +static/vendors +node_modules +.history +dist +static/css/*.css +dist/static/css/app.css \ No newline at end of file diff --git a/src/.project b/src/.project new file mode 100644 index 0000000..f0fd2bf --- /dev/null +++ b/src/.project @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>iem</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>com.aptana.ide.core.unifiedBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>com.aptana.projects.webnature</nature> + </natures> + <filteredResources> + <filter> + <id>1487557518387</id> + <name></name> + <type>26</type> + <matcher> + <id>org.eclipse.ui.ide.multiFilter</id> + <arguments>1.0-name-matches-false-false-node_modules</arguments> + </matcher> + </filter> + </filteredResources> +</projectDescription> diff --git a/src/README.md b/src/README.md new file mode 100644 index 0000000..d42d393 --- /dev/null +++ b/src/README.md @@ -0,0 +1,37 @@ +# README # + +###工具下载 +1.安装 nodejs +2.安装 bower +npm install -g bower +3.安装 gulp +npm install -g gulp + + +###项目打包 +1.bower install //需在项目目录下 +2.npm install //本地安装gulp插件 +3.gulp less //编译css +4.gulp build:prod //打包 + +###配置文件修改 +static\js\app.js +云尚行地址 +var register_url = "http://csza.chfcloud.com/"; +流程引擎地址 +var work_flow_url = "http://ubpyq.chfcloud.com:8087/"; + +nginx前端反向代理配置 +location /travel-web/ { + proxy_connect_timeout 600s; + proxy_pass http://10.4.32.149:8081/travel-web/; + fastcgi_connect_timeout 60; + fastcgi_send_timeout 180; + fastcgi_read_timeout 180; + fastcgi_buffer_size 128k; + fastcgi_buffers 256 16k; + client_body_buffer_size 1024k; +} + + +config.json 配置文件中 加密工具 http://202.98.157.47:8080/dec/dec.html \ No newline at end of file diff --git a/src/bower.json b/src/bower.json new file mode 100644 index 0000000..6ef80e0 --- /dev/null +++ b/src/bower.json @@ -0,0 +1,37 @@ +{ + "name": "iem", + "authors": [ + "IEMSoft" + ], + "description": "", + "main": "", + "license": "MIT", + "homepage": "", + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "test", + "tests" + ], + "dependencies": { + "jquery-ui": "^1.12.1", + "jquery": "^3.1.1", + "angular": "1.6.1", + "font-awesome": "fontawesome#^4.7.0", + "angular-route": "1.6.1", + "animate.css": "^3.5.2", + "zTree": "^3.5.28", + "flatpickr": "flatpickr-calendar#^2.4.2", + "bootstrap": "^3.3.7", + "traceur": "^0.0.111", + "lodash": "^4.17.4", + "sweetalert": "^1.1.3", + "toastr": "^2.1.3", + "ng-file-upload-shim": "^12.2.13", + "smalot-bootstrap-datetimepicker": "^2.4.4", + "imageviewer": "^0.5.1", + "ngDraggable": "^0.1.11", + "ztree": "^3.5.0" + } +} diff --git a/src/bs-config.json b/src/bs-config.json new file mode 100644 index 0000000..fe25ac2 --- /dev/null +++ b/src/bs-config.json @@ -0,0 +1,5 @@ +{ + "port": 8888, + "files": ["./static/**/*.{html,htm,css,js}"], + "server": { "baseDir": "./" } +} \ No newline at end of file diff --git a/src/gulpfile.js b/src/gulpfile.js new file mode 100644 index 0000000..bee8015 --- /dev/null +++ b/src/gulpfile.js @@ -0,0 +1,189 @@ +var gulp = require('gulp'); +var debug = require ('gulp-debug'); +var watch = require('gulp-watch'); +var uglify = require('gulp-uglify'); +var concat = require('gulp-concat'); +var rename = require('gulp-rename'); +var rimraf = require('gulp-rimraf'); +var watchLess = require('gulp-watch-less'); +var less = require('gulp-less'); +var runSequence = require('run-sequence'); +var _ = require('lodash'); +var clean = require('gulp-clean'); +var plugins = require('gulp-load-plugins')({ + lazy: true +}); +var proxy = require('http-proxy-middleware'); + +var paths = { + // using framework version of jquery + scripts: [ + 'static/vendors/traceur/traceur.min.js', + 'static/vendors/lodash/dist/lodash.min.js', + 'static/vendors/angular/angular.min.js', + 'static/vendors/angular-route/angular-route.min.js', + 'static/vendors/jquery/dist/jquery.min.js', + 'static/vendors/jquery-ui/jquery-ui.min.js', + 'static/vendors/bootstrap/dist/js/bootstrap.min.js', + 'static/vendors/zTree/js/jquery.ztree.core.js', + 'static/vendors/flatpickr/dist/flatpickr.min.js', + 'static/vendors/flatpickr/dist/l10n/zh.js', + 'static/vendors/sweetalert/dist/sweetalert.min.js', + 'static/vendors/ng-file-upload-shim/ng-file-upload.min.js', + 'static/vendors/ng-file-upload-shim/ng-file-upload-shim.min.js', + 'static/vendors/toastr/toastr.min.js', + 'static/vendors/smalot-bootstrap-datetimepicker/js/bootstrap-datetimepicker.js', + 'static/vendors/smalot-bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.zh-CN.js', + 'static/vendors/imageviewer/dist/viewer.js', + 'static/vendors/ngDraggable/ngDraggable.js', + 'static/js/utils/form-builder.js', + 'static/js/utils/uuid.js', + 'static/js/utils/jquery.base64.min.js', + 'static/js/utils/des.js', + 'static/js/utils/jquery.md5.js', + 'static/js/app.js', + 'static/js/business/module.js', + 'static/js/billing_cfg_guide/module.js', + 'static/js/budget_form_customize/module.js', + 'static/js/budget_forms/module.js', + 'static/js/utils/http.js', + 'static/js/saved_form/module.js', + 'static/js/config_center/module.js', + 'static/js/system_config/module.js', + 'static/js/travel_expense/module.js', + 'static/js/travel_expense_todos/module.js', + 'static/js/forms_center/module.js', + 'static/js/messages_center/module.js', + 'static/js/templates_center/module.js', + 'static/js/expend_standard/module.js', + 'static/js/registry/module.js', + 'static/js/work_flow/module.js' + ] +}; + +var path = { + 'dev': './', + 'build': 'static/js/build/', + 'dist': 'dist/' +}; + +gulp.task('less', function(){ + return gulp.src('static/css/**/*.less') + .pipe(watchLess('static/css/**/*.less')) + .pipe(debug()) + .pipe(less()) + .pipe(gulp.dest('static/css/')); +}) + +gulp.task('prod:clean', function(done){ + return gulp + .src(path.dist, { read: false }) + .pipe(rimraf({ force: true }, done)); +}) + +gulp.task('prod:copyAll', function(){ + return gulp.src(['static/**/*']) + .pipe(gulp.dest(path.dist + 'static/')); +}) + +gulp.task('prod:copyIndex', function(){ + return gulp.src(['index.html']) + .pipe(gulp.dest(path.dist)); +}) + +gulp.task('prod:minify', function(){ + return gulp.src(_.map(paths.scripts, o=> path.dist + o)) + .pipe(concat('all.js')) + .pipe(gulp.dest(path.dist+path.build)) + .pipe(rename('all.min.js')) + .pipe(uglify()) + .pipe(gulp.dest(path.dist+path.build)) +}) + +gulp.task('prod:inject', function () { + var target = gulp.src('./index.html'); + var sources = gulp.src([ + path.dist+path.build+'all.min.js' + ], { read: false }); + return target.pipe(plugins.inject(sources, { ignorePath: 'dist/', addRootSlash: true })) + .pipe(gulp.dest(path.dist)); +}); + + +gulp.task('build:prod', function(done){ + runSequence( + 'prod:clean', + 'prod:copyAll', + 'prod:minify', + 'prod:inject', + 'prod:clearnSrc', + done); +}); + + +gulp.task('prod:clearnSrc', function(){ + return gulp.src(_.map(paths.scripts, o=> path.dist + o), {read: false}) + .pipe(clean()); +}); + +gulp.task('dev:watch', function () { + gulp.watch('static/css/**/*.less', ['less']); +}); + + +gulp.task('connect:dev', function() { + plugins.connect.server({ + root: [path.dev], + port: 80, + livereload: false, + fallback: 'index.html', + middleware: function(connect, opt) { + return [ + proxy('/travel-web', { +// target: 'http://192.168.31.137:8080', +// target: 'http://10.4.32.37:8080', + target: 'http://10.4.32.57:80/', +// target: 'http://192.168.31.17:8080/', +// target: 'http://192.168.31.144:8080', +// target: 'http://192.168.31.17:8080', +// target: 'http://192.168.31.30:8080', +// target: 'http://192.168.31.53:8090', +// target: 'http://192.168.31.205', +// target: 'http://192.168.31.89:8090', +// target: 'http://122.114.176.216:8080/', +//// target: 'http://202.98.157.47:8081/', +// target: 'http://10.4.68.58', +// target: 'http://10.4.32.58:8080', +// target: 'http://localhost:8080', +// target: 'http://192.168.31.172:80', + changeOrigin:true + }) + ] + } + }); +}); + +gulp.task('connect:prod', function() { + plugins.connect.server({ + root: [path.dist], + port: 8082, + livereload: false, + fallback: 'index.html', + middleware: function(connect, opt) { + return [ + proxy('/travel-web', { + target: 'http://122.114.176.216:8080/', + changeOrigin:true + }) + ] + } + }); +}); + + +gulp.task('run:dev', function(done){ + runSequence( + 'dev:watch', + 'connect:dev', + done); +}); diff --git a/src/index.html b/src/index.html new file mode 100644 index 0000000..9cee3e6 --- /dev/null +++ b/src/index.html @@ -0,0 +1,148 @@ +<!DOCTYPE HTML> +<html ng-app="app"> + + <head> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + <style type="text/css"> + .loading{ + width: 30%; + position: fixed; + height: 70%; + left: 35%; + top: 10%; + background-repeat: no-repeat; + background-size: contain; + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; + } + .load_span{ + margin-top: 8px; + } + </style> + <!--<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />--> + <!-- <link href="./static/vendors/flatpickr/dist/flatpickr.min.css" type="text/css" rel="stylesheet"/>--> + <link href="./static/vendors/bootstrap/dist/css/bootstrap.min.css" type="text/css" rel="stylesheet"/> + <link href="./static/vendors/animate.css/animate.min.css" type="text/css" rel="stylesheet"/> + <link href="./static/vendors/font-awesome/css/font-awesome.min.css" type="text/css" rel="stylesheet"/> + <link href="./static/vendors/zTree/css/zTreeStyle/zTreeStyle.css" type="text/css" rel="stylesheet"/> + <link rel="stylesheet" type="text/css" href="./static/vendors/smalot-bootstrap-datetimepicker/css/bootstrap-datetimepicker.min.css"/> + <!-- <link href="./static/vendors/flatpickr/dist/flatpickr.min.css" type="text/css" rel="stylesheet"/>--> + <link href="./static/vendors/flatpickr/dist/themes/material_green.css" type="text/css" rel="stylesheet"/> + <!--<link rel="stylesheet" type="text/css" href="./static/vendors/bootstrap/dist/css/jquery.eeyellow.Timeline.css"/>--> + <link href="./static/vendors/toastr/toastr.min.css" type="text/css" rel="stylesheet"/> + <link rel="stylesheet" type="text/css" href="./static/vendors/sweetalert/dist/sweetalert.css"/> + <link rel="shortcut icon" href="./static/img/heroico.ico"> + <link href="./static/css/app.css" type="text/css" rel="stylesheet"/> + </head> + <body ng-controller="appCtrl" lang="zh" class="animated fadeIn" > + <div class="outer"> + <header class="bs-docs-nav navbar navbar-static-top" id="top"> + <div class="container"> + <div class="navbar-header"> + <img src="./static/img/hero.png" class="hero"> + <a ng-href="javascript:void(0);" class="navbar-brand">费用云</a> + </div> + <nav class="collapse navbar-collapse" id="bs-navbar"> + <ul class="nav navbar-nav"> + <li class="dropdown" data-toggle="dropdown" ng-show="permission_check('travel_reimbursement')"> + <a ng-href="javascript:void(0);" id="travel_reimbursement">差旅费</a> + <ul class="dropdown-menu" aria-labelledby="travel_reimbursement"> + <li ng-show="permission_check('budgetorder') && $root.budget_open == 1"><a ng-href="javascript:void(0);" ng-click="redirect_to('travel_expense/1')" id="budgetorder">预算</a></li> + <li role="separator" class="divider"></li> + <li ng-show="permission_check('applyorder') && $root.apply_open == 1" class=""><a ng-href="javascript:void(0);" ng-click="redirect_to('travel_expense/2')" id="applyorder">申请</a></li> + <li role="separator" class="divider"></li> + <li ng-show="permission_check('expendorder') && $root.expend_open == 1" class=""><a ng-href="javascript:void(0);" ng-click="redirect_to('travel_expense/3')" id="expendorder">报销</a></li> + </ul> + </li> + <li ng-show="permission_check('termination')" class="active"><a ng-href="javascript:void(0);" ng-click="redirect_to('/travel_expense_todos/')" id="termination">待办事项</a></li> + <li ng-show="permission_check('config_center')"> + <a ng-href="javascript:void(0);" ng-click="redirect_to('cfg_center/')" id="config_center">配置中心</a> + </li> + <li ng-show="permission_check('cloud_center')" class="dropdown" data-toggle="dropdown"> + <a ng-href="javascript:void(0);" id="cloud_center">云中心</a> + <ul class="dropdown-menu" aria-labelledby="cloud_center"> + <li ng-show="permission_check('template_center')"><a ng-href="javascript:void(0);" ng-click="redirect_to('/templates_center')" id="template_center">模板中心</a></li> + <!-- + <li role="separator" class="divider"></li> + <li ><a href="/#!/user_forms_center/1">表单管理</a></li> + --> + <li ng-show="permission_check('messages_center')"><a ng-href="javascript:void(0);" ng-click="redirect_to('/messages_center')" id="message_center">消息中心</a></li> + <!--<li ng-show="app_userinfo.userId == 83"><a ng-href="javascript:void(0);" ng-click="redirect_to('/messages_center')" id="message_center">消息中心</a></li>--> + </ul> + </li> + </ul> + <!--<button class="btn btn-action" style="float: right;" ng-click="redirect_to('registry')">登录</button>--> + <div style="float: right;margin-top: 10px;"> + <span style="color: #fff;">用户:{{app_userinfo.name}}</span> + <button class="exitloginbtn" style="height: 30px;margin-left: 5px;" ng-click="exitLogin()">退出登录</button> + </div> + </nav> + </div> + </header> + <div class="loading body_show" ng-class="{body_transparent: !url_change_start, body_show: url_change_start}" > + <i class="fa fa-spinner fa-spin fa-3x fa-fw"></i> + <span class="load_span">Loading...</span> + </div> + <div class="view"> + <div ng-view></div> + </div> + </div> + </body> + <!-- inject:js --> + <script src="./static/vendors/traceur/traceur.min.js"></script> + <script src="./static/vendors/lodash/dist/lodash.min.js"></script> + <script src="./static/vendors/angular/angular.min.js"></script> + <script src="./static/vendors/angular-route/angular-route.min.js"></script> + <script src="./static/vendors/jquery/dist/jquery.min.js"></script> + <script src="./static/vendors/jquery-ui/jquery-ui.min.js"></script> + <script src="./static/vendors/bootstrap/dist/js/bootstrap.min.js"></script> + <script src="./static/vendors/zTree/js/jquery.ztree.core.js"></script> + <script src="./static/vendors/flatpickr/dist/flatpickr.min.js"></script> + <script src="./static/vendors/flatpickr/dist/l10n/zh.js"></script> + <script src="./static/vendors/toastr/toastr.min.js"></script> + <script src="./static/vendors/smalot-bootstrap-datetimepicker/js/bootstrap-datetimepicker.js" type="text/javascript" charset="utf-8"></script> + <script src="./static/vendors/smalot-bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.zh-CN.js" type="text/javascript" charset="utf-8"></script> + <script src="./static/vendors/ngDraggable/ngDraggable.js" type="text/javascript" charset="utf-8"></script> + <script src="./static/js/utils/form-builder.js"></script> + <script src="./static/js/utils/uuid.js"></script> + <script src="./static/js/utils/jquery.base64.min.js"></script> + <script src="./static/js/utils/jquery.md5.js"></script> + <script src="./static/js/utils/des.js"></script> + <script src="./static/js/app.js"></script> + <script src="./static/js/business/module.js"></script> + <script src="./static/js/billing_cfg_guide/module.js"></script> + <script src="./static/js/budget_form_customize/module.js"></script> + <script src="./static/js/budget_forms/module.js"></script> + <script src="./static/js/utils/http.js"></script> + <script src="./static/js/saved_form/module.js"></script> + <script src="./static/js/config_center/module.js"></script> + <script src="./static/js/system_config/module.js"></script> + <script src="./static/js/travel_expense/module.js"></script> + <script src="./static/js/travel_expense_todos/module.js"></script> + <script src="./static/js/forms_center/module.js"></script> + <script src="./static/js/templates_center/module.js"></script> + <script src="./static/js/messages_center/module.js"></script> + <script src="./static/js/expend_standard/module.js"></script> + <script src="./static/js/registry/module.js"></script> + <script src="./static/js/work_flow/module.js"></script> + <!--<script src="./static/vendors/toastr/toastr.min.js"></script>--> + <script src="./static/vendors/sweetalert/dist/sweetalert.min.js"></script> + <script src="./static/vendors/ng-file-upload-shim/ng-file-upload.min.js" type="text/javascript" charset="utf-8"></script> + <script src="./static/vendors/ng-file-upload-shim/ng-file-upload-shim.min.js" type="text/javascript" charset="utf-8"></script> + <!-- endinject --> + <script> + Flatpickr.localize(Flatpickr.l10ns.zh); // 设置为中文 + flatpickr('mySelector'); + var basefont = window.innerWidth / 10 + 'px'; + function fn(){ + document.querySelector('html').fontSize = basefont; + } + fn(); + window.resize = function(){ + fn(); + } + + </script> + </html> \ No newline at end of file diff --git a/src/origin_change.html b/src/origin_change.html new file mode 100644 index 0000000..a2953ee --- /dev/null +++ b/src/origin_change.html @@ -0,0 +1,92 @@ +<!DOCTYPE HTML> +<!--[if lt IE 9]> +<p class="chromeframe" onclick="this.style.display='none'">您正在使用<strong>老版本浏览器</strong>,请<a href="http://browsehappy.com/">升级到新版本浏览器</a>或者<a href="http://www.mychrome.cn/desktop/">下载谷歌浏览器</a>,以便页面能正确显示并提升您的浏览体验!360浏览器请切换至<span>极速模式 </span><a title="关闭">×</a></p> +<![endif]--> +<html> + +<head> + <meta charset="utf-8"> + <meta name="renderer" content="webkit" /> + <meta http-equiv="X-UA-Compatible" content="chrome=1,IE=edge"> + <title>云尚行</title> + <meta name="description" content=""> + <meta name="viewport" content="width=device-width"> + <link rel="icon" href="/favicon.ico?v=20170711"> + <link rel="stylesheet" href="css/all.css" /> + <style> + .cover { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + background: url(./img/bg-origin.jpg) center 0 no-repeat; + background-size: auto 78.125%; + } + .logo { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: url(./img/logo-origin.jpg) 0 0 no-repeat; + background-size: auto 9.375%; + } + .container { + position: absolute; + top: 78.125%; + left: 0; + width: 100%; + text-align: center; + line-height: 58px; + } + .djs { + color: #8a9499; + font-size: 24px; + } + .now { + font-size: 24px; + color: #2e3133; + } + #sec { + color: #ea4547; + padding: 0 5px; + } + .now > a { + color: #23b8f6; + text-decoration: underline!important; + } + </style> +</head> +<body> +<div class="cover"></div> +<div class="logo"></div> +<div class="container"> + <p class="djs"><span id="sec">5</span>秒后自动跳转</p> + <p class="now">立刻前往: <a id="link_a" href="#">travel.sunscloud.com</a></p> +</div> +<script> + function getQueryString(name) { //获取url参数的值 + var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); + var r = window.location.search.substr(1).match(reg); + if (r != null) return unescape(r[2]); return null; + } + var token = getQueryString("token"); + var csc_compid = getQueryString("csc_compid"); + var csc_comp_code = getQueryString("csc_comp_code"); + var tenantId = getQueryString("tenantId"); + var companyRowId = getQueryString("companyRowId"); + var newUrl = "https://travel.sunscloud.com/?token="+token+"&csc_compid="+csc_compid+"&csc_comp_code="+csc_comp_code+"&tenantId="+tenantId+"&companyRowId="+companyRowId+"&origin_change=1"; + document.getElementById('link_a').href = newUrl; + var sec = 5; + var timer = setInterval(function () { + sec -= 1; + if (sec <= 0) { + location.href = newUrl; + clearInterval(timer); + } + document.getElementById('sec').innerHTML = sec; + }, 1000); +</script> +</body> +</html> diff --git a/src/package-lock.json b/src/package-lock.json new file mode 100644 index 0000000..dde9db0 --- /dev/null +++ b/src/package-lock.json @@ -0,0 +1,6928 @@ +{ + "name": "iem", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "accepts": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", + "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", + "dev": true, + "requires": { + "mime-types": "~2.1.18", + "negotiator": "0.6.1" + } + }, + "accord": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/accord/-/accord-0.28.0.tgz", + "integrity": "sha1-vsUWovci59UPX59C+Bt387lUSLo=", + "dev": true, + "requires": { + "convert-source-map": "^1.5.0", + "glob": "^7.0.5", + "indx": "^0.2.3", + "lodash.clone": "^4.3.2", + "lodash.defaults": "^4.0.1", + "lodash.flatten": "^4.2.0", + "lodash.merge": "^4.4.0", + "lodash.partialright": "^4.1.4", + "lodash.pick": "^4.2.1", + "lodash.uniq": "^4.3.0", + "resolve": "^1.5.0", + "semver": "^5.3.0", + "uglify-js": "^2.8.22", + "when": "^3.7.8" + }, + "dependencies": { + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "semver": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha1-3Eu8emyp2Rbe5dQ1FvAJK1j3uKs=", + "dev": true + } + } + }, + "ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "dev": true, + "optional": true, + "requires": { + "co": "^4.6.0", + "json-stable-stringify": "^1.0.1" + } + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "dev": true, + "requires": { + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true, + "optional": true + }, + "ansi-colors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", + "integrity": "sha1-Y3S03V1HGP884npnGjscrQdxMqk=", + "dev": true, + "requires": { + "ansi-wrap": "^0.1.0" + } + }, + "ansi-cyan": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-cyan/-/ansi-cyan-0.1.1.tgz", + "integrity": "sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM=", + "dev": true, + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-gray": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", + "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", + "dev": true, + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-red": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz", + "integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=", + "dev": true, + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", + "dev": true + }, + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=", + "dev": true + }, + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha1-VT3Lj5HjyImEXf26NMd3IbkLnXo=", + "dev": true, + "requires": { + "micromatch": "^2.1.5", + "normalize-path": "^2.0.0" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + } + } + }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "dev": true + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-differ": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", + "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", + "dev": true + }, + "array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-slice": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", + "integrity": "sha1-42jqFfibxwaff/uJrsOmx9SsItQ=", + "dev": true + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true, + "optional": true + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true, + "optional": true + }, + "assert-plus": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", + "dev": true, + "optional": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "async-done": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/async-done/-/async-done-0.4.0.tgz", + "integrity": "sha1-q4BT9fYikPi/xY83zZtzBwszB7k=", + "dev": true, + "requires": { + "end-of-stream": "^0.1.4", + "next-tick": "^0.2.2", + "once": "^1.3.0", + "stream-exhaust": "^1.0.0" + } + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true, + "optional": true + }, + "atob": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.0.3.tgz", + "integrity": "sha1-GcenYEc3dEaPILLS0DNyrX1Mv10=", + "dev": true + }, + "aws-sign2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", + "dev": true, + "optional": true + }, + "aws4": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "dev": true, + "optional": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha1-e95c7RRbbVUakNuH+DxVi060io8=", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "beeper": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz", + "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=", + "dev": true + }, + "binary-extensions": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", + "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", + "dev": true + }, + "body-parser": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.14.2.tgz", + "integrity": "sha1-EBXLH+LEQ4WCWVgdtTMy+NDPUPk=", + "dev": true, + "requires": { + "bytes": "2.2.0", + "content-type": "~1.0.1", + "debug": "~2.2.0", + "depd": "~1.1.0", + "http-errors": "~1.3.1", + "iconv-lite": "0.4.13", + "on-finished": "~2.3.0", + "qs": "5.2.0", + "raw-body": "~2.1.5", + "type-is": "~1.6.10" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true, + "requires": { + "ms": "0.7.1" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true + }, + "qs": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-5.2.0.tgz", + "integrity": "sha1-qfMRQq9GjLcrJbMBNrokVoNJFr4=", + "dev": true + } + } + }, + "boom": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "dev": true, + "requires": { + "hoek": "2.x.x" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.1.tgz", + "integrity": "sha1-cIbJE7TloI2+N6wO5qJQDEumkbs=", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "kind-of": "^6.0.2", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "bytes": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.2.0.tgz", + "integrity": "sha1-/TVGSkA/b5EXwt42Cez/nK4ABYg=", + "dev": true + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha1-Cn9GQWgxyLZi7jb+TnxZ129marI=", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true, + "optional": true + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "dev": true, + "requires": { + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "dev": true, + "requires": { + "anymatch": "^1.3.0", + "async-each": "^1.0.0", + "fsevents": "^1.0.0", + "glob-parent": "^2.0.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^2.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha1-+TNprouafOAv1B+q0MqDAzGQxGM=", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0=", + "dev": true + } + } + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, + "requires": { + "center-align": "^0.1.1", + "right-align": "^0.1.1", + "wordwrap": "0.0.2" + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true + }, + "clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", + "dev": true + }, + "clone-stats": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", + "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", + "dev": true + }, + "cloneable-readable": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.2.tgz", + "integrity": "sha1-1ZHe5Kj4vBXaQ86X3O66E9Q+KmU=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "process-nextick-args": "^2.0.0", + "readable-stream": "^2.3.5" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha1-tPhQA6k4y7bsvOKhJPsQEr0ag40=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.0.3", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true, + "optional": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha1-wSYRB66y8pTr/+ye2eytUppgl+0=", + "dev": true, + "requires": { + "color-name": "^1.1.1" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha1-k4NDeaHMmgxh+C9S8NBDIiUb1aI=", + "dev": true + }, + "combined-stream": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-with-sourcemaps": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.0.5.tgz", + "integrity": "sha1-iWS8I0fQWBm2N5gQTYfW4AG+2NA=", + "dev": true, + "requires": { + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "connect": { + "version": "3.6.6", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", + "integrity": "sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.0", + "parseurl": "~1.3.2", + "utils-merge": "1.0.1" + } + }, + "connect-livereload": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/connect-livereload/-/connect-livereload-0.5.4.tgz", + "integrity": "sha1-gBV9E3HJ83zBQDmrGJWXDRGdw7w=", + "dev": true + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha1-4TjMdeBAxyexlm/l5fjJruJW/js=", + "dev": true + }, + "convert-source-map": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "dev": true + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cryptiles": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "dev": true, + "optional": true, + "requires": { + "boom": "2.x.x" + } + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "^1.0.1" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "optional": true, + "requires": { + "assert-plus": "^1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true, + "optional": true + } + } + }, + "dateformat": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz", + "integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha1-1Flono1lS6d+AqgX+HENcCyxbp0=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "deprecated": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/deprecated/-/deprecated-0.0.1.tgz", + "integrity": "sha1-+cmvVGSvoeepcUWKi97yqpTVuxk=", + "dev": true + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "dev": true + }, + "duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", + "dev": true + }, + "duplexer2": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", + "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", + "dev": true, + "requires": { + "readable-stream": "~1.1.9" + } + }, + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "dev": true, + "optional": true, + "requires": { + "jsbn": "~0.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "end-of-stream": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz", + "integrity": "sha1-jhdyBsPICDfYVjLouTWd/osvbq8=", + "dev": true, + "requires": { + "once": "~1.3.0" + } + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha1-RoTXF3mtOa8Xfj8AeZb3xnyFJhg=", + "dev": true, + "optional": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "etag": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz", + "integrity": "sha1-A9MLX2fdbmMtKUXTDWZScxo01dg=", + "dev": true + }, + "event-stream": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", + "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", + "dev": true, + "requires": { + "duplexer": "~0.1.1", + "from": "~0", + "map-stream": "~0.1.0", + "pause-stream": "0.0.11", + "split": "0.3", + "stream-combiner": "~0.0.4", + "through": "~2.3.1" + } + }, + "eventemitter3": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz", + "integrity": "sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg=", + "dev": true + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0=", + "dev": true + } + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "^2.1.0" + }, + "dependencies": { + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "dev": true, + "requires": { + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^1.1.3", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha1-rQD+TcYSqSMuhxhxHcXLWrAoVUM=", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fancy-log": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.2.tgz", + "integrity": "sha1-9BEl49hPLn2JpD0G2VjI94vha+E=", + "dev": true, + "requires": { + "ansi-gray": "^0.1.1", + "color-support": "^1.1.3", + "time-stamp": "^1.0.0" + } + }, + "fastqueue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/fastqueue/-/fastqueue-0.1.0.tgz", + "integrity": "sha1-bGkQFrOAYYZHbusFpxe6u49jPBk=", + "dev": true + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "finalhandler": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", + "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.3.1", + "unpipe": "~1.0.0" + } + }, + "find-index": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz", + "integrity": "sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ=", + "dev": true + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "findup-sync": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", + "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", + "dev": true, + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^3.1.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + } + }, + "fined": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.1.0.tgz", + "integrity": "sha1-s33IRLdqL15wgeiE98CuNE8VNHY=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "is-plain-object": "^2.0.3", + "object.defaults": "^1.1.0", + "object.pick": "^1.2.0", + "parse-filepath": "^1.0.1" + } + }, + "first-chunk-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz", + "integrity": "sha1-Wb+1DNkF9g18OUzT2ayqtOatk04=", + "dev": true + }, + "flagged-respawn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.0.tgz", + "integrity": "sha1-Tnmumy6zi/hrO7Vr8+ClaqX8q9c=", + "dev": true + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true, + "optional": true + }, + "form-data": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "dev": true, + "optional": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.5", + "mime-types": "^2.1.12" + } + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz", + "integrity": "sha1-ZR+DjiJCTnVm3hYdg1jKoZn4PU8=", + "dev": true + }, + "from": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", + "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=", + "dev": true + }, + "fs-exists-sync": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz", + "integrity": "sha1-mC1ok6+RjnLQjeyehnP/K1qNat0=", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.2.9", + "resolved": "http://r.cnpmjs.org/fsevents/download/fsevents-1.2.9.tgz", + "integrity": "sha1-P17WZYPM1vQAtaANtvfoYTY+OI8=", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.12.1", + "node-pre-gyp": "^0.12.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "minipass": { + "version": "2.3.5", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.3.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^4.1.0", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "yallist": { + "version": "3.0.3", + "bundled": true, + "dev": true + } + } + }, + "gaze": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz", + "integrity": "sha1-QLcJU30k0dRXZ9takIaJ3+aaxE8=", + "dev": true, + "requires": { + "globule": "~0.1.0" + } + }, + "get-own-enumerable-property-symbols": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-2.0.1.tgz", + "integrity": "sha1-XErYfyg0xLm06EVJ3B4GUPs4wks=", + "dev": true + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "optional": true, + "requires": { + "assert-plus": "^1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true, + "optional": true + } + } + }, + "glob": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz", + "integrity": "sha1-xstz0yJsHv7wTePFbQEvAzd+4V8=", + "dev": true, + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^2.0.1", + "once": "^1.3.0" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "^2.0.0" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "glob-stream": { + "version": "3.1.18", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-3.1.18.tgz", + "integrity": "sha1-kXCl8St5Awb9/lmPMT+PeVT9FDs=", + "dev": true, + "requires": { + "glob": "^4.3.1", + "glob2base": "^0.0.12", + "minimatch": "^2.0.1", + "ordered-read-streams": "^0.1.0", + "through2": "^0.6.1", + "unique-stream": "^1.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "requires": { + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + } + } + } + }, + "glob-watcher": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-0.0.6.tgz", + "integrity": "sha1-uVtKjfdLOcgymLDAXJeLTZo7cQs=", + "dev": true, + "requires": { + "gaze": "^0.5.1" + } + }, + "glob2base": { + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz", + "integrity": "sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=", + "dev": true, + "requires": { + "find-index": "^0.1.1" + } + }, + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha1-bXcPDrUjrHgWTXK15xqIdyZcw+o=", + "dev": true, + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + }, + "globule": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz", + "integrity": "sha1-2cjt3h2nnRJaFRt5UzuXhnY0auU=", + "dev": true, + "requires": { + "glob": "~3.1.21", + "lodash": "~1.0.1", + "minimatch": "~0.2.11" + }, + "dependencies": { + "glob": { + "version": "3.1.21", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", + "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=", + "dev": true, + "requires": { + "graceful-fs": "~1.2.0", + "inherits": "1", + "minimatch": "~0.2.11" + } + }, + "graceful-fs": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", + "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=", + "dev": true + }, + "inherits": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz", + "integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=", + "dev": true + }, + "lodash": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz", + "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=", + "dev": true + }, + "minimatch": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", + "dev": true, + "requires": { + "lru-cache": "2", + "sigmund": "~1.0.0" + } + } + } + }, + "glogg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.1.tgz", + "integrity": "sha1-3PdY5EeJzD89MsHzVio2duajSBA=", + "dev": true, + "requires": { + "sparkles": "^1.0.0" + } + }, + "graceful-fs": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz", + "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=", + "dev": true, + "requires": { + "natives": "^1.1.0" + } + }, + "group-array": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/group-array/-/group-array-0.3.3.tgz", + "integrity": "sha1-u9nS9xjfS+M/D7kEMqrxtDYOSY8=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1", + "for-own": "^0.1.4", + "get-value": "^2.0.6", + "kind-of": "^3.1.0", + "split-string": "^1.0.1", + "union-value": "^0.2.3" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.1", + "to-object-path": "^0.3.0" + } + }, + "split-string": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-1.0.1.tgz", + "integrity": "sha1-vLqz9BUqzuOg1qskecDSh5w9s84=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1" + } + }, + "union-value": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-0.2.4.tgz", + "integrity": "sha1-c3UVJ4ZnkFfns3qmdug0aPwCdPA=", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^0.4.3" + } + } + } + }, + "gulp": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/gulp/-/gulp-3.9.1.tgz", + "integrity": "sha1-VxzkWSjdQK9lFPxAEYZgFsE4RbQ=", + "dev": true, + "requires": { + "archy": "^1.0.0", + "chalk": "^1.0.0", + "deprecated": "^0.0.1", + "gulp-util": "^3.0.0", + "interpret": "^1.0.0", + "liftoff": "^2.1.0", + "minimist": "^1.1.0", + "orchestrator": "^0.3.0", + "pretty-hrtime": "^1.0.0", + "semver": "^4.1.0", + "tildify": "^1.0.0", + "v8flags": "^2.0.2", + "vinyl-fs": "^0.3.0" + } + }, + "gulp-batch": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gulp-batch/-/gulp-batch-1.0.1.tgz", + "integrity": "sha1-2aahq7UEs6QUctnqJy1JGeEbD4Y=", + "dev": true, + "requires": { + "async-done": "^0.4.0", + "stream-array": "^0.1.3" + } + }, + "gulp-clean": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/gulp-clean/-/gulp-clean-0.3.2.tgz", + "integrity": "sha1-o0fUc6zqQBgvk1WHpFGUFnGSgQI=", + "dev": true, + "requires": { + "gulp-util": "^2.2.14", + "rimraf": "^2.2.8", + "through2": "^0.4.2" + }, + "dependencies": { + "ansi-regex": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", + "integrity": "sha1-DY6UaWej2BQ/k+JOKYUl/BsiNfk=", + "dev": true + }, + "ansi-styles": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz", + "integrity": "sha1-6uy/Zs1waIJ2Cy9GkVgrj1XXp94=", + "dev": true + }, + "chalk": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", + "integrity": "sha1-Zjs6ZItotV0EaQ1JFnqoN4WPIXQ=", + "dev": true, + "requires": { + "ansi-styles": "^1.1.0", + "escape-string-regexp": "^1.0.0", + "has-ansi": "^0.1.0", + "strip-ansi": "^0.3.0", + "supports-color": "^0.2.0" + } + }, + "dateformat": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", + "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=", + "dev": true, + "requires": { + "get-stdin": "^4.0.1", + "meow": "^3.3.0" + } + }, + "gulp-util": { + "version": "2.2.20", + "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-2.2.20.tgz", + "integrity": "sha1-1xRuVyiRC9jwR6awseVJvCLb1kw=", + "dev": true, + "requires": { + "chalk": "^0.5.0", + "dateformat": "^1.0.7-1.2.3", + "lodash._reinterpolate": "^2.4.1", + "lodash.template": "^2.4.1", + "minimist": "^0.2.0", + "multipipe": "^0.1.0", + "through2": "^0.5.0", + "vinyl": "^0.2.1" + }, + "dependencies": { + "through2": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.5.1.tgz", + "integrity": "sha1-390BLrnHAOIyP9M084rGIqs3Lac=", + "dev": true, + "requires": { + "readable-stream": "~1.0.17", + "xtend": "~3.0.0" + } + } + } + }, + "has-ansi": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", + "integrity": "sha1-hPJlqujA5qiKEtcCKJS3VoiUxi4=", + "dev": true, + "requires": { + "ansi-regex": "^0.2.0" + } + }, + "lodash._reinterpolate": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-2.4.1.tgz", + "integrity": "sha1-TxInqlqHEfxjL1sHofRgequLMiI=", + "dev": true + }, + "lodash.escape": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-2.4.1.tgz", + "integrity": "sha1-LOEsXghNsKV92l5dHu659dF1o7Q=", + "dev": true, + "requires": { + "lodash._escapehtmlchar": "~2.4.1", + "lodash._reunescapedhtml": "~2.4.1", + "lodash.keys": "~2.4.1" + } + }, + "lodash.keys": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.4.1.tgz", + "integrity": "sha1-SN6kbfj/djKxDXBrissmWR4rNyc=", + "dev": true, + "requires": { + "lodash._isnative": "~2.4.1", + "lodash._shimkeys": "~2.4.1", + "lodash.isobject": "~2.4.1" + } + }, + "lodash.template": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-2.4.1.tgz", + "integrity": "sha1-nmEQB+32KRKal0qzxIuBez4c8g0=", + "dev": true, + "requires": { + "lodash._escapestringchar": "~2.4.1", + "lodash._reinterpolate": "~2.4.1", + "lodash.defaults": "~2.4.1", + "lodash.escape": "~2.4.1", + "lodash.keys": "~2.4.1", + "lodash.templatesettings": "~2.4.1", + "lodash.values": "~2.4.1" + } + }, + "lodash.templatesettings": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-2.4.1.tgz", + "integrity": "sha1-6nbHXRHrhtTb6JqDiTu4YZKaxpk=", + "dev": true, + "requires": { + "lodash._reinterpolate": "~2.4.1", + "lodash.escape": "~2.4.1" + } + }, + "minimist": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.2.0.tgz", + "integrity": "sha1-Tf/lJdriuGTGbC4jxicdev3s784=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "strip-ansi": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", + "integrity": "sha1-JfSOoiynkYfzF0pNuHWTR7sSYiA=", + "dev": true, + "requires": { + "ansi-regex": "^0.2.1" + } + }, + "supports-color": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz", + "integrity": "sha1-2S3iaU6z9nMjlz1649i1W0wiGQo=", + "dev": true + }, + "through2": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.4.2.tgz", + "integrity": "sha1-2/WGYDEVHsg1K7bE22SiKSqEC5s=", + "dev": true, + "requires": { + "readable-stream": "~1.0.17", + "xtend": "~2.1.1" + }, + "dependencies": { + "xtend": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", + "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=", + "dev": true, + "requires": { + "object-keys": "~0.4.0" + } + } + } + }, + "vinyl": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.2.3.tgz", + "integrity": "sha1-vKk4IJWC7FpJrVOKAPofEl5RMlI=", + "dev": true, + "requires": { + "clone-stats": "~0.0.1" + } + }, + "xtend": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-3.0.0.tgz", + "integrity": "sha1-XM50B7r2Qsunvs2laBEcST9ZZlo=", + "dev": true + } + } + }, + "gulp-concat": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/gulp-concat/-/gulp-concat-2.6.1.tgz", + "integrity": "sha1-Yz0WyV2IUEYorQJmVmPO5aR5M1M=", + "dev": true, + "requires": { + "concat-with-sourcemaps": "^1.0.0", + "through2": "^2.0.0", + "vinyl": "^2.0.0" + }, + "dependencies": { + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "dev": true + }, + "clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", + "dev": true + }, + "replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", + "dev": true + }, + "vinyl": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.1.0.tgz", + "integrity": "sha1-Ah+cLPlR1rk5lDyJ617lrdT9kkw=", + "dev": true, + "requires": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + } + } + } + }, + "gulp-connect": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/gulp-connect/-/gulp-connect-5.5.0.tgz", + "integrity": "sha1-5CMU0Hrfmy/7onKXTO/5H3yHYTA=", + "dev": true, + "requires": { + "ansi-colors": "^1.0.1", + "connect": "^3.6.5", + "connect-livereload": "^0.5.4", + "event-stream": "^3.3.2", + "fancy-log": "^1.3.2", + "send": "^0.13.2", + "serve-index": "^1.9.1", + "serve-static": "^1.13.1", + "tiny-lr": "^0.2.1" + } + }, + "gulp-debug": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/gulp-debug/-/gulp-debug-3.2.0.tgz", + "integrity": "sha1-RaukQ5+nn+B4j2pBHuB3j0SS36U=", + "dev": true, + "requires": { + "chalk": "^2.3.0", + "fancy-log": "^1.3.2", + "plur": "^2.0.0", + "stringify-object": "^3.0.0", + "through2": "^2.0.0", + "tildify": "^1.1.2" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz", + "integrity": "sha1-JQ3JawdJG/1gHmSNZt319gx6XGU=", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "supports-color": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz", + "integrity": "sha1-WySsFduA+pJ89SJ6SjP9PEx2dsA=", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "gulp-inject": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/gulp-inject/-/gulp-inject-4.3.1.tgz", + "integrity": "sha1-cWr42Ubg9AgJzpfhvu2cxoZ9cNc=", + "dev": true, + "requires": { + "ansi-colors": "^1.0.1", + "arrify": "^1.0.1", + "escape-string-regexp": "^1.0.5", + "event-stream": "^3.1.0", + "fancy-log": "^1.3.2", + "group-array": "^0.3.0", + "plugin-error": "^0.1.2", + "stream-to-array": "^2.3.0", + "through2": "^2.0.1" + } + }, + "gulp-less": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/gulp-less/-/gulp-less-3.5.0.tgz", + "integrity": "sha1-gBT0ad38ZUTX3aUAmN7wNxu7T3g=", + "dev": true, + "requires": { + "accord": "^0.28.0", + "less": "2.6.x || ^2.7.1", + "object-assign": "^4.0.1", + "plugin-error": "^0.1.2", + "replace-ext": "^1.0.0", + "through2": "^2.0.0", + "vinyl-sourcemaps-apply": "^0.2.0" + }, + "dependencies": { + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", + "dev": true + } + } + }, + "gulp-load-plugins": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/gulp-load-plugins/-/gulp-load-plugins-1.5.0.tgz", + "integrity": "sha1-TEGffldk2aDjMGG6uWGPgbc9QXE=", + "dev": true, + "requires": { + "array-unique": "^0.2.1", + "fancy-log": "^1.2.0", + "findup-sync": "^0.4.0", + "gulplog": "^1.0.0", + "has-gulplog": "^0.1.0", + "micromatch": "^2.3.8", + "resolve": "^1.1.7" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "detect-file": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-0.1.0.tgz", + "integrity": "sha1-STXe39lIhkjgBrASlWbpOGcR6mM=", + "dev": true, + "requires": { + "fs-exists-sync": "^0.1.0" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "expand-tilde": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz", + "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=", + "dev": true, + "requires": { + "os-homedir": "^1.0.1" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "findup-sync": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.4.3.tgz", + "integrity": "sha1-QAQ5Kee8YK3wt/SCfExudaDeyhI=", + "dev": true, + "requires": { + "detect-file": "^0.1.0", + "is-glob": "^2.0.1", + "micromatch": "^2.3.7", + "resolve-dir": "^0.1.0" + } + }, + "global-modules": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz", + "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=", + "dev": true, + "requires": { + "global-prefix": "^0.1.4", + "is-windows": "^0.2.0" + } + }, + "global-prefix": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz", + "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.0", + "ini": "^1.3.4", + "is-windows": "^0.2.0", + "which": "^1.2.12" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "is-windows": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", + "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + }, + "resolve-dir": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz", + "integrity": "sha1-shklmlYC+sXFxJatiUpujMQwJh4=", + "dev": true, + "requires": { + "expand-tilde": "^1.2.2", + "global-modules": "^0.2.3" + } + } + } + }, + "gulp-minify": { + "version": "0.0.14", + "resolved": "https://registry.npmjs.org/gulp-minify/-/gulp-minify-0.0.14.tgz", + "integrity": "sha1-sPeYd0L8tRezcTCNr3kcr7Bm0aw=", + "dev": true, + "requires": { + "gulp-util": "^2.2.14", + "minimatch": "^3.0.2", + "through2": "^0.4.0", + "uglify-js": "^2.6.2" + }, + "dependencies": { + "ansi-regex": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", + "integrity": "sha1-DY6UaWej2BQ/k+JOKYUl/BsiNfk=", + "dev": true + }, + "ansi-styles": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz", + "integrity": "sha1-6uy/Zs1waIJ2Cy9GkVgrj1XXp94=", + "dev": true + }, + "chalk": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", + "integrity": "sha1-Zjs6ZItotV0EaQ1JFnqoN4WPIXQ=", + "dev": true, + "requires": { + "ansi-styles": "^1.1.0", + "escape-string-regexp": "^1.0.0", + "has-ansi": "^0.1.0", + "strip-ansi": "^0.3.0", + "supports-color": "^0.2.0" + } + }, + "dateformat": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", + "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=", + "dev": true, + "requires": { + "get-stdin": "^4.0.1", + "meow": "^3.3.0" + } + }, + "gulp-util": { + "version": "2.2.20", + "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-2.2.20.tgz", + "integrity": "sha1-1xRuVyiRC9jwR6awseVJvCLb1kw=", + "dev": true, + "requires": { + "chalk": "^0.5.0", + "dateformat": "^1.0.7-1.2.3", + "lodash._reinterpolate": "^2.4.1", + "lodash.template": "^2.4.1", + "minimist": "^0.2.0", + "multipipe": "^0.1.0", + "through2": "^0.5.0", + "vinyl": "^0.2.1" + }, + "dependencies": { + "through2": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.5.1.tgz", + "integrity": "sha1-390BLrnHAOIyP9M084rGIqs3Lac=", + "dev": true, + "requires": { + "readable-stream": "~1.0.17", + "xtend": "~3.0.0" + } + } + } + }, + "has-ansi": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", + "integrity": "sha1-hPJlqujA5qiKEtcCKJS3VoiUxi4=", + "dev": true, + "requires": { + "ansi-regex": "^0.2.0" + } + }, + "lodash._reinterpolate": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-2.4.1.tgz", + "integrity": "sha1-TxInqlqHEfxjL1sHofRgequLMiI=", + "dev": true + }, + "lodash.escape": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-2.4.1.tgz", + "integrity": "sha1-LOEsXghNsKV92l5dHu659dF1o7Q=", + "dev": true, + "requires": { + "lodash._escapehtmlchar": "~2.4.1", + "lodash._reunescapedhtml": "~2.4.1", + "lodash.keys": "~2.4.1" + } + }, + "lodash.keys": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.4.1.tgz", + "integrity": "sha1-SN6kbfj/djKxDXBrissmWR4rNyc=", + "dev": true, + "requires": { + "lodash._isnative": "~2.4.1", + "lodash._shimkeys": "~2.4.1", + "lodash.isobject": "~2.4.1" + } + }, + "lodash.template": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-2.4.1.tgz", + "integrity": "sha1-nmEQB+32KRKal0qzxIuBez4c8g0=", + "dev": true, + "requires": { + "lodash._escapestringchar": "~2.4.1", + "lodash._reinterpolate": "~2.4.1", + "lodash.defaults": "~2.4.1", + "lodash.escape": "~2.4.1", + "lodash.keys": "~2.4.1", + "lodash.templatesettings": "~2.4.1", + "lodash.values": "~2.4.1" + } + }, + "lodash.templatesettings": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-2.4.1.tgz", + "integrity": "sha1-6nbHXRHrhtTb6JqDiTu4YZKaxpk=", + "dev": true, + "requires": { + "lodash._reinterpolate": "~2.4.1", + "lodash.escape": "~2.4.1" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.2.0.tgz", + "integrity": "sha1-Tf/lJdriuGTGbC4jxicdev3s784=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "strip-ansi": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", + "integrity": "sha1-JfSOoiynkYfzF0pNuHWTR7sSYiA=", + "dev": true, + "requires": { + "ansi-regex": "^0.2.1" + } + }, + "supports-color": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz", + "integrity": "sha1-2S3iaU6z9nMjlz1649i1W0wiGQo=", + "dev": true + }, + "through2": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.4.2.tgz", + "integrity": "sha1-2/WGYDEVHsg1K7bE22SiKSqEC5s=", + "dev": true, + "requires": { + "readable-stream": "~1.0.17", + "xtend": "~2.1.1" + }, + "dependencies": { + "xtend": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", + "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=", + "dev": true, + "requires": { + "object-keys": "~0.4.0" + } + } + } + }, + "vinyl": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.2.3.tgz", + "integrity": "sha1-vKk4IJWC7FpJrVOKAPofEl5RMlI=", + "dev": true, + "requires": { + "clone-stats": "~0.0.1" + } + }, + "xtend": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-3.0.0.tgz", + "integrity": "sha1-XM50B7r2Qsunvs2laBEcST9ZZlo=", + "dev": true + } + } + }, + "gulp-rename": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-1.2.2.tgz", + "integrity": "sha1-OtRCh2PwXidk3sHGfYaNsnVoeBc=", + "dev": true + }, + "gulp-rimraf": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/gulp-rimraf/-/gulp-rimraf-0.2.2.tgz", + "integrity": "sha1-ln8wmrGcIH4THgCCGKXwHh8T4c4=", + "dev": true, + "requires": { + "rimraf": "^2.6.2", + "through2": "^2.0.3" + } + }, + "gulp-uglify": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/gulp-uglify/-/gulp-uglify-2.1.2.tgz", + "integrity": "sha1-bbhbHQ7mPRgFhZK2WGSdZcLsRUE=", + "dev": true, + "requires": { + "gulplog": "^1.0.0", + "has-gulplog": "^0.1.0", + "lodash": "^4.13.1", + "make-error-cause": "^1.1.1", + "through2": "^2.0.0", + "uglify-js": "~2.8.10", + "uglify-save-license": "^0.4.1", + "vinyl-sourcemaps-apply": "^0.2.0" + } + }, + "gulp-util": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", + "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=", + "dev": true, + "requires": { + "array-differ": "^1.0.0", + "array-uniq": "^1.0.2", + "beeper": "^1.0.0", + "chalk": "^1.0.0", + "dateformat": "^2.0.0", + "fancy-log": "^1.1.0", + "gulplog": "^1.0.0", + "has-gulplog": "^0.1.0", + "lodash._reescape": "^3.0.0", + "lodash._reevaluate": "^3.0.0", + "lodash._reinterpolate": "^3.0.0", + "lodash.template": "^3.0.0", + "minimist": "^1.1.0", + "multipipe": "^0.1.2", + "object-assign": "^3.0.0", + "replace-ext": "0.0.1", + "through2": "^2.0.0", + "vinyl": "^0.5.0" + } + }, + "gulp-watch": { + "version": "4.3.11", + "resolved": "https://registry.npmjs.org/gulp-watch/-/gulp-watch-4.3.11.tgz", + "integrity": "sha1-Fi/FY96fx3DpH5p845VVE6mhGMA=", + "dev": true, + "requires": { + "anymatch": "^1.3.0", + "chokidar": "^1.6.1", + "glob-parent": "^3.0.1", + "gulp-util": "^3.0.7", + "object-assign": "^4.1.0", + "path-is-absolute": "^1.0.1", + "readable-stream": "^2.2.2", + "slash": "^1.0.0", + "vinyl": "^1.2.0", + "vinyl-file": "^2.0.0" + }, + "dependencies": { + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "readable-stream": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha1-tPhQA6k4y7bsvOKhJPsQEr0ag40=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.0.3", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "vinyl": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", + "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", + "dev": true, + "requires": { + "clone": "^1.0.0", + "clone-stats": "^0.0.1", + "replace-ext": "0.0.1" + } + } + } + }, + "gulp-watch-less": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gulp-watch-less/-/gulp-watch-less-1.0.1.tgz", + "integrity": "sha1-E5rjejiipZZCHuyXsr0L1Q4sscQ=", + "dev": true, + "requires": { + "gulp-util": "^3.0.0", + "gulp-watch": "^1.1.0", + "less": "~2.3.1", + "lodash.defaults": "^2.4.1", + "through2": "^0.6.1" + }, + "dependencies": { + "asap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/asap/-/asap-1.0.0.tgz", + "integrity": "sha1-sqRdpf36ILBJb8N2jMJ8EvqRan0=", + "dev": true, + "optional": true + }, + "clone": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", + "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", + "dev": true + }, + "gulp-watch": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/gulp-watch/-/gulp-watch-1.2.1.tgz", + "integrity": "sha1-QwNedgRs2P7TAzZcsJ4ECi4qoJs=", + "dev": true, + "requires": { + "gaze": "0.5.x", + "glob2base": "~0.0.11", + "gulp-batch": "1.0.1", + "gulp-util": "~3.0.0", + "path2glob": "0.0.2", + "readable-stream": "^1.0.31", + "vinyl": "^0.4.3", + "vinyl-file": "~1.1.0" + } + }, + "image-size": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.3.5.tgz", + "integrity": "sha1-gyQOqy+1sAsEqrjHSwRx6cunrYw=", + "dev": true, + "optional": true + }, + "less": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/less/-/less-2.3.1.tgz", + "integrity": "sha1-wQ7AgrLylQ9uHHUOTaFLzFQ+2EU=", + "dev": true, + "requires": { + "errno": "^0.1.1", + "graceful-fs": "^3.0.5", + "image-size": "~0.3.5", + "mime": "^1.2.11", + "mkdirp": "^0.5.0", + "promise": "^6.0.1", + "request": "^2.51.0", + "source-map": "^0.2.0" + } + }, + "promise": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-6.1.0.tgz", + "integrity": "sha1-LOcp9rlLRcJoka0GAsXJDgTG7vY=", + "dev": true, + "optional": true, + "requires": { + "asap": "~1.0.0" + } + }, + "source-map": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", + "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=", + "dev": true, + "optional": true, + "requires": { + "amdefine": ">=0.0.4" + } + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "requires": { + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + }, + "dependencies": { + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + } + } + }, + "vinyl": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", + "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", + "dev": true, + "requires": { + "clone": "^0.2.0", + "clone-stats": "^0.0.1" + } + }, + "vinyl-file": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/vinyl-file/-/vinyl-file-1.1.1.tgz", + "integrity": "sha1-gbZV8m5li9Logp8o1j+EfWhD1tA=", + "dev": true, + "requires": { + "graceful-fs": "^3.0.2", + "strip-bom": "^1.0.0", + "vinyl": "^0.4.3" + } + } + } + }, + "gulplog": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", + "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", + "dev": true, + "requires": { + "glogg": "^1.0.0" + } + }, + "har-schema": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", + "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", + "dev": true, + "optional": true + }, + "har-validator": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", + "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", + "dev": true, + "optional": true, + "requires": { + "ajv": "^4.9.1", + "har-schema": "^1.0.5" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-gulplog": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", + "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", + "dev": true, + "requires": { + "sparkles": "^1.0.0" + } + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hawk": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "dev": true, + "optional": true, + "requires": { + "boom": "2.x.x", + "cryptiles": "2.x.x", + "hoek": "2.x.x", + "sntp": "1.x.x" + } + }, + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "dev": true + }, + "homedir-polyfill": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", + "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", + "dev": true, + "requires": { + "parse-passwd": "^1.0.0" + } + }, + "hosted-git-info": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", + "integrity": "sha1-IyNbKasjDFdqqw1PE/wEawsDgiI=", + "dev": true + }, + "http-errors": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", + "integrity": "sha1-GX4izevUGYWF6GlO9nhhl7ke2UI=", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "statuses": "1" + } + }, + "http-parser-js": { + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.11.tgz", + "integrity": "sha1-W3IIScZQkDwn5SFjPZRpbulfNSk=", + "dev": true + }, + "http-proxy": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.16.2.tgz", + "integrity": "sha1-Bt/ykpUr9k2+hHH6nfcwZtTzd0I=", + "dev": true, + "requires": { + "eventemitter3": "1.x.x", + "requires-port": "1.x.x" + } + }, + "http-proxy-middleware": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz", + "integrity": "sha1-ZC6ISIUdZvCdTxJJEoRtuutBuDM=", + "dev": true, + "requires": { + "http-proxy": "^1.16.2", + "is-glob": "^3.1.0", + "lodash": "^4.17.2", + "micromatch": "^2.3.11" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + }, + "dependencies": { + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + } + } + } + } + }, + "http-signature": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "dev": true, + "optional": true, + "requires": { + "assert-plus": "^0.2.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "iconv-lite": { + "version": "0.4.13", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", + "integrity": "sha1-H4irpKsLFQjoMSrMOTRfNumS4vI=", + "dev": true + }, + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", + "dev": true, + "optional": true + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "indx": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/indx/-/indx-0.2.3.tgz", + "integrity": "sha1-Fdz1bunPZcAjTFE8J/vVgOcPvFA=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha1-7uJfVtscnsYIXgwid4CD9Zar+Sc=", + "dev": true + }, + "interpret": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", + "dev": true + }, + "irregular-plurals": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-1.4.0.tgz", + "integrity": "sha1-LKmwM2UREYVUEvFr5dd8YqRYp2Y=", + "dev": true + }, + "is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha1-OV4a6EsR8mrReV5zwXN45IowFXY=", + "dev": true, + "requires": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "^1.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "^2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + }, + "is-odd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", + "integrity": "sha1-dkZiRnH9fqVYzNmieVGC8pWPGyQ=", + "dev": true, + "requires": { + "is-number": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha1-ACbjf1RU1z41bf5lZGmYZ8an8P8=", + "dev": true + } + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", + "dev": true + }, + "is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha1-obtpNc6MXboei5dUubLcwCDiJg0=", + "dev": true, + "requires": { + "is-unc-path": "^1.0.0" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true, + "optional": true + }, + "is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha1-1zHoiY7QkKEsNSrS6u1Qla0yLJ0=", + "dev": true, + "requires": { + "unc-path-regex": "^0.1.2" + } + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha1-0YUOuXkezRjmGCzhKjDzlmNLsZ0=", + "dev": true + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true, + "optional": true + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true, + "optional": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, + "optional": true, + "requires": { + "jsonify": "~0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true, + "optional": true + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true, + "optional": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true, + "optional": true + } + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=", + "dev": true + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "dev": true + }, + "less": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/less/-/less-2.7.3.tgz", + "integrity": "sha1-zBJg9RyQCp7A2R+2mYE54CUHtjs=", + "dev": true, + "requires": { + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "mime": "^1.2.11", + "mkdirp": "^0.5.0", + "promise": "^7.1.1", + "request": "2.81.0", + "source-map": "^0.5.3" + }, + "dependencies": { + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true, + "optional": true + } + } + }, + "liftoff": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.5.0.tgz", + "integrity": "sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew=", + "dev": true, + "requires": { + "extend": "^3.0.0", + "findup-sync": "^2.0.0", + "fined": "^1.0.1", + "flagged-respawn": "^1.0.0", + "is-plain-object": "^2.0.4", + "object.map": "^1.0.0", + "rechoir": "^0.6.2", + "resolve": "^1.1.7" + } + }, + "livereload-js": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.3.0.tgz", + "integrity": "sha1-w6si6Kr1vzUF2A0JjLrWdyZUjJo=", + "dev": true + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "dependencies": { + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + } + } + }, + "lodash": { + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha1-maktZcAnLevoyWtgV7yPv6O+1RE=", + "dev": true + }, + "lodash._basecopy": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", + "dev": true + }, + "lodash._basetostring": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", + "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=", + "dev": true + }, + "lodash._basevalues": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz", + "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=", + "dev": true + }, + "lodash._escapehtmlchar": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._escapehtmlchar/-/lodash._escapehtmlchar-2.4.1.tgz", + "integrity": "sha1-32fDu2t+jh6DGrSL+geVuSr+iZ0=", + "dev": true, + "requires": { + "lodash._htmlescapes": "~2.4.1" + } + }, + "lodash._escapestringchar": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._escapestringchar/-/lodash._escapestringchar-2.4.1.tgz", + "integrity": "sha1-7P4iYYoq3lC/7qQ5N+Ud9m8O23I=", + "dev": true + }, + "lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", + "dev": true + }, + "lodash._htmlescapes": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._htmlescapes/-/lodash._htmlescapes-2.4.1.tgz", + "integrity": "sha1-MtFL8IRLbeb4tioFG09nwii2JMs=", + "dev": true + }, + "lodash._isiterateecall": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", + "dev": true + }, + "lodash._isnative": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._isnative/-/lodash._isnative-2.4.1.tgz", + "integrity": "sha1-PqZAS3hKe+g2x7V1gOHN95sUgyw=", + "dev": true + }, + "lodash._objecttypes": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._objecttypes/-/lodash._objecttypes-2.4.1.tgz", + "integrity": "sha1-fAt/admKH3ZSn4kLDNsbTf7BHBE=", + "dev": true + }, + "lodash._reescape": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz", + "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=", + "dev": true + }, + "lodash._reevaluate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz", + "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=", + "dev": true + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", + "dev": true + }, + "lodash._reunescapedhtml": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._reunescapedhtml/-/lodash._reunescapedhtml-2.4.1.tgz", + "integrity": "sha1-dHxPxAED6zu4oJduVx96JlnpO6c=", + "dev": true, + "requires": { + "lodash._htmlescapes": "~2.4.1", + "lodash.keys": "~2.4.1" + }, + "dependencies": { + "lodash.keys": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.4.1.tgz", + "integrity": "sha1-SN6kbfj/djKxDXBrissmWR4rNyc=", + "dev": true, + "requires": { + "lodash._isnative": "~2.4.1", + "lodash._shimkeys": "~2.4.1", + "lodash.isobject": "~2.4.1" + } + } + } + }, + "lodash._root": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", + "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", + "dev": true + }, + "lodash._shimkeys": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._shimkeys/-/lodash._shimkeys-2.4.1.tgz", + "integrity": "sha1-bpzJZm/wgfC1psl4uD4kLmlJ0gM=", + "dev": true, + "requires": { + "lodash._objecttypes": "~2.4.1" + } + }, + "lodash.clone": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz", + "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y=", + "dev": true + }, + "lodash.defaults": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-2.4.1.tgz", + "integrity": "sha1-p+iIXwXmiFEUS24SqPNngCa8TFQ=", + "dev": true, + "requires": { + "lodash._objecttypes": "~2.4.1", + "lodash.keys": "~2.4.1" + }, + "dependencies": { + "lodash.keys": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.4.1.tgz", + "integrity": "sha1-SN6kbfj/djKxDXBrissmWR4rNyc=", + "dev": true, + "requires": { + "lodash._isnative": "~2.4.1", + "lodash._shimkeys": "~2.4.1", + "lodash.isobject": "~2.4.1" + } + } + } + }, + "lodash.escape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", + "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=", + "dev": true, + "requires": { + "lodash._root": "^3.0.0" + } + }, + "lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", + "dev": true + }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", + "dev": true + }, + "lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", + "dev": true + }, + "lodash.isobject": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-2.4.1.tgz", + "integrity": "sha1-Wi5H/mmVPx7mMafrof5k0tBlWPU=", + "dev": true, + "requires": { + "lodash._objecttypes": "~2.4.1" + } + }, + "lodash.keys": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "dev": true, + "requires": { + "lodash._getnative": "^3.0.0", + "lodash.isarguments": "^3.0.0", + "lodash.isarray": "^3.0.0" + } + }, + "lodash.merge": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz", + "integrity": "sha1-rcJdnLmbk5HFliTzefu6YNcRHVQ=", + "dev": true + }, + "lodash.partialright": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.partialright/-/lodash.partialright-4.2.1.tgz", + "integrity": "sha1-ATDYDoM2MmTUAHTzKbij56ihzEs=", + "dev": true + }, + "lodash.pick": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", + "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=", + "dev": true + }, + "lodash.restparam": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", + "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=", + "dev": true + }, + "lodash.template": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", + "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=", + "dev": true, + "requires": { + "lodash._basecopy": "^3.0.0", + "lodash._basetostring": "^3.0.0", + "lodash._basevalues": "^3.0.0", + "lodash._isiterateecall": "^3.0.0", + "lodash._reinterpolate": "^3.0.0", + "lodash.escape": "^3.0.0", + "lodash.keys": "^3.0.0", + "lodash.restparam": "^3.0.0", + "lodash.templatesettings": "^3.0.0" + } + }, + "lodash.templatesettings": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz", + "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=", + "dev": true, + "requires": { + "lodash._reinterpolate": "^3.0.0", + "lodash.escape": "^3.0.0" + } + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "lodash.values": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.values/-/lodash.values-2.4.1.tgz", + "integrity": "sha1-q/UUQ2s8twUAFieXjLzzCxKA7qQ=", + "dev": true, + "requires": { + "lodash.keys": "~2.4.1" + }, + "dependencies": { + "lodash.keys": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.4.1.tgz", + "integrity": "sha1-SN6kbfj/djKxDXBrissmWR4rNyc=", + "dev": true, + "requires": { + "lodash._isnative": "~2.4.1", + "lodash._shimkeys": "~2.4.1", + "lodash.isobject": "~2.4.1" + } + } + } + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "lru-cache": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", + "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", + "dev": true + }, + "make-error": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.4.tgz", + "integrity": "sha1-GZeO1XX56VRdL/jBPjO10Ypn1TU=", + "dev": true + }, + "make-error-cause": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/make-error-cause/-/make-error-cause-1.2.2.tgz", + "integrity": "sha1-3wOI/NCzeBbf8KX7gQiTl3fcvJ0=", + "dev": true, + "requires": { + "make-error": "^1.2.0" + } + }, + "make-iterator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.0.tgz", + "integrity": "sha1-V7713IXSOSO6I3ZzJNjo+PPZaUs=", + "dev": true, + "requires": { + "kind-of": "^3.1.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "map-stream": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", + "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + }, + "dependencies": { + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + } + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha1-cIWbyVyYQJUvNZoGij/En57PrCM=", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "mime": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", + "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=", + "dev": true + }, + "mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha1-o0kgUKXLm2NFBUHjnZeI0icng9s=", + "dev": true + }, + "mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha1-bzI/YKg9ERRvgx/xH9ZuL+VQO7g=", + "dev": true, + "requires": { + "mime-db": "~1.33.0" + } + }, + "minimatch": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", + "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", + "dev": true, + "requires": { + "brace-expansion": "^1.0.0" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "mixin-deep": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha1-pJ5yaNzhoNlpjkUybFYm3zVD0P4=", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + } + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "multipipe": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", + "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=", + "dev": true, + "requires": { + "duplexer2": "0.0.2" + } + }, + "nan": { + "version": "2.14.0", + "resolved": "http://r.cnpmjs.org/nan/download/nan-2.14.0.tgz", + "integrity": "sha1-eBj3IgJ7JFmobwKV1DTR/CM2xSw=", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", + "integrity": "sha1-h59xUMstq3pHElkGbBBO7m4Pp8I=", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-odd": "^2.0.0", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "natives": { + "version": "1.1.6", + "resolved": "http://r.cnpmjs.org/natives/download/natives-1.1.6.tgz", + "integrity": "sha1-pgO0pJirdxc2ErnqGs3sTZgPALs=" + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", + "dev": true + }, + "next-tick": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-0.2.2.tgz", + "integrity": "sha1-ddpKkn7liH45BliABltzNkE7MQ0=", + "dev": true + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha1-EvlaMH1YNSB1oEkHuErIvpisAS8=", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "dev": true, + "optional": true + }, + "object-assign": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", + "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0=", + "dev": true + } + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-keys": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", + "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", + "dev": true, + "requires": { + "array-each": "^1.0.1", + "array-slice": "^1.0.0", + "for-own": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "object.map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", + "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", + "dev": true, + "requires": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "requires": { + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" + }, + "dependencies": { + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + } + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "orchestrator": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/orchestrator/-/orchestrator-0.3.8.tgz", + "integrity": "sha1-FOfp4nZPcxX7rBhOUGx6pt+UrX4=", + "dev": true, + "requires": { + "end-of-stream": "~0.1.5", + "sequencify": "~0.0.7", + "stream-consume": "~0.1.0" + } + }, + "ordered-read-streams": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz", + "integrity": "sha1-/VZamvjrRHO6abbtijQ1LLVS8SY=", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", + "dev": true, + "requires": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true + }, + "parseurl": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true + }, + "path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "dev": true, + "requires": { + "path-root-regex": "^0.1.0" + } + }, + "path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", + "dev": true + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + } + } + }, + "path2glob": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/path2glob/-/path2glob-0.0.2.tgz", + "integrity": "sha1-KejODRVAfCpQtjPvgFCy8pfARwI=", + "dev": true, + "requires": { + "glob": "^4.0.5" + } + }, + "pause-stream": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", + "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", + "dev": true, + "requires": { + "through": "~2.3" + } + }, + "performance-now": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", + "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", + "dev": true, + "optional": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "plugin-error": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz", + "integrity": "sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4=", + "dev": true, + "requires": { + "ansi-cyan": "^0.1.1", + "ansi-red": "^0.1.1", + "arr-diff": "^1.0.1", + "arr-union": "^2.0.1", + "extend-shallow": "^1.1.2" + }, + "dependencies": { + "arr-diff": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz", + "integrity": "sha1-aHwydYFjWI/vfeezb6vklesaOZo=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1", + "array-slice": "^0.2.3" + } + }, + "arr-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-2.1.0.tgz", + "integrity": "sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0=", + "dev": true + }, + "array-slice": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", + "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=", + "dev": true + }, + "extend-shallow": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz", + "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=", + "dev": true, + "requires": { + "kind-of": "^1.1.0" + } + }, + "kind-of": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", + "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ=", + "dev": true + } + } + }, + "plur": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/plur/-/plur-2.1.2.tgz", + "integrity": "sha1-dIJFLBoPUI4+NE6uwxLJHCncZVo=", + "dev": true, + "requires": { + "irregular-plurals": "^1.0.0" + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha1-o31zL0JxtKsa0HDTVQjoKQeI/6o=", + "dev": true + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha1-BktyYCsY+Q8pGSuLG8QY/9Hr078=", + "dev": true, + "optional": true, + "requires": { + "asap": "~2.0.3" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true, + "optional": true + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true, + "optional": true + }, + "qs": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-5.1.0.tgz", + "integrity": "sha1-TZMuXH6kEcynajEtOaYGIA/VDNk=", + "dev": true + }, + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha1-x6vpzIuHwLqodrGf3oP9RkeX44w=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "range-parser": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.3.tgz", + "integrity": "sha1-aHKCNTXGkuLCoBA4Jq/YLC4P8XU=", + "dev": true + }, + "raw-body": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.1.7.tgz", + "integrity": "sha1-rf6s4uT7MJgFgBTQjActzFl1h3Q=", + "dev": true, + "requires": { + "bytes": "2.4.0", + "iconv-lite": "0.4.13", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz", + "integrity": "sha1-fZcZb51br39pNeJZhVSe3SpsIzk=", + "dev": true + } + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "readdirp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", + "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "minimatch": "^3.0.2", + "readable-stream": "^2.0.2", + "set-immediate-shim": "^1.0.1" + }, + "dependencies": { + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "readable-stream": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha1-tPhQA6k4y7bsvOKhJPsQEr0ag40=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.0.3", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "requires": { + "resolve": "^1.1.6" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha1-db3FiioUls7EihKDW8VMjVYjNt0=", + "dev": true, + "requires": { + "is-equal-shallow": "^0.1.3" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha1-H07OJ+ALC2XgJHpoEOaoXYOldSw=", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "replace-ext": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", + "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", + "dev": true + }, + "request": { + "version": "2.81.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", + "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", + "dev": true, + "optional": true, + "requires": { + "aws-sign2": "~0.6.0", + "aws4": "^1.2.1", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.0", + "forever-agent": "~0.6.1", + "form-data": "~2.1.1", + "har-validator": "~4.2.1", + "hawk": "~3.1.3", + "http-signature": "~1.1.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.7", + "oauth-sign": "~0.8.1", + "performance-now": "^0.2.0", + "qs": "~6.4.0", + "safe-buffer": "^5.0.1", + "stringstream": "~0.0.4", + "tough-cookie": "~2.3.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.0.0" + }, + "dependencies": { + "qs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", + "dev": true, + "optional": true + } + } + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "resolve": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.6.0.tgz", + "integrity": "sha1-D70hJ4sntABEgcOVNJ56umCp/1w=", + "dev": true, + "requires": { + "path-parse": "^1.0.5" + } + }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + } + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha1-uKSCXVvbH8P29Twrwz+BOIaBx7w=", + "dev": true + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "dev": true, + "requires": { + "align-text": "^0.1.1" + } + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha1-LtgVDSShbqhlHm1u8PR8QVjOejY=", + "dev": true, + "requires": { + "glob": "^7.0.5" + }, + "dependencies": { + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "run-sequence": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/run-sequence/-/run-sequence-1.2.2.tgz", + "integrity": "sha1-UJWgvr6YczsBQL0I3YDsAw3azes=", + "dev": true, + "requires": { + "chalk": "*", + "gulp-util": "*" + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha1-iTMSr2myEj3vcfV4iQAWce6yyFM=", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "semver": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", + "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", + "dev": true + }, + "send": { + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.13.2.tgz", + "integrity": "sha1-dl52B8gFVFK7pvCwUllTUJhgNt4=", + "dev": true, + "requires": { + "debug": "~2.2.0", + "depd": "~1.1.0", + "destroy": "~1.0.4", + "escape-html": "~1.0.3", + "etag": "~1.7.0", + "fresh": "0.3.0", + "http-errors": "~1.3.1", + "mime": "1.3.4", + "ms": "0.7.1", + "on-finished": "~2.3.0", + "range-parser": "~1.0.3", + "statuses": "~1.2.1" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true, + "requires": { + "ms": "0.7.1" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true + }, + "statuses": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz", + "integrity": "sha1-3e1FzBglbVHtQK7BQkidXGECbSg=", + "dev": true + } + } + }, + "sequencify": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/sequencify/-/sequencify-0.0.7.tgz", + "integrity": "sha1-kM/xnQLgcCf9dn9erT57ldHnOAw=", + "dev": true + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", + "dev": true + }, + "http-errors": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", + "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "dev": true, + "requires": { + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": ">= 1.3.1 < 2" + } + } + } + }, + "serve-static": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha1-CV6Ecv1bRiN9tQzkhqQ/S4bGzsE=", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.2", + "send": "0.16.2" + }, + "dependencies": { + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "http-errors": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", + "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "dev": true, + "requires": { + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": ">= 1.3.1 < 2" + }, + "dependencies": { + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", + "dev": true + } + } + }, + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha1-Eh+evEnjdm8xGnbh+hyAA8SwOqY=", + "dev": true + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", + "dev": true + }, + "send": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", + "integrity": "sha1-bsyh4PjBVtFBWXVZhI32RzCmu8E=", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "~2.3.0", + "range-parser": "~1.2.0", + "statuses": "~1.4.0" + } + }, + "statuses": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha1-u3PURtonlhBu/MG2AaJT1sRr0Ic=", + "dev": true + } + } + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "dev": true + }, + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha1-ca5KiPD+77v1LR6mBPP7MV67YnQ=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setprototypeof": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", + "dev": true + }, + "sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha1-ZJIufFZbDhQgS6GqfWlkJ40lGC0=", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0=", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha1-bBdfhv8UvbByRWPo88GwIaKGhTs=", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha1-+VZHlIbyrNeXAGk/b3uAXkWrVuI=", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "sntp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "dev": true, + "optional": true, + "requires": { + "hoek": "2.x.x" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.1.tgz", + "integrity": "sha1-etD1k/IoFZjoVN+A8ZquS5LXoRo=", + "dev": true, + "requires": { + "atob": "^2.0.0", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "sparkles": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.0.tgz", + "integrity": "sha1-Gsu/tZJDbRC76PeFt8xvgoFQEsM=", + "dev": true + }, + "spdx-correct": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", + "integrity": "sha1-BaW01xU6GVvJLDxCW2nzsqlSTII=", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", + "integrity": "sha1-LHrmEFbHFKW5ubKyr30xHvXHj+k=", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha1-meEZt6XaAOBUkcn6M4t5BII7QdA=", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", + "integrity": "sha1-enzShHDMbToc/m1miG9rxDDTrIc=", + "dev": true + }, + "split": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", + "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", + "dev": true, + "requires": { + "through": "2" + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha1-fLCd2jqGWFcFxks5pkZgOGguj+I=", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sshpk": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.1.tgz", + "integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=", + "dev": true, + "optional": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "tweetnacl": "~0.14.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true, + "optional": true + } + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0=", + "dev": true + } + } + }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", + "dev": true + }, + "stream-array": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/stream-array/-/stream-array-0.1.3.tgz", + "integrity": "sha1-bjdOicmqoapImVHAcBHyRWEfyYs=", + "dev": true, + "requires": { + "fastqueue": "~0.1.0", + "readable-stream": "~1.1.0" + } + }, + "stream-combiner": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", + "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", + "dev": true, + "requires": { + "duplexer": "~0.1.1" + } + }, + "stream-consume": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.1.tgz", + "integrity": "sha1-0721mMK9CugrjKx6xQsRB6eZbEg=", + "dev": true + }, + "stream-exhaust": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", + "integrity": "sha1-rNrI2lnvK8HheiwMz2wyDRIOVV0=", + "dev": true + }, + "stream-to-array": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/stream-to-array/-/stream-to-array-2.3.0.tgz", + "integrity": "sha1-u/azn19D7DC8cbq8s3VXrOzzQ1M=", + "dev": true, + "requires": { + "any-promise": "^1.1.0" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "stringify-object": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.2.2.tgz", + "integrity": "sha1-mFMFLlqI+2BaRM0nRFqiV61/+80=", + "dev": true, + "requires": { + "get-own-enumerable-property-symbols": "^2.0.1", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + } + }, + "stringstream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "dev": true, + "optional": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-1.0.0.tgz", + "integrity": "sha1-hbiGLzhEtabV7IRnqTWYFzo295Q=", + "dev": true, + "requires": { + "first-chunk-stream": "^1.0.0", + "is-utf8": "^0.2.0" + } + }, + "strip-bom-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-2.0.0.tgz", + "integrity": "sha1-+H217yYT9paKpUWr/h7HKLaoKco=", + "dev": true, + "requires": { + "first-chunk-stream": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "dependencies": { + "first-chunk-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz", + "integrity": "sha1-G97NuOCDwGZLkZRVgVd6Q6nzHXA=", + "dev": true, + "requires": { + "readable-stream": "^2.0.2" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha1-tPhQA6k4y7bsvOKhJPsQEr0ag40=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.0.3", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + } + } + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "^4.0.1" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "requires": { + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha1-tPhQA6k4y7bsvOKhJPsQEr0ag40=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.0.3", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "tildify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz", + "integrity": "sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo=", + "dev": true, + "requires": { + "os-homedir": "^1.0.0" + } + }, + "time-stamp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", + "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", + "dev": true + }, + "tiny-lr": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-0.2.1.tgz", + "integrity": "sha1-s/26gC5dVqM8L28QeUsy5Hescp0=", + "dev": true, + "requires": { + "body-parser": "~1.14.0", + "debug": "~2.2.0", + "faye-websocket": "~0.10.0", + "livereload-js": "^2.2.0", + "parseurl": "~1.3.0", + "qs": "~5.1.0" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true, + "requires": { + "ms": "0.7.1" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true + } + } + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha1-E8/dmzNlUvMLUfM6iuG0Knp1mc4=", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "tough-cookie": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", + "integrity": "sha1-7GDO44rGdQY//JelwYlwV47oNlU=", + "dev": true, + "optional": true, + "requires": { + "punycode": "^1.4.1" + } + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true, + "optional": true + }, + "type-is": { + "version": "1.6.16", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", + "integrity": "sha1-+JzjQVQcZysl7nrjxz3uOyvlAZQ=", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.18" + } + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "dev": true, + "requires": { + "source-map": "~0.5.1", + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.10.0" + } + }, + "uglify-save-license": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/uglify-save-license/-/uglify-save-license-0.4.1.tgz", + "integrity": "sha1-lXJsF8xv0XHDYX479NjYKqjEzOE=", + "dev": true + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "dev": true, + "optional": true + }, + "unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", + "dev": true + }, + "union-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^0.4.3" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.1", + "to-object-path": "^0.3.0" + } + } + } + }, + "unique-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-1.0.0.tgz", + "integrity": "sha1-1ZpKdUJ0R9mqbJHnAmP40mpLEEs=", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + } + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "use": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", + "integrity": "sha1-FHFr8D/f79AwQK71jYtLhfOnxUQ=", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "user-home": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", + "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "uuid": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", + "integrity": "sha1-EsUou51Y0LkmXZovbw/ovhf/HxQ=", + "dev": true, + "optional": true + }, + "v8flags": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", + "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", + "dev": true, + "requires": { + "user-home": "^1.1.1" + } + }, + "validate-npm-package-license": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", + "integrity": "sha1-gWQ7y+8b3+zUYjeT3EZIlIupgzg=", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "optional": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true, + "optional": true + } + } + }, + "vinyl": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", + "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=", + "dev": true, + "requires": { + "clone": "^1.0.0", + "clone-stats": "^0.0.1", + "replace-ext": "0.0.1" + } + }, + "vinyl-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/vinyl-file/-/vinyl-file-2.0.0.tgz", + "integrity": "sha1-p+v1/779obfRjRQPyweyI++2dRo=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.3.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0", + "strip-bom-stream": "^2.0.0", + "vinyl": "^1.1.0" + }, + "dependencies": { + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + }, + "vinyl": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", + "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", + "dev": true, + "requires": { + "clone": "^1.0.0", + "clone-stats": "^0.0.1", + "replace-ext": "0.0.1" + } + } + } + }, + "vinyl-fs": { + "version": "0.3.14", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-0.3.14.tgz", + "integrity": "sha1-mmhRzhysHBzqX+hsCTHWIMLPqeY=", + "dev": true, + "requires": { + "defaults": "^1.0.0", + "glob-stream": "^3.1.5", + "glob-watcher": "^0.0.6", + "graceful-fs": "^3.0.0", + "mkdirp": "^0.5.0", + "strip-bom": "^1.0.0", + "through2": "^0.6.1", + "vinyl": "^0.4.0" + }, + "dependencies": { + "clone": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", + "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "requires": { + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + } + }, + "vinyl": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", + "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", + "dev": true, + "requires": { + "clone": "^0.2.0", + "clone-stats": "^0.0.1" + } + } + } + }, + "vinyl-sourcemaps-apply": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz", + "integrity": "sha1-q2VJ1h0XLCsbh75cUI0jnI74dwU=", + "dev": true, + "requires": { + "source-map": "^0.5.1" + } + }, + "websocket-driver": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", + "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", + "dev": true, + "requires": { + "http-parser-js": ">=0.4.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", + "integrity": "sha1-XS/yKXcAPsaHpLhwc9+7rBRszyk=", + "dev": true + }, + "when": { + "version": "3.7.8", + "resolved": "https://registry.npmjs.org/when/-/when-3.7.8.tgz", + "integrity": "sha1-xxMLan6gRpPoQs3J56Hyqjmjn4I=", + "dev": true + }, + "which": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha1-/wS9/AEO5UfXgL7DjhrBwnd9JTo=", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true + }, + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + }, + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "requires": { + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", + "window-size": "0.1.0" + }, + "dependencies": { + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true + } + } + } + } +} diff --git a/src/package.json b/src/package.json new file mode 100644 index 0000000..ddcb6b5 --- /dev/null +++ b/src/package.json @@ -0,0 +1,36 @@ +{ + "name": "iem", + "version": "1.0.0", + "description": "### UI MOCKUP", + "main": "index.js", + "scripts": { + "start": "gulp run:dev" + }, + "repository": { + "type": "git" + }, + "author": "", + "license": "ISC", + "devDependencies": { + "gulp": "^3.9.1", + "gulp-clean": "^0.3.2", + "gulp-concat": "^2.6.1", + "gulp-connect": "^5.0.0", + "gulp-debug": "^3.0.0", + "gulp-inject": "^4.2.0", + "gulp-less": "^3.3.0", + "gulp-load-plugins": "^1.4.0", + "gulp-minify": "0.0.14", + "gulp-rename": "^1.2.2", + "gulp-rimraf": "^0.2.1", + "gulp-uglify": "^2.0.0", + "gulp-watch": "^4.3.11", + "gulp-watch-less": "^1.0.1", + "http-proxy-middleware": "^0.17.3", + "lodash": "^4.17.4", + "run-sequence": "^1.2.2" + }, + "dependencies": { + "natives": "^1.1.6" + } +} diff --git a/src/sonar-project.properties b/src/sonar-project.properties new file mode 100644 index 0000000..d12d6fb --- /dev/null +++ b/src/sonar-project.properties @@ -0,0 +1,17 @@ + +# must be unique in a given SonarQube instance +sonar.projectKey=my:travel-html +# this is the name displayed in the SonarQube UI +sonar.projectName=travel-html +sonar.projectVersion=1.0 + +# Path is relative to the sonar-project.properties file. Replace "/" by "/" on Windows. +# Since SonarQube 4.2, this property is optional if sonar.modules is set. +# If not set, SonarQube starts looking for source code from the directory containing +# the sonar-project.properties file. +sonar.sources=F:/JSChangHong/item-iem + +sonar.language=html + +# Encoding of the source code. Default is default system encoding +sonar.sourceEncoding=UTF-8 \ No newline at end of file diff --git a/src/static/.DS_Store b/src/static/.DS_Store new file mode 100644 index 0000000..1df428d --- /dev/null +++ b/src/static/.DS_Store Binary files differ diff --git a/src/static/css/app.less b/src/static/css/app.less new file mode 100644 index 0000000..2f71835 --- /dev/null +++ b/src/static/css/app.less @@ -0,0 +1,17 @@ +@import "./base"; +@import "./index"; +@import "./jquery-ui"; +@import "./lesshat"; +@import "./frm_elem_editor"; +@import "./cfg_center"; +@import "./form"; +@import "./travel_expense"; +@import "./system_config"; +@import "./templates_center"; +@import "./forms_center"; +@import "./saved_form"; +@import "./todos"; +@import "./city"; +@import "./registry"; +@import "./workflow"; +@import "./flowstatus"; diff --git a/src/static/css/base.less b/src/static/css/base.less new file mode 100644 index 0000000..ff8b87f --- /dev/null +++ b/src/static/css/base.less @@ -0,0 +1,6 @@ +@import "./lesshat"; +@default-color:#09b4ab; +@font-color: #09B4AB; +@label-color:#666666; +@hover-color: darken(@default-color, 5%); +@raidus-length: 8px; \ No newline at end of file diff --git a/src/static/css/base_red.less b/src/static/css/base_red.less new file mode 100644 index 0000000..c3ca8a5 --- /dev/null +++ b/src/static/css/base_red.less @@ -0,0 +1,6 @@ +@import "./lesshat"; +@default-color:#e74c3c; +@font-color: #09B4AB; +@label-color:#666666; +@hover-color: darken(@default-color, 5%); +@raidus-length: 8px; \ No newline at end of file diff --git a/src/static/css/cfg_center.less b/src/static/css/cfg_center.less new file mode 100644 index 0000000..d978cad --- /dev/null +++ b/src/static/css/cfg_center.less @@ -0,0 +1,34 @@ +@import "./base.less"; +ul.cfg_items { + margin-top:35px; + text-align: center !important; + >li{ + width: 240px !important; + height: 207px !important; + float: none !important; + display: inline-block !important; + > div { + width:100%; + height:100% !important; + text-align: center !important; + vertical-align: middle !important; + overflow:hidden; + position:relative; + label { + font-size:16px; + position: relative; + top:60px; + padding:0px 18px; + transition: opacity 1s ease-out; + cursor: pointer; + } + > img { + transition: opacity 1s ease-out; + margin: auto !important; + display:block; + width: 146px !important; + height: 193px !important; + } + } + } +} diff --git a/src/static/css/city.less b/src/static/css/city.less new file mode 100644 index 0000000..80876b8 --- /dev/null +++ b/src/static/css/city.less @@ -0,0 +1,165 @@ +// Color variables (appears count calculates by raw css) +@color10: #dddddd; // Appears 7 times +@color11: #ffffff; // Appears 2 times + +// Width variables (appears count calculates by raw css) +@width11: 150px; // Appears 3 times +@width12: 170px; // Appears 2 times + +// Height variables (appears count calculates by raw css) +@height10: 500px; // Appears 2 times +@height11: 30px; // Appears 2 times +@height12: 20px; // Appears 3 times +@height13: 50px; // Appears 2 times + +.leftsection { + display: inline-block; + height:@height10; + overflow:auto!important; + text-align: center; + vertical-align: top; + overflow: hidden; + width:@width11; + li { + border-bottom:1px solid @color10; + height: @height13; + line-height: @height13; + list-style: none; + padding-left: 5px; + } +} +.classcity { + border-bottom:1px solid @color10; + padding-left:10px; + + a { + border-bottom: none; + border:1px solid @color10; + color:#333333; + display: inline-block; + height: @height13; + line-height: @height13; + text-align: center; + text-decoration: none; + width:100px; + &:active { + border-bottom: none; + border:1px solid rgba(137, 228, 210, 1); + } + } +} +#citycontent { + border: 1px solid @color10; + height: auto; + margin:0 auto; + width:688px; +} + +#searchdiv { + display: inline-block; + height: @height12; + margin-right: 100px; + position:relative; + width: @width12; + + .search { + color: #999999; + font-size: 16px; + position: absolute; + right:-160px; + top:17px; + } + + #search { + border-radius:20px; + border:1px solid @color10; + height:@height12; + outline: none; + padding-left:10px; + width:@width12*2; +} +} + + +.hot { + color:rgba(137, 228, 210, 1); +} +.rightsection { + display: inline-block; + height:@height10; + margin-left: 10px; + overflow: auto; + width:500px; +} +.selectedcity { + border-bottom: 1px solid @color10; + line-height: @height13; + margin-bottom: 10px; + p { + display: inline-block; + font-size: 16px; + margin-right: 40px; + text-align: center; + width:@width11; + } +} +.topsection { + border-bottom: 1px solid @color10; + line-height: @height13; + + p { + display: inline-block; + font-size: 16px; + margin-right: 40px; + text-align: center; + width:@width11; + } + + img{ + width:15px; + height:15px; + margin-left: 10px; + opacity: 0.3; + } +} +.selectedcity>span { + background:rgba(137, 228, 210, 1); + color:@color11; + display: inline-block; + height:@height11; + line-height: @height11; + margin-left: 20px; + padding-left: 20px; + padding-right: 20px; + text-align: center; +} +.deletecity { + display: inline-block; + margin-left: 5px; +} +.button { + background:rgba(137, 228, 210, 1); + border-radius:10px; + border:none; + color: @color11; + height:@height11; + line-height: @height11; + width:80px; + margin-left: 85px; +} +.citycontent { + display: inline-block; + width: 50%; + input[type='checkbox'] { + height:@height12; + margin-top:10px; + vertical-align: middle; + width:20px; + } + span { + vertical-align: middle; + } + label { + vertical-align: middle; + } +} \ No newline at end of file diff --git a/src/static/css/flowstatus.less b/src/static/css/flowstatus.less new file mode 100644 index 0000000..d91aea0 --- /dev/null +++ b/src/static/css/flowstatus.less @@ -0,0 +1,40 @@ +@fswidth:20px; + +*{ + margin:0; + padding:0; +} +.flowstatus li{ + list-style: none; + padding-top:30px; + color: #999; + font-size: 12px; + + div{ + float: left; + width:200px; + height:80px; + text-align: left; + padding-bottom:-5px; + padding-left: 20px; + + span{ + padding:2px; + padding-left: 5px; + padding-right: 5px; + font-size: 10px; + color:#fff; + } + + img{ + width:10px; + height:10px; + position: absolute; + right:-5px; + top:-1px; + } + } + +} + + diff --git a/src/static/css/form.less b/src/static/css/form.less new file mode 100644 index 0000000..a5ea9d2 --- /dev/null +++ b/src/static/css/form.less @@ -0,0 +1,170 @@ +@import "./base.less"; +.datetimepicker.dropdown-menu{ + margin-left: 0px !important; + } +div.form_container { + padding-top:41px; + //overflow:auto; + //overflow: hidden; + height:auto; + margin:0px; + + + div.container{ + margin: 0; + padding: 0; + position: relative; + + .input-group-addon{ + width: 8px !important; + padding: 5px 5px; + background:#fff; + border:1px solid #ddd; + } + + } + + + div.container.timeinfo label{ + position: absolute; + top: 10px !important; + left: 0px; + } + + + > div { + height: 100%; +// width:300px; + margin:0px; + div.title { + border-bottom:1px solid #ddd; + margin-top:-42px; + height:42px; + text-align:left; + padding:0px 4px; + width:700px; + + h8{ + line-height:41px; + text-align:left; + margin-left:5px; + } + .text_label { + font-weight: 400; + font-size:12px; + } + } + + div.row { + margin:0px; + .col-lg-1, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-md-1, .col-md-10, .col-md-11, .col-md-12, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-sm-1, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-xs-1, .col-xs-10, .col-xs-11, .col-xs-12, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9{ + min-height: 0; + } + + + div.text,div.select, div.radio { + position:relative; + display:block; + .is_red{ + color: red; + } + >span { + margin-top:32px; + left:0px; + display:block; + text-align: left; + min-height: 20px; + } + + label{ + position:absolute; + top: -24px; + left:0px; + padding:0px !important; + overflow: hidden; + height: 20px; + } + + + } + + div.textarea { + padding: 0; + position: relative; + top:0; + left: 0; + display:block; + + > span { + margin-top:32px; + left:0px; + display:block; + text-align: left; + } + + textarea { + min-height:125px !important; + min-width:215px !important; +// width:565px; + max-width: 100%; + margin-bottom: 25px; + border: 1px solid #dfdfdf; + } + + label{ + position:absolute; + top:10px; + left:0px; + padding:0px !important; + } + } + + + div.radio { + > div { + position:relative; + height:auto; + > label { + position:absolute; + top:-35px; + left:0px; + } + margin-top:36px; + > div { + display:block; + overflow:auto; + min-height:32px; + width:100%; + position:relative; + label { + display:block; + margin-left:36px; + } + input { + position:absolute; + left:1px; + float:left; + margin:0px; + } + } + + } + } + + div.sub_form { + float:left; + overflow: visible; + div.sub_form_container { + float:left; + } + margin:15px 0px 0px 0px; + > div { + min-height:125px; + + } + } + + + } + } +} \ No newline at end of file diff --git a/src/static/css/forms_center.less b/src/static/css/forms_center.less new file mode 100644 index 0000000..4274d30 --- /dev/null +++ b/src/static/css/forms_center.less @@ -0,0 +1,55 @@ +@import "./base.less"; +.ul-tree { + li.search { + padding:6px 12px !important; + vertical-align: middle; + text-align: center; + position:relative; + input { + display:block; + margin:0px auto; + width:100%; + .border-radius(12px); + .box-shadow(0 2px 2px #d8f5f5); + border: 1px solid #ddd; + outline: none !important; + background: #f3f3f3; + padding:0px 12px; + } + + span.query_icon { + position:absolute; + right:20px !important; + top:9px; + color: #a7a7a7; + + } + } + + li.forms_list { + display:block; + overflow:auto; + height:auto !important; + border: none; + ul { + margin-left:-45px; + li { + margin-top:8px; + margin-bottom:0px; + border-top:1px solid #ddd !important; + border-bottom:0px !important; + font-size:12px; + padding-left:65px; + img { + height: 25px; + width: 25px; + position: absolute; + float: left; + left: 32px; + top: 6px; + } + } + } + } + +} \ No newline at end of file diff --git a/src/static/css/frm_elem_editor.less b/src/static/css/frm_elem_editor.less new file mode 100644 index 0000000..e05c02e --- /dev/null +++ b/src/static/css/frm_elem_editor.less @@ -0,0 +1,173 @@ +@import "./base.less"; +.frm_el_attr_editor { + text-align: left; + padding: 5px 10px; + .length_err{ + color: red; + } + .btn-el-attr-bind { + margin:2px 0px; + min-width: 285px !important; + width: 285px; + } + textarea { + min-height:85px !important; + + } + hr { + margin:10px !important; + margin-left:0px !important; + } + + > div > div { + div.el_container { + position:relative; + text-align:left; + overflow:hidden; + display:block; + label.label { + display:block !important; + position:absolute; + color: #444444 !important; + font-size:12px !important; + text-align:left; + top: 9px; + left: 12px; + } + span.element { + display:block; + overflow: hidden; + input { + float:left; + text-align: left; + display:block; + width:auto !important; + } + } + div.third_column { + margin:0px; + padding:0px; + width:33%; + float:left; + position: relative; + >label { + + } + + >span { + width:100%; + input, select { + min-width: 0px !important; + width:80%; + } + } + + } + + div.third_column_full{ + >span { + width:100%; + input, select { + min-width: 0px !important; + width:100%; + } + } + } + + div.one_column { + width: 10% !important; + } + div.two_column { + width: 20% !important; + min-height:25px; + overflow:hidden; + div.frm_item_icons { + display:block; + bottom:0px; + left:2px; + } + } + div.five_column { + width: 50% !important; + > span { + input { + width: 60%; + } + } + } + } + > label{ + margin: 12px 0px 0px 0px; + } + } +} + +.manadatory_ifd { + color: red; +} +.process_ifd { + color: red; +} + + +table.table_cloud_attr{ + height:100%; + margin-bottom:29px; + top:0px !important; + .table_search_input{ + width:200px; + margin-right: 20px; + } + .table_search_btn{ +// background-color: #d0d1d1; + height: 26px; + border-radius: 8px; + text-align: center; + line-height: 13px; + width: 57px; + } + th, td{ + font-size:12px !important; + input { + margin:0px; + height:12px !important; + } + } +} + +div.cloud_attr { + font-size:10px !important; + position: relative; + div.cv_title { + overflow:hidden; + text-align: center; + font-size: 14px; + padding:4px 0px 0px 0px; + } + div.table-content { + margin-bottom:28px; + max-height:500px; + overflow: auto; + min-height: 376px; + } + div.condition_search_footer{ + position: absolute; + bottom:0px; + select, input{ + line-height:20px; + min-height:20px !important; + } + a{ + text-decoration: none; + } + width:100%; + padding:0px 2px; + label.second{ + float:right; + input{ + width: 25px; + height: 20px; + } + } + } +} \ No newline at end of file diff --git a/src/static/css/index.less b/src/static/css/index.less new file mode 100644 index 0000000..7abc1e2 --- /dev/null +++ b/src/static/css/index.less @@ -0,0 +1,1168 @@ +@import "./base.less"; + +body { + min-width:1024px !important; + min-height:680px; + overflow:auto; +} + +.body_transparent{ + display:none; + .opacity(.0); +} + +.body_show{ +// display: block; + .opacity(1); +} + + +.container.form{ + margin:0px; + width: 100%; + padding: 15px 25px; +} + + +.navbar { + background-color: @default-color; + margin-bottom:0px; +} + +.navbar-header { + margin-right:25px !important; + a.navbar-brand { + font-size:1.4em; + } +} + +.nav .open>a, .nav .open>a:focus, .nav .open>a:hover{ + background-color:@default-color !important; +} +.exitloginbtn{ + color: #fff !important; + background: #09B4AB !important; + line-height: 23px; + padding: 0px 3px; + font-size: 12px; + border: none; + border-radius: 5px; +} +.exitloginbtn:hover{ + background: #089c94 !important; +} +img.hero { + display:block; + height:70px; + float:left; + margin: -12px 12px -15px 12px; + position:relative; +} + +.navbar a{ + color:#fff; + font-size:1.2em; +} + +.nav>li > a { + &:focus, &:hover, &:after { + background:@hover-color !important; + } +} + +ul.dropdown-menu { + .divider { + margin:0px; + } +} + +div.outer { + padding-top:50px; + header{ + margin-top:-50px; + } +} + +button.btn-favourite,a.btn-favourite { + color: @font-color; + background: #fff; + &:hover, &:active, &:hover, &:focus { + color: #fff; + background: @font-color; + } +} + +div.steps { + margin-top:75px; +} + +h1 { + color: @font-color; + font-size:28px; + font-weight: 400; +} +h6 { + &:extend(div.desc); + font-size:16px; + color: @label-color; +} + +.text_label{ + &:extend(h6); + font-size: .9em; + color: #A1A1A1; +} + +div.welcome_guide { + position:fixed; + top:0px; + left:0px; + width:100%; + height:100%; + z-index:10000000; + background:#fff; + text-align:center; + div.desc { + margin-top:28px; + overflow: hidden; + margin-bottom: -1px; + } + + .hero_content { + display: block; + overflow:hidden; + img { + margin:-35px auto 25px auto; + display:block; + + } + } +} + +div.content { + text-align: center; +} + +ul.business_items, ul.wizard_content { + padding:0px 185px; +} + +ul.wizard_content { + padding: 55px 55px; + overflow:hidden; + img { + width: auto; + height: 120px; + } +} + +ul.business_items { + position: relative; + display:block; + width:100%; + overflow:hidden; + + label.bottom_label { + position: relative; + display: block; + width:100%; + bottom:32px; + text-align: center; + background-color: #fff; + color: @label-color; + } + li { + display: block; + float:left; + width:25%; + padding:0px; + margin:0px; + height:160px; + padding: 5px 35px; + a { + text-decoration: none !important; + } + > img{ + margin-top:12px; + width:60px !important; + height:auto; + } + div { + cursor:pointer; + height:140px; + img { + width:80px; + height:auto; + display:block; + margin:20px 0px 0px 18px; + } + &:hover { + border:1px solid @default-color; + .border-radius(12); + } + label, ul{ + display:none; + } + label { + color:@font-color; + } + + span { + font-size:10px; + } + + }; + div.hover_active{ + img, span { + display:none; + } + + + + label, ul{ + display:block; + overflow:auto; + padding-left:0px !important; + li { + display: block; + float:left; + width:100%; + text-align: left !important; + padding-left:5px; + z-index:-1; + } + } + }; + } +} + + ul.business_items.forms_center { + margin-top:85px; + } + +input { + min-height:20px !important; + width:285px; + border: 1px solid #dfdfdf; + text-align: left; + height: 28px; +} + +input[type='radio'],input[type='checkbox']{ + width:15px; + height:15px; +} + +.form_el_row, .frm_el_attr_editor { + input[type="text"], select{ + min-width:150px ; + min-height:26px ; + height: 26px; + } + textarea { + min-width: 285px ; + min-height:26px ; + height: 126px; + } +} + + + + + + +div.split_form { + + div.main, div.left, div.right { + //border: 1px solid #ddd; + height:100%; + hr { + margin:0px 0px 12px 0px; + } + //注释掉,子元素可以超出父级范围定位 + //overflow:auto; + } + .main { + width: 100%; + float:left; + padding-left:350px; + padding-right:350px; + .el_form { + //min-height:100%; + height:100%; + overflow:auto; + min-height: 680px; + border-left: 1px solid #ddd; + border-right: 1px solid #ddd; + } + .row{ + //border: 1px solid #ddd; + border-bottom: 0; + border-top: navajowhite; + margin: 0; + .bill_name{ + font-size: 16px; + color: #666666; + } + } + .btn-zone{ +// border-bottom: 1px solid #ddd; + } + } + + .left { + //min-height: 680px; + width: 350px; + float:left; + margin-left: -100%; + position: relative; + } + + .right { + min-height: 680px; + float:left; + width: 350px; + margin-left:-350px; + z-index: 0; + } +} + +div.form_el_row { + display: block; + float:left; + width:100%; + text-align: left; + padding: 4px; + cursor:pointer; + position:relative; + &:hover { + padding: 4px; + background: #DEF1FF; + > div.frm_item_icons{ + display:block!important; + } + } + > div { + padding:5px; + + } + + .dateclass{ + width:200px; + position:relative; + + input{ + background:#fff!important; + } + + img.ifd_time_picker { + width:22px; + height:22px; + position: absolute; + right:-80px; + top:2px; + border-left:1px solid #ccc; + padding-left:2px; + } + + } + + + + select.addr_select { + width:100px; + min-width:100px !important; + color: #999999; + } + + select.addr_select:nth-child(1) { + width:189px !important; + } + + div.addr_txt { + border: 1px solid #ddd; + min-height:85px; + min-width:150px; + margin-top:12px; + } +} + +div.form_el_row.active { + background: #ecf0f1; +} + +.btn.active.focus, .btn.active:focus, +.btn.focus, .btn:active.focus, +.btn:active:focus, .btn:focus { + outline: none; +} + +button.btn-elb { + &:extend(button.btn-favourite); + margin: 6px 6px; + border:1px dashed @default-color; + float:left; + width: 160px; + color: @default-color; + outline: none !important; + &:active, &:hover{ + background:@font-color !important; + color: #fff !important; + box-shadow: none !important; + outline: none; + } + &:focus, &:visited { + background:#fff !important; + color: @default-color !important; + box-shadow: none !important; + outline: none; + } +} + +.place_holder_after { + border: 1px dashed @default-color; + padding-bottom: 25px !important; + &:after { + content: ""; + display: block; + height: 1px; + width: 100%; + margin: 10px 0px; + border: 1px dashed @default-color; + border-top:none; + } +} + + + +.ul-tree { + text-align: none; + list-style: none; + display: block; + margin:0px; + padding: 0px; + li { + min-height: 41px; + width:100%; + border-bottom:1px solid #cccccc !important; + display:block; + padding:12px 0px 0px 0px; + padding-left:45px; + text-align: left; + position:relative; + a { + color: #333333; + } + + a.active { + color: @font-color; + } + + } + + ul { + list-style: none; + margin:0px; + padding:0px; + } + + img, img.small { + height: 25px; + width: 25px; + position:absolute; + float:left; + left:12px; + top: 6px; + + } + + img.small { + height: 32px !important; + width: 32px !important; + left: 8px; + } +} + +.sub_form { + border: 1px solid #ddd; + min-height:108px; + height:auto; + overflow:auto; + padding:15px; + margin: 22px 15px; +} + +.frm_item_icons { + position:absolute; + right:0px; + bottom:-3px; + display:none; + &:hover { + border: none !important; + } + .frm_item_icon { + float:left; + padding: 0px 2px; + margin:2px; + color: #fff; + + } + +// .remove { +// background: #e74c3c; +// } +// +// .duplicate { +// background: #2ecc71; +// } + +} + +div.bread_crumb { + border: 1px solid rgba(204, 204, 204, 1); + background: rgba(255, 255, 255, 1); + height: 42px; + font-size: 24px; + padding: 0px 16px; + margin-bottom: 25px; + label { + font-size: 16px; + } +} + +.btn-action { + height:25px; +// width:50px; + padding:10px; + line-height:23px; + padding:0px 8px; + font-size:12px; + color: #fff !important ; + background: @font-color !important; + &:hover, &:active, &:hover, &:focus { + color: @font-color !important; + background:#fff !important; + } +} + +.dropdown-menu { + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + border-radius: 0px; + padding:0px; + margin-left:-38px; + li { + font-size: 12px; + a { + text-align: center; + &:hover { + background:rgba(9, 180, 171, 1) !important; + color:#fff; + } + } + } +} + +div.multi_level_select { + border: 8px solid #d7eaf3; + margin:0px 35px; + div { + text-align: center; + border: 1px dashed #dde3e6; + padding:25px; + width:100%; + height:100%; + } +} + +div.custom_validate { + margin:0px; + .relate_select{ + width: 100%; + height: 25px; + } + .relate_title{ + height: 25px; + span{ + text-align: center; + } + + } + .cv_title { + height:35px; + background: @default-color; + line-height:35px; + text-align: center; + color: #fff; + } + .cv_fields, .cv_label, .cv_msg_field, .cv_btns { + margin: 15px 10px; + overflow:auto; + div { + padding-right:0px; + margin:5px 0px; + select, input { + width:100%; + height:26px; + } + } + + .field_name { + background:@default-color; + text-align: center; + .border-radius(15px); + margin:0px; + color: #fff; + } + } + + .cv_msg_field { + overflow: hidden; + input { + width:100%; + } + } + + .cv_btns { + div { + float:right; + margin-left: 15px; + } + } +} +div.custom_validate_formula { + margin:0px; + height: 100%; +// display: flex; +// justify-content: space-between; + .formula_btn{ + width: 100%; + height: 15%; + display: flex; + justify-content: space-around; + align-items: center; + button{ + width: 5%; + height: 50%; + } + } + .formula_right{ + height: 75%; + overflow: auto; + .sys_formula_choose{ + + display: flex; + justify-content:space-around; + margin:0; + margin-top: 3px; + .sys_formula_choose_active{ + border-bottom: 2px solid @font-color; + } + } + .sys_formula_choose > span{ + display: inline-block; +// padding: 2px 2px; + height: 25px; + line-height: 25px; + width: 48%; + text-align: center; + border: 1px solid @font-color; + border-radius: 3px; + cursor: pointer; + } + p{ + height: 10%; + } + ul{ + width: 100%; + } + .btn{ + display: flex; + align-items: center; + justify-content: center; + } + li{ + list-style-type: none; + margin: 5px 0; + height: 20px; + color: @default-color; + text-align: center; + background-color: white; + border-radius: 5px; + border: 1px dashed @default-color; + } + } + .formula_left{ + height: 75%; + overflow: auto; + p{ + height: 10%; + } + ul{ + width: 100%; + } + li{ + width: 100%; + list-style-type: none; + margin: 5px 0; + height: 20px; + display: flex; + justify-content: flex-start; + .btn{ + display: flex; + align-items: center; + justify-content: center; + } + .choose_item{ + width: 35%; + height: 100%; + color: @default-color; + text-align: center; + background-color: white; + border-radius: 5px; + margin-right: 2.5%; + border: 1px dashed @default-color; + } + .choose_edl{ + width: 30%; + height: 100%; + text-align: center; + border-radius: 5px; + margin-right: 2.5%; + color: @default-color; + border: 1px dashed @default-color; + background-color: white; + } + .edl{ + width: 25%; + margin-left: 2.5%; + height: 100%; + color: @default-color; + text-align: center; + background-color: white; + border-radius: 5px; + border: 1px dashed @default-color; + } + .fromula_edl{ + width: 30%; +// height: 100%; + position: absolute; + border: 1px solid #ddd; + border-radius: 6px; + background-color: white; + z-index: 200; + li{ + width: 100%; + margin: 0; + justify-content: center; + border-bottom: 1px solid #ddd; + overflow: hidden; + text-overflow: ellipsis; + } + li:hover{ + background-color: #f5f5f5; + } + } + } + } + .formula_right{ + height: 75%; + } + .cv_title_formula { + height: 10%; + background: #09b4ab; + display: flex; + align-items: center; + justify-content: center; + text-align: center; + color: #fff; + font-size: 20px; + .close{ + position: absolute; + right: 0; + top: 0; + line-height: 1; + color: #000; + text-shadow: 0 1px 0 #fff; + filter: alpha(opacity=20); + opacity: .2; + } + } + .cv_fields_formula{ + overflow:auto; + height: 75%; + div { + select, input { + width:100%; + height:26px; + } + } + .field_name_father{ + height: 10%; + display: flex; + justify-content: space-between; + align-items: center; + .formula_type{ + display: flex; + justify-content: space-between; + align-items: center; + width: 40%; + select{ + width: 60%; + } + } + .field_name { + min-width: 20%; + height: 80%; + background:white; + display: flex; + border: 1px dashed @default-color; + justify-content: center; + align-items: center; + .border-radius(15px); + margin:0px; + color: @default-color; + } + } + + + textarea{ + width: 100%; + height: 88%; + } + } +} +div.custom_validate_relate_formula { + margin:0px; + height: 100%; +// display: flex; +// justify-content: space-between; + .formula_btn{ + width: 100%; + height: 15%; + display: flex; + justify-content: space-around; + align-items: center; + button{ + width: 5%; + height: 50%; + } + } + .formula_right{ + height: 75%; + overflow: auto; + p{ + height: 10%; + } + ul{ + width: 100%; + } + .btn{ + display: flex; + align-items: center; + justify-content: center; + } + li{ + list-style-type: none; + margin: 5px 0; + height: 20px; + color: @default-color; + text-align: center; + background-color: white; + border-radius: 5px; + border: 1px dashed @default-color; + } + } + .formula_left{ + height: 75%; + overflow: auto; + p{ + height: 10%; + } + ul{ + width: 100%; + } + li{ + width: 100%; + list-style-type: none; + margin: 5px 0; + height: 20px; + display: flex; + justify-content: center; + .btn{ + display: flex; + align-items: center; + justify-content: center; + } + .choose_item{ + width: 100%; + height: 100%; + color: @default-color; + text-align: center; + background-color: white; + border-radius: 5px; + margin-right: 2.5%; + border: 1px dashed @default-color; + } + } + } + .formula_right{ + height: 75%; + } + .cv_title_relate_formula { + height: 10%; + background: #09b4ab; + display: flex; + align-items: center; + justify-content: center; + text-align: center; + color: #fff; + font-size: 20px; + .close { + position: absolute; + right: 0; + top: 0; + line-height: 1; + color: #000; + text-shadow: 0 1px 0 #fff; + filter: alpha(opacity=20); + opacity: .2; + } + } + .cv_fields_formula { + overflow: auto; + height: 75%; + div { + select, + input { + width: 100%; + height: 26px; + } + } + .hide_content{ + min-height: 30px; + width: 90%; + display: flex; + justify-content: space-around; + margin-top: 10px; + align-items: center; + .hide_item{ + width: 70%; + min-height: 30px; + border: 2px solid #7D93B2; + border-radius: 6px; + ul{ + display: flex; + min-height: 30px; + justify-content: flex-start; + align-items: center; + flex-wrap: wrap; + padding-top: 4px; + margin: 0; + li{ + padding: 0 5px; + height: 17px; + margin-left: 5px; + list-style-type: none; + text-align: center; + background-color: @font-color; + margin-bottom: 4px; + color: white; + } + } + } + } + .relate_talble{ + span{ + padding: 0 5px; + background-color: @font-color; + color: white; + margin-left: 5px; + } + i{ + float: right; + cursor: pointer; + } + } + .field_name_father { + height: 10%; + display: flex; + justify-content: space-between; + align-items: center; + .formula_type { + display: flex; + justify-content: flex-start; + align-items: center; + width: 40%; + select { + width: 60%; + } + } + .field_name { + min-width: 20%; + height: 80%; + background: white; + display: flex; + border: 1px dashed @default-color; + justify-content: center; + align-items: center; + .border-radius(15px); + margin: 0px; + color: @default-color; + } + } + } +} + +.float_right { + float: right; +} + +.flatpickr-calendar { + z-index: 99999999999; +} + + +//模版中心样式开始 +.templates_list span{ + color: white; + text-align: center; + font-size: 12px; + width: 16px; + height: 16px; + border-radius: 8px; + float: right; + background-color: #00b3ee; + opacity: 0; + cursor: pointer; +} + +.left ul.ul-tree.templates_list li{ + overflow: visible; +} + +.templates_list li .template_list_top:hover span{ + opacity: 1; +} + +.templates_list li span:hover{ + opacity: 0.8; +} + +.templates_list{ + position: relative; + li{ + position: relative; + overflow: visible; + } +} + +.list-operation{ + position: absolute; + left: 156px; + top: 30px; + width: 150px; + text-align: center; + overflow: hidden; + z-index: 99999; + .list-operation-centent{ + position: relative; + z-index:5; + .list-group-item:hover{ + background-color: #E6F6F4; + } + } +} + +.list-change{ + position: absolute; + left: 156px; + top: 30px; + z-index: 20; + .list-change-centent{ + position: relative; + padding: 10px; + background-color: #FFFFFF; + border: 1px solid #ddd; + text-align:left; + div{ + overflow: hidden; + } + input{ + width: 200px; + } + p{ + width: 200px; + text-align: center; + font-size: 24px; + } + img{ + width: 100px; + height: 100px; + padding: 5px; + margin: 5px; + display: block; + position: static; + } + .list-button{ + text-align: center; + button{ + margin-left: 20px; + margin-right: 20px; + } + } + } +} + +.list-triangle-top{ + position: relative; + left: 4px; + top: 0; + z-index: 10; + width: 50px; + height: 10px; + .list-triangle-top-out{ + position: absolute; + left: 0; + top: 1px; + width: 0; + height: 0; + border-left: 10px solid transparent; + border-right: 10px solid transparent; + border-bottom: 10px solid white; + } + .list-triangle-top-in{ + position: absolute; + left: 0; + top: 0; + width: 0; + height: 0; + border-left: 10px solid transparent; + border-right: 10px solid transparent; + border-bottom: 10px solid #ddd; + } +} +.template_list_second:hover span{ + opacity: 1; +} +.ul-tree .list_detail_li img{ + height: 25px; + width: 25px; + position: absolute; + float: left; + left: -8px; + top: 6px; +} +.templates_list .list_detail_ul .list_detail_li{ + padding-left: 20px; +} +.list_detail_ul .list_detail_li .list_detail{ + padding-left: 0; + text-align: left; + padding-top: 20px; +} +.list_detail:hover span{ + opacity: 1; + margin-left: 5px; +} +//模版中心样式结束 \ No newline at end of file diff --git a/src/static/css/jquery-ui.less b/src/static/css/jquery-ui.less new file mode 100644 index 0000000..ffb94cd --- /dev/null +++ b/src/static/css/jquery-ui.less @@ -0,0 +1,1311 @@ +/*! jQuery UI - v1.12.1 - 2016-09-14 +* http://jqueryui.com +* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css +* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&fwDefault=normal&cornerRadius=3px&bgColorHeader=e9e9e9&bgTextureHeader=flat&borderColorHeader=dddddd&fcHeader=333333&iconColorHeader=444444&bgColorContent=ffffff&bgTextureContent=flat&borderColorContent=dddddd&fcContent=333333&iconColorContent=444444&bgColorDefault=f6f6f6&bgTextureDefault=flat&borderColorDefault=c5c5c5&fcDefault=454545&iconColorDefault=777777&bgColorHover=ededed&bgTextureHover=flat&borderColorHover=cccccc&fcHover=2b2b2b&iconColorHover=555555&bgColorActive=007fff&bgTextureActive=flat&borderColorActive=003eff&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=fffa90&bgTextureHighlight=flat&borderColorHighlight=dad55e&fcHighlight=777620&iconColorHighlight=777620&bgColorError=fddfdf&bgTextureError=flat&borderColorError=f1a899&fcError=5f3f3f&iconColorError=cc0000&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=666666&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=5px&offsetTopShadow=0px&offsetLeftShadow=0px&cornerRadiusShadow=8px +* Copyright jQuery Foundation and other contributors; Licensed MIT */ + +/* Layout helpers +----------------------------------*/ +.ui-helper-hidden { + display: none; +} +.ui-helper-hidden-accessible { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; +} +.ui-helper-reset { + margin: 0; + padding: 0; + border: 0; + outline: 0; + line-height: 1.3; + text-decoration: none; + font-size: 100%; + list-style: none; +} +.ui-helper-clearfix:before, +.ui-helper-clearfix:after { + content: ""; + display: table; + border-collapse: collapse; +} +.ui-helper-clearfix:after { + clear: both; +} +.ui-helper-zfix { + width: 100%; + height: 100%; + top: 0; + left: 0; + position: absolute; + opacity: 0; + filter:Alpha(Opacity=0); /* support: IE8 */ +} + +.ui-front { + z-index: 100; +} + + +/* Interaction Cues +----------------------------------*/ +.ui-state-disabled { + cursor: default !important; + pointer-events: none; +} + + +/* Icons +----------------------------------*/ +.ui-icon { + display: inline-block; + vertical-align: middle; + margin-top: -.25em; + position: relative; + text-indent: -99999px; + overflow: hidden; + background-repeat: no-repeat; +} + +.ui-widget-icon-block { + left: 50%; + margin-left: -8px; + display: block; +} + +/* Misc visuals +----------------------------------*/ + +/* Overlays */ +.ui-widget-overlay { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; +} +.ui-accordion .ui-accordion-header { + display: block; + cursor: pointer; + position: relative; + margin: 2px 0 0 0; + padding: .5em .5em .5em .7em; + font-size: 100%; +} +.ui-accordion .ui-accordion-content { + padding: 1em 2.2em; + border-top: 0; + overflow: auto; +} +.ui-autocomplete { + position: absolute; + top: 0; + left: 0; + cursor: default; +} +.ui-menu { + list-style: none; + padding: 0; + margin: 0; + display: block; + outline: 0; +} +.ui-menu .ui-menu { + position: absolute; +} +.ui-menu .ui-menu-item { + margin: 0; + cursor: pointer; + /* support: IE10, see #8844 */ + list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"); +} +.ui-menu .ui-menu-item-wrapper { + position: relative; + padding: 3px 1em 3px .4em; +} +.ui-menu .ui-menu-divider { + margin: 5px 0; + height: 0; + font-size: 0; + line-height: 0; + border-width: 1px 0 0 0; +} +.ui-menu .ui-state-focus, +.ui-menu .ui-state-active { + margin: -1px; +} + +/* icon support */ +.ui-menu-icons { + position: relative; +} +.ui-menu-icons .ui-menu-item-wrapper { + padding-left: 2em; +} + +/* left-aligned */ +.ui-menu .ui-icon { + position: absolute; + top: 0; + bottom: 0; + left: .2em; + margin: auto 0; +} + +/* right-aligned */ +.ui-menu .ui-menu-icon { + left: auto; + right: 0; +} +.ui-button { + padding: .4em 1em; + display: inline-block; + position: relative; + line-height: normal; + margin-right: .1em; + cursor: pointer; + vertical-align: middle; + text-align: center; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + + /* Support: IE <= 11 */ + overflow: visible; +} + +.ui-button, +.ui-button:link, +.ui-button:visited, +.ui-button:hover, +.ui-button:active { + text-decoration: none; +} + +/* to make room for the icon, a width needs to be set here */ +.ui-button-icon-only { + width: 2em; + box-sizing: border-box; + text-indent: -9999px; + white-space: nowrap; +} + +/* no icon support for input elements */ +input.ui-button.ui-button-icon-only { + text-indent: 0; +} + +/* button icon element(s) */ +.ui-button-icon-only .ui-icon { + position: absolute; + top: 50%; + left: 50%; + margin-top: -8px; + margin-left: -8px; +} + +.ui-button.ui-icon-notext .ui-icon { + padding: 0; + width: 2.1em; + height: 2.1em; + text-indent: -9999px; + white-space: nowrap; + +} + +input.ui-button.ui-icon-notext .ui-icon { + width: auto; + height: auto; + text-indent: 0; + white-space: normal; + padding: .4em 1em; +} + +/* workarounds */ +/* Support: Firefox 5 - 40 */ +input.ui-button::-moz-focus-inner, +button.ui-button::-moz-focus-inner { + border: 0; + padding: 0; +} +.ui-controlgroup { + vertical-align: middle; + display: inline-block; +} +.ui-controlgroup > .ui-controlgroup-item { + float: left; + margin-left: 0; + margin-right: 0; +} +.ui-controlgroup > .ui-controlgroup-item:focus, +.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus { + z-index: 9999; +} +.ui-controlgroup-vertical > .ui-controlgroup-item { + display: block; + float: none; + width: 100%; + margin-top: 0; + margin-bottom: 0; + text-align: left; +} +.ui-controlgroup-vertical .ui-controlgroup-item { + box-sizing: border-box; +} +.ui-controlgroup .ui-controlgroup-label { + padding: .4em 1em; +} +.ui-controlgroup .ui-controlgroup-label span { + font-size: 80%; +} +.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item { + border-left: none; +} +.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item { + border-top: none; +} +.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content { + border-right: none; +} +.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content { + border-bottom: none; +} + +/* Spinner specific style fixes */ +.ui-controlgroup-vertical .ui-spinner-input { + + /* Support: IE8 only, Android < 4.4 only */ + width: 75%; + width: calc( 100% - 2.4em ); +} +.ui-controlgroup-vertical .ui-spinner .ui-spinner-up { + border-top-style: solid; +} + +.ui-checkboxradio-label .ui-icon-background { + box-shadow: inset 1px 1px 1px #ccc; + border-radius: .12em; + border: none; +} +.ui-checkboxradio-radio-label .ui-icon-background { + width: 16px; + height: 16px; + border-radius: 1em; + overflow: visible; + border: none; +} +.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon, +.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon { + background-image: none; + width: 8px; + height: 8px; + border-width: 4px; + border-style: solid; +} +.ui-checkboxradio-disabled { + pointer-events: none; +} +.ui-datepicker { + width: 17em; + padding: .2em .2em 0; + display: none; +} +.ui-datepicker .ui-datepicker-header { + position: relative; + padding: .2em 0; +} +.ui-datepicker .ui-datepicker-prev, +.ui-datepicker .ui-datepicker-next { + position: absolute; + top: 2px; + width: 1.8em; + height: 1.8em; +} +.ui-datepicker .ui-datepicker-prev-hover, +.ui-datepicker .ui-datepicker-next-hover { + top: 1px; +} +.ui-datepicker .ui-datepicker-prev { + left: 2px; +} +.ui-datepicker .ui-datepicker-next { + right: 2px; +} +.ui-datepicker .ui-datepicker-prev-hover { + left: 1px; +} +.ui-datepicker .ui-datepicker-next-hover { + right: 1px; +} +.ui-datepicker .ui-datepicker-prev span, +.ui-datepicker .ui-datepicker-next span { + display: block; + position: absolute; + left: 50%; + margin-left: -8px; + top: 50%; + margin-top: -8px; +} +.ui-datepicker .ui-datepicker-title { + margin: 0 2.3em; + line-height: 1.8em; + text-align: center; +} +.ui-datepicker .ui-datepicker-title select { + font-size: 1em; + margin: 1px 0; +} +.ui-datepicker select.ui-datepicker-month, +.ui-datepicker select.ui-datepicker-year { + width: 45%; +} +.ui-datepicker table { + width: 100%; + font-size: .9em; + border-collapse: collapse; + margin: 0 0 .4em; +} +.ui-datepicker th { + padding: .7em .3em; + text-align: center; + font-weight: bold; + border: 0; +} +.ui-datepicker td { + border: 0; + padding: 1px; +} +.ui-datepicker td span, +.ui-datepicker td a { + display: block; + padding: .2em; + text-align: right; + text-decoration: none; +} +.ui-datepicker .ui-datepicker-buttonpane { + background-image: none; + margin: .7em 0 0 0; + padding: 0 .2em; + border-left: 0; + border-right: 0; + border-bottom: 0; +} +.ui-datepicker .ui-datepicker-buttonpane button { + float: right; + margin: .5em .2em .4em; + cursor: pointer; + padding: .2em .6em .3em .6em; + width: auto; + overflow: visible; +} +.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { + float: left; +} + +/* with multiple calendars */ +.ui-datepicker.ui-datepicker-multi { + width: auto; +} +.ui-datepicker-multi .ui-datepicker-group { + float: left; +} +.ui-datepicker-multi .ui-datepicker-group table { + width: 95%; + margin: 0 auto .4em; +} +.ui-datepicker-multi-2 .ui-datepicker-group { + width: 50%; +} +.ui-datepicker-multi-3 .ui-datepicker-group { + width: 33.3%; +} +.ui-datepicker-multi-4 .ui-datepicker-group { + width: 25%; +} +.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header, +.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { + border-left-width: 0; +} +.ui-datepicker-multi .ui-datepicker-buttonpane { + clear: left; +} +.ui-datepicker-row-break { + clear: both; + width: 100%; + font-size: 0; +} + +/* RTL support */ +.ui-datepicker-rtl { + direction: rtl; +} +.ui-datepicker-rtl .ui-datepicker-prev { + right: 2px; + left: auto; +} +.ui-datepicker-rtl .ui-datepicker-next { + left: 2px; + right: auto; +} +.ui-datepicker-rtl .ui-datepicker-prev:hover { + right: 1px; + left: auto; +} +.ui-datepicker-rtl .ui-datepicker-next:hover { + left: 1px; + right: auto; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane { + clear: right; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane button { + float: left; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current, +.ui-datepicker-rtl .ui-datepicker-group { + float: right; +} +.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header, +.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { + border-right-width: 0; + border-left-width: 1px; +} + +/* Icons */ +.ui-datepicker .ui-icon { + display: block; + text-indent: -99999px; + overflow: hidden; + background-repeat: no-repeat; + left: .5em; + top: .3em; +} +.ui-dialog { + position: absolute; + top: 0; + left: 0; + padding: .2em; + outline: 0; +} +.ui-dialog .ui-dialog-titlebar { + padding: .4em 1em; + position: relative; +} +.ui-dialog .ui-dialog-title { + float: left; + margin: .1em 0; + white-space: nowrap; + width: 90%; + overflow: hidden; + text-overflow: ellipsis; +} +.ui-dialog .ui-dialog-titlebar-close { + position: absolute; + right: .3em; + top: 50%; + width: 20px; + margin: -10px 0 0 0; + padding: 1px; + height: 20px; +} +.ui-dialog .ui-dialog-content { + position: relative; + border: 0; + padding: .5em 1em; + background: none; + overflow: auto; +} +.ui-dialog .ui-dialog-buttonpane { + text-align: left; + border-width: 1px 0 0 0; + background-image: none; + margin-top: .5em; + padding: .3em 1em .5em .4em; +} +.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { + float: right; +} +.ui-dialog .ui-dialog-buttonpane button { + margin: .5em .4em .5em 0; + cursor: pointer; +} +.ui-dialog .ui-resizable-n { + height: 2px; + top: 0; +} +.ui-dialog .ui-resizable-e { + width: 2px; + right: 0; +} +.ui-dialog .ui-resizable-s { + height: 2px; + bottom: 0; +} +.ui-dialog .ui-resizable-w { + width: 2px; + left: 0; +} +.ui-dialog .ui-resizable-se, +.ui-dialog .ui-resizable-sw, +.ui-dialog .ui-resizable-ne, +.ui-dialog .ui-resizable-nw { + width: 7px; + height: 7px; +} +.ui-dialog .ui-resizable-se { + right: 0; + bottom: 0; +} +.ui-dialog .ui-resizable-sw { + left: 0; + bottom: 0; +} +.ui-dialog .ui-resizable-ne { + right: 0; + top: 0; +} +.ui-dialog .ui-resizable-nw { + left: 0; + top: 0; +} +.ui-draggable .ui-dialog-titlebar { + cursor: move; +} +.ui-draggable-handle { + -ms-touch-action: none; + touch-action: none; +} +.ui-resizable { + position: relative; +} +.ui-resizable-handle { + position: absolute; + font-size: 0.1px; + display: block; + -ms-touch-action: none; + touch-action: none; +} +.ui-resizable-disabled .ui-resizable-handle, +.ui-resizable-autohide .ui-resizable-handle { + display: none; +} +.ui-resizable-n { + cursor: n-resize; + height: 7px; + width: 100%; + top: -5px; + left: 0; +} +.ui-resizable-s { + cursor: s-resize; + height: 7px; + width: 100%; + bottom: -5px; + left: 0; +} +.ui-resizable-e { + cursor: e-resize; + width: 7px; + right: -5px; + top: 0; + height: 100%; +} +.ui-resizable-w { + cursor: w-resize; + width: 7px; + left: -5px; + top: 0; + height: 100%; +} +.ui-resizable-se { + cursor: se-resize; + width: 12px; + height: 12px; + right: 1px; + bottom: 1px; +} +.ui-resizable-sw { + cursor: sw-resize; + width: 9px; + height: 9px; + left: -5px; + bottom: -5px; +} +.ui-resizable-nw { + cursor: nw-resize; + width: 9px; + height: 9px; + left: -5px; + top: -5px; +} +.ui-resizable-ne { + cursor: ne-resize; + width: 9px; + height: 9px; + right: -5px; + top: -5px; +} +.ui-progressbar { + height: 2em; + text-align: left; + overflow: hidden; +} +.ui-progressbar .ui-progressbar-value { + margin: -1px; + height: 100%; +} +.ui-progressbar .ui-progressbar-overlay { + background: url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw=="); + height: 100%; + filter: alpha(opacity=25); /* support: IE8 */ + opacity: 0.25; +} +.ui-progressbar-indeterminate .ui-progressbar-value { + background-image: none; +} +.ui-selectable { + -ms-touch-action: none; + touch-action: none; +} +.ui-selectable-helper { + position: absolute; + z-index: 100; + border: 1px dotted black; +} +.ui-selectmenu-menu { + padding: 0; + margin: 0; + position: absolute; + top: 0; + left: 0; + display: none; +} +.ui-selectmenu-menu .ui-menu { + overflow: auto; + overflow-x: hidden; + padding-bottom: 1px; +} +.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup { + font-size: 1em; + font-weight: bold; + line-height: 1.5; + padding: 2px 0.4em; + margin: 0.5em 0 0 0; + height: auto; + border: 0; +} +.ui-selectmenu-open { + display: block; +} +.ui-selectmenu-text { + display: block; + margin-right: 20px; + overflow: hidden; + text-overflow: ellipsis; +} +.ui-selectmenu-button.ui-button { + text-align: left; + white-space: nowrap; + width: 14em; +} +.ui-selectmenu-icon.ui-icon { + float: right; + margin-top: 0; +} +.ui-slider { + position: relative; + text-align: left; +} +.ui-slider .ui-slider-handle { + position: absolute; + z-index: 2; + width: 1.2em; + height: 1.2em; + cursor: default; + -ms-touch-action: none; + touch-action: none; +} +.ui-slider .ui-slider-range { + position: absolute; + z-index: 1; + font-size: .7em; + display: block; + border: 0; + background-position: 0 0; +} + +/* support: IE8 - See #6727 */ +.ui-slider.ui-state-disabled .ui-slider-handle, +.ui-slider.ui-state-disabled .ui-slider-range { + filter: inherit; +} + +.ui-slider-horizontal { + height: .8em; +} +.ui-slider-horizontal .ui-slider-handle { + top: -.3em; + margin-left: -.6em; +} +.ui-slider-horizontal .ui-slider-range { + top: 0; + height: 100%; +} +.ui-slider-horizontal .ui-slider-range-min { + left: 0; +} +.ui-slider-horizontal .ui-slider-range-max { + right: 0; +} + +.ui-slider-vertical { + width: .8em; + height: 100px; +} +.ui-slider-vertical .ui-slider-handle { + left: -.3em; + margin-left: 0; + margin-bottom: -.6em; +} +.ui-slider-vertical .ui-slider-range { + left: 0; + width: 100%; +} +.ui-slider-vertical .ui-slider-range-min { + bottom: 0; +} +.ui-slider-vertical .ui-slider-range-max { + top: 0; +} +.ui-sortable-handle { + -ms-touch-action: none; + touch-action: none; +} +.ui-spinner { + position: relative; + display: inline-block; + overflow: hidden; + padding: 0; + vertical-align: middle; +} +.ui-spinner-input { + border: none; + background: none; + color: inherit; + padding: .222em 0; + margin: .2em 0; + vertical-align: middle; + margin-left: .4em; + margin-right: 2em; +} +.ui-spinner-button { + width: 1.6em; + height: 50%; + font-size: .5em; + padding: 0; + margin: 0; + text-align: center; + position: absolute; + cursor: default; + display: block; + overflow: hidden; + right: 0; +} +/* more specificity required here to override default borders */ +.ui-spinner a.ui-spinner-button { + border-top-style: none; + border-bottom-style: none; + border-right-style: none; +} +.ui-spinner-up { + top: 0; +} +.ui-spinner-down { + bottom: 0; +} +.ui-tabs { + position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ + padding: .2em; +} +.ui-tabs .ui-tabs-nav { + margin: 0; + padding: .2em .2em 0; +} +.ui-tabs .ui-tabs-nav li { + list-style: none; + float: left; + position: relative; + top: 0; + margin: 1px .2em 0 0; + border-bottom-width: 0; + padding: 0; + white-space: nowrap; +} +.ui-tabs .ui-tabs-nav .ui-tabs-anchor { + float: left; + padding: .5em 1em; + text-decoration: none; +} +.ui-tabs .ui-tabs-nav li.ui-tabs-active { + margin-bottom: -1px; + padding-bottom: 1px; +} +.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor, +.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor, +.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor { + cursor: text; +} +.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor { + cursor: pointer; +} +.ui-tabs .ui-tabs-panel { + display: block; + border-width: 0; + padding: 1em 1.4em; + background: none; +} +.ui-tooltip { + padding: 8px; + position: absolute; + z-index: 9999; + max-width: 300px; +} +body .ui-tooltip { + border-width: 2px; +} +/* Component containers +----------------------------------*/ +.ui-widget { + font-family: Arial,Helvetica,sans-serif; + font-size: 1em; +} +.ui-widget .ui-widget { + font-size: 1em; +} +.ui-widget input, +.ui-widget select, +.ui-widget textarea, +.ui-widget button { + font-family: Arial,Helvetica,sans-serif; + font-size: 1em; +} +.ui-widget.ui-widget-content { + border: 1px solid #c5c5c5; +} +.ui-widget-content { + border: 1px solid #dddddd; + background: #ffffff; + color: #333333; +} +.ui-widget-content a { + color: #333333; +} +.ui-widget-header { + border: 1px solid #dddddd; + background: #e9e9e9; + color: #333333; + font-weight: bold; +} +.ui-widget-header a { + color: #333333; +} + +/* Interaction states +----------------------------------*/ +.ui-state-default, +.ui-widget-content .ui-state-default, +.ui-widget-header .ui-state-default, +.ui-button, + +/* We use html here because we need a greater specificity to make sure disabled +works properly when clicked or hovered */ +html .ui-button.ui-state-disabled:hover, +html .ui-button.ui-state-disabled:active { + border: 1px solid #c5c5c5; + background: #f6f6f6; + font-weight: normal; + color: #454545; +} +.ui-state-default a, +.ui-state-default a:link, +.ui-state-default a:visited, +a.ui-button, +a:link.ui-button, +a:visited.ui-button, +.ui-button { + color: #454545; + text-decoration: none; +} +.ui-state-hover, +.ui-widget-content .ui-state-hover, +.ui-widget-header .ui-state-hover, +.ui-state-focus, +.ui-widget-content .ui-state-focus, +.ui-widget-header .ui-state-focus, +.ui-button:hover, +.ui-button:focus { + border: 1px solid #cccccc; + background: #ededed; + font-weight: normal; + color: #2b2b2b; +} +.ui-state-hover a, +.ui-state-hover a:hover, +.ui-state-hover a:link, +.ui-state-hover a:visited, +.ui-state-focus a, +.ui-state-focus a:hover, +.ui-state-focus a:link, +.ui-state-focus a:visited, +a.ui-button:hover, +a.ui-button:focus { + color: #2b2b2b; + text-decoration: none; +} + +.ui-visual-focus { + box-shadow: 0 0 3px 1px rgb(94, 158, 214); +} +.ui-state-active, +.ui-widget-content .ui-state-active, +.ui-widget-header .ui-state-active, +a.ui-button:active, +.ui-button:active, +.ui-button.ui-state-active:hover { + border: 1px solid #003eff; + background: #007fff; + font-weight: normal; + color: #ffffff; +} +.ui-icon-background, +.ui-state-active .ui-icon-background { + border: #003eff; + background-color: #ffffff; +} +.ui-state-active a, +.ui-state-active a:link, +.ui-state-active a:visited { + color: #ffffff; + text-decoration: none; +} + +/* Interaction Cues +----------------------------------*/ +.ui-state-highlight, +.ui-widget-content .ui-state-highlight, +.ui-widget-header .ui-state-highlight { + border: 1px solid #dad55e; + background: #fffa90; + color: #777620; +} +.ui-state-checked { + border: 1px solid #dad55e; + background: #fffa90; +} +.ui-state-highlight a, +.ui-widget-content .ui-state-highlight a, +.ui-widget-header .ui-state-highlight a { + color: #777620; +} +.ui-state-error, +.ui-widget-content .ui-state-error, +.ui-widget-header .ui-state-error { + border: 1px solid #f1a899; + background: #fddfdf; + color: #5f3f3f; +} +.ui-state-error a, +.ui-widget-content .ui-state-error a, +.ui-widget-header .ui-state-error a { + color: #5f3f3f; +} +.ui-state-error-text, +.ui-widget-content .ui-state-error-text, +.ui-widget-header .ui-state-error-text { + color: #5f3f3f; +} +.ui-priority-primary, +.ui-widget-content .ui-priority-primary, +.ui-widget-header .ui-priority-primary { + font-weight: bold; +} +.ui-priority-secondary, +.ui-widget-content .ui-priority-secondary, +.ui-widget-header .ui-priority-secondary { + opacity: .7; + filter:Alpha(Opacity=70); /* support: IE8 */ + font-weight: normal; +} +.ui-state-disabled, +.ui-widget-content .ui-state-disabled, +.ui-widget-header .ui-state-disabled { + opacity: .35; + filter:Alpha(Opacity=35); /* support: IE8 */ + background-image: none; +} +.ui-state-disabled .ui-icon { + filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */ +} + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { + width: 16px; + height: 16px; +} +.ui-icon, +.ui-widget-content .ui-icon { + background-image: url("images/ui-icons_444444_256x240.png"); +} +.ui-widget-header .ui-icon { + background-image: url("images/ui-icons_444444_256x240.png"); +} +.ui-state-hover .ui-icon, +.ui-state-focus .ui-icon, +.ui-button:hover .ui-icon, +.ui-button:focus .ui-icon { + background-image: url("images/ui-icons_555555_256x240.png"); +} +.ui-state-active .ui-icon, +.ui-button:active .ui-icon { + background-image: url("images/ui-icons_ffffff_256x240.png"); +} +.ui-state-highlight .ui-icon, +.ui-button .ui-state-highlight.ui-icon { + background-image: url("images/ui-icons_777620_256x240.png"); +} +.ui-state-error .ui-icon, +.ui-state-error-text .ui-icon { + background-image: url("images/ui-icons_cc0000_256x240.png"); +} +.ui-button .ui-icon { + background-image: url("images/ui-icons_777777_256x240.png"); +} + +/* positioning */ +.ui-icon-blank { background-position: 16px 16px; } +.ui-icon-caret-1-n { background-position: 0 0; } +.ui-icon-caret-1-ne { background-position: -16px 0; } +.ui-icon-caret-1-e { background-position: -32px 0; } +.ui-icon-caret-1-se { background-position: -48px 0; } +.ui-icon-caret-1-s { background-position: -65px 0; } +.ui-icon-caret-1-sw { background-position: -80px 0; } +.ui-icon-caret-1-w { background-position: -96px 0; } +.ui-icon-caret-1-nw { background-position: -112px 0; } +.ui-icon-caret-2-n-s { background-position: -128px 0; } +.ui-icon-caret-2-e-w { background-position: -144px 0; } +.ui-icon-triangle-1-n { background-position: 0 -16px; } +.ui-icon-triangle-1-ne { background-position: -16px -16px; } +.ui-icon-triangle-1-e { background-position: -32px -16px; } +.ui-icon-triangle-1-se { background-position: -48px -16px; } +.ui-icon-triangle-1-s { background-position: -65px -16px; } +.ui-icon-triangle-1-sw { background-position: -80px -16px; } +.ui-icon-triangle-1-w { background-position: -96px -16px; } +.ui-icon-triangle-1-nw { background-position: -112px -16px; } +.ui-icon-triangle-2-n-s { background-position: -128px -16px; } +.ui-icon-triangle-2-e-w { background-position: -144px -16px; } +.ui-icon-arrow-1-n { background-position: 0 -32px; } +.ui-icon-arrow-1-ne { background-position: -16px -32px; } +.ui-icon-arrow-1-e { background-position: -32px -32px; } +.ui-icon-arrow-1-se { background-position: -48px -32px; } +.ui-icon-arrow-1-s { background-position: -65px -32px; } +.ui-icon-arrow-1-sw { background-position: -80px -32px; } +.ui-icon-arrow-1-w { background-position: -96px -32px; } +.ui-icon-arrow-1-nw { background-position: -112px -32px; } +.ui-icon-arrow-2-n-s { background-position: -128px -32px; } +.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } +.ui-icon-arrow-2-e-w { background-position: -160px -32px; } +.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } +.ui-icon-arrowstop-1-n { background-position: -192px -32px; } +.ui-icon-arrowstop-1-e { background-position: -208px -32px; } +.ui-icon-arrowstop-1-s { background-position: -224px -32px; } +.ui-icon-arrowstop-1-w { background-position: -240px -32px; } +.ui-icon-arrowthick-1-n { background-position: 1px -48px; } +.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } +.ui-icon-arrowthick-1-e { background-position: -32px -48px; } +.ui-icon-arrowthick-1-se { background-position: -48px -48px; } +.ui-icon-arrowthick-1-s { background-position: -64px -48px; } +.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } +.ui-icon-arrowthick-1-w { background-position: -96px -48px; } +.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } +.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } +.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } +.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } +.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } +.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } +.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } +.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } +.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } +.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } +.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } +.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } +.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } +.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } +.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } +.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } +.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } +.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } +.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } +.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } +.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } +.ui-icon-arrow-4 { background-position: 0 -80px; } +.ui-icon-arrow-4-diag { background-position: -16px -80px; } +.ui-icon-extlink { background-position: -32px -80px; } +.ui-icon-newwin { background-position: -48px -80px; } +.ui-icon-refresh { background-position: -64px -80px; } +.ui-icon-shuffle { background-position: -80px -80px; } +.ui-icon-transfer-e-w { background-position: -96px -80px; } +.ui-icon-transferthick-e-w { background-position: -112px -80px; } +.ui-icon-folder-collapsed { background-position: 0 -96px; } +.ui-icon-folder-open { background-position: -16px -96px; } +.ui-icon-document { background-position: -32px -96px; } +.ui-icon-document-b { background-position: -48px -96px; } +.ui-icon-note { background-position: -64px -96px; } +.ui-icon-mail-closed { background-position: -80px -96px; } +.ui-icon-mail-open { background-position: -96px -96px; } +.ui-icon-suitcase { background-position: -112px -96px; } +.ui-icon-comment { background-position: -128px -96px; } +.ui-icon-person { background-position: -144px -96px; } +.ui-icon-print { background-position: -160px -96px; } +.ui-icon-trash { background-position: -176px -96px; } +.ui-icon-locked { background-position: -192px -96px; } +.ui-icon-unlocked { background-position: -208px -96px; } +.ui-icon-bookmark { background-position: -224px -96px; } +.ui-icon-tag { background-position: -240px -96px; } +.ui-icon-home { background-position: 0 -112px; } +.ui-icon-flag { background-position: -16px -112px; } +.ui-icon-calendar { background-position: -32px -112px; } +.ui-icon-cart { background-position: -48px -112px; } +.ui-icon-pencil { background-position: -64px -112px; } +.ui-icon-clock { background-position: -80px -112px; } +.ui-icon-disk { background-position: -96px -112px; } +.ui-icon-calculator { background-position: -112px -112px; } +.ui-icon-zoomin { background-position: -128px -112px; } +.ui-icon-zoomout { background-position: -144px -112px; } +.ui-icon-search { background-position: -160px -112px; } +.ui-icon-wrench { background-position: -176px -112px; } +.ui-icon-gear { background-position: -192px -112px; } +.ui-icon-heart { background-position: -208px -112px; } +.ui-icon-star { background-position: -224px -112px; } +.ui-icon-link { background-position: -240px -112px; } +.ui-icon-cancel { background-position: 0 -128px; } +.ui-icon-plus { background-position: -16px -128px; } +.ui-icon-plusthick { background-position: -32px -128px; } +.ui-icon-minus { background-position: -48px -128px; } +.ui-icon-minusthick { background-position: -64px -128px; } +.ui-icon-close { background-position: -80px -128px; } +.ui-icon-closethick { background-position: -96px -128px; } +.ui-icon-key { background-position: -112px -128px; } +.ui-icon-lightbulb { background-position: -128px -128px; } +.ui-icon-scissors { background-position: -144px -128px; } +.ui-icon-clipboard { background-position: -160px -128px; } +.ui-icon-copy { background-position: -176px -128px; } +.ui-icon-contact { background-position: -192px -128px; } +.ui-icon-image { background-position: -208px -128px; } +.ui-icon-video { background-position: -224px -128px; } +.ui-icon-script { background-position: -240px -128px; } +.ui-icon-alert { background-position: 0 -144px; } +.ui-icon-info { background-position: -16px -144px; } +.ui-icon-notice { background-position: -32px -144px; } +.ui-icon-help { background-position: -48px -144px; } +.ui-icon-check { background-position: -64px -144px; } +.ui-icon-bullet { background-position: -80px -144px; } +.ui-icon-radio-on { background-position: -96px -144px; } +.ui-icon-radio-off { background-position: -112px -144px; } +.ui-icon-pin-w { background-position: -128px -144px; } +.ui-icon-pin-s { background-position: -144px -144px; } +.ui-icon-play { background-position: 0 -160px; } +.ui-icon-pause { background-position: -16px -160px; } +.ui-icon-seek-next { background-position: -32px -160px; } +.ui-icon-seek-prev { background-position: -48px -160px; } +.ui-icon-seek-end { background-position: -64px -160px; } +.ui-icon-seek-start { background-position: -80px -160px; } +/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ +.ui-icon-seek-first { background-position: -80px -160px; } +.ui-icon-stop { background-position: -96px -160px; } +.ui-icon-eject { background-position: -112px -160px; } +.ui-icon-volume-off { background-position: -128px -160px; } +.ui-icon-volume-on { background-position: -144px -160px; } +.ui-icon-power { background-position: 0 -176px; } +.ui-icon-signal-diag { background-position: -16px -176px; } +.ui-icon-signal { background-position: -32px -176px; } +.ui-icon-battery-0 { background-position: -48px -176px; } +.ui-icon-battery-1 { background-position: -64px -176px; } +.ui-icon-battery-2 { background-position: -80px -176px; } +.ui-icon-battery-3 { background-position: -96px -176px; } +.ui-icon-circle-plus { background-position: 0 -192px; } +.ui-icon-circle-minus { background-position: -16px -192px; } +.ui-icon-circle-close { background-position: -32px -192px; } +.ui-icon-circle-triangle-e { background-position: -48px -192px; } +.ui-icon-circle-triangle-s { background-position: -64px -192px; } +.ui-icon-circle-triangle-w { background-position: -80px -192px; } +.ui-icon-circle-triangle-n { background-position: -96px -192px; } +.ui-icon-circle-arrow-e { background-position: -112px -192px; } +.ui-icon-circle-arrow-s { background-position: -128px -192px; } +.ui-icon-circle-arrow-w { background-position: -144px -192px; } +.ui-icon-circle-arrow-n { background-position: -160px -192px; } +.ui-icon-circle-zoomin { background-position: -176px -192px; } +.ui-icon-circle-zoomout { background-position: -192px -192px; } +.ui-icon-circle-check { background-position: -208px -192px; } +.ui-icon-circlesmall-plus { background-position: 0 -208px; } +.ui-icon-circlesmall-minus { background-position: -16px -208px; } +.ui-icon-circlesmall-close { background-position: -32px -208px; } +.ui-icon-squaresmall-plus { background-position: -48px -208px; } +.ui-icon-squaresmall-minus { background-position: -64px -208px; } +.ui-icon-squaresmall-close { background-position: -80px -208px; } +.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } +.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } +.ui-icon-grip-solid-vertical { background-position: -32px -224px; } +.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } +.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } +.ui-icon-grip-diagonal-se { background-position: -80px -224px; } + + +/* Misc visuals +----------------------------------*/ + +/* Corner radius */ +.ui-corner-all, +.ui-corner-top, +.ui-corner-left, +.ui-corner-tl { + border-top-left-radius: 3px; +} +.ui-corner-all, +.ui-corner-top, +.ui-corner-right, +.ui-corner-tr { + border-top-right-radius: 3px; +} +.ui-corner-all, +.ui-corner-bottom, +.ui-corner-left, +.ui-corner-bl { + border-bottom-left-radius: 3px; +} +.ui-corner-all, +.ui-corner-bottom, +.ui-corner-right, +.ui-corner-br { + border-bottom-right-radius: 3px; +} + +/* Overlays */ +.ui-widget-overlay { + background: #aaaaaa; + opacity: .3; + filter: Alpha(Opacity=30); /* support: IE8 */ +} +.ui-widget-shadow { + -webkit-box-shadow: 0px 0px 5px #666666; + box-shadow: 0px 0px 5px #666666; +} \ No newline at end of file diff --git a/src/static/css/lesshat-prefixed.less b/src/static/css/lesshat-prefixed.less new file mode 100644 index 0000000..e557b2f --- /dev/null +++ b/src/static/css/lesshat-prefixed.less @@ -0,0 +1,886 @@ +// lesshat - The best mixin library in the world +// +// version: v4.1.0 (2016-07-19) + +// TABLE OF MIXINS: + // align-content + // align-items + // align-self + // animation + // animation-delay + // animation-direction + // animation-duration + // animation-fill-mode + // animation-iteration-count + // animation-name + // animation-play-state + // animation-timing-function + // appearance + // backface-visibility + // background-clip + // background-image + // background-origin + // background-size + // blur + // border-bottom-left-radius + // border-bottom-right-radius + // border-image + // border-radius + // border-top-left-radius + // border-top-right-radius + // box-shadow + // box-sizing + // brightness + // calc + // column-count + // column-gap + // column-rule + // column-width + // columns + // contrast + // display + // drop-shadow + // filter + // flex + // flex-basis + // flex-direction + // flex-grow + // flex-shrink + // flex-wrap + // font-face + // grayscale + // hue-rotate + // hyphens + // invert + // justify-content + // keyframes + // opacity + // order + // perspective + // perspective-origin + // placeholder + // rotate + // rotate3d + // rotateX + // rotateY + // rotateZ + // saturate + // scale + // scale3d + // scaleX + // scaleY + // scaleZ + // selection + // sepia + // size + // skew + // skewX + // skewY + // transform + // transform-origin + // transform-style + // transition + // transition-delay + // transition-duration + // transition-property + // transition-timing-function + // translate + // translate3d + // translateX + // translateY + // translateZ + // user-select + +.lh-align-content(...) { + @process: ~`(function(t){return t=t||"stretch"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process_ms: ~`(function(e){return e=e||"stretch","flex-start"==e?e="start":"flex-end"==e?e="end":"space-between"==e?e="justify":"space-around"==e&&(e="distribute"),e})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-align-content: @process; + -ms-flex-line-pack: @process_ms; + align-content: @process; +} + +.lh-align-items(...) { + @process_olderwebkit: ~`(function(t){return t=t||"stretch","flex-start"==t?t="start":"flex-end"==t&&(t="end"),t})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process_moz: ~`(function(t){return t=t||"stretch","flex-start"==t?t="start":"flex-end"==t&&(t="end"),t})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process: ~`(function(t){return t=t||"stretch"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process_ms: ~`(function(t){return t=t||"stretch","flex-start"==t?t="start":"flex-end"==t&&(t="end"),t})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-box-align: @process_olderwebkit; + -moz-box-align: @process_moz; + -webkit-align-items: @process; + -ms-flex-align: @process_ms; + align-items: @process; +} + +.lh-align-self(...) { + @process: ~`(function(n){return n=n||"auto"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process_ms: ~`(function(t){return t=t||"auto","flex-start"==t?t="start":"flex-end"==t&&(t="end"),t})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-align-self: @process; + -ms-flex-item-align: @process_ms; + align-self: @process; +} + +.lh-animation(...) { + @process: ~`(function(e){return e=e||"none",/^[^, ]*,/.test(e)&&(e=e.replace(/(?:,)(?![^(]*\))/g,"")),e})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-animation: @process; + -moz-animation: @process; + -o-animation: @process; + animation: @process; +} + +.lh-animation-delay(...) { + @process: ~`(function(r){r=r||"0";var s=/(?:\d)(?:ms|s)/gi,t=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return s.test(r)||"0"===r||(r=r.replace(t,function(r){return r+=parseFloat(r,10)>10?"ms":"s"})),r})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-animation-delay: @process; + -moz-animation-delay: @process; + -o-animation-delay: @process; + animation-delay: @process; +} + +.lh-animation-direction(...) { + @process: ~`(function(n){return n||"normal"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-animation-direction: @process; + -moz-animation-direction: @process; + -o-animation-direction: @process; + animation-direction: @process; +} + +.lh-animation-duration(...) { + @process: ~`(function(r){r=r||"0";var s=/ms|s/gi,t=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return s.test(r)||"0"===r||(r=r.replace(t,function(r){return r+=parseFloat(r,10)>10?"ms":"s"})),r})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-animation-duration: @process; + -moz-animation-duration: @process; + -o-animation-duration: @process; + animation-duration: @process; +} + +.lh-animation-fill-mode(...) { + @process: ~`(function(n){return n||"none"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-animation-fill-mode: @process; + -moz-animation-fill-mode: @process; + -o-animation-fill-mode: @process; + animation-fill-mode: @process; +} + +.lh-animation-iteration-count(...) { + @process: ~`(function(n){return n||"0"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-animation-iteration-count: @process; + -moz-animation-iteration-count: @process; + -o-animation-iteration-count: @process; + animation-iteration-count: @process; +} + +.lh-animation-name(...) { + @process: ~`(function(n){return n||"none"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-animation-name: @process; + -moz-animation-name: @process; + -o-animation-name: @process; + animation-name: @process; +} + +.lh-animation-play-state(...) { + @process: ~`(function(n){return n||"running"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-animation-play-state: @process; + -moz-animation-play-state: @process; + -o-animation-play-state: @process; + animation-play-state: @process; +} + +.lh-animation-timing-function(...) { + @process: ~`(function(e){return e||"ease"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-animation-timing-function: @process; + -moz-animation-timing-function: @process; + -o-animation-timing-function: @process; + animation-timing-function: @process; +} + +.lh-appearance(...) { + @process: ~`(function(n){return n||"none"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-appearance: @process; + -moz-appearance: @process; + appearance: @process; +} + +.lh-backface-visibility(...) { + @process: ~`(function(i){return i||"visible"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-backface-visibility: @process; + -moz-backface-visibility: @process; + -ms-backface-visibility: @process; + -o-backface-visibility: @process; + backface-visibility: @process; +} + +.lh-background-clip(...) { + @process: ~`(function(r){return r||"border-box"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-background-clip: @process; + -moz-background-clip: @process; + background-clip: @process; +} + +.lh-background-image(...) { + @process_ms: ~`(function(t){function e(t){var e,r,s,a,n,i,o,c,g="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",d=0,l=0,f="",h=[];if(!t)return t;do e=t.charCodeAt(d++),r=t.charCodeAt(d++),s=t.charCodeAt(d++),c=e<<16|r<<8|s,a=c>>18&63,n=c>>12&63,i=c>>6&63,o=63&c,h[l++]=g.charAt(a)+g.charAt(n)+g.charAt(i)+g.charAt(o);while(d<t.length);f=h.join("");var u=t.length%3;return(u?f.slice(0,u-3):f)+"===".slice(u||3)}if(t=t||8121991,8121991==t)return t;var r=/linear|radial/g.test(t)&&t.split(/,(?=\s*(?:linear|radial|url))/g),s=[],a={"to bottom":'x1="0%" y1="0%" x2="0%" y2="100%"',"to left":'x1="100%" y1="0%" x2="0%" y2="0%"',"to top":'x1="0%" y1="100%" x2="0%" y2="0%"',"to right":'x1="0%" y1="0%" x2="100%" y2="0%"',get"top"(){return this["to bottom"]},get"180deg"(){return this["to bottom"]},get"right"(){return this["to left"]},get"270deg"(){return this["to left"]},get"bottom"(){return this["to top"]},get"90deg"(){return this["to right"]},get"0deg"(){return this["to top"]},get"left"(){return this["to right"]},"-45deg":'x1="0%" y1="0%" x2="100%" y2="100%"',"45deg":'x1="0%" y1="100%" x2="100%" y2="0%"',"ellipse at center":'cx="50%" cy="50%" r="75%"',get"135deg"(){return this["-45deg"]}},n={uri_data:"url(data:image/svg+xml;base64,",xml:'<?xml version="1.0" ?>',svg_start:'<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 1 1" preserveAspectRatio="none">',linear_gradient_start:'<linearGradient id="lesshat-generated" gradientUnits="userSpaceOnUse"',radial_gradient_start:'<radialGradient id="lesshat-generated" gradientUnits="userSpaceOnUse"',linear_gradient_end:"</linearGradient>",radial_gradient_end:"</radialGradient>",rect_linear:'<rect x="0" y="0" width="1" height="1" fill="url(#lesshat-generated)" />',rect_radial:'<rect x="-50" y="-50" width="101" height="101" fill="url(#lesshat-generated)" />',svg_end:"</svg>"};if(r.length){r.forEach(function(t,e){var r={};if(Object.keys(a).some(function(e){return t.indexOf(e)>=0?(r.svg_direction=a[e],!0):void(r.svg_direction=!1)}),/linear/.test(t))r.svg_type="linear";else if(/radial/.test(t))r.svg_type="radial";else if(!/linear/.test(t)&&!/radial/.test(t))return r.url=t.trim(),r.svg_type="url",r.svg_direction=!0,s.push(r),!1;var n=t.match(/rgb|#[a-zA-Z0-9]|hsl/g).length;r.svg_stops=[],t=t.replace(/transparent/g,"rgba(0,0,0,0)"),t.match(/#[a-zA-Z0-9]/g)&&t.match(/(#[a-zA-Z0-9]+)\s*(\d+%)?/g).forEach(function(t){t=t.split(" "),r.svg_stops.push('<stop offset="'+(t[1]||!1)+'" stop-color="'+t[0]+'" stop-opacity="1"/>')}),t.match(/rgba?\(\d+,\s*\d+,\s*\d+(?:,\s*(0|1|\.\d+|0\.\d+))?\)/g)&&t.replace(/rgba?\((\d+,\s*\d+,\s*\d+)(?:,\s*(0|1|\.\d+|0\.\d+))?\)\s*(\d+%)?/g,function(t,e,s,a){r.svg_stops.push('<stop offset="'+(a||!1)+'" stop-color="rgb('+e+')" stop-opacity="'+(s||1)+'"/>')}),t.match(/hsla?\((\d+,\s*\d+%,\s*\d+%),\s*(0|1|\.\d+|0\.\d+)\)/g)&&t.replace(/hsla?\((\d+,\s*\d+%,\s*\d+%),\s*(0|1|\.\d+|0\.\d+)\)\s*(\d+%)?/g,function(t,e,s,a){r.svg_stops.push('<stop offset="'+(a||!1)+'" stop-color="hsl('+e+')" stop-opacity="'+(s||1)+'"/>')});var i=Math.floor(100/(n-1));r.svg_stops.forEach(function(t,e){/offset="false"/.test(t)&&(r.svg_stops[e]=t.replace(/offset="false"/,'offset="'+i*e+'%"'))}),r.svg_stops.sort(function(t,e){if(t=t.match(/offset="(\d+)%"/),e=e.match(/offset="(\d+)%"/),2==t.length&&2==e.length)return t[1]-e[1]}),s.push(r)});var i=[],o=s.every(function(t){for(var e in t)if(0==t[e]||0==t[e].length)return!1;return!0});if(!o)return 8121991;s.forEach(function(t,e){"linear"!=t.svg_type&&"radial"!=t.svg_type||(i[e]=n.xml+n.svg_start),"linear"==t.svg_type?(i[e]+=n.linear_gradient_start+" "+t.svg_direction+">",t.svg_stops.forEach(function(t){i[e]+=t}),i[e]+=n.linear_gradient_end,i[e]+=n.rect_linear,i[e]+=n.svg_end):"radial"==t.svg_type?(i[e]+=n.radial_gradient_start+" "+t.svg_direction+">",t.svg_stops.forEach(function(t){i[e]+=t}),i[e]+=n.radial_gradient_end,i[e]+=n.rect_radial,i[e]+=n.svg_end):"url"==t.svg_type&&(i[e]=t.url)}),i.forEach(function(t,r){/<\?xml version="1.0" \?>/g.test(t)&&(i[r]=n.uri_data+e(t)+")")}),t=i.join(",")}return t})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process_webkit: ~`(function(e){if(e=e||8121991,8121991==e)return e;var r={"to bottom":"top","to left":"right","to top":"bottom","to right":"left","ellipse at center":"center, ellipse cover","circle closest-side":"center center, circle contain","circle farthest-corner":"center center, circle cover","circle farthest-side":"center center, circle cover","ellipse closest-side":"center center, ellipse contain","ellipse farthest-corner":"center center, ellipse cover","ellipse farthest-side":"center center, ellipse cover"},t=/(radial-gradient\()([a-z- ]+)at\s+(\w+%?)\s*(\w*%?)/g,c=Object.keys(r);return c.some(function(c){return e.indexOf(c)>=0?(e=e.replace(new RegExp(c+"(?![ a-z0-9])","g"),r[c]),!0):void(t.test(e)&&(e=e.replace(t,function(e,r,t,c,i){return r.trim()+c.trim()+" "+i.trim()+","+t.replace(/closest-side/g,"contain").replace(/farthest-corner/g,"cover").trim()})))}),e=e.replace(/(\d+)\s*deg/g,function(e,r){return 90-r+"deg"}).replace(/(linear|radial)-gradient/g,"-webkit-$1-gradient")})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process_moz: ~`(function(e){if(e=e||8121991,8121991==e)return e;var r={"to bottom":"top","to left":"right","to top":"bottom","to right":"left","ellipse at center":"center, ellipse cover","circle closest-side":"center center, circle contain","circle farthest-corner":"center center, circle cover","circle farthest-side":"center center, circle cover","ellipse closest-side":"center center, ellipse contain","ellipse farthest-corner":"center center, ellipse cover","ellipse farthest-side":"center center, ellipse cover"},t=/(radial-gradient\()([a-z- ]+)at\s+(\w+%?)\s*(\w*%?)/g,c=Object.keys(r);return c.some(function(c){return e.indexOf(c)>=0?(e=e.replace(new RegExp(c+"(?![ a-z0-9])","g"),r[c]),!0):void(t.test(e)&&(e=e.replace(t,function(e,r,t,c,n){return r.trim()+c.trim()+" "+n.trim()+","+t.replace(/closest-side/g,"contain").replace(/farthest-corner/g,"cover").trim()})))}),e=e.replace(/(\d+)\s*deg/g,function(e,r){return 90-r+"deg"}).replace(/(linear|radial)-gradient/g,"-moz-$1-gradient")})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process_opera: ~`(function(e){if(e=e||8121991,8121991==e)return e;var r={"to bottom":"top","to left":"right","to top":"bottom","to right":"left","ellipse at center":"center, ellipse cover","circle closest-side":"center center, circle contain","circle farthest-corner":"center center, circle cover","circle farthest-side":"center center, circle cover","ellipse closest-side":"center center, ellipse contain","ellipse farthest-corner":"center center, ellipse cover","ellipse farthest-side":"center center, ellipse cover"},t=/(radial-gradient\()([a-z- ]+)at\s+(\w+%?)\s*(\w*%?)/g,c=Object.keys(r);return c.some(function(c){return e.indexOf(c)>=0?(e=e.replace(new RegExp(c+"(?![ a-z0-9])","g"),r[c]),!0):void(t.test(e)&&(e=e.replace(t,function(e,r,t,c,n){return r.trim()+c.trim()+" "+n.trim()+","+t.replace(/closest-side/g,"contain").replace(/farthest-corner/g,"cover").trim()})))}),e=e.replace(/(\d+)\s*deg/g,function(e,r){return 90-r+"deg"}).replace(/(linear|radial)-gradient/g,"-o-$1-gradient")})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process: ~`(function(t){if(t=t||8121991,8121991==t)return t;var e={top:"to bottom",right:"to left",bottom:"to top",left:"to right"},o=Object.keys(e);return o.some(function(o){if(t.indexOf(o)>=0&&!new RegExp("to\\s+"+o+"|at\\s+"+o,"g").test(t))return t=t.replace(new RegExp(o),e[o]),!0}),t})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + background-image: @process_ms; + background-image: @process_webkit; + background-image: @process_moz; + background-image: @process_opera; + background-image: @process; +} + +.lh-background-origin(...) { + @process: ~`(function(n){return n||"padding-box"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-background-origin: @process; + -moz-background-origin: @process; + background-origin: @process; +} + +.lh-background-size(...) { + @process: ~`(function(t){t=t||"auto auto";var e=/\d/gi,r=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return/^[^, ]*,/.test(t)&&(t=t.replace(/(?:,)(?![^(]*\))/g,"")),e.test(t)&&(t=t.replace(r,function(t){return 0==t&&t||t+"px"})),t})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-background-size: @process; + -moz-background-size: @process; + background-size: @process; +} + +.lh-blur(...) { + @process: ~`(function(n){n=n||"0";var r=/\d/gi,t=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return r.test(n)&&(n=n.replace(t,function(n){return 0==n&&n||n+"px"})),n})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-filter: blur(@process); + -moz-filter: blur(@process); + -ms-filter: blur(@process); + filter: blur(@process); +} + +.lh-border-bottom-left-radius(...) { + @process: ~`(function(e){e=e||"0";var t=/\d/gi,r=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return/^[^, ]*,/.test(e)&&(e=e.replace(/(?:,)(?![^(]*\))/g,"")),t.test(e)&&(e=e.replace(r,function(e){return 0==e&&e||e+"px"})),e})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-border-bottom-left-radius: @process; -webkit-background-clip: padding-box; + -moz-border-radius-bottomleft: @process; -moz-background-clip: padding; + border-bottom-left-radius: @process; background-clip: padding-box; +} + +.lh-border-bottom-right-radius(...) { + @process: ~`(function(e){e=e||"0";var t=/\d/gi,r=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return/^[^, ]*,/.test(e)&&(e=e.replace(/(?:,)(?![^(]*\))/g,"")),t.test(e)&&(e=e.replace(r,function(e){return 0==e&&e||e+"px"})),e})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-border-bottom-right-radius: @process; -webkit-background-clip: padding-box; + -moz-border-radius-bottomright: @process; -moz-background-clip: padding; + border-bottom-right-radius: @process; background-clip: padding-box; +} + +.lh-border-image(...) { + @process: ~`(function(e){return e=e||8121991,/^[^, ]*,/.test(e)&&(e=e.replace(/(?:,)(?![^(]*\))/g,"")),e})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-border-image: @process; + -moz-border-image: @process; + -o-border-image: @process; + border-image: @process; +} + +.lh-border-radius(...) { + @process: ~`(function(e){e=e||"0";var t=/\d/gi,r=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return/^[^, ]*,/.test(e)&&(e=e.replace(/(?:,)(?![^(]*\))/g,"")),t.test(e)&&(e=e.replace(r,function(e){return 0==e&&e||e+"px"})),e})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-border-radius: @process; -webkit-background-clip: padding-box; + -moz-border-radius: @process; -moz-background-clip: padding; + border-radius: @process; background-clip: padding-box; +} + +.lh-border-top-left-radius(...) { + @process: ~`(function(e){e=e||"0";var t=/\d/gi,r=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return/^[^, ]*,/.test(e)&&(e=e.replace(/(?:,)(?![^(]*\))/g,"")),t.test(e)&&(e=e.replace(r,function(e){return 0==e&&e||e+"px"})),e})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-border-top-left-radius: @process; -webkit-background-clip: padding-box; + -moz-border-radius-topleft: @process; -moz-background-clip: padding; + border-top-left-radius: @process; background-clip: padding-box; +} + +.lh-border-top-right-radius(...) { + @process: ~`(function(e){e=e||"0";var t=/\d/gi,r=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return/^[^, ]*,/.test(e)&&(e=e.replace(/(?:,)(?![^(]*\))/g,"")),t.test(e)&&(e=e.replace(r,function(e){return 0==e&&e||e+"px"})),e})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-border-top-right-radius: @process; -webkit-background-clip: padding-box; + -moz-border-radius-topright: @process; -moz-background-clip: padding; + border-top-right-radius: @process; background-clip: padding-box; +} + +.lh-box-shadow(...) { + @process: ~`(function(e){e=e||"0";var t=/\d/gi,r=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return/^[^, ]*,/.test(e)&&(e=e.replace(/(?:,)(?![^(]*\))/g,"")),t.test(e)&&(e=e.replace(r,function(e){return 0==e&&e||e+"px"})),e})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-box-shadow: @process; + -moz-box-shadow: @process; + box-shadow: @process; +} + +.lh-box-sizing(...) { + @process: ~`(function(n){return n=n||"content-box"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-box-sizing: @process; + -moz-box-sizing: @process; + box-sizing: @process; +} + +.lh-brightness(...) { + @process: ~`(function(n){return n=n||"1"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-filter: brightness(@process); + -moz-filter: brightness(@process); + -ms-filter: brightness(@process); + filter: brightness(@process); +} + +.lh-calc(...) { + @process: ~`(function(a){function c(c,t){var r=");\n",s=e.split(","),l=s[0]+":"+c+"("+(s[1].trim()||0)+r;"start"==t?a="0;\n"+l:a+=l}a=a||8121991;var t="@{state}",e=a;if(8121991==a)return a;switch(t){case"1":c("-webkit-calc","start"),c("-moz-calc"),c("calc");break;case"2":c("-webkit-calc","start"),c("-moz-calc");break;case"3":c("-webkit-calc","start"),c("calc");break;case"4":c("-webkit-calc","start");break;case"5":c("-moz-calc","start"),c("calc");break;case"6":c("-moz-calc","start");break;case"7":c("calc","start")}return a=a.replace(/;$/g,"")})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @state: 1; -lh-property: @process; + +} + +.lh-column-count(...) { + @process: ~`(function(n){return n=n||"auto"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-column-count: @process; + -moz-column-count: @process; + column-count: @process; +} + +.lh-column-gap(...) { + @process: ~`(function(n){n=n||"normal";var r=/\d/gi,t=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return r.test(n)&&(n=n.replace(t,function(n){return 0==n&&n||n+"px"})),n})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-column-gap: @process; + -moz-column-gap: @process; + column-gap: @process; +} + +.lh-column-rule(...) { + @process: ~`(function(e){e=e||"medium none black";var n=/\d/gi,t=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return/^[^, ]*,/.test(e)&&(e=e.replace(/(?:,)(?![^(]*\))/g,"")),n.test(e)&&(e=e.replace(t,function(e){return 0==e&&e||e+"px"})),e})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-column-rule: @process; + -moz-column-rule: @process; + column-rule: @process; +} + +.lh-column-width(...) { + @process: ~`(function(t){t=t||"auto";var n=/\d/gi,r=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return n.test(t)&&(t=t.replace(r,function(t){return 0==t&&t||t+"px"})),t})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-column-width: @process; + -moz-column-width: @process; + column-width: @process; +} + +.lh-columns(...) { + @process: ~`(function(t){t=t||"auto auto";var e=/^\d+$/;return/^[^, ]*,/.test(t)&&(t=t.replace(/(?:,)(?![^(]*\))/g,""),t=t.split(" ")),e.test(t[0])&&(t[0]=t[0]+"px"),t.join(" ")})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-columns: @process; + -moz-columns: @process; + columns: @process; +} + +.lh-contrast(...) { + @process: ~`(function(n){n=n||"100%";var r=/\d/gi,t=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return r.test(n)&&(n=n.replace(t,function(n){return 0==n&&n||n+"%"})),n})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-filter: ~"contrast(@{process})"; + -moz-filter: ~"contrast(@{process})"; + -ms-filter: ~"contrast(@{process})"; + filter: ~"contrast(@{process})"; +} + +.lh-display(...) { + @process_oldwebkit: ~`(function(e){return e="flex"==e||"inline-flex"==e?"-webkit-box":8121991})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process_moz: ~`(function(n){return n="flex"==n||"inline-flex"==n?"-moz-box":8121991})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process_webkit: ~`(function(e){return e="flex"==e||"inline-flex"==e?"-webkit-"+e:8121991})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process_ms: ~`(function(e){return e="flex"==e?"-ms-flexbox":"inline-flex"==e?"-ms-inline-flexbox":8121991})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process: ~`(function(n){return"flex"!=n&&"inline-flex"!=n&&(n=8121991),n})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + display: @process_oldwebkit; + display: @process_moz; + display: @process_webkit; + display: @process_ms; + display: @process; +} + +.lh-drop-shadow(...) { + @process: ~`(function(e){if(e=e||8121991,8121991==e)return e;var r=/\d/gi,t=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return/^[^, ]*,/.test(e)&&(e=e.replace(/(?:,)(?![^(]*\))/g,"")),r.test(e)&&(e=e.replace(t,function(e){return 0==e&&e||e+"px"})),e})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-filter: drop-shadow(@process); + -moz-filter: drop-shadow(@process); + -ms-filter: drop-shadow(@process); + filter: drop-shadow(@process); +} + +.lh-filter(...) { + @process: ~`(function(e){return e=e||"none",/^[^, ]*,/.test(e)&&(e=e.replace(/(?:,)(?![^(]*\))/g,"")),e})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-filter: @process; + -moz-filter: @process; + -ms-filter: @process; + filter: @process; +} + +.lh-flex(...) { + @process_olderwebkit: ~`(function(t){return/^\d+/.test(t)?t=t.match(/^\d+/)[0]:""==t&&(t="0"),t})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process_moz: ~`(function(t){return/^\d+/.test(t)?t=t.match(/^\d+/)[0]:""==t&&(t="0"),t})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process: ~`(function(t){return t=t||"0 1 auto",/^[^, ]*,/.test(t)&&(t=t.replace(/(?:,)(?![^(]*\))/g,"")),t})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-box-flex: @process_olderwebkit; + -moz-box-flex: @process_moz; + -webkit-flex: @process; + -ms-flex: @process; + flex: @process; +} + +.lh-flex-basis(...) { + @process: ~`(function(t){t=t||"auto";var n=/\d/gi,r=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return n.test(t)&&(t=t.replace(r,function(t){return 0==t&&t||t+"px"})),t})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-flex-basis: @process; + flex-basis: @process; +} + +.lh-flex-direction(...) { + @process_oldestwebkit: ~`(function(r){return r="row"==r||"column"==r?"normal":"row-reverse"==r||"column-reverse"==r?"reverse":8121991})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process_oldermoz: ~`(function(r){return r="row"==r||"column"==r?"normal":"row-reverse"==r||"column-reverse"==r?"reverse":8121991})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process_olderwebkit: ~`(function(r){return r="row"==r||"row-reverse"==r?"horizontal":"column"==r||"column-reverse"==r?"vertical":8121991})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process_moz: ~`(function(r){return r="row"==r||"row-reverse"==r?"horizontal":"column"==r||"column-reverse"==r?"vertical":8121991})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process: ~`(function(n){return n=n||"row"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-box-direction: @process_oldestwebkit; + -moz-box-direction: @process_oldermoz; + -webkit-box-orient: @process_olderwebkit; + -moz-box-orient: @process_moz; + -webkit-flex-direction: @process; + -ms-flex-direction: @process; + flex-direction: @process; +} + +.lh-flex-grow(...) { + @process: ~`(function(n){return n=n||"0"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-flex-grow: @process; + flex-grow: @process; +} + +.lh-flex-shrink(...) { + @process: ~`(function(n){return n=n||"1"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-flex-shrink: @process; + flex-shrink: @process; +} + +.lh-flex-wrap(...) { + @process: ~`(function(n){return n=n||"nowrap"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-flex-wrap: @process; + -ms-flex-wrap: @process; + flex-wrap: @process; +} + +.lh-font-face(@fontname, @fontfile, @fontweight:normal, @fontstyle:normal) { + font-family: "@{fontname}"; + src: url("@{fontfile}.eot"); + src: url("@{fontfile}.eot?#iefix") format("embedded-opentype"), + url("@{fontfile}.woff") format("woff"), + url("@{fontfile}.ttf") format("truetype"), + url("@{fontfile}.svg#@{fontname}") format("svg"); + font-weight: @fontweight; + font-style: @fontstyle; +} + +.lh-grayscale(...) { + @process: ~`(function(n){n=n||"0";var r=/\d/gi,t=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return r.test(n)&&(n=n.replace(t,function(n){return 0==n&&n||n+"%"})),n})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-filter: grayscale(@process); + -moz-filter: grayscale(@process); + -ms-filter: grayscale(@process); + filter: grayscale(@process); +} + +.lh-hue-rotate(...) { + @process: ~`(function(e){e=e||"0";var n=/\d/gi,r=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return n.test(e)&&(e=e.replace(r,function(e){return 0==e&&e||e+"deg"})),e})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-filter: hue-rotate(@process); + -moz-filter: hue-rotate(@process); + -ms-filter: hue-rotate(@process); + filter: hue-rotate(@process); +} + +.lh-hyphens(...) { + @process: ~`(function(n){return n=n||"manual"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-hyphens: @process; + -moz-hyphens: @process; + -ms-hyphens: @process; + hyphens: @process; +} + +.lh-invert(...) { + @process: ~`(function(n){n=n||"100%";var r=/\d/gi,t=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return r.test(n)&&(n=n.replace(t,function(n){return 0==n&&n||n+"%"})),n})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-filter: invert(@process); + -moz-filter: invert(@process); + -ms-filter: invert(@process); + filter: invert(@process); +} + +.lh-justify-content(...) { + @process_oldestWebkit: ~`(function(e){return e=e||"start","flex-start"==e?e="start":"flex-end"==e?e="end":"space-between"!=e&&"space-around"!=e||(e="justify"),e})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process_moz: ~`(function(e){return e=e||"start","flex-start"==e?e="start":"flex-end"==e?e="end":"space-between"!=e&&"space-around"!=e||(e="justify"),e})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process_ms: ~`(function(t){return t=t||"start","flex-start"==t?t="start":"flex-end"==t?t="end":"space-between"==t?t="justify":"space-around"==t&&(t="distribute"),t})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process: ~`(function(t){return t=t||"flex-start"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-box-pack: @process_oldestWebkit; + -moz-box-pack: @process_moz; + -ms-flex-pack: @process_ms; + -webkit-justify-content: @process; + justify-content: @process; +} + +.lh-keyframes(...) { + @process: ~`(function(e){function a(a,r,k){var n="}\n",m=t.split(/(^[a-zA-Z0-9-]+),/g),o=r+" "+m[1]+"{",f=["-webkit-","-moz-","-ms-",""];k?s.forEach(function(a,r){e.indexOf(a)!==-1&&(m[2]=m[2].replace(new RegExp(a,"g"),function(e){return k+e}))}):m[2]=m[2].replace(/{([^}]+)}/g,function(e,a){var r=a.split(";");r.forEach(function(e,a){s.forEach(function(t){e.indexOf(t)!==-1&&(r[a]="",f.forEach(function(s){r[a]+=e.trim().replace(new RegExp(t,"g"),function(e){return s+e})+";"}))})});var t=r.join(";").replace(/;;/g,";");return e.replace(a,t)}),o+=m[2]+n,"start"==a?e="0; } \n"+o:"startend"==a?e="0; } \n"+o.replace(n,""):e+="end"==a?o.replace(n,""):o}e=e||8121991;var r="@{state}",t=e;if(8121991==e)return e;var s=["animation","transform","filter"];switch(r){case"1":a("start","@-webkit-keyframes","-webkit-"),a(null,"@-moz-keyframes","-moz-"),a(null,"@-o-keyframes","-o-"),a("end","@keyframes");break;case"2":a("start","@-webkit-keyframes","-webkit-"),a(null,"@-moz-keyframes","-moz-"),a("end","@keyframes");break;case"3":a("start","@-webkit-keyframes","-webkit-"),a(null,"@-moz-keyframes","-moz-"),a("end","@-o-keyframes","-o-");break;case"4":a("start","@-webkit-keyframes","-webkit-"),a(null,"@-o-keyframes","-o-"),a("end","@keyframes");break;case"5":a("start","@-webkit-keyframes","-webkit-"),a("end","@-moz-keyframes","-moz-");break;case"6":a("start","@-webkit-keyframes","-webkit-"),a("end","@-o-keyframes","-o-");break;case"7":a("start","@-webkit-keyframes","-webkit-"),a("end","@keyframes");break;case"8":a("startend","@-webkit-keyframes","-webkit-");break;case"9":a("start","@-moz-keyframes","-moz-"),a(null,"@-o-keyframes","-o-"),a("end","@keyframes");break;case"10":a("start","@-moz-keyframes","-moz-"),a("end","@-o-keyframes","-o-");break;case"11":a("start","@-moz-keyframes","-moz-"),a("end","@keyframes");break;case"12":a("startend","@-moz-keyframes","-moz-");break;case"13":a("start","@-o-keyframes","-o-"),a("end","@keyframes");break;case"14":a("startend","@-o-keyframes","-o-");break;case"15":a("startend","@keyframes")}return e+"}\n[not-existing] {\n zoom: 1"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @state: 1; lesshat-selector { -lh-property: @process; } + + + +} + +.lh-opacity(...) { + @process_ms: ~`(function(a){return a=a||"filter: alpha(opacity=100)","alpha(opacity="+Math.floor(100*a)+")"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process: ~`(function(n){return n=n||"1"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + zoom: 1; filter: @process_ms; + -webkit-opacity: @process; + -moz-opacity: @process; + opacity: @process; +} + +.lh-order(...) { + @process: ~`(function(n){return n=n||"0"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-box-ordinal-group: @process; + -moz-box-ordinal-group: @process; + -ms-flex-order: @process; + -webkit-order: @process; + order: @process; +} + +.lh-perspective(...) { + @process: ~`(function(n){n=n||"none";var e=/\d/gi,r=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return e.test(n)&&(n=n.replace(r,function(n){return 0==n&&n||n+"px"})),n})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-perspective: @process; + -moz-perspective: @process; + perspective: @process; +} + +.lh-perspective-origin(...) { + @process: ~`(function(e){e=e||"50% 50%";var t=/\d/gi,r=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return/^[^, ]*,/.test(e)&&(e=e.replace(/(?:,)(?![^(]*\))/g,"")),t.test(e)&&(e=e.replace(r,function(e){return 0==e&&e||e+"%"})),e})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-perspective-origin: @process; + -moz-perspective-origin: @process; + perspective-origin: @process; +} + +.lh-placeholder(@color:#aaa, @element: 08121991) { + .inception (@arguments) when not (@element = 08121991) { + @{element}::-webkit-input-placeholder { + color: @color; + } + @{element}:-moz-placeholder { + color: @color; + } + @{element}::-moz-placeholder { + color: @color; + } + @{element}:-ms-input-placeholder { + color: @color; + } + } + .inception (@arguments) when (@element = 08121991) { + &::-webkit-input-placeholder { + color: @color; + } + &:-moz-placeholder { + color: @color; + } + &::-moz-placeholder { + color: @color; + } + &:-ms-input-placeholder { + color: @color; + } + } + .inception(@arguments); +} + +.lh-rotate(...) { + @process: ~`(function(e){e=e||"0";var n=/\d/gi,r=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return n.test(e)&&(e=e.replace(r,function(e){return 0==e&&e||e+"deg"})),e})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-transform: rotate(@process); + -moz-transform: rotate(@process); + -ms-transform: rotate(@process); + -o-transform: rotate(@process); + transform: rotate(@process); +} + +.lh-rotate3d(...) { + @process: ~`(function(n){return n=n||"0, 0, 0, 0",n=n.replace(/,\s*\d+$/,function(n){return n+"deg"})})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-transform: rotate3d(@process); + -moz-transform: rotate3d(@process); + -ms-transform: rotate3d(@process); + -o-transform: rotate3d(@process); + transform: rotate3d(@process); +} + +.lh-rotateX(...) { + @process: ~`(function(e){e=e||"0";var n=/\d/gi,r=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return n.test(e)&&(e=e.replace(r,function(e){return 0==e&&e||e+"deg"})),e})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-transform: rotateX(@process); + -moz-transform: rotateX(@process); + -ms-transform: rotateX(@process); + -o-transform: rotateX(@process); + transform: rotateX(@process); +} + +.lh-rotateY(...) { + @process: ~`(function(e){e=e||"0";var n=/\d/gi,r=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return n.test(e)&&(e=e.replace(r,function(e){return 0==e&&e||e+"deg"})),e})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-transform: rotateY(@process); + -moz-transform: rotateY(@process); + -ms-transform: rotateY(@process); + -o-transform: rotateY(@process); + transform: rotateY(@process); +} + +.lh-rotateZ(...) { + @process: ~`(function(e){e=e||"0";var n=/\d/gi,r=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return n.test(e)&&(e=e.replace(r,function(e){return 0==e&&e||e+"deg"})),e})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-transform: rotateZ(@process); + -moz-transform: rotateZ(@process); + -ms-transform: rotateZ(@process); + -o-transform: rotateZ(@process); + transform: rotateZ(@process); +} + +.lh-saturate(...) { + @process: ~`(function(n){n=n||"100%";var r=/\d/gi,t=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return r.test(n)&&(n=n.replace(t,function(n){return 0==n&&n||n+"%"})),n})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-filter: ~"saturate(@{process})"; + -moz-filter: ~"saturate(@{process})"; + -ms-filter: ~"saturate(@{process})"; + filter: ~"saturate(@{process})"; +} + +.lh-scale(...) { + @process: ~`(function(n){return n=n||"1"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-transform: scale(@process); + -moz-transform: scale(@process); + -ms-transform: scale(@process); + -o-transform: scale(@process); + transform: scale(@process); +} + +.lh-scale3d(...) { + @process: ~`(function(n){return n=n||"1, 1, 1"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-transform: scale3d(@process); + -moz-transform: scale3d(@process); + -ms-transform: scale3d(@process); + -o-transform: scale3d(@process); + transform: scale3d(@process); +} + +.lh-scaleX(...) { + @process: ~`(function(n){return n=n||"1"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-transform: scaleX(@process); + -moz-transform: scaleX(@process); + -ms-transform: scaleX(@process); + -o-transform: scaleX(@process); + transform: scaleX(@process); +} + +.lh-scaleY(...) { + @process: ~`(function(n){return n=n||"1"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-transform: scaleY(@process); + -moz-transform: scaleY(@process); + -ms-transform: scaleY(@process); + -o-transform: scaleY(@process); + transform: scaleY(@process); +} + +.lh-scaleZ(...) { + @process: ~`(function(n){return n=n||"1"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-transform: scaleZ(@process); + -moz-transform: scaleZ(@process); + -ms-transform: scaleZ(@process); + -o-transform: scaleZ(@process); + transform: scaleZ(@process); +} + +.lh-selection(...) { + @process: ~`(function(e){function t(t,n){var r="}\n",s=a.split(","),c=(s[1]||"")+n+"{"+s[0]+r;"start"==t?e="0; } \n"+c:"startend"==t?e="0; } \n"+c.replace(r,""):e+="end"==t?c.replace(r,""):c}e=e||8121991;var n="@{state}",a=e;if(8121991==e)return e;switch(n){case"1":t("start","::selection"),t("end","::-moz-selection");break;case"2":t("startend","::selection");break;case"3":t("startend","::-moz-selection")}return e=e.replace(/;$/g,"")})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @state: 1; lesshat-selector { -lh-property: @process; } + +} + +.lh-sepia(...) { + @process: ~`(function(n){n=n||"100%";var r=/\d/gi,t=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return r.test(n)&&(n=n.replace(t,function(n){return 0==n&&n||n+"%"})),n})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-filter: sepia(@process); + -moz-filter: sepia(@process); + -ms-filter: sepia(@process); + filter: sepia(@process); +} + +.lh-size(@square) { + @unit: 'px'; + .process(@square) when (ispixel(@square)), (isem(@square)), (ispercentage(@square)), (iskeyword(@square)) { + width: @square; + height: @square; + } + + .process(@square) when not (ispixel(@square)) and not (isem(@square)) and not (ispercentage(@square)) and not (isstring(@square)) and not (iskeyword(@square)) { + width: ~`@{square} + @{unit}`; + height: ~`@{square} + @{unit}`; + } + + .process(@square); + +} + +.lh-size(@width, @height) { + @unit: 'px'; + .process(@width, @height) when (ispixel(@width)), (isem(@width)), (ispercentage(@width)), (iskeyword(@width)) { + .kittens(@height) when (ispixel(@height)), (isem(@height)), (ispercentage(@height)), (iskeyword(@height)) { + width: @width; + height: @height; + } + .kittens(@height) when not (ispixel(@height)) and not (isem(@height)) and not (ispercentage(@height)) and not (iskeyword(@height)) { + width: @width; + height: ~`@{height} + @{unit}`; + } + .kittens(@height); + } + + .process(@width, @height) when (ispixel(@height)), (isem(@height)), (ispercentage(@height)), (iskeyword(@height)) { + .kittens(@width) when (ispixel(@width)), (isem(@width)), (ispercentage(@width)), (iskeyword(@width)) {} + .kittens(@width) when not (ispixel(@width)) and not (isem(@width)) and not (ispercentage(@width)) and not (iskeyword(@width)) { + width: ~`@{width} + @{unit}`; + height: @height; + } + .kittens(@width); + } + + .process(@width, @height) when not (ispixel(@width)) and not (isem(@width)) and not (ispercentage(@width)) and not (iskeyword(@width)) and not (ispixel(@height)) and not (isem(@height)) and not (ispercentage(@height)) and not (iskeyword(@height)) { + width: ~`@{width} + @{unit}`; + height: ~`@{height} + @{unit}`; + } + + .process(@width, @height); + +} + +.lh-skew(...) { + @process: ~`(function(e){e=e||"0";var n=/\d/gi,r=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return n.test(e)&&(e=e.replace(r,function(e){return 0==e&&e||e+"deg"})),e})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-transform: skew(@process); + -moz-transform: skew(@process); + -ms-transform: skew(@process); + -o-transform: skew(@process); + transform: skew(@process); +} + +.lh-skewX(...) { + @process: ~`(function(e){e=e||"0";var n=/\d/gi,r=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return n.test(e)&&(e=e.replace(r,function(e){return 0==e&&e||e+"deg"})),e})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-transform: skewX(@process); + -moz-transform: skewX(@process); + -ms-transform: skewX(@process); + -o-transform: skewX(@process); + transform: skewX(@process); +} + +.lh-skewY(...) { + @process: ~`(function(e){e=e||"0";var n=/\d/gi,r=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return n.test(e)&&(e=e.replace(r,function(e){return 0==e&&e||e+"deg"})),e})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-transform: skewY(@process); + -moz-transform: skewY(@process); + -ms-transform: skewY(@process); + -o-transform: skewY(@process); + transform: skewY(@process); +} + +.lh-transform(...) { + @process: ~`(function(e){e=e||"none";var r={translate:"px",rotate:"deg",rotate3d:"deg",skew:"deg"};/^\w*\(?[a-z0-9.]*\)?/.test(e)&&(e=e.replace(/(?:,)(?![^(]*\))/g,""));for(var t in r)e.indexOf(t)>=0&&(e=e.replace(new RegExp(t+"[\\w]?\\([a-z0-9, %]*\\)"),function(e){var n=/(\d+\.?\d*)(?!\w|%)/g;return"rotate3d"==t&&(n=/,\s*\d+$/),e.replace(n,function(e){return e+r[t]})}));return e})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-transform: @process; + -moz-transform: @process; + -ms-transform: @process; + -o-transform: @process; + transform: @process; +} + +.lh-transform-origin(...) { + @process: ~`(function(e){e=e||"50% 50% 0";var t=/\d/gi,r=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return/^[^, ]*,/.test(e)&&(e=e.replace(/(?:,)(?![^(]*\))/g,"")),t.test(e)&&(e=e.replace(r,function(e){return 0==e&&e||e+"%"})),e})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-transform-origin: @process; + -moz-transform-origin: @process; + -ms-transform-origin: @process; + -o-transform-origin: @process; + transform-origin: @process; +} + +.lh-transform-style(...) { + @process: ~`(function(n){return n=n||"flat"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-transform-style: @process; + -moz-transform-style: @process; + -ms-transform-style: @process; + -o-transform-style: @process; + transform-style: @process; +} + +.lh-transition(...) { + @process_webkit: ~`(function(r){r=r||"all 0 ease 0";var e=["background-size","border-radius","border-bottom-left-radius","border-bottom-right-radius","border-top-left-radius","border-top-right-radius","box-shadow","column","transform","filter"],t="-webkit-",o=/(?:\d)(?:ms|s)/gi,a=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%)/gi;return/^[^, ]*,/.test(r)&&(r=r.replace(/(?:,)(?![^(]*\))/g,"")),e.forEach(function(e,o){r.indexOf(e)!==-1&&(r=r.replace(new RegExp(e,"g"),function(r){return t+r}))}),o.test(r)||"0"===r||(r=r.replace(a,function(r){return r+=parseFloat(r,10)>10?"ms":"s"})),r})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process_moz: ~`(function(e){e=e||"all 0 ease 0";var n=["background-size","box-shadow","column","transform","filter"],r="-moz-",t=/(?:\d)(?:ms|s)/gi,a=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%)/gi;return/^[^, ]*,/.test(e)&&(e=e.replace(/(?:,)(?![^(]*\))/g,"")),n.forEach(function(n,t){e.indexOf(n)!==-1&&(e=e.replace(new RegExp(n,"g"),function(e){return r+e}))}),t.test(e)||"0"===e||(e=e.replace(a,function(e){return e+=parseFloat(e,10)>10?"ms":"s"})),e})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process_opera: ~`(function(e){e=e||"all 0 ease 0";var n=["transform"],r="-o-",t=/(?:\d)(?:ms|s)/gi,a=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%)/gi;return/^[^, ]*,/.test(e)&&(e=e.replace(/(?:,)(?![^(]*\))/g,"")),n.forEach(function(n,t){e.indexOf(n)!==-1&&(e=e.replace(new RegExp(n,"g"),function(e){return r+e}))}),t.test(e)||"0"===e||(e=e.replace(a,function(e){return e+=parseFloat(e,10)>10?"ms":"s"})),e})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process: ~`(function(n){n=n||"all 0 ease 0";var e=["-webkit-","-moz-","-o-",""],t=["column","transform","filter"],r=/(?:\d)(?:ms|s)/gi,o=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%)/gi;/^[^, ]*,/.test(n)&&(n=n.replace(/(?:,)(?![^(]*\))/g,""));var i=n.split(/(?:,)(?![^(]*\))/g);return i.forEach(function(n,r){t.forEach(function(t){n.indexOf(t)!==-1&&(i[r]="",e.forEach(function(o,a){i[r]+=n.trim().replace(new RegExp(t,"g"),function(n){return o+n}),a<e.length-1&&(i[r]+=",")}))})}),n=i.join(","),r.test(n)||"0"===n||(n=n.replace(o,function(n){return n+=parseFloat(n,10)>10?"ms":"s"})),n})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-transition: @process_webkit; + -moz-transition: @process_moz; + -o-transition: @process_opera; + transition: @process; +} + +.lh-transition-delay(...) { + @process: ~`(function(r){r=r||"0";var s=/(?:\d)(?:ms|s)/gi,t=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return s.test(r)||"0"===r||(r=r.replace(t,function(r){return r+=parseFloat(r,10)>10?"ms":"s"})),r})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-transition-delay: @process; + -moz-transition-delay: @process; + -o-transition-delay: @process; + transition-delay: @process; +} + +.lh-transition-duration(...) { + @process: ~`(function(r){r=r||"0";var s=/ms|s/gi,t=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return s.test(r)||"0"===r||(r=r.replace(t,function(r){return r+=parseFloat(r,10)>10?"ms":"s"})),r})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-transition-duration: @process; + -moz-transition-duration: @process; + -o-transition-duration: @process; + transition-duration: @process; +} + +.lh-transition-property(...) { + @process_webkit: ~`(function(r){r=r||"all";var o=["background-size","border-radius","border-bottom-left-radius","border-bottom-right-radius","border-top-left-radius","border-top-right-radius","box-shadow","column","transform","filter"],t="-webkit-";return o.forEach(function(o,e){r.indexOf(o)!==-1&&(r=r.replace(new RegExp(o,"g"),function(r){return t+r}))}),r})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process_moz: ~`(function(n){n=n||"all";var r=["background-size","box-shadow","column","transform","filter"],o="-moz-";return r.forEach(function(r,e){n.indexOf(r)!==-1&&(n=n.replace(new RegExp(r,"g"),function(n){return o+n}))}),n})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process_opera: ~`(function(n){n=n||"all";var r=["transform"],e="-o-";return r.forEach(function(r,f){n.indexOf(r)!==-1&&(n=n.replace(new RegExp(r,"g"),function(n){return e+n}))}),n})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process: ~`(function(n){n=n||"all";var o=["-webkit-","-moz-","-o-",""],r=["column","transform","filter"],t=n.split(/(?:,)(?![^(]*\))/g);return t.forEach(function(n,f){r.forEach(function(r){n.indexOf(r)!==-1&&(t[f]="",o.forEach(function(i,c){t[f]+=n.trim().replace(new RegExp(r,"g"),function(n){return i+n}),c<o.length-1&&(t[f]+=",")}))})}),n=t.join(",")})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-transition-property: @process_webkit; + -moz-transition-property: @process_moz; + -o-transition-property: @process_opera; + transition-property: @process; +} + +.lh-transition-timing-function(...) { + @process: ~`(function(e){return e=e||"ease"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-transition-timing-function: @process; + -moz-transition-timing-function: @process; + -o-transition-timing-function: @process; + transition-timing-function: @process; +} + +.lh-translate(...) { + @process: ~`(function(n){n=n||"0";var r=/\d/gi,t=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return r.test(n)&&(n=n.replace(t,function(n){return 0==n&&n||n+"px"})),n})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-transform: translate(@process); + -moz-transform: translate(@process); + -ms-transform: translate(@process); + -o-transform: translate(@process); + transform: translate(@process); +} + +.lh-translate3d(...) { + @process: ~`(function(n){n=n||"0, 0, 0";var r=/\d/gi,t=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return r.test(n)&&(n=n.replace(t,function(n){return 0==n&&n||n+"px"})),n})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-transform: translate3d(@process); + -moz-transform: translate3d(@process); + -ms-transform: translate3d(@process); + -o-transform: translate3d(@process); + transform: translate3d(@process); +} + +.lh-translateX(...) { + @process: ~`(function(n){n=n||"0";var r=/\d/gi,t=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return r.test(n)&&(n=n.replace(t,function(n){return 0==n&&n||n+"px"})),n})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-transform: translateX(@process); + -moz-transform: translateX(@process); + -ms-transform: translateX(@process); + -o-transform: translateX(@process); + transform: translateX(@process); +} + +.lh-translateY(...) { + @process: ~`(function(n){n=n||"0";var r=/\d/gi,t=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return r.test(n)&&(n=n.replace(t,function(n){return 0==n&&n||n+"px"})),n})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-transform: translateY(@process); + -moz-transform: translateY(@process); + -ms-transform: translateY(@process); + -o-transform: translateY(@process); + transform: translateY(@process); +} + +.lh-translateZ(...) { + @process: ~`(function(n){n=n||"0";var r=/\d/gi,t=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return r.test(n)&&(n=n.replace(t,function(n){return 0==n&&n||n+"px"})),n})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-transform: translateZ(@process); + -moz-transform: translateZ(@process); + -ms-transform: translateZ(@process); + -o-transform: translateZ(@process); + transform: translateZ(@process); +} + +.lh-user-select(...) { + @process: ~`(function(n){return n=n||"auto"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-user-select: @process; + -moz-user-select: @process; + -ms-user-select: @process; + user-select: @process; +} + + diff --git a/src/static/css/lesshat.less b/src/static/css/lesshat.less new file mode 100644 index 0000000..fcfd5a7 --- /dev/null +++ b/src/static/css/lesshat.less @@ -0,0 +1,886 @@ +// lesshat - The best mixin library in the world +// +// version: v4.1.0 (2016-07-19) + +// TABLE OF MIXINS: + // align-content + // align-items + // align-self + // animation + // animation-delay + // animation-direction + // animation-duration + // animation-fill-mode + // animation-iteration-count + // animation-name + // animation-play-state + // animation-timing-function + // appearance + // backface-visibility + // background-clip + // background-image + // background-origin + // background-size + // blur + // border-bottom-left-radius + // border-bottom-right-radius + // border-image + // border-radius + // border-top-left-radius + // border-top-right-radius + // box-shadow + // box-sizing + // brightness + // calc + // column-count + // column-gap + // column-rule + // column-width + // columns + // contrast + // display + // drop-shadow + // filter + // flex + // flex-basis + // flex-direction + // flex-grow + // flex-shrink + // flex-wrap + // font-face + // grayscale + // hue-rotate + // hyphens + // invert + // justify-content + // keyframes + // opacity + // order + // perspective + // perspective-origin + // placeholder + // rotate + // rotate3d + // rotateX + // rotateY + // rotateZ + // saturate + // scale + // scale3d + // scaleX + // scaleY + // scaleZ + // selection + // sepia + // size + // skew + // skewX + // skewY + // transform + // transform-origin + // transform-style + // transition + // transition-delay + // transition-duration + // transition-property + // transition-timing-function + // translate + // translate3d + // translateX + // translateY + // translateZ + // user-select + +.align-content(...) { + @process: ~`(function(t){return t=t||"stretch"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process_ms: ~`(function(e){return e=e||"stretch","flex-start"==e?e="start":"flex-end"==e?e="end":"space-between"==e?e="justify":"space-around"==e&&(e="distribute"),e})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-align-content: @process; + -ms-flex-line-pack: @process_ms; + align-content: @process; +} + +.align-items(...) { + @process_olderwebkit: ~`(function(t){return t=t||"stretch","flex-start"==t?t="start":"flex-end"==t&&(t="end"),t})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process_moz: ~`(function(t){return t=t||"stretch","flex-start"==t?t="start":"flex-end"==t&&(t="end"),t})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process: ~`(function(t){return t=t||"stretch"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process_ms: ~`(function(t){return t=t||"stretch","flex-start"==t?t="start":"flex-end"==t&&(t="end"),t})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-box-align: @process_olderwebkit; + -moz-box-align: @process_moz; + -webkit-align-items: @process; + -ms-flex-align: @process_ms; + align-items: @process; +} + +.align-self(...) { + @process: ~`(function(n){return n=n||"auto"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process_ms: ~`(function(t){return t=t||"auto","flex-start"==t?t="start":"flex-end"==t&&(t="end"),t})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-align-self: @process; + -ms-flex-item-align: @process_ms; + align-self: @process; +} + +.animation(...) { + @process: ~`(function(e){return e=e||"none",/^[^, ]*,/.test(e)&&(e=e.replace(/(?:,)(?![^(]*\))/g,"")),e})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-animation: @process; + -moz-animation: @process; + -o-animation: @process; + animation: @process; +} + +.animation-delay(...) { + @process: ~`(function(r){r=r||"0";var s=/(?:\d)(?:ms|s)/gi,t=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return s.test(r)||"0"===r||(r=r.replace(t,function(r){return r+=parseFloat(r,10)>10?"ms":"s"})),r})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-animation-delay: @process; + -moz-animation-delay: @process; + -o-animation-delay: @process; + animation-delay: @process; +} + +.animation-direction(...) { + @process: ~`(function(n){return n||"normal"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-animation-direction: @process; + -moz-animation-direction: @process; + -o-animation-direction: @process; + animation-direction: @process; +} + +.animation-duration(...) { + @process: ~`(function(r){r=r||"0";var s=/ms|s/gi,t=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return s.test(r)||"0"===r||(r=r.replace(t,function(r){return r+=parseFloat(r,10)>10?"ms":"s"})),r})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-animation-duration: @process; + -moz-animation-duration: @process; + -o-animation-duration: @process; + animation-duration: @process; +} + +.animation-fill-mode(...) { + @process: ~`(function(n){return n||"none"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-animation-fill-mode: @process; + -moz-animation-fill-mode: @process; + -o-animation-fill-mode: @process; + animation-fill-mode: @process; +} + +.animation-iteration-count(...) { + @process: ~`(function(n){return n||"0"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-animation-iteration-count: @process; + -moz-animation-iteration-count: @process; + -o-animation-iteration-count: @process; + animation-iteration-count: @process; +} + +.animation-name(...) { + @process: ~`(function(n){return n||"none"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-animation-name: @process; + -moz-animation-name: @process; + -o-animation-name: @process; + animation-name: @process; +} + +.animation-play-state(...) { + @process: ~`(function(n){return n||"running"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-animation-play-state: @process; + -moz-animation-play-state: @process; + -o-animation-play-state: @process; + animation-play-state: @process; +} + +.animation-timing-function(...) { + @process: ~`(function(e){return e||"ease"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-animation-timing-function: @process; + -moz-animation-timing-function: @process; + -o-animation-timing-function: @process; + animation-timing-function: @process; +} + +.appearance(...) { + @process: ~`(function(n){return n||"none"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-appearance: @process; + -moz-appearance: @process; + appearance: @process; +} + +.backface-visibility(...) { + @process: ~`(function(i){return i||"visible"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-backface-visibility: @process; + -moz-backface-visibility: @process; + -ms-backface-visibility: @process; + -o-backface-visibility: @process; + backface-visibility: @process; +} + +.background-clip(...) { + @process: ~`(function(r){return r||"border-box"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-background-clip: @process; + -moz-background-clip: @process; + background-clip: @process; +} + +.background-image(...) { + @process_ms: ~`(function(t){function e(t){var e,r,s,a,n,i,o,c,g="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",d=0,l=0,f="",h=[];if(!t)return t;do e=t.charCodeAt(d++),r=t.charCodeAt(d++),s=t.charCodeAt(d++),c=e<<16|r<<8|s,a=c>>18&63,n=c>>12&63,i=c>>6&63,o=63&c,h[l++]=g.charAt(a)+g.charAt(n)+g.charAt(i)+g.charAt(o);while(d<t.length);f=h.join("");var u=t.length%3;return(u?f.slice(0,u-3):f)+"===".slice(u||3)}if(t=t||8121991,8121991==t)return t;var r=/linear|radial/g.test(t)&&t.split(/,(?=\s*(?:linear|radial|url))/g),s=[],a={"to bottom":'x1="0%" y1="0%" x2="0%" y2="100%"',"to left":'x1="100%" y1="0%" x2="0%" y2="0%"',"to top":'x1="0%" y1="100%" x2="0%" y2="0%"',"to right":'x1="0%" y1="0%" x2="100%" y2="0%"',get"top"(){return this["to bottom"]},get"180deg"(){return this["to bottom"]},get"right"(){return this["to left"]},get"270deg"(){return this["to left"]},get"bottom"(){return this["to top"]},get"90deg"(){return this["to right"]},get"0deg"(){return this["to top"]},get"left"(){return this["to right"]},"-45deg":'x1="0%" y1="0%" x2="100%" y2="100%"',"45deg":'x1="0%" y1="100%" x2="100%" y2="0%"',"ellipse at center":'cx="50%" cy="50%" r="75%"',get"135deg"(){return this["-45deg"]}},n={uri_data:"url(data:image/svg+xml;base64,",xml:'<?xml version="1.0" ?>',svg_start:'<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 1 1" preserveAspectRatio="none">',linear_gradient_start:'<linearGradient id="lesshat-generated" gradientUnits="userSpaceOnUse"',radial_gradient_start:'<radialGradient id="lesshat-generated" gradientUnits="userSpaceOnUse"',linear_gradient_end:"</linearGradient>",radial_gradient_end:"</radialGradient>",rect_linear:'<rect x="0" y="0" width="1" height="1" fill="url(#lesshat-generated)" />',rect_radial:'<rect x="-50" y="-50" width="101" height="101" fill="url(#lesshat-generated)" />',svg_end:"</svg>"};if(r.length){r.forEach(function(t,e){var r={};if(Object.keys(a).some(function(e){return t.indexOf(e)>=0?(r.svg_direction=a[e],!0):void(r.svg_direction=!1)}),/linear/.test(t))r.svg_type="linear";else if(/radial/.test(t))r.svg_type="radial";else if(!/linear/.test(t)&&!/radial/.test(t))return r.url=t.trim(),r.svg_type="url",r.svg_direction=!0,s.push(r),!1;var n=t.match(/rgb|#[a-zA-Z0-9]|hsl/g).length;r.svg_stops=[],t=t.replace(/transparent/g,"rgba(0,0,0,0)"),t.match(/#[a-zA-Z0-9]/g)&&t.match(/(#[a-zA-Z0-9]+)\s*(\d+%)?/g).forEach(function(t){t=t.split(" "),r.svg_stops.push('<stop offset="'+(t[1]||!1)+'" stop-color="'+t[0]+'" stop-opacity="1"/>')}),t.match(/rgba?\(\d+,\s*\d+,\s*\d+(?:,\s*(0|1|\.\d+|0\.\d+))?\)/g)&&t.replace(/rgba?\((\d+,\s*\d+,\s*\d+)(?:,\s*(0|1|\.\d+|0\.\d+))?\)\s*(\d+%)?/g,function(t,e,s,a){r.svg_stops.push('<stop offset="'+(a||!1)+'" stop-color="rgb('+e+')" stop-opacity="'+(s||1)+'"/>')}),t.match(/hsla?\((\d+,\s*\d+%,\s*\d+%),\s*(0|1|\.\d+|0\.\d+)\)/g)&&t.replace(/hsla?\((\d+,\s*\d+%,\s*\d+%),\s*(0|1|\.\d+|0\.\d+)\)\s*(\d+%)?/g,function(t,e,s,a){r.svg_stops.push('<stop offset="'+(a||!1)+'" stop-color="hsl('+e+')" stop-opacity="'+(s||1)+'"/>')});var i=Math.floor(100/(n-1));r.svg_stops.forEach(function(t,e){/offset="false"/.test(t)&&(r.svg_stops[e]=t.replace(/offset="false"/,'offset="'+i*e+'%"'))}),r.svg_stops.sort(function(t,e){if(t=t.match(/offset="(\d+)%"/),e=e.match(/offset="(\d+)%"/),2==t.length&&2==e.length)return t[1]-e[1]}),s.push(r)});var i=[],o=s.every(function(t){for(var e in t)if(0==t[e]||0==t[e].length)return!1;return!0});if(!o)return 8121991;s.forEach(function(t,e){"linear"!=t.svg_type&&"radial"!=t.svg_type||(i[e]=n.xml+n.svg_start),"linear"==t.svg_type?(i[e]+=n.linear_gradient_start+" "+t.svg_direction+">",t.svg_stops.forEach(function(t){i[e]+=t}),i[e]+=n.linear_gradient_end,i[e]+=n.rect_linear,i[e]+=n.svg_end):"radial"==t.svg_type?(i[e]+=n.radial_gradient_start+" "+t.svg_direction+">",t.svg_stops.forEach(function(t){i[e]+=t}),i[e]+=n.radial_gradient_end,i[e]+=n.rect_radial,i[e]+=n.svg_end):"url"==t.svg_type&&(i[e]=t.url)}),i.forEach(function(t,r){/<\?xml version="1.0" \?>/g.test(t)&&(i[r]=n.uri_data+e(t)+")")}),t=i.join(",")}return t})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process_webkit: ~`(function(e){if(e=e||8121991,8121991==e)return e;var r={"to bottom":"top","to left":"right","to top":"bottom","to right":"left","ellipse at center":"center, ellipse cover","circle closest-side":"center center, circle contain","circle farthest-corner":"center center, circle cover","circle farthest-side":"center center, circle cover","ellipse closest-side":"center center, ellipse contain","ellipse farthest-corner":"center center, ellipse cover","ellipse farthest-side":"center center, ellipse cover"},t=/(radial-gradient\()([a-z- ]+)at\s+(\w+%?)\s*(\w*%?)/g,c=Object.keys(r);return c.some(function(c){return e.indexOf(c)>=0?(e=e.replace(new RegExp(c+"(?![ a-z0-9])","g"),r[c]),!0):void(t.test(e)&&(e=e.replace(t,function(e,r,t,c,i){return r.trim()+c.trim()+" "+i.trim()+","+t.replace(/closest-side/g,"contain").replace(/farthest-corner/g,"cover").trim()})))}),e=e.replace(/(\d+)\s*deg/g,function(e,r){return 90-r+"deg"}).replace(/(linear|radial)-gradient/g,"-webkit-$1-gradient")})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process_moz: ~`(function(e){if(e=e||8121991,8121991==e)return e;var r={"to bottom":"top","to left":"right","to top":"bottom","to right":"left","ellipse at center":"center, ellipse cover","circle closest-side":"center center, circle contain","circle farthest-corner":"center center, circle cover","circle farthest-side":"center center, circle cover","ellipse closest-side":"center center, ellipse contain","ellipse farthest-corner":"center center, ellipse cover","ellipse farthest-side":"center center, ellipse cover"},t=/(radial-gradient\()([a-z- ]+)at\s+(\w+%?)\s*(\w*%?)/g,c=Object.keys(r);return c.some(function(c){return e.indexOf(c)>=0?(e=e.replace(new RegExp(c+"(?![ a-z0-9])","g"),r[c]),!0):void(t.test(e)&&(e=e.replace(t,function(e,r,t,c,n){return r.trim()+c.trim()+" "+n.trim()+","+t.replace(/closest-side/g,"contain").replace(/farthest-corner/g,"cover").trim()})))}),e=e.replace(/(\d+)\s*deg/g,function(e,r){return 90-r+"deg"}).replace(/(linear|radial)-gradient/g,"-moz-$1-gradient")})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process_opera: ~`(function(e){if(e=e||8121991,8121991==e)return e;var r={"to bottom":"top","to left":"right","to top":"bottom","to right":"left","ellipse at center":"center, ellipse cover","circle closest-side":"center center, circle contain","circle farthest-corner":"center center, circle cover","circle farthest-side":"center center, circle cover","ellipse closest-side":"center center, ellipse contain","ellipse farthest-corner":"center center, ellipse cover","ellipse farthest-side":"center center, ellipse cover"},t=/(radial-gradient\()([a-z- ]+)at\s+(\w+%?)\s*(\w*%?)/g,c=Object.keys(r);return c.some(function(c){return e.indexOf(c)>=0?(e=e.replace(new RegExp(c+"(?![ a-z0-9])","g"),r[c]),!0):void(t.test(e)&&(e=e.replace(t,function(e,r,t,c,n){return r.trim()+c.trim()+" "+n.trim()+","+t.replace(/closest-side/g,"contain").replace(/farthest-corner/g,"cover").trim()})))}),e=e.replace(/(\d+)\s*deg/g,function(e,r){return 90-r+"deg"}).replace(/(linear|radial)-gradient/g,"-o-$1-gradient")})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process: ~`(function(t){if(t=t||8121991,8121991==t)return t;var e={top:"to bottom",right:"to left",bottom:"to top",left:"to right"},o=Object.keys(e);return o.some(function(o){if(t.indexOf(o)>=0&&!new RegExp("to\\s+"+o+"|at\\s+"+o,"g").test(t))return t=t.replace(new RegExp(o),e[o]),!0}),t})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + background-image: @process_ms; + background-image: @process_webkit; + background-image: @process_moz; + background-image: @process_opera; + background-image: @process; +} + +.background-origin(...) { + @process: ~`(function(n){return n||"padding-box"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-background-origin: @process; + -moz-background-origin: @process; + background-origin: @process; +} + +.background-size(...) { + @process: ~`(function(t){t=t||"auto auto";var e=/\d/gi,r=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return/^[^, ]*,/.test(t)&&(t=t.replace(/(?:,)(?![^(]*\))/g,"")),e.test(t)&&(t=t.replace(r,function(t){return 0==t&&t||t+"px"})),t})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-background-size: @process; + -moz-background-size: @process; + background-size: @process; +} + +.blur(...) { + @process: ~`(function(n){n=n||"0";var r=/\d/gi,t=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return r.test(n)&&(n=n.replace(t,function(n){return 0==n&&n||n+"px"})),n})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-filter: blur(@process); + -moz-filter: blur(@process); + -ms-filter: blur(@process); + filter: blur(@process); +} + +.border-bottom-left-radius(...) { + @process: ~`(function(e){e=e||"0";var t=/\d/gi,r=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return/^[^, ]*,/.test(e)&&(e=e.replace(/(?:,)(?![^(]*\))/g,"")),t.test(e)&&(e=e.replace(r,function(e){return 0==e&&e||e+"px"})),e})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-border-bottom-left-radius: @process; -webkit-background-clip: padding-box; + -moz-border-radius-bottomleft: @process; -moz-background-clip: padding; + border-bottom-left-radius: @process; background-clip: padding-box; +} + +.border-bottom-right-radius(...) { + @process: ~`(function(e){e=e||"0";var t=/\d/gi,r=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return/^[^, ]*,/.test(e)&&(e=e.replace(/(?:,)(?![^(]*\))/g,"")),t.test(e)&&(e=e.replace(r,function(e){return 0==e&&e||e+"px"})),e})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-border-bottom-right-radius: @process; -webkit-background-clip: padding-box; + -moz-border-radius-bottomright: @process; -moz-background-clip: padding; + border-bottom-right-radius: @process; background-clip: padding-box; +} + +.border-image(...) { + @process: ~`(function(e){return e=e||8121991,/^[^, ]*,/.test(e)&&(e=e.replace(/(?:,)(?![^(]*\))/g,"")),e})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-border-image: @process; + -moz-border-image: @process; + -o-border-image: @process; + border-image: @process; +} + +.border-radius(...) { + @process: ~`(function(e){e=e||"0";var t=/\d/gi,r=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return/^[^, ]*,/.test(e)&&(e=e.replace(/(?:,)(?![^(]*\))/g,"")),t.test(e)&&(e=e.replace(r,function(e){return 0==e&&e||e+"px"})),e})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-border-radius: @process; -webkit-background-clip: padding-box; + -moz-border-radius: @process; -moz-background-clip: padding; + border-radius: @process; background-clip: padding-box; +} + +.border-top-left-radius(...) { + @process: ~`(function(e){e=e||"0";var t=/\d/gi,r=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return/^[^, ]*,/.test(e)&&(e=e.replace(/(?:,)(?![^(]*\))/g,"")),t.test(e)&&(e=e.replace(r,function(e){return 0==e&&e||e+"px"})),e})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-border-top-left-radius: @process; -webkit-background-clip: padding-box; + -moz-border-radius-topleft: @process; -moz-background-clip: padding; + border-top-left-radius: @process; background-clip: padding-box; +} + +.border-top-right-radius(...) { + @process: ~`(function(e){e=e||"0";var t=/\d/gi,r=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return/^[^, ]*,/.test(e)&&(e=e.replace(/(?:,)(?![^(]*\))/g,"")),t.test(e)&&(e=e.replace(r,function(e){return 0==e&&e||e+"px"})),e})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-border-top-right-radius: @process; -webkit-background-clip: padding-box; + -moz-border-radius-topright: @process; -moz-background-clip: padding; + border-top-right-radius: @process; background-clip: padding-box; +} + +.box-shadow(...) { + @process: ~`(function(e){e=e||"0";var t=/\d/gi,r=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return/^[^, ]*,/.test(e)&&(e=e.replace(/(?:,)(?![^(]*\))/g,"")),t.test(e)&&(e=e.replace(r,function(e){return 0==e&&e||e+"px"})),e})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-box-shadow: @process; + -moz-box-shadow: @process; + box-shadow: @process; +} + +.box-sizing(...) { + @process: ~`(function(n){return n=n||"content-box"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-box-sizing: @process; + -moz-box-sizing: @process; + box-sizing: @process; +} + +.brightness(...) { + @process: ~`(function(n){return n=n||"1"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-filter: brightness(@process); + -moz-filter: brightness(@process); + -ms-filter: brightness(@process); + filter: brightness(@process); +} + +.calc(...) { + @process: ~`(function(a){function c(c,t){var r=");\n",s=e.split(","),l=s[0]+":"+c+"("+(s[1].trim()||0)+r;"start"==t?a="0;\n"+l:a+=l}a=a||8121991;var t="@{state}",e=a;if(8121991==a)return a;switch(t){case"1":c("-webkit-calc","start"),c("-moz-calc"),c("calc");break;case"2":c("-webkit-calc","start"),c("-moz-calc");break;case"3":c("-webkit-calc","start"),c("calc");break;case"4":c("-webkit-calc","start");break;case"5":c("-moz-calc","start"),c("calc");break;case"6":c("-moz-calc","start");break;case"7":c("calc","start")}return a=a.replace(/;$/g,"")})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @state: 1; -lh-property: @process; + +} + +.column-count(...) { + @process: ~`(function(n){return n=n||"auto"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-column-count: @process; + -moz-column-count: @process; + column-count: @process; +} + +.column-gap(...) { + @process: ~`(function(n){n=n||"normal";var r=/\d/gi,t=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return r.test(n)&&(n=n.replace(t,function(n){return 0==n&&n||n+"px"})),n})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-column-gap: @process; + -moz-column-gap: @process; + column-gap: @process; +} + +.column-rule(...) { + @process: ~`(function(e){e=e||"medium none black";var n=/\d/gi,t=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return/^[^, ]*,/.test(e)&&(e=e.replace(/(?:,)(?![^(]*\))/g,"")),n.test(e)&&(e=e.replace(t,function(e){return 0==e&&e||e+"px"})),e})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-column-rule: @process; + -moz-column-rule: @process; + column-rule: @process; +} + +.column-width(...) { + @process: ~`(function(t){t=t||"auto";var n=/\d/gi,r=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return n.test(t)&&(t=t.replace(r,function(t){return 0==t&&t||t+"px"})),t})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-column-width: @process; + -moz-column-width: @process; + column-width: @process; +} + +.columns(...) { + @process: ~`(function(t){t=t||"auto auto";var e=/^\d+$/;return/^[^, ]*,/.test(t)&&(t=t.replace(/(?:,)(?![^(]*\))/g,""),t=t.split(" ")),e.test(t[0])&&(t[0]=t[0]+"px"),t.join(" ")})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-columns: @process; + -moz-columns: @process; + columns: @process; +} + +.contrast(...) { + @process: ~`(function(n){n=n||"100%";var r=/\d/gi,t=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return r.test(n)&&(n=n.replace(t,function(n){return 0==n&&n||n+"%"})),n})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-filter: ~"contrast(@{process})"; + -moz-filter: ~"contrast(@{process})"; + -ms-filter: ~"contrast(@{process})"; + filter: ~"contrast(@{process})"; +} + +.display(...) { + @process_oldwebkit: ~`(function(e){return e="flex"==e||"inline-flex"==e?"-webkit-box":8121991})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process_moz: ~`(function(n){return n="flex"==n||"inline-flex"==n?"-moz-box":8121991})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process_webkit: ~`(function(e){return e="flex"==e||"inline-flex"==e?"-webkit-"+e:8121991})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process_ms: ~`(function(e){return e="flex"==e?"-ms-flexbox":"inline-flex"==e?"-ms-inline-flexbox":8121991})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process: ~`(function(n){return"flex"!=n&&"inline-flex"!=n&&(n=8121991),n})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + display: @process_oldwebkit; + display: @process_moz; + display: @process_webkit; + display: @process_ms; + display: @process; +} + +.drop-shadow(...) { + @process: ~`(function(e){if(e=e||8121991,8121991==e)return e;var r=/\d/gi,t=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return/^[^, ]*,/.test(e)&&(e=e.replace(/(?:,)(?![^(]*\))/g,"")),r.test(e)&&(e=e.replace(t,function(e){return 0==e&&e||e+"px"})),e})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-filter: drop-shadow(@process); + -moz-filter: drop-shadow(@process); + -ms-filter: drop-shadow(@process); + filter: drop-shadow(@process); +} + +.filter(...) { + @process: ~`(function(e){return e=e||"none",/^[^, ]*,/.test(e)&&(e=e.replace(/(?:,)(?![^(]*\))/g,"")),e})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-filter: @process; + -moz-filter: @process; + -ms-filter: @process; + filter: @process; +} + +.flex(...) { + @process_olderwebkit: ~`(function(t){return/^\d+/.test(t)?t=t.match(/^\d+/)[0]:""==t&&(t="0"),t})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process_moz: ~`(function(t){return/^\d+/.test(t)?t=t.match(/^\d+/)[0]:""==t&&(t="0"),t})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process: ~`(function(t){return t=t||"0 1 auto",/^[^, ]*,/.test(t)&&(t=t.replace(/(?:,)(?![^(]*\))/g,"")),t})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-box-flex: @process_olderwebkit; + -moz-box-flex: @process_moz; + -webkit-flex: @process; + -ms-flex: @process; + flex: @process; +} + +.flex-basis(...) { + @process: ~`(function(t){t=t||"auto";var n=/\d/gi,r=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return n.test(t)&&(t=t.replace(r,function(t){return 0==t&&t||t+"px"})),t})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-flex-basis: @process; + flex-basis: @process; +} + +.flex-direction(...) { + @process_oldestwebkit: ~`(function(r){return r="row"==r||"column"==r?"normal":"row-reverse"==r||"column-reverse"==r?"reverse":8121991})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process_oldermoz: ~`(function(r){return r="row"==r||"column"==r?"normal":"row-reverse"==r||"column-reverse"==r?"reverse":8121991})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process_olderwebkit: ~`(function(r){return r="row"==r||"row-reverse"==r?"horizontal":"column"==r||"column-reverse"==r?"vertical":8121991})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process_moz: ~`(function(r){return r="row"==r||"row-reverse"==r?"horizontal":"column"==r||"column-reverse"==r?"vertical":8121991})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process: ~`(function(n){return n=n||"row"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-box-direction: @process_oldestwebkit; + -moz-box-direction: @process_oldermoz; + -webkit-box-orient: @process_olderwebkit; + -moz-box-orient: @process_moz; + -webkit-flex-direction: @process; + -ms-flex-direction: @process; + flex-direction: @process; +} + +.flex-grow(...) { + @process: ~`(function(n){return n=n||"0"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-flex-grow: @process; + flex-grow: @process; +} + +.flex-shrink(...) { + @process: ~`(function(n){return n=n||"1"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-flex-shrink: @process; + flex-shrink: @process; +} + +.flex-wrap(...) { + @process: ~`(function(n){return n=n||"nowrap"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-flex-wrap: @process; + -ms-flex-wrap: @process; + flex-wrap: @process; +} + +.font-face(@fontname, @fontfile, @fontweight:normal, @fontstyle:normal) { + font-family: "@{fontname}"; + src: url("@{fontfile}.eot"); + src: url("@{fontfile}.eot?#iefix") format("embedded-opentype"), + url("@{fontfile}.woff") format("woff"), + url("@{fontfile}.ttf") format("truetype"), + url("@{fontfile}.svg#@{fontname}") format("svg"); + font-weight: @fontweight; + font-style: @fontstyle; +} + +.grayscale(...) { + @process: ~`(function(n){n=n||"0";var r=/\d/gi,t=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return r.test(n)&&(n=n.replace(t,function(n){return 0==n&&n||n+"%"})),n})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-filter: grayscale(@process); + -moz-filter: grayscale(@process); + -ms-filter: grayscale(@process); + filter: grayscale(@process); +} + +.hue-rotate(...) { + @process: ~`(function(e){e=e||"0";var n=/\d/gi,r=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return n.test(e)&&(e=e.replace(r,function(e){return 0==e&&e||e+"deg"})),e})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-filter: hue-rotate(@process); + -moz-filter: hue-rotate(@process); + -ms-filter: hue-rotate(@process); + filter: hue-rotate(@process); +} + +.hyphens(...) { + @process: ~`(function(n){return n=n||"manual"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-hyphens: @process; + -moz-hyphens: @process; + -ms-hyphens: @process; + hyphens: @process; +} + +.invert(...) { + @process: ~`(function(n){n=n||"100%";var r=/\d/gi,t=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return r.test(n)&&(n=n.replace(t,function(n){return 0==n&&n||n+"%"})),n})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-filter: invert(@process); + -moz-filter: invert(@process); + -ms-filter: invert(@process); + filter: invert(@process); +} + +.justify-content(...) { + @process_oldestWebkit: ~`(function(e){return e=e||"start","flex-start"==e?e="start":"flex-end"==e?e="end":"space-between"!=e&&"space-around"!=e||(e="justify"),e})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process_moz: ~`(function(e){return e=e||"start","flex-start"==e?e="start":"flex-end"==e?e="end":"space-between"!=e&&"space-around"!=e||(e="justify"),e})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process_ms: ~`(function(t){return t=t||"start","flex-start"==t?t="start":"flex-end"==t?t="end":"space-between"==t?t="justify":"space-around"==t&&(t="distribute"),t})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process: ~`(function(t){return t=t||"flex-start"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-box-pack: @process_oldestWebkit; + -moz-box-pack: @process_moz; + -ms-flex-pack: @process_ms; + -webkit-justify-content: @process; + justify-content: @process; +} + +.keyframes(...) { + @process: ~`(function(e){function a(a,r,k){var n="}\n",m=t.split(/(^[a-zA-Z0-9-]+),/g),o=r+" "+m[1]+"{",f=["-webkit-","-moz-","-ms-",""];k?s.forEach(function(a,r){e.indexOf(a)!==-1&&(m[2]=m[2].replace(new RegExp(a,"g"),function(e){return k+e}))}):m[2]=m[2].replace(/{([^}]+)}/g,function(e,a){var r=a.split(";");r.forEach(function(e,a){s.forEach(function(t){e.indexOf(t)!==-1&&(r[a]="",f.forEach(function(s){r[a]+=e.trim().replace(new RegExp(t,"g"),function(e){return s+e})+";"}))})});var t=r.join(";").replace(/;;/g,";");return e.replace(a,t)}),o+=m[2]+n,"start"==a?e="0; } \n"+o:"startend"==a?e="0; } \n"+o.replace(n,""):e+="end"==a?o.replace(n,""):o}e=e||8121991;var r="@{state}",t=e;if(8121991==e)return e;var s=["animation","transform","filter"];switch(r){case"1":a("start","@-webkit-keyframes","-webkit-"),a(null,"@-moz-keyframes","-moz-"),a(null,"@-o-keyframes","-o-"),a("end","@keyframes");break;case"2":a("start","@-webkit-keyframes","-webkit-"),a(null,"@-moz-keyframes","-moz-"),a("end","@keyframes");break;case"3":a("start","@-webkit-keyframes","-webkit-"),a(null,"@-moz-keyframes","-moz-"),a("end","@-o-keyframes","-o-");break;case"4":a("start","@-webkit-keyframes","-webkit-"),a(null,"@-o-keyframes","-o-"),a("end","@keyframes");break;case"5":a("start","@-webkit-keyframes","-webkit-"),a("end","@-moz-keyframes","-moz-");break;case"6":a("start","@-webkit-keyframes","-webkit-"),a("end","@-o-keyframes","-o-");break;case"7":a("start","@-webkit-keyframes","-webkit-"),a("end","@keyframes");break;case"8":a("startend","@-webkit-keyframes","-webkit-");break;case"9":a("start","@-moz-keyframes","-moz-"),a(null,"@-o-keyframes","-o-"),a("end","@keyframes");break;case"10":a("start","@-moz-keyframes","-moz-"),a("end","@-o-keyframes","-o-");break;case"11":a("start","@-moz-keyframes","-moz-"),a("end","@keyframes");break;case"12":a("startend","@-moz-keyframes","-moz-");break;case"13":a("start","@-o-keyframes","-o-"),a("end","@keyframes");break;case"14":a("startend","@-o-keyframes","-o-");break;case"15":a("startend","@keyframes")}return e+"}\n[not-existing] {\n zoom: 1"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @state: 1; lesshat-selector { -lh-property: @process; } + + + +} + +.opacity(...) { + @process_ms: ~`(function(a){return a=a||"filter: alpha(opacity=100)","alpha(opacity="+Math.floor(100*a)+")"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process: ~`(function(n){return n=n||"1"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + zoom: 1; filter: @process_ms; + -webkit-opacity: @process; + -moz-opacity: @process; + opacity: @process; +} + +.order(...) { + @process: ~`(function(n){return n=n||"0"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-box-ordinal-group: @process; + -moz-box-ordinal-group: @process; + -ms-flex-order: @process; + -webkit-order: @process; + order: @process; +} + +.perspective(...) { + @process: ~`(function(n){n=n||"none";var e=/\d/gi,r=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return e.test(n)&&(n=n.replace(r,function(n){return 0==n&&n||n+"px"})),n})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-perspective: @process; + -moz-perspective: @process; + perspective: @process; +} + +.perspective-origin(...) { + @process: ~`(function(e){e=e||"50% 50%";var t=/\d/gi,r=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return/^[^, ]*,/.test(e)&&(e=e.replace(/(?:,)(?![^(]*\))/g,"")),t.test(e)&&(e=e.replace(r,function(e){return 0==e&&e||e+"%"})),e})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-perspective-origin: @process; + -moz-perspective-origin: @process; + perspective-origin: @process; +} + +.placeholder(@color:#aaa, @element: 08121991) { + .inception (@arguments) when not (@element = 08121991) { + @{element}::-webkit-input-placeholder { + color: @color; + } + @{element}:-moz-placeholder { + color: @color; + } + @{element}::-moz-placeholder { + color: @color; + } + @{element}:-ms-input-placeholder { + color: @color; + } + } + .inception (@arguments) when (@element = 08121991) { + &::-webkit-input-placeholder { + color: @color; + } + &:-moz-placeholder { + color: @color; + } + &::-moz-placeholder { + color: @color; + } + &:-ms-input-placeholder { + color: @color; + } + } + .inception(@arguments); +} + +.rotate(...) { + @process: ~`(function(e){e=e||"0";var n=/\d/gi,r=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return n.test(e)&&(e=e.replace(r,function(e){return 0==e&&e||e+"deg"})),e})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-transform: rotate(@process); + -moz-transform: rotate(@process); + -ms-transform: rotate(@process); + -o-transform: rotate(@process); + transform: rotate(@process); +} + +.rotate3d(...) { + @process: ~`(function(n){return n=n||"0, 0, 0, 0",n=n.replace(/,\s*\d+$/,function(n){return n+"deg"})})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-transform: rotate3d(@process); + -moz-transform: rotate3d(@process); + -ms-transform: rotate3d(@process); + -o-transform: rotate3d(@process); + transform: rotate3d(@process); +} + +.rotateX(...) { + @process: ~`(function(e){e=e||"0";var n=/\d/gi,r=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return n.test(e)&&(e=e.replace(r,function(e){return 0==e&&e||e+"deg"})),e})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-transform: rotateX(@process); + -moz-transform: rotateX(@process); + -ms-transform: rotateX(@process); + -o-transform: rotateX(@process); + transform: rotateX(@process); +} + +.rotateY(...) { + @process: ~`(function(e){e=e||"0";var n=/\d/gi,r=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return n.test(e)&&(e=e.replace(r,function(e){return 0==e&&e||e+"deg"})),e})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-transform: rotateY(@process); + -moz-transform: rotateY(@process); + -ms-transform: rotateY(@process); + -o-transform: rotateY(@process); + transform: rotateY(@process); +} + +.rotateZ(...) { + @process: ~`(function(e){e=e||"0";var n=/\d/gi,r=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return n.test(e)&&(e=e.replace(r,function(e){return 0==e&&e||e+"deg"})),e})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-transform: rotateZ(@process); + -moz-transform: rotateZ(@process); + -ms-transform: rotateZ(@process); + -o-transform: rotateZ(@process); + transform: rotateZ(@process); +} + +.saturate(...) { + @process: ~`(function(n){n=n||"100%";var r=/\d/gi,t=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return r.test(n)&&(n=n.replace(t,function(n){return 0==n&&n||n+"%"})),n})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-filter: ~"saturate(@{process})"; + -moz-filter: ~"saturate(@{process})"; + -ms-filter: ~"saturate(@{process})"; + filter: ~"saturate(@{process})"; +} + +.scale(...) { + @process: ~`(function(n){return n=n||"1"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-transform: scale(@process); + -moz-transform: scale(@process); + -ms-transform: scale(@process); + -o-transform: scale(@process); + transform: scale(@process); +} + +.scale3d(...) { + @process: ~`(function(n){return n=n||"1, 1, 1"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-transform: scale3d(@process); + -moz-transform: scale3d(@process); + -ms-transform: scale3d(@process); + -o-transform: scale3d(@process); + transform: scale3d(@process); +} + +.scaleX(...) { + @process: ~`(function(n){return n=n||"1"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-transform: scaleX(@process); + -moz-transform: scaleX(@process); + -ms-transform: scaleX(@process); + -o-transform: scaleX(@process); + transform: scaleX(@process); +} + +.scaleY(...) { + @process: ~`(function(n){return n=n||"1"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-transform: scaleY(@process); + -moz-transform: scaleY(@process); + -ms-transform: scaleY(@process); + -o-transform: scaleY(@process); + transform: scaleY(@process); +} + +.scaleZ(...) { + @process: ~`(function(n){return n=n||"1"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-transform: scaleZ(@process); + -moz-transform: scaleZ(@process); + -ms-transform: scaleZ(@process); + -o-transform: scaleZ(@process); + transform: scaleZ(@process); +} + +.selection(...) { + @process: ~`(function(e){function t(t,n){var r="}\n",s=a.split(","),c=(s[1]||"")+n+"{"+s[0]+r;"start"==t?e="0; } \n"+c:"startend"==t?e="0; } \n"+c.replace(r,""):e+="end"==t?c.replace(r,""):c}e=e||8121991;var n="@{state}",a=e;if(8121991==e)return e;switch(n){case"1":t("start","::selection"),t("end","::-moz-selection");break;case"2":t("startend","::selection");break;case"3":t("startend","::-moz-selection")}return e=e.replace(/;$/g,"")})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @state: 1; lesshat-selector { -lh-property: @process; } + +} + +.sepia(...) { + @process: ~`(function(n){n=n||"100%";var r=/\d/gi,t=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return r.test(n)&&(n=n.replace(t,function(n){return 0==n&&n||n+"%"})),n})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-filter: sepia(@process); + -moz-filter: sepia(@process); + -ms-filter: sepia(@process); + filter: sepia(@process); +} + +.size(@square) { + @unit: 'px'; + .process(@square) when (ispixel(@square)), (isem(@square)), (ispercentage(@square)), (iskeyword(@square)) { + width: @square; + height: @square; + } + + .process(@square) when not (ispixel(@square)) and not (isem(@square)) and not (ispercentage(@square)) and not (isstring(@square)) and not (iskeyword(@square)) { + width: ~`@{square} + @{unit}`; + height: ~`@{square} + @{unit}`; + } + + .process(@square); + +} + +.size(@width, @height) { + @unit: 'px'; + .process(@width, @height) when (ispixel(@width)), (isem(@width)), (ispercentage(@width)), (iskeyword(@width)) { + .kittens(@height) when (ispixel(@height)), (isem(@height)), (ispercentage(@height)), (iskeyword(@height)) { + width: @width; + height: @height; + } + .kittens(@height) when not (ispixel(@height)) and not (isem(@height)) and not (ispercentage(@height)) and not (iskeyword(@height)) { + width: @width; + height: ~`@{height} + @{unit}`; + } + .kittens(@height); + } + + .process(@width, @height) when (ispixel(@height)), (isem(@height)), (ispercentage(@height)), (iskeyword(@height)) { + .kittens(@width) when (ispixel(@width)), (isem(@width)), (ispercentage(@width)), (iskeyword(@width)) {} + .kittens(@width) when not (ispixel(@width)) and not (isem(@width)) and not (ispercentage(@width)) and not (iskeyword(@width)) { + width: ~`@{width} + @{unit}`; + height: @height; + } + .kittens(@width); + } + + .process(@width, @height) when not (ispixel(@width)) and not (isem(@width)) and not (ispercentage(@width)) and not (iskeyword(@width)) and not (ispixel(@height)) and not (isem(@height)) and not (ispercentage(@height)) and not (iskeyword(@height)) { + width: ~`@{width} + @{unit}`; + height: ~`@{height} + @{unit}`; + } + + .process(@width, @height); + +} + +.skew(...) { + @process: ~`(function(e){e=e||"0";var n=/\d/gi,r=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return n.test(e)&&(e=e.replace(r,function(e){return 0==e&&e||e+"deg"})),e})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-transform: skew(@process); + -moz-transform: skew(@process); + -ms-transform: skew(@process); + -o-transform: skew(@process); + transform: skew(@process); +} + +.skewX(...) { + @process: ~`(function(e){e=e||"0";var n=/\d/gi,r=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return n.test(e)&&(e=e.replace(r,function(e){return 0==e&&e||e+"deg"})),e})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-transform: skewX(@process); + -moz-transform: skewX(@process); + -ms-transform: skewX(@process); + -o-transform: skewX(@process); + transform: skewX(@process); +} + +.skewY(...) { + @process: ~`(function(e){e=e||"0";var n=/\d/gi,r=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return n.test(e)&&(e=e.replace(r,function(e){return 0==e&&e||e+"deg"})),e})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-transform: skewY(@process); + -moz-transform: skewY(@process); + -ms-transform: skewY(@process); + -o-transform: skewY(@process); + transform: skewY(@process); +} + +.transform(...) { + @process: ~`(function(e){e=e||"none";var r={translate:"px",rotate:"deg",rotate3d:"deg",skew:"deg"};/^\w*\(?[a-z0-9.]*\)?/.test(e)&&(e=e.replace(/(?:,)(?![^(]*\))/g,""));for(var t in r)e.indexOf(t)>=0&&(e=e.replace(new RegExp(t+"[\\w]?\\([a-z0-9, %]*\\)"),function(e){var n=/(\d+\.?\d*)(?!\w|%)/g;return"rotate3d"==t&&(n=/,\s*\d+$/),e.replace(n,function(e){return e+r[t]})}));return e})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-transform: @process; + -moz-transform: @process; + -ms-transform: @process; + -o-transform: @process; + transform: @process; +} + +.transform-origin(...) { + @process: ~`(function(e){e=e||"50% 50% 0";var t=/\d/gi,r=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return/^[^, ]*,/.test(e)&&(e=e.replace(/(?:,)(?![^(]*\))/g,"")),t.test(e)&&(e=e.replace(r,function(e){return 0==e&&e||e+"%"})),e})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-transform-origin: @process; + -moz-transform-origin: @process; + -ms-transform-origin: @process; + -o-transform-origin: @process; + transform-origin: @process; +} + +.transform-style(...) { + @process: ~`(function(n){return n=n||"flat"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-transform-style: @process; + -moz-transform-style: @process; + -ms-transform-style: @process; + -o-transform-style: @process; + transform-style: @process; +} + +.transition(...) { + @process_webkit: ~`(function(r){r=r||"all 0 ease 0";var e=["background-size","border-radius","border-bottom-left-radius","border-bottom-right-radius","border-top-left-radius","border-top-right-radius","box-shadow","column","transform","filter"],t="-webkit-",o=/(?:\d)(?:ms|s)/gi,a=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%)/gi;return/^[^, ]*,/.test(r)&&(r=r.replace(/(?:,)(?![^(]*\))/g,"")),e.forEach(function(e,o){r.indexOf(e)!==-1&&(r=r.replace(new RegExp(e,"g"),function(r){return t+r}))}),o.test(r)||"0"===r||(r=r.replace(a,function(r){return r+=parseFloat(r,10)>10?"ms":"s"})),r})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process_moz: ~`(function(e){e=e||"all 0 ease 0";var n=["background-size","box-shadow","column","transform","filter"],r="-moz-",t=/(?:\d)(?:ms|s)/gi,a=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%)/gi;return/^[^, ]*,/.test(e)&&(e=e.replace(/(?:,)(?![^(]*\))/g,"")),n.forEach(function(n,t){e.indexOf(n)!==-1&&(e=e.replace(new RegExp(n,"g"),function(e){return r+e}))}),t.test(e)||"0"===e||(e=e.replace(a,function(e){return e+=parseFloat(e,10)>10?"ms":"s"})),e})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process_opera: ~`(function(e){e=e||"all 0 ease 0";var n=["transform"],r="-o-",t=/(?:\d)(?:ms|s)/gi,a=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%)/gi;return/^[^, ]*,/.test(e)&&(e=e.replace(/(?:,)(?![^(]*\))/g,"")),n.forEach(function(n,t){e.indexOf(n)!==-1&&(e=e.replace(new RegExp(n,"g"),function(e){return r+e}))}),t.test(e)||"0"===e||(e=e.replace(a,function(e){return e+=parseFloat(e,10)>10?"ms":"s"})),e})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process: ~`(function(n){n=n||"all 0 ease 0";var e=["-webkit-","-moz-","-o-",""],t=["column","transform","filter"],r=/(?:\d)(?:ms|s)/gi,o=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%)/gi;/^[^, ]*,/.test(n)&&(n=n.replace(/(?:,)(?![^(]*\))/g,""));var i=n.split(/(?:,)(?![^(]*\))/g);return i.forEach(function(n,r){t.forEach(function(t){n.indexOf(t)!==-1&&(i[r]="",e.forEach(function(o,a){i[r]+=n.trim().replace(new RegExp(t,"g"),function(n){return o+n}),a<e.length-1&&(i[r]+=",")}))})}),n=i.join(","),r.test(n)||"0"===n||(n=n.replace(o,function(n){return n+=parseFloat(n,10)>10?"ms":"s"})),n})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-transition: @process_webkit; + -moz-transition: @process_moz; + -o-transition: @process_opera; + transition: @process; +} + +.transition-delay(...) { + @process: ~`(function(r){r=r||"0";var s=/(?:\d)(?:ms|s)/gi,t=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return s.test(r)||"0"===r||(r=r.replace(t,function(r){return r+=parseFloat(r,10)>10?"ms":"s"})),r})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-transition-delay: @process; + -moz-transition-delay: @process; + -o-transition-delay: @process; + transition-delay: @process; +} + +.transition-duration(...) { + @process: ~`(function(r){r=r||"0";var s=/ms|s/gi,t=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return s.test(r)||"0"===r||(r=r.replace(t,function(r){return r+=parseFloat(r,10)>10?"ms":"s"})),r})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-transition-duration: @process; + -moz-transition-duration: @process; + -o-transition-duration: @process; + transition-duration: @process; +} + +.transition-property(...) { + @process_webkit: ~`(function(r){r=r||"all";var o=["background-size","border-radius","border-bottom-left-radius","border-bottom-right-radius","border-top-left-radius","border-top-right-radius","box-shadow","column","transform","filter"],t="-webkit-";return o.forEach(function(o,e){r.indexOf(o)!==-1&&(r=r.replace(new RegExp(o,"g"),function(r){return t+r}))}),r})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process_moz: ~`(function(n){n=n||"all";var r=["background-size","box-shadow","column","transform","filter"],o="-moz-";return r.forEach(function(r,e){n.indexOf(r)!==-1&&(n=n.replace(new RegExp(r,"g"),function(n){return o+n}))}),n})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process_opera: ~`(function(n){n=n||"all";var r=["transform"],e="-o-";return r.forEach(function(r,f){n.indexOf(r)!==-1&&(n=n.replace(new RegExp(r,"g"),function(n){return e+n}))}),n})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + @process: ~`(function(n){n=n||"all";var o=["-webkit-","-moz-","-o-",""],r=["column","transform","filter"],t=n.split(/(?:,)(?![^(]*\))/g);return t.forEach(function(n,f){r.forEach(function(r){n.indexOf(r)!==-1&&(t[f]="",o.forEach(function(i,c){t[f]+=n.trim().replace(new RegExp(r,"g"),function(n){return i+n}),c<o.length-1&&(t[f]+=",")}))})}),n=t.join(",")})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-transition-property: @process_webkit; + -moz-transition-property: @process_moz; + -o-transition-property: @process_opera; + transition-property: @process; +} + +.transition-timing-function(...) { + @process: ~`(function(e){return e=e||"ease"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-transition-timing-function: @process; + -moz-transition-timing-function: @process; + -o-transition-timing-function: @process; + transition-timing-function: @process; +} + +.translate(...) { + @process: ~`(function(n){n=n||"0";var r=/\d/gi,t=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return r.test(n)&&(n=n.replace(t,function(n){return 0==n&&n||n+"px"})),n})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-transform: translate(@process); + -moz-transform: translate(@process); + -ms-transform: translate(@process); + -o-transform: translate(@process); + transform: translate(@process); +} + +.translate3d(...) { + @process: ~`(function(n){n=n||"0, 0, 0";var r=/\d/gi,t=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return r.test(n)&&(n=n.replace(t,function(n){return 0==n&&n||n+"px"})),n})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-transform: translate3d(@process); + -moz-transform: translate3d(@process); + -ms-transform: translate3d(@process); + -o-transform: translate3d(@process); + transform: translate3d(@process); +} + +.translateX(...) { + @process: ~`(function(n){n=n||"0";var r=/\d/gi,t=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return r.test(n)&&(n=n.replace(t,function(n){return 0==n&&n||n+"px"})),n})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-transform: translateX(@process); + -moz-transform: translateX(@process); + -ms-transform: translateX(@process); + -o-transform: translateX(@process); + transform: translateX(@process); +} + +.translateY(...) { + @process: ~`(function(n){n=n||"0";var r=/\d/gi,t=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return r.test(n)&&(n=n.replace(t,function(n){return 0==n&&n||n+"px"})),n})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-transform: translateY(@process); + -moz-transform: translateY(@process); + -ms-transform: translateY(@process); + -o-transform: translateY(@process); + transform: translateY(@process); +} + +.translateZ(...) { + @process: ~`(function(n){n=n||"0";var r=/\d/gi,t=/(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi;return r.test(n)&&(n=n.replace(t,function(n){return 0==n&&n||n+"px"})),n})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-transform: translateZ(@process); + -moz-transform: translateZ(@process); + -ms-transform: translateZ(@process); + -o-transform: translateZ(@process); + transform: translateZ(@process); +} + +.user-select(...) { + @process: ~`(function(n){return n=n||"auto"})((function(){var r="@{arguments}";return r=r.replace(/^\[|\]$/g,"")})())`; + -webkit-user-select: @process; + -moz-user-select: @process; + -ms-user-select: @process; + user-select: @process; +} + + diff --git a/src/static/css/registry.less b/src/static/css/registry.less new file mode 100644 index 0000000..61c20a6 --- /dev/null +++ b/src/static/css/registry.less @@ -0,0 +1,84 @@ +@import "./base.less"; +@reswidth0:1000px; +@reswidth1:20px; +*{ + margin:0; + padding:0; +} +#registrySection{ + margin:0 auto; + width:@reswidth0; + height:600px; + border-radius:5px; + + >h3{ + color: red; + opacity: 0.4; + line-height:100px; + padding-left: @reswidth1; + display: inline-block; + width:@reswidth0/2; + text-align: center; + vertical-align: middle; + + input{ + vertical-align: middle; + width:@reswidth1; + height: @reswidth1; + margin-left: 5px; + } + } + + >h1{ + color: @default-color; + opacity: 0.6; + text-align: center; + font-size: 28px; + font-weight: 400; + } + + .registrybtn{ + color: @default-color; + opacity: 0.7; + text-align: center; + font-size: 28px; + display: block; + margin: 0 auto; + } +} + +#tenant{ + margin:0 auto; + width:@reswidth0; + height:600px; + border-radius:5px; + + >h3{ + color: red; + opacity: 0.4; + line-height:100px; + padding-left: @reswidth1; + display: inline-block; + width:@reswidth0/2; + text-align: center; + vertical-align: middle; + + input{ + vertical-align: middle; + width:@reswidth1; + height: @reswidth1; + margin-left: 5px; + } + } + + >h1{ + color: @default-color; + opacity: 0.6; + text-align: center; + font-size: 28px; + font-weight: 400; + margin-bottom: 100px; + margin-top: 20px; + } + +} diff --git a/src/static/css/saved_form.less b/src/static/css/saved_form.less new file mode 100644 index 0000000..98345e5 --- /dev/null +++ b/src/static/css/saved_form.less @@ -0,0 +1,1221 @@ +@import "./base.less"; + +#flowcontent{ + padding-top: 5px; + position: relative; +} +.cost_btn{ + margin-left: 14px; + margin-top: 14px; +} + +.btn-zone-center { + margin: 9px 0px !important; + width:100%; + padding-top:15px; + text-align: center; + + button { + margin-right: 65px; + } +} + +.form-control[readonly]{ + background:#fff; + padding: 0; + height: 28px; + border-radius: 0; +} + +.inputunderline{ + padding-top: 0px; + padding-right: 2px; + padding-bottom: 0px; + padding-left: 2px; + height: 30px; + outline-width: 0px; + border-top-style: none; + border-right-style: none; + border-bottom-color: rgb(186, 186, 186); + border-bottom-style: dashed; + border-bottom-width: 1px; + border-left-style: none; + background-position-x: 0px; + background-position-y: 0px; + border-bottom: dashed 1px #bababa; + border-bottom-width: 1px; + border-bottom-style: dashed; + border-bottom-color: rgb(186, 186, 186); + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + border-top-left-radius: 0px; + border-top-right-radius: 0px; + border-bottom-right-radius: 0px; + border-bottom-left-radius: 0px; +} +.showDetail{ + position: absolute; + background: #fff; + border: 1px solid #0DB3A6; + padding: 6px; + font-size: 12px; + -webkit-border-radius: 2px; + border-radius: -2px; + z-index: 8029; + max-width: 100%; + min-width: 7%; + left: 25px; + top: 34px; +} + + +div.form_content { + width:100%; + span{ + + word-wrap:break-word; + } + .trans{ + width: 100%; + height: 80%; + position: absolute; + top: 0; + background: transparent; + z-index: 1; + } + + .apply_control{ + width: 100%; +// height: 50px; + padding-top: 10px; + display: flex; + align-items: center; + flex-direction: column; + font-size: 13px !important; + font-weight: normal !important; + font-family: 'Arial Normal', 'Arial' !important; + color: #999; + .apply_control_number_input{ + position: absolute; + } + } + .apply_control > label{ + width: 100%; + span{ + color: #337ab7; + } + } + .apply_control > .apply_control_input{ + width: 80% !important; + word-wrap:break-word; + word-break:break-all; + border:1px solid #E0E0E0; + } + .apply_select{ + background-color: white; + box-shadow: 0 1px 10px rgba(20, 20, 20, 0.5); + border: 1px solid #ddd; + position: absolute; + z-index: 9999999999; + width: 90%; + height: auto; + left:2%; + top:65%; + padding:0 10px; + overflow: auto; + } + .apply_select > .apply_select_close > p{ + width: 90%; + text-align: center; + color: #333; + margin-top: auto; + font-size: 18px; + } + .apply_select_close{ + width: 100%; + border-bottom: 1px dashed #ddd; + height: 40px; + line-height: 30px; + display: flex; + justify-content: space-between; + } + .apply_close{ + color: #337ab7; + text-align: right; + line-height: 30px; + width: 10%; + height: 30px; + } + .apply_close:hover{ + color: #333; + } + .apply_select_table{ + border-spacing: 0; + width: 100%; + border-collapse: collapse; + table-layout: auto; + border: 1px solid #ddd; +// margin-top: 10px; + td,th{ + border: 1px solid #ddd; + text-align: center; + height: 30px; + line-height: 30px; + color: #000000; + font-weight: 300; + } + th{ + color: #758aa5; + } + } + .apply_select_search{ + display: flex; + justify-content: flex-end; + height: 40px; + line-height: 40px; + align-items: center; + input{ + border: 1px solid #ddd; + } + .apply_search_btn{ + margin-left: -30px !important; + } + .expend_search_style{ + width: 220px; + } + } + .condition_search_footer{ + display: flex; + justify-content: space-between; + align-items: center; + padding: 5px 0; + label{ + text-align: center; + height: 20px; + line-height: 20px; + } + .second .pagenumber { + width: 20px !important; + min-width: 20px !important; + height: 20px; + } + } + label { + font-weight: normal !important; + } + .nobill_red{ + color: red; + } + .cost_div{ +// display: flex; + justify-content: space-around; + flex-wrap: wrap; + } + .cost_div > div{ + width: 50%; + } + + .errinfo{ + color: red; + font-style: normal; + font-size: 10px; + display: inline-block; + min-width: 200px; + } + .errinfo_point{ + color: red; + font-style: normal; + font-size: 10px; + display: inline-block; + min-width: 200px; + } + div.text > label, + div.textarea > label, + div.checkbox > label, + div.radio > label, + div.select > label + { + font-size: 13px !important; + font-weight: normal !important; + font-family: 'Arial Normal', 'Arial' !important; + color: #999; + } + div.total > label{ + font-size: 13px !important; + font-weight: normal !important; + font-family: 'Arial Normal', 'Arial' !important; + color: #999; + } + .row{ +// width:718px; +// min-height: 400px; + margin-bottom: 20px !important; + position: relative; +// overflow-x: hidden; +// overflow-y: visible; + input{ + display: block; + } + .tabstrip{ + display: flex; + width: 600px; + flex-wrap: nowrap; + margin-top: -3px; + position: relative; + z-index: 999; + ul{ + display: flex; + justify-content: flex-start; + } + li{ +// width: 130px; + height: 30px; + overflow: hidden; + text-align: center; + border: 1px solid #ddd; + border-top: 1px solid white; + border-radius: 3px; + background-color: #f9f9f9; + color: #39beb5; + margin-bottom: 4px; + margin-right: 5px; + cursor: pointer; + span{ + display: inline-block; + padding: 5px 10px; + overflow: hidden; + } + } + .tabstrip_active{ + background-color: white; + } + } + .tabstrip_temp{ + left:14.5%; + z-index: 999 !important; + } + + + .null_form{ + min-height: 0 !important; + } + .disabled_time{ + background-color: rgb(235, 235, 228); + } + .abled_time{ + background-color: white; + } + .add_jour{ + min-height: 20px !important; + margin-top: 5px; + i{ + color: @default-color; + cursor: pointer; + } + } + .row_unedit{ + position: absolute; + width: 100%; + height: 100%; + z-index: 100; + background-color: rgba(255,255,255,0); + } + i{ + font-style: normal; + } + p{ + font-size: 12px; + color:#bbb; + line-height: 12px; + padding-top: 5px; + } + + h5{ + color: :#bbb; + } + + > div{ + padding:0; + min-height: 83px!important; + } + .cost_err{ + color: red; + } + .activeops{ + color: red; + } + .inactiveops{ + color: #fe8d00; + } + + .cost_count{ + margin-top: 12px; + display: flex; + justify-content:flex-end ; + height: 20px; + min-height: 20px !important; + a{ + height: 20px; + } + } + .search_column{ + color:#333; + margin-bottom: 10px; + + label{ + color: #999; + font-weight: normal; + } + + > input{ + width:215px; + } + + button{ + height: 28px; + margin-left: 5px; + } + + .completedorder{ + background-color: #fff; + box-shadow: 0 1px 10px rgba(20, 20, 20, 0.5); + border: 1px solid #ddd; + position: absolute; + z-index: 9999999999; + min-height: 100px; + } + + .selectul{ + position: relative; + + .select-container{ + line-height: 25px; + } + + .showul{ + width:214px; +// height:60px; + max-height: 150px; + background:#fff; + border:1px solid #ccc; + position: absolute; + z-index: 999999999; + overflow: auto; + color:#333; + padding-left:10px; + + li{ + height:30px; + line-height: 30px; + + input{ + width:15px; + height:15px; + } + } + } + + .suffix{ + top:0; + } + } + } + + } + + + div + input[type="text"], div.select select{ + display: inline-block; + width:80% !important; + max-width: 214px !important; +// min-width: 214px !important; + height:28px; + line-height:25px; + border: 1px solid #dfdfdf; + } + .total_label{ + padding-left: 0; + } + div.total{ + margin-top: 10px; + display: flex; + flex-direction: column; + } + + div.total input[type="text"]{ + width:214px !important; + min-width: 214px !important; + height:28px; + line-height:25px; + border: 1px solid #dfdfdf; + } + + .checkbox { + overflow:auto; + input[type="checkbox"] { + display:block; + position:relative; + margin:0px; + } + div { + text-align: left; + } + } + + .radio { + overflow:auto; + input[type="radio"] { + display:block; + position:relative; + margin:0px; + //width:214px; + } + div { + text-align: left; + } + } + + .checkbox_container { + width:100px; + height:100px; + + .cb_label { + position: absolute; + margin-top:-23px; + margin-left:15px; + padding-left:0px; + } + } + + .radio{ + > div { + margin-top:0px !important; + } + .rd_container { + position:relative; + margin-top:0px !important; + input { + margin-left:1px; + margin-top:2px; + } + .rd_label { + position:absolute; + margin-left:18px; + padding-left:0px; + bottom:0px; + top:4px; + } + } + } + + div.user_element { + text-align: left; + > span { + margin-left: 6px; + width: 100%; + } + span.user_name { + border: 1px solid #ddd; + padding: 2px 5px; + width: auto; + background:@default-color; + color: #fff; + } + + label { + } + + a.btn_user_el_add_user { + font-size:12px; + } + + } + +} + +.btn-zone { + padding: 5px; + text-align: center; + display: block; + width:718px; + height: 30px; + margin-bottom: 10px; + position: absolute; + z-index: 101; + button { + margin-right: 15px; + } + +} + + +.bill_create_pop { + z-index: 9999; + .audit_commit{ + position: absolute; + width: 30%; + height: 300px; + margin-left: 35%; + border-radius: 2%; + background-color: #f3f7f7; + overflow: hidden; + box-shadow: 0 1px 10px rgba(20, 20, 20, 0.5); + z-index: 99999; + .audit_commit_header{ + width: 100%; + height: 10%; + display: flex; + justify-content: center; + color: white; + align-items: center; + background-color: #09b4ab; + } + .audit_commit_content{ + width: 100%; + height: 70%; +// p{ +// height: 20%; +// line-height: 100%; +// margin: 0; +// } + textarea{ + width: 100%; + height: 100%; + } + } + .audit_commit_btn{ + display: flex; + height: 20%; + justify-content: space-around; + align-items: center; + button{ + width: 16%; + height: 60%; + font-size: 15px + } + } + } + .paper_upload{ + position: absolute; + right: 120px; + top: 37px; + z-index: 200; + } + .paper_iframe{ + position: fixed; + width: 80%; + min-height: 100%; + background-color: #f3f7f7; + top:0; + left: 10%; + overflow: auto; + z-index: 99999; + box-shadow: 0 1px 10px rgba(20, 20, 20, 0.5); + .paper_iframe_nav{ + padding: 1% 5%; + display: flex; + justify-content: space-between; + align-items: center; + i{ + font-size: 20px; + } + span{ + display: inline-block; + color: #39beb5; + height: 100%; + line-height: 100%; + } + .close { + right:12px; + top:12px; + font-size:20px; + } + } + } + .pop_panel { + margin-top:0px; +// overflow: hidden; + + .search_column{ + color:#333; + margin-bottom: 10px; + + label{ + color: #999; + font-weight: normal; + } + + > input{ + width:215px; + } + + button{ + height: 28px; + margin-left: 5px; + } + + .selectul{ + position: relative; + + .select-container{ + line-height: 25px; + } + + .showul{ + width:214px; +// height:60px; + max-height: 150px; + background:#fff; + border:1px solid #ccc; + position: absolute; + z-index: 999999999; + overflow: auto; + color:#333; + padding-left: 10px; + + li{ + height:30px; + line-height: 30px; + + input{ + width:15px; + height:15px; + } + } + } + + .suffix{ + top:0px; + } + } + } + } +} +.people{ + margin-top:20px; +} + +div.user_select_popup{ + .box-shadow(0 1px 10px rgba(20, 20, 20, 0.5)); + width:80%; + height:400px; + background:#fff; + position:absolute; + left: 15%; + z-index:9999999999999999999999 !important; + border:1px solid #ddd; + padding-top:22px; + div.btn_cls { + border-bottom: 1px dashed #ddd; + padding-left:4px; + margin-top:-22px !important; + } + div.user_sel_form{ + width:100%; + height:90% !important; + .main_close{ + margin-left: 550px; + } + .user_sel_form_close{ + height: 30px; + line-height: 30px; + a{ + float: right; + } + } + div.main{ + width:100%; + min-height:100%; + height:100%; + float:left; + padding-left:30%; + padding-right:20%; + div.center_area { + width:100%; +// min-height:100%; + height:90%; + overflow:auto; + padding-top: 26px; + .area_title { + height: 25px; + margin: 0px 4px; + border-bottom:1px solid #ddd; + margin-top:-26px; + label { + font-size:12px; + padding:0px 2px; + color:#758aa5; + border-left: 2px solid #2f796e; + } + + span { + input { + margin-top:1px; + height:22px; + line-height: 22px; + min-height: 22px !important; + float:right; + } + } + } + + .area_body { + overflow:auto; + height:100%; + width:100%; + label.label_letter_group { + font-size:10px; + color: #2f796e; + margin-left:6px; + } + ul { + a.hr_gp_title, a.hr_name{ + font-size:12px; + display: inline-block; + height: 20px; + text-align: center; + line-height: 20px; + border: 1px solid #eceff4; + background-color: #faf8fb; + } + a.hr_name_selected{ + font-size:12px; + display: inline-block; + color: #81817f; + width: 45px; + height: 20px; + text-align: center; + line-height: 20px; + border: 1px solid #eceff4; + background-color:#f3f3f3; + } + .hr_name_addbtn{ + width: 18px; + height: 20px; + border: none; + text-align: center; + border:1px solid #eceff4; + padding: 0; + background-color: #faf8fb; + color: #6a8eb0; + } + .hr_name_addbtn_selected{ + width: 18px; + height: 20px; + border: none; + text-align: center; + border:1px solid #eceff4; + padding: 0; + background-color: #f3f3f3; + color: #81817f; + } + div{ + height: 20px; + display: flex; + justify-content: flex-start; + } + list-style: none; + padding-left:15px; + li { + padding-left:15px; + display: flex; + justify-content: flex-start; + } + } + } + } + } + + div.right{ + width:100%; + min-height:100%; + height:100%; + div.right_area{ + width:100%; + min-height:100%; + height:100%; + overflow:auto; + padding-top: 26px !important; + .selected_personnel{ + background-color:@default-color; + } + .clear_selected_users{ + margin-right: 5px; + } + .area_title { + height: 25px; + margin: 0px 4px; + line-height: 25px; + border-bottom:1px solid #ddd; + margin-top:-26px; + label { + font-size:12px; + padding:0px 2px; + color:white; + border-left: 2px solid #2f796e; + } + i{ + color:white; + } + span { + input { + margin-top:1px; + height:22px; + line-height: 22px; + min-height: 22px !important; + float:right; + } + } + } + + .area_body { + overflow:auto; + height:100%; + width:100%; + label.label_letter_group { + font-size:10px; + color: #2f796e; + margin-left:6px; + } + .department_close{ +// margin-left: 42px; + color: #637179; + } + ul { + width: 100%; + .gp_title{ + width: 100%; + display: flex; + align-items: center; + } + a.hr_gp_title{ + font-size:12px; + font-weight: bold; + color: #3e3f3f; + margin-left: 2%; + overflow: hidden; + text-overflow: ellipsis; + width: 86%; + display: inline-block; + white-space: nowrap; + } + a.hr_name{ + font-size:12px; + display: inline-block; + width: 45px; + height: 20px; + text-align: center; + line-height: 20px; + border: 1px solid #20b4aa; + background-color: #c1e4e7; + color: #666969; + } + .hr_name_addbtn{ + width: 18px; + height: 20px; + border: none; + color: white; + text-align: center; + border:1px solid #20b4aa; + padding: 0; + background-color: #20b4aa; + } + .gp_title:hover{ + background-color: #a7eff5; + } + list-style: none; + padding-left:0px; + li { + padding-left:15px; + margin-bottom: 5px; + div{ + height: 20px; + display: flex; + justify-content: flex-start; + } + } + } + } + } + } + + + + div.hr_tree { + overflow:auto; + height:100%; + } + div.left{ + margin-left:-100%; + float:left; + min-height:100%; + width:30%; + border-right:1px solid #ddd; + } + div.right{ + min-height:100%; + width:20%; + float:left; + margin-left:-20%; + border-left:1px solid #ddd; + } + } +} +//组织机构 +div.org_select_popup{ + .box-shadow(0 1px 10px rgba(20, 20, 20, 0.5)); + width:300px; +// height:320px; + background:#fff; + position:absolute; + left: 15%; + z-index:9999999999999999999999 !important; + border:1px solid #ddd; + padding-top:22px; + padding-bottom: 25px; + div.btn_cls { + border-bottom: 1px dashed #ddd; + padding-left:4px; + margin-top:-22px !important; + } + div.org_sel_form{ + width:100%; + height:90% !important; + .main_close{ + margin-left: 250px; + } + .org_sel_form_close{ + height: 30px; + line-height: 30px; + } + + div.right{ + width:100%; + min-height:100%; + height:100%; + div.right_area{ + width:100%; + min-height:100%; + height:100%; + overflow:auto; + padding-top: 26px !important; + .selected_personnel{ + background-color:@default-color; + } + .clear_selected_users{ + margin-right: 5px; + } + .area_title { + height: 25px; + margin: 0px 4px; + line-height: 25px; + border-bottom:1px solid #ddd; + margin-top:-26px; + label { + font-size:12px; + padding:0px 2px; + color:white; + border-left: 2px solid #2f796e; + } + i{ + color:white; + } + span { + input { + margin-top:1px; + height:22px; + line-height: 22px; + min-height: 22px !important; + float:right; + } + } + } + + .area_body { + overflow:hidden; + height:100%; + width:100%; + div.area_content{ + display: flex; + justify-content: center; + margin-top: 10px; + } + ul { + a.hr_name{ + font-size:12px; + display: inline-block; + width: 45px; + height: 20px; + text-align: center; + line-height: 20px; + border: 1px solid #20b4aa; + background-color: #c1e4e7; + color: #666969; + } + .hr_name_addbtn{ + width: 18px; + height: 20px; + border: none; + color: white; + text-align: center; + border:1px solid #20b4aa; + padding: 0; + background-color: #20b4aa; + } + list-style: none; + padding-left:0px; + li { + padding-left:15px; + margin-bottom: 5px; + div{ + height: 20px; + display: flex; + justify-content: flex-start; + } + } + } + } + } + } + + + + div.hr_tree { + overflow:auto; + height:100%; + } + div.left{ +// margin-left:-100%; + float:left; + min-height:100%; + width:160px; + border-right:1px solid #ddd; + } + div.right{ + min-height:100%; + width:105px; + float:left; +// margin-left:20px; +// border-left:1px solid #ddd; + } + } +} + +div.sub_form_s > div{ + height: 62px; + margin-bottom: 8px; +} +div.sub_form_container { + position:relative; + width:100%; + .jp_normal{ + color: black; + } + .jp_active{ + color:red; + } + i{ + font-style: normal; + } + div.sub_frm_tlbar{ + position:absolute; + top:2px; + right:-5px; + z-index: 9999 !important; + + div.sfm_plus { + float:left; + padding:4px 4px; + } + + div.sfm_plus i{ + color: #22bbb3 ; + } + + + div.sfm_minus { + float:left; + padding: 4px 4px; + } + + div.sfm_minus i{ + color: #f7d1cc; + } + + div.sfm_cou{ + float:left; + padding:4px 4px; + } + } + +} + +div.select3-element { + position: relative; + div.select-container { +// width:80%; + max-width: 214px !important; +// min-width: 180px; + min-height:28px; + max-height: 30px; + border: 1px solid #dfdfdf; + padding-right:26px; + overflow: hidden; + +// overflow-x: hidden; + position:relative; + div.suffix { + float:left; + min-height:26px; + height:100%; + width:26px; +// min-width: 15px; +// max-width: 26px; + border-left: 1px solid #dfdfdf; + text-align: center; + color: @default-color; + position:absolute; + right:0px; + top:0px; + line-height:27px; + } + div.val-card { + padding: 1px 5px; + white-space:nowrap; + text-overflow:ellipsis; + -o-text-overflow:ellipsis; + overflow: hidden; + width: 100%; + //颜色更改 + color: @default-color; +// border:1px dashed #09B4AB; + float:left; + i { + font-size:10px; + } + } + } + + div.drop_down_sel { + position: absolute !important; + float: left !important; + z-index: 99999999 !important; + .box-shadow(0 2px 2px #d8f5f5); + li.sel_query { + margin-left:2px; + position:relative; + input { + width:100%; + padding-right: 24px; + border: 1px solid #ddd !important; + } + i { + position: absolute; + top:10px; + right:22px; + } + } + } +} diff --git a/src/static/css/system_config.less b/src/static/css/system_config.less new file mode 100644 index 0000000..2c045c1 --- /dev/null +++ b/src/static/css/system_config.less @@ -0,0 +1,125 @@ +@import "./base.less"; + +.system_cfg { + color: #666666 !important; + .panel-default { + margin:0px; + border-radius: 0px; + border-top: none; + + } + + div.form { + padding-left:25px; + padding-top:0px; + margin-top:-25px; + } + + div.panel-heading.collapse_heading { + border-bottom: 0px; + } + + div.panel-heading { + background-color: rgba(241, 246, 246, 1); + height:36px; + border-radius:0px; + padding:7px 5px; + + label { + position: relative; + color: #999999; + font-size: 12px; + min-width: 170px; + } + + label:nth-child(1) { + font-size:13px; + font-weight: 400; + + } + label:nth-child(3) { + margin-left:75px !important; + } + img { + margin-left:125px; + height: 23px; + width: auto; + cursor:pointer; + } + } + + .save_btn { + margin-top: 25px; + } + + .add_btn{ + float: right; + + } + + + + + table.system_cfg_frm { + > tbody > tr > td > div { + display:block; + float:left; + margin-right: 25px; + position: relative; + span { + display:block; + float:left; + margin-left:45px; + margin-top:6px; + } + span.second_level { + margin-left:2px !important; + } + label { + display:block; + float:left; + height: 100%; + margin:8px 5px; + font-size: 12px; + min-width: 108px; + margin-top:14px; + input { + width:111px !important; + min-width:0px !important; + font-size:12px; + height:15px; + } + input:disabled { + color: #dddddd; + font-weight:400; + } + } + label.error { + color: red; + } + img { + height: 23px; + width: auto; + cursor:pointer; + } + } + + > tbody > tr { + height: 35px; + > td{ + font-size: 13px; + height: 35px; + padding: 0px 8px; + color: #999999; + vertical-align: inherit; + } + + } + + > tbody > tr > td:nth-child(1) { + width: 240px !important; + line-height: 38px; + } + } + +} \ No newline at end of file diff --git a/src/static/css/templates_center.less b/src/static/css/templates_center.less new file mode 100644 index 0000000..9b440d2 --- /dev/null +++ b/src/static/css/templates_center.less @@ -0,0 +1,22 @@ +@import "./base.less"; + +ul.ul-tree.templates_list { + margin: 15px 25px; + li { + border: none !important; + padding-left:38px; + img { + margin-top:0px; + } + font-size: 12px; + overflow:auto; + height:auto !important; + } +} + +div.containr_header { + background: #f1f6f6; + padding:6px 0px; + color: #39c2ba; + border-bottom: 1px solid #dddddd; +} diff --git a/src/static/css/todos.less b/src/static/css/todos.less new file mode 100644 index 0000000..ebc4f1e --- /dev/null +++ b/src/static/css/todos.less @@ -0,0 +1,25 @@ +@import "./base.less"; + +.todos_total { + position:relative; + i { + position: absolute; + left: 26px; + } +} + +div.pop_panel div.heading.creat_bill_heading { + background: #20b4aa; + height: 52px !important; + color: #fff; + line-height: 52px; + text-align: center; + font-size: 18px; +} + +div.pop_panel div.body { + padding-top:25px; + height:90%; + overflow-y:auto !important; + overflow-x: hidden; +} \ No newline at end of file diff --git a/src/static/css/travel_expense.less b/src/static/css/travel_expense.less new file mode 100644 index 0000000..0a4814c --- /dev/null +++ b/src/static/css/travel_expense.less @@ -0,0 +1,1069 @@ +@import "./base.less"; +*{ + margin: 0; + padding: 0; +} + +div.travel_expense { + position:relative; + div.page-title { + float:left; + position:absolute; + top:12px; + margin-left:10px; + padding:3px 5px; + border-bottom:2px solid rgba(9, 180, 171, 1); + } + .main_choose{ + display: flex; + justify-content: flex-start; + margin: 0; + margin-top: 4px; + height: 30px; + li{ + list-style-type: none; + padding-left: 15px; + padding-right: 15px; + margin-right: 10px; + text-align: center; + line-height: 30px; + cursor: pointer; + border-bottom: 1px solid @font-color; + } + .main_active{ + border-bottom-width: 2px; + } + } +} + +.fxinput{ + position: relative; + width: 80% !important; + float: left; +} + +.fxtitle{ + text-align: center; + height:40px; + line-height: 40px; + padding-left: 25px; + padding-right: 20px; +} + +.selectul{ + position: relative; + width:100px; +} + +.showfx{ + width: 100%; + height: 67px; + line-height: 20px; + padding-left: 10px; + list-style: none; + position: absolute; + top:28px; + overflow: auto; + background: #fff; + border:1px solid #E0E0E0; + z-index: 1; +} + + +.fxclass{ + position: absolute; + right: 0px; + top: 4px; + font-size: 14px; + text-align: center; + display: inline-block; + width: 20%; +} + +.fxspan{ + border: 1px dashed @default-color; + height:28px; + line-height: 28px; + margin-bottom:40px; + margin-left: 10px; + text-align: center; + padding: 0; + border-radius: 5px; +} +.sys_fxspan{ + border: 1px dashed @default-color; + height:28px; + line-height: 28px; + margin-bottom:10px; + margin-top: 10px; + margin-left: 10px; + text-align: center; + padding: 5px; + border-radius: 5px; +} +.sys_text{ + width: 100%; +} +.fxresult{ + border: 2px solid #e0e0e0; + height:50px; + line-height: 50px; + margin: 5px; + text-align: center; + margin-left: 10px; +} +.overhidden{ + width:180px; + white-space:nowrap; + text-overflow:ellipsis; + -o-text-overflow:ellipsis; + overflow: hidden; +} + +.savefx{ + text-align: center; + margin-top: 10px; +} +.sys_savefx{ + text-align: center; + margin-top: 10px; + margin-bottom: 10px; +} +.savebtn{ + border: 1px solid @default-color; +} +/* 去掉默认样式,设置新的样式 */ +.myselect{ +// display:block; + width:110px; + height:28px; + line-height: 28px; + box-sizing:border-box; + background: url(../img/arrow.png) no-repeat scroll right center transparent; + border:1px solid #dfdfdf; + outline:none; + padding:0 5px; + font-size:14px; + position:relative; + appearance:none; + -moz-appearance:none; /* Firefox */ + -webkit-appearance:none; /* Safari 和 Chrome */ +} +.myselect option{ + color:#222; + appearance:none; + -moz-appearance:none; /* Firefox */ + -webkit-appearance:none; /* Safari 和 Chrome */ +} +.myselect option:hover{ +// color:#fff; + background:#fff +} +.myselect option:checked{ + background:#fff; +// color:#fff; +} + +.wait{ + position: fixed; + width: 100%; + height: 100%; + background-color: rgba(0,0,0,0.1); + text-align: center; + padding-top: 23%; +// top: 49%; +// left: 49%; +} + +.deleteelment{ + width:12px; + height:12px; +} + +.unfoldelment{ + width:10px; + height:10px; + margin: 3px; + margin-right: 10px; +} + +.addbtn{ + border: none; +} + +.expense_titles{ + height: 600px; + overflow: auto; + button{ + overflow: hidden; + text-overflow: ellipsis; + } +} + +.system_titles{ + height: 600px; + overflow: auto; + button{ + overflow: hidden; + text-overflow: ellipsis; + } +} + +div.condition_search { + border: 1px solid rgba(228, 228, 228, 1); + margin-top:4px; + position:relative; + + .table-heading { + float:left; + width:100%; +// position:relative; + span { + position: absolute; + left:12px; + top:14px; + padding:0px 8px; + border-bottom:2px solid @default-color; + font-size:12px; + } + + } + + div.width-heading { + margin-top:38px; + } + + + div.condition_search_header, div.condition_search_footer { + height: 29px; + background: #f1f6f6; + label { + font-size:12px; + line-height:29px; + } + div.first, label.first{ + float:left; + padding-left:4px; + margin-bottom:0; + button.btn-action { + margin-bottom:2px; + } + + > span { + cursor:pointer; + margin:0px 5px; + font-size:12px; + img { + width:20px; + } + } + + } + label.second{ + font-weight:400; + > span { + cursor:pointer; + margin:0px 5px; + font-size:12px; + img { + width:16px; + } + input { + width:25px; + min-width:25px; + min-height:22px!important; + height:22px !important; + + } + a{ + text-decoration: none; + } + } + float:right; + padding-right:4px; + } + } + + div.condition_search_footer { + background: #fff; + border-top: 1px solid #ddd; + padding-top:2px; + select { + height:22px; + } + label.first { + font-weight:400; + span { + input { + width:50px; + min-width:50px; + } + } + } + } + + div.search_item { + width:100%; + div.search_column_button{ + position:relative; + display:inline-block; + padding-top:25px; + margin:5px; + vertical-align: middle; + } + div.search_column { + position:relative; + display:inline-block; + padding-top:25px; + margin:5px; + vertical-align: middle; + min-width:214px; + select{ + width:200px; + } + + span { + select{ + width:130px !important; + min-width:0px !important; + height:25px; + } + >input.text_input{ + width: 215px; + } + >input.search_ifd { + width:130px !important; + min-width:0px !important; + height:25px; + } + + > input{ + width:135px; + } + + } + + label { + position:absolute; + left:0px; + top:0px; + font-size:10px; + } + + .selectul{ + position: relative; + + .select-container{ + line-height: 25px; + } + + .showul{ + width:214px; + height:100px; + background:#fff; + border:1px solid #ccc; + position: absolute; + z-index: 999999999; + overflow: auto; + } + + .suffix{ + top:0; + } + } + } + } + + div.task_statics { + overflow: hidden; + height:120px; + div.center { + float:left; + position:absolute; + left:-25%; + } + div.task_card { + width:50%; + margin:0px auto; + > div.budget_card{ + cursor: pointer; + * { + cursor: pointer; + } + +// background: rgba(156, 156, 210, 1); + } + > div.request_card{ + cursor: pointer; + * { + cursor: pointer; + } +// background: #e7ca6b; + } + > div.rebuise_card{ + cursor: pointer; + * { + cursor: pointer; + } +// background: #7ca6d6; + img { + width:45px; + margin-top:2px; + } + } + img { + width:35px; + margin-top:5px; + } + > div { + max-width:210px; + padding:10px 20px; + margin:25px; +// border:1px solid #ddd; + height: 75px; + > div.col-md-6 { + height:100%; + label { + display:block; + height:50%; + text-align: right; + margin:0px; + line-height:20px; + font-size:12px; + color:#124601; + } + img{ + margin-left: 28px; + } + } + + } + } + } + +} + +div.table-content { + padding:1px; + table.table_travel_expense { + position: relative; + top: 2px; + table-layout: fixed; + border: 1px solid #ddd; + margin:0px; + thead th { + color: #758aa5; + font-size:12px; + text-align: center; + border: 1px solid #ddd; + font-weight: normal; +// overflow: hidden; + text-overflow:ellipsis ; + } + thead .mdcode_search{ + padding-left: 42%; + height: 36px; + } + tr td { + border: 1px solid #ddd; + font-size:12px; + padding: 0; + vertical-align: middle; + text-align: center; + } + .ellipsis_td{ + overflow: hidden; + text-overflow:ellipsis ; + } + tr.odd { + background: #ffffff; + height:30px; + } + + tr.even{ + background: #f1f6f6; + height:30px; + } + } +} + +div.drop_down_sel { + display:block; + overflow:auto; + overflow-x: hidden; + position:absolute; + max-height:225px; + min-height: 110px; + background: #fff; + border: 1px solid #ddd; + + + ul { + list-style-type: none; + margin:0px; + padding:0px; + width:240px; + background: #fff; + li{ + margin:0px; + padding:0px; + display:block; + width:auto; + width: 230px; + line-height:33px; + height:34px; + position: relative; + text-align:left; + background:#fff; + z-index: 99999999999999; + + div{ + float:left; + input { + margin: 4px 6px; + } + } + >div { + position: absolute; + left:0px; + } + } + } +} + +div.bg-modal { + top:0px; + left:0px; + position:fixed; + width:100%; + height:100%; + background: rgba(255, 255, 255, 0.8); + z-index:9999; +} +div.pop_panel_formula{ + width:70%; + height:60%; + margin:12px auto; + margin-top:85px; + border: 1px solid #ddd; + z-index:9999999; + position: relative; + background:#fff; + overflow:hidden; + .box-shadow(0 1px 10px rgba(20,20,20,0.5)); +} +div.pop_panel { + width:85%; + height:90%; + margin:12px auto; + margin-top:85px; + border: 1px solid #ddd; + z-index:9999999; + position: relative; + background:#fff; + overflow:hidden; + .box-shadow(0 1px 10px rgba(20,20,20,0.5)); + div.heading { + background:#f3f7f7; + height:69px !important; + position:relative; + ul { + margin: 0px; + padding:0px; + list-style: none; + float:left; + bottom:0px; + position: absolute; + padding: 0px 10px; + cursor: pointer; + li { + float:left; + display:block; + padding:18px 5px; + font-size:14px; + color: #39beb5; + margin: 0px 15px; + font-weight:400; + } + li.active { + border-bottom:2px solid #39beb5; + } + } + + .close { + position:absolute; + right:12px; + top:12px; + font-size:20px; + } + .close_create{ + position:absolute; + right:12px; + top:7px; + font-size:20px; + } + } + + div.body { + padding:25px; + padding-top: 70px; + position:relative; + + //去掉下划线后,调整样式 + .col-lg-1, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-md-1, .col-md-10, .col-md-11, .col-md-12, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-sm-1, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-xs-1, .col-xs-10, .col-xs-11, .col-xs-12, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9{ + min-height: 0; + } + div.label { + display:block; + font-size:14px; + text-align: left; + color: #797979; + padding:0px; + margin-bottom: 12px; + } + + div.value { + display:block; + font-size:14px; + text-align: left; + padding:0px; + margin-bottom: 12px; + border-bottom:1px solid #dddddd; + } + + div.tool_icon { + position: absolute; + top:5px; + right:5px; + width: 100%; + .order_number{ + float: left; + margin-left: 2%; + } + .allow_commit{ + color: #337ab7; + } + .forbidden_commit{ + color: #999; + } + div { + float:right; + padding:12px; + i { + color: rgb(57, 190, 181); + } + } + } + } + +} + + + + +div.bill_detail_edit{ + div.pop_panel{ + padding-top:69px; + + div.heading{ + margin-top:-69px; + } + + div.btn-zone-center { + padding-bottom: 40px; + } + } +} + + +div.bill_detail_pop{ + select, input[type="text"], textarea{ + border: none !important; + background:#fff !important; + -webkit-appearance: none; + -moz-appearance: none; + text-indent: 1px; + text-overflow: ''; + border: 1px solid #dfdfdf; + } + div.pop_panel{ + padding-top:69px; + padding-bottom:0px; + div.heading{ + margin-top:-69px; + } + + div.btn-zone-center { + display:none; + } + } + div.body{ + div.form_container{ + div.sub_form{ + div.sub_frm_tlbar{ + display: none; + } + } + .radio{ + overflow: visible; + } + } + div.form_content{ + div.user_element{ + a.btn_user_el_add_user{ + display: none; + } + } + .checkbox_container{ + .cb_label{ + position: static; + } + } + .checkbox{ + .checkbox_container{ + display: block; + } + } + } + .fa-remove:before, .fa-close:before, .fa-times:before { + content: ""; + } + } +} + + + +div.expense_strd_content{ + height:auto; + padding-top:20px; + div.user_element { + text-align: left; + > span { + margin-left: 6px; + width: 100%; + } + span.user_name { + border: 1px solid #ddd; + padding: 2px 5px; + width: auto; + background:@default-color; + color: #fff; + } + + label { + } + + a.btn_user_el_add_user { + font-size:12px; + } + + } + //组织机构 + div.org_select_popup_standard{ + .box-shadow(0 1px 10px rgba(20, 20, 20, 0.5)); + width:300px; + // height:320px; + background:#fff; + position:absolute; + left: 15%; + z-index:9999999999999999999999 !important; + border:1px solid #ddd; + padding-top:22px; + padding-bottom: 25px; + div.btn_cls { + border-bottom: 1px dashed #ddd; + padding-left:4px; + margin-top:-22px !important; + } + div.org_sel_form{ + width:100%; + height:90% !important; + .main_close{ + margin-left: 250px; + } + .org_sel_form_close{ + height: 30px; + line-height: 30px; + } + + div.right{ + width:100%; + min-height:100%; + height:100%; + div.right_area{ + width:100%; + min-height:100%; + height:100%; + overflow:auto; + padding-top: 26px !important; + .selected_personnel{ + background-color:@default-color; + } + .clear_selected_users{ + margin-right: 5px; + } + .area_title { + height: 25px; + margin: 0px 4px; + line-height: 25px; + border-bottom:1px solid #ddd; + margin-top:-26px; + label { + font-size:12px; + padding:0px 2px; + color:white; +// border-left: 2px solid #2f796e; + } + i{ + color:white; + } + span { + input { + margin-top:1px; + height:22px; + line-height: 22px; + min-height: 22px !important; + float:right; + } + } + } + + .area_body { + overflow:hidden; + height:100%; + width:100%; + div.area_content{ + display: flex; + justify-content: center; + margin-top: 10px; + } + ul { + a.hr_name{ + font-size:12px; + display: inline-block; + width: 45px; + height: 20px; + text-align: center; + line-height: 20px; + border: 1px solid #20b4aa; + background-color: #c1e4e7; + color: #666969; + } + .hr_name_addbtn{ + width: 18px; + height: 20px; + border: none; + color: white; + text-align: center; + border:1px solid #20b4aa; + padding: 0; + background-color: #20b4aa; + } + list-style: none; + padding-left:0px; + li { + padding-left:15px; + margin-bottom: 5px; + div{ + height: 20px; + display: flex; + justify-content: flex-start; + } + } + } + } + } + } + + + + div.hr_tree { + overflow:auto; + height:100%; + } + div.left{ + // margin-left:-100%; + float:left; + min-height:100%; + width:160px; + border-right:1px solid #ddd; + margin-left: 0; + } + div.right{ + min-height:100%; + width:105px; + float:left; + margin-left: 0; + // margin-left:20px; + // border-left:1px solid #ddd; + } + } + } + div.expense_standard { + background: #fafafa; + padding: 0px; + div.row { + border:none !important; + background: #fff; + } + div.row.first{ + margin-top: 10px; + } + div.second{ + height:40px; + margin-top: 10px; + line-height: 40px; + } + div.row.third{ + padding-bottom: 10px; + .box-shadow(0px 2px 1px #999); + } + img.expense_standard_filter { + width:16.22px; + height:16.22px; + text-align: right; + } + .expense_standard_radio{ + vertical-align: middle; + margin: 0; + } + div.table-content { + margin:20px 45px; + + .showtype{ + list-style: none; + line-height:28px; + background:#fff; + max-height: 200px; + overflow: auto; + width:150px; + position: absolute; + z-index: 999999; + top:28px; + border:1px solid #e0e0e0; + vertical-align: middle; + } + + .typeclass{ + line-height: 28px; + padding-left:5px; + width:150px; + display: inline-block; + } + + .selectclass{ + position: relative; + margin-left:10px; + top:1px; +// top:-34px; + } + + + table.table_travel_expense { + top:0px; + background: #fff; + margin-bottom:10px; + .Inverse_icon{ + width: 10%; + position: absolute; + right: 0; + top: 7px; + color: #09b4ab; + cursor: pointer; + } + td { + height:24px; + position: relative; + .rm-title { +// position:absolute; + } + .relation-title{ + text-decoration: none; + color: #66757E; + i{ + color: #337ab7; + } + } + vertical-align: middle; + input { + min-width:0px !important; + width:100%; + } + select { + min-width:0px !important; + width:100% !important; + } + textarea { + min-width:0px !important; + width:100% !important; + } + a.foldBtn { + position: absolute; + top: 5px; + left: -2px; + background: rgba(255,255,255, 0.2); + z-index: 999; + } + } + + td.budget { + padding:0px !important; + } + + td.expenseTitle { + background:#f1f6f6; + vertical-align: middle; + text-align: center; + } + } + } + .filter{ + text-align: left; + label { + padding-left:15px; + font-weight:normal; + + } + .btnbtn{ + padding:3px 7px; + } + } + } + .btn-action { + height: 28px; + padding: 0px 15px; + line-height: 28px; + } + select { + min-width:100px; + } +} + +div.left-expense-title { + padding-top:34px; + position: fixed; + width: 280px; + height:90%; + div.containr_header { + margin-top:-33px; + padding: 0; + height: 23px; + span{ + width: 49%; + text-align: center; + display: inline-block; + height: 100%; + border-bottom:1px solid @font-color; + cursor: pointer; + } + .type_strand{ + border-bottom:2px solid @font-color; + } + } + button.btn-elb { + width:100% !important; + } +} + + + diff --git a/src/static/css/workflow.less b/src/static/css/workflow.less new file mode 100644 index 0000000..6993705 --- /dev/null +++ b/src/static/css/workflow.less @@ -0,0 +1,93 @@ +@import "./base.less"; +@flowheight1:120px; +@flowheight2:400px; +.flowtitle{ + text-align: center; +} +#workflowcontent{ +// padding-left:260px; +// padding-right: 260PX; + display: flex; + justify-content: space-around; + flex-wrap: nowrap; + i{ + color:rgba(255,0,0,0.4); + font-size: 28px; + } + .back_btn{ + width: 1200px; + margin-top: 200px; + padding: 0; + display: flex; + justify-content: center; + } + .workflow_part{ + display: flex; + justify-content: flex-start; + flex-wrap: nowrap; + opacity: 0.8; + vertical-align: middle; + width:@flowheight2; +// height:@flowheight1; + line-height:28px; +// border:2px solid @default-color; + border-radius: 10px; + margin: 20px; + position: relative; +// background:rgba(240,240,240,0.5); + .workflow_btn img{ + width: 250px; + } + .part{ + width: 150px; + padding-top: 93px; + display: flex; + align-items: flex-start; + flex-direction: column; + justify-content:flex-start; + .btn_class{ + float: left; + } + p{ + margin: 0; + margin-left:10px ; + } + .kongbai{ + width: 100%; + height: 20px; + } + } + .workflow_type{ + margin-top: 10px; + padding-left: 50px; + color: @default-color; + font-size: 20px; + } +// .part{ +// width:1196px; +// height:116px; +// position: absolute; +// top:0; +// left:0; +// background:#fff; +// border-radius: 10px; +// text-align: left; +// +// p{ +// width:800px; +// height:118px; +// padding-left:100px; +// line-height: 118px; +// font-size: 20px; +// display: inline-block; +// color:@default-color; +// +// span{ +// color:rgba(255,0,0,0.8); +// } +// } +// } + } + +} + diff --git a/src/static/img/ad.jpg b/src/static/img/ad.jpg new file mode 100644 index 0000000..896bcd2 --- /dev/null +++ b/src/static/img/ad.jpg Binary files differ diff --git a/src/static/img/addelement.png b/src/static/img/addelement.png new file mode 100644 index 0000000..271b66f --- /dev/null +++ b/src/static/img/addelement.png Binary files differ diff --git a/src/static/img/arrow.png b/src/static/img/arrow.png new file mode 100644 index 0000000..7421a34 --- /dev/null +++ b/src/static/img/arrow.png Binary files differ diff --git a/src/static/img/bs5.jpg b/src/static/img/bs5.jpg new file mode 100644 index 0000000..90df642 --- /dev/null +++ b/src/static/img/bs5.jpg Binary files differ diff --git a/src/static/img/bs6.jpg b/src/static/img/bs6.jpg new file mode 100644 index 0000000..dd8bb15 --- /dev/null +++ b/src/static/img/bs6.jpg Binary files differ diff --git a/src/static/img/bs7.jpg b/src/static/img/bs7.jpg new file mode 100644 index 0000000..4c5b0eb --- /dev/null +++ b/src/static/img/bs7.jpg Binary files differ diff --git a/src/static/img/bs8.jpg b/src/static/img/bs8.jpg new file mode 100644 index 0000000..af3c900 --- /dev/null +++ b/src/static/img/bs8.jpg Binary files differ diff --git a/src/static/img/bs9.jpg b/src/static/img/bs9.jpg new file mode 100644 index 0000000..f15d8f1 --- /dev/null +++ b/src/static/img/bs9.jpg Binary files differ diff --git a/src/static/img/budget_card.png b/src/static/img/budget_card.png new file mode 100644 index 0000000..d1488b1 --- /dev/null +++ b/src/static/img/budget_card.png Binary files differ diff --git a/src/static/img/budget_settings_guid.jpg b/src/static/img/budget_settings_guid.jpg new file mode 100644 index 0000000..9cc0b76 --- /dev/null +++ b/src/static/img/budget_settings_guid.jpg Binary files differ diff --git a/src/static/img/business-textbook.jpg b/src/static/img/business-textbook.jpg new file mode 100644 index 0000000..ecad7b5 --- /dev/null +++ b/src/static/img/business-textbook.jpg Binary files differ diff --git a/src/static/img/business3.png b/src/static/img/business3.png new file mode 100644 index 0000000..cca7d0a --- /dev/null +++ b/src/static/img/business3.png Binary files differ diff --git a/src/static/img/calculate.png b/src/static/img/calculate.png new file mode 100644 index 0000000..9ecd9a6 --- /dev/null +++ b/src/static/img/calculate.png Binary files differ diff --git a/src/static/img/calendar.png b/src/static/img/calendar.png new file mode 100644 index 0000000..cb0e76a --- /dev/null +++ b/src/static/img/calendar.png Binary files differ diff --git a/src/static/img/cfg_center_1.png b/src/static/img/cfg_center_1.png new file mode 100644 index 0000000..2b975f2 --- /dev/null +++ b/src/static/img/cfg_center_1.png Binary files differ diff --git a/src/static/img/cfg_center_2.png b/src/static/img/cfg_center_2.png new file mode 100644 index 0000000..ed0817d --- /dev/null +++ b/src/static/img/cfg_center_2.png Binary files differ diff --git a/src/static/img/cfg_center_3.png b/src/static/img/cfg_center_3.png new file mode 100644 index 0000000..3684c1c --- /dev/null +++ b/src/static/img/cfg_center_3.png Binary files differ diff --git a/src/static/img/cfg_center_4.png b/src/static/img/cfg_center_4.png new file mode 100644 index 0000000..3bf4571 --- /dev/null +++ b/src/static/img/cfg_center_4.png Binary files differ diff --git a/src/static/img/cfg_center_5.png b/src/static/img/cfg_center_5.png new file mode 100644 index 0000000..681cc9d --- /dev/null +++ b/src/static/img/cfg_center_5.png Binary files differ diff --git a/src/static/img/cfg_center_6.png b/src/static/img/cfg_center_6.png new file mode 100644 index 0000000..19e9b9b --- /dev/null +++ b/src/static/img/cfg_center_6.png Binary files differ diff --git a/src/static/img/cfg_center_7.png b/src/static/img/cfg_center_7.png new file mode 100644 index 0000000..b1f89e7 --- /dev/null +++ b/src/static/img/cfg_center_7.png Binary files differ diff --git a/src/static/img/close.png b/src/static/img/close.png new file mode 100644 index 0000000..c0bd7af --- /dev/null +++ b/src/static/img/close.png Binary files differ diff --git a/src/static/img/close2.png b/src/static/img/close2.png new file mode 100644 index 0000000..a2e71c1 --- /dev/null +++ b/src/static/img/close2.png Binary files differ diff --git a/src/static/img/continue.png b/src/static/img/continue.png new file mode 100644 index 0000000..887dc1e --- /dev/null +++ b/src/static/img/continue.png Binary files differ diff --git a/src/static/img/create_form.png b/src/static/img/create_form.png new file mode 100644 index 0000000..10ae495 --- /dev/null +++ b/src/static/img/create_form.png Binary files differ diff --git a/src/static/img/createorder.png b/src/static/img/createorder.png new file mode 100644 index 0000000..3c0e40a --- /dev/null +++ b/src/static/img/createorder.png Binary files differ diff --git a/src/static/img/createorder.png.BASE.png b/src/static/img/createorder.png.BASE.png new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/static/img/createorder.png.BASE.png diff --git a/src/static/img/createorder.png.LOCAL.png b/src/static/img/createorder.png.LOCAL.png new file mode 100644 index 0000000..bc5bb6e --- /dev/null +++ b/src/static/img/createorder.png.LOCAL.png Binary files differ diff --git a/src/static/img/createorder.png.REMOTE.png b/src/static/img/createorder.png.REMOTE.png new file mode 100644 index 0000000..3c0e40a --- /dev/null +++ b/src/static/img/createorder.png.REMOTE.png Binary files differ diff --git a/src/static/img/delete.png b/src/static/img/delete.png new file mode 100644 index 0000000..9f25f3d --- /dev/null +++ b/src/static/img/delete.png Binary files differ diff --git a/src/static/img/deleteelement.png b/src/static/img/deleteelement.png new file mode 100644 index 0000000..8926b8a --- /dev/null +++ b/src/static/img/deleteelement.png Binary files differ diff --git a/src/static/img/doc.png b/src/static/img/doc.png new file mode 100644 index 0000000..9cfb231 --- /dev/null +++ b/src/static/img/doc.png Binary files differ diff --git a/src/static/img/edit_saved_templates.jpg b/src/static/img/edit_saved_templates.jpg new file mode 100644 index 0000000..f9885b0 --- /dev/null +++ b/src/static/img/edit_saved_templates.jpg Binary files differ diff --git a/src/static/img/folder.png b/src/static/img/folder.png new file mode 100644 index 0000000..c6a149f --- /dev/null +++ b/src/static/img/folder.png Binary files differ diff --git a/src/static/img/form_created.png b/src/static/img/form_created.png new file mode 100644 index 0000000..3d1b78a --- /dev/null +++ b/src/static/img/form_created.png Binary files differ diff --git a/src/static/img/form_default.png b/src/static/img/form_default.png new file mode 100644 index 0000000..521ed50 --- /dev/null +++ b/src/static/img/form_default.png Binary files differ diff --git a/src/static/img/guide.png b/src/static/img/guide.png new file mode 100644 index 0000000..00b2108 --- /dev/null +++ b/src/static/img/guide.png Binary files differ diff --git a/src/static/img/hero.png b/src/static/img/hero.png new file mode 100644 index 0000000..bf978ad --- /dev/null +++ b/src/static/img/hero.png Binary files differ diff --git a/src/static/img/hero_guide.png b/src/static/img/hero_guide.png new file mode 100644 index 0000000..8539ad1 --- /dev/null +++ b/src/static/img/hero_guide.png Binary files differ diff --git a/src/static/img/heroico.ico b/src/static/img/heroico.ico new file mode 100644 index 0000000..cf9f8c1 --- /dev/null +++ b/src/static/img/heroico.ico Binary files differ diff --git a/src/static/img/list.png b/src/static/img/list.png new file mode 100644 index 0000000..a0fbfc4 --- /dev/null +++ b/src/static/img/list.png Binary files differ diff --git a/src/static/img/loading.gif b/src/static/img/loading.gif new file mode 100644 index 0000000..a17371e --- /dev/null +++ b/src/static/img/loading.gif Binary files differ diff --git a/src/static/img/more_collapse.png b/src/static/img/more_collapse.png new file mode 100644 index 0000000..57ae876 --- /dev/null +++ b/src/static/img/more_collapse.png Binary files differ diff --git a/src/static/img/next_step.jpg b/src/static/img/next_step.jpg new file mode 100644 index 0000000..39cf3e0 --- /dev/null +++ b/src/static/img/next_step.jpg Binary files differ diff --git a/src/static/img/no.png b/src/static/img/no.png new file mode 100644 index 0000000..e8a9157 --- /dev/null +++ b/src/static/img/no.png Binary files differ diff --git a/src/static/img/ordering_1.png b/src/static/img/ordering_1.png new file mode 100644 index 0000000..252c960 --- /dev/null +++ b/src/static/img/ordering_1.png Binary files differ diff --git a/src/static/img/ordering_2.png b/src/static/img/ordering_2.png new file mode 100644 index 0000000..ed59a7e --- /dev/null +++ b/src/static/img/ordering_2.png Binary files differ diff --git a/src/static/img/page.png b/src/static/img/page.png new file mode 100644 index 0000000..3c13f43 --- /dev/null +++ b/src/static/img/page.png Binary files differ diff --git a/src/static/img/pic.png b/src/static/img/pic.png new file mode 100644 index 0000000..c00ac16 --- /dev/null +++ b/src/static/img/pic.png Binary files differ diff --git a/src/static/img/query.png b/src/static/img/query.png new file mode 100644 index 0000000..79a8026 --- /dev/null +++ b/src/static/img/query.png Binary files differ diff --git a/src/static/img/rebuise_card.png b/src/static/img/rebuise_card.png new file mode 100644 index 0000000..c5da74b --- /dev/null +++ b/src/static/img/rebuise_card.png Binary files differ diff --git a/src/static/img/reimbursement_settings_guid.jpg b/src/static/img/reimbursement_settings_guid.jpg new file mode 100644 index 0000000..01aaa20 --- /dev/null +++ b/src/static/img/reimbursement_settings_guid.jpg Binary files differ diff --git a/src/static/img/reimbursement_standard_settings_guid.jpg b/src/static/img/reimbursement_standard_settings_guid.jpg new file mode 100644 index 0000000..9abbf9d --- /dev/null +++ b/src/static/img/reimbursement_standard_settings_guid.jpg Binary files differ diff --git a/src/static/img/request_billing_setting_guid.jpg b/src/static/img/request_billing_setting_guid.jpg new file mode 100644 index 0000000..c548ad0 --- /dev/null +++ b/src/static/img/request_billing_setting_guid.jpg Binary files differ diff --git a/src/static/img/request_card.png b/src/static/img/request_card.png new file mode 100644 index 0000000..e2215d4 --- /dev/null +++ b/src/static/img/request_card.png Binary files differ diff --git a/src/static/img/search_item.png b/src/static/img/search_item.png new file mode 100644 index 0000000..f4bcea0 --- /dev/null +++ b/src/static/img/search_item.png Binary files differ diff --git a/src/static/img/switch_off.png b/src/static/img/switch_off.png new file mode 100644 index 0000000..7523591 --- /dev/null +++ b/src/static/img/switch_off.png Binary files differ diff --git a/src/static/img/switch_on.png b/src/static/img/switch_on.png new file mode 100644 index 0000000..dcbf856 --- /dev/null +++ b/src/static/img/switch_on.png Binary files differ diff --git a/src/static/img/system_entry.jpg b/src/static/img/system_entry.jpg new file mode 100644 index 0000000..63f4cdf --- /dev/null +++ b/src/static/img/system_entry.jpg Binary files differ diff --git a/src/static/img/system_settings.jpg b/src/static/img/system_settings.jpg new file mode 100644 index 0000000..cdde15d --- /dev/null +++ b/src/static/img/system_settings.jpg Binary files differ diff --git a/src/static/img/to_do.png b/src/static/img/to_do.png new file mode 100644 index 0000000..fcb2020 --- /dev/null +++ b/src/static/img/to_do.png Binary files differ diff --git a/src/static/img/travel_expense_del.png b/src/static/img/travel_expense_del.png new file mode 100644 index 0000000..46a1e35 --- /dev/null +++ b/src/static/img/travel_expense_del.png Binary files differ diff --git a/src/static/img/travel_expense_export.png b/src/static/img/travel_expense_export.png new file mode 100644 index 0000000..8a2a2de --- /dev/null +++ b/src/static/img/travel_expense_export.png Binary files differ diff --git a/src/static/img/travel_expense_full.png b/src/static/img/travel_expense_full.png new file mode 100644 index 0000000..6aa9ae3 --- /dev/null +++ b/src/static/img/travel_expense_full.png Binary files differ diff --git a/src/static/img/travel_expense_import.png b/src/static/img/travel_expense_import.png new file mode 100644 index 0000000..a25904e --- /dev/null +++ b/src/static/img/travel_expense_import.png Binary files differ diff --git a/src/static/img/travel_expense_view_content.png b/src/static/img/travel_expense_view_content.png new file mode 100644 index 0000000..14131b7 --- /dev/null +++ b/src/static/img/travel_expense_view_content.png Binary files differ diff --git a/src/static/img/u6181.png b/src/static/img/u6181.png new file mode 100644 index 0000000..d845596 --- /dev/null +++ b/src/static/img/u6181.png Binary files differ diff --git a/src/static/img/unfold.png b/src/static/img/unfold.png new file mode 100644 index 0000000..357f89c --- /dev/null +++ b/src/static/img/unfold.png Binary files differ diff --git a/src/static/img/update.png b/src/static/img/update.png new file mode 100644 index 0000000..89122cc --- /dev/null +++ b/src/static/img/update.png Binary files differ diff --git a/src/static/img/user1.png b/src/static/img/user1.png new file mode 100644 index 0000000..bd3bd08 --- /dev/null +++ b/src/static/img/user1.png Binary files differ diff --git a/src/static/img/user2.png b/src/static/img/user2.png new file mode 100644 index 0000000..654553f --- /dev/null +++ b/src/static/img/user2.png Binary files differ diff --git a/src/static/img/user3.png b/src/static/img/user3.png new file mode 100644 index 0000000..ecba99a --- /dev/null +++ b/src/static/img/user3.png Binary files differ diff --git a/src/static/img/user4.png b/src/static/img/user4.png new file mode 100644 index 0000000..6401285 --- /dev/null +++ b/src/static/img/user4.png Binary files differ diff --git a/src/static/img/workflow_bx.png b/src/static/img/workflow_bx.png new file mode 100644 index 0000000..6cb6572 --- /dev/null +++ b/src/static/img/workflow_bx.png Binary files differ diff --git a/src/static/img/workflow_sq.png b/src/static/img/workflow_sq.png new file mode 100644 index 0000000..89b2e85 --- /dev/null +++ b/src/static/img/workflow_sq.png Binary files differ diff --git a/src/static/img/workflow_ys.png b/src/static/img/workflow_ys.png new file mode 100644 index 0000000..a63cf6f --- /dev/null +++ b/src/static/img/workflow_ys.png Binary files differ diff --git a/src/static/img/workflowing_settins_guid.png b/src/static/img/workflowing_settins_guid.png new file mode 100644 index 0000000..7d12a9a --- /dev/null +++ b/src/static/img/workflowing_settins_guid.png Binary files differ diff --git a/src/static/img/yes.png b/src/static/img/yes.png new file mode 100644 index 0000000..bfc0161 --- /dev/null +++ b/src/static/img/yes.png Binary files differ diff --git a/src/static/js/.DS_Store b/src/static/js/.DS_Store new file mode 100644 index 0000000..288b8c3 --- /dev/null +++ b/src/static/js/.DS_Store Binary files differ diff --git a/src/static/js/app.js b/src/static/js/app.js new file mode 100644 index 0000000..e586b5c --- /dev/null +++ b/src/static/js/app.js @@ -0,0 +1,756 @@ +var filed = ""; +var appId = '';//租户公司下业务系统的Id +var permissionlist = ""; +var guide_info = ""; +var cddata = ""; +var app_userinfo = ""; +var all_formula = ""; +var register_url = "";//"http://csza.chfcloud.com/"; +var work_flow_url = "";//"http://ubpyq.chfcloud.com:8087/"; +var userPermission_url = ""; +var userPermission_method = ""; + +// var iframe_url = register_url; +var iframe_url = register_url; +var key = "dec"; + + +// usr/local/nginx 前端部署目录 +// $.ajax({ +// type:"get", +// url:"./static/js/qxv2.json", +// async:false, +// success:function(res){ +// } +// }); + + +var app = angular.module('app', [ + 'ngRoute', + 'business', + 'billing_cfg_guide', + 'budget_form_customize', + 'budget_froms', + 'http_module', + 'saved_form_directive', + 'cfg_center', + 'system_cfg', + 'travel_expense', + 'travel_expense_todos', + 'templates_center', + 'messages_center', + 'user_forms_center', + 'expend_standard', + 'registry_module', + 'work_flow_module' + ]) + .service('global_service', function() { + this.set_indus = function(indus) { + window.localStorage.indus = indus; + } + this.get_indus = function() { + return window.localStorage.indus; + } + }) + .controller('appCtrl', [ + '$scope', + '$location', + 'global_service', + '$http', + 'http_service', + '$rootScope', + function($scope, $location, global_service,$http,http_service,$rootScope) { + $scope.theme = "theme1"; + $scope.indus = ''; + $scope.$on('$locationChangeStart', function(event) { + $scope.url_change_start = true; + }); + $scope.$on('$routeChangeSuccess', function() { + $scope.url_change_start = false; + var path = $location.path(); + $scope.indus = global_service.get_indus(); + if(!$scope.indus && path === '/cfg_center') { + sweetAlert("请选择行业信息", "", "error"); + //alert('请先选择行业信息。'); + $location.path('/business'); + } + }); + + $scope.btncolor = function() { + var rgb = $('#top').css('background-color'); + rgb = rgb.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/); + + function hex(x) { + return("0" + parseInt(x).toString(16)).slice(-2); + } + rgb = "#" + hex(rgb[1]) + hex(rgb[2]) + hex(rgb[3]); + return rgb; + }; + $rootScope.swalWhether = function(obj, fun) { + swal({ + title: obj.title || "确定删除?", + text: obj.text, + type: obj.type || "warning", + showCancelButton: true, + confirmButtonText: "确定", + cancelButtonText: "取消", + closeOnConfirm: false, + confirmButtonColor: $scope.btncolor(), + html:true + }, fun); + } + $rootScope.swalsuccess = function(obj, fun) { + $scope.superSWal({ + title: "完成", + text: obj.text || "", + type: "success", + confirmButtonColor: $scope.btncolor(), + html:true + }, fun); + } + $rootScope.swalerror = function(obj) { + $scope.superSWal({ + title: "错误", + text: obj.text || "", + type: "error", + confirmButtonColor: $scope.btncolor(), + html:true + }) + } + $scope.swalwarning = function(obj) { + $scope.superSWal({ + title: "警告", + text: obj.text || "", + type: "warning", + confirmButtonColor: $scope.btncolor(), + html:true + }) + } + $scope.superSWal = function(obj) { + swal({ + title: obj.title, + text: obj.text, + type: obj.type, + confirmButtonColor: $scope.btncolor(), + confirmButtonText: "确定", + html:true + }) + } + $scope.toastrapi=function(){ + toastr.options = { + "closeButton": false, //是否显示关闭按钮 + "debug": false, //是否使用debug模式 + "positionClass": "toast-top-center", //弹出窗的位置 + "preventDuplicates":true,//控制弹出是否可以重复弹出 + "showDuration": "300", //显示的动画时间 + "hideDuration": "1000", //消失的动画时间 + "timeOut": "3000", //展现时间 + "extendedTimeOut": "500", //加长展示时间 + "showEasing": "swing", //显示时的动画缓冲方式 + "hideEasing": "linear", //消失时的动画缓冲方式 + "showMethod": "fadeIn", //显示时的动画方式 + "hideMethod": "fadeOut" //消失时的动画方式 + }; + } + $rootScope.tsuccess = function(obj){ + $scope.tsuccess(obj); + } + $scope.tsuccess = function(obj) { + $scope.toastrapi(); + toastr.success(obj||"","操作成功"); + } + $scope.tinfo = function(obj,type) { + $scope.toastrapi(); + if(type){ + toastr.info(obj||"","提示");//提示 + }else{ + toastr.info(obj||"","提醒");//提示 + } + + } + $scope.twarning = function(obj) { + $scope.toastrapi(); + toastr.warning(obj||"","警告");//警告 + } + $rootScope.twarning = function(obj){ + $scope.twarning(obj); + } + $rootScope.terro = function(obj,type){ + $scope.terro(obj,type); + } + $scope.terro = function(obj,type) { + $scope.toastrapi(); + if(type == true){ + toastr.error(obj||"","提示");//提示 + }else{ + toastr.error(obj||"","错误");//错误 + } + + } + //查询结果为空提示 + $rootScope.search_hint = function(value,type,str){ + switch(type){ + case "string": + if(value == ""){ + if(str != undefined){ + $scope.tinfo(str,true); + }else{ + $scope.twarning("没有返回数据"); + } + } + break; + case "object": + if($.isEmptyObject(value)){ + if(str != undefined){ + $scope.tinfo(str,true); + }else{ + $scope.twarning("没有返回数据"); + } + } + break; + case "arrary": + if(value.length == 0){ + if(str != undefined){ + $scope.tinfo(str,true); + }else{ + $scope.twarning("没有返回数据"); + } + } + break; + } + } + $scope.redirect_to = function(path) { + if(path.indexOf(path,'travel_expense') != -1){ + $rootScope.my_form_type = 1; + } + $location.path(path); + }; + $scope.redirect_to_args = function() { + $location.path([].slice.call(arguments).join('/')); + }; + $rootScope.getNewDate = function(str){ + if(str != undefined && _.isString(str) && str.indexOf("-") != -1){ + return new Date(str.replace(/-/g,"/")); + }else if(str != undefined){ + return new Date(str); + }else{ + return new Date(); + } + + } + angular.element(document).ready(function() { + $http({ + url:"./static/js/config.json",//请求配置文件 + method:"GET", + data:token + }).then(function(res){ + var config = res.data.config; + appId = strDec(config.appId,key); + userPermission_url = strDec(config.userPermission_url,key); + userPermission_method = strDec(config.userPermission_method,key); + register_url = strDec(config.register_url,key); + work_flow_url = strDec(config.work_flow_url,key); + iframe_url = register_url; + }) + + + function setCookie(cname,cvalue,exdays){ + var d = $rootScope.getNewDate(); + d.setTime(d.getTime()+(exdays*24*60*60*1000)); + var expires = "expires="+d.toGMTString(); + document.cookie = cname + "=" + cvalue + "; " + expires; + } + function getCookie(cname){ + var name = cname + "="; + var ca = document.cookie.split(';'); + for(var i=0; i<ca.length; i++) { + var c = ca[i].trim(); + if (c.indexOf(name)==0) return c.substring(name.length,c.length); + } + return ""; + } + + function getQueryString(name) { //获取url参数的值 + var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); + var r = window.location.search.substr(1).match(reg); + if (r != null) return unescape(r[2]); return null; + } + if (sessionStorage.getItem("referrer") == "" || sessionStorage.getItem("referrer") == null) { + sessionStorage.setItem("referrer",document.referrer); + } + +// if (sessionStorage.getItem("referrer").indexOf("sunscloud") < 0 && getQueryString("origin_change") != 1) {//新旧域名转换页跳转可以进入系统 +// // $rootScope.terro("登录异常!"); +// window.location.href = register_url; +// } + if(window.location.href.indexOf("=") != -1){ + setCookie("token",getQueryString("token"),3000); + var csc_compid = getQueryString("csc_compid"); + var csc_comp_code = getQueryString("csc_comp_code"); + var tenantId = getQueryString("tenantId"); + var companyRowId = getQueryString("companyRowId"); + setCookie("csc_compid",csc_compid,30000); + setCookie("csc_comp_code",csc_comp_code,30000); + setCookie("tenantId",tenantId,30000); + setCookie("companyRowId",companyRowId,30000); + if(window.location.href.indexOf("epc.changhong") != -1){// 新旧域名装换 0113 + window.location.href = "https://travel.sunscloud.com/origin_change.html?token="+getQueryString("token")+"&csc_compid="+csc_compid+"&csc_comp_code="+ + csc_comp_code+"&tenantId="+tenantId+"&companyRowId="+companyRowId; + } + } + + // 获取用户信息 + http_service.post('permission/search/userInfo',{},function(response){ + if(response.data.opState == false){ + var href_str = register_url + "index.html" + window.location.href = href_str; + return false; + } + app_userinfo = response.data.data; + $scope.app_userinfo = app_userinfo; + //采集布码 + window["_BFD"] = window["_BFD"] || {}; + _BFD.BFD_INFO = { + "user_id": app_userinfo.openId?app_userinfo.openId:0, //当前用户 openid,如果未登录就为0 + "page_type": "homepage" //当前页面标识,请勿修改 + }; + _BFD.script = document.createElement("script"); + _BFD.script.type = "text/javascript"; + _BFD.script.async = true; + _BFD.script.charset = "utf-8"; + _BFD.script.src = "https://dcjscdn.chiq-cloud.com/ds/ysx/ysxcl.cdn.min-1.0.0.js";//这里是各系统分配的JS代码 + document.getElementsByTagName("head")[0].appendChild(_BFD.script); + //采集布码 + }); + var token = {"token":getCookie("token")}; + + //向导判断 + function guide_check(){ + if($location.path() == ""){ + if(guide_info == undefined){ + $location.path("/travel_expense_todos/");//暂时跳转到此页 + return false; + } + var guide = guide_info; + if(guide == "" ){ + $location.path("/guide"); + }else if(guide[0].gcPcsStep == 0){ + $location.path("/travel_expense_todos/"); + }else{ + $location.path("/billing_cfg_guide/"+guide[0].gcInCode+"/"+(parseInt(guide[0].gcPcsCode)-10)/10); + } + } + } + //系统配置 启用预算、申请、报销 + http_service.post('syscfg/list', {}, function(res) { + var data = res.data.data; + _.each(data, function(obj) { +// var val_txt = obj['scValue']; + switch(obj.scName){ + case "budget_open": + $rootScope.budget_open = obj.scValue; + break; + case "apply_open": + $rootScope.apply_open = obj.scValue; + break; + case "expend_open": + $rootScope.expend_open = obj.scValue; + break; + } + }); + }); + + //获取向导信息 + $http({ + url:"./travel-web/guiCfg/search", + method:"POST", + data:token + }).then(function(res){ + guide_info = res.data.data; + if(guide_info != undefined) { + if(guide_info && guide_info.length != 0){ + global_service.set_indus(guide_info[0].gcInCode); + } + } + // 获取权限列表 + $http({ + // url:"./travel-web/permission/search/userPermission", //正式 + // method:"POST", // 正式 + // url:"./static/js/userPermission.json",//假数据1 + url:userPermission_url,//测试 + method:userPermission_method,//测试 + data:token + }).then(function(res){ +// permissionlist = res.data.data;//假数据1 + // permissionlist = res.data.value.functionPermissionSet;/// + permissionlist = res.data.data.value.functionPermissionSet; // 正式 + // if(res.data.data){ + // permissionlist = res.data.data.resources; + // } + var guide_flag = false; + //权限递归 判断 + function permission_judge(list){ + _.each(list,function(_list){ + if(_list.name == '/guide'){ + guide_flag = true; + return guide_flag; + }else if(!_.isNull(_list.children)){ + return permission_judge(_list.children); + } + }) + } + permission_judge(permissionlist) +// _.each(permissionlist,function(_list){ +// if(_list.url == "/guide"){ +// guide_flag =true; +// } +// }) + if(guide_flag){ + guide_check(); + }else{ + $location.path("/travel_expense_todos/"); + } + },function(err){ + //弹窗 + }); + },function(err){ + //弹窗 + }) + //获取主数据信息 + http_service.post('supp/search/elField', {}, function(res) { + filed = res.data.data.field; + cddata = res.data.data.data; + appId = res.data.data.appId; + }) + $('ul.navbar-nav li.dropdown').on('mouseenter', function(event) { + $(this).closest('li.dropdown').addClass('open'); + }).on('mouseleave', function() { + $('li.dropdown').removeClass('open'); + }); + }); + + //权限判断方法 (修改) + $scope.permission_check = function(code,urls){ + //权限递归 找parent +// function permission_find(list,judge){ +// _.each(list,function(_list){ +// if(judge.indexOf(_list.name) != -1){ +// code += _list.name; +// list_data = list; +// return list; +// }else if(!_.isNull(_list.children)){ +// return permission_find(_list.children,judge); +// } +// }) +// } + //权限递归 判断 +// function permission_judge(list,judge){ +// _.each(list,function(_list){ +// if(judge == _list.name){ +// flag = true; +// }else if(!_.isNull(_list.children)){ +// return permission_judge(_list.children,judge); +// } +// }) +// } + var flag = false; + var parentId; + if(urls == 1){ + if(code == "editbtn" || code == "backbtn"){ + if($location.path() == "/travel_expense_todos/"){ + return true; + } + } + if(code == "edit_template" && $location.path() == "/templates_center"){ + code = "edit_template_center"; + } + + var path; + if($location.path().indexOf("/budget_froms/") != -1){ + path = $location.path(); + path = path.slice(-3); + path = path.replace("/",""); + path = "/budget_froms/"+path+"/"; + }else{ + path = $location.path(); + } + var list_data = undefined; + +// permission_find(permissionlist,path); +// if(list_data != undefined){ +// permission_judge(list_data,code); +// } + _.each(permissionlist,function(_perlist){ + if(path.indexOf(_perlist.name) != -1){ + code += _perlist.name; + } + }); + _.each(permissionlist,function(_list){ + if(_list.name == code){ + flag = true; + } + }) + }else if(urls == 2){ + if($location.path() == "/travel_expense_todos/"){ + return true; + } + if(code == "提交"){ + code = "commitbtn"; + }else{ + code = "auditbtn"; + } +// var list_data = undefined; +// permission_find(permissionlist,path); +// if(list_data != undefined){ +// permission_judge(list_data,code); +// } + _.each(permissionlist,function(_perlist){ + if($location.path().indexOf(_perlist.name) != -1){ + code += _perlist.name; + } + }); + _.each(permissionlist,function(_list){ + if(_list.name == code){ + flag = true; + } + }) + }else if(urls == 3){ + switch(code){ + case 10: + code = "termination_budget"; + break; + case 20: + code = "termination_apply"; + break; + case 30: + code = "termination_expend"; + break; + } + _.each(permissionlist,function(_list){ + if(_list.name == code){ + flag = true; + } + }) + }else if(urls == 4){ + switch(code){ + case 10: + code = "search_budget"; + break; + case 20: + code = "search_apply"; + break; + case 30: + code = "search_expend"; + break; + } + + _.each(permissionlist,function(_list){ + if(_list.name == code){ + flag = true; + } + }) + }else{ + _.each(permissionlist,function(_list){ + if(_list.name == code){ + flag = true; + } + }) + } + return flag; + } + $rootScope.permission_check = function(code,urls){ + return $scope.permission_check(code,urls); + + } + } + ]) + + .controller('guideCtrl', ['$scope', '$location','http_service', function($scope, $location,http_service) { + $scope.business_select_phase = function() { + http_service.post('guiCfg/create',{},function(res){ + if(res.data.opState){ + $location.path('/business'); + } + }) + } + $scope.registry_model = function() { + $location.path('/registry'); + } + }]) + .config(['$sceDelegateProvider',function($sceDelegateProvider) { +// var self_str = register_url + "**"; + var self_str = iframe_url + "**"; + $sceDelegateProvider.resourceUrlWhitelist([ + 'self',self_str]); + }]) + .config(['$routeProvider', '$locationProvider', '$compileProvider', function($routeProvider, $locationProvider, $compileProvider) { + $compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|javascript):/); + $routeProvider + .when('/guide', { + templateUrl: './static/templates/guide.html', + controller: 'guideCtrl' + }) + .when('/business', { + templateUrl: './static/templates/business.html', + controller: 'businessCtrl' + }) + .when('/registry', { + templateUrl: './static/templates/registry.html', + controller: 'registryCtrl' + }) + .when('/billing_cfg_guide/:business/:step', { + templateUrl: './static/templates/billing_cfg_guide.html', + controller: 'billingCfgGuideCtrl' + }) + .when('/budget_froms/:business/:type/', { + templateUrl: './static/templates/budget_forms.html', + controller: 'budgetFormsCtrl' + }) + .when('/budget_froms/:type/', { + templateUrl: './static/templates/budget_forms.html', + controller: 'budgetFormsCtrl' + }) + .when('/budget_form_customize/:type/:business/:id?/:action?', { + templateUrl: './static/templates/budget_form_customize.html', + controller: 'budgetFormCustomizeCtrl' + }) + .when('/cfg_center/', { + templateUrl: './static/templates/config_center.html', + controller: 'cfgCenterCtrl' + }) + .when('/system_config', { + templateUrl: './static/templates/system_config.html', + controller: 'systemCfgCtrl' + }) + .when('/travel_expense/:type?', { + templateUrl: './static/templates/travel_expense.html', + controller: 'travelExpenseCtrl' + }) + .when('/travel_expense_todos/', { + templateUrl: './static/templates/travel_expense_todos.html', + controller: 'travelExpenseTodosCtrl' + }) + .when('/user_forms_center/:type', { + templateUrl: './static/templates/forms_center.html', + controller: 'userFormsCenterCtrl' + }) + .when('/templates_center', { + templateUrl: './static/templates/templates_center.html', + controller: 'templatesCenterCtrl' + }) + .when('/messages_center',{ + templateUrl: './static/templates/messages_center.html', + controller: 'messageCenterCtrl' + }) + .when('/expend_standard', { + templateUrl: './static/templates/expend_standard.html', + controller: 'expendStandardCtrl' + }) + .when('/work_flow', { + templateUrl: './static/templates/work_flow.html', + controller: 'workflowCtrl' + }) + .when('/no_permission', { + templateUrl: './static/templates/no_permission.html' + }) + .when('**', { + templateUrl: './static/templates/404.html' + }) + }]) + + .run(['$rootScope','$location',"$routeParams",function($rootScope,$location,$routeParams){ + $rootScope.$on('$routeChangeStart', function(evt, next, current){ + //权限递归 判断 +// function permission_judge(list,judge){ +// _.each(list,function(_list){ +// if(judge.indexOf(_list.name) != -1){ +// permission_flag = true; +// }else if(!_.isNull(_list.children)){ +// return permission_judge(_list.children,judge); +// } +// }) +// } + function setCookie(cname,cvalue,exdays){ + var d = $rootScope.getNewDate(); + d.setTime(d.getTime()+(exdays*24*60*60*1000)); + var expires = "expires="+d.toGMTString(); + document.cookie = cname + "=" + cvalue + "; " + expires; + } + function getQueryString(name) { //获取url参数的值 + var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); + var r = window.location.search.substr(1).match(reg); + if (r != null) return unescape(r[2]); return null; + } + if(window.location.href.indexOf("?") != -1){ + var token = getQueryString("token"); + var csc_compid = getQueryString("csc_compid"); + var csc_comp_code = getQueryString("csc_comp_code"); + var tenantId = getQueryString("tenantId"); + + setCookie("token",token,30000); + setCookie("csc_compid",csc_compid,30000); + setCookie("csc_comp_code",csc_comp_code,30000); + setCookie("tenantId",tenantId,30000); +// $location.path('/no_permission'); + } + $rootScope.exitLogin=function(){ + var keys=document.cookie.match(/[^ =;]+(?=\=)/g); + if (keys) { + for (var i = keys.length; i--;) + document.cookie=keys[i]+'=0;expires=' + $rootScope.getNewDate( 0).toUTCString() + } + var href_str = register_url + "index.html"; + window.location.href=register_url; + } + var permission_flag = false; + var path; + if($location.path().indexOf("/budget_froms/") != -1){ + path = $location.path(); + if(path.length > 17){//行业精选 + path = path.slice(-3); + path = path.replace("/",""); + path = "/budget_froms/*/"+path+"/"; + }else{ + path = path.slice(-3); + path = path.replace("/",""); + path = "/budget_froms/"+path+"/"; + } + }else{ + path = $location.path(); + } + _.each(permissionlist,function(_list){ + if(path.indexOf(_list.name) != -1){ + permission_flag = true; + } + }); +// permission_judge(permissionlist,path) + if(permissionlist == ""){ + permission_flag = true; + } + +// if($location.path().indexOf("messages_center") != -1){// 韩蓉消息中心 权限 +// permission_flag = true; +// } + if(!permission_flag){ + $location.path('/no_permission'); + } + + }); + $rootScope.$on("$routeChangeSuccess",function(){ + if($location.path() == "/expend_standard"){ + + var reloadnum = sessionStorage.getItem("reloadnum"); + if(reloadnum == undefined){ + sessionStorage.setItem("reloadnum",0); + reloadnum = sessionStorage.getItem("reloadnum"); + }else if(reloadnum == 0){ + sessionStorage.setItem("reloadnum",1); + }else{ + sessionStorage.setItem("reloadnum",0); + } + if(reloadnum == 0){ + location.reload(true); + } + } + }) + }]); \ No newline at end of file diff --git a/src/static/js/billing_cfg_guide/module.js b/src/static/js/billing_cfg_guide/module.js new file mode 100644 index 0000000..2a25aaa --- /dev/null +++ b/src/static/js/billing_cfg_guide/module.js @@ -0,0 +1,39 @@ +angular.module('billing_cfg_guide', []) + .controller('billingCfgGuideCtrl', ['$scope', '$routeParams', '$location','http_service', function($scope, $routeParams, $location,http_service) { + $scope.business = $routeParams.business; + $scope.step = $routeParams.step; + $scope.redirect_to_billing_cfg_guide = function(path, inCode, step) { + if(step != 8) { + var guide = { + "child": [{ + "gcPcsCode": step*10, + "gcPcsStep": 99, + "gcInCode":inCode + }] + } + }else{ + var guide = { + "child": [{ + "gcPcsCode": step*10, + "gcPcsStep": 0, + "gcInCode":inCode + }] + } + } + http_service.post("guiCfg/update",guide,function(res){//更新向导信息 + if(res.data.opState){ + if(step == 8){ + $location.path("/travel_expense_todos/"); + }else{ + $location.path(path + inCode + "/" + step); + } + }else{ + //弹窗 + } + }); + + } + $scope.redirect_to_budget_forms = function(path, inCode, type) { + $location.path(path + inCode + "/" + type); + } + }]); \ No newline at end of file diff --git a/src/static/js/budget_form_customize/module.js b/src/static/js/budget_form_customize/module.js new file mode 100644 index 0000000..212c4ac --- /dev/null +++ b/src/static/js/budget_form_customize/module.js @@ -0,0 +1,2018 @@ +angular.module('budget_form_customize', []) + + .directive('select3', ['$rootScope', 'http_service', '$timeout', '$interval', '$compile', + function($rootScope, http_service, $timeout, $interval, $compile) { + return { + restrict: 'ACEM', + templateUrl: './static/templates/select3.html', + transclude: true, + scope: { + item: "=", + edit: "=", + form_items: "=", + childitem: "=", + editFlag: "=", + billCheck: "&" + }, + compile: function() { + return { + pre: function(scope, iElement, iAttrs, controller) { + + // }); + + var $scope = scope; + $scope.type = scope.$parent.type; + $scope.billid = scope.$parent.billid; + scope.sel_val_lst = []; + var $el = $(iElement); + //关联公式显示控件 + function show_item(form,item){ + var show_flag = true; + _.each(form.has_hide,function(hide){ + _.each(item,function(_item){ + if(hide.gcMeCode == _item.gcMeCode){ + if(_item.render_value && _item.render_value.indexOf(",") != -1){ + var item_value = _item.render_value.split(","); + }else{ + var item_value = [_item.render_value]; + } + _.each(item_value,function(val){ + if(val == hide.hide_value){ + show_flag = false; + } + }) + } + }) + }) + return show_flag; + } + //关联公式隐藏控件 + function hide_item() { + var ischild = true; + var check_form; + _.each(scope.$parent.form_items,function(form){ + if(show_item(form,scope.$parent.form_items) && form.has_hide != undefined){ + form.gcShowFlag = 1; + } + if(form.gcMeCode == scope.item.gcMeCode) { + ischild = false; + check_form = scope.$parent.form_items; + } + }) + if(ischild){ + _.each(scope.$parent.form_items,function(form){ + if(form.gcCpnType == 10 || form.gcCpnType == 17){ + _.each(form.child,function(cd){ + if(show_item(cd,form.child) && cd.has_hide != undefined){ + cd.gcShowFlag = 1; + } +// if(cd.render_value != "" && cd.render_value != undefined && cd.gcMeCode == scope.item.gcMeCode) { + check_form = scope.childitem.child; +// } + }) + } + }) + } +// + _.each(check_form,function(form){ + if(scope.item.cpnHide){ + _.each(scope.item.cpnHide,function(formula){ + if(scope.item.render_value != "" && scope.item.render_value != undefined){ + if(scope.item.render_value.indexOf(",") != -1){ + var i_value = scope.item.render_value.split(","); + }else{ + var i_value = [scope.item.render_value]; + } + _.each(i_value,function(val){ + if(val == formula.cVal){ + _.each(formula.cHideItem,function(hide){ + if(form.gcMeCode == hide){ + + + form.gcShowFlag = 0; + if(form.has_hide == undefined){ + form['has_hide'] = [{ + 'gcMeCode':scope.item.gcMeCode, + 'hide_value':formula.cVal + }]; + }else{ + form['has_hide'].push({ + 'gcMeCode':scope.item.gcMeCode, + 'hide_value':formula.cVal + }) + } + } + }) + } + }) + + } + }) + } + + }) + } + //预算部门为总公司时隐藏并不判断占用预算控件的必填 + function Corporation_choose(val) { + var superBudget_code; + _.each(filed, function(_filed) { + if(_filed.busCode == 'superBudget') { + superBudget_code = _filed.mdCode; + } + }); + _.each(scope.$parent.form_items, function(form) { + if(form.gcMeCode == superBudget_code) { + if(val == 'F172004') { + form.gcInputMust = 0; + form.gcShowFlag = 0; + } else { + form.gcInputMust = 1; + form.gcShowFlag = 1; + } + } + + }) + + } + //部门变更则清空占用预算或社申请选择 + function clear_budget() { + if($rootScope.budget_back == false) { + _.each(scope.$parent.form_items, function(form) { + if(form.gcCpnType == 0) { //占用预算 + form.render_value = ""; + $rootScope.startTime = undefined; + $rootScope.endTime = undefined; + $rootScope.sumMoney_budget = undefined; + $rootScope.budget_selected = null; + + scope.$parent.$parent.$parent.heads = []; + scope.$parent.$parent.$parent.selectinfo = []; + } + }) + } + } + //公式计算 + $scope.formula_conut = function(formula, val) { + //判断公式应用于哪个表单 + // var travelType = formula.travelType;//获取公式对应的表单 + // var account_flag =false;//控制是否计算 + // if(travelType == $scope.type){ + // account_flag = true; + // }else if(travelType == 0){ + // account_flag = true; + // } + // if(account_flag == false){ + // return false; + // } + var target_code = formula.child[0]; + var orgin_code = formula.child[1]; + var target_value; + _.each($scope.sreach_data, function(data) { + if(data.code == val) { + target_value = data[orgin_code.pMeCode]; + } + }) + var is_inchild = false; + _.each($scope.$parent.form_items, function(_form) { + if(_form.gcMeCode == target_code.pMdCode) { + if(_form.gcCpnType == 6) { + $rootScope.formula_num_id.push(formula.id)//前端公式计数 + $rootScope.formula_num++; + _form.render_value = target_value; + } else { + if(target_code.mathMdType == "code") { + formula_setdata(orgin_code, target_value, function(res) { + $rootScope.formula_num_id.push(formula.id)//前端公式计数 + $rootScope.formula_num++; + _form.render_value = res.data.data; + }) + } else { + $rootScope.formula_num_id.push(formula.id)//前端公式计数 + $rootScope.formula_num++; + _form.render_value = target_value; + } + } + } else { + is_inchild = true; + } + }); + if(is_inchild) { + _.each($scope.$parent.form_items, function(_form) { + if(_form == scope.childitem) { + _.each(_form.child, function(cd) { + if(cd.gcMeCode == target_code.pMdCode) { + if(cd.gcCpnType == 6) { + $rootScope.formula_num_id.push(formula.id)//前端公式计数 + $rootScope.formula_num++; + cd.render_value = target_value; + } else { + if(target_code.mathMdType == "code") { + formula_setdata(orgin_code, target_value, function(res) { + $rootScope.formula_num_id.push(formula.id)//前端公式计数 + $rootScope.formula_num++; + cd.render_value = res.data.data; + }) + } else { + $rootScope.formula_num_id.push(formula.id)//前端公式计数 + $rootScope.formula_num++; + cd.render_value = target_value; + } + } + } + }) + } + }) + } + } + function getItem() { + http_service.post('base/data/search', { "code": scope.item.gcMeCode, "cache_id": scope.item.gcMeCode }, function(res) { + if(res.data.opState) { + var data = res.data.data.child; + $scope.sreach_data = res.data.data.child; + $timeout(function() { + var $sel = $el.find('select'); + _.each(data, function(item) { + $sel.append('<option value=' + item.code + '>' + item.value + '</option>'); + }); + var budget_back; + _.each(filed, function(_filed) { + if(_filed.busCode == "orgName") { + budget_back = _filed.mdCode; + } + }); + $scope.$watch(function() { + return scope.item.render_value; + }, function() { + if($rootScope.stepCode != undefined && ($rootScope.stepCode == 30 || $rootScope.stepCode == 10)){// 已完成/审核中 表单显示 特殊处理 + return false; + } + //下拉框 根据公式联动 + _.each($scope.$parent.formula, function(formula) { + // if(formula.mathFormat == "select"){ + if(scope.item.gcMeCode == formula.child[1].pMdCode) { + $scope.formula_conut(formula, scope.item.render_value); + } + // } + }) + + if($rootScope.sort_bytime){ + $rootScope.sort_bytime(scope.item);//子表单排序 + } +// + var arr = scope.item.render_value; +// arr = arr.split(","); +// if(arr != undefined && arr.indexOf("[") != -1){ +// arr = JSON.parse(arr); +// scope.item.render_value = JSON.parse(scope.item.render_value); +// }else if(_.isArray(arr) == false){ +// arr = [arr]; +// scope.item.render_value = [scope.item.render_value]; +// } + scope.sel_val_lst = []; + if(scope.item.gcMeCode == budget_back) { + clear_budget(); + Corporation_choose(arr); + if($rootScope.budget_back != false) { + $rootScope.budget_back = false; + } + } + if(arr) { + if(arr.length>1){ + arr = arr.split(","); +// arr.pop(); +// + _.each(arr, function(_arr) { + _.each(data, function(_data) { + if(_data.code == _arr) { + scope.sel_val_lst.push({ "value": _data.code, "label": _data.value }); + } + }) + }) + var select_value = []; + for(i in scope.sel_val_lst) { + select_value.push(scope.sel_val_lst[i].label); + } + $timeout(function() { + if($scope.item.render_value != undefined){ + $scope.item = _.extend($scope.item, { "select_value": select_value.join(",") }); + } + }, 10) + } + } + scope.$watch(function() { + return scope.item.ismultiple + }, function() { + if(scope.item.ismultiple !== undefined) { + if(scope.item.ismultiple) { + $sel.attr('multiple', 'multiple'); + } else { + $sel.attr('multiple', null); + } + } + }) + +// if(arr) { +// $sel.val($scope.item.render_value); +// _.each(arr,function(_arr){ +// _.each($scope.sreach_data,function(_data){ +// if(_data.code == _arr){ +// scope.sel_val_lst.push({ 'value': _data.code, 'label':_data.value}); +// } +// }) +// }) +//// $sel.find('option:selected').each(function() { +//// scope.sel_val_lst.push({ 'value': $(this).val(), 'label': $(this).text() }); +//// }); +// var select_value = []; +// for(i in scope.sel_val_lst) { +// select_value.push(scope.sel_val_lst[i].label); +// } +// $timeout(function() { +// $scope.item = _.extend($scope.item, { "select_value": select_value.join(",") }); +// }, 10) +// } + hide_item()//关联公式隐藏控件 + + //匹配控件 并进行系统变量公式计算 + _.each($scope.$parent.sys_formula,function(sformula){ + _.each(sformula.formula.child,function(_formula){ + if(_formula.mdCode == scope.item.gcMeCode){ + if(scope.childitem){ + if($rootScope.sys_formula_computing){ + $rootScope.sys_formula_computing(sformula,scope.childitem); + } + }else{ + if($rootScope.sys_formula_computing){ + $rootScope.sys_formula_computing(sformula); + } + } + return false; + } + }); + }) + }); + $timeout(function(){//用于检测显示是否完全 + $scope.item['inited'] = true; + },100); + }, 1) + + } else { + $scope.$parent.$parent.$parent.$parent.$parent.terro(res.data.errMsg); + $timeout(function(){//用于检测显示是否完全 失败也算显示完全 否则会无法结束监听 + $scope.item['inited'] = true; + },100); + } + }, true); + } + getItem(); + if(scope.editFlag !== 0) { + $el.find('div.select-container').on('click', function(event) { + $('div.drop_down_sel').remove(); + var $select = $el.find('select'); + var isMultiple = $select.attr('multiple'); + // var isMultiple = $scope.item.gcCpnMultiple; + var $options = $el.find('select > option'); + var $options_str = '<ul>' + + '<li class="sel_query">' + + '<input type="text" name="query" >' + + '<i class="fa fa-search" aria-hidden="true"></i>' + + '</li>' + + '</ul>'; + if($select.attr('multiple')) { + $options_str += '<ul>' + + '<li>' + + '<div>' + + '<div>' + + '<input type="checkbox" name="all">' + + '</div>' + + '<div>全选</div>' + + '</div>' + + '</li>' + + '</ul>'; + } + // $scope.$watch(function(){ + // return isMultiple + // },function(){ + //// alert(isMultiple); + // if(scope.item.gcMeCode == 'F008'){ + //// getItem(); + // } + // }) + $options.each(function() { + var checked = ''; + var val_list = _.map(scope.sel_val_lst, function(op) { + return op.value; + }); + if(_.indexOf(val_list, $(this).val()) > -1) { + checked = 'checked'; + } + + $options_str += '<ul>' + + '<li>' + + '<div>' + + '<div>' + + '<input type="checkbox" name="checkbox" label="' + $(this).text() + '" value="' + $(this).val() + '" ' + checked + ' >' + + '</div>' + + '<div class="overhidden" title="' + $(this).text() + '">' + $(this).text() + '</div>' + + '</div>' + + '</li>' + + '</ul>'; + }); + + var $select_obj = $('<div drop-down-selector="" filterlist="searchlist" class="drop_down_sel" >' + + $options_str + + '</div>'); + $el.find('div.select3-element').append($select_obj); + //下拉框点击消失 + $('body').off('click').on('click', function() { + $('div.drop_down_sel').remove(); + }); + $('div.drop_down_sel').off('click').on('click', function(event) { + event.stopPropagation(); + }); + + // 查询功能 + $select_obj.find('input[name="query"]').on('keyup', function() { + var $el = $(this); + var inputs = $select_obj.find('input[name="checkbox"]'); + inputs.each(function() { + var val = $(this).attr('label'); + var input_val = $el.val(); + if(val.indexOf(input_val) > -1) { + $(this).closest('ul').show(); + } else { + $(this).closest('ul').hide(); + } + }); + }); + //下拉框关联非下拉框 取值 + function formula_setdata(orgin, val, callback) { + http_service.post("supp/getName", { + "mdCode": orgin.pMdCode, + "mvCode": val + }, function(res) { + callback(res); + }) + } + + + $select_obj.find('input[name="checkbox"]').on('click', function() { + var vals_selected = []; + var vals_selected_item = []; + if(!isMultiple) { + $('div.drop_down_sel input[name="checkbox"]').prop('checked', false); + $(this).prop('checked', true); + $select.val($(this).val()); + vals_selected = [{ 'value': $(this).val(), 'label': $(this).attr('label') }]; + vals_selected_item = $(this).val(); + scope.set_valueleft(_.map(vals_selected, "value")); + vals_selected_item = $(this).val(); + $('div.drop_down_sel').remove(); + } else { + var vls = []; + $('div.drop_down_sel input[name="checkbox"]:checked').each(function() { + vals_selected.push({ 'value': $(this).val(), 'label': $(this).attr('label') }); + vals_selected_item.push($(this).val()); + vls.push($(this).val()); + }); + $select.val(vls); + // 查询条件赋值 + scope.set_valueleft(vls); + + } + if(!$('div.drop_down_sel input[name="checkbox"]').prop('checked')) { + $('input[name="all"]').attr('checked', null) + } + $timeout(function() { + scope.sel_val_lst = vals_selected; +// + if(_.isArray(vals_selected_item)){ + scope.item.render_value = vals_selected_item.join(","); + $scope.item.render_value = vals_selected_item.join(","); + }else{ + scope.item.render_value = vals_selected_item; + $scope.item.render_value = vals_selected_item; + } + + //验证错误信息 + scope.billCheck(); + // if(scope.item.render_value && scope.$parent.select_value == '002'){ + // $scope.$parent.showcontrol = true; + // $scope.$parent.deptbudget(); + // } + }, 1); + + //下拉框 根据公式联动 + var this_val = $(this).val(); + _.each($scope.$parent.formula, function(formula) { + // if(formula.mathFormat == "select"){ + if(scope.item.gcMeCode == formula.child[1].pMdCode) { + $scope.formula_conut(formula, this_val); + } + // } + }) + + }); + $select_obj.find('input[name="all"]').on('click', function() { + if($(this).prop("checked") == false) { + $('div.drop_down_sel input[name="checkbox"]').each(function() { + if($(this).prop("checked") == true) { + $(this).click(); + } + }); + } else { + $('div.drop_down_sel input[name="checkbox"]').each(function() { + if($(this).prop("checked") == false) { + $(this).click(); + } + }); + } + }) + + var allflag = true + $('div.drop_down_sel input[name="checkbox"]').each(function() { + if($(this).prop("checked") == false) { + allflag = false; + } + }); + + if(allflag) { + $('input[name="all"]').attr('checked', 'checked') + } else { + $('input[name="all"]').attr('checked', null) + } + + event.stopPropagation(); + }); + } + scope.set_valueleft = function(val) { + if(scope.item) { + if(val) { + if(val.length > 0) { + scope.item.valueLeft = val; + } else { + scope.item.valueLeft = false; + } + } + } + }; + scope.rm_option = function(event) { + $timeout(function() { + // var new_item = _.cloneDeep(scope.item); + // new_item.render_value = ""; + // scope.item = new_item; + scope.item.render_value = ""; + var $elt = $(event.target); + $elt.closest('div.select-container').attr('value', ''); + $elt.closest('div.val-card').remove(); + var val = ($elt).attr('val'); + if(val) { + val = JSON.parse(val); + } + scope.sel_val_lst = _.filter(scope.sel_val_lst, function(t) { + return t.value != val.value; + }); + // 多选改变时更新查询条件 + scope.set_valueleft(_.map(scope.sel_val_lst, "value")); + $el.find('select').val(scope.sel_val_lst); + + $('div.drop_down_sel input[name="checkbox"]:checked').each(function() { + // 点取消时 将查询条件中值删除 + scope.set_valueleft([]); + if($(this).val() == val.value) { + $(this).prop("checked", false); + } + }); + if(scope.$parent.select_value == '002') { + $scope.$parent.showcontrol = false; + $scope.$parent.deptbudget(); + } + + event.stopPropagation(); + }, 1) + + }; + }, + post: function($scope, element, attrs) {} + } + } + } + } + ]) + .directive('frmElemCloudAttr', ['$rootScope', 'http_service', function($rootScope, http_service) { + return { + restrict: 'ACEM', + templateUrl: './static/templates/frm_elem_cloud_attr.html', + scope: { + type: "=", + data: "=", + action: "@" + }, + compile: function() { + return { + pre: function(scope, iElement, iAttrs, controller) { + scope.masDataDefineCode = null; + // scope.masDataEleList_types = [{ "type": "预算" }, { "type": "申请" }, { "type": "报销" }]; + scope.math_ceil = function(value) { + return Math.ceil(value); + }; + scope.close = function() { + $(iElement).remove(); + }; + scope.pre_page = function() { + var pageNum = _.toInteger(scope.pageNumber); + if(pageNum && pageNum > 1) { + scope.pageNumber = --pageNum; + } + }; + scope.next_page = function() { + var pageNum = _.toInteger(scope.pageNumber); + if(pageNum && pageNum < Math.ceil(scope.total / scope.pageSize)) { + scope.pageNumber = ++pageNum; + } + }; + if(scope.action == 3) { + scope.url = 'cloud/cpn/masDataEleList'; + } else { + scope.url = 'template/cpn/masDataEleList'; + } + scope.$watchGroup(["pageNumber", "pageSize"], function() { + if(!scope.pageNumber || !scope.pageSize) return false; + http_service.post( + scope.url, { + "code": scope.type, + "keyWord": scope.keyWord, + "num_per_page": scope.pageSize, + "page_num": scope.pageNumber + }, + function(res) { + $rootScope.search_hint(res.data.data.rows, 'arrary'); + var data = res.data.data; + scope.total = data.total; + scope.attr_rows = data.rows; + } + ); + + }); + + scope.pageNumber = "1"; + scope.pageSize = "10"; + scope.keyWord = ""; + scope.changed_page_size = function() { + scope.pageNumber = 1; + } + //pagenum键盘触发事件 + check_number = function(strings){ + //_.each(strings,function(string){ + // if(strings.indexOf(string) == -1){ + // return true; + // } + //}) + //return false; + var patrn = /^[0-9]*$/; + if (patrn.exec(strings) == null) { + return false + } else { + return true + } + } + scope.search_keydown = function(pageNumber){ + if(check_number(pageNumber)){ + scope.pageNumber =parseInt(pageNumber); + if(scope.pageNumber > Math.ceil(scope.total/scope.pageSize)){ + scope.pageNumber = Math.ceil(scope.total/scope.pageSize); + }else if(scope.pageNumber < 1 || scope.pageNumber == 0){ + scope.pageNumber = 1; + } + }else if(!check_number(pageNumber) && check_number(pageNumber.charAt(0))){ + //遍历pagenumber字符 + var pageNum = ''; + _.each(pageNumber,function(pageCode){ + if(check_number(pageCode)){ + pageNum = pageNum + pageCode; + }else{ + return false; + } + }) + scope.pageNumber = pageNum; + }else{ + scope.pageNumber = 1; + } + } + //按回车键则查询主数据 + scope.search_masDataEleList_keydown = function(event) { + if(event.keyCode == 13) { + scope.search_masDataEleList(); + } + } + scope.search_masDataEleList = function() { + // scope.type + // switch(scope.masDataEleList_type.type) { + // case "预算": + // scope.type = 10; + // break; + // case "申请": + // scope.type = 20; + // break; + // case "报销": + // scope.type = 30; + // break; + // } + + scope.keyWord = scope.masDataEleList_keywords; + scope.pageNumber = 1; + http_service.post( + scope.url, { + // "code": scope.type, + "keyWord": scope.keyWord, + "num_per_page": scope.pageSize, + "page_num": scope.pageNumber + }, + function(res) { + var data = res.data.data; + scope.total = data.total; + scope.attr_rows = data.rows; + } + ); + }, + scope.get_cloud_attr = function(defineCode) { + var attr_rows = scope.attr_rows; + var attr_select = _.filter(scope.attr_rows, function(attr) { + return attr.masDataDefineCode == defineCode; + })[0]; + if(attr_select) { + scope.data = _.extend(scope.data, { + 'gcCpnName': attr_select.masDataDefineName, + //'gcElType': attr_select.eleValueType, + //'gcCpnAlias': attr_select.eleNameName, + 'gcElIden': attr_select.eleCodeCode || attr_select.eleNameCode, + 'gcMeCode': attr_select.masDataDefineCode + //'gcValField': attr_select.eleCodeCode, + //'gcElType': attr_select.eleValueType, + //'gcElLeng': attr_select.eleValueLen + //'gcTxtField': attr_select.eleNameCode, + //'gcBindDs': attr_select.masDataDefineCode + }); + } + + scope.close(); + }; + }, + post: function($scope, element, attrs) { + + } + } + } + } + }]) + //控件属性 + .directive('frmElementAttrEditor', ['$rootScope', '$compile', 'http_service', function($rootScope, $compile, http_service) { + return { + restrict: 'EACM', + templateUrl: './static/templates/frm_elem_attrs_editor.html', + scope: { + element: '=', + data: '=', + type: '=' + }, + compile: function() { + return { + pre: function(scope, iElement, iAttrs, controller) {}, + post: function($scope, element, attrs) { + + //获取主数据 + $scope.showMasDataEleList = function() { + var $directive = $('<div frm-elem-Cloud-attr action="' + $scope.$parent.action + '" type="type" data="data" ></div>'); + $('div[ng-view]').append($directive); + $compile($directive)($scope); + }; + $scope.add_select_option = function() { + $scope.data.gcOptList.push({ + 'value': '', + 'selected': true + }); + }; + //获取系统变量 + function ReturnDataType() { + http_service.post('systemMath/search/list', {}, function(res) { + $scope.type_eill = res.data.data; + + }) + } + ReturnDataType(); + //长度检查 + $scope.check_length = function() { + $scope.data.gcElLeng = $scope.data.gcElLeng.replace(/\D/g, ''); + $scope.data['length_err'] = undefined; + if($scope.data.gcElLeng != '') { + if($scope.data.gcElLeng > 100) { + $scope.data['length_err'] = '长度不能超过100'; + } + } + } + $scope.remove_select_option = function(option) { + _.remove($scope.data.gcOptList, function(n) { + return n === option; + }); + }; + + $scope.manadatory_ifd_check = function(event) { + var $this = $(event.target); + var $element = $($scope.element); + if($this.prop('checked')) { + $element.find('h8[name="el_title"]').prepend('<span class="manadatory_ifd">*</span>'); + } else { + $element.find('h8[name="el_title"] > span.manadatory_ifd').remove(); + } + } + + $scope.process_ifd_check = function(event) { + var $this = $(event.target); + var $element = $($scope.element); + if($this.prop('checked')) { + $element.find('h8[name="el_title"] > span.process_ifd').html('△'); + } else { + $element.find('h8[name="el_title"] > span.process_ifd').html(''); + } + } + //关联公式编辑 + $scope.add_hide_formula = function() { + http_service.post("base/data/search", { "code": $scope.data.gcMeCode, "cache_id": $scope.data.gcMeCode }, function(res) { + $scope.base_data = res.data.data.child; + $scope.relate_formula_content = []; //关联公式集合 + $scope.relate_form_data_choose = []; //可隐藏的控件 + $scope.item_choose = []; + + $('.el_form').find('div[name="form_el_row"]').each(function(index, el) { + el_data = $(el).data('data'); + if(el_data.gcShowFlag != 0 && el_data.gcMeCode != undefined && el_data.gcCpnType != 9 && el_data.gcCpnType != 10 && el_data != $scope.data && el_data.gcCpnType != 17) { + if($scope.data.parent_type == 0) { + if(el_data.parent_type == 0) { + $scope.relate_form_data_choose.push(el_data); + } + } else if($scope.data.parent_type == 1) { + if(el_data.parent_type == 1) { + $scope.relate_form_data_choose.push(el_data); + } + } else if($scope.data.parent_type == 2) { + if(el_data.parent_type == 2) { + $scope.relate_form_data_choose.push(el_data); + } + } + } + }); + if($scope.data.cpnHide) { //回调 + $scope.relate_formula_content = _.cloneDeep($scope.data.cpnHide); + + _.each($scope.relate_formula_content, function(formula) { + _.each($scope.base_data, function(base) { + if(formula.cVal == base.code) { + formula.cVal = _.cloneDeep(base); + } + }) + var formula_back = []; + + _.each(formula.cHideItem, function(_formula) { + _.each($scope.relate_form_data_choose, function(choose) { + if(_formula == choose.gcMeCode) { + formula_back.push(_.cloneDeep(choose)); + } + }) + }) + formula.cHideItem = formula_back; + }) + + } + var $pop = $('<div class="bg-modal"><div ng-click="close_edl($event)" class="pop_panel_formula" onMouseOver ="$(this).draggable();event.stopPropagation()" ;>' + + '<div class="custom_validate_relate_formula">' + + '<div class="cv_title_relate_formula">关联公式编辑 <div class="close" ><img src="./static/img/close.png" style="width:60%;margin-top:5px;"></div></div>' + + '<div class="col-md-3 formula_left">' + + '<p>表单控件</p>' + + '<ul>' + + '<li ng-repeat="item in relate_form_data_choose">' + + '<span ng-click="add_hide_item(item)" class="btn choose_item">{{item.gcCpnAlias}}</span>' + + '</li>' + + '</ul>' + + '</div>' + + '<div class="cv_fields_formula col-md-9">' + + '<div class="field_name_father">' + + '<div class="field_name">' + + $scope.data.gcCpnAlias + " =" + + '</div>' + + '<div class="formula_type">' + + '控件值 ' + + '<select ng-model="base_data_now" ng-options="base.value for base in base_data" ng-change="clear_hide_item()">' + + '</select>' + + '</div>' + + '</div>' + + '<div class="hide_content">' + + '<div class="hide_item">' + + '<ul>' + + '<li ng-repeat="item in item_choose">{{item.gcCpnAlias}}</li>' + + '</ul>' + + '</div>' + + '<button ng-click="insert_hide_item()" class="btn btn-action btn-success btn-favourite">确定</button>' + + '<button ng-click="clear_hide_item()" class="btn btn-action btn-success btn-favourite">清除</button>' + + '</div>' + + '<table class="table relate_talble">' + + '<thead>' + + '<tr>' + + '<th>控件值</th>' + + '<th>被隐藏的控件</th>' + + '</tr>' + + '</thead>' + + '<tbody>' + + '<tr ng-repeat="relate_item in relate_formula_content">' + + '<td>{{relate_item.cVal.value}}</td>' + + '<td>' + + '<span ng-repeat="single_item in relate_item.cHideItem">{{single_item.gcCpnAlias}}</span>' + + '<i ng-click="remove_relate_formula(relate_item)"><img src="./static/img/delete.png" class="deleteelment"></i>' + + '</td>' + + '</tr>' + + '</tbody>' + + '</table>' + + '</div>' + + '<div class="formula_btn">' + + '<button ng-click="relate_formula_commit()" class="btn btn-action btn-success btn-favourite confirm">保存</button>' + + '<button class="btn btn-action btn-success btn-favourite cancel">取消</button>' + + '</div>' + + '</div>' + + '</div></div>'); + var $popdiv = $compile($pop)($scope); + $('body').append($popdiv); + $pop.find('div.close, button.cancel').on('click', function() { + $(this).closest('div.bg-modal').remove(); + }); + $scope.add_hide_item = function(item) { + var push_flag = true; + _.each($scope.item_choose, function(choose) { + if(_.isEqual(choose, item)) { + push_flag = false; + } + }) + if(push_flag) { + $scope.item_choose.push(_.cloneDeep(item)); + } + } + $scope.insert_hide_item = function() { //将要隐藏的控件加入表格中 + if($scope.base_data_now != undefined && $scope.item_choose.length !==0) { + $scope.relate_formula_content.push({ + "cVal": $scope.base_data_now, + "cHideItem": _.cloneDeep($scope.item_choose) + }); + }else if($scope.base_data_now == undefined){ + $rootScope.twarning("请选择控件值"); + }else if($scope.item_choose.length == 0){ + $rootScope.twarning("请选择表单控件"); + } + $scope.clear_hide_item(); + } + $scope.clear_hide_item = function() { //清空要隐藏的控件 + $scope.item_choose = []; + } + $scope.remove_relate_formula = function(relate_item) { //删除一条关联公式 + _.remove($scope.relate_formula_content, function(o) { + return o == relate_item; + }) + } + $scope.relate_formula_commit = function() { //保存关联公式 + var save_relate_formula = []; + _.each($scope.relate_formula_content, function(formula) { + var item_arr = []; + _.each(formula.cHideItem, function(item) { + item_arr.push(item.gcMeCode); + }) + save_relate_formula.push({ + "cVal": formula.cVal.code, + "cHideItem": item_arr + }) + }) + + _.extend($scope.data, { "cpnHide":save_relate_formula}); + + $('div.bg-modal').remove(); + } + }, true); + } + //公式编辑 + $scope.add_formula = function() { + $scope.formula_content = ""; + $scope.form_data_choose = []; + $('.el_form').find('div[name="form_el_row"]').each(function(index, el) { + var el_data = $(el).data('data'); + if(el_data.gcMeCode != undefined && el_data.gcCpnType != 9 && el_data.gcCpnType != 10 && el_data.gcCpnType != 0 && el_data.gcCpnType != 14 && el_data != $scope.data && el_data.gcCpnType != 17) { + if($scope.data.parent_type == 1) { //公式条件不可跨子表单 + if(el_data.parent_type != 2) { + $scope.form_data_choose.push(el_data); + } + } else if($scope.data.parent_type == 2) { + if(el_data.parent_type != 1) { + $scope.form_data_choose.push(el_data); + } + } else { + $scope.form_data_choose.push(el_data); + } + } + }) + $scope.mResultFromat = [ + { "code": 1, "value": "parseInt({val})" }, + { "code": 2, "value": "parseFloat({val}.toFixed(2))" }, + { "code": 3, "value": "parseFloat({val}.toFixed(3))" } + ]; + $scope.fx_data = [{ + "fx_name": "日期函数", + "fx_value": "Day()", + "fx_str": "Day", + "fx_formula_str": "(1/(24*60*60*1000))*" + }] + var edl_arr = []; + $scope.value_type = ""; + // if($scope.data.joinMath){ + if($scope.data.joinMath && $scope.data.joinMath.length > 0) { + if($scope.data.joinMath[0].cpnMath.mView) { + $scope.formula_content = $scope.data.joinMath[0].cpnMath.mView; //显示公式回调 + } + _.each($scope.mResultFromat, function(_result) { + if(_result.value == $scope.data.joinMath[0].cpnMath.mResultFromat) { + $scope.value_type = _result.code; + } + }) + _.each($scope.data.joinMath[0].cpnMath.child, function(cpn) { + if(cpn.pIndex != 0) { + edl_arr.push(cpn); + } + }) + } + // } + + _.each($scope.form_data_choose, function(data) { + data['edl'] = ""; + _.each(edl_arr, function(edl) { + if(data.gcMeCode == edl.pMdCode && edl.meName != undefined) { + data['edl'] = { "meCode": edl.pMeCode, "meName": edl.meName }; //元素选择回调 + } + }) + }); + var $pop = $('<div class="bg-modal"><div ng-click="close_edl($event)" class="pop_panel_formula" onMouseOver ="$(this).draggable();event.stopPropagation()" ;>' + + '<div class="custom_validate_formula">' + + '<div class="cv_title_formula">公式编辑 <div class="close" ><img src="./static/img/close.png" style="width:60%;margin-top:5px;"></div></div>' + + '<div class="col-md-4 formula_left">' + + '<p>表单控件</p>' + + '<ul>' + + '<li ng-repeat="item in form_data_choose">' + + '<span ng-click="add_item(item)" class="btn choose_item">{{item.gcCpnAlias}}</span>' + + '<span class="btn choose_edl" ng-click="add_mecode(item,$event)">元素选择</span>' + + '<ul ng-show="item.show_edl" class="fromula_edl">' + + '<li ng-click="add_edl(item,data)" ng-repeat="data in item.edl_data">{{data.meName}}</li>' + + '</ul>' + + '<span class="edl" ng-show="item.edl">{{item.edl.meName}}</span>' + + '</li>' + + '</ul>' + + '</div>' + + '<div class="cv_fields_formula col-md-6">' + + '<div class="field_name_father">' + + '<div class="field_name">' + + $scope.data.gcCpnAlias + " =" + + '</div>' + + '<div class="formula_type">' + + '结果格式' + + '<select ng-model="value_type">' + + '<option ng-value=""> 无限制 </option>' + + '<option ng-value="1"> 整数</option>' + + '<option ng-value="2"> 保留2位小数 </option>' + + '<option ng-value="3"> 保留3位小数</option>' + + '</select>' + + '</div>' + + '</div>' + + // '<div class="col-md-12">'+ + // '<div>'+ + '<textarea id="formula_content" ng-model="formula_content">' + + + '</textarea>' + + // '</div>'+ + // '</div>'+ + '</div>' + + '<div class="col-md-2 formula_right">' + + '<p>公式函数</p>' + + '<ul>' + + '<li class="btn" ng-repeat="fx in fx_data" ng-click="add_fx(fx)">{{fx.fx_name}}</li>' + + '</ul>' + + '</div>' + + '<div class="formula_btn">' + + '<button ng-click="formula_commit()" class="btn btn-action btn-success btn-favourite confirm">确定</button>' + + '<button class="btn btn-action btn-success btn-favourite cancel">取消</button>' + + '</div>' + + '</div>' + + '</div></div>'); + var $popdiv = $compile($pop)($scope); + $('body').append($popdiv); + $pop.find('div.close, button.cancel').on('click', function() { + $(this).closest('div.bg-modal').remove(); + }); + + function insertAfterText(textDom, value) { //在光标后插入文本 + var selectRange; + if(document.selection) { + // IE Support + textDom.focus(); + selectRange = document.selection.createRange(); + selectRange.text = value; + $scope.formula_content = selectRange.text; + textDom.focus(); + } else if(textDom.selectionStart || textDom.selectionStart == '0') { + // Firefox support + var startPos = textDom.selectionStart; + var endPos = textDom.selectionEnd; + var scrollTop = textDom.scrollTop; + $scope.formula_content = $scope.formula_content.substring(0, startPos) + value + $scope.formula_content.substring(endPos, $scope.formula_content.length); + textDom.focus(); + textDom.selectionStart = startPos + value.length; + textDom.selectionEnd = startPos + value.length; + textDom.scrollTop = scrollTop; + } else { + $scope.formula_content += value; + textDom.focus(); + } + } + $scope.add_item = function(item) { //添加控件 + var formula_str = "[" + item.gcCpnAlias + "]"; + insertAfterText(document.getElementById("formula_content"), formula_str); + } + $scope.add_mecode = function(item, event) { + http_service.post("base/data/element/info", { "code": item.gcMeCode }, function(res) { + _.each($scope.form_data_choose, function(_form) { + if(_form == item) { + _form['edl_data'] = res.data.data; + _form['show_edl'] = true; + } else { + _form['show_edl'] = false; + } + }) + }); + + event.stopPropagation(); + } + $scope.close_edl = function(event) { + _.each($scope.form_data_choose, function(_form) { + _form['show_edl'] = false; + }); + event.stopPropagation(); + event.preventDefault(); + } + $scope.add_edl = function(item, data) { + _.each($scope.form_data_choose, function(_form) { + if(_form == item) { + _form['edl'] = data; + } + }); + } + $scope.add_fx = function(fx) { + insertAfterText(document.getElementById("formula_content"), fx.fx_value); + } + $scope.formula_commit = function() { //保存公式 + var formula_str = $scope.formula_content; + var str = $scope.formula_content, + reg = /\[(.*?)\]/g, + code_arr = [], + x = null; + while((x = reg.exec(str)) != null) { + code_arr.push(x[1]); + } + var formula_code = []; + formula_code.push({ "pMdCode": $scope.data.gcMeCode, "pType": 10, "pIndex": 0, "pMeCode": "code" }); + + _.each(code_arr, function(code, i) { + _.each($scope.form_data_choose, function(item) { + if(code == item.gcCpnAlias) { + if(item.edl && item.edl != '') { + formula_code.push({ "pMdCode": item.gcMeCode, "pType": 10, "pIndex": (i + 1), "pMeCode": item.edl.meCode, "meName": item.edl.meName }); + } else { + formula_code.push({ "pMdCode": item.gcMeCode, "pType": 10, "pIndex": (i + 1), "pMeCode": "code" }); + } + if(item.gcCpnType == 5) { + formula_str = formula_str.replace("[" + code + "]", "new Date({" + (i + 1) + "})"); + } else { + formula_str = formula_str.replace("[" + code + "]", "{" + (i + 1) + "}"); + } + + } + }) + }); + _.each($scope.fx_data, function(fx) { + if(formula_str.indexOf(fx.fx_str) != -1) { + formula_str = formula_str.replace(new RegExp(fx.fx_str, 'g'), fx.fx_formula_str); + } + }) + var mResultFromat; + _.each($scope.mResultFromat, function(_result) { + if(_result.code == $scope.value_type) { + mResultFromat = _result.value; + } + }); + // var post_data = { + // "child":formula_code, + // "mCount":formula_str, + // "mType":10, + // "mView":$scope.formula_content, + // "mResultFromat":mResultFromat + // } + // http_service.post("form/math/insert",post_data,function(res){ + if($scope.formula_content == "" || $scope.formula_content == undefined) { + $scope.data['joinMath'] = []; + } else { + $scope.data['joinMath'] = [{ + "cpnMath": { + "mCount": formula_str, + // "mName" : "公式名称", + "mResultFromat": mResultFromat, + "mType": 10, + "mView": $scope.formula_content, + "child": formula_code + } + }]; + } + $pop.find('div.close, button.cancel').closest('div.bg-modal').remove(); + // }); + } + } + $scope.add_customize_validation = function() { + // 加入的控件数据项 + if($scope.data.gcErrorMsg == undefined) { + $scope.data.gcErrorMsg = ""; + } + var isfixed; + if($scope.data.gcCheckCpnCode == -1) { + isfixed = 0; + } else { + isfixed = 1; + } + // $rootScope.checkdata = $scope.data; + var titleText = ''; + $('.el_form').find('div[name="form_el_row"]').each(function(index, el) { + el_data = $(el).data('data'); + if(el_data.gcCpnType != 9 && el_data.gcCpnType != 10 && el_data.gcCpnType != 17) { + if($scope.data.parent_type != 2) { //支付方式子表单中的比较控件只能是支付方式子表单中的控件 + if(el_data.parent_type != 2) { + titleText += '<option value="' + el_data.gcMeCode + '">' + el_data.gcCpnAlias + '</option>'; + } + } else { + if(el_data.parent_type == 2) { + titleText += '<option value="' + el_data.gcMeCode + '">' + el_data.gcCpnAlias + '</option>'; + } + } + } + }) + + var $pop = $('<div class="bg-modal"><div class="pop_panel" onMouseOver ="$(this).draggable();event.stopPropagation()" style="width:450px;height:270px;" id="create_order" ;>' + + '<div class="custom_validate">' + + '<div class="cv_title">校验规则设置 <div class="close" ><img src="./static/img/close.png" style="width:60%;margin-top:5px;"></div></div>' + + '<div class="cv_fields">' + + '<div class="col-md-3">控件名称</div><div class="col-md-3">比较符号</div><div class="col-md-3">数据项</div><div class="col-md-3">固定值</div>' + + '<div class="col-md-3">' + + '<div class="field_name">' + + $scope.data.gcCpnAlias + + '</div>' + + '</div>' + + '<div class="col-md-3">' + + '<select name="operator" ng-model="data.gcCheckOp">' + + '<option value=""> --请选择-- </option>' + + '<option value="<"> < </option>' + + '<option value="<="> <= </option>' + + '<option value=">"> > </option>' + + '<option value=">="> >= </option>' + + '<option value="=="> == </option>' + + '<option value="<>"> <> </option>' + + '</select>' + + '</div>' + + '<div class="col-md-3">' + + '<select name="data" ng-model="data.gcCheckCpnCode">' + + '<option value=""> --请选择-- </option>' + + //'<option value="0"> 已选择控件 </option>'+ + titleText + + '<option value="-1"> 固定值 </option>' + + '</select>' + + '</div>' + + '<div class="col-md-3" >' + + '<input type="text" ng-disabled="' + isfixed + '" name="fixed_value" ng-model="data.gcCheckValue" >' + + '</div>' + + '</div>' + + '<div class="cv_label">提示信息</div>' + + '<div class="cv_msg_field">' + + '<input type="text" name="msg" value="' + $scope.data.gcErrorMsg + '">' + + '</div>' + + '<div class="cv_btns">' + + // '<div><button class="cancel">取消</button></div>' + + '<div><button class="confirm btn btn-action btn-success btn-favourite">确认</button></div>' + + '</div>' + + '</div>' + + '</div></div>'); + var $popdiv = $compile($pop)($scope); + $('body').append($popdiv); + $pop.find('div.close, button.cancel').on('click', function() { + $(this).closest('div.bg-modal').remove(); + }); + $pop.find('select[name="data"]').on('change', function() { + $('input[name="fixed_value"]').val(""); + if($(this).val() === '-1') { + $('input[name="fixed_value"]').removeAttr('disabled'); + } else { + $('input[name="fixed_value"]').attr('disabled', 'disabled'); + } + }); + $pop.find('button.confirm').on('click', function() { + var operator = $pop.find('select[name="operator"]').val(); + var data = $pop.find('select[name="data"]').val(); + var fixed_value = $pop.find('input[name="fixed_value"]').prop('disabled') ? null : $pop.find('input[name="fixed_value"]').val(); + var msg = $pop.find('input[name="msg"]').val(); + if(operator) { + $scope.data.gcCheckOp = operator; + } else { + $scope.data.gcCheckOp = ''; + } + if(data) { + $scope.data.gcCheckCpnCode = data; + } else { + $scope.data.gcCheckCpnCode = ''; + } + if(fixed_value) { + $scope.data.gcCheckValue = fixed_value; + } else { + $scope.data.gcCheckValue = ''; + } + if(msg) { + $scope.data.gcErrorMsg = msg; + } else { + $scope.data.gcErrorMsg = ''; + } + $rootScope.swalsuccess({ "text": "校验规则设置完成" }); + // $('.bg-modal').hide(); + $(this).closest('div.bg-modal').remove(); + }); + } + + $scope.$watch('data', function(data) { + var $element = $($scope.element); + for(var el_attr in data) { + var el_attr_val = data[el_attr]; + switch(el_attr) { + case 'gcCpnAlias': + $element.find(' > h8 > span.text').html(el_attr_val); + break; + case 'gcCpnDisc': + $element.find('> div[name="el_desc"]').html(el_attr_val); + break; + case 'gcDefVal': + $element.find('> div > input, > div > textarea').val(el_attr_val); + break; + } + } + }, true); + + } + } + } + } + }]) + + //设置空白模板的控制器 + .controller('budgetFormCustomizeCtrl', ['$scope', '$compile', 'http_service', '$routeParams', '$rootScope', '$timeout', '$route', function($scope, $compile, http_service, $routeParams, $rootScope, $timeout, $route) { + $scope.business = $routeParams.business; + $scope.type = $routeParams.type; + $scope.form_id = $routeParams.id; + $scope.action = $routeParams.action; + + //点击保存触发的事件 + var create_forms_flag = true; + $scope.create_forms = function() { + if(!create_forms_flag) { + return false; + } + create_forms_flag = false; + var post_data = []; + var el_data; + $('.el_form').find('div[name="form_el_row"]').each(function(index, el) { + el_data = $(el).data('data'); + + if(el_data && !$(el).parent().closest('div.sub_form').length) { + if(el_data['gcCpnType'] === 10 || el_data['gcCpnType'] === 17) { + var children = []; + $(el).find('div[name="form_el_row"]').each(function(index, _el) { + if($(_el).data('data')) { + var _el_data = $(_el).data('data'); + children.push(_el_data); + } + }); + el_data['child'] = children; + } + el_data.gcInputMust = !el_data.gcInputMust ? 0 : 1; + post_data.push(el_data); + + } + }); + var child_num = 0; + var people_item = true; + var org_item = true; + var length_err_arr = []; //判断长度限制 + _.each(post_data, function(_pd) { + delete _pd.show_edl; + delete _pd.edl; + delete _pd.edl_data; + delete _pd.parent_type; + if(_pd.length_err) { + length_err_arr.push(_pd.gcCpnAlias); + } + if(_pd.gcCpnType == 10) { + child_num++ + _.each(_pd.child, function(cd) { + if(cd.length_err) { + length_err_arr.push(cd.gcCpnAlias); + } + delete cd.show_edl; + delete cd.edl; + delete cd.edl_data; + delete cd.parent_type; + if(cd.gcCpnType == 12) { + people_item = false; + } else if(cd.gcCpnType == 10) { + child_num = -1000; + } else if(cd.gcCpnType == 16) { + org_item = false; + } + }) + } + if(_pd.gcCpnType == 17) { + _.each(_pd.child, function(cd) { + if(cd.length_err) { + length_err_arr.push(cd.gcCpnAlias); + } + delete cd.show_edl; + delete cd.edl; + delete cd.edl_data; + delete cd.parent_type; + if(cd.gcCpnType == 12) { + people_item = false; + } else if(cd.gcCpnType == 16) { + org_item = false; + } + }) + } + }) + if(length_err_arr.length > 0) { + var length_err_str = length_err_arr.join(","); + $scope.$parent.terro(length_err_str + "长度限制错误"); + create_forms_flag = true; + return false; + } + if(child_num > 1) { + $scope.$parent.terro('只能有一个子表单'); + create_forms_flag = true; + return false; + } else if(child_num < 0) { + $scope.$parent.terro('子表单中不能嵌套子表单'); + create_forms_flag = true; + return false; + } +// if(people_item == false) { +// $scope.$parent.terro('人员控件不可以在子表单中'); +// create_forms_flag = true; +// return false; +// } + if(org_item == false) { + $scope.$parent.terro('组织结构控件不可以在子表单中'); + create_forms_flag = true; + return false; + } + if(!$scope.guTempName) { + //alert('模本名称未填写。'); + $scope.twarning("模本名称未填写!"); + create_forms_flag = true; + create_forms_flag = true; + /* + }else if(!$scope.guTempDisc){ + alert('模板描述为填写。'); + */ + } else if(post_data.length != 0) { + var forms_data = { + "guTempType": $scope.type, + "guTempName": $scope.guTempName, + "guTempDisc": $scope.guTempDisc, + "child": post_data + }; + if($scope.form_id) { + // action != 3 表单修改 else 模板修改 + if($scope.action != 3) { + forms_data = _.extend(forms_data, { + 'guId': $scope.form_id, + 'cache_id': $scope.type + }); + http_service.post('form/save', forms_data, function(res) { + if(res.status == 200) { + if(res.data.errMsg) { + $scope.$parent.terro(res.data.errMsg) + + //alert(res.data.errMsg); + } else { + if(res.data.opState) { + $scope.$parent.tsuccess('表单' + $scope.guTempName + '更新成功。'); + window.history.go(-1); + } else { + $scope.$parent.terro('表单' + $scope.guTempName + '更新失败。') + + } + // alert('表单'+$scope.guTempName+'更新成功。'); + } + } + create_forms_flag = true; + }); + } else { + forms_data = _.extend(forms_data, { + 'guId': $scope.form_id, + 'cache_id': $scope.type + }); + http_service.post('template/update', forms_data, function(res) { + if(res.status == 200) { + if(res.data.errMsg) { + $scope.$parent.terro(res.data.errMsg) + + //alert(res.data.errMsg); + } else { + if(res.data.opState) { + + $scope.$parent.tsuccess('模板' + $scope.guTempName + '更新成功。') + } else { + $scope.$parent.terro('模板' + $scope.guTempName + '更新失败。') + } + + //alert('模板'+$scope.guTempName+'更新成功。'); + } + } + create_forms_flag = true; + }); + } + } else { + // action != 3 表单新增 else 模板新增 + if($scope.action != 3) { + forms_data = _.extend(forms_data, { + 'cache_id': $scope.type + }); + http_service.post('form/save', forms_data, function(res) { + if(res.status == 200) { + if(res.data.errMsg) { + // swal({ + // title: "错误", + // text: res.data.errMsg, + // type: "error", + // confirmButtonText: "确定", + // }) + $scope.$parent.terro(res.data.errMsg) + + //alert(res.data.errMsg); + } else { + if(res.data.opState) { + $scope.$parent.tsuccess('表单' + $scope.guTempName + '创建成功。'); + var new_form_data = res; + new_form_data.data.data = forms_data; + window.history.go(-1); + } else { + $scope.$parent.terro('表单' + $scope.guTempName + '创建失败。') + + } + //alert('表单'+$scope.guTempName+'创建成功。'); + } + } + create_forms_flag = true; + }); + } else { + forms_data = _.extend(forms_data, { + "guIndusId": $scope.business, + "guTempSource": 1 + }) + http_service.post('template/insert', forms_data, function(res) { + if(res.status == 200) { + if(res.data.errMsg) { + $scope.$parent.terro(res.data.errMsg) + + //alert(res.data.errMsg); + } else { + if(res.data.opState) { + $scope.$parent.tsuccess('模板' + $scope.guTempName + '创建成功。') + window.history.go(-1); + } else { + $scope.$parent.terro('模板' + $scope.guTempName + '创建失败。') + + } + + //alert('模板'+$scope.guTempName+'创建成功。'); + } + } + create_forms_flag = true; + }); + } + } + + } else { + $scope.twarning("表单不能为空!") + } + }; + + $scope.$on('$viewContentLoaded', function() { + if($scope.form_id) { + // action:1 编辑已有表单 action:2 || 3 根据模板编辑 + if($scope.action == 1) { + http_service.post('form/list', { + "guTempType": parseInt($scope.type), + "cache_id": parseInt($scope.type) + }, function(res) { + if(!res.data.opState) { + return false; + } + var data = res.data.data; + $scope.guTempName = data.guTempName; + $scope.guTempDisc = data.guTempDisc; + build_form_editor(data); + }, true); + } else if($scope.action == 2 || $scope.action == 3) { + http_service.post('template/cpn/search', { + "gcTempId": $scope.form_id + }, function(res) { + var data = res.data.data; + if(data) { + $scope.guTempName = data.guTempName; + $scope.guTempDisc = data.guTempDisc; + build_form_editor(data); + } + }) + } + } else { + build_form_editor(); + } + + $('div.split_form').height($(document).height() - 52); + $(window).resize(function() { + $('div.split_form').height($(document).height() - 52); + }); + + function build_form_editor(edit_form_data) { + var fb = new form_builder.create(); + var data = { + 'gcCpnName': '', + 'gcCpnType': '', + 'gcDmlLeng': '', //精度 + 'gcShowFlag': 1, // show flag + 'gcEditFlag': 1, + 'gcCpnAlias': '未命名', + 'gcCpnDisc': '', + 'gcDefVal': '', + 'gcInputMust': 0, + 'gcCpnInCol': 2, + 'gcElIden': "元素标志符", // adding + 'gcElLeng': 50, //adding + 'gcMathId': 0 + + }; + fb.add_elements([{ + 'type': 0, + 'btn': '<button class="btn btn-success btn-elb">预算选择</button>', + 'field': '<div class="multi_level_select"><div>点击选择</div></div>', + 'data': _.cloneDeep(_.extend(data, { + 'gcCpnAlias': '预算选择', + 'gcCpnType': 0, + 'gcCpnInCol': 2 + })) + }, + { + 'type': 1, + 'btn': '<button class="btn btn-success btn-elb"><span class="fa fa-font"></span> 单行文本 </button>', + 'field': '<input readonly >', + 'data': _.cloneDeep(_.extend(data, { + 'gcCpnAlias': '单行文本', + 'gcCpnType': 1, + 'gcCpnFormat': 0 + + })) + + }, + { + 'type': 2, + 'btn': '<button class="btn btn-success btn-elb"><i class="fa fa-paragraph"></i> 多行文本 </button>', + 'field': '<textarea readonly></textarea>', + 'data': _.cloneDeep(_.extend(data, { + 'gcCpnAlias': '多行文本', + 'gcCpnType': 2 + })) + }, + // { + // 'type': 3, + // 'btn': '<button class="btn btn-success btn-elb"><i class="fa fa-square-o"></i> 复选框 </button>', + // 'field': '<div>' + + // '<div>' + + // '<input type="checkbox" name="test_multi_radio">' + + // '</div>' + + // '</div>', + // 'data': _.cloneDeep(_.extend(data, { + // 'gcCpnAlias': '复选框', + // 'gcCpnType': 3, + // 'gcOptList': [{ 'value': '', 'selected': true }] + // })) + // }, + // { + // 'type': 4, + // 'btn': '<button class="btn btn-success btn-elb"><i class="fa fa-circle-o"></i> 单选框 </button>', + // 'field': '<input type="radio" readonly>', + // 'data': _.cloneDeep(_.extend(data, { + // 'gcCpnAlias': '单选框', + // 'gcCpnType': 4, + // 'gcOptList': [{ 'value': '', 'selected': true }] + // })) + // }, + { + 'type': 5, + 'btn': '<button class="btn btn-success btn-elb"><i class="fa fa-calendar"></i> 日期时间 </button>', + 'field': '<div class="dateclass">' + + '<input type="text" readonly class="ifd_time_picker" >' + + '<img src="./static/img/calendar.png" class="ifd_time_picker">' + + '</div>', + 'data': _.cloneDeep(_.extend(data, { + 'gcCpnAlias': '日期时间', + 'gcCpnType': 5, + 'gcCpnFormat': 30, + + + })) + }, + { + 'type': 6, + 'btn': '<button class="btn btn-success btn-elb"><i class="fa fa-chevron-down"></i> 下拉框 </button>', + 'field': '<div class="select3-element"><div class="select-container" style="width:285px"><div class="suffix"><i class="fa fa-caret-down" aria-hidden="true"></i></div></div></div>', + 'data': _.cloneDeep(_.extend(data, { + 'gcCpnAlias': '下拉框', + 'gcCpnType': 6, + 'gcCpnMultiple': 0, + 'gcOptList': [{ 'value': '', 'selected': true }] + })) + }, + { + 'type': 7, + 'btn': '<button class="btn btn-success btn-elb">123 数字 </button>', + 'field': '<input readonly/>', + 'data': _.cloneDeep(_.extend(data, { + 'gcCpnAlias': '123 数字', + 'gcCpnType': 7, + 'gcCpnFormat': 20 + })) + }, + /* + { + 'type': 8, + 'btn': '<button class="btn btn-success btn-elb"><i class="fa fa-home"></i> 地址 </button>', + 'field': '<div>'+ + '<div>'+ + '<select class="addr_select" disabled>'+ + '<option value="" selected>省/自治区/直辖市</option>'+ + '</select>'+ + '<select class="addr_select" disabled>'+ + '<option value="" selected>市</option>'+ + '</select>'+ + '<select class="addr_select" disabled>'+ + '<option value="" selected>区/县</option>'+ + '</select>'+ + '</div>'+ + '<div class="addr_txt">'+ + + '</div>'+ + '</div>', + 'data': _.cloneDeep(_.extend(data, { + 'gcCpnAlias': '地址', + 'gcCpnType': 8 + })) + }, + */ + + { + 'type': 9, + 'btn': '<button class="btn btn-success btn-elb">-- 分割线 </button>', + 'field': '<hr>', + 'data': _.cloneDeep(_.extend(data, { + 'gcCpnAlias': '-- 分割线', + 'gcCpnType': 9 + })) + }, + { + 'type': 10, + 'btn': '<button class="btn btn-success btn-elb">子表单</button>', + 'field': '<div class="sub_form" ></div>', + 'data': _.cloneDeep(_.extend(data, { + 'gcCpnAlias': '子表单', + 'gcCpnType': 10, + 'gcCpnInCol': 2 + + })) + }, + + // { + // 'type': 11, + // 'btn': '<button class="btn btn-success btn-elb">城市选择</button>', + // 'field': '<div class="multi_level_select"><div>点击选择</div></div>', + // 'data': _.cloneDeep(_.extend(data, { + // 'gcCpnAlias': '城市选择', + // 'gcCpnType': 11 + // })) + // }, + + { + 'type': 12, + 'btn': '<button class="btn btn-success btn-elb">人员选择</button>', + 'field': '<div class="multi_level_select"><div>点击选择</div></div>', + 'data': _.cloneDeep(_.extend(data, { + 'gcCpnAlias': '人员选择', + 'gcCpnType': 12 + })) + }, + // { + // 'type': 13, + // 'btn': '<button class="btn btn-success btn-elb">部门选择</button>', + // 'field': '<div class="multi_level_select"><div>点击选择</div></div>', + // 'data': _.cloneDeep(_.extend(data, { + // 'gcCpnAlias': '部门选择', + // 'gcCpnType': 13 + // })) + // }, + { + 'type': 14, + 'btn': '<button class="btn btn-success btn-elb">申请单选择</button>', + 'field': '<div class="multi_level_select"><div>点击选择</div></div>', + 'data': _.cloneDeep(_.extend(data, { + 'gcCpnAlias': '申请单选择', + 'gcCpnType': 14, + 'gcCpnInCol': 2 + })) + }, + { + 'type': 15, + 'btn': '<button class="btn btn-success btn-elb">标签</button>', + 'field': '<label readonly >', + 'data': _.cloneDeep(_.extend(data, { + 'gcCpnAlias': '标签', + 'gcCpnType': 15, + })) + }, + { + 'type': 17, + 'btn': '<button class="btn btn-success btn-elb">支付方式子表单</button>', + 'field': '<div class="sub_form sub_form_pay" ></div>', + 'data': _.cloneDeep(_.extend(data, { + 'gcCpnAlias': '支付方式子表单', + 'gcCpnType': 17, + 'gcCpnInCol': 2 + })) + } + // { + // 'type': 16, + // 'btn': '<button class="btn btn-success btn-elb">组织机构</button>', + // 'field': '<div class="multi_level_select"><div>点击选择</div></div>', + // 'data': _.cloneDeep(_.extend(data, { + // 'gcCpnAlias': '组织机构', + // 'gcCpnType': 16 + // })) + // } + ]); + fb.add_forms('.el_form'); + fb.add_forms('.sub_form'); + fb.add_elements_box('.left'); + fb.recover_form_data(edit_form_data, 'gcCpnType'); + fb.element_appended_callback(after_el_append); + fb.bootstrap(); + } + + }); + + function edit_attrs($element) { + var data = $element.data('data'); + /* + var $el = $(` + <div + frm-element-attr-editor + element="element" + data="data" + > + </div> + `); + $('div[name="el_attr_editor_container"]').html($el); + $timeout(function(){ + $compile($el)($scope); + }, 0); + */ + $scope.$apply(function() { + $scope.element = $element; + $scope.data = data; + //$scope.$apply(); + }); + } + + function clone_el_data(dst, src) { + var dst_els = dst.find('div[name="form_el_row"]'); + var src_els = src.find('div[name="form_el_row"]'); + if(dst_els.length) { + src_els.each(function(index, el) { + $(dst_els[index]).data('data', _.cloneDeep($(el).data('data'))); + }); + } + dst.data('data', _.cloneDeep(src.data('data'))); + + } + + function after_el_append(element_data, element, place_holder, data) { + var $element = $(element); + var $form_el_row = $element.closest('div[name="form_el_row"]'); + var el_data; + if(data) { + el_data = _.cloneDeep(data); + } else { + el_data = _.cloneDeep(element_data[0]['data']); + } + //el_data['gcElIden'] = new Date().getTime() + Math.random(); + $form_el_row.data('data', el_data); + if(!$element.is('hr')) { + if(data) { + $form_el_row.prepend('<h8 name="el_title">' + + (data.gcInputMust ? '<span class="manadatory_ifd" >*</span>' : '') + + '<span class="process_ifd" >' + (data.gcMustCpn ? '△' : '') + '</span>' + + '<span class="text">' + (data.gcCpnAlias || '') + + '</span>' + + '</h8>' + + '<hr>' + + '<div name="el_desc">' + + (data.gcCpnDisc || '') + + '</div>'); + } else { + $form_el_row.prepend('<h8 name="el_title">' + + '<span class="text">' + + element_data[0]['data']['gcCpnAlias'] + + '</span>' + + '</h8>' + + '<hr>' + + '<div name="el_desc"></div>'); + } + } + + var frm_el_click = function($icons, $form_el_row) { + //选项卡修改 开始 + $icons.find('div.remove').on('click', function(event) { + $form_el_row.remove(); + event.stopPropagation(); + }); + + $icons.find('div.duplicate').on('click', function(event) { + var $clone = $form_el_row.clone(); + $clone.removeClass('active'); + $form_el_row.after($clone); + clone_el_data($clone, $form_el_row); + frm_el_click($clone.find('div.frm_item_icons'), $clone); + $clone.on('click', function() { + $('div[name="form_el_row"]').removeClass('active'); + $(this).addClass('active'); + }); + event.stopPropagation(); + }); + if($($form_el_row).parent('.sub_form ').length > 0 && $($form_el_row).parent('.sub_form_pay').length == 0) { //判断此控件是否为子表单中的控件 + $form_el_row.data('data', _.extend($form_el_row.data('data'), { 'parent_type': 1 })); + } else if($($form_el_row).parent('.sub_form_pay').length > 0) { //判断此控件是否为支付方式子表单中的控件 + $form_el_row.data('data', _.extend($form_el_row.data('data'), { 'parent_type': 2 })); + } else { + $form_el_row.data('data', _.extend($form_el_row.data('data'), { 'parent_type': 0 })); + } + $form_el_row.on('click', function(event) { + var $scope = $route.current.scope; + var $el = $(this); + $('div[name="form_el_row"]').removeClass('active'); + $el.addClass('active'); + $timeout(function() { + $scope.element = $el; + $scope.data = $el.data('data'); + }, 0); + event.stopPropagation(); + event.preventDefault(); + }); + }; + var $icons = $('<div class="frm_item_icons">' + + '<div class="frm_item_icon remove"><img src="static/img/delete.png" /></div>' + + '<div class="frm_item_icon duplicate"><img src="static/img/createorder.png" /></div>' + + '</div>'); + + // if($form_el_row.data('data').gcCpnType != 0){ + $form_el_row.append($icons); + // } + + frm_el_click($icons, $form_el_row); + } + + }]) + .filter("myhide", function() { + return function(input) { + if(input.value == "") { + return false; + } else { + return true; + } + } + }); \ No newline at end of file diff --git a/src/static/js/budget_forms/module.js b/src/static/js/budget_forms/module.js new file mode 100644 index 0000000..2c380ca --- /dev/null +++ b/src/static/js/budget_forms/module.js @@ -0,0 +1,66 @@ +angular.module('budget_froms', []) +.controller('budgetFormsCtrl', [ + '$scope', + '$routeParams', + '$route', + '$compile', + 'http_service', + 'global_service', function($scope, $routeParams, $route, $compile, http_service, global_service){ + $scope.type = $routeParams.type; + + if($routeParams.business){ + $scope.isguide = true; + $scope.business = $routeParams.business; + }else{ + $scope.business = global_service.get_indus(); + $scope.isguide = false; + } + + $scope.$on('$viewContentLoaded', function() { + $('div.split_form').height($(document).height() - 52); + $(window).resize(function(){ + $('div.split_form').height($(document).height() - 52); + }); + }); + $scope.show_saved_form = function(business, type, action, templateid){ + $scope.business = business; + $scope.type = type; + $scope.action = action; + $scope.templateid = templateid; + var $form = $('<div saved-form business="business" isguide="isguide" type="type" unedit="1" action="action" templateid="templateid"></div>'); + $('div.form_container').html($form); + $compile($form)($scope); + } + $scope.show_saved_form($scope.business,$scope.type,1); + + + $('body').on('click', function() { + $scope.show = false; + }); + $('ul.showul').off('click').on('click', function(event) { + event.stopPropagation(); + }); + + http_service.post('indusExten/search', {"indusId":$scope.business, "tempType": $scope.type}, function(res){ + if(res.data.data.length!=0) + { + $scope.indus_templates = res.data.data; + } + + + }); + + http_service.post('form/list',{"guTempType":parseInt($scope.type),"cache_id":parseInt($scope.type)},function(res){ + if (res.data.data && res.data.data.child.length > 0) { + $scope.isShow = true; + } else { + $scope.isShow = false; + } + },true); + + +// $scope.searchtemplate = function(type){ +// http_service.post('template/search',{'guIndusId':$scope.business,'guTempType':type},function(res){ +// }) +// } +}]); \ No newline at end of file diff --git a/src/static/js/business/module.js b/src/static/js/business/module.js new file mode 100644 index 0000000..e4fc227 --- /dev/null +++ b/src/static/js/business/module.js @@ -0,0 +1,57 @@ +angular.module('business', []) +.controller('businessCtrl', [ + '$scope', + 'http_service', + '$location', + 'global_service', + function($scope, http_service, $location, global_service){ + + $scope.mouseover_business_item = function(e){ + if($(e.target).is('div')) + $(e.target).addClass('hover_active'); + else + $(e.target).closest('div').addClass('hover_active'); + } + + $scope.mouseout_business_item = function(e){ + if($(e.target).is('div')) + $(e.target).removeClass('hover_active'); + else + $(e.target).closest('div').removeClass('hover_active'); + } + + $scope.show_more = function(){ + $scope.business_card_shown = !($scope.business_card_shown); + } + + $scope.redirect_to_billing_cfg_guide = function(inCode){ + global_service.set_indus(inCode); + var guide = { + child:[ + { + "gcPcsCode": 10, + "gcPcsStep": 99, + "gcInCode":inCode + } + ] + }; + http_service.post('guiCfg/insert',guide,function(res){//新增向导信息 + if(res.data.opState){ + $location.path("/billing_cfg_guide/"+inCode+"/1"); + }else{ + //弹窗 提示新增向导信息失败 + } + }); + + } + + http_service.post('indus/search', {}, function(res){ + if(!res.data.opState){ + return false; + } + $scope.business_list = res.data.data; + + }) + + +}]); \ No newline at end of file diff --git a/src/static/js/config.json b/src/static/js/config.json new file mode 100644 index 0000000..8b643df --- /dev/null +++ b/src/static/js/config.json @@ -0,0 +1,26 @@ +{ + "config": { + "register_url": "BEBFACA2545F097D357B3DF2C8F72324290CC91BC55F94E87F7A7AF03795538C039C3A0D72C0EDA39707CF7615647739873110A860DFF844", + "work_flow_url": "BEBFACA2545F097D88B4BCFB01876BABBCDAD513891773100F6752A7C828C2322F082349347FFE843935A5DA9DA79A1BEEAC97D33686D15CBF43C830FEDE6571", + "userPermission_url":"C6BB1993E6C14AC132418848D7990FAAD940E86C2B302473F04693673D28DD798F01ACCA63BE450E1D668845E53124C8", + "userPermission_method":"31159D0751DDAA1E", + "appId": "77576F4F3C47136D", + "remarks": "测试环境 启用的将config的_去掉" + }, + "config_": { + "register_url": "BEBFACA2545F097D17A03E71CE198FCE27EBB656F0FED7677F7A7AF03795538C039C3A0D72C0EDA39707CF7615647739873110A860DFF844", + "work_flow_url": "BEBFACA2545F097D17A03E71CE198FCEB3102A466901CE237F7A7AF03795538C039C3A0D72C0EDA39707CF7615647739873110A860DFF844", + "userPermission_url":"C6BB1993E6C14AC132418848D7990FAAD940E86C2B302473F04693673D28DD798F01ACCA63BE450E1D668845E53124C8", + "userPermission_method":"31159D0751DDAA1E", + "appId": "77576F4F3C47136D", + "remarks": "预上线环境" + }, + "config__": { + "register_url": "BEBFACA2545F097DEF4B9C1B8EC6ACE327EBB656F0FED767E1C582FEA0B359CF2F082349347FFE843935A5DA9DA79A1B0D73BE256BFBF618", + "work_flow_url": "BEBFACA2545F097DEF4B9C1B8EC6ACE3B3102A466901CE23E1C582FEA0B359CF2F082349347FFE843935A5DA9DA79A1B0D73BE256BFBF618", + "userPermission_url":"8403AF9C6547926D79F2D7809016203A6C6464F591E03DF926B8A74EF6C0CE7524C69A5948EB15DB7CE944590215811FC71953FDC0231CE315F54EAB4CC063AFA7C2458D0D9B9888E90CD0A6F53D99BD2E7BF8A5B52EADF21D668845E53124C8", + "userPermission_method":"BD512F90683BBDFA", + "appId": "77576F4F3C47136D", + "remarks": "正式环境" + } +} \ No newline at end of file diff --git a/src/static/js/config_center/module.js b/src/static/js/config_center/module.js new file mode 100644 index 0000000..7d8b022 --- /dev/null +++ b/src/static/js/config_center/module.js @@ -0,0 +1,21 @@ +angular.module('cfg_center', []) +.controller('cfgCenterCtrl', ['$scope', function($scope){ + +}]) +.directive('hoverCard', ['$rootScope', function($rootScope){ + return { + restrict: 'ACEM', + link: function($scope, element, attrs){ + var $element = $(element); + $element + .on('mouseenter', function(){ + $element.find('img').hide(); + $element.find('label').show(); + }) + .on('mouseleave', function(){ + $element.find('img').show(); + $element.find('label').hide(); + }); + } + } +}]); \ No newline at end of file diff --git a/src/static/js/data/form.json b/src/static/js/data/form.json new file mode 100644 index 0000000..0b4e5ca --- /dev/null +++ b/src/static/js/data/form.json @@ -0,0 +1,113 @@ + { + "guTempType":"1", + "guTempName":"测试预算单", + "guTempDisc":"测试预算单样例数据", + "child": [ + { + "gcCpnName":"", + "gcCpnType":2, + "gcCpnAlias":"多行文本", + "gcCpnDisc":"创建多行文本", + "gcDefVal":"", + "gcInputMust":false + }, + { + "gcCpnName":"", + "gcCpnType":8, + "gcCpnAlias":"地址", + "gcCpnDisc":"dsfsdfsdfds2222", + "gcDefVal":"", + "gcInputMust":false, + "gcOptList":[ + {"value":"","selected":true} + ] + }, + { + "gcCpnName":"", + "gcCpnType":8, + "gcCpnAlias":"地址", + "gcCpnDisc":"dsfsdfsdfdsdddd", + "gcDefVal":"", + "gcInputMust":false, + "gcOptList":[ + {"value":"","selected":true} + ] + }, + { + "gcCpnName":"", + "gcCpnType":6, + "gcCpnAlias":"下拉框", + "gcCpnDisc":"", + "gcDefVal":"", + "gcInputMust":true, + "gcOptList":[ + {"value":"123","selected":true,"$$hashKey":"object:47"}, + {"value":"456","selected":true,"$$hashKey":"object:142"} + ] + }, + { + "gcCpnName":"", + "gcCpnType":5, + "gcCpnAlias":"日期时间", + "gcCpnDisc":"", + "gcDefVal":"", + "gcInputMust":true, + "gcOptList":[ + {"value":"","selected":true} + ] + }, + { + "gcCpnName":"", + "gcCpnType":4, + "gcCpnAlias":"单选框", + "gcCpnDisc":"", + "gcDefVal":"", + "gcInputMust":false, + "gcOptList":[ + {"value":"测试数据1","selected":true,"$$hashKey":"object:10"}, + {"value":"测试数据2","selected":true,"$$hashKey":"object:14"} + ] + }, + { + "gcCpnName":"", + "gcCpnType":10, + "gcCpnAlias":"子表单", + "gcCpnDisc":"", + "gcDefVal":"", + "gcInputMust":false, + "gcOptList":[ + { + "value":"", + "selected":true + } + ], + "child":[ + { + "gcCpnName":"", + "gcCpnType":6, + "gcCpnAlias":"下拉框", + "gcCpnDisc":"", + "gcDefVal":"", + "gcInputMust":true, + "gcOptList":[ + { + "value":"123", + "selected":true, + "$$hashKey":"object:16" + } + ] + }, + { + "gcCpnName":"", + "gcCpnType":2, + "gcCpnAlias":"子表单控件", + "gcCpnDisc":"", + "gcDefVal":"234", + "gcInputMust":true + } + ] + } + ] + } + + diff --git a/src/static/js/data/travel_expense_list.json b/src/static/js/data/travel_expense_list.json new file mode 100644 index 0000000..40ca1d2 --- /dev/null +++ b/src/static/js/data/travel_expense_list.json @@ -0,0 +1,89 @@ +{ + "data":[ + { + "sfCfgType": "012", + "sfFieldName": "ap_c1", + "sfUserId": "10", + "gc_cpn_alias": "预算类型", + "gc_cpn_type": "text" + }, + { + "sfCfgType": "012", + "sfFieldName": "ap_c2", + "sfUserId": "10", + "gc_cpn_alias": "申请人姓名", + "gc_cpn_type": "text" + }, + { + "sfCfgType": "012", + "sfFieldName": "ap_c3", + "sfUserId": "11", + "gc_cpn_alias": "申请日期", + "gc_cpn_type": "date" + },{ + "sfCfgType": "012", + "sfFieldName": "ap_c4", + "sfUserId": "11", + "gc_cpn_alias": "预算金额", + "gc_cpn_type": "number" + }, + { + "sfCfgType": "012", + "sfFieldName": "ap_c5", + "sfUserId": "11", + "gc_cpn_alias": "当前负责人", + "gc_cpn_type": "text" + }, + { + "sfCfgType": "012", + "sfFieldName": "ap_c6", + "sfUserId": "11", + "gc_cpn_alias": "申请日期", + "gc_cpn_type": "date" + }, + + + { + "sfCfgType": "011", + "sfFieldName": "ap_c1", + "sfUserId": "10", + "gc_cpn_alias": "预算类型", + "gc_cpn_type": "text", + "selected": true + }, + { + "sfCfgType": "011", + "sfFieldName": "ap_c2", + "sfUserId": "10", + "gc_cpn_alias": "申请人姓名", + "gc_cpn_type": "text" + }, + { + "sfCfgType": "011", + "sfFieldName": "ap_c3", + "sfUserId": "11", + "gc_cpn_alias": "申请日期", + "gc_cpn_type": "date" + },{ + "sfCfgType": "011", + "sfFieldName": "ap_c4", + "sfUserId": "11", + "gc_cpn_alias": "预算金额", + "gc_cpn_type": "number" + }, + { + "sfCfgType": "011", + "sfFieldName": "ap_c5", + "sfUserId": "11", + "gc_cpn_alias": "当前负责人", + "gc_cpn_type": "text" + }, + { + "sfCfgType": "011", + "sfFieldName": "ap_c6", + "sfUserId": "11", + "gc_cpn_alias": "申请日期", + "gc_cpn_type": "date" + } + ] +} \ No newline at end of file diff --git a/src/static/js/expend_standard/module.js b/src/static/js/expend_standard/module.js new file mode 100644 index 0000000..f893f3e --- /dev/null +++ b/src/static/js/expend_standard/module.js @@ -0,0 +1,2539 @@ +angular.module('expend_standard', []) +.directive('orgSelectorStandard', ['$rootScope', 'http_service', '$compile', '$timeout', 'myServeice', function($rootScope, http_service, $compile, $timeout, myServeice) { + return { + restrict: 'EACM', + scope: { + datamodel: '=', + options: '=' + }, + template: '<div class="user_element">' + + '<span name="user_el_content">' + + '<span class="user_name" ng-repeat="org in org_selected" >' + + '{{org.orgName}} <a ng-href="javascript:void(0)" ng-click="remove_org(org);"><i class="fa fa-times" aria-hidden="true" style="color:#fff;"></i></a>' + + '</span>' + + ' <a class="btn_user_el_add_user" href="javascript:void(0);" ng-click="select_org($event);" >选择组织机构</a>' + + '</span>' + + '</div>', + replace: true, + controller: ['$scope', '$element', function($scope, $element) { + $scope.org_selected = []; + + $scope.select_org = function(e) { + $('div[name="org_select_popup"]').remove(); + var activeclass = "{true:'hr_name',false:'hr_name_selected'}[user.state]"; + var pop_element = $('<div' + + ' name="org_select_popup"' + + ' class="org_select_popup_standard col-md-12"' + + 'onMouseOver ="$(this).draggable();event.stopPropagation();"' + + '>' + + '<div class="org_sel_form">' + + '<div class="row btn_cls org_sel_form_close">' + + '<a ng-href="javascript:void(0);"><i class="fa fa-times main_close" aria-hidden="true" ng-click="close();"></i></a>' + + '</div>' + + '<div class="hr_tree left ztree" style="overflow:auto;">' + '</div>' + + '<div class="right">' + + '<div class="right_area">' + + '<div class="area_title selected_personnel">' + + '<label>已选人员</label>' + + '<span class="float_right">' + + '<a ng-href="javascript:void(0);" class="clear_selected_users" ng-click="clear_org();" ><i class="fa fa-trash-o" aria-hidden="true"></i></a>' + + '</span>' + + '</div>' + + + '<div class="area_body">' + + '<ul>'+ + '<li ng-repeat="org in org_selected">'+ + '<div class="area_content">'+ + '<a class="hr_name" ng-href="javascript:void(0);" href="javascript:void(0);">{{org.orgName}}</a>'+ + '<button class="hr_name_addbtn" ng-click="remove_org(org);">-</button>'+ + '</div>'+ + '</li>'+ + '</ul>'+ + '</div>' + + '</div>' + + '</div>' + + '</div>' + + '</div>'); + $($element).append(pop_element); + $compile(pop_element)($scope); + $scope.init_tree(); + var form_el_div = $($element).closest('div.sub_form_container').children('div').not('[name="journel_budget"]'); + e.stopPropagation(); + }; + }], + link: function($scope, element, attrs) { + $scope.stop_prg = function(event) { + event.stopPropagation(); + }; + + $scope.close = function() { + $('div[name="org_select_popup"]').remove(); + myServeice.setpd($scope.parentitem, $scope.users_selected, $scope.type); + // $scope.query_journel_budget(); + }; + //清除选择 + $scope.clear_org = function(){ + $scope.org_selected = []; + $scope.datamodel = [""]; + } + //选择组织机构 + $scope.add_org = function(treeNode) { + if(treeNode.children && treeNode.children.length != 0){ + _.each(treeNode.children,function(cd){ + $scope.add_org(cd); + }); + }else{ + var org_selecting = { + "orgName":treeNode.name, + "orgCode":treeNode.orgCode + }; + var push_flag = true; + + _.each($scope.org_selected,function(_org){ + if(_org.orgCode == org_selecting.orgCode){ + push_flag = false; + } + }); + if(push_flag){ + $scope.org_selected.push(org_selecting); + if($scope.datamodel && $scope.datamodel.length > 0){ + $scope.datamodel.splice(0, $scope.datamodel.length); + } + _.each($scope.org_selected, function(item) { + if(!$scope.datamodel) + $scope.datamodel = []; + $scope.datamodel.push(item.orgCode); + }) + } + } + }; + $scope.remove_org = function(org) { + _.remove($scope.org_selected,function(n){ + return n == org; + }); + _.pull($scope.datamodel,org.orgCode); + }; + function get_org(data,arr){ + _.each(data,function(_data){ + if(_data.orgCode == arr){ + $scope.org_selected.push({ + "orgName":_data.orgName, + "orgCode":_data.orgCode + }) + } + }); + if(data.child){ + get_org(data.child,arr); + } + } + $scope.init_tree = function() { + http_service.post('base/data/search/institutionData', {}, function(res) { + console.log('33333333'); + if(res.data.opState){ + var hr_data_str = JSON.stringify(res.data.data).replace(/child/g, 'children').replace(/orgName/g, 'name'); + var hr_data_json = JSON.parse(hr_data_str); + var setting = { + 'callback': { + 'onClick': function(event, treeId, treeNode) { + var orgName = treeNode.name; + var md_id = treeNode.orgCode; + if(treeNode.level > 0){ + $scope.add_org(treeNode); + } + } + } + }; + console.log('1110'); + $.fn.zTree.init($("div.hr_tree"), setting, hr_data_json); + }else{ + $scope.$parent.$parent.$parent.$parent.$parent.terro(res.data.errMsg) + } + + }); + } + $scope.init_org = function(){ + http_service.post('base/data/search/institutionData', {}, function(res) { + console.log(22222222); + if(res.data.opState){ + if($scope.datamodel && $scope.datamodel.length != 0){ + _.each($scope.datamodel,function(_arr){ + _.each(res.data.data,function(data){ + get_org(data.child,_arr); + }) + }) + } + } + }); + }; + $scope.init_org(); + } + } + }]) + .directive('select4', ['$rootScope', 'http_service', '$timeout', '$interval', + function($rootScope, http_service, $timeout, $interval) { + return { + restrict: 'ACEM', + templateUrl: './static/templates/select3.html', + transclude: true, + scope: { + style: '=', + datamodel: '=', + options: '=' + }, + compile: function() { + return { + pre: function(scope, iElement, iAttrs, controller) { + var $scope = scope; + $scope.type = scope.$parent.type; + $scope.billid = scope.$parent.billid; + + $scope.$watchGroup(['datamodel','options'], function() { + if(scope.datamodel){ + if(scope.datamodel.length == 0){//替换控件时清空 + scope.sel_val_lst = []; + }else if(scope.datamodel[0] == ''){ + scope.sel_val_lst = []; + } + }else{ + scope.sel_val_lst = []; + } + var mp = _.filter(scope.options, function(op) { + return _.indexOf(scope.datamodel, op.code) > -1; + }); + if(mp.length !== 0){ + scope.sel_val_lst = _.map(mp, function(m) { + return { 'value': m.code, 'label': m.value }; + }); + } + + var typename = _.filter(scope.options, function(op) { + return _.indexOf(scope.datamodel, op.mdCode) > -1||_.indexOf(scope.datamodel, op.cdCode) > -1; + }); + if(typename.length !== 0 && !scope.sel_val_lst){ + scope.sel_val_lst = _.map(typename, function(n) { + return {'value': n.mdCode||n.cdCode, 'label': n.mdName||n.cdValue }; + }); +// scope.sel_val_lst = scope.datamodel; + } + }, true); + var $el = $(iElement); + $el.find('div.select-container').css({"padding-left":'10px',"width":"90%"}); + $el.find('div.suffix').css({"width":"30%","max-width":"26px"}); + $el.find('div.val-card').css({"padding":"0px","height":"28px","line-height":"28px"}); + $el.find('div.select-container').on('click', function(event) { + $('div.drop_down_sel').remove(); + var $select = $el.find('select'); + var isMultiple = $select.attr('multiple'); + var $options = $el.find('select > option'); + // 增加搜索框 + var $options_str = '<ul>' + + '<li class="sel_query">' + + '<input type="text" name="query" >' + + '<i class="fa fa-search" aria-hidden="true"></i>' + + '</li>' + + '</ul>'; + // 可多选时 增加全选复选框 + if($select.attr('multiple')) { + $options_str += '<ul>' + + '<li>' + + '<div>' + + '<div style="padding:0px 8px 0px 4px; ">' + + '<input type="checkbox" name="all" >' + + '</div>' + + '<div>全选</div>' + + '</div>' + + '</li>' + + '</ul>'; + } + _.each(scope.options, function(option) { + var checked = ''; + if(_.indexOf(scope.datamodel, option.code) > -1) { + checked = 'checked'; + } + var optionvalue = option.value || option.mdName || option.cdValue; + var optioncode = option.code || option.mdCode || option.cdCode; + $options_str += '<ul>' + + '<li>' + + '<div>' + + '<div style="padding:0px 8px 0px 4px; ">' + + '<input type="checkbox" name="checkbox" label="' + optionvalue + '" value="' + optioncode + '" ' + checked + ' >' + + '</div>' + + '<div class="overhidden" title="' + optionvalue + '">' + optionvalue + '</div>' + + '</div>' + + '</li>' + + '</ul>'; + }); + var $select_obj = $('<div drop-down-selector="" filterlist="searchlist" class="drop_down_sel" style="background:#fff;">' + + $options_str + + '</div>'); + $el.find('div.select3-element').append($select_obj); + $('body').off('click').on('click', function() { + $('div.drop_down_sel').remove(); + }); + $('div.drop_down_sel').off('click').on('click', function(event) { + event.stopPropagation(); + }); + + // 查询功能 + $select_obj.find('input[name="query"]').on('keyup', function() { + var $el = $(this); + var inputs = $select_obj.find('input[name="checkbox"]'); + inputs.each(function() { + var val = $(this).attr('label'); + var input_val = $el.val(); + if(val.indexOf(input_val) > -1) { + $(this).closest('ul').show(); + } else { + $(this).closest('ul').hide(); + } + }); + }); + + // 点击选择 + $select_obj.find('input[name="checkbox"]').on('click', function() { + var vals_selected = []; + if(!isMultiple) { + $('div.drop_down_sel input[name="checkbox"]').prop('checked', false); + $(this).prop('checked', true); + $select.val($(this).val()); + vals_selected = [{ 'value': $(this).val(), 'label': $(this).attr('label') }]; + } else { + var vls = []; + $('div.drop_down_sel input[name="checkbox"]:checked').each(function() { + vals_selected.push({ 'value': $(this).val(), 'label': $(this).attr('label') }); + vls.push($(this).val()); + }); + $select.val(vls); + } + $timeout(function() { + scope.sel_val_lst = vals_selected; + }, 0); + if(scope.datamodel && scope.datamodel.length > 0){ + scope.datamodel.splice(0, scope.datamodel.length); + } + _.each(vals_selected, function(item) { + if(!scope.datamodel) + scope.datamodel = []; + scope.datamodel.push(item.value); + }) + /* + $timeout(function(){ + scope.datamodel.concat(select_vals); + }, 0); + */ + }); + $select_obj.find('input[name="all"]').on('click', function() { + if($(this).prop("checked") == false) { + $('div.drop_down_sel input[name="checkbox"]').each(function() { + if($(this).prop("checked") == true) { + $(this).click(); + } + }); + } else { + $('div.drop_down_sel input[name="checkbox"]').each(function() { + if($(this).prop("checked") == false) { + $(this).click(); + } + }); + } + }) + event.stopPropagation(); + }); + scope.rm_option = function(event) { + var $elt = $(event.target); + $elt.closest('div.val-card').remove(); + var val = $elt.attr('val'); + var value = JSON.parse(val).value; + scope.sel_val_lst = _.filter(scope.sel_val_lst, function(t) { + return JSON.stringify(t) != value; + }); + $timeout(function() { + _.pull(scope.datamodel, value); + }, 0); + event.stopPropagation(); + }; + }, + post: function($scope, element, attrs) {} + } + } + } + } + ]) + .directive('expenseStandardRow', ['$rootScope', 'http_service', '$timeout','$compile', function($rootScope, http_service, $timeout,$compile) { + return { + restrict: 'ACEM', + template: '<tr>' + + '<td ng-repeat="col in rowData" >' + + '<a ' + + 'class="foldBtn" ' + + 'ng-href="javascript:void(0);" ' + + 'ng-click="unfold(expensedata, expenserowdata, $index)" ' + + 'ng-if="!col.code && col.values.length && !isEmpty(col) && expenserowdata[$index].grant_value.length > 1" ' + + '>' + +// '<i class="fa fa-plus-square-o" aria-hidden="true"></i>' + +// '<img src="./static/img/unfold.png" class="unfoldelment"/>' + + '<img src="./static/img/list.png" class="unfoldelment"/>' + + '</a>' + + '<a ' + + 'class="foldBtn" ' + + 'ng-href="javascript:void(0);" ' + + 'ng-click="fold(expensedata, expenserowdata, $index)" ' + + 'ng-if="!col.code && col.values.length && !isEmpty(col) && expenserowdata[$index].group_id" ' + + '>' + + // '<i class="fa fa-minus-square-o" aria-hidden="true"></i>' + +// '<img src="./static/img/unfold.png" class="unfoldelment"/>' + + '<img src="./static/img/list.png" class="unfoldelment"/>' + + '</a>' + + '<div ng-if="col.is_org" org-selector-standard datamodel="expenserowdata[$index].grant_value" options="col.values"></div>'+ + '<span select4 datamodel="expenserowdata[$index].grant_value" options="col.values" style=style ng-if="!col.is_org && !col.code && !isEmpty(col) && col.elIden && col.elIden.length != 0 != null && col.mdCode" >' + + '<select multiple ' + + 'ng-options="val.code as val.value for val in col.values" ' + + 'ng-model="expenserowdata[$index].grant_value" ' + + 'value="expenserowdata[$index].grant_value" ' + + '>' + + '</select>' + + '</span>' + + '<span class="Inverse_icon" ng-click="change_Inverse($index)" ng-if="!col.is_org && !col.code && !isEmpty(col) && col.elIden && col.elIden.length != 0 != null && col.mdCode">'+ + '<i ng-if="expenserowdata[$index].asInverse == 1" class="fa fa-check-square-o" aria-hidden="true"></i>'+ + '<i ng-if="expenserowdata[$index].asInverse == 0" class="fa fa-minus-square-o" aria-hidden="true"></i>'+ + '</span>'+ + '<input type="text" ng-if= "!col.is_org && !col.code && !isEmpty(col) && !col.values.length && (col.elIden == null || col.elIden.length == 0) && col.eleValue && col.mdCode" ng-model = "expenserowdata[$index].grant_value" class="fxinput" /><span ng-if= "!col.is_org && !col.code && !isEmpty(col) && !col.values.length && col.eleValue && col.mdCode && (col.elIden == null || col.elIden.length == 0)" class="fxclass" ng-click="fxdiv(col,$index)">Fx</span>'+ + '<input type="text" ng-if="!col.is_org && col.code && !isEmpty(col) && col.mdCode" ng-model="expenserowdata[$index].grant_value">' + + '<input type="text" ng-if="!col.is_org && !col.code && !col.mdCode && !col.id && !col.value" ng-model="expenserowdata[$index].grant_value">' + + '<a ng-click="rm_row(expenserowdata);" ng-if="$index === rowData.length-1" style="position:absolute;right:-15px;top:-2px;z-index:9;"><img src="./static/img/delete.png" class="deleteelment"/></a>' + + '<input type="text" ng-if="col.id && col.notFound != true" class="fxinput" ng-model="expenserowdata[$index].sys_val.show_sys_fx">'+ + '<span class="fxclass" ng-if="col.id && col.notFound != true" ng-click="sys_fx(col,$index)">Fx</span>'+ + '</td>' + + '</tr>', + replace: true, + scope: { + tabletitlescfg: '=', + expenserowdata: '=', + expensedata: '=' + }, + compile: function() { + return { + pre: function(scope, iElement, iAttrs, controller) { + scope.style = { + 'width': '80%' + } + scope.isEmpty = function(obj) { + return _.keys(obj).length === 1; + }; + scope.rm_row = function(rowData) { + + + var delete_index; + _.each(scope.expensedata, function(_row_data, index) { + if(_row_data === rowData) { + + + delete_index = index; + } + }); + if(scope.expensedata.length > 1){ + scope.expensedata.splice(delete_index,1); + }else{ + var ex_keys = _.keys(scope.expensedata[0]); + _.each(ex_keys,function(ekey){ + scope.expensedata[0][ekey] = {"asInverse":1,"grant_value":""} + }) + } + + }; + $('body').off('click').on('click', function() { + $('div.showtype').remove(); + }); + $('div.showtype').off('click').on('click', function(event) { + event.stopPropagation(); + }); + //正选、反选 + scope.change_Inverse = function(index){ + if(scope.expenserowdata[index].asInverse == 1){ + scope.expenserowdata[index].asInverse = 0; + }else{ + scope.expenserowdata[index].asInverse = 1; + } + } + scope.unfold = function(allData, rowData, colNum) { + var colValues = _.uniq(rowData[colNum]['grant_value']); + var uid = rowData[colNum]['group_id'] || _.uuid(); + var newRowData = []; + _.each(allData, function(data) { + if(data === rowData) { + for(var i = 0, len = colValues.length; i < len; i++) { + var dt = _.cloneDeep(data); + dt[colNum]['grant_value'] = [colValues[i]]; + dt[colNum]['group_id'] = uid; + newRowData.push(dt); + } + } else { + newRowData.push(data); + } + }); + scope.expensedata.splice(0, scope.expensedata.length); + $timeout(function() { + _.each(newRowData, function(rd) { + scope.expensedata.push(rd); + }); + }, 1); + + }; + scope.fold = function(allData, rowData, colNum) { + var colValues = rowData[colNum]['grant_value']; + var uid = rowData[colNum]['group_id']; + var newRowData = []; + var gt_vals = []; + var tmp = {}; + _.each(allData, function(data) { + if(!data[colNum]) return false; + var _uid = data[colNum] && data[colNum]['group_id']; + if(_uid === uid) { + if(!tmp[uid]) { + newRowData.push(rowData); + tmp[uid] = rowData; + } + gt_vals = gt_vals.concat(data[colNum]['grant_value']); + } else { + newRowData.push(data); + } + }); + if(!!gt_vals.length && tmp[uid]) { + tmp[uid][colNum]['grant_value'] = gt_vals; + tmp[uid][colNum]['group_id'] = null; + } + scope.expensedata.splice(0, scope.expensedata.length); + + $timeout(function() { + _.each(newRowData, function(rd) { + scope.expensedata.push(rd); + }); + }, 1); + }; + +// scope.$watch(function(){ +// return $rootScope.relate +// },function(){ +// if($rootScope.relate != undefined){ +// scope.relation = $rootScope.relate.split(" ")[0]; +// scope.amounts = $rootScope.relate.split(" ")[1]; +// } +// }) +// +// scope.$watch(function(){ +// return $rootScope.pervalue +// },function(){ +// if($rootScope.pervalue != undefined){ +// scope.per = $rootScope.pervalue; +// } +// }) + + scope.sys_fx = function(col,$index){//系统变量编辑 + scope.sys_fx_index = $index; + if(scope.expenserowdata[$index] && scope.expenserowdata[$index]['sys_val'].id == undefined){ + _.extend(scope.expenserowdata[$index]['sys_val'],col); +// scope.expenserowdata[$index]['sys_val'] = _.cloneDeep(col); + } + scope.sys_col = _.cloneDeep(scope.expenserowdata[$index]['sys_val']); + scope.joinMath = []; + _.each(scope.sys_col.children,function(cd){ + if(cd.joinMathId && cd.joinchildren == undefined){ + _.each($rootScope.system_titles,function(sys_tit){ + if(sys_tit.id == cd.joinMathId){ + _.extend(cd,{'joinchildren':_.cloneDeep(sys_tit.child)}); + scope.joinMath.push(cd); + } + }) + }else if(cd.joinMathId){ + scope.joinMath.push(cd); + } + }) +// if(col.group == 1 || col.group == 2){ +// scope.sys_count_show = true; +// }else{ +// scope.sys_count_show = false; +// } + scope.sys_count_show = col.group; + scope.col_type = col.resultFromat; + if(scope.sys_count_show == 3){ + scope.sys_sign_list = ["+","-","*","/"]; + }else{ + if(col.resultFromat == 10 || col.resultFromat == 30){//系统变量类型为 数值 + scope.sys_sign_list = ["<",">",">=","<=","==","<>"]; + // scope.sys_data_type_list = [{"label":"字符","value":"string"},{"label":"数值","value":"number"}]; + }else if(col.resultFromat == 20){//系统变量类型为 比较 + scope.sys_sign_list = ["=="]; + scope.sys_data_type_list = [{"label":"真","value":"true"},{"label":"假","value":"false"}]; + } + } + scope.sys_sign = undefined; + scope.sys_data = undefined; + scope.sys_data_type = undefined; + if(scope.sys_col.sys_count){ + var sys_relation = _.drop(scope.sys_col.sys_count.split(" ")); + if(col.resultFromat == 10 || col.resultFromat == 30){ + scope.sys_sign = sys_relation[0]; + scope.sys_data = sys_relation[1]; +// scope.sys_data_type = sys_relation[2].replace("{",""); +// scope.sys_data_type = scope.sys_data_type.replace("}",""); +// _.each(scope.sys_data_type_list,function(data_type){ +// if(data_type.value == scope.sys_data_type){ +// $timeout(function(){ +// scope.sys_data_type = _.cloneDeep(data_type); +// },1) +// +// } +// }) + }else if(col.resultFromat == 20){ + scope.sys_sign = sys_relation[0]; + scope.sys_data_type = sys_relation[1]; + _.each(scope.sys_data_type_list,function(data_type){ + if(data_type.value == scope.sys_data_type){ + $timeout(function(){ + scope.sys_data_type = _.cloneDeep(data_type); + },1) + } + }) + } + } + var sys_null = ''; + var sys_fx = "<div class='bg-modal''>"+ + "<div class='pop_panel' style='width:450px;height:auto;' onMouseOver ='$(this).draggable();event.stopPropagation();'>"+ + "<div class='custom_validate'>" + + "<div class='cv_title' style='margin-bottom:5px'>规则公式<div class='close' ng-click='sys_close()'><img src='./static/img/close.png' style='width:60%;margin-top:5px;'></div></div>"+ + "<div class='relate_title'>"+ + "<span class='col-md-3'>系统变量</span>"+ + "<span class='col-md-3' style='text-align: right;'>运算符</span>"+ + "<span class='col-md-3' ng-show='col_type == 20 && sys_count_show != 3'>数据类型</span>"+ + "<span class='col-md-3' ng-show='col_type == 10 || col_type == 30 || sys_count_show == 3'>输入值</span>"+ + "</div>"+ + "<div style='margin-bottom:5px' class='col-md-4'>"+ + "<span class='sys_fxspan' title='"+col.mdName+"'>"+col.mdName+"</span>"+ + "</div>"+ + "<div style='margin-bottom:5px' class='col-md-3'>"+ + "<select class='relate_select' ng-change='clear_data()' ng-model='sys_sign' ng-options='sign for sign in sys_sign_list'>"+ + "<option value=''>-- 请选择 --</option>"+ + "</select>"+ + "</div>"+ + "<div style='margin-bottom:5px' class='col-md-3' ng-show='col_type == 20 && sys_count_show != 3'>"+ + "<select ng-disabled='(sys_sign.length == 0 || sys_sign == undefined)' class='relate_select' ng-model='sys_data_type' ng-options=' type.label for type in sys_data_type_list track by type.value'>"+ + "<option value=''>-- 请选择 --</option>"+ + "</select>"+ + "</div>"+ + "<div style='margin-bottom:5px' class='col-md-3' ng-show='col_type == 10 || col_type == 30 || sys_count_show == 3'>"+ + "<input class='relate_select' type='text' ng-model='sys_data' ng-disabled='(sys_sign.length == 0 || sys_sign == undefined)' />"+ + "</div>"+ + "<div class='col-md-12'>"+ + "<div class='col-md-4' ng-if='parameter.joinMathId == undefined' ng-repeat='parameter in sys_col.children track by $index'>"+ + "<label>{{parameter.mdName}}<span ng-if='parameter.meName'>-{{parameter.meName}}</span></label>"+ + "<input type='text' class='sys_text' ng-model='parameter.val'/>"+ + "</div>"+ + "</div>"+ + "<div class='col-md-12' ng-if='joins.joinMathId != undefined' ng-repeat='joins in joinMath track by $index'>"+ + "<div class='col-md-4' ng-repeat='join in joins.joinchildren track by $index'>"+ + "<label>{{join.mdName}}<span ng-if='join.meName'>-{{join.meName}}</span></label>"+ + "<input type='text' class='sys_text' ng-model='join.val'/>"+ + "</div>"+ + "</div>"+ + "<div class='col-md-11 sys_savefx'><button class='btn btn-success btn-favourite savebtn' ng-click='save_sys_fx()'>保存</button></div>" + + "</div>"+ + "</div>"+ + "</div>" + var $sys_fx = $compile(sys_fx)(scope); + $('body').append($sys_fx); + } + + scope.sys_close = function(){ + $('.bg-modal').remove(); + } + + scope.clear_data = function(){ + if(scope.sys_sign == '' || _.isNull(scope.sys_sign)){ + scope.sys_data = ''; + scope.sys_data_type = ""; + } + } + + scope.save_sys_fx = function(){ + scope.expenserowdata[scope.sys_fx_index]['sys_val'] = _.cloneDeep(scope.sys_col); + var sys_arr = []; + _.each(scope.sys_col.children,function(cd){ + if(cd.val && cd.val != ""){ + if(cd.joinMathId == undefined){ + sys_arr.push(cd.val); + }else{ + _.each(scope.joinMath,function(join){ + if(join.joinMathId == cd.joinMathId){ + _.each(cd.joinchildren,function(jcd){ + if(jcd.val && jcd.val != ""){ + sys_arr.push(jcd.val) + } + }) + } + }) + } + } + }); + scope.expenserowdata[scope.sys_fx_index]['sys_val']['show_sys_fx'] = scope.sys_col.name + "(" + sys_arr.join(",") + ")"; +// if(scope.sys_count_show){//补助条件 与 标准 + var sys_count = ''; + var sys_count_str = ''; + if(scope.sys_sign != undefined && scope.sys_sign != "" && _.isNull(scope.sys_sign) == false){ + sys_count += " " + scope.sys_sign; + sys_count_str += " " + scope.sys_sign; + } + + if(scope.sys_data != undefined && scope.sys_data != "" && _.isNull(scope.sys_data) == false){ + sys_count += " "+scope.sys_data; + sys_count_str += " " + scope.sys_data; + } + + + if(scope.sys_data_type != '' && scope.sys_data_type != undefined && scope.sys_data_type.value != "" && _.isNull(scope.sys_data_type.value) == false){ + if(scope.col_type == 10 || scope.col_type == 30){ + sys_count += " {"+scope.sys_data_type.value + "}"; + }else{ + sys_count += " "+ scope.sys_data_type.value; + } + sys_count_str += " "+ scope.sys_data_type.label; + } + + if((scope.sys_sign == undefined || scope.sys_sign == "" || _.isNull(scope.sys_sign) || scope.sys_data == undefined || scope.sys_data == "" || _.isNull(scope.sys_data)) && (scope.col_type == 10 || scope.col_type == 30 || scope.sys_count_show == 3)){//运算符 与输入值必须同时存在 + scope.expenserowdata[scope.sys_fx_index]['sys_val']['sys_count'] = ''; + sys_count_str = ''; + }else if(scope.col_type == 20 && (scope.sys_sign == undefined || scope.sys_sign == "" || _.isNull(scope.sys_sign) || scope.sys_data_type == '' || scope.sys_data_type == undefined || scope.sys_data_type.value == "" || _.isNull(scope.sys_data_type.value))){ + scope.expenserowdata[scope.sys_fx_index]['sys_val']['sys_count'] = ''; + sys_count_str = ''; + }else{ + scope.expenserowdata[scope.sys_fx_index]['sys_val']['sys_count'] = sys_count; + } + scope.expenserowdata[scope.sys_fx_index]['sys_val']['show_sys_fx'] += sys_count_str +// } + scope.sys_close(); + } + + scope.fxdiv = function(col,$index){ + + scope.fixdiv_index = $index; + var fxdiv = "<div class='bg-modal''>"+ + "<div class='pop_panel' style='width:450px;height:270px;' onMouseOver ='$(this).draggable();event.stopPropagation();'>"+ + "<div class='custom_validate'>" + + "<div class='cv_title' style='margin-bottom:5px'>规则公式<div class='close' ng-click='close()'><img src='./static/img/close.png' style='width:60%;margin-top:5px;'></div></div>"+ + "<span class='fxtitle'>补助标准内容</span><span class='fxtitle'>布尔运算符</span><span class='fxtitle'>数据类型</span><span class='fxtitle'>输入值</span>" + + "<div class='col-md-3 fxspan'>"+col.mdName+"</div>"+ + "<div class='search_column col-md-3'>"+ + "<div class='select3-element selectul'>"+ + "<div class='select-container' style='width:100px;padding-left:10px;' ng-click = 'fxshowss = !fxshowss' class='relation'>{{relation}}"+ + "<div class='suffix'>"+ + "<i class='fa fa-caret-down' aria-hidden='true'></i>"+ + "</div>"+ + "</div>"+ + "<ul ng-show='fxshowss' class='showfx' id='showfxs' ng-click='getrelation($event)'>"+ + "<li><</li>"+ + "<li><=</li>"+ + "<li>></li>"+ + "<li>>=</li>"+ + "<li>==</li>"+ + "</ul>"+ + "</div>"+ + "</div>"+ + "<div class='search_column col-md-3'>"+ + "<div class='select3-element selectul' ng-click='fxshows = !fxshows'>"+ + "<div class='select-container' style='width:100px;padding-left:10px;' ng-style='style'>{{per}}"+ + "<div class='suffix'>"+ + "<i class='fa fa-caret-down' aria-hidden='true'></i>"+ + "</div>"+ + "</div>"+ + "<ul ng-show='fxshows' class='showfx' id='showfx' ng-click='getper($event)'>"+ + "<li>天数</li>"+ + "<li>公里数</li>"+ + "<li>小时数</li>"+ + "</ul>"+ + "</div>"+ + "</div>"+ + "<div class='col-md-2'><input type='text' ng-model='amounts' min='0' style='width:60px;padding:10px;'/></div>"+ + "<div class='col-md-11 fxresult'>公式结果:{{aa}}"+ col.mdName +" {{relation}} {{amounts}} {{per}}</div>"+ + "<div class='col-md-11 savefx'><button class='btn btn-success btn-favourite savebtn' ng-click='savefx()'>保存</button></div>" + + "</div>"+ + "</div>"+ + "</div>" + var $fxdiv = $compile(fxdiv)(scope); + $('body').append($fxdiv); + if(scope.expenserowdata[$index] && scope.expenserowdata[$index].grant_value){ + if(_.isArray(scope.expenserowdata[$index].grant_value)){ + var fx_data = scope.expenserowdata[$index].grant_value[0].split(" "); + }else{ + var fx_data = scope.expenserowdata[$index].grant_value.split(" "); + } + + scope.relation = fx_data[1]; + scope.amounts = fx_data[2]; + scope.per = fx_data[3]; + } +// $('body').off('click').on('click',function() { +// if(scope.fxshows){ +// $('#showfx').hide(); +// scope.fxshows = false; +// } +// if(scope.fxshowss){ +// $('#showfxs').hide(); +// scope.fxshowss = false; +// } +// }); +// $('body').off('click').on('click', function() { +// $('div.showfx').remove(); +// }); +// $('div.drop_down_sel').off('click').on('click', function(event) { +// event.stopPropagation(); +// }); +// $('div.select3-element').off('click').on('click', function(event) { +// event.stopPropagation(); +// }); + + } + + scope.getper = function(event){ + var event = event || window.event; + scope.per = event.target.innerHTML; + scope.per = scope.per.split("").slice(0,-1).join(""); + scope.fxshows = true; + } + + scope.getrelation = function(event){ + var event = event || window.event; + scope.relation = event.target.innerText; + scope.fxshowss = false; + } + scope.close = function(){ + $('.fxresult').text(""); + $('.bg-modal').hide(); + } + scope.savefx = function(){ + if(!scope.per || !scope.relation || !scope.amounts){ + scope.$parent.$parent.$parent.tinfo('请填写完成后保存'); + }else if(isNaN(scope.amounts)){ + scope.$parent.$parent.$parent.tinfo('请在输入值处填写数字'); + }else{ + scope.result = $('.fxresult').text().substring(5); + $('.fxresult').text(""); + if(scope.expenserowdata[scope.fixdiv_index] == undefined){ + var grant_value_now = {"grant_value":scope.result}; + var fixdiv_index = scope.fixdiv_index; + scope.expenserowdata[fixdiv_index] = grant_value_now; + }else{ + scope.expenserowdata[scope.fixdiv_index].grant_value = scope.result; + } + scope.close(); + } + + } + + + function refreshRowData() { + scope.rowData = []; +// + _.each(scope.expenserowdata,function(row_data){ + if(row_data != undefined && row_data.asInverse == undefined){ + _.extend(row_data,{"asInverse":1}); + } + }) + var conditionCfg = scope.tabletitlescfg.expenseConditionsTitles; + var criteriaCfg = scope.tabletitlescfg.expenseCtriteraTitles; + var budgetCfg = scope.tabletitlescfg.expenseBudgetTitles; + var i = 0; + _.each(conditionCfg, function(cfg) { +// if(!cfg.mdId) { +// scope.rowData[i] = {}; +// } else { + scope.rowData[i] = cfg; +// } + i++; + }); + _.each(criteriaCfg, function(cfg) { +// if(!cfg.mdId) { +// scope.rowData[i] = {}; +// } else { + scope.rowData[i] = cfg; +// } + i++; + }); +// + _.each(budgetCfg, function(cfg) { + _.each(cfg.child, function(sub_cfg) { + if(!sub_cfg.code && cfg.id == undefined) { + scope.rowData[i] = {}; + } else if(cfg.id != undefined){//系统变量处理 + scope.rowData[i] = cfg; + } else{ + scope.rowData[i] = _.extend( + sub_cfg, { + 'mdId': cfg.mdId, + 'mdDesc': cfg.mdDesc, + 'mdCode': cfg.mdCode, + 'mdName': cfg.mdName, + 'mdType': cfg.mdType + } + ); + } + i++; + }); + }); + _.each(scope.rowData, function(title) { + if(!title.code && title.mdCode && title.eleCode) { + http_service.post('base/data/search', { "code": title.mdCode,"cache_id":title.mdCode }, function(res) { + if(!res.data.opState){ + return false; + } + title['values'] = res.data.data.child; + title['elIden'] = res.data.data.elIden; + },true) + } + }); + var is_org; + _.each(filed,function(_filed){ + if(_filed.busCode == "orgCode"){ + is_org = _filed.mdCode; + } + }) + _.each(scope.rowData, function(title){ + if(title.mdCode == is_org){ + title[is_org] == true; + } +// if(title.mdCode == "F085"){ +// title['is_org'] = true; +// } + }) + } + scope.$watch('tabletitlescfg', function() { + refreshRowData(); + }, true); + } + } + } + } + }]) + .directive('expenseTable', ['$rootScope', 'http_service','$timeout', function($rootScope, http_service,$timeout) { + return { + restrict: 'ACEM', + templateUrl: './static/templates/expense_standard_table.html', + replace: true, + scope: { + allexpensedata: '=', + expensedata: '=', + index: '=', + tabletitlescfg: '=', + tabletitlescfgs: '=', + sstype: '=', + ssname: '=', +// ssSubType:'=', + sstypes: '=', + ssnames: '=', + ssrules:'=', +// ssSubTypes:'=', + sstypename: '=', + ssnamename:'=', + sstnames:'=', + ssnnames:'=' + }, + compile: function() { + return { + pre: function(scope, iElement, iAttrs, controller) { + scope.$watch("tabletitlescfg",function(){ + scope.expenseConditionsTitles = scope.tabletitlescfg['expenseConditionsTitles']; + scope.expenseCtriteraTitles = scope.tabletitlescfg['expenseCtriteraTitles']; + scope.expenseBudgetTitles = scope.tabletitlescfg['expenseBudgetTitles']; + }); + scope.expenseConditionsTitles = scope.tabletitlescfg['expenseConditionsTitles']; + scope.expenseCtriteraTitles = scope.tabletitlescfg['expenseCtriteraTitles']; + scope.expenseBudgetTitles = scope.tabletitlescfg['expenseBudgetTitles']; + + scope.$watch(function(){ + return scope.ssrules; + },function(){ + scope.ssRule = scope.ssrules[scope.index]; + }) + + scope.ssRuleOps = [ + {"val":"0","name":"无"}, + {"val":"1","name":"最大"}, + {"val":"2","name":"最小"}, + {"val":"3","name":"平均"}, + {"val":"4","name":"最先到达"}, + {"val":"5","name":"最后到达"} + ]; + scope.budgetColspan = function(titles) { + var colspan = 0; + _.each(titles, function(title) { + if(title.child && title.child.length) { + colspan += title.child.length; + } else { + colspan += 1; + } + }); + return colspan; + }; + scope.duplicate_expense_strd_table = function() { + $('div.drop_down_sel').remove(); + scope.allexpensedata.push(_.cloneDeep(scope.expensedata)); + scope.tabletitlescfgs.push(_.cloneDeep(scope.tabletitlescfg)); +// scope.sstypename.push(_.cloneDeep(scope.sstypename)); +// scope.ssnamename.push(_.cloneDeep(scope.ssnamename)); + scope.ssnames.push(_.cloneDeep(scope.ssname)); + scope.sstypes.push(_.cloneDeep(scope.sstype)); +// scope.ssSubTypes.push(_.cloneDeep(scope.ssSubType)); + }; + + scope.rm_expense_strd_table = function() { + $('div.drop_down_sel').remove(); + _.remove(scope.allexpensedata, function(item) { + return item === scope.expensedata + }); + _.remove(scope.tabletitlescfgs, function(item) { + return item === scope.tabletitlescfg; + }); +// _.remove(scope.ssnames,function(item){ +// return item === scope.ssname +// }) +// _.remove(scope.types,function(item){ +// return item === scope.sstype +// }) +// _.remove(scope.expenseBudgetTitles,function(item){ +// return item === scope.expenseBudgetTitles[0] +// }) +// _.remove(scope.expenseConditionsTitles,function(item){ +// return item === scope.expenseConditionsTitles[0] +// }) +// _.remove(scope.expenseCtriteraTitles,function(item){ +// return item === scope.expenseCtriteraTitles[0] +// }) +// scope.addConditions(); +// scope.addCritera(); +// scope.addBudget(); + +// _.each(scope.expenseBudgetTitles,function(budgettitle){ +// _.remove(scope.tabletitlescfg,function(item){ +// return item === budgettitle +// }) +// }) +// _.each(scope.expenseConditionsTitles,function(conditiontitle){ +// _.remove(scope.tabletitlescfg,function(item){ +// return item === conditiontitle +// }) +// }) +// _.each(scope.expenseCtriteraTitles,function(ctriteratitle){ +// _.remove(scope.tabletitlescfg,function(item){ +// return item === ctriteratitle +// }) +// }) +// scope.sstypename='' +// scope.ssnamename='' + scope.sstypes.splice(scope.index,1) + scope.ssnames.splice(scope.index,1) + scope.ssrules.splice(scope.index,1) + scope.ssRule = scope.ssrules[scope.index]; + }; + +// scope.$watch('tabletitlescfgs', function() { +// scope.$parent.table(); +// }); + //添加一个条件目录 + scope.addConditions = function() { + var index = _.cloneDeep(scope.expenseConditionsTitles).length; + for(i in scope.expensedata){ + var data = _.cloneDeep(scope.expensedata[i]); + var newdata = {}; + var num = -1; + for(j in scope.expensedata[i]){ + num++; + newdata[num] = _.cloneDeep(data[j]); + + if(j == (index-1)){ + num++; + newdata[num] = {"grant_value":[""]}; + }else if(j > (index-1)){ + newdata[num] = _.cloneDeep(data[j]); + } + } + scope.expensedata[i] = newdata; + } + scope.expenseConditionsTitles.push({ + enable: true + }); + }; + //添加一个标准目录 + scope.addCritera = function() { + var index1 = _.cloneDeep(scope.expenseConditionsTitles).length; + var index2 = _.cloneDeep(scope.expenseCtriteraTitles).length; + var index = index1+index2; + for(i in scope.expensedata){ + var data = _.cloneDeep(scope.expensedata[i]); + var newdata = {}; + var num = -1; + for(j in scope.expensedata[i]){ + num++; + newdata[num] = _.cloneDeep(data[j]); + + if(j == (index-1)){ + num++; + newdata[num] = {"grant_value":[""]}; + }else if(j > (index-1)){ + newdata[num] = _.cloneDeep(data[j]); + } + } + scope.expensedata[i] = newdata; + } + scope.expenseCtriteraTitles.push({ + enable: true + }); +// var sliceinfo = []; +// _.each(scope.allexpensedata,function(data){ +//// if(data.length > 1){ +// _.each(data,function(info,index){ +// for(i in info){ +// var infos = info[i]; +// info[2] = {'grant_value':['']} +// if(parseInt(i) > 2){ +//// info[i] = info[i+1]; +// sliceinfo.push(infos); +// } +// } +// }) +//// } +// }) + }; + + //添加一个横向显示的目录 + scope.addBudget = function() { + for(i in scope.expensedata){ + var data = _.cloneDeep(scope.expensedata[i]); + var num = -1; + for(j in scope.expensedata[i]){ + num++; + } + num++; + scope.expensedata[i][num] = {"grant_value":[""]}; + } + scope.expenseBudgetTitles.push({ + enable: true, + child: [{}] + }); + }; + //移出目录 + scope.rmTitle = function(title,indexs,type) { + var index1 = _.cloneDeep(scope.expenseConditionsTitles).length; + var index2 = _.cloneDeep(scope.expenseCtriteraTitles).length; + var index3 = _.cloneDeep(scope.expenseBudgetTitles).length; + var typeindex; + var index; + var childnum; + var thischildnum; + switch (type){ + case 1: + index = indexs+1; + typeindex = index1; + thischildnum = 1; + break; + case 2: + index = parseInt(index1)+indexs+1; + typeindex = index2; + thischildnum = 1; + break; + case 3: + index = parseInt(index1)+parseInt(index2); + typeindex = index3; + childnum = 0; + for(i in scope.expenseBudgetTitles){ + childnum += scope.expenseBudgetTitles[i].child.length; + if(scope.expenseBudgetTitles[i] == title){ + break; + } + } +// index += childnum; + thischildnum = title.child.length; + index = index + childnum - thischildnum +1; + break; + } + for(i in scope.expensedata){ + var data = _.cloneDeep(scope.expensedata[i]); + var newdata = {}; + var num = -1; + for(j in scope.expensedata[i]){ +// num++; +// if(index == 1){ +// newdata[j] = {"grant_value":[""]}; +// }else{ +// newdata[j] = _.cloneDeep(data[j]); +// } + num++; + if(j != (index-1)){ + if(data[num] != undefined){ + newdata[j] = _.cloneDeep(data[num]); + } + }else{ + if(typeindex != 1){ + num += thischildnum; + newdata[j] = _.cloneDeep(data[num]); + }else{ + newdata[j] = {"grant_value":[""]}; + if(type == 3){ + break; + } + } + } + } + scope.expensedata[i] = newdata; + } + + _.remove(scope.expenseConditionsTitles, function(item) { + if(title == item){ + _.extend(title,{"id":false}); + } + if(title == item && scope.expenseConditionsTitles.length === 1) { + _.extend(item, { + "mdId": "", + "mdDesc": "", + "mdName": "", + "mdType": "", + "mdCode":"" + }); + return false; + } + return item === title; + }); + _.remove(scope.expenseCtriteraTitles, function(item) { + if(title == item){ + _.extend(title,{"id":false}); + } + if(title == item && scope.expenseCtriteraTitles.length === 1) { + _.extend(item, { + "mdId": "", + "mdDesc": "", + "mdName": "", + "mdType": "", + "mdCode":"" + }); + return false; + } + return item === title; + }); + _.remove(scope.expenseBudgetTitles, function(item) { + if(title == item){ + _.extend(title,{"id":false}); + } + if(title == item && scope.expenseBudgetTitles.length === 1) { + item.child = [{}]; + _.extend(item, { + "child": [{}], + "mdId": "", + "mdDesc": "", + "mdName": "", + "mdType": "", + "mdCode":"" + }); + return false; + } + return item === title; + }); + }; + //关系选择 + scope.togle_relation = function(title,index,type){ + switch(type){ + case 1: +// + if(scope.expenseConditionsTitles[index]['asRelation'] != undefined && scope.expenseConditionsTitles[index]['asRelation'] == 0){ + scope.expenseConditionsTitles[index]['asRelation'] = 1; + }else{ + scope.expenseConditionsTitles[index]['asRelation'] = 0; + } + break; + case 2: + if(scope.expenseCtriteraTitles[index]['asRelation'] != undefined && scope.expenseCtriteraTitles[index]['asRelation'] == 0){ + scope.expenseCtriteraTitles[index]['asRelation'] = 1; + }else{ + scope.expenseCtriteraTitles[index]['asRelation'] = 0; + } + break; + } + } +// function refreshRowData() { +// scope.rowData = []; +// var conditionCfg = scope.expenseConditionsTitles; +// var criteriaCfg = scope.expenseCtriteraTitles; +// var budgetCfg = scope.expenseBudgetTitles; +// var i = 0; +// _.each(conditionCfg, function(cfg) { +// if(!cfg.mdId) { +// scope.rowData[i] = {}; +// } else { +// scope.rowData[i] = cfg; +// } +// i++; +// }); +// _.each(criteriaCfg, function(cfg) { +// if(!cfg.mdId) { +// scope.rowData[i] = {}; +// } else { +// scope.rowData[i] = cfg; +// } +// i++; +// }); +// _.each(budgetCfg, function(cfg) { +// _.each(cfg.child, function(sub_cfg) { +// if(!sub_cfg.code) { +// scope.rowData[i] = {}; +// } else { +// scope.rowData[i] = _.extend( +// sub_cfg, { +// 'mdId': cfg.mdId, +// 'mdDesc': cfg.mdDesc, +// 'mdCode': cfg.mdCode, +// 'mdName': cfg.mdName, +// 'mdType': cfg.mdType +// } +// ); +// } +// i++; +// }); +// }); +// _.each(scope.rowData, function(title) { +// if(!title.code && title.mdCode) { +// http_service.post('base/data/search', { "code": title.mdCode }, function(res) { +// title['values'] = res.data.data.child; +// title['elIden'] = res.data.data.elIden; +// }) +// }else{ +// title['values']=[] +// } +// }); +// } +// scope.$watch('tabletitlescfgs', function() { +// refreshRowData(); +// }, true); + scope.$watch('expenseBudgetTitles', function() { + var budgetSubTitles = []; + _.each(scope.expenseBudgetTitles, function(title) { + if(title.child && title.child.length !== 0){ + budgetSubTitles = budgetSubTitles.concat(title.child); + } + else{ + title.child = [{"value":title.mdName}]; + budgetSubTitles.push([{ + "child": [{}], + "mdId": "", + "mdDesc": "", + "mdName": "", + "mdType": "" + }]) + } + }); + + scope.budgetSubTitles = budgetSubTitles; + }, true); + + //添加数据 + scope.addRow = function() { + $('div.drop_down_sel').remove(); + var data = _.cloneDeep(scope.expensedata); + + _.each(data[0],function(exdata){ + exdata['grant_value'] = [""]; + if(exdata['sys_val'] && exdata['sys_val'].id != undefined){ + exdata['sys_val'] = {"show_sys_fx":exdata['sys_val'].name + "()"}; + } + }) + scope.expensedata.push(data[0]); + }; + + scope.selecttype = function($index) { + // TODO + scope.sstype = scope.ssTypeOptions[$index].mdCode; + scope.sstypename.push(scope.ssTypeOptions[$index].mdName); + } + + + scope.selectname = function($index) { + scope.ssname = scope.ssNameOptions[$index].cdCode; + scope.ssnamename = scope.ssNameOptions[$index].cdValue; + } + }, + post: function($scope, element, attrs) { + if(!$scope.expensedata.length){ + + $scope.expensedata.push({}); + } + + http_service.post('supp/search/money/type', {}, function(res) { + $scope.ssTypeOptions = res.data.data; + $scope.$watch(function(){ + return $scope.sstype + },function(){ + _.each($scope.ssTypeOptions,function(opt){ + if(opt.code == $scope.sstype){ + $scope.sstypename = opt.value; + } + }) + }) + $scope.$watch(function(){ + return $scope.ssname + },function(){ + if($scope.ssname != "222"){ + $timeout(function(){ + $scope.ssSubType = true; + $scope.ssRule = "0"; + },1) + } + _.each($scope.ssNameOptions,function(opt){ + if(opt.cdCode == $scope.ssname){ + $scope.ssnamename = opt.cdValue; + } + }) + }) + + + }); +// http_service.post('supp/search/const', { "cdType": "90" }, function(res) { + $scope.ssNameOptions = _.filter(cddata,function(o){ + return o.cdType == 90; + }) +// $scope.ssNameOptions = res.data.data; + $scope.$watch(function(){ + return $scope.$parent.ssSubTypes; + },function(){ + $scope.ssSubType = $scope.$parent.ssSubTypes[$scope.index]; + }) + $scope.$watch(function(){ + return $scope.ssSubType; + },function(){ + $scope.$parent.ssSubTypes[$scope.index] = $scope.ssSubType; + }) + + $scope.$watch(function(){ + return $scope.$parent.ssrules; + },function(){ + $scope.ssRule = $scope.$parent.ssrules[$scope.index]; + }) + + $scope.$watch(function(){ + return $scope.ssRule; + },function(){ + $scope.$parent.ssrules[$scope.index] = $scope.ssRule; + }) +// }); +// $(document).off('click').on('click',function(event){ +//// $scope.showname = false; +//// $scope.showclass = false; +// $('.showtype').hide(); +// $('.showname').hide(); +// event.stopPropagation() +// event.preventDefault() +// }) +// $scope.showtype = function(event){ +// $(event).closest('.select3-element').find('.showtype').show(); +//// $scope.showclass = true +// event.stopPropagation() +// event.preventDefault(); +// } +// $('.type').off('click').on('click',function(event){ +// $('.showtype.typeshow').show(); +// $(event.target).show(); +//// $scope.showtype = true +// event.stopPropagation(); +// }) +// $('.name').off('click').on('click',function(event){ +//// $('.showname.showtype').show(); +// $(event.target).show(); +//// $scope.showname = true +// event.stopPropagation(); +// }) + } + } + } + } + }]) + .controller('expendStandardCtrl', ['$scope', 'http_service', '$timeout','$rootScope', function($scope, http_service, $timeout,$rootScope) { + $scope.sstypes = ['']; + $scope.ssnames = ['']; + $scope.ssrules = ['0'];//最大、最小、平均、最先到达、最后到达、无 + $scope.ssSubTypes = ['1']; + $scope.allexpensedata = [ + [] + ]; + $scope.tabletitlescfgs = [{ + "expenseConditionsTitles": [{}], + "expenseCtriteraTitles": [{}], + "expenseBudgetTitles": [{ "child": [{}] }] + }]; + + function refreshMas(obj) { + var title; + if(obj.type != 5){ + title = _.get(_.filter($scope.expense_titles, function(o) { + return o.mdCode === obj.mdCode; + }), 0); + }else{//系统变量回调 + + + title =_.cloneDeep(_.get(_.filter($scope.system_titles,function(o){ + return o.id == obj.id; + }), 0)) + if(title != undefined){ + if(obj.child != undefined && title.child != undefined){ + _.extend(title,{'children':title.child}); + title.child = [{'value':title.name}]; + } + + _.extend(title,{'mdName':title.name}); + + }else{ + title = {'mdName':'此系统变量已被删除','notFound':true}; + } + + } + _.extend(obj,title); + return obj; + } + + function refreshBudget(obj) { + if(obj.mdCode){ + http_service.post('base/data/search', { "code": obj.mdCode,"ceche":obj.mdCode }, function(res) { + if(!res.data.data) return false; + $timeout(function() { + obj.child = res.data.data.child; + obj.elIden = res.data.data.elIden; + }, 1); + },true); + } + + } + + function getTableCFG(data) { + //添加关系属性 +// + _.each(data.child,function(dt){ + if(dt.asRelation == undefined){ + dt['asRelation'] = 1; + } + }) + + var firstColumnDT = _.filter(data.child, function(dt) { + return dt.asRowNo === 0; + }); + var conditions = _.filter(firstColumnDT, function(dt) { + return dt.asType == 1; + }); +// var relations = _.filter(firstColumnDT, function(dt) { +// return dt.asDefType === 11; +// }); + conditions = _.sortBy(conditions, function(o) { + return o.asColNo; + }); +// relations = _.sortBy(relations, function(o) { +// return o.asColNo; +// }); + var criterias = _.filter(firstColumnDT, function(dt) { + return dt.asType == 2; + }); + criterias = _.sortBy(criterias, function(o) { + return o.asColNo; + }); + var budgets = _.filter(firstColumnDT, function(dt) { + return dt.asType == 3; + }); + budgets = _.groupBy(budgets, 'asMasDefineCode'); + var tableCFG = { + "expenseConditionsTitles": [{}], + "expenseCtriteraTitles": [{}], + "expenseBudgetTitles": [{ "child": [{}] }] + }; + var conditionCFG = []; + _.each(conditions, function(condition, k) { + if(condition.asDefType != 5){ + conditionCFG.push(refreshMas({ + "mdId": "", + "mdCode": condition.asMasDefineCode, + "mdName": "", + "mdDesc": "", + "mdType": "1", + "mdDef1": "", + "mdDef2": "", + "mdDef3": "", + "mdDef4": "", + "mdDef5": "", + "values": [], + "elIden": condition.asElIden, + "type": condition.asDefType, + "enable": !!k, + 'asRelation':condition.asRelation, + 'group':1 + })); + }else{ + conditionCFG.push(refreshMas({ + "elIden": condition.asElIden, + 'id':condition.asMasDefineCode, + "type": condition.asDefType, + "enable": !!k, + 'asRelation':condition.asRelation, + 'group':1 + })); + } + + }); +// _.each(relations,function(relation,j){ +// if(relation.asDefType != 5){ +// conditionCFG.push(refreshMas({ +// "mdId": "", +// "mdCode": relation.asMasDefineCode, +// "mdName": "", +// "mdDesc": "", +// "mdType": "1", +// "mdDef1": "", +// "mdDef2": "", +// "mdDef3": "", +// "mdDef4": "", +// "mdDef5": "", +// "values": [], +// "elIden": relation.asElIden, +// "type": relation.asDefType, +// "enable": !!j, +// 'asRelation':relation.asRelation +// })); +// }else{ +// conditionCFG.push(refreshMas({ +// "id": relation.asMasDefineCode, +// "elIden": relation.asElIden, +// "type": relation.asDefType, +// "enable": !!j, +// 'asRelation':relation.asRelation +// })); +// } +// +// }) + tableCFG['expenseConditionsTitles'] = conditionCFG; + var criteriaCFG = []; + _.each(criterias, function(criteria, k) { + if(criteria.asDefType != 5){ + criteriaCFG.push(refreshMas({ + "mdId": "tmp", + "mdCode": criteria.asMasDefineCode, + "mdName": "", + "mdDesc": "", + "mdType": "1", + "mdDef1": "", + "mdDef2": "", + "mdDef3": "", + "mdDef4": "", + "mdDef5": "", + "values": [], + "elIden": criteria.asDefName, + "type": criteria.asDefType, + "enable": !!k, + 'asRelation':criteria.asRelation, + 'group':2 + })); + }else{ + criteriaCFG.push(refreshMas({ + "id": criteria.asMasDefineCode, + "elIden": criteria.asDefName, + "type": criteria.asDefType, + "enable": !!k, + 'asRelation':criteria.asRelation, + 'group':2 + })); + } + }); + tableCFG['expenseCtriteraTitles'] = criteriaCFG; + var budgetCFG = []; + + _.each(budgets, function(budget, k) { + budget = budget[0] + + if(budget.asDefType == 5){ + var cfg = refreshMas({ + "child": [], + "id": budget.asMasDefineCode, + "elIden": budget.asDefName, + "type": budget.asDefType, + 'group':3 + }); + }else{ + var cfg = refreshMas({ + "child": [], + "mdId": "", + "mdCode": budget.asMasDefineCode, + "mdName": "", + "mdDesc": "", + "mdType": budget.asDefType, + "mdDef1": "", + "mdDef2": "", + "mdDef3": "", + "mdDef4": "", + "mdDef5": "", + "elIden": budget.asDefName, + 'group':3 + }); + } + if(k > 0) { + cfg['enable'] = true; + } + + refreshBudget(cfg); + budgetCFG.push(cfg); + }); + tableCFG['expenseBudgetTitles'] = budgetCFG; + + return tableCFG; + }; + + function toRowData(data) { + var rowData = {}; + _.each(data, function(o, k) { + if(o['asDefValues'][0].indexOf('${') > -1){ + + var value = o['asDefValues'][0].match(/{(.*)} /)[1]; + var relate = o['asDefValues'][0].match(/} (.*) /)[1]; + var per = o['asDefValues'][0].match(/{(\d)}$/)[1]; + var pervalue; + switch(per){ + case "1": + pervalue = '天'; + break; + case "2": + pervalue = '小时'; + break; + case "3": + pervalue = '公里'; + break; + } + $rootScope.relate = relate; + $rootScope.pervalue = pervalue; +// http_service.post('supp/search/master', { "mdType": "2" }, function(res) { + _.each($scope.expense_titles_first.data.data,function(info){ + if(info.mdCode == value){ + o['asDefValues'] = [info.mdName +" "+ relate + " " + pervalue]; + rowData[o.asColNo] = { "grant_value": o['asDefValues'] } + } + }) +// }) + }else{ + if(o.asDefType == 5){//系统变量 回调 + var sys_back; + _.each($scope.system_titles,function(title){ + if(title.id == o.asMasDefineCode){ + sys_back = _.cloneDeep(title); + } + }); + if(sys_back != undefined){ + var sys_value = JSON.parse(o.asDefValues); + var sys_value_key = _.keys(sys_value); + _.each(sys_back.child,function(cd){//引用公式 回调 + if(cd.joinMathId){ + _.each($scope.system_titles,function(title){ + if(cd.joinMathId == title.id){ + _.extend(cd,{"joinchildren":_.cloneDeep(title.child)}) + } + }) + } + }) + _.each(sys_back.child,function(cd){ + _.each(sys_value_key,function(sk){ + + if(cd.pIndex == sk){ + if(cd.joinMathId == undefined){ + cd['val'] = sys_value[sk]; + }else{ + var sys_jval_key = _.keys(sys_value[sk]); + _.each(cd.joinchildren,function(jcd){ + _.each(sys_jval_key,function(jk){ + if(jk == jcd.pIndex){ + jcd['val'] = sys_value[sk][jk]; + } + }) + }) + } + } + }) + }) + _.extend(sys_back,{'children':sys_back.child,'show_sys_fx':o['asShowCount']}); + if(o.asCount){ + _.extend(sys_back,{'sys_count':o.asCount}); + } + if(o.asInverse != undefined){//正、反选属性回调 + rowData[o.asColNo] = { "grant_value": o['asShowCount'],"asInverse": o.asInverse,"sys_val":sys_back}; + }else{ + rowData[o.asColNo] = { "grant_value": o['asShowCount'],"asInverse": 1,"sys_val":sys_back} + } + }else{ + rowData[o.asColNo] = { "grant_value": o['asShowCount'],"asInverse": 1}; + } + + }else{ + if(o.asInverse != undefined){//正、反选属性回调 + rowData[o.asColNo] = { "grant_value": o['asDefValues'],"asInverse": o.asInverse}; + }else{ + rowData[o.asColNo] = { "grant_value": o['asDefValues'],"asInverse": 1 } + } + } + } + }); +// + return rowData; + } + + function getExpenseData(data) { + + var expense_data = data.child; + if(!expense_data.length) return false; + var expense_data_row_group = _.groupBy(expense_data, 'asRowNo'); + + function sortNumber(a,b) + { + return a - b + } + var keys = _.keys(expense_data_row_group).sort(sortNumber); + + var tableData = []; + var rowData; + _.each(keys, function(i) { + var data = expense_data_row_group[i]; + rowData = toRowData(data); + tableData.push(rowData); + }); + + return tableData; + }; + + $scope.table = function(){ + expenseTableOnceMore() + } + + function expenseTableOnceMore() { + http_service.post('supp/search', {}, function(res) { + $scope.get_all_data = true; + var data_list = res.data.data; + + + var tableCFG = []; + _.each(data_list, function(data) { + tableCFG.push(getTableCFG(_.cloneDeep(data))); + }); + _.each(tableCFG, function(cfg, index) { + if($scope.tabletitlescfgs[index]) + _.each(cfg, function(v, k) { + _.extend($scope.tabletitlescfgs[index][k], v); + }); + else + $scope.tabletitlescfgs.push(cfg); + }); +// _.each($scope.tabletitlescfgs,function(cfg,index){ +// _.each(cfg,function(m,n){ +// if(m.length != 1){ +// } +// _.each(m,function(ms){ +// }) +// }) +// }) + var expenseData = []; + _.each(data_list, function(data) { + expenseData.push(getExpenseData(_.cloneDeep(data))); + }); + _.each(expenseData, function(cfg, index) { + if($scope.allexpensedata[index]){ +// _.each(cfg, function(v, k) { +// if($scope.allexpensedata[index][k]){ +// _.extend($scope.allexpensedata[index][k], v); +// } +// else{ +// $scope.allexpensedata[index].push(v); +// } + $scope.allexpensedata[index] = cfg +// }); + }else{ + $scope.allexpensedata.push(cfg); + } + }); + var sstypes = []; +// http_service.post('supp/search/master', { "mdType": "3" }, function(res) { +// var typedata = res.data.data; +// for(i in data_list){ +// var data = data_list[i] +// sstypes.push(data.ssType); +// http_service.post('supp/search/master', { "mdType": "3" }, function(res) { +// if(typedata.mdCode == data.ssType){ +// sstypenames.push(typedata.mdCode) +// } +// }); +// } +// }); + + http_service.post('supp/search/money/type', {}, function(res) { + for(i in data_list){ + var data = data_list[i] + sstypes.push(data.ssType); + var typedata = res.data.data; + if(typedata.code == data.ssType){ + sstypenames.push(typedata.code) + } + } + _.each(sstypes, function(type, index) { + if($scope.sstypes[index] === '') { + $scope.sstypes[index] = type; + } else { + $scope.sstypes.push(type); + } + }); + var ssnames = []; + _.each(data_list, function(data) { + ssnames.push(data.ssName); + }); + _.each(ssnames, function(name, index) { + if($scope.ssnames[index] === '') { + $scope.ssnames[index] = name; + } else { + $scope.ssnames.push(name); + } + }); + var ssSubTypes=[]; + $scope.ssSubTypes = []; + + _.each(data_list,function(data){ + ssSubTypes.push(data.ssSubType); + }) + + _.each(ssSubTypes,function(sub){ + if(sub == 0){ + + $scope.ssSubTypes.push(false); + }else{ + $scope.ssSubTypes.push(true); + } + }) + + $scope.ssrules = []; + + _.each(data_list,function(data){ + $scope.ssrules.push(data.ssRule); + }) + + //费用类型 + $scope.ssTypeOptions = res.data.data; + $scope.sstypename = []; + _.each($scope.sstypes,function(type){ + _.each($scope.ssTypeOptions,function(typeoption){ + if(type == typeoption.code){ + $scope.sstypename.push(typeoption.value); + } + }) + }) + //报销方式 +// http_service.post('supp/search/const', { "cdType": "90" }, function(res) { + $scope.ssNameOptions = _.filter(cddata,function(o){ + return o.cdType == 90; + }) +// $scope.ssNameOptions = res.data.data; + $scope.ssnamename = []; + _.each($scope.ssnames,function(name){ + _.each($scope.ssNameOptions, function(nameoption){ + if(name == nameoption.cdCode){ + $scope.ssnamename.push(nameoption.cdValue); + } + }) + }) +// }); + }); + +// for(i in data_list){ +// var data = data_list[i] +// sstypes.push(data.ssType); +// // sstypenames.push(data.ss) +// http_service.post('supp/search/money/type', {}, function(res) { +// var typedata = res.data.data; +// if(typedata.mdCode == data.ssType){ +// sstypenames.push(typedata.mdCode) +// } +// }); +//// }); +// } + + //费用类型 +// http_service.post('supp/search/money/type', {}, function(res) { +// $scope.ssTypeOptions = res.data.data; +// $scope.sstypename = []; +// _.each($scope.sstypes,function(type){ +// _.each($scope.ssTypeOptions,function(typeoption){ +// if(type == typeoption.mdCode){ +// $scope.sstypename.push(typeoption.mdName); +// } +// }) +// }) +// }); + }); + } + + //修改公式保存样式 + function change_relation_style(data){ + if(data != undefined){ +// if(data.length < 2){ +// return false; +// } + if(_.isArray(data)){ + data = data[0] + if(data.length <2){ + return false; + } + } + + var value = data.split(" "); + var per = value.slice(-1); + var percode; + switch(per[0]){ + case '天': + percode = 1; + break; + case '小时': + percode = 2; + break; + case '公里': + percode = 3; + break; + } + data = data.split(" ").slice(1,-1).join(" ")+" ${"+percode+"}"; + return data; + } + } + + + + //保存的格式 + function get_expense_standard_data(data, cfg, type, name,sub,rule) { + if(sub){ + sub = 1; + }else{ + sub = 0; + } + + var expenseStandardData = []; + var rowCfgs = []; +// +// + //删除关系属性 + cfg['expenseConditionsTitles'][cfg['expenseConditionsTitles'].length-1].asRelation = undefined; + cfg['expenseCtriteraTitles'][cfg['expenseCtriteraTitles'].length-1].asRelation = undefined; + _.each(cfg['expenseBudgetTitles'],function(cfg){ + cfg.asRelation = undefined; + }) + var expense_condtions = cfg['expenseConditionsTitles']; + var expense_criters = cfg['expenseCtriteraTitles']; + var expense_budgets = cfg['expenseBudgetTitles']; + //补助条件 + var m = 0; + + for(i in expense_condtions){ + var cfgItem = expense_condtions[i]; + if(!cfgItem.eleCode && cfgItem.id == undefined){ + _.each(data,function(ex_data){ + if(ex_data[m] == undefined){ + return false; + } + if(_.isArray(ex_data[m].grant_value)){ + ex_data[m].grant_value = ex_data[m].grant_value[0]; + } + cfgItem.grant_value = "${"+cfgItem.mdCode+ "} " + change_relation_style(ex_data[m].grant_value); + }) +// for(j in document.getElementsByClassName("fxinput")){ +// var fxinput = document.getElementsByClassName("fxinput"); +// if(change_relation_style(fxinput[j].value) !== undefined){ +// cfgItem.grant_value = "${"+cfgItem.mdCode+ "} " + change_relation_style(fxinput[m].value); +// m++; +// } +// } + rowCfgs.push(_.extend(cfgItem, { 'type': 11 ,'elIden': cfgItem['eleValue'] || '','code':cfgItem['elIden']||'','asType':1})); + break; + }else{ + rowCfgs.push(_.extend(cfgItem, { 'type': 1,'code':cfgItem['elIden'] || '','elIden': cfgItem['eleValue'] || '','asType':1})); + } + m++; + } + _.each(expense_criters, function(cfgItem) { + rowCfgs.push(_.extend(cfgItem, { 'type': 2 ,'elIden': cfgItem['eleValue'] || '','code':cfgItem['elIden'] || '' ,'asType':2})); + }); + _.each(expense_budgets, function(cfgItem) { + if(cfgItem.child && cfgItem.child.length) { + _.each(cfgItem.child, function(_cfgItem) { + if(cfgItem.id != undefined){ + rowCfgs.push(_.extend(_cfgItem, { 'type': 3, 'elIden': cfgItem['eleValue'] || '','code':_cfgItem['code'] || '' ,'mdCode':cfgItem['mdCode'] || $scope.types,"id":cfgItem.id,'asType':3})); + }else{ + rowCfgs.push(_.extend(_cfgItem, { 'type': 3, 'elIden': cfgItem['eleValue'] || '','code':_cfgItem['code'] || '' ,'mdCode':cfgItem['mdCode'] || $scope.types,'asType':3})); + } + + }); + } + }) + + _.each(rowCfgs,function(cfg){//系统变量处理 修改type + if(cfg.id != undefined && cfg.id != false){ + cfg['type'] = 5; + } + }) + + + _.each(rowCfgs, function(cfg, column) { + _.each(data, function(dtRow, row) { + var columnValue = dtRow[column]; + if(dtRow[column] != undefined){ + if(dtRow[column]['grant_value'] && dtRow[column]['grant_value'].length == 0){ + dtRow[column]['grant_value'] = [""]; + } + if(cfg.values && cfg.values.length == 0 && !cfg.is_org){ + if(change_relation_style(dtRow[column].grant_value) != false && cfg.mdCode){ + cfg['grant_value'] = "${"+cfg.mdCode+ "} " + change_relation_style(dtRow[column].grant_value); + }else{ + cfg['grant_value'] = ""; + } + } + } + if(!cfg.eleCode){//非下拉框 排除反选属性 + if(dtRow[column] != undefined){ + dtRow[column]["asInverse"] = undefined; + }else{ + dtRow[column] = {"asInverse":undefined}; + } + + } + if(cfg.type != 5){ + expenseStandardData.push({ + 'asType':cfg.asType,//1:补助标准条件,2:补助标准结果,3:补助金额 + "asColNo": column, //列号 + "asDefName": cfg['elIden'], //主数据元素标识符 + "asDefType": cfg['type'], //1:补助标准条件,2:补助标准结果,3:补助金额,90:报销方式 + "asDefValues": cfg['grant_value'] || (dtRow && dtRow[column] && dtRow[column]['grant_value']) || [''], //主数据元素值code + // "group_id": dtRow && dtRow[column] && dtRow[column]['group_id'], //group id + "asElIden": cfg['code'], //暂时为空 + "asMasDefineCode": cfg['mdCode'], + "asRowNo": row, + 'asRelation':cfg.asRelation, + 'asInverse':dtRow[column]['asInverse'] + }); + }else{ + var sys_fx_val = {}; + var show_sys_val = ''; + + if(dtRow[column].sys_val){ + show_sys_val = dtRow[column].sys_val.show_sys_fx; + _.each(dtRow[column].sys_val.children,function(cd){ + if(cd.joinMathId == undefined){ + if(cd.val && cd.val != ""){ + sys_fx_val[cd.pIndex] = cd.val; + } + }else{ + var jval = {}; + _.each(cd.joinchildren,function(jcd){ + if(jcd.val && jcd.val != ""){ + jval[jcd.pIndex] = jcd.val; + } + }) + sys_fx_val[cd.pIndex] = jval; + } + }) + } + sys_fx_val = JSON.stringify(sys_fx_val); + expenseStandardData.push({ + 'asType':cfg.asType,//1:补助标准条件,2:补助标准结果,3:补助金额 + "asColNo": column, //列号 + "asElIden": "", //暂时为空 + "asDefType": cfg['type'], //1:补助标准条件,2:补助标准结果,3:补助金额,90:报销方式 + "asDefValues": cfg.notFound?['{}']:sys_fx_val, + "asMasDefineCode": cfg['id'], + "asRowNo": row, + 'asRelation':cfg.asRelation, + 'asShowCount':show_sys_val, + "asCount":cfg.notFound?"":dtRow[column].sys_val.sys_count + }); + } + }); + }); +// + _.each(expenseStandardData,function(expense){ + if(expense.asRelation == undefined){ + delete expense.asRelation; + } + if(expense.asInverse == undefined){ + delete expense.asInverse; + } + }) +// + return { + "child": expenseStandardData, + "ssDispFun": "显示用逻辑公式", + "ssLogicFun": "计算用逻辑公式", + "ssName": name, + "ssSubType": sub, + "ssType": type, + "ssRule":rule + } + } + $scope.$on('$viewContentLoaded', function() { + var frm_height = $(document).height() - 52; + $('div.split_form').height(frm_height); + $(window).resize(function() { + var frm_height = $(document).height() - 52; + $('div.split_form').height(frm_height); + }); + }); + //新建表格 + $scope.create_expense_strd_table = function() { + $('div.drop_down_sel').remove(); +// $timeout(function(){ + $scope.allexpensedata.push([]); + $scope.tabletitlescfgs.push({ + "expenseConditionsTitles": [{}], + "expenseCtriteraTitles": [{}], + "expenseBudgetTitles": [{ "child": [{}] }] + }); + $scope.ssnames.push(''); + $scope.sstypes.push(''); + $scope.ssSubTypes.push(true); +// },1) + } + + //保存报销标准 + $scope.saveExpense = function() { + $('div.drop_down_sel').remove(); + var data = []; + var pst_dt = { "data": [] }; + _.each($scope.allexpensedata, function(dt, index) { + var cfg = _.cloneDeep($scope.tabletitlescfgs[index]); + var type = _.cloneDeep($scope.sstypes[index]); + var name = _.cloneDeep($scope.ssnames[index]); + var sub = _.cloneDeep($scope.ssSubTypes[index]); + var rule = _.cloneDeep($scope.ssrules[index]); + var expense_dt = get_expense_standard_data(dt, cfg, type, name,sub,rule); + pst_dt['data'].push(expense_dt); + }); + + http_service.post('supp/save', pst_dt, function(res) { + if(res.data.opState) { + //alert('保存补助标准成功。') + $scope.$parent.tsuccess( "保存补助标准成功!") + } else { + //alert('后台错误保存补助标准失败。') + $scope.$parent.terro("后台错误,保存补助标准失败。") + } + }); + + }; + + //切换补助标准内容 与 系统变量 + $scope.title_type = true;//默认显示补助标准内容 + + + http_service.post('supp/search/master', {"mdType":2}, function(res) { + if(res.data.data){ + _.each(res.data.data,function(title){ + //添加默认的关系属性 +// if(title.asRelation == undefined){ +// _.extend(title,{'asRelation':1}); +// } + }) + } + $scope.expense_titles_first = res; + var expense_titles = res.data.data; + $scope.expense_titles = expense_titles; + expense_titles = _.map(expense_titles, function(title, n) { + return { + 'type': n, + 'btn': '<div class="col-md-6"><button title="'+ title.mdName +'" class="btn btn-success btn-elb">' + title.mdName + '</button></div>', + 'field': '<span style="display:none;">' + title.mdName + '</span>', + 'data': title + } + }); + + var fb = new form_builder.create(); + fb.no_wrapper(false); + fb.add_elements(expense_titles); + fb.add_forms('td.expenseTitle'); + fb.add_elements_box('.expense_titles'); + fb.element_appended_before_allback(before_el_append); + fb.element_appended_callback(after_el_append); + fb.bootstrap(); + //将拖动的数据加入表格 + function after_el_append(title, holder) { + var this_title = title; + var title_data = arguments[0] && arguments[0][0] && arguments[0][0]['data']; + var $td_holder = $(arguments[2]); + var group = $td_holder.attr('group'); + var index = $td_holder.attr('index'); + var tableindex = $td_holder.attr('tableindex'); + var cellIndex = 0; + + // + // + // + // + // + switch(group) { + case 'condition': + var title = $scope.tabletitlescfgs[tableindex]['expenseConditionsTitles'][index]; + $timeout(function() { + _.extend(title_data, { + "asRelation": 1 + }); //默认关系属性 + for(var key in title){ + delete title[key]; + } + _.extend(title, title_data); + _.extend(title, {"group":1}); + + }, 1); + //单元格index + cellIndex = index; + break; + case 'criteria': + var title = $scope.tabletitlescfgs[tableindex]['expenseCtriteraTitles'][index]; + $timeout(function() { + for(var key in title){ + delete title[key]; + } + if(this_title[0].data.eleCode) { + _.extend(title_data, { + "asRelation": 1 + }); //默认关系属性 + _.extend(title, title_data); + _.extend(title, {"group":2}); + } else { + var errMsg = "补助标准不支持" + title_data.mdName + "控件"; + $scope.$parent.terro(errMsg); + if(!title.mdCode) { + _.extend(title, { + "enable": true + }); + } + } + }, 1); + //单元格index + cellIndex = $scope.tabletitlescfgs[tableindex]['expenseConditionsTitles'].length + parseInt(index); + break; + case 'expense': + var title = $scope.tabletitlescfgs[tableindex]['expenseBudgetTitles'][index]; + for(var key in title){ + delete title[key]; + } + $timeout(function() { + _.extend(title, title_data); + _.extend(title, {"group":3}); + }, 1); + //单元格index + cellIndex = $scope.tabletitlescfgs[tableindex]['expenseCtriteraTitles'].length + + $scope.tabletitlescfgs[tableindex]['expenseConditionsTitles'].length + + parseInt(index); + http_service.post('base/data/search', { + "code": title_data.mdCode, + "cache_id": title_data.mdCode + }, function(res) { + if(!res.data.data) return false; + $timeout(function() { + title.child = res.data.data.child; + title.elIden = res.data.data.elIden; + title.drag = true; + }, 1); + }, true); + break; + } + // var data_list = $scope.allexpensedata[tableindex]; + // var grant_val; + // _.each(data_list, function(data) { + // if(data[cellIndex]){ + // grant_val = data[cellIndex]['grant_value']; + // }else{ + // grant_val = ['']; + // } + // + // if(grant_val && _.isArray(grant_val)) { + // grant_val.splice(0, grant_val.length); + // } + // }); + if(cellIndex && (group === 'condition' || group === 'criteria')) { + var data_list = $scope.allexpensedata[tableindex]; + _.each(data_list, function(data) { + if(data && data[cellIndex]) { + if(this_title[0].data.eleCode != undefined && group != 'criteria') { + data[cellIndex]['grant_value'] = []; + } + data[cellIndex]['asInverse'] = 1; + } else { + var asobj = {}; + asobj[cellIndex] = { + 'asInverse': 1 + } + _.extend(data, asobj); + } + // var grant_val = data[cellIndex]['grant_value']; + // if(grant_val && _.isArray(grant_val)) { + // grant_val.splice(0, grant_val.length); + // } + }); + } else if(cellIndex) { + var data_list = $scope.allexpensedata[tableindex]; + _.each(data_list, function(data) { + for(i in data) { + if(i >= cellIndex) { + data[i]['grant_value'] = []; + } + } + }); + } + + } + // $scope.$watch(function(){ + // return $scope.tabletitlescfgs.length + // },function(){ + // after_el_append() + // }) + + function before_el_append(title, holder) { + $(holder).find('span').remove(); + } + }); + http_service.post('systemMath/search/list', {}, function(response) { //获得系统变量 + var system_titles = response.data.data; + $scope.system_titles = system_titles; + $rootScope.system_titles = system_titles; + system_titles = _.map(system_titles, function(title, n) { + return { + 'type': n, + 'btn': '<div class="col-md-6"><button title="' + title.name + '" class="btn btn-success btn-elb">' + title.name + '</button></div>', + 'field': '<span style="display:none;">' + title.name + '</span>', + 'data': title + } + }); + + var sys = new form_builder_s.create(); + sys.no_wrapper(false); + sys.add_elements(system_titles); + sys.add_forms('td.expenseTitle'); + sys.add_elements_box('.system_titles'); + sys.element_appended_before_allback(before_el_append_s); + sys.element_appended_callback(after_el_append_s); + sys.bootstrap(); + + function after_el_append_s(title, holder) { + var this_title = title; + var title_data = arguments[0] && arguments[0][0] && arguments[0][0]['data']; + var $td_holder = $(arguments[2]); + var group = $td_holder.attr('group'); + var index = $td_holder.attr('index'); + var tableindex = $td_holder.attr('tableindex'); + var cellIndex = 0; + + + + _.extend(title_data,{'children':title_data.child}) + switch(group) { + case 'condition': + var title = $scope.tabletitlescfgs[tableindex]['expenseConditionsTitles'][index]; + for(var key in title){ + delete title[key]; + } + $timeout(function() { + _.extend(title_data, { + "asRelation": 1, + 'mdName':title_data.name + }); //默认关系属性 + _.extend(title, title_data); + _.extend(title, {"group":1}); + }, 1); + //单元格index + cellIndex = index; + break; + case 'criteria': + var title = $scope.tabletitlescfgs[tableindex]['expenseCtriteraTitles'][index]; + for(var key in title){ + delete title[key]; + } + $timeout(function() { + _.extend(title_data, { + "asRelation": 1, + 'mdName':title_data.name + }); //默认关系属性 + _.extend(title, title_data); + _.extend(title, {"group":2}); + }, 1); + //单元格index + cellIndex = $scope.tabletitlescfgs[tableindex]['expenseConditionsTitles'].length + parseInt(index); + break; + case 'expense': + var title = $scope.tabletitlescfgs[tableindex]['expenseBudgetTitles'][index]; + for(var key in title){ + delete title[key]; + } + $timeout(function() { + _.extend(title_data, { + 'mdName':title_data.name + }); + _.extend(title, title_data); + _.extend(title, {"group":3}); + title.child = [{"value":title_data.name}]; + title.drag = true; + }, 1); + //单元格index + cellIndex = $scope.tabletitlescfgs[tableindex]['expenseCtriteraTitles'].length + + $scope.tabletitlescfgs[tableindex]['expenseConditionsTitles'].length + + parseInt(index); + +// http_service.post('base/data/search', { +// "code": title_data.mdCode, +// "cache_id": title_data.mdCode +// }, function(res) { +// if(!res.data.data) return false; +// $timeout(function() { +// title.child = res.data.data.child; +// title.elIden = res.data.data.elIden; +// title.drag = true; +// }, 1); +// }, true); + break; + } + if(cellIndex && (group === 'condition' || group === 'criteria')) { + var data_list = $scope.allexpensedata[tableindex]; + + _.each(data_list, function(data) { + if(data[cellIndex]) { + data[cellIndex]['grant_value'] = []; + data[cellIndex]['asInverse'] = 1; + } else { + var asobj = {}; + asobj[cellIndex] = { + 'asInverse': 1 + } + _.extend(data, asobj); + } + data[cellIndex]['sys_val'] = {'show_sys_fx':title_data.name+"()"} + }); + } else if(cellIndex) { + + var data_list = $scope.allexpensedata[tableindex]; + + _.each(data_list, function(data) { + for(i in data) { + if(i >= cellIndex) { + data[i]['grant_value'] = []; +// data[i]['sys_val'] = {'show_sys_fx':title_data.name+"()"} + } + } + + data[cellIndex] ={'sys_val':{'show_sys_fx':title_data.name+"()"}} + }); + } + } + + function before_el_append_s(title, holder) { + $(holder).find('span').remove(); + } + $scope.table = function() { + expenseTableOnceMore(); + } + + $scope.$watch('tabletitlescfgs', function() { + expenseTableOnceMore(); + }); + }) + }]); \ No newline at end of file diff --git a/src/static/js/forms_center/module.js b/src/static/js/forms_center/module.js new file mode 100644 index 0000000..abdfc8d --- /dev/null +++ b/src/static/js/forms_center/module.js @@ -0,0 +1,17 @@ +angular.module('user_forms_center', []) +.controller('userFormsCenterCtrl', ['$scope','$routeParams', '$compile', function($scope, $routeParams, $compile){ + $scope.type = $routeParams.type; + //由于设置高度产生滚动条,注释之 + //$scope.$on('$viewContentLoaded', function() { + // $('div.split_form').height($(document).height() - 52); + // $(window).resize(function(){ + // $('div.split_form').height($(document).height() - 52); + // }); + //}); + + $scope.show_saved_form = function(){ + var $form = $('<div saved-form ></div>'); + $('div.form_container').html($form); + $compile($form)($scope); + } +}]); \ No newline at end of file diff --git a/src/static/js/messages_center/module.js b/src/static/js/messages_center/module.js new file mode 100644 index 0000000..950eede --- /dev/null +++ b/src/static/js/messages_center/module.js @@ -0,0 +1,164 @@ + +/** + * Created by lichen on 2017/6/16. + */ +//(function(){ + angular.module('messages_center',[]) + //点击标为已处理 + .directive('clickRead', ['$rootScope', '$compile', 'http_service', '$http', function($rootScope, $compile, http_service, $http) { + return{ + scope:true, + link:function(scope, element, attrs) { + //scope: true; + $(element).css({ + 'cursor': 'pointer' + }); + $(element).on('click',function(){ + var index = $(element).index(); + var param; + _.each(scope.messages,function(message,i){ + if (i == index){ + scope.eId = message.eId; + param = message; + return false; + } + }); + + if(param.eState == '已处理'){ + return false; + } + http_service.post('errmsg/update/err',{"eId":param.eId},function(res){ + $(element).find('td').eq(3).text('已处理').css('color','red'); + param.eState = '已处理'; + }) + }) + } + } + }]) + .controller('messageCenterCtrl',['$scope', '$routeParams', '$route', '$compile', '$http', 'http_service', '$rootScope',function($scope, $routeParams, $route, $compile, $http, http_service,$rootScope){ + //分页下拉列表 + $scope.page = { + //"eTenantId": null, + "eDataState":20, + "page_num":1, + "num_per_page":20 + }; + $scope.pre_page = function() { + if($scope.page.page_num > 1) { + $scope.page.page_num = $scope.page.page_num - 1; + } + search_errMsg($scope.page.eDataState); + } + $scope.next_page = function() { + if($scope.page.page_num < Math.ceil($scope.result_rows / $scope.page.num_per_page)) { + $scope.page.page_num = (parseInt($scope.page.page_num) + 1).toString(); + } + search_errMsg($scope.page.eDataState); + } + $scope.change_page_num = function(num_per_page){ + //$scope.page_num = 1; + var num_page_new = ''; + _.each(num_per_page,function(num_per_code){ + if(check_number(num_per_code)){ + num_page_new = num_page_new + num_per_code; + }else{ + return false + } + }) + $scope.page.num_per_page = num_page_new; + if($scope.page.page_num > Math.ceil($scope.result_rows/$scope.page.num_per_page)){ + $scope.page.page_num = Math.ceil($scope.result_rows/$scope.page.num_per_page); + } + search_errMsg($scope.page.eDataState); + } + check_number = function(strings){ + var patrn = /^[0-9]*$/; + if (patrn.exec(strings) == null) { + return false + } else { + return true + } + } + $scope.change_page = function(pageNumber){ + if(pageNumber == ''){ + return false; + } + else if(check_number(pageNumber)){ + $scope.page.page_num = parseInt(pageNumber); + if($scope.page.page_num > Math.ceil($scope.result_rows/$scope.page.num_per_page)){ + $scope.page.page_num = Math.ceil($scope.result_rows/$scope.page.num_per_page); + }else if($scope.page.page_num < 1){ + $scope.page.page_num = 1; + } + } + else if(!check_number(pageNumber) && check_number(pageNumber.charAt(0))){ + //遍历pagenumber字符 + var pageNum = ''; + _.each(pageNumber,function(pageCode){ + if(check_number(pageCode)){ + pageNum = pageNum + pageCode; + }else{ + return false; + } + }) + $scope.page.page_num = pageNum; + }else{ + $scope.page.page_num = 1; + } + search_errMsg($scope.page.eDataState); + } + $scope.new_messages = []; + $scope.change_state = function(state_now){ + $scope.state_now = state_now; + $scope.page.page_num = 1, + //"num_per_page":20 + search_errMsg(state_now); + } + $scope.change_tenantState = function(tenant_name){ + $scope.page['eTenantId'] = $scope.tenant_name; + if($scope.tenant_name == ''){ + $scope.page = _.omit($scope.page,'eTenantId'); + } + search_errMsg($scope.page.eDataState); + } + search_errMsg = function(state_now){ + //if(state_now == 20){ + // $scope.page.eDataState = state_now; + //}else if(state_now == 10){ + // $scope.page.eDataState = state_now; + //}else{ + // $scope.page.eDataState = ''; + //} + $scope.page.eDataState = state_now; + $scope.messages = []; + http_service.post('errmsg/search/err',$scope.page,function(res){ + $scope.result_rows = res.data.rows; + $scope.messages = res.data.data; + //分页 + $scope.total_page = Math.ceil($scope.result_rows / $scope.page.num_per_page); + //已处理未处理状态筛选 + _.each($scope.messages, function (msg) { + if(msg.eDataState == 20){ + _.extend(msg,{'eState':"未处理"}); + }else{ + _.extend(msg,{'eState':"已处理"}); + } + //if(eState == msg.edataState || eState == "2"){ + // $scope.messages.push(msg); + //} + }) + if($scope.result_rows == 0){ + $scope.page.page_num = 0; + } + }) + } + search_tenantMsg = function(){ + http_service.post('/guiCfg/search/gui',[],function(res){ + $scope.tenants =res.data.data; + }) + } + search_errMsg(20); + search_tenantMsg(); + }]); +//})(); + diff --git a/src/static/js/qxv2.json b/src/static/js/qxv2.json new file mode 100644 index 0000000..9d676e7 --- /dev/null +++ b/src/static/js/qxv2.json @@ -0,0 +1,279 @@ +[ + { + "display": "差旅费", + "type": 256, + "name": null, + "children": [ + { + "display": "差旅费", + "type": 512, + "name": "travel_reimbursement", + "children": null + }, + { + "display": "预算单", + "type": 256, + "name": null, + "children": [ + { + "display": "预算单", + "type": 512, + "name": "budgetorder", + "children": null + }, + { + "display": "预算单查询列表页面", + "type": 256, + "name": null, + "children": [ + { + "display": "预算单查询列表页面", + "type": 512, + "name": "travel_expense/1", + "children": null + }, + { + "display": "查询按钮", + "type": 512, + "name": "search_condition", + "children": null + }, { + "display": "更改查询内容", + "type": 512, + "name": "change_search_condition", + "children": null + }, { + "display": "更改显示内容", + "type": 512, + "name": "show_condition", + "children": null + },{ + "display": "删除按钮(批量)", + "type": 512, + "name": "delete_order", + "children": null + }, { + "display": "预算单流程状态", + "type": 512, + "name": "flow_content", + "children": null + }, { + "display": "删除按钮", + "type": 512, + "name": "deletebtn", + "children": null + }, { + "display": "提交按钮", + "type": 512, + "name": "commitbtn", + "children": null + }, { + "display": "审核按钮", + "type": 512, + "name": "auditbtn", + "children": null + }, { + "display": "保存按钮", + "type": 512, + "name": "savebtn", + "children": null + }, { + "display": "编辑按钮", + "type": 512, + "name": "editbtn", + "children": null + }, { + "display": "驳回按钮", + "type": 512, + "name": "backbtn", + "children": null + } + ] + } + ] + }, { + "display": "申请单", + "type": 256, + "name": null, + "children": [ + { + "display": "申请单", + "type": 512, + "name": "applyorder", + "children":null + }, + { + "display": "申请单查询列表页面", + "type": 256, + "name": null, + "children": [ + { + "display": "申请单查询列表页面", + "type": 512, + "name": "travel_expense/2", + "children":null + }, + { + "display": "更改查询内容", + "type": 512, + "name": "change_search_condition", + "children": null + }, { + "display": "更改显示内容", + "type": 512, + "name": "show_condition", + "children": null + }, { + "display": "新建按钮", + "type": 512, + "name": "new_order", + "children": null + }, { + "display": "删除按钮(批量)", + "type": 512, + "name": "delete_order", + "children": null + }, { + "display": "申请单流程状态", + "type": 512, + "name": "flow_content", + "children": null + }, { + "display": "删除按钮", + "type": 512, + "name": "deletebtn", + "children": null + }, { + "display": "提交按钮", + "type": 512, + "name": "commitbtn", + "children": null + }, { + "display": "审核按钮", + "type": 512, + "name": "auditbtn", + "children": null + }, { + "display": "保存按钮", + "type": 512, + "name": "savebtn", + "children": null + }, { + "display": "编辑按钮", + "type": 512, + "name": "editbtn", + "children": null + }, { + "display": "驳回按钮", + "type": 512, + "name": "backbtn", + "children": null + } + ] + } + ] + }, { + "display": "报销单", + "type": 256, + "name": null, + "children": [ + { + "display": "报销单", + "type": 512, + "name": "expendorder", + "children":null + }, + { + "display": "报销单查询列表页面", + "type": 256, + "name": null, + "children": [ + { + "display": "报销单查询列表页面", + "type": 512, + "name": "travel_expense/3", + "children":null + }, + { + "display": "查询按钮", + "type": 512, + "name": "search_condition", + "children": null + }, { + "display": "更改查询内容", + "type": 512, + "name": "change_search_condition", + "children": null + }, { + "display": "更改显示内容", + "type": 512, + "name": "show_condition", + "children": null + }, { + "display": "新建按钮", + "type": 512, + "name": "new_order", + "children": null + }, { + "display": "删除按钮(批量)", + "type": 512, + "name": "delete_order", + "children": null + }, { + "display": "报销单流程状态", + "type": 512, + "name": "flow_content", + "children": null + }, { + "display": "删除按钮", + "type": 512, + "name": "deletebtn", + "children": null + }, { + "display": "提交按钮", + "type": 512, + "name": "commitbtn", + "children": null + }, { + "display": "审核按钮", + "type": 512, + "name": "auditbtn", + "children": null + }, { + "display": "保存按钮", + "type": 512, + "name": "savebtn", + "children": null + }, { + "display": "编辑按钮", + "type": 512, + "name": "editbtn", + "children": null + }, { + "display": "驳回按钮", + "type": 512, + "name": "backbtn", + "children": null + }, { + "display": "票据上传按钮(新增报销单)", + "type": 512, + "name": "bill_com+C29:D125mit_create", + "children": null + }, { + "display": "票据上传按钮(修改报销单)", + "type": 512, + "name": "bill_commit_update", + "children": null + }, { + "display": "票据上传按钮(报销单详情)", + "type": 512, + "name": "bill_commit_detail", + "children": null + } + ] + } + ] + } + ] + } +] \ No newline at end of file diff --git a/src/static/js/qxv3.json b/src/static/js/qxv3.json new file mode 100644 index 0000000..8b9964a --- /dev/null +++ b/src/static/js/qxv3.json @@ -0,0 +1,1010 @@ +[ + { + "display": "差旅费", + "type": 256, + "name": null, + "children": [ + { + "display": "差旅费", + "type": 512, + "name": "travel_reimbursement", + "children": null + }, + { + "display": "预算单", + "type": 256, + "name": null, + "children": [ + { + "display": "预算单", + "type": 512, + "name": "budgetorder", + "children": null + }, + { + "display": "预算单查询列表页面", + "type": 256, + "name": null, + "children": [ + { + "display": "预算单查询列表页面", + "type": 512, + "name": "travel_expense/1", + "children": null + }, + { + "display": "查询按钮", + "type": 512, + "name": "search_condition", + "children": null + }, + { + "display": "更改查询内容", + "type": 512, + "name": "change_search_condition", + "children": null + }, + { + "display": "更改显示内容", + "type": 512, + "name": "show_condition", + "children": null + }, + { + "display": "新建按钮", + "type": 512, + "name": "new_order", + "children": null + }, + { + "display": "删除按钮(批量)", + "type": 512, + "name": "delete_order", + "children": null + }, + { + "display": "预算单流程状态", + "type": 512, + "name": "flow_content", + "children": null + }, + { + "display": "删除按钮", + "type": 512, + "name": "deletebtn", + "children": null + }, + { + "display": "提交按钮", + "type": 512, + "name": "commitbtn", + "children": null + }, + { + "display": "审核按钮", + "type": 512, + "name": "auditbtn", + "children": null + }, + { + "display": "保存按钮", + "type": 512, + "name": "savebtn", + "children": null + }, + { + "display": "编辑按钮", + "type": 512, + "name": "editbtn", + "children": null + }, + { + "display": "驳回按钮", + "type": 512, + "name": "backbtn", + "children": null + } + ] + } + ] + }, + { + "display": "申请单", + "type": 256, + "name": null, + "children": [ + { + "display": "申请单", + "type": 512, + "name": "applyorder", + "children": null + }, + { + "display": "申请单查询列表页面", + "type": 256, + "name": null, + "children": [ + { + "display": "申请单查询列表页面", + "type": 512, + "name": "travel_expense/2", + "children": null + }, + { + "display": "查询按钮", + "type": 512, + "name": "search_condition", + "children": null + }, + { + "display": "更改查询内容", + "type": 512, + "name": "change_search_condition", + "children": null + }, + { + "display": "更改显示内容", + "type": 512, + "name": "show_condition", + "children": null + }, + { + "display": "新建按钮", + "type": 512, + "name": "new_order", + "children": null + }, + { + "display": "删除按钮(批量)", + "type": 512, + "name": "delete_order", + "children": null + }, + { + "display": "申请单流程状态", + "type": 512, + "name": "flow_content", + "children": null + }, + { + "display": "删除按钮", + "type": 512, + "name": "deletebtn", + "children": null + }, + { + "display": "提交按钮", + "type": 512, + "name": "commitbtn", + "children": null + }, + { + "display": "审核按钮", + "type": 512, + "name": "auditbtn", + "children": null + }, + { + "display": "保存按钮", + "type": 512, + "name": "savebtn", + "children": null + }, + { + "display": "编辑按钮", + "type": 512, + "name": "editbtn", + "children": null + }, + { + "display": "驳回按钮", + "type": 512, + "name": "backbtn", + "children": null + } + ] + } + ] + }, + { + "display": "报销单", + "type": 256, + "name": null, + "children": [ + { + "display": "报销单", + "type": 512, + "name": "expendorder", + "children": null + }, + { + "display": "报销单查询列表页面", + "type": 256, + "name": null, + "children": [ + { + "display": "报销单查询列表页面", + "type": 512, + "name": "travel_expense/3", + "children": null + }, + { + "display": "查询按钮", + "type": 512, + "name": "search_condition", + "children": null + }, + { + "display": "更改查询内容", + "type": 512, + "name": "change_search_condition", + "children": null + }, + { + "display": "更改显示内容", + "type": 512, + "name": "show_condition", + "children": null + }, + { + "display": "新建按钮", + "type": 512, + "name": "new_order", + "children": null + }, + { + "display": "删除按钮(批量)", + "type": 512, + "name": "delete_order", + "children": null + }, + { + "display": "报销单流程状态", + "type": 512, + "name": "flow_content", + "children": null + }, + { + "display": "删除按钮", + "type": 512, + "name": "deletebtn", + "children": null + }, + { + "display": "提交按钮", + "type": 512, + "name": "commitbtn", + "children": null + }, + { + "display": "审核按钮", + "type": 512, + "name": "auditbtn", + "children": null + }, + { + "display": "保存按钮", + "type": 512, + "name": "savebtn", + "children": null + }, + { + "display": "编辑按钮", + "type": 512, + "name": "editbtn", + "children": null + }, + { + "display": "驳回按钮", + "type": 512, + "name": "backbtn", + "children": null + }, + { + "display": "票据上传按钮(新增报销单)", + "type": 512, + "name": "bill_com+C29:D125mit_create", + "children": null + }, + { + "display": "票据上传按钮(修改报销单)", + "type": 512, + "name": "bill_commit_update", + "children": null + }, + { + "display": "票据上传按钮(报销单详情)", + "type": 512, + "name": "bill_commit_detail", + "children": null + } + ] + } + ] + } + ] + }, + { + "display": "待办事项", + "type": 256, + "name": null, + "children": [ + { + "display": "待办事项", + "type": 512, + "name": "termination", + "children": null + }, + { + "display": "我的待办", + "type": 512, + "name": "mytodos", + "children": null + }, + { + "display": "待办事项页面", + "type": 512, + "name": "travel_expense_todos/", + "children": null + }, + { + "display": "待办预算查看页面", + "type": 256, + "name": null, + "children": [ + { + "display": "待办预算查看页面", + "type": 512, + "name": "termination_budget", + "children": null + }, + { + "display": "查询按钮", + "type": 512, + "name": "search_budget", + "children": null + }, + { + "display": "更改查询内容", + "type": 512, + "name": "termination_budget_search", + "children": null + } + ] + }, + { + "display": "待办申请查看页面", + "type": 256, + "name": null, + "children": [ + { + "display": "待办申请查看页面", + "type": 512, + "name": "termination_apply", + "children": null + }, + { + "display": "查询按钮", + "type": 512, + "name": "search_apply", + "children": null + }, + { + "display": "更改查询内容", + "type": 512, + "name": "termination_apply_search", + "children": null + } + ] + }, + { + "display": "待办报销查看页面", + "type": 256, + "name": null, + "children": [ + { + "display": "待办报销查看页面", + "type": 512, + "name": "termination_expend", + "children": null + }, + { + "display": "查询按钮", + "type": 512, + "name": "search_expend", + "children": null + }, + { + "display": "更改查询内容", + "type": 512, + "name": "termination_expend_search", + "children": null + } + ] + } + ] + }, + { + "display": "配置中心", + "type": 256, + "name": null, + "children": [ + { + "display": "配置中心", + "type": 512, + "name": "config_center", + "children": null + }, + { + "display": "配置中心", + "type": 256, + "name": null, + "children": [ + { + "display": "配置中心", + "type": 512, + "name": "cfg_center/", + "children": null + }, + { + "display": "预算单配置", + "type": 256, + "name": null, + "children": [ + { + "display": "预算单配置", + "type": 512, + "name": "budget_template", + "children": null + }, + { + "display": "预算单配置页面", + "type": 256, + "name": null, + "children": [ + { + "display": "预算单配置页面", + "type": 512, + "name": "/budget_froms/10", + "children": null + }, + { + "display": "使用空白的预算单", + "type": 256, + "name": null, + "children": [ + { + "display": "使用空白的预算单", + "type": 512, + "name": "/budget_form_customize/10", + "children": null + }, + { + "display": "保存按钮", + "type": 512, + "name": "save_create_form", + "children": null + } + ] + }, + { + "display": "我创建的预算单", + "type": 512, + "name": "myform", + "children": null + }, + { + "display": "行业精选预算单", + "type": 512, + "name": "bussiness_template", + "children": null + }, + { + "display": "编辑按钮", + "type": 512, + "name": "edit_template", + "children": null + } + ] + }, + { + "display": "行业精选预算单", + "type": 256, + "name": null, + "children": [ + { + "display": "行业精选预算单", + "type": 512, + "name": "/budget_froms/*/10", + "children": null + }, + { + "display": "启用模板按钮", + "type": 512, + "name": "start_template", + "children": null + }, + { + "display": "从该模板创建按钮", + "type": 512, + "name": "create_form_template", + "children": null + } + ] + } + ] + }, + { + "display": "申请单配置", + "type": 256, + "name": null, + "children": [ + { + "display": "申请单配置", + "type": 512, + "name": "apply_template", + "children": null + }, + { + "display": "申请单配置页面", + "type": 256, + "name": null, + "children": [ + { + "display": "申请单配置页面", + "type": 512, + "name": "/budget_froms/20", + "children": null + }, + { + "display": "使用空白的申请单", + "type": 256, + "name": null, + "children": [ + { + "display": "使用空白的申请单", + "type": 512, + "name": "budget_form_customize/20", + "children": null + }, + { + "display": "保存按钮", + "type": 512, + "name": "save_create_form", + "children": null + } + ] + }, + { + "display": "我创建的申请单", + "type": 512, + "name": "myform", + "children": null + }, + { + "display": "行业精选申请单", + "type": 512, + "name": "bussiness_template", + "children": null + }, + { + "display": "编辑按钮", + "type": 512, + "name": "edit_template", + "children": null + } + ] + }, + { + "display": "行业精选申请单", + "type": 256, + "name": null, + "children": [ + { + "display": "行业精选申请单", + "type": 512, + "name": "/budget_froms/*/20", + "children": null + }, + { + "display": "启用模板按钮", + "type": 256, + "name": null, + "children": [ + { + "display": "启用模板按钮", + "type": 512, + "name": "start_template", + "children": null + }, + { + "display": "报销单配置", + "type": 256, + "name": null, + "children": [ + { + "display": "报销单配置", + "type": 512, + "name": "expend_template", + "children": null + }, + { + "display": "报销单配置页面", + "type": 256, + "name": null, + "children": [ + { + "display": "报销单配置页面", + "type": 512, + "name": "/budget_froms/30", + "children": null + }, + { + "display": "使用空白的报销单", + "type": 256, + "name": null, + "children": [ + { + "display": "使用空白的报销单", + "type": 512, + "name": "/budget_form_customize/30", + "children": null + }, + { + "display": "保存按钮", + "type": 512, + "name": "save_create_form", + "children": null + } + ] + }, + { + "display": "我创建的报销单", + "type": 512, + "name": "myform", + "children": null + }, + { + "display": "行业精选报销单", + "type": 512, + "name": "bussiness_template", + "children": null + }, + { + "display": "编辑按钮", + "type": 512, + "name": "edit_template", + "children": null + } + ] + }, + { + "display": "行业精选报销单", + "type": 256, + "name": null, + "children": [ + { + "display": "行业精选报销单", + "type": 512, + "name": "/budget_froms/*/30", + "children": null + }, + { + "display": "启用模板按钮", + "type": 512, + "name": "start_template", + "children": null + }, + { + "display": "从该模板创建按钮", + "type": 512, + "name": "create_form_template", + "children": null + } + ] + } + ] + } + ] + }, + { + "display": "从该模板创建按钮", + "type": 512, + "name": "create_form_template", + "children": null + } + ] + } + ] + }, + { + "display": "系统设置", + "type": 256, + "name": null, + "children": [ + { + "display": "系统设置", + "type": 512, + "name": "system", + "children": null + }, + { + "display": "系统设置页面", + "type": 256, + "name": null, + "children": [ + { + "display": "系统设置页面", + "type": 512, + "name": "/system_config", + "children": null + }, + { + "display": "完成按钮", + "type": 512, + "name": "save_system", + "children": null + } + ] + } + ] + }, + { + "display": "报销标准", + "type": 256, + "name": null, + "children": [ + { + "display": "报销标准", + "type": 512, + "name": "standard", + "children": null + }, + { + "display": "报销标准配置页面", + "type": 256, + "name": null, + "children": [ + { + "display": "报销标准配置页面", + "type": 512, + "name": "/expend_standard", + "children": null + }, + { + "display": "新建按钮", + "type": 512, + "name": "new_standard", + "children": null + }, + { + "display": "保存按钮", + "type": 512, + "name": "save_standard", + "children": null + }, + { + "display": "复制按钮", + "type": 512, + "name": "copy_standard", + "children": null + }, + { + "display": "删除按钮", + "type": 512, + "name": "delete_standard", + "children": null + }, + { + "display": "添加数据按钮", + "type": 512, + "name": "add_standard_data", + "children": null + } + ] + } + ] + }, + { + "display": "工作流配置", + "type": 256, + "name": null, + "children": [ + { + "display": "工作流配置", + "type": 512, + "name": "flow", + "children": null + }, + { + "display": "工作流配置页面", + "type": 256, + "name": null, + "children": [ + { + "display": "工作流配置页面", + "type": 512, + "name": "/work_flow", + "children": null + }, + { + "display": "配置流程按钮(预算)", + "type": 512, + "name": "config_budget", + "children": null + }, + { + "display": "配置流程按钮(申请)", + "type": 512, + "name": "config_apply", + "children": null + }, + { + "display": "配置流程按钮(报销)", + "type": 512, + "name": "config_expend", + "children": null + }, + { + "display": "部署按钮(预算)", + "type": 512, + "name": "econfig_budget", + "children": null + }, + { + "display": "部署按钮(申请)", + "type": 512, + "name": "econfig_apply", + "children": null + }, + { + "display": "部署按钮(报销)", + "type": 512, + "name": "econfig_expend", + "children": null + } + ] + } + ] + } + ] + } + ] + }, + { + "display": "云中心", + "type": 256, + "name": null, + "children": [ + { + "display": "云中心", + "type": 512, + "name": "cloud_center", + "children": null + }, + { + "display": "模板中心", + "type": 256, + "name": null, + "children": [ + { + "display": "模板中心", + "type": 512, + "name": "template_center", + "children": null + }, + { + "display": "模板管理页面", + "type": 256, + "name": null, + "children": [ + { + "display": "模板管理页面", + "type": 512, + "name": "/templates_center", + "children": null + }, + { + "display": "添加预算单模板按钮", + "type": 512, + "name": "add_budget_template", + "children": null + }, + { + "display": "删除预算单模板按钮", + "type": 512, + "name": "delete_budget_template", + "children": null + }, + { + "display": "添加申请单模板按钮", + "type": 512, + "name": "add_apply_template", + "children": null + }, + { + "display": "删除申请单模板按钮", + "type": 512, + "name": "delete_apply_template", + "children": null + }, + { + "display": "添加报销单模板按钮", + "type": 512, + "name": "add_expend_template", + "children": null + }, + { + "display": "删除报销单模板按钮", + "type": 512, + "name": "delete_expend_template", + "children": null + }, + { + "display": "添加行业按钮", + "type": 512, + "name": "add_bussiness", + "children": null + }, + { + "display": "修改行业按钮", + "type": 512, + "name": "edit_bussiness", + "children": null + }, + { + "display": "删除行业按钮", + "type": 512, + "name": "delete_bussiness", + "children": null + }, + { + "display": "上传模板按钮", + "type": 512, + "name": "template_pass", + "children": null + }, + { + "display": "取消模板按钮", + "type": 512, + "name": "template_cancle", + "children": null + }, + { + "display": "模版中心编辑按钮", + "type": 512, + "name": "edit_template_center", + "children": null + } + ] + } + ] + } + ] + }, + { + "display": "初始化向导页面", + "type": 256, + "name": null, + "children": [ + { + "display": "初始化向导页面", + "type": 512, + "name": "/guide", + "children": null + }, + { + "display": "选择行业向导页面", + "type": 512, + "name": "/business", + "children": null + }, + { + "display": "设置向导页面", + "type": 512, + "name": "/billing_cfg_guide", + "children": null + } + ] + } +] \ No newline at end of file diff --git a/src/static/js/qxv4.json b/src/static/js/qxv4.json new file mode 100644 index 0000000..9e10acb --- /dev/null +++ b/src/static/js/qxv4.json @@ -0,0 +1,878 @@ +[ + { + "display": "差旅费", + "type": 256, + "name": null, + "children": [ + { + "display": "差旅费", + "type": 512, + "name": "travel_reimbursement", + "children": null + }, { + "display": "预算单", + "type": 256, + "name": null, + "children": [ + { + "display": "预算单", + "type": 512, + "name": "budgetorder", + "children": null + }, { + "display": "预算单查询列表页面", + "type": 256, + "name": null, + "children": [ + { + "display": "预算单查询列表页面", + "type": 512, + "name": "travel_expense/1", + "children": null + }, { + "display": "查询按钮", + "type": 512, + "name": "searchtravel_expense/1",//search_condition + "children": null + }, { + "display": "更改查询内容", + "type": 512, + "name": "changetravel_expense/1",//change_search_condition + "children": null + }, { + "display": "更改显示内容", + "type": 512, + "name": "showtravel_expense/1",//show_condition + "children": null + }, { + "display": "新建按钮", + "type": 512, + "name": "newtravel_expense/1",//new_order + "children": null + }, { + "display": "删除按钮(批量)", + "type": 512, + "name": "deletetravel_expense/1",//delete_order + "children": null + }, { + "display": "预算单流程状态", + "type": 512, + "name": "flowtravel_expense/1",//flow_content + "children": null + }, { + "display": "删除按钮", + "type": 512, + "name": "deletebtntravel_expense/1",//deletebtn + "children": null + }, { + "display": "提交按钮", + "type": 512, + "name": "commitbtntravel_expense/1",//commitbtn + "children": null + }, { + "display": "审核按钮", + "type": 512, + "name": "auditbtntravel_expense/1",//auditbtn + "children": null + }, { + "display": "保存按钮", + "type": 512, + "name": "savebtntravel_expense/1",//savebtn + "children": null + }, { + "display": "编辑按钮", + "type": 512, + "name": "editbtntravel_expense/1",//editbtn + "children": null + }, { + "display": "驳回按钮", + "type": 512, + "name": "backbtntravel_expense/1",//backbtn + "children": null + } + ] + } + ] + }, { + "display": "申请单", + "type": 256, + "name": null, + "children": [ + { + "display": "申请单", + "type": 512, + "name": "applyorder", + "children": null + }, { + "display": "申请单查询列表页面", + "type": 256, + "name": null, + "children": [ + { + "display": "申请单查询列表页面", + "type": 512, + "name": "travel_expense/2", + "children": null + }, { + "display": "查询按钮", + "type": 512, + "name": "searchtravel_expense/2",//search_condition + "children": null + }, { + "display": "更改查询内容", + "type": 512, + "name": "changetravel_expense/2",//change_search_condition + "children": null + }, { + "display": "更改显示内容", + "type": 512, + "name": "showtravel_expense/2",//show_condition + "children": null + }, { + "display": "新建按钮", + "type": 512, + "name": "newtravel_expense/2",//new_order + "children": null + }, { + "display": "删除按钮(批量)", + "type": 512, + "name": "deletetravel_expense/2",//delete_order + "children": null + }, { + "display": "申请单流程状态", + "type": 512, + "name": "flowtravel_expense/2",//flow_content + "children": null + }, { + "display": "删除按钮", + "type": 512, + "name": "deletebtntravel_expense/2",//deletebtn + "children": null + }, { + "display": "提交按钮", + "type": 512, + "name": "commitbtntravel_expense/2",//commitbtn + "children": null + }, { + "display": "审核按钮", + "type": 512, + "name": "auditbtntravel_expense/2",//auditbtn + "children": null + }, { + "display": "保存按钮", + "type": 512, + "name": "savebtntravel_expense/2",//savebtn + "children": null + }, { + "display": "编辑按钮", + "type": 512, + "name": "editbtntravel_expense/2",//editbtn + "children": null + }, { + "display": "驳回按钮", + "type": 512, + "name": "backbtntravel_expense/2",//backbtn + "children": null + } + ] + } + ] + }, { + "display": "报销单", + "type": 256, + "name": null, + "children": [ + { + "display": "报销单", + "type": 512, + "name": "expendorder", + "children": null + }, { + "display": "报销单查询列表页面", + "type": 256, + "name": null, + "children": [ + { + "display": "报销单查询列表页面", + "type": 512, + "name": "travel_expense/3", + "children": null + }, { + "display": "查询按钮", + "type": 512, + "name": "searchtravel_expense/3",//search_condition + "children": null + }, { + "display": "更改查询内容", + "type": 512, + "name": "change_searchtravel_expense/3",//change_search_condition + "children": null + }, { + "display": "更改显示内容", + "type": 512, + "name": "showtravel_expense/3",//show_condition + "children": null + }, { + "display": "新建按钮", + "type": 512, + "name": "newtravel_expense/3",//new_order + "children": null + }, { + "display": "删除按钮(批量)", + "type": 512, + "name": "deletetravel_expense/3",//delete_order + "children": null + }, { + "display": "报销单流程状态", + "type": 512, + "name": "flowtravel_expense/3",//flow_content + "children": null + }, { + "display": "删除按钮", + "type": 512, + "name": "deletebtntravel_expense/3",//deletebtn + "children": null + }, { + "display": "提交按钮", + "type": 512, + "name": "commitbtntravel_expense/3",//commitbtn + "children": null + }, { + "display": "审核按钮", + "type": 512, + "name": "auditbtntravel_expense/3",//auditbtn + "children": null + }, { + "display": "保存按钮", + "type": 512, + "name": "savebtntravel_expense/3",//savebtn + "children": null + }, { + "display": "编辑按钮", + "type": 512, + "name": "editbtntravel_expense/3",//editbtn + "children": null + }, { + "display": "驳回按钮", + "type": 512, + "name": "backbtntravel_expense/3",//backbtn + "children": null + }, { + "display": "票据上传按钮(新增报销单)", + "type": 512, + "name": "bill_commit_create", + "children": null + }, { + "display": "票据上传按钮(修改报销单)", + "type": 512, + "name": "bill_commit_update", + "children": null + }, { + "display": "票据上传按钮(报销单详情)", + "type": 512, + "name": "bill_commit_detail", + "children": null + } + ] + } + ] + } + ] + }, { + "display": "待办事项", + "type": 256, + "name": null, + "children": [ + { + "display": "待办事项", + "type": 512, + "name": "termination", + "children": null + }, { + "display": "我的待办", + "type": 512, + "name": "mytodos", + "children": null + }, { + "display": "待办事项页面", + "type": 512, + "name": "travel_expense_todos/", + "children": null + }, { + "display": "待办预算查看页面", + "type": 256, + "name": null, + "children": [ + { + "display": "待办预算查看页面", + "type": 512, + "name": "termination_budget", + "children": null + }, { + "display": "查询按钮", + "type": 512, + "name": "search_budget", + "children": null + }, { + "display": "更改查询内容", + "type": 512, + "name": "termination_budget_search", + "children": null + } + ] + }, { + "display": "待办申请查看页面", + "type": 256, + "name": null, + "children": [ + { + "display": "待办申请查看页面", + "type": 512, + "name": "termination_apply", + "children": null + }, { + "display": "查询按钮", + "type": 512, + "name": "search_apply", + "children": null + }, { + "display": "更改查询内容", + "type": 512, + "name": "termination_apply_search", + "children": null + } + ] + }, { + "display": "待办报销查看页面", + "type": 256, + "name": null, + "children": [ + { + "display": "待办报销查看页面", + "type": 512, + "name": "termination_expend", + "children": null + }, { + "display": "查询按钮", + "type": 512, + "name": "search_expend", + "children": null + }, { + "display": "更改查询内容", + "type": 512, + "name": "termination_expend_search", + "children": null + } + ] + } + ] + }, { + "display": "配置中心", + "type": 256, + "name": null, + "children": [ + { + "display": "配置中心", + "type": 512, + "name": "config_center", + "children": null + }, { + "display": "配置中心", + "type": 256, + "name": null, + "children": [ + { + "display": "配置中心", + "type": 512, + "name": "cfg_center/", + "children": null + }, { + "display": "预算单配置", + "type": 256, + "name": null, + "children": [ + { + "display": "预算单配置", + "type": 512, + "name": "budget_template", + "children": null + }, { + "display": "预算单配置页面", + "type": 256, + "name": null, + "children": [ + { + "display": "预算单配置页面", + "type": 512, + "name": "/budget_froms/10", + "children": null + }, { + "display": "使用空白的预算单", + "type": 256, + "name": null, + "children": [ + { + "display": "使用空白的预算单", + "type": 512, + "name": "/budget_form_customize/10", + "children": null + }, { + "display": "保存按钮", + "type": 512, + "name": "save/budget_form_customize/10",//save_create_form + "children": null + } + ] + }, { + "display": "我创建的预算单", + "type": 512, + "name": "myform/budget_froms/10",//myform + "children": null + }, { + "display": "行业精选预算单", + "type": 512, + "name": "bussiness/budget_froms/10",//bussiness_template + "children": null + }, { + "display": "编辑按钮", + "type": 512, + "name": "edit/budget_froms/10",//edit_template + "children": null + } + ] + }, { + "display": "行业精选预算单", + "type": 256, + "name": null, + "children": [ + { + "display": "行业精选预算单", + "type": 512, + "name": "/budget_froms/*/10", + "children": null + }, { + "display": "启用模板按钮", + "type": 512, + "name": "start/budget_froms/*/10",//start_template + "children": null + }, { + "display": "从该模板创建按钮", + "type": 512, + "name": "create/budget_froms/*/10",//create_form_template + "children": null + } + ] + } + ] + }, { + "display": "申请单配置", + "type": 256, + "name": null, + "children": [ + { + "display": "申请单配置", + "type": 512, + "name": "apply_template", + "children": null + }, { + "display": "申请单配置页面", + "type": 256, + "name": null, + "children": [ + { + "display": "申请单配置页面", + "type": 512, + "name": "/budget_froms/20", + "children": null + }, { + "display": "使用空白的申请单", + "type": 256, + "name": null, + "children": [ + { + "display": "使用空白的申请单", + "type": 512, + "name": "budget_form_customize/20", + "children": null + }, { + "display": "保存按钮", + "type": 512, + "name": "savebudget_form_customize/20",//save_create_form + "children": null + } + ] + }, { + "display": "我创建的申请单", + "type": 512, + "name": "myform/budget_froms/20",//myform + "children": null + }, { + "display": "行业精选申请单", + "type": 512, + "name": "bussiness/budget_froms/20",//bussiness_template + "children": null + }, { + "display": "编辑按钮", + "type": 512, + "name": "edit/budget_froms/20",//edit_template + "children": null + } + ] + }, { + "display": "行业精选申请单", + "type": 256, + "name": null, + "children": [ + { + "display": "行业精选申请单", + "type": 512, + "name": "/budget_froms/*/20", + "children": null + }, { + "display": "启用模板按钮", + "type": 512, + "name": "start/budget_froms/*/20",//start_template + "children": null + }, { + "display": "从该模板创建按钮", + "type": 512, + "name": "create/budget_froms/*/20",//create_form_template + "children": null + } + ] + } + ] + }, { + "display": "报销单配置", + "type": 256, + "name": null, + "children": [ + { + "display": "报销单配置", + "type": 512, + "name": "expend_template", + "children": null + }, { + "display": "报销单配置页面", + "type": 256, + "name": null, + "children": [ + { + "display": "报销单配置页面", + "type": 512, + "name": "/budget_froms/30", + "children": null + }, { + "display": "使用空白的报销单", + "type": 256, + "name": null, + "children": [ + { + "display": "使用空白的报销单", + "type": 512, + "name": "/budget_form_customize/30", + "children": null + }, { + "display": "保存按钮", + "type": 512, + "name": "save/budget_form_customize/30",//save_create_form + "children": null + } + ] + }, { + "display": "我创建的报销单", + "type": 512, + "name": "myform/budget_froms/30",//myform + "children": null + }, { + "display": "行业精选报销单", + "type": 512, + "name": "bussiness/budget_froms/30",//bussiness_template + "children": null + }, { + "display": "编辑按钮", + "type": 512, + "name": "edit/budget_froms/30",//edit_template + "children": null + } + ] + }, { + "display": "行业精选报销单", + "type": 256, + "name": null, + "children": [ + { + "display": "行业精选报销单", + "type": 512, + "name": "/budget_froms/*/30", + "children": null + }, { + "display": "启用模板按钮", + "type": 512, + "name": "start/budget_froms/*/30",//start_template + "children": null + }, { + "display": "从该模板创建按钮", + "type": 512, + "name": "create/budget_froms/*/30",//create_form_template + "children": null + } + ] + } + ] + }, { + "display": "系统设置", + "type": 256, + "name": null, + "children": [ + { + "display": "系统设置", + "type": 512, + "name": "system", + "children": null + }, { + "display": "系统设置页面", + "type": 256, + "name": null, + "children": [ + { + "display": "系统设置页面", + "type": 512, + "name": "/system_config", + "children": null + }, { + "display": "完成按钮", + "type": 512, + "name": "save_system", + "children": null + } + ] + } + ] + }, { + "display": "报销标准", + "type": 256, + "name": null, + "children": [ + { + "display": "报销标准", + "type": 512, + "name": "standard", + "children": null + }, { + "display": "报销标准配置页面", + "type": 256, + "name": null, + "children": [ + { + "display": "报销标准配置页面", + "type": 512, + "name": "/expend_standard", + "children": null + }, { + "display": "新建按钮", + "type": 512, + "name": "new_standard", + "children": null + }, { + "display": "保存按钮", + "type": 512, + "name": "save_standard", + "children": null + }, { + "display": "复制按钮", + "type": 512, + "name": "copy_standard", + "children": null + }, { + "display": "删除按钮", + "type": 512, + "name": "delete_standard", + "children": null + }, { + "display": "添加数据按钮", + "type": 512, + "name": "add_standard_data", + "children": null + } + ] + } + ] + }, { + "display": "工作流配置", + "type": 256, + "name": null, + "children": [ + { + "display": "工作流配置", + "type": 512, + "name": "flow", + "children": null + }, { + "display": "工作流配置页面", + "type": 256, + "name": null, + "children": [ + { + "display": "工作流配置页面", + "type": 512, + "name": "/work_flow", + "children": null + }, { + "display": "配置流程按钮(预算)", + "type": 512, + "name": "config_budget", + "children": null + }, { + "display": "配置流程按钮(申请)", + "type": 512, + "name": "config_apply", + "children": null + }, { + "display": "配置流程按钮(报销)", + "type": 512, + "name": "config_expend", + "children": null + }, { + "display": "部署按钮(预算)", + "type": 512, + "name": "econfig_budget", + "children": null + }, { + "display": "部署按钮(申请)", + "type": 512, + "name": "econfig_apply", + "children": null + }, { + "display": "部署按钮(报销)", + "type": 512, + "name": "econfig_expend", + "children": null + } + ] + } + ] + } + ] + } + ] + }, { + "display": "云中心", + "type": 256, + "name": null, + "children": [ + { + "display": "云中心", + "type": 512, + "name": "cloud_center", + "children": null + }, { + "display": "模板中心", + "type": 256, + "name": null, + "children": [ + { + "display": "模板中心", + "type": 512, + "name": "template_center", + "children": null + }, { + "display": "模板管理页面", + "type": 256, + "name": null, + "children": [ + { + "display": "模板管理页面", + "type": 512, + "name": "/templates_center", + "children": null + }, { + "display": "添加预算单模板按钮", + "type": 512, + "name": "add_budget_template", + "children": null + }, { + "display": "删除预算单模板按钮", + "type": 512, + "name": "delete_budget_template", + "children": null + }, { + "display": "添加申请单模板按钮", + "type": 512, + "name": "add_apply_template", + "children": null + }, { + "display": "删除申请单模板按钮", + "type": 512, + "name": "delete_apply_template", + "children": null + }, { + "display": "添加报销单模板按钮", + "type": 512, + "name": "add_expend_template", + "children": null + }, { + "display": "删除报销单模板按钮", + "type": 512, + "name": "delete_expend_template", + "children": null + }, { + "display": "添加行业按钮", + "type": 512, + "name": "add_bussiness", + "children": null + }, { + "display": "修改行业按钮", + "type": 512, + "name": "edit_bussiness", + "children": null + }, { + "display": "删除行业按钮", + "type": 512, + "name": "delete_bussiness", + "children": null + }, { + "display": "上传模板按钮", + "type": 512, + "name": "template_pass", + "children": null + }, { + "display": "取消模板按钮", + "type": 512, + "name": "template_cancle", + "children": null + }, { + "display": "模版中心编辑按钮", + "type": 512, + "name": "edit_template_center", + "children": null + } + ] + } + ] + } + ] + }, { + "display": "初始化向导页面", + "type": 256, + "name": null, + "children": [ + { + "display": "初始化向导页面", + "type": 512, + "name": "/guide", + "children": null + }, { + "display": "选择行业向导页面", + "type": 512, + "name": "/business", + "children": null + }, { + "display": "设置向导页面", + "type": 512, + "name": "/billing_cfg_guide", + "children": null + } + ] + } +] \ No newline at end of file diff --git a/src/static/js/qxv5.json b/src/static/js/qxv5.json new file mode 100644 index 0000000..c172ef7 --- /dev/null +++ b/src/static/js/qxv5.json @@ -0,0 +1,884 @@ +[ + { + "display": "差旅费", + "type": 256, + "name": null, + "children": [ + { + "display": "差旅费", + "type": 512, + "name": "travel_reimbursement", + "children": null + }, { + "display": "预算单", + "type": 256, + "name": null, + "children": [ + { + "display": "预算单", + "type": 512, + "name": "budgetorder", + "children": null + }, { + "display": "预算单查询列表页面", + "type": 256, + "name": null, + "children": [ + { + "display": "预算单查询列表页面", + "type": 512, + "name": "travel_expense/1", + "children": null + }, { + "display": "查询按钮(预算单)", + "type": 512, + "name": "searchtravel_expense/1", + "children": null + }, { + "display": "更改查询内容(预算单)", + "type": 512, + "name": "changetravel_expense/1", + "children": null + }, { + "display": "更改显示内容(预算单)", + "type": 512, + "name": "showtravel_expense/1", + "children": null + }, { + "display": "新建按钮(预算单)", + "type": 512, + "name": "newtravel_expense/1", + "children": null + }, { + "display": "删除按钮(批量)(预算单)", + "type": 512, + "name": "deletetravel_expense/1", + "children": null + }, { + "display": "预算单流程状态(预算单)", + "type": 512, + "name": "flowtravel_expense/1", + "children": null + }, { + "display": "删除按钮(预算单)", + "type": 512, + "name": "deletebtntravel_expense/1", + "children": null + }, { + "display": "提交按钮(预算单)", + "type": 512, + "name": "commitbtntravel_expense/1", + "children": null + }, { + "display": "审核按钮(预算单)", + "type": 512, + "name": "auditbtntravel_expense/1", + "children": null + }, { + "display": "保存按钮(预算单)", + "type": 512, + "name": "savebtntravel_expense/1", + "children": null + }, { + "display": "编辑按钮(预算单)", + "type": 512, + "name": "editbtntravel_expense/1", + "children": null + }, { + "display": "驳回按钮(预算单)", + "type": 512, + "name": "backbtntravel_expense/1", + "children": null + } + ] + } + ] + }, { + "display": "申请单", + "type": 256, + "name": null, + "children": [ + { + "display": "申请单", + "type": 512, + "name": "applyorder", + "children": null + }, { + "display": "申请单查询列表页面", + "type": 256, + "name": null, + "children": [ + { + "display": "申请单查询列表页面", + "type": 512, + "name": "travel_expense/2", + "children": null + }, { + "display": "查询按钮(申请单)", + "type": 512, + "name": "searchtravel_expense/2", + "children": null + }, { + "display": "更改查询内容(申请单)", + "type": 512, + "name": "changetravel_expense/2", + "children": null + }, { + "display": "更改显示内容(申请单)", + "type": 512, + "name": "showtravel_expense/2", + "children": null + }, { + "display": "新建按钮(申请单)", + "type": 512, + "name": "newtravel_expense/2", + "children": null + }, { + "display": "删除按钮(批量)(申请单)", + "type": 512, + "name": "deletetravel_expense/2", + "children": null + }, { + "display": "申请单流程状态(申请单)", + "type": 512, + "name": "flowtravel_expense/2", + "children": null + }, { + "display": "删除按钮(申请单)", + "type": 512, + "name": "deletebtntravel_expense/2", + "children": null + }, { + "display": "提交按钮(申请单)", + "type": 512, + "name": "commitbtntravel_expense/2", + "children": null + }, { + "display": "审核按钮(申请单)", + "type": 512, + "name": "auditbtntravel_expense/2", + "children": null + }, { + "display": "保存按钮(申请单)", + "type": 512, + "name": "savebtntravel_expense/2", + "children": null + }, { + "display": "编辑按钮(申请单)", + "type": 512, + "name": "editbtntravel_expense/2", + "children": null + }, { + "display": "驳回按钮(申请单)", + "type": 512, + "name": "backbtntravel_expense/2", + "children": null + } + ] + } + ] + }, { + "display": "报销单", + "type": 256, + "name": null, + "children": [ + { + "display": "报销单", + "type": 512, + "name": "expendorder", + "children": null + }, { + "display": "报销单查询列表页面", + "type": 256, + "name": null, + "children": [ + { + "display": "报销单查询列表页面", + "type": 512, + "name": "travel_expense/3", + "children": null + }, { + "display": "查询按钮(报销单)", + "type": 512, + "name": "searchtravel_expense/3", + "children": null + }, { + "display": "更改查询内容(报销单)", + "type": 512, + "name": "changetravel_expense/3", + "children": null + }, { + "display": "更改显示内容(报销单)", + "type": 512, + "name": "showtravel_expense/3", + "children": null + }, { + "display": "新建按钮(报销单)", + "type": 512, + "name": "newtravel_expense/3", + "children": null + }, { + "display": "删除按钮(批量)(报销单)", + "type": 512, + "name": "deletetravel_expense/3", + "children": null + }, { + "display": "报销单流程状态(报销单)", + "type": 512, + "name": "flowtravel_expense/3", + "children": null + }, { + "display": "删除按钮(报销单)", + "type": 512, + "name": "deletebtntravel_expense/3", + "children": null + }, { + "display": "提交按钮(报销单)", + "type": 512, + "name": "commitbtntravel_expense/3", + "children": null + }, { + "display": "审核按钮(报销单)", + "type": 512, + "name": "auditbtntravel_expense/3", + "children": null + }, { + "display": "保存按钮(报销单)", + "type": 512, + "name": "savebtntravel_expense/3", + "children": null + }, { + "display": "编辑按钮(报销单)", + "type": 512, + "name": "editbtntravel_expense/3", + "children": null + }, { + "display": "驳回按钮(报销单)", + "type": 512, + "name": "backbtntravel_expense/3", + "children": null + }, { + "display": "票据上传按钮(新增报销单)", + "type": 512, + "name": "bill_commit_create", + "children": null + }, { + "display": "票据上传按钮(修改报销单)", + "type": 512, + "name": "bill_commit_update", + "children": null + }, { + "display": "票据上传按钮(报销单详情)", + "type": 512, + "name": "bill_commit_detail", + "children": null + } + ] + } + ] + } + ] + }, { + "display": "待办事项", + "type": 256, + "name": null, + "children": [ + { + "display": "待办事项", + "type": 512, + "name": "termination", + "children": null + }, { + "display": "我的待办", + "type": 512, + "name": "mytodos", + "children": null + }, { + "display": "待办事项页面", + "type": 512, + "name": "travel_expense_todos/", + "children": null + }, { + "display": "待办预算查看页面", + "type": 256, + "name": null, + "children": [ + { + "display": "待办预算查看页面", + "type": 512, + "name": "termination_budget", + "children": null + }, { + "display": "查询按钮(待办预算)", + "type": 512, + "name": "search_budget", + "children": null + }, { + "display": "更改查询内容(待办预算)", + "type": 512, + "name": "termination_budget_search", + "children": null + } + ] + }, { + "display": "待办申请查看页面", + "type": 256, + "name": null, + "children": [ + { + "display": "待办申请查看页面", + "type": 512, + "name": "termination_apply", + "children": null + }, { + "display": "查询按钮(待办申请)", + "type": 512, + "name": "search_apply", + "children": null + }, { + "display": "更改查询内容(待办申请)", + "type": 512, + "name": "termination_apply_search", + "children": null + } + ] + }, { + "display": "待办报销查看页面", + "type": 256, + "name": null, + "children": [ + { + "display": "待办报销查看页面", + "type": 512, + "name": "termination_expend", + "children": null + }, { + "display": "查询按钮(待办报销)", + "type": 512, + "name": "search_expend", + "children": null + }, { + "display": "更改查询内容(待办报销)", + "type": 512, + "name": "termination_expend_search", + "children": null + } + ] + } + ] + }, { + "display": "配置中心", + "type": 256, + "name": null, + "children": [ + { + "display": "配置中心", + "type": 512, + "name": "config_center", + "children": null + }, { + "display": "配置中心", + "type": 256, + "name": null, + "children": [ + { + "display": "配置中心", + "type": 512, + "name": "cfg_center/", + "children": null + }, { + "display": "预算单配置", + "type": 256, + "name": null, + "children": [ + { + "display": "预算单配置", + "type": 512, + "name": "budget_template", + "children": null + }, { + "display": "预算单配置页面", + "type": 256, + "name": null, + "children": [ + { + "display": "预算单配置页面", + "type": 512, + "name": "/budget_froms/10", + "children": null + }, { + "display": "使用空白的预算单", + "type": 256, + "name": null, + "children": [ + { + "display": "使用空白的预算单", + "type": 512, + "name": "/budget_form_customize/10", + "children": null + }, { + "display": "保存按钮(预算单编辑)", + "type": 512, + "name": "save/budget_form_customize/10", + "children": null + } + ] + }, { + "display": "我创建的预算单", + "type": 512, + "name": "myform/budget_froms/10", + "children": null + }, { + "display": "行业精选预算单", + "type": 512, + "name": "bussiness/budget_froms/10", + "children": null + }, { + "display": "编辑按钮(预算单编辑)", + "type": 512, + "name": "edit/budget_froms/10", + "children": null + } + ] + }, { + "display": "行业精选预算单", + "type": 256, + "name": null, + "children": [ + { + "display": "行业精选预算单", + "type": 512, + "name": "/budget_froms/*/10", + "children": null + }, { + "display": "启用模板按钮(预算单编辑)", + "type": 512, + "name": "start/budget_froms/10", + "children": null + }, { + "display": "从该模板创建按钮(预算单编辑)", + "type": 512, + "name": "create/budget_froms/10", + "children": null + } + ] + } + ] + }, { + "display": "申请单配置", + "type": 256, + "name": null, + "children": [ + { + "display": "申请单配置", + "type": 512, + "name": "apply_template", + "children": null + }, { + "display": "申请单配置页面", + "type": 256, + "name": null, + "children": [ + { + "display": "申请单配置页面", + "type": 512, + "name": "/budget_froms/20", + "children": null + }, { + "display": "使用空白的申请单", + "type": 256, + "name": null, + "children": [ + { + "display": "使用空白的申请单", + "type": 512, + "name": "budget_form_customize/20", + "children": null + }, { + "display": "保存按钮(申请单编辑)", + "type": 512, + "name": "savebudget_form_customize/20", + "children": null + } + ] + }, { + "display": "我创建的申请单", + "type": 512, + "name": "myform/budget_froms/20", + "children": null + }, { + "display": "行业精选申请单", + "type": 512, + "name": "bussiness/budget_froms/20", + "children": null + }, { + "display": "编辑按钮(申请单编辑)", + "type": 512, + "name": "edit/budget_froms/20", + "children": null + } + ] + }, { + "display": "行业精选申请单", + "type": 256, + "name": null, + "children": [ + { + "display": "行业精选申请单", + "type": 512, + "name": "/budget_froms/*/20", + "children": null + }, { + "display": "启用模板按钮(申请单编辑)", + "type": 512, + "name": "start/budget_froms/20", + "children": null + }, { + "display": "从该模板创建按钮(申请单编辑)", + "type": 512, + "name": "create/budget_froms/20", + "children": null + } + ] + } + ] + }, { + "display": "报销单配置", + "type": 256, + "name": null, + "children": [ + { + "display": "报销单配置", + "type": 512, + "name": "expend_template", + "children": null + }, { + "display": "报销单配置页面", + "type": 256, + "name": null, + "children": [ + { + "display": "报销单配置页面", + "type": 512, + "name": "/budget_froms/30", + "children": null + }, { + "display": "使用空白的报销单", + "type": 256, + "name": null, + "children": [ + { + "display": "使用空白的报销单", + "type": 512, + "name": "/budget_form_customize/30", + "children": null + }, { + "display": "保存按钮(报销单编辑)", + "type": 512, + "name": "save/budget_form_customize/30", + "children": null + } + ] + }, { + "display": "我创建的报销单", + "type": 512, + "name": "myform/budget_froms/30", + "children": null + }, { + "display": "行业精选报销单", + "type": 512, + "name": "bussiness/budget_froms/30", + "children": null + }, { + "display": "编辑按钮(报销单编辑)", + "type": 512, + "name": "edit/budget_froms/30", + "children": null + } + ] + }, { + "display": "行业精选报销单", + "type": 256, + "name": null, + "children": [ + { + "display": "行业精选报销单", + "type": 512, + "name": "/budget_froms/*/30", + "children": null + }, { + "display": "启用模板按钮(报销单编辑)", + "type": 512, + "name": "start/budget_froms/30", + "children": null + }, { + "display": "从该模板创建按钮(报销单编辑)", + "type": 512, + "name": "create/budget_froms/30", + "children": null + } + ] + } + ] + }, { + "display": "系统设置", + "type": 256, + "name": null, + "children": [ + { + "display": "系统设置", + "type": 512, + "name": "system", + "children": null + }, { + "display": "系统设置页面", + "type": 256, + "name": null, + "children": [ + { + "display": "系统设置页面", + "type": 512, + "name": "/system_config", + "children": null + }, { + "display": "完成按钮", + "type": 512, + "name": "save_system", + "children": null + } + ] + } + ] + }, { + "display": "报销标准", + "type": 256, + "name": null, + "children": [ + { + "display": "报销标准", + "type": 512, + "name": "standard", + "children": null + }, { + "display": "报销标准配置页面", + "type": 256, + "name": null, + "children": [ + { + "display": "报销标准配置页面", + "type": 512, + "name": "/expend_standard", + "children": null + }, { + "display": "新建按钮", + "type": 512, + "name": "new_standard", + "children": null + }, { + "display": "保存按钮", + "type": 512, + "name": "save_standard", + "children": null + }, { + "display": "复制按钮", + "type": 512, + "name": "copy_standard", + "children": null + }, { + "display": "删除按钮", + "type": 512, + "name": "delete_standard", + "children": null + }, { + "display": "添加数据按钮", + "type": 512, + "name": "add_standard_data", + "children": null + } + ] + } + ] + }, { + "display": "工作流配置", + "type": 256, + "name": null, + "children": [ + { + "display": "工作流配置", + "type": 512, + "name": "flow", + "children": null + }, { + "display": "工作流配置页面", + "type": 256, + "name": null, + "children": [ + { + "display": "工作流配置页面", + "type": 512, + "name": "/work_flow", + "children": null + }, { + "display": "配置流程按钮(预算)", + "type": 512, + "name": "config_budget", + "children": null + }, { + "display": "配置流程按钮(申请)", + "type": 512, + "name": "config_apply", + "children": null + }, { + "display": "配置流程按钮(报销)", + "type": 512, + "name": "config_expend", + "children": null + }, { + "display": "部署按钮(预算)", + "type": 512, + "name": "econfig_budget", + "children": null + }, { + "display": "部署按钮(申请)", + "type": 512, + "name": "econfig_apply", + "children": null + }, { + "display": "部署按钮(报销)", + "type": 512, + "name": "econfig_expend", + "children": null + } + ] + } + ] + } + ] + } + ] + }, { + "display": "云中心", + "type": 256, + "name": null, + "children": [ + { + "display": "云中心", + "type": 512, + "name": "cloud_center", + "children": null + }, { + "display": "模板中心", + "type": 256, + "name": null, + "children": [ + { + "display": "模板中心", + "type": 512, + "name": "template_center", + "children": null + }, + { + "display": "消息中心", + "type": 512, + "name": "messages_center", + "children": null + },{ + "display": "模板管理页面", + "type": 256, + "name": null, + "children": [ + { + "display": "模板管理页面", + "type": 512, + "name": "/templates_center", + "children": null + }, { + "display": "添加预算单模板按钮", + "type": 512, + "name": "add_budget_template", + "children": null + }, { + "display": "删除预算单模板按钮", + "type": 512, + "name": "delete_budget_template", + "children": null + }, { + "display": "添加申请单模板按钮", + "type": 512, + "name": "add_apply_template", + "children": null + }, { + "display": "删除申请单模板按钮", + "type": 512, + "name": "delete_apply_template", + "children": null + }, { + "display": "添加报销单模板按钮", + "type": 512, + "name": "add_expend_template", + "children": null + }, { + "display": "删除报销单模板按钮", + "type": 512, + "name": "delete_expend_template", + "children": null + }, { + "display": "添加行业按钮", + "type": 512, + "name": "add_bussiness", + "children": null + }, { + "display": "修改行业按钮", + "type": 512, + "name": "edit_bussiness", + "children": null + }, { + "display": "删除行业按钮", + "type": 512, + "name": "delete_bussiness", + "children": null + }, { + "display": "上传模板按钮", + "type": 512, + "name": "template_pass", + "children": null + }, { + "display": "取消模板按钮", + "type": 512, + "name": "template_cancle", + "children": null + }, { + "display": "模版中心编辑按钮", + "type": 512, + "name": "edit_template_center", + "children": null + } + ] + } + ] + } + ] + }, { + "display": "初始化向导页面", + "type": 256, + "name": null, + "children": [ + { + "display": "初始化向导页面", + "type": 512, + "name": "/guide", + "children": null + }, { + "display": "选择行业向导页面", + "type": 512, + "name": "/business", + "children": null + }, { + "display": "设置向导页面", + "type": 512, + "name": "/billing_cfg_guide", + "children": null + } + ] + } +] \ No newline at end of file diff --git a/src/static/js/qxv6.json b/src/static/js/qxv6.json new file mode 100644 index 0000000..6c5501e --- /dev/null +++ b/src/static/js/qxv6.json @@ -0,0 +1,886 @@ +{ + "errorCode": 0, + "errorMessage": null, + "data": { + "value": { + "functionPermissionSet": [ + { + "id": "fc35f602d26d49baa378944295fd20eb", + "display": "报销标准配置页面", + "type": 512, + "children": null, + "name": "/expend_standard" + }, + { + "id": "bba7206938fc47d7966716d50e92e5e1", + "display": "删除按钮(批量)", + "type": 512, + "children": null, + "name": "deletetravel_expense/2" + }, + { + "id": "d53b68242db149619bfd38799d1398a0", + "display": "预算单", + "type": 512, + "children": null, + "name": "budgetorder" + }, + { + "id": "ef755b894ad94036a26e7291e2a88576", + "display": "添加报销单模板按钮", + "type": 512, + "children": null, + "name": "add_expend_template" + }, + { + "id": "16076c79dd5c4914ab2f9dec812aa606", + "display": "删除按钮(批量)", + "type": 512, + "children": null, + "name": "deletetravel_expense/1" + }, + { + "id": "98880329275b427d8c3aec9103b4d49c", + "display": "更改查询内容", + "type": 512, + "children": null, + "name": "termination_budget_search" + }, + { + "id": "5ec8a0480b52484e887370790bc470c6", + "display": "部署按钮(报销)", + "type": 512, + "children": null, + "name": "econfig_expend" + }, + { + "id": "61b5a6702467413fb83d3e229f55663e", + "display": "保存按钮", + "type": 512, + "children": null, + "name": "savebudget_form_customize/20" + }, + { + "id": "0abf17cfa1fe4dcab4eb36d41f03a991", + "display": "更改查询内容", + "type": 512, + "children": null, + "name": "changetravel_expense/1" + }, + { + "id": "17ba494ca4e5489ba35a6144344c053c", + "display": "保存按钮", + "type": 512, + "children": null, + "name": "savebtntravel_expense/3" + }, + { + "id": "b278945e75774868b8dbe93af722ed9b", + "display": "工作流配置", + "type": 512, + "children": null, + "name": "flow" + }, + { + "id": "61861a4b770045cf98d0f112862b8375", + "display": "添加数据按钮", + "type": 512, + "children": null, + "name": "add_standard_data" + }, + { + "id": "b62a012b03ce468fb5d25affa6a90841", + "display": "查询按钮", + "type": 512, + "children": null, + "name": "search_budget" + }, + { + "id": "deaa3bf2a7af4932bcb76aabed3dd156", + "display": "使用空白的报销单", + "type": 512, + "children": null, + "name": "/budget_form_customize/30" + }, + { + "id": "49394d22a5604c09808cfde1c53d3278", + "display": "报销单", + "type": 512, + "children": null, + "name": "expendorder" + }, + { + "id": "901c2485147b449892d02b8d86aa9254", + "display": "差旅费", + "type": 512, + "children": null, + "name": "travel_reimbursement" + }, + { + "id": "a3773827220441b5ad37d0ce1da729e8", + "display": "编辑按钮", + "type": 512, + "children": null, + "name": "edit/budget_froms/10" + }, + { + "id": "a111bf73e2434321a19f58e6bbc86d6b", + "display": "预算单配置页面", + "type": 512, + "children": null, + "name": "/budget_froms/10" + }, + { + "id": "08860fbc63474ae9aabefa06fc5bb04f", + "display": "驳回按钮", + "type": 512, + "children": null, + "name": "backbtntravel_expense/2" + }, + { + "id": "bace39fd26454006b66c4ec36f63abc1", + "display": "启用模板按钮", + "type": 512, + "children": null, + "name": "start/budget_froms/10" + }, + { + "id": "9fe3d515e91d42efbb089eff35ef773a", + "display": "删除预算单模板按钮", + "type": 512, + "children": null, + "name": "delete_budget_template" + }, + { + "id": "803aec36819d4b48954fe9b7bdd3f49f", + "display": "复制按钮", + "type": 512, + "children": null, + "name": "copy_standard" + }, + { + "id": "e9645c5adab3424a8d80429a199dfa84", + "display": "编辑按钮", + "type": 512, + "children": null, + "name": "editbtntravel_expense/3" + }, + { + "id": "b9902dfbbf414520af26ca6701538dc3", + "display": "行业精选申请单", + "type": 512, + "children": null, + "name": "bussiness/budget_froms/20" + }, + { + "id": "ec19f5abd7c84ef39e55258c9a7f0835", + "display": "行业精选预算单", + "type": 512, + "children": null, + "name": "bussiness/budget_froms/10" + }, + { + "id": "77f1d6fb69724e92af4b8566e3a43567", + "display": "配置中心", + "type": 512, + "children": null, + "name": "config_center" + }, + { + "id": "daf9761fe2b4422a9efa5180f5780b77", + "display": "编辑按钮", + "type": 512, + "children": null, + "name": "edit/budget_froms/30" + }, + { + "id": "e1ad41708af84ab5a7ed02b8e2565d74", + "display": "提交按钮", + "type": 512, + "children": null, + "name": "commitbtntravel_expense/1" + }, + { + "id": "01640c88ea844fb19e7b1deac851d46e", + "display": "票据上传按钮(新增报销单)", + "type": 512, + "children": null, + "name": "bill_commit_create" + }, + { + "id": "02f8d6db01c0494d98e4f735abd38a8c", + "display": "待办预算查看页面", + "type": 512, + "children": null, + "name": "termination_budget" + }, + { + "id": "a19f784aa61840f8bc13752b0074b14c", + "display": "预算单流程状态", + "type": 512, + "children": null, + "name": "flowtravel_expense/1" + }, + { + "id": "fc7fef9529c143d5b3618293a1e06b86", + "display": "删除按钮", + "type": 512, + "children": null, + "name": "deletebtntravel_expense/1" + }, + { + "id": "a9cc8e1fdb2c4edab39987edd64c2564", + "display": "待办报销查看页面", + "type": 512, + "children": null, + "name": "termination_expend" + }, + { + "id": "e369d56e449c42b1b18e5cd1999b775c", + "display": "审核按钮", + "type": 512, + "children": null, + "name": "auditbtntravel_expense/3" + }, + { + "id": "d7de97b5f62747c1bf5ebd5f5b64d6b1", + "display": "配置流程按钮(报销)", + "type": 512, + "children": null, + "name": "config_expend" + }, + { + "id": "55a93836c80f435eafb22db2cce059af", + "display": "我创建的报销单", + "type": 512, + "children": null, + "name": "myform/budget_froms/30" + }, + { + "id": "1ff0d7b6250a4dbaa8c14e627764a706", + "display": "审核按钮", + "type": 512, + "children": null, + "name": "auditbtntravel_expense/2" + }, + { + "id": "9dd0aa2d384a4294b987f3b4b3288d7e", + "display": "新建按钮", + "type": 512, + "children": null, + "name": "newtravel_expense/2" + }, + { + "id": "abc94e63ee424f68a33b200548ff0fb9", + "display": "新建按钮", + "type": 512, + "children": null, + "name": "new_standard" + }, + { + "id": "341c159be9a04b5282d32fb13e158af8", + "display": "查询按钮", + "type": 512, + "children": null, + "name": "searchtravel_expense/2" + }, + { + "id": "733c08e950c245ef86d787070681136c", + "display": "申请单配置", + "type": 512, + "children": null, + "name": "apply_template" + }, + { + "id": "6ad47d6585094703980ca6548de799a5", + "display": "新建按钮", + "type": 512, + "children": null, + "name": "newtravel_expense/3" + }, + { + "id": "254783ff053d4e72b8372490ec16674c", + "display": "审核按钮", + "type": 512, + "children": null, + "name": "auditbtntravel_expense/1" + }, + { + "id": "f9b3b0d3864642409d1bedfa63d2deaa", + "display": "编辑按钮", + "type": 512, + "children": null, + "name": "editbtntravel_expense/1" + }, + { + "id": "128beb279a664551ae973324bafcc2c8", + "display": "待办事项页面", + "type": 512, + "children": null, + "name": "travel_expense_todos/" + }, + { + "id": "b9a0328e95134cb293ca041c40fd23b9", + "display": "从该模板创建按钮", + "type": 512, + "children": null, + "name": "create/budget_froms/20" + }, + { + "id": "b8e17dea62fc49db888425b3e218cc00", + "display": "保存按钮", + "type": 512, + "children": null, + "name": "savebtntravel_expense/2" + }, + { + "id": "29a08f01f17e4f92910580485e78e00d", + "display": "行业精选预算单", + "type": 512, + "children": null, + "name": "/budget_froms/*/10" + }, + { + "id": "59e80ea883a1473480c24aa2675de6ee", + "display": "修改行业按钮", + "type": 512, + "children": null, + "name": "edit_bussiness" + }, + { + "id": "5942e51639b2412a9da7862bbede1a32", + "display": "删除按钮(批量)", + "type": 512, + "children": null, + "name": "deletetravel_expense/3" + }, + { + "id": "00ccfdb015504d40b0848637276aed83", + "display": "驳回按钮", + "type": 512, + "children": null, + "name": "backbtntravel_expense/3" + }, + { + "id": "1e0f0c897c794d78969b9765b7ca0e66", + "display": "配置中心", + "type": 512, + "children": null, + "name": "cfg_center/" + }, + { + "id": "dac6504415c94ff3a1cdf8848540583b", + "display": "报销标准", + "type": 512, + "children": null, + "name": "standard" + }, + { + "id": "17a989ebe52247a7bced59e82fd738a5", + "display": "删除行业按钮", + "type": 512, + "children": null, + "name": "delete_bussiness" + }, + { + "id": "4e401f05cf074494949313c1ce193f97", + "display": "驳回按钮", + "type": 512, + "children": null, + "name": "backbtntravel_expense/1" + }, + { + "id": "e95234d66cce49eb9521262101b814ba", + "display": "更改查询内容", + "type": 512, + "children": null, + "name": "changetravel_expense/3" + }, + { + "id": "12652d757ef74510867627e393f0f8a8", + "display": "申请单", + "type": 512, + "children": null, + "name": "applyorder" + }, + { + "id": "5d1d7079b1ac468ca8b5f9f6512fdb24", + "display": "删除申请单模板按钮", + "type": 512, + "children": null, + "name": "delete_apply_template" + }, + { + "id": "cefd6c6cf64b4769b9f72bd4c7d63847", + "display": "新建按钮", + "type": 512, + "children": null, + "name": "newtravel_expense/1" + }, + { + "id": "d5a0a5071903400ea7b1a5032183310f", + "display": "添加行业按钮", + "type": 512, + "children": null, + "name": "add_bussiness" + }, + { + "id": "7c481185fdb24ae782300060527db7ef", + "display": "更改查询内容", + "type": 512, + "children": null, + "name": "changetravel_expense/2" + }, + { + "id": "fa3118ed726d4ed6ae9c1f79b0e7f80c", + "display": "系统设置页面", + "type": 512, + "children": null, + "name": "/system_config" + }, + { + "id": "950f90b092ac410f93472359b0c68daf", + "display": "更改查询内容", + "type": 512, + "children": null, + "name": "termination_apply_search" + }, + { + "id": "8c95d4fdefc3420db7dceb51bd8cd9e9", + "display": "模板管理页面", + "type": 512, + "children": null, + "name": "/templates_center" + }, + { + "id": "ddb36740de124a549391431c5e4c5fde", + "display": "编辑按钮", + "type": 512, + "children": null, + "name": "edit/budget_froms/20" + }, + { + "id": "b116532e60344a86881c908f74e5690d", + "display": "报销单查询列表页面", + "type": 512, + "children": null, + "name": "travel_expense/3" + }, + { + "id": "6e9c460d67714120a5733007e0d4d4e2", + "display": "预算单查询列表页面", + "type": 512, + "children": null, + "name": "travel_expense/1" + }, + { + "id": "09d77e2047104c1fa2c2ffd1c2c233b5", + "display": "云中心", + "type": 512, + "children": null, + "name": "cloud_center" + }, + { + "id": "44c52dd118f146df9e6da293b382e2e1", + "display": "我创建的申请单", + "type": 512, + "children": null, + "name": "myform/budget_froms/20" + }, + { + "id": "5d7995dbbaeb47d09ba58e70ea2d1555", + "display": "删除按钮", + "type": 512, + "children": null, + "name": "deletebtntravel_expense/3" + }, + { + "id": "8a30d1406e644b1db13ce53f3dad41ea", + "display": "更改查询内容", + "type": 512, + "children": null, + "name": "termination_expend_search" + }, + { + "id": "1ec7aed164c3499b809e69a60c2555de", + "display": "我创建的预算单", + "type": 512, + "children": null, + "name": "myform/budget_froms/10" + }, + { + "id": "9df3d3fdfadf45909788bec44cfa6b13", + "display": "报销单配置页面", + "type": 512, + "children": null, + "name": "/budget_froms/30" + }, + { + "id": "4cbbb6e1a70246d1926b16d99a1058f9", + "display": "工作流配置页面", + "type": 512, + "children": null, + "name": "/work_flow" + }, + { + "id": "99556f612564428f81405027780071e4", + "display": "票据上传按钮(报销单详情)", + "type": 512, + "children": null, + "name": "bill_commit_detail" + }, + { + "id": "7e4d3325275540beaa88afe787ed57d3", + "display": "从该模板创建按钮", + "type": 512, + "children": null, + "name": "create/budget_froms/30" + }, + { + "id": "dd42793035d04560b831cda2cc48397d", + "display": "模板中心", + "type": 512, + "children": null, + "name": "template_center" + }, + { + "id": "dd42793035d04560b831cda2cc48397d", + "display": "消息中心", + "type": 512, + "children": null, + "name": "messages_center" + }, + { + "id": "e70056f7b1f1421a97cd0a741b450d49", + "display": "部署按钮(预算)", + "type": 512, + "children": null, + "name": "econfig_budget" + }, + { + "id": "0d95321d5c9f45fea0952ca94c2df181", + "display": "预算单配置", + "type": 512, + "children": null, + "name": "budget_template" + }, + { + "id": "3ab604c40c4c465cac5ad28840eaa139", + "display": "取消模板按钮", + "type": 512, + "children": null, + "name": "template_cancle" + }, + { + "id": "2b32d0ca782a4d8fb5205c4c0ed7e010", + "display": "启用模板按钮", + "type": 512, + "children": null, + "name": "start/budget_froms/30" + }, + { + "id": "628e166c25d04e638d7080a9a3dffe47", + "display": "保存按钮", + "type": 512, + "children": null, + "name": "save/budget_form_customize/30" + }, + { + "id": "d476780268fe43a9925b0cc9950bafb4", + "display": "使用空白的预算单", + "type": 512, + "children": null, + "name": "/budget_form_customize/10" + }, + { + "id": "23ae499578b540e4aff5a98e127ba2d0", + "display": "我的待办", + "type": 512, + "children": null, + "name": "mytodos" + }, + { + "id": "554519b545974daeb43158629aadbd3b", + "display": "票据上传按钮(修改报销单)", + "type": 512, + "children": null, + "name": "bill_commit_update" + }, + { + "id": "317c0cfcf6d3488c8a0bd86f685338b2", + "display": "更改显示内容", + "type": 512, + "children": null, + "name": "showtravel_expense/2" + }, + { + "id": "04b3157fb9a74fdaa271f9433ab0abf4", + "display": "查询按钮", + "type": 512, + "children": null, + "name": "searchtravel_expense/3" + }, + { + "id": "024bd376bbfa4f24b8703a9e447bfe49", + "display": "申请单查询列表页面", + "type": 512, + "children": null, + "name": "travel_expense/2" + }, + { + "id": "dba6ce7bd8b5453ba2729f420e44ae89", + "display": "行业精选申请单", + "type": 512, + "children": null, + "name": "/budget_froms/*/20" + }, + { + "id": "792f1c57ad7a40cf9a9d1e50d3cf8301", + "display": "设置向导页面", + "type": 512, + "children": null, + "name": "/billing_cfg_guide" + }, + { + "id": "a7de64e6a8d8432b81e1bb765250b2ff", + "display": "报销单配置", + "type": 512, + "children": null, + "name": "expend_template" + }, + { + "id": "bdda4f1ed18747f7af2630112a42005e", + "display": "启用模板按钮", + "type": 512, + "children": null, + "name": "start/budget_froms/20" + }, + { + "id": "ce486107d68f4253a8d58dad7a005307", + "display": "申请单流程状态", + "type": 512, + "children": null, + "name": "flowtravel_expense/2" + }, + { + "id": "dc6d91ab518445119cb34d63004ad7dd", + "display": "上传模板按钮", + "type": 512, + "children": null, + "name": "template_pass" + }, + { + "id": "1c81080e5c8747bead8ac649aa498aab", + "display": "行业精选报销单", + "type": 512, + "children": null, + "name": "bussiness/budget_froms/30" + }, + { + "id": "b1eaa959d10c4bd1a9317fba4a6c73ed", + "display": "模版中心编辑按钮", + "type": 512, + "children": null, + "name": "edit/templates_center" + }, + { + "id": "023fcbbcece8445da7a4a4b2bd80ab87", + "display": "提交按钮", + "type": 512, + "children": null, + "name": "commitbtntravel_expense/2" + }, + { + "id": "1f3a93a5239f47689ac352854708281f", + "display": "删除报销单模板按钮", + "type": 512, + "children": null, + "name": "delete_expend_template" + }, + { + "id": "11eb381b4f9246bf9e99f6df535bac45", + "display": "配置流程按钮(预算)", + "type": 512, + "children": null, + "name": "config_budget" + }, + { + "id": "f8d2e9ced808465285089921bc12c450", + "display": "行业精选报销单", + "type": 512, + "children": null, + "name": "/budget_froms/*/30" + }, + { + "id": "2340743735f44a7b8624a8d50b37cd79", + "display": "保存按钮", + "type": 512, + "children": null, + "name": "save/budget_form_customize/10" + }, + { + "id": "9db6f9cae452495490647af40f9aa974", + "display": "初始化向导页面", + "type": 512, + "children": null, + "name": "/guide" + }, + { + "id": "da61f621e24741fcb00893ae640c0474", + "display": "待办申请查看页面", + "type": 512, + "children": null, + "name": "termination_apply" + }, + { + "id": "77d4126bfe7c4ea4bda5e30f135732c1", + "display": "待办事项", + "type": 512, + "children": null, + "name": "termination" + }, + { + "id": "89cad8836a66420ca33084c663ffce38", + "display": "查询按钮", + "type": 512, + "children": null, + "name": "search_expend" + }, + { + "id": "5b0de96272144703aafebd9e62a11be6", + "display": "保存按钮", + "type": 512, + "children": null, + "name": "save_standard" + }, + { + "id": "7032df9bf5c944759620bf9046608056", + "display": "完成按钮", + "type": 512, + "children": null, + "name": "save_system" + }, + { + "id": "ea360a0e9b2a4dcdaf11180305f849b5", + "display": "添加预算单模板按钮", + "type": 512, + "children": null, + "name": "add_budget_template" + }, + { + "id": "3a54860bad2a4893a37360915c3ac425", + "display": "更改显示内容", + "type": 512, + "children": null, + "name": "showtravel_expense/1" + }, + { + "id": "68dd03d33ae04a4ab9ab764f2f6294a5", + "display": "报销单流程状态", + "type": 512, + "children": null, + "name": "flowtravel_expense/3" + }, + { + "id": "db7920170f984e5cbfb05491bc4e9be4", + "display": "删除按钮", + "type": 512, + "children": null, + "name": "deletebtntravel_expense/2" + }, + { + "id": "7ce8c3cdf0db4d30bd4a5c41aa8ba292", + "display": "申请单配置页面", + "type": 512, + "children": null, + "name": "/budget_froms/20" + }, + { + "id": "8b74049898f64632a9060a64806cee7d", + "display": "配置流程按钮(申请)", + "type": 512, + "children": null, + "name": "config_apply" + }, + { + "id": "386d80d1cc824b2baad0ef59ebbf4017", + "display": "编辑按钮", + "type": 512, + "children": null, + "name": "editbtntravel_expense/2" + }, + { + "id": "a577efd4adf4410f854ae01fc16c1c98", + "display": "从该模板创建按钮", + "type": 512, + "children": null, + "name": "create/budget_froms/10" + }, + { + "id": "f0844023f31e42f7b81b469e8120b7b7", + "display": "部署按钮(申请)", + "type": 512, + "children": null, + "name": "econfig_apply" + }, + { + "id": "0e4de7ae295047899235edeaff1720e1", + "display": "系统设置", + "type": 512, + "children": null, + "name": "system" + }, + { + "id": "37325f06a5d642e6af0c717b51c97e65", + "display": "添加申请单模板按钮", + "type": 512, + "children": null, + "name": "add_apply_template" + }, + { + "id": "285f05985da849d9bf1990b908cd07bd", + "display": "查询按钮", + "type": 512, + "children": null, + "name": "search_apply" + }, + { + "id": "849ab88e280c498f9455dc6df3378098", + "display": "提交按钮", + "type": 512, + "children": null, + "name": "commitbtntravel_expense/3" + }, + { + "id": "7dd682b592254890a1f38d56bab4111a", + "display": "删除按钮", + "type": 512, + "children": null, + "name": "delete_standard" + }, + { + "id": "61537c4fb0954588ab672370750342ce", + "display": "选择行业向导页面", + "type": 512, + "children": null, + "name": "/business" + }, + { + "id": "689415556e974f47955df8628a77cb48", + "display": "使用空白的申请单", + "type": 512, + "children": null, + "name": "budget_form_customize/20" + }, + { + "id": "9ee56ae0beb44c2b8a23b286c9a33f3a", + "display": "更改显示内容", + "type": 512, + "children": null, + "name": "showtravel_expense/3" + } + ], + "dataPermissionMap": {} + } + } +} \ No newline at end of file diff --git a/src/static/js/qxv7.json b/src/static/js/qxv7.json new file mode 100644 index 0000000..b638d11 --- /dev/null +++ b/src/static/js/qxv7.json @@ -0,0 +1,71 @@ +{ + "opState": true, + "rows": 32, + "data":[ + { + "eId":1, + "eState":"未读", + "eCouldNumber":"1018500170500015", + "eBillCode":"1018500170500015-001-01", + "eBillKey":"To", + "eBillName":"兰州", + "eViewMsg":"城市间交通费 到达地 兰州 主数据中未定义", + "eDataState":0, + "eLevel":9, + "eInTime":"2017-01-07 12:00", + "eUpTime":"2017-01-07 12:00" + }, + { + "eId":3, + "eState":"已读", + "eCouldNumber":"1018500170500015", + "eBillCode":"1018500170500015-001-01", + "eBillKey":"To", + "eBillName":"兰州", + "eViewMsg":"城市间交通费 到达地 兰州 主数据中未定义", + "eDataState":0, + "eLevel":9, + "eInTime":"2017-01-07 12:00", + "eUpTime":"2017-01-07 12:00" + }, + { + "eId":5, + "eState":"已读", + "eCouldNumber":"1018500170500015", + "eBillCode":"1018500170500015-001-01", + "eBillKey":"To", + "eBillName":"兰州", + "eViewMsg":"城市间交通费 到达地 兰州 主数据中未定义", + "eDataState":0, + "eLevel":9, + "eInTime":"2017-01-07 12:00", + "eUpTime":"2017-01-07 12:00" + }, + { + "eId":7, + "eState":"未读", + "eCouldNumber":"1018500170500015", + "eBillCode":"1018500170500015-001-01", + "eBillKey":"To", + "eBillName":"兰州", + "eViewMsg":"城市间交通费 到达地 兰州 主数据中未定义", + "eDataState":0, + "eLevel":9, + "eInTime":"2017-01-07 12:00", + "eUpTime":"2017-01-07 12:00" + }, + { + "eId":9, + "eState":"未读", + "eCouldNumber":"1018500170500015", + "eBillCode":"1018500170500015-001-01", + "eBillKey":"To", + "eBillName":"兰州", + "eViewMsg":"城市间交通费 到达地 兰州 主数据中未定义", + "eDataState":0, + "eLevel":9, + "eInTime":"2017-01-07 12:00", + "eUpTime":"2017-01-07 12:00" + } + ] +} \ No newline at end of file diff --git a/src/static/js/registry/module.js b/src/static/js/registry/module.js new file mode 100644 index 0000000..c78a2cc --- /dev/null +++ b/src/static/js/registry/module.js @@ -0,0 +1,72 @@ +angular.module('registry_module', []) +.controller('registryCtrl',['http_service','$scope','$location','$rootScope',function(http_service,$scope,$location,$rootScope){ + $scope.tenantnames=[ + {"name":"租户1","code":888}, + {"name":"租户2","code":999} + ] +// $scope.usernames=[ +// {"name":"yonghu1","code":1}, +// {"name":"yonghu2","code":1}, +// {"name":"yonghu3","code":1}, +// {"name":"yonghu4","code":1} +// ] + $scope.adminnames=[ + {"name":"用户1","code":1}, + {"name":"用户2","code":2}, + {"name":"用户3","code":3}, + {"name":"用户4","code":4} + ] + $scope.adminnames2=[ + {"name":"用户5","code":5}, + {"name":"用户6","code":6}, + {"name":"用户7","code":7}, + {"name":"用户8","code":8} + ] + //测试用 +// token:{ +// tenant:"租户id", +// user:"userId" +// } + $("#top").hide(); + $('#registrySection').hide(); + $scope.selectuser = function($index){ + $scope.username = $scope.adminname[$index].code; +// //获得加密用户id +// http_service.post('workflow/userInfo?userId='+$scope.username,{},function(response){ +// var info = response.data.data; +// $("<script>").attr({type:"text/javascript",src:"http://122.114.176.216:8888/workspace/travel-info-min.js?info="+info}).appendTo("head"); +// }) + } + function setCookie(cname,cvalue,exdays){ + var d = new Date(); + d.setTime(d.getTime()+(exdays*24*60*60*1000)); + var expires = "expires="+d.toGMTString(); + document.cookie = cname + "=" + cvalue + "; " + expires; + } + $scope.registry = function(){ + if($scope.username){ + setCookie("token","{tenant:"+$scope.tenantname+",user:"+$scope.username+"}",30); + http_service.post('/guiCfg/create',{},function(response){ + + }) + $location.path('/business'); + $("#top").show(); + }else{ + $scope.tinfo('请选择登录用户') + } + } +// $scope.lessee=function(){ +// } + + $scope.selecttenant =function($index){ + $scope.tenantname = $scope.tenantnames[$index].code; + if($scope.tenantname == 888){ + $scope.adminname = $scope.adminnames; + }else{ + $scope.adminname = $scope.adminnames2; + } + $('#tenant').hide(); + $('#registrySection').show(); + } +}]) + diff --git a/src/static/js/saved_form/module.js b/src/static/js/saved_form/module.js new file mode 100644 index 0000000..1698681 --- /dev/null +++ b/src/static/js/saved_form/module.js @@ -0,0 +1,5364 @@ +angular.module('saved_form_directive', []) + .factory("myServeice", ['http_service', '$timeout', function(http_service, $timeout) { + return { + parentitem: [], + users_selected: [], + type: "", + setpd: function(parentitem, users_selected, type) { + this.parentitem = parentitem; + this.users_selected = users_selected; + this.type = type; + }, + setuser:function(users_selected){ + this.users_selected = users_selected; + }, + getparentitem: function() { + return this.parentitem; + }, + getusers_selected: function() { + return this.users_selected; + }, + gettype: function() { + return this.type; + } + } + }]) + .directive('formItem', ['$rootScope', function($rootScope) { + return { + restrict: 'EACM', + templateUrl: './static/templates/form_item.html', + replace: true, + scope: { + + }, + link: function($scope, element, attrs) { + + } + } + }]) + .directive('date', ['$timeout','$rootScope', function($timeout,$rootScope) { + return { + scope: { + item: "@", + edit:"=", + editflag:"@", + realitem:"=" + }, + link: function(scope, element, attrs) { + var editflag,editflag_class; + if(scope.editflag == 1){ + editflag = true; + editflag_class = "abled_time"; + }else{ + editflag = false; + editflag_class = "disabled_time"; + } + scope.$watch(function(){ + return scope.realitem; + },function(){ + if(scope.realitem.sys_value != undefined){ + if(scope.realitem.render_value != scope.realitem.sys_value){ + scope.realitem["sys_red"] = true; + }else{ + scope.realitem["sys_red"] = false; + } + } + }); + var fp; + $timeout(function(){ + fp = new Flatpickr($(element)[0], { + enableTime: false, + altInput: false, + altFormat: "Y-m-d", + clickOpens:editflag, + altInputClass:editflag_class, + defaultDate: $(element).val(), + onClose:function(){ + $timeout(function(){ + if($rootScope.sort_bytime){ + var time_item = JSON.parse(scope.item); + time_item.render_value = $(element).val(); + $rootScope.sort_bytime(time_item); + } + },1) + } + }); + },1) + $(element).click(function(){ + fp.open(); + fp.setDate($(element).val()); + }) + +// scope.$watch(function() { +// return $(element).val(); +// }, function() { +// if($(element).val() == ""){ +// $(element).flatpickr({ +// // enableTime: true, +// altInput: true, +// altFormat: "Y-m-d", +// enableTime:false, +// clickOpens:editflag, +// altInputClass:editflag_class, +// defaultDate: $(element).val() +// }); +// } +// }); +// $(element).change(function() { +// scope.$parent.$parent.$parent.check_data(scope.edit); +// var time = $(this).val(); +// _.extend(scope.$parent.$parent.item, { "render_value": time }); +// if(scope.item) { +// _.extend(scope.$parent.$parent.$parent._item, { "render_value": time }); +// } +// }); + } + } + + }]) + + .directive('time', ['$timeout','$rootScope', function($timeout,$rootScope) { + return { + scope: { + item: "@", + edit:"=", + realitem:"=" + }, + link: function(scope, element, attrs) { + var editflag,editflag_class; + if(scope.editflag == 1){ + editflag = true; + editflag_class = "abled_time"; + }else{ + editflag = false; + editflag_class = "disabled_time"; + } + scope.$watch(function(){ + return scope.realitem; + },function(){ + if(scope.realitem.sys_value != undefined){ + if(scope.realitem.render_value != scope.realitem.sys_value){ + scope.realitem["sys_red"] = true; + }else{ + scope.realitem["sys_red"] = false; + } + } + }); + var fp; + $timeout(function(){ + fp = new Flatpickr($(element)[0], { + enableTime: true, + altInput: false, + altFormat: "h:i", + clickOpens:editflag, + altInputClass:editflag_class, + defaultDate: $(element).val(), + time_24hr:true, + onClose:function(){ + $timeout(function(){ + if($rootScope.sort_bytime){ + var time_item = JSON.parse(scope.item); + time_item.render_value = $(element).val(); + $rootScope.sort_bytime(time_item); + } + },1) + } + }); + },1) + $(element).click(function(){ + fp.open(); + fp.setDate($(element).val()); + }) + +// scope.$watch(function() { +// return $(element).val(); +// }, function() { +// if($(element).val() == ""){ +// $(element).flatpickr({ +// // enableTime: true, +// altInput: true, +// altFormat: "h:i", +// enableTime:false, +// clickOpens:editflag, +// altInputClass:editflag_class, +// defaultDate: $(element).val() +// }); +// } +// }); +// $(element).change(function() { +// scope.$parent.$parent.$parent.check_data(scope.edit); +// var time = $(this).val(); +// _.extend(scope.$parent.$parent.item, { "render_value": time }); +// if(scope.item) { +// _.extend(scope.$parent.$parent.$parent._item, { "render_value": time }); +// } +// }); + } + } + }]) + + .directive('datetime', ['$timeout','$rootScope', function($timeout,$rootScope) { + return { + scope: { + item: "@", + edit:"=", + editflag:"@", + realitem:"=" + }, + link: function(scope, element, attrs) { + var editflag,editflag_class; + if(scope.editflag == 1){ + editflag = true; + editflag_class = "abled_time"; + }else{ + editflag = false; + editflag_class = "disabled_time"; + } + var fp; + scope.$watch(function(){ + return scope.realitem; + },function(){ + if(scope.realitem.sys_value != undefined){ + if(scope.realitem.render_value != scope.realitem.sys_value){ + scope.realitem["sys_red"] = true; + }else{ + scope.realitem["sys_red"] = false; + } + } + }); + $timeout(function(){ + fp = new Flatpickr($(element)[0], { + enableTime: true, + altInput: false, + altFormat: "Y-m-d h:i", + clickOpens:editflag, + altInputClass:editflag_class, + defaultDate: $(element).val(), + time_24hr:true, + onClose:function(){ + $timeout(function(){ +// _.each($scope.) + if($rootScope.sort_bytime){ + var time_item = JSON.parse(scope.item); + time_item.render_value = $(element).val(); + $rootScope.sort_bytime(time_item); + } + },1) + } + }); + },1) + $(element).click(function(){ + fp.open(); + fp.setDate($(element).val()); + }) +// scope.$watch(function() { +// return $(element).val(); +// }, function() { +// if($(element).val() == ""){ +// $(element).flatpickr({ +// // enableTime: true, +// altInput: true, +// altFormat: "Y-m-d h:i", +// enableTime:false, +// clickOpens:editflag, +// altInputClass:editflag_class, +// defaultDate: $(element).val() +// }); +// } +// }); +// $(element).change(function() { +// scope.$parent.$parent.$parent.check_data(scope.edit); +// var time = $(this).val(); +// _.extend(scope.$parent.$parent.item, { "render_value": time }); +// if(scope.item) { +// _.extend(scope.$parent.$parent.$parent._item, { "render_value": time }); +// } +// }); + } + } + + }]) + + .filter('cityfilter', function() { + return function(value, cityList) { + var flag = false; + for(i in cityList) { + if(value == cityList[i]) { + flag = true; + } + } + return flag; + } + }) + + .filter('citycode', function() { + return function(value) { + + } + }) + + //选择城市的控件 + .directive('selectCity', function() { + return { + restrict: 'ACEM', + templateUrl: './static/templates/city.html', + controller: ['http_service', '$scope', '$timeout', function(http_service, $scope, $timeout) { + //获取城市 + $scope.cityList = []; + http_service.post('base/data/search/city', {}, function(response) { + $scope.provinces = response.data.data; + _.each($scope.form_items, function(item) { + if(item.gcCpnType == 11) { + $scope.$watch(function() { + return item.render_value; + }, function() { + if(item.render_value){ + $scope.ccode = item.render_value.split(","); + } + _.each($scope.ccode, function(code) { + _.each($scope.provinces, function(citycode) { + _.each(citycode.child, function(citylistcode) { + if(citylistcode.code == code) { + $scope.cityList.push(citylistcode.value); + } + }) + }); + }) + + }) + } + }); + }); + $scope.firstcitys = []; + $scope.secondcitys = []; + $scope.thirdcitys = []; + + //存储选中的一级城市 + // if(localStorage.getItem("selectedcity")) { + // $scope.cityList = localStorage.getItem("selectedcity"); + // $scope.cityList = $scope.cityList.split(","); + // } else { + // $scope.cityList = []; + // } + // + // if(localStorage.getItem("selectedcitycode")) { + // $scope.citycode = localStorage.getItem("selectedcitycode"); + // $scope.citycode = $scope.citycode.split(","); + // } else { + // $scope.citycode = []; + // } + + //点击省份响应事件 + $scope.selecthot = function($index) { + $scope.citys = $scope.provinces[$index].child; + + $scope.firstcitys.splice(0, $scope.firstcitys.length); + $scope.secondcitys.splice(0, $scope.secondcitys.length); + $scope.thirdcitys.splice(0, $scope.thirdcitys.length); + for(i in $scope.citys) { + if($scope.citys[i].level == '2') { + $scope.firstcitys.push($scope.citys[i]); + } + if($scope.citys[i].level == '3') { + $scope.secondcitys.push($scope.citys[i]); + } + if($scope.citys[i].level == '4') { + $scope.thirdcitys.push($scope.citys[i]); + } + } + $scope.citys = $scope.firstcitys; + $scope.firstcity = function() { + $scope.citys = $scope.firstcitys; + } + $scope.secondcity = function() { + $scope.citys = $scope.secondcitys; + } + $scope.thirdcity = function() { + $scope.citys = $scope.thirdcitys; + } + } + + $scope.hidecity = function() { + $scope.city = false; + $(".citybtn").text($scope.cityList.join(",") || "请选择城市"); + } + $scope.citybtn = function() { + $scope.city = $scope.edit; + } + $scope.selectcity = function($event, $index) { + if($event.target.checked) { + $scope.cityList.push($scope.citys[$index].value); + $scope.citycode.push($scope.citys[$index].code); + } else { + for(i in $scope.cityList) { + if($scope.citys[$index].value == $scope.cityList[i]) { + $scope.cityList.splice(i, 1); + $scope.citycode.splice(i, 1); + } + } + } + // localStorage.setItem("selectedcity", $scope.cityList + ""); + // localStorage.setItem("selectedcitycode", $scope.citycode); + } + + //删除某个选中城市,改变多选框状态的同时,已选城市列表删除此城市 + $scope.deletecity = function($index) { + for(j in $scope.citys) { + if($scope.citys[j].value == $scope.cityList[$index]) { + $(".citycontent input")[j].checked = false; + } + } + $scope.cityList.splice($index, 1); + $scope.citycode.splice($index, 1); + // localStorage.setItem("selectedcitycode", $scope.citycode); + // localStorage.setItem("selectedcity", $scope.cityList + ""); + } + + //保存输入框中的城市,若存在则加入选中城市 + $scope.saveflag = true; + $scope.savecity = function() { + for(i in $scope.provinces) { + for(j in $scope.provinces[i].child) { + if($scope.provinces[i].child[j].value.indexOf($scope.somecity) >= 0) { + $scope.cityList.push($scope.provinces[i].child[j].value); + $scope.citycode.push($scope.provinces[i].child[j].code); + $scope.saveflag = false; + } + } + } + if($scope.saveflag) { + //alert("抱歉,无此城市"); + // swal({ + // title: "警告", + // text: "抱歉,无此城市!", + // type: "warning", + // confirmButtonText: "确定", + // }) + $scope.$parent.tinfo("抱歉,无此城市!") + + } + } + }] + } + }) + .filter('colorfilter', function() { + return function(value, color) { + switch(value) { + case 10: + color = '#39beb5'; + break; + case 20: + color = '#FFCC00'; + break; + case 30: + color = '#73ff96'; + break; + default: + color = '#ccc'; + break; + } + return color; + } + }) + .filter('statusfilter', function() { + return function(value) { + var slogan = "" + switch(value) { + case 10: + slogan = "./static/img/yes.png"; + break; + case 20: + slogan = "./static/img/no.png"; + break; + case 30: + slogan = "./static/img/yes.png"; + break; + default: + slogan = "./static/img/continue.png"; + break; + + } + return slogan; + } + }) + .filter('borderfilter', function() { + return function(border) { + switch(border) { + case 10: + border = "#999"; + break; + + case 20: + border = "#999"; + break; + + case 30: + border = "#fff"; + break; + + default: + border = "#fff"; + break; + } + return border; + } + }) + .filter('borderfilt', function() { + return function(edit) { + switch(edit) { + case false: + edit = "#ccc"; + break; + + case true: + edit = "#fff"; + break; + + default: + edit = "#fff"; + break; + } + return edit; + } + }) + .filter('stepfilter', function() { + return function(step) { + switch(step) { + case 10: + step = "已处理"; + break; + + case 20: + step = "退回"; + break; + + case 30: + step = "已完成"; + break; + + default: + step = "待处理"; + break; + } + return step; + } + }) + .directive('userSelector', ['$rootScope', 'http_service', '$compile', '$timeout', 'myServeice', function($rootScope, http_service, $compile, $timeout, myServeice) { + return { + restrict: 'EACM', + scope: { + item: '=', + parentitem: '=', + type: '=' + }, + template: '<div class="user_element">' + + '<label>' + + '{{item.gcCpnAlias}}' + + '<text class="manadatory_ifd" ng-if="item.gcInputMust==1">*</text>'+ + '</label>' + + '<span name="user_el_content" gcColName="{{item.gcColName}}" user_selected="{{item.render_value}}" >' + + '<span class="user_name" ng-repeat="user in users_selected" >' + + '{{user.personName}} <a ng-href="javascript:void(0)" ng-click="remove_user(user);"><i class="fa fa-times" aria-hidden="true" style="color:#fff;"></i></a>' + + '</span>' + + ' <a class="btn_user_el_add_user" href="javascript:void(0);" ng-click="select_user($event);" >选择人员</a>' + + '</span>' + + '</div>', + replace: true, + controller: ['$scope', '$element', function($scope, $element) { + $scope.users_selected = []; + $scope.users_selecting = {}; + $scope.journel_budget_list = []; + $scope.departments_selected = []; + + $scope.$watch('parentitem', function() { + var budget_list = $scope.parentitem.budget_list; + var user_ids = _.map(budget_list, function(budget) { + + return budget['userId']; + }) + if(user_ids && user_ids.length) { + http_service.post('personnel/search/personns', { "pdIds": user_ids }, function(res) { + $scope.users_selected = res.data.data; + }); + } + }, true); + $scope.rm_sel_user = function(user) { + $scope.users_selected = _.filter($scope.users_selected, function(_user) { + return _user.personCode !== user.personCode; + }) + $scope.query_journel_budget(); + }; + $scope.select_user = function(e) { + if($rootScope.close_expend_select){ + $rootScope.close_expend_select(); + } + if($rootScope.close_apply_select){ + $rootScope.close_apply_select(); + } + $('div[name="user_selector_popup"]').remove(); + var activeclass = "{true:'hr_name',false:'hr_name_selected'}[user.state]"; + var pop_element = $('<div' + + ' name="user_selector_popup"' + + ' class="user_select_popup col-md-12"' + + 'onMouseOver ="$(this).draggable();event.stopPropagation();"' + + '>' + + '<div class="user_sel_form">' + + '<div class="row btn_cls user_sel_form_close">' + + '<a ng-href="javascript:void(0);"><i class="fa fa-times main_close" aria-hidden="true" ng-click="close();"></i></a>' + + '</div>' + + '<div class="main">' + + '<div class="center_area">' + + '<div class="area_title">' + + '<label>选择人员</label>' + + '<span><input type="text" ng-click="stop_prg($event);" ng-change="get_users()" value="" ng-model="user_filter" /></span>' + + '</div>' + + '<div class="area_body">' + + '<div ng-repeat="(first_letter, users) in users_selecting track by $index">' + + '<label class="label_letter_group">{{first_letter}}</label>' + + '<ul>' + + // '<a class="hr_gp_title" >人员{{$index+1}}</a>' + + '<li ng-repeat="user in users" >' + + '<div>' + + '<a ng-class="' + activeclass + '" ng-href="javascript:void(0);" ng-model="user.personName">{{user.personName}}</a>' + + '<button class="hr_name_addbtn" ng-click="add_user(user);">{{user.state|selected_flag}}</button>' + + '</div>' + + '</li>' + + '</ul>' + + '</div>' + + '</div>' + + '</div>' + + '</div>' + + '<div class="hr_tree left ztree" id="tree" style="overflow:auto;">' + '</div>' + + '<div class="right">' + + '<div class="right_area">' + + '<div class="area_title selected_personnel">' + + '<label>已选人员</label>' + + '<span class="float_right">' + + '<a ng-href="javascript:void(0);" class="clear_selected_users" ng-click="clear_selected_users();" ><i class="fa fa-trash-o" aria-hidden="true"></i></a>' + + '</span>' + + '</div>' + + + '<div class="area_body">' + + '<ul ng-repeat="user in departments_selected">' + + '<div class="gp_title" dep_show="true" ng-click="show_department(event);">' + + '<i class="fa fa-caret-right" style="margin-left:3px" aria-hidden="true"></i>' + + '<a class="hr_gp_title" title="{{user.orgName}}[{{user.user_info.length}}]">{{user.orgName}}[{{user.user_info.length}}]</a>' + '<i class="fa fa-times department_close" ng-click="remove_department(user);" aria-hidden="true"></i>' + + '</div>' + + '<div>' + + '<li ng-repeat="user_info in user.user_info">' + + '<div>' + + '<a class="hr_name" ng-href="javascript:void(0);">{{user_info.personName}}</a>' + + '<button class="hr_name_addbtn" ng-click="remove_user(user_info);">-</button>' + + '</div>' + + '</li>' + + '</div>' + + '</ul>' + + '</div>' + + '</div>' + + '</div>' + + '</div>' + + '</div>'); + $($element).append(pop_element); + $compile(pop_element)($scope); + $scope.init_tree(); + var form_el_div = $($element).closest('div.sub_form_container').children('div').not('[name="journel_budget"]'); + form_el_div.find('input, select').off('change').on('change', function() { + $scope.query_journel_budget(); + }); + e.stopPropagation(); + }; + }], + link: function($scope, element, attrs) { + $scope.user_filter = ""; + $scope.stop_prg = function(event) { + event.stopPropagation(); + }; + + $scope.user_filter_func = function() { + var users_selecting = {}; + _.each($scope.users_selecting_cache, function(users, name) { + var users_filtered = _.filter(users, function(user) { + return user.perOrgCode.indexOf($scope.user_filter) > -1; + }); + if(users_filtered.length > 0) { + users_selecting[name] = users_filtered; + } + }); + $scope.users_selecting = users_selecting; + } + + //搜索人员 + $scope.get_users = function() { + $scope.users_selecting = {}; + if($scope.user_filter !== ""){ + http_service.post('base/data/search/personData',{'personName':$scope.user_filter},function(res){ + + _.each(res.data.data,function(user_data){ + var user_fristname = user_data.perFirstName; + if($scope.users_selected.length > 0 && $scope.users_selected[0].personCode == user_data.personCode){ + user_data['state'] = false; + }else{ + user_data['state'] = true; + } + + $scope.users_selecting[user_fristname] = [user_data]; + }) + }) + } + }; + $scope.clear_selected_users = function() { + $scope.users_selected = []; + $scope.departments_selected = []; + }; + $rootScope.close_user_selector = function(){ + $scope.close(); + } + $scope.close = function() { + $('div[name="user_selector_popup"]').remove(); + myServeice.setpd($scope.parentitem, $scope.users_selected, $scope.type); + // $scope.query_journel_budget(); + }; + $scope.query_journel_budget = function() { + var children = $scope.parentitem.child; + var pd = { + "type": $scope.type, + "journeyInfo": [], + "child": [] + } + _.each(children, function(child) { + pd['journeyInfo'].push({ + "gcElIden": child['gcElIden'], + "gcColName": child['gcColName'], + "gcVal": $(element).closest('div.sub_form').find('*[gccolname="' + child['gcColName'] + '"]').val() + }); + }); + + _.each($scope.users_selected, function(user) { + pd['child'].push({ + "userId": user.pdId + }); + }); + + http_service.post('apply/userMoney', pd, function(res) { + var journel_budget_list = res.data.data; + $timeout(function() { + // $scope.parentitem.budget_list = journel_budget_list; + // $scope.item.budget_list = journel_budget_list; + $scope.item_budget_list = journel_budget_list; + }, 1); + + }); + }; + //公式联动 + function formula_computing(formula,usercode,this_item,parent_item){ + if($rootScope.stepCode == 30 || $rootScope.stepCode == 10){// 已完成/审核中 表单 不计算 + return false; + } + //判断公式应用于哪个表单 +// var travelType = formula.travelType;//获取公对应的表单 +// var account_flag =false;//控制是否计算 +// if(travelType == $scope.type){ +// account_flag = true; +// }else if(travelType == 0){ +// account_flag = true; +// } +// if(account_flag == false){ +// return false; +// } + + //判断此控件是否在子表单中 + var is_child = true; + var child_item; + if(this_item == parent_item){ + is_child = false; + } + //解析公式 + var target_code = formula.child[0]; + var org_code = formula.child[1]; + //判断是否执行此公式 + if(org_code.pMdCode != this_item.gcMeCode){ + return false; + } + var post_data = { + "code":org_code.pMdCode, + "views":[org_code.pMeCode], + "criteria":[{ + "key":"code", + "val":usercode + }] + } + http_service.post("base/data/getVals",post_data,function(res){ + var res_data = res.data.data; + if(res_data != undefined && res_data.length != 0){ + if(is_child){ + _.each($scope.$parent.form_items,function(form){ + if(form.child && form.child.length != 0 && form == parent_item){ + _.each(form.child,function(cd){ + if(cd.gcMeCode == target_code.pMdCode){ + if(formula.child.length <= 2){ + + $rootScope.formula_num_id.push(formula.id)//前端公式计数 + $rootScope.formula_num++; + + cd.render_value = res_data[0][org_code.pMeCode]; + } + if($rootScope.change_apmonut){ + $timeout(function(){ + $rootScope.change_apmonut(cd); + },10) + } + } + }) + } + }) + }else{ + _.each($scope.$parent.form_items,function(form){ + if(form.gcCpnType != 10 && form.gcCpnType != 17 ){ + if(form.gcMeCode == target_code.pMdCode){ +// +// + if(formula.child.length <= 2){ + + $rootScope.formula_num_id.push(formula.id)//前端公式计数 + $rootScope.formula_num++; + + form.render_value = res_data[0][org_code.pMeCode]; + } + if($rootScope.change_apmonut){ + $timeout(function(){ + $rootScope.change_apmonut(form); + },10) + } + } + }else{ + _.each(form.child,function(cd){ + if(cd.gcMeCode == target_code.pMdCode){ +// +// + if(formula.child.length <= 2){ + + $rootScope.formula_num_id.push(formula.id)//前端公式计数 + $rootScope.formula_num++; + + cd.render_value = res_data[0][org_code.pMeCode]; + } + if($rootScope.change_apmonut){ + $timeout(function(){ + $rootScope.change_apmonut(cd); + },10) + } + } + }) + } + }) + } + } + if(res_data != undefined && res_data.length == 0 && org_code.pMeCode != 'code'){ + + $rootScope.formula_num_id.push(formula.id)//前端公式计数 + $rootScope.formula_num++; + + } + },false,function(){ + + $rootScope.formula_num_id.push(formula.id)//前端公式计数 + $rootScope.formula_num++; + + }); + } + $rootScope.formula_computing_user = function(formula,value,this_item,parent_item){ + formula_computing(formula,value,this_item,parent_item); + } + //根据部门code找部门name + function get_orgname(user,cd){ + _.each(cd,function(hr_data){ + if(hr_data.orgCode == user.perOrgCode){ + user['orgName'] = hr_data.orgName; + }else if(hr_data.child && hr_data.child.length > 0){ + get_orgname(user,hr_data.child); + } + }); + } + //人员变更清空申请选择 +// function clear_apply(){ +// _.each($scope.$parent.form_items,function(form){ +// if(form.gcCpnType == 14){//申请选择 +// $rootScope.expend_number_info = null; +// form.render_value = ""; +// $scope.$parent.$parent.$parent.expend_heads = []; +// $scope.$parent.$parent.$parent.expend_selectinfo = []; +// $scope.$parent.$parent.$parent.expend_thshow = false; +// } +// }); +// $scope.$parent.form_items = _.remove($scope.$parent.form_items,function(form){ +// return form.gcCpnType == 10 && form.deleteflag_jour; +// }); +// //添加行程按钮显示 +// $rootScope.show_add_jour(); +// } + //添加已选人员 + $scope.add_user = function(user, event) { + if(!user.state){//若为“-” 则执行删除 + $scope.remove_user(user); + return false; + } + if($scope.users_selected.length == 0){//只能选择一个人员 + if(user.orgName == undefined){ + get_orgname(user,$scope.hr_data_str); + } + var department_filter = _.filter($scope.departments_selected, function(_department) { + return _department.orgName === user.orgName; + }); + if(!!!department_filter.length) { + $scope.departments_selected.push({ + "orgName": user.orgName, + "user_info": [] + }); + } + for(i in $scope.departments_selected) { + if($scope.departments_selected[i].orgName == user.orgName) { + var user_filter = _.filter($scope.departments_selected[i].user_info, function(_user) { + return _user.personCode === user.personCode; + }); + if(!!!user_filter.length) { + $scope.departments_selected[i].user_info.push(user); + } + } + } + var user_filter = _.filter($scope.users_selected, function(_user) { + return _user.personCode === user.personCode; + }); + if(!!!user_filter.length) { + $scope.users_selected.push(user); + } + user.state = false; + $scope.item.render_value = user.personCode; + + //匹配控件 并进行公式计算 + _.each($scope.$parent.formula,function(formula){ +// _.each(formula.child,function(_formula){ +// if(formula.mathFormat != "select"){//排除无效公式 + formula_computing(formula,user.personCode,$scope.item,$scope.parentitem); +// } +// }); + }); + + $scope.close(); + } + $rootScope.change_apmonut($scope.item); + + $rootScope.check_bill_user();//验证报销人信息 + }; + $scope.remove_user = function(user_info) { + if($scope.item == $scope.parentitem && $scope.type == 30){ + $rootScope.clear_apply(); + } + if(user_info.orgName == undefined){ + get_orgname(user_info,$scope.hr_data_str); + } + _.each($scope.users_selecting,function(user){ + user[0].state = true; + }) + for(i in $scope.users_selecting_cache) { + var data = $scope.users_selecting_cache[i]; + for(m in data) { + if(data[m].personCode == user_info.personCode) { + data[m].state = true; + } + } + } + for(i in $scope.departments_selected) { + if(user_info.orgName == $scope.departments_selected[i].orgName) { + for(m in $scope.departments_selected[i].user_info) { + if($scope.departments_selected[i].user_info[m].personCode == user_info.personCode) { + $scope.departments_selected[i].user_info.splice(m, 1); + if($scope.departments_selected[i].user_info.length == 0) { + $scope.departments_selected.splice(i, 1); + } + } + } + } + } + for(i in $scope.users_selected) { + if($scope.users_selected[i].personCode == user_info.personCode) { + $scope.users_selected.splice(i, 1); + } + } + $scope.item.render_value = ""; + $rootScope.check_bill_user();//验证报销人信息 + }; + $scope.remove_department = function(user) { + for(i in $scope.departments_selected) { + if($scope.departments_selected[i] == user) { + $scope.departments_selected.splice(i, 1); + } + } + var arr = []; + for(i in $scope.users_selected) { + if($scope.users_selected[i].orgName != user.orgName) { + arr.push($scope.users_selected[i]); + } + } + $scope.users_selected = arr; + for(i in $scope.users_selecting) { + if($scope.users_selecting[i][0].orgName == user.orgName) { + $scope.users_selecting[i][0].state = true; + } + } + }; + $scope.show_department = function(event) { + var event = window.event || event; + if(event.target.getAttribute("dep_show") == "true") { + event.target.nextSibling.style.display = "none"; + event.target.setAttribute("dep_show", false); + } else { + event.target.nextSibling.style.display = "block"; + event.target.setAttribute("dep_show", true); + } + + } + $scope.show_department = function(event) { + var event = window.event || event; + if(event.target.getAttribute("dep_show") == "true") { + event.target.nextSibling.style.display = "none"; + event.target.setAttribute("dep_show", false); + } else { + event.target.nextSibling.style.display = "block"; + event.target.setAttribute("dep_show", true); + } + + } + $scope.init_tree = function() { + $scope.user_filter = ""; + http_service.post('base/data/search/institutionData', {}, function(res) { + if(res.data.opState){ + $scope.hr_data_str = res.data.data; + var hr_data_str = JSON.stringify(res.data.data).replace(/child/g, 'children').replace(/orgName/g, 'name'); + var hr_data_json = JSON.parse(hr_data_str); + var setting = { + 'callback': { + 'onClick': function(event, treeId, treeNode) { + var orgName = treeNode.name; + var md_id = treeNode.orgCode; + if(md_id) { + http_service.post('base/data/search/personData', { 'perOrgCode': md_id }, function(res) { + var users = res.data.data; + _.each(users, function(user) { + if($scope.users_selected.length > 0 && $scope.users_selected[0].personCode == user.personCode){ + _.extend(user, { 'orgName': orgName, "state": false }); + }else{ + _.extend(user, { 'orgName': orgName, "state": true }); + } + }); + if(users && users.length) { + var grouped_users = _.groupBy(users, function(user) { + // return user.pdFirstName; + return user.perFirstName; + }); + $scope.users_selecting_cache = grouped_users; + } else { + $scope.users_selecting_cache = {} + } + $scope.user_filter_func(); + }); + } + } + } + }; + $.fn.zTree.init($("div.hr_tree"), setting, hr_data_json); + var treeObj = $.fn.zTree.getZTreeObj("tree"); + treeObj.expandAll(true); + }else{ + $scope.$parent.$parent.$parent.$parent.$parent.terro(res.data.errMsg) + } + + }); + + + } + var per_num = 0; +// if($scope.$parent.isbill == "false"){ +// per_num = 1; +// }else{ +// per_num = 0; +// } + $scope.$watch(function(){// 用于保存过去信息 + return $scope.users_selected; + },function(){ + if($scope.users_selected != undefined && $scope.users_selected.length != 0){ + $scope.item['old_users_selected'] = $scope.users_selected; + } + }) + $scope.$watch(function() { return $scope.item.render_value }, function() { + + if($rootScope.stepCode == undefined || ($rootScope.stepCode != 30 && $rootScope.stepCode != 10)){ + if($scope.item.render_value) { + per_num++; + var arr = [$scope.item.render_value] + http_service.post('base/data/search/personData', { "personCode": arr[0] }, function(res) { + $scope.users_selected = res.data.data; + $timeout(function(){//用于检测显示是否完全 + $scope.item['inited'] = true; + },1); + if($scope.users_selected.length != 0){//非空验证 + + myServeice.setpd($scope.parentitem, $scope.users_selected, $scope.type); + http_service.post('base/data/search/institutionData', {}, function(res) { + console.log('5555555555'); + var users = $scope.users_selected; + var orgs = res.data.data[0].child; + var orgName; + _.each(orgs,function(org){ + if(org.orgCode == users[0].perOrgCode){ + orgName = org.orgName; + } + }) + $scope.departments_selected = [{ "orgName": orgName, "user_info": [$scope.users_selected[0]] }]; + _.each(users, function(user) { + if(user.personCode != $scope.users_selected[0].personCode) { + _.extend(user, { 'orgName': orgName, "state": true }); + } else { + _.extend(user, { 'orgName': orgName, "state": false }); + } + + }); + if(users && users.length) { + var grouped_users = _.groupBy(users, function(user) { + // return user.pdFirstName; + return user.perFirstName; + }); + $scope.users_selecting_cache = grouped_users; + } else { + $scope.users_selecting_cache = {} + } + $scope.user_filter_func(); + }); + } + //匹配控件 并进行公式计算 无论请求返回是否为空 都要进行公式计算 + _.each($scope.$parent.formula,function(formula){ + formula_computing(formula,$scope.item.render_value,$scope.item,$scope.parentitem); + }); + }); + // $scope.users_selected = [{ + // "personCode": "1001", + // "perFirstName": "Z", + // "orgName": "总务部", + // "perOrgCode": "001", + // "state": false, + // "personName": "张总" + // }]; + + }else{ + $timeout(function(){//用于检测显示是否完全 + $scope.item['inited'] = true; + },1); + } + }else{ + $timeout(function(){//用于检测显示是否完全 + $scope.item['inited'] = true; + },1); + if($scope.item.old_users_selected != undefined){ + $scope.users_selected = $scope.item.old_users_selected; + } + } + + + }); + // var timer = setInterval(function(){ + // if($scope.item.render_value){ + // var arr = [$scope.item.render_value] + //// http_service.post('personnel/search/personns', { "pdIds": arr }, function(res) { + //// $scope.users_selected = res.data.data; + //// }); + // $scope.users_selected = [{"code": "1001", + // "firstName": "Z", + // "group_name": "总务部", + // "perOrgCode": "001", + // "state": false, + // "value": "张总"}]; + // $scope.departments_selected = [{"group_name":$scope.users_selected[0].group_name,"user_info":[$scope.users_selected[0]]}]; + // http_service.post('base/data/search/personData', {'perOrgCode': $scope.users_selected[0].perOrgCode}, function(res){ + // var users = res.data.data; + // _.each(users, function(user){ + // if(user.code != $scope.users_selected[0].code){ + // _.extend(user, {'group_name': $scope.users_selected[0].group_name,"state":true}); + // }else{ + // _.extend(user, {'group_name': $scope.users_selected[0].group_name,"state":false}); + // } + // + // }); + // if(users && users.length){ + // var grouped_users = _.groupBy(users, function(user){ + //// return user.pdFirstName; + // return user.firstName; + // }); + // $scope.users_selecting_cache = grouped_users; + // }else{ + // $scope.users_selecting_cache = {} + // } + // $scope.user_filter_func(); + // }); + // clearInterval(timer); + // } + // },10); + } + } + }]) + .directive('orgSelector', ['$rootScope', 'http_service', '$compile', '$timeout', 'myServeice', function($rootScope, http_service, $compile, $timeout, myServeice) { + return { + restrict: 'EACM', + scope: { + item: '=', + parentitem: '=', + type: '=' + }, + template: '<div class="user_element">' + + '<label>' + + '{{item.gcCpnAlias}}' + + '</label>' + + '<span name="user_el_content" gcColName="{{item.gcColName}}" org_selected="{{item.render_value}}">' + + '<span class="user_name" ng-repeat="org in org_selected" >' + + '{{org.orgName}} <a ng-href="javascript:void(0)" ng-click="remove_org(org);"><i class="fa fa-times" aria-hidden="true" style="color:#fff;"></i></a>' + + '</span>' + + ' <a class="btn_user_el_add_user" href="javascript:void(0);" ng-click="select_org($event);" >选择组织机构</a>' + + '</span>' + + '</div>', + replace: true, + controller: ['$scope', '$element', function($scope, $element) { + $scope.org_selected = []; + + $scope.select_org = function(e) { + $('div[name="org_select_popup"]').remove(); + var activeclass = "{true:'hr_name',false:'hr_name_selected'}[user.state]"; + var pop_element = $('<div' + + ' name="org_select_popup"' + + ' class="org_select_popup col-md-12"' + + 'onMouseOver ="$(this).draggable();event.stopPropagation();"' + + '>' + + '<div class="org_sel_form">' + + '<div class="row btn_cls org_sel_form_close">' + + '<a ng-href="javascript:void(0);"><i class="fa fa-times main_close" aria-hidden="true" ng-click="close();"></i></a>' + + '</div>' + + '<div class="hr_tree left ztree" style="overflow:auto;">' + '</div>' + + '<div class="right">' + + '<div class="right_area">' + + '<div class="area_title selected_personnel">' + + '<label>已选人员</label>' + + '<span class="float_right">' + + '<a ng-href="javascript:void(0);" class="clear_selected_users" ng-click="clear_org();" ><i class="fa fa-trash-o" aria-hidden="true"></i></a>' + + '</span>' + + '</div>' + + + '<div class="area_body">' + + '<ul>'+ + '<li ng-repeat="org in org_selected">'+ + '<div class="area_content">'+ + '<a class="hr_name" ng-href="javascript:void(0);" href="javascript:void(0);">{{org.orgName}}</a>'+ + '<button class="hr_name_addbtn" ng-click="remove_org(org);">-</button>'+ + '</div>'+ + '</li>'+ + '</ul>'+ + '</div>' + + '</div>' + + '</div>' + + '</div>' + + '</div>'); + $($element).append(pop_element); + $compile(pop_element)($scope); + $scope.init_tree(); + var form_el_div = $($element).closest('div.sub_form_container').children('div').not('[name="journel_budget"]'); + e.stopPropagation(); + }; + }], + link: function($scope, element, attrs) { + $scope.stop_prg = function(event) { + event.stopPropagation(); + }; + + $scope.close = function() { + $('div[name="org_select_popup"]').remove(); + myServeice.setpd($scope.parentitem, $scope.users_selected, $scope.type); + // $scope.query_journel_budget(); + }; + //清除选择 + $scope.clear_org = function(){ + $scope.org_selected = []; + $scope.item.render_value = ""; + } + //选择组织机构 + $scope.add_org = function(orgName, orgCode) { + var org_selecting = { + "orgName":orgName, + "orgCode":orgCode + }; + var push_flag = true; + + _.each($scope.org_selected,function(_org){ + if(_org.orgCode == org_selecting.orgCode){ + push_flag = false; + } + }); + if(push_flag){ + $scope.org_selected.push(org_selecting); + var selected_code = []; + _.each($scope.org_selected,function(_org){ + selected_code.push(_org.orgCode); + }); + $scope.item.render_value = selected_code.join(","); + } + }; + $scope.remove_org = function(org) { + _.remove($scope.org_selected,function(n){ + return n == org; + }); + var selected_code = []; + _.each($scope.org_selected,function(_org){ + selected_code.push(_org.orgCode); + }); + $scope.item.render_value = selected_code.join(","); + }; + function get_org(data,arr){ + _.each(data,function(_data){ + if(_data.orgCode == arr){ + $scope.org_selected.push({ + "orgName":_data.orgName, + "orgCode":_data.orgCode + }) + } + }); + if(data.child){ + get_org(data.child,arr); + } + } + $scope.init_tree = function() { + http_service.post('base/data/search/institutionData', {}, function(res) { + if(res.data.opState){ + console.log(111111111); + var hr_data_str = JSON.stringify(res.data.data).replace(/child/g, 'children').replace(/orgName/g, 'name'); + var hr_data_json = JSON.parse(hr_data_str); +// if($scope.item.render_value && $scope.item.render_value != ""){ +// var org_arr = $scope.item.render_value.split(","); +// _.each(org_arr,function(_arr){ +// _.each(res.data.data,function(data){ +// get_org(data.child,_arr); +// }) +// }) +// } + var setting = { + 'callback': { + 'onClick': function(event, treeId, treeNode) { + var orgName = treeNode.name; + var md_id = treeNode.orgCode; + if(treeNode.level > 0){ + $scope.add_org(orgName,md_id); + } + } + } + }; + console.log('1113'); + $.fn.zTree.init($("div.hr_tree"), setting, hr_data_json); + }else{ + $scope.$parent.$parent.$parent.$parent.$parent.terro(res.data.errMsg) + } + + }); + } + $scope.init_org = function(){ + http_service.post('base/data/search/institutionData', {}, function(res) { + console.log('666666'); + if(res.data.opState){ + if($scope.item.render_value && $scope.item.render_value != ""){ + var org_arr = $scope.item.render_value.split(","); + _.each(org_arr,function(_arr){ + _.each(res.data.data,function(data){ + get_org(data.child,_arr); + }) + }) + } + } + }); + }; + $scope.init_org(); + } + } + }]) + .directive('savedForm', ['$rootScope', 'http_service', '$location', '$compile', 'myServeice', '$timeout','$interval', function($rootScope, http_service, $location, $compile, myServeice, $timeout,$interval) { + return { + restrict: 'EACM', + templateUrl: './static/templates/saved_form.html?v=201801031718', + scope: { + business: '=', + type: '=', + templateid: '=', + action: '=', + isbill: '@', + billid: '=', + edit: '=', + btnflag: "=", + unedit:"=", + isguide:"=" + }, + compile: function() { + return { + pre: function($scope, element, attrs, controller) { + /* + http_service.get('http://apis.map.qq.com/ws/district/v1/list?key=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77', function(res){ + }); + */ + if($rootScope.update_speical != undefined){//系统变量公式监听初始化 + $rootScope.update_speical(); + } + $rootScope.update_speical = undefined; + if($rootScope.update_speical_formula != undefined){//前端公式监听初始化 + $rootScope.update_speical_formula(); + } + $rootScope.update_speical_formula = undefined; + $rootScope.save_form_uid = _.uuid(); + $scope.sys_num_check = 0; + $rootScope.formula_num = 0; + $rootScope.formula_num_id = [];//查询详情时初始化需要进行请求的前端公式 计数变量 + $rootScope.close_lock = false;//初始化关闭状态 + $scope.sysSearchFinsh = undefined; + $rootScope.stepCode = undefined// 初始化流程状态 + $rootScope.version = undefined//初始化版本号 + $rootScope.lock = undefined//锁头初始化 + $scope.maindata_err_sys = []; + myServeice.setpd("", "", ""); + $scope.test = "disabled"; + $scope.cost_err = []; + $rootScope.budget_selected = "";//初始化选择的预算 的单号 + $rootScope.expend_number_info = "";//初始化选择的申请 的单号 + $scope.tap_type = 10;//默认显示子表单选项卡 + //切换选项卡 + $scope.toggle_tap = function(tap_type){ + $scope.tap_type = tap_type; + } + //去除空白 + $scope.form_show = function(item){ + var show_flag = true; + if(item.gcCpnType == 10 && item.gcCpnType != $scope.tap_type){ + show_flag = false; + } + if(item.gcCpnType == 17 && item.gcCpnType != $scope.tap_type){ + show_flag = false; + } + return show_flag; + } + //数据校验 + $scope.check_data = function(edit){ +// if(edit){ +// $scope.$parent.checkdata(); +// } + } + //改变字的颜色 + $scope.changclass = function(item,_item){ + var thisval; + var classname; + _.each(item.money,function(money){ + if(money.jp_cd_code == _item.gcMeCode){ + thisval = money.jp_amount; + if(parseFloat(thisval) > parseFloat(_item.render_value) || _item.render_value == ""){ + classname = "jp_normal"; + }else{ + classname = "jp_active"; + } + } + }) + return classname; + } + //绑定input的value值 + $scope.input_change = function(item,event){ + item['render_value'] = $(event).val(); + } + $scope.enable_templates = function(business, type, guId, action) { + http_service.post('template/cpn/search', { "gcTempId": guId }, function(res) { + var templates = res.data.data; + res.data.data.cache_id = res.data.data.guTempType; + var tempdata = _.extend(res.data.data,{'gcStart':1}) + if(templates) { + http_service.post('form/save', tempdata, function(res) { + if(res.data.opState) { + $rootScope.swalsuccess({ + "text": "模板启用成功!" + }, function() { + $timeout(function() { + $scope.redirect_to_args('budget_froms', type); + }, 1) + }); + } else { + $rootScope.swalerror({ "text": "模板启用失败!" }) + } + }) + } + }); + } + //按公式计算结果 + function count_by_formula(formula,code_arr,child_num){ + var formula_str; + if(child_num != undefined){ + var sum = 0; + var is_count = false; + for(i=0;i<child_num;i++){ + formula_str = formula.mCount; + _.each(code_arr,function(code,j){ + var restr = "{"+(j+1)+"}"; + if(_.isArray(code.value)){ + var val_code = code.value[i]; + if(_.isNumber(val_code)){ + formula_str = formula_str.replace(restr,val_code); + }else{ + if(val_code != 0 && val_code !== "" && val_code != undefined){ + if(val_code.indexOf("-") != -1){ + var datestr = "'"+val_code+"'"; + formula_str = formula_str.replace(restr,datestr); + }else{ + formula_str = formula_str.replace(restr,code.value[i]); + } + }else{ + formula_str = formula_str.replace(restr,code.value[i]); + } + + } + + }else{ + var val_code = code.value; + if(_.isNumber(val_code)){ + formula_str = formula_str.replace(restr,code.value); + }else{ + if(val_code != 0 && val_code !== "" && val_code != undefined){ + if(val_code.indexOf("-") != -1){ + var datestr = "'"+code.value+"'"; + formula_str = formula_str.replace(restr,datestr); + }else{ + formula_str = formula_str.replace(restr,code.value); + } + }else{ + formula_str = formula_str.replace(restr,code.value); + } + } + } + }) + if(formula_str.indexOf("{") != -1){ + sum = NaN; + }else{ + if(formula.mResultFromat){ + var formula_result = eval(formula_str); + var val = formula_result; + var result_str = formula.mResultFromat.replace("{val}","("+formula_result+")"); + if(_.isNaN(eval(result_str)) == false){ + is_count = true; + sum += eval(result_str); + } + }else{ + if(_.isNaN(eval(formula_str)) == false){ + is_count = true; + sum += eval(formula_str); + } + } +// if(formula_str.indexOf("toFixed") != -1){ +// sum += Number(eval(formula_str)); +// }else{ +// sum += eval(formula_str); +// } + } + } + if(is_count){ + if(_.isNumber(sum)){ + return sum; + }else{ + sum = sum.substring(1); + return sum; + } + }else{ + return NaN; + } + + }else{ + formula_str = formula.mCount; + _.each(code_arr,function(code,i){ + var restr = "{"+(i+1)+"}"; + if(code.isDate){ + var datestr = "'"+code.value+"'"; + formula_str = formula_str.replace(restr,datestr); + }else{ + formula_str = formula_str.replace(restr,code.value); + } + + }) + if(formula_str.indexOf("{") != -1){ + return NaN + }else{ + if(formula.mResultFromat){ + var formula_result = eval(formula_str); + var result_str = formula.mResultFromat.replace("{val}","("+formula_result+")"); + return eval(result_str); + }else{ + return eval(formula_str); + } + } + + } + } + //公式计算 + function formula_computing(formula,form_items){ + if($scope.stepCode == 30 || $scope.stepCode == 10){// 已完成/审核中 表单 不计算 + return false; + } + //判断公式应用于哪个表单 +// var travelType = formula.travelType;//获取公对应的表单 +// var account_flag =false;//控制是否计算 +// if(travelType == $scope.type){ +// account_flag = true; +// }else if(travelType == 0){ +// account_flag = true; +// } +// if(account_flag == false){ +// return false; +// } + //解析公式 + var code_arr = []; + var target_code; + _.each(formula.child,function(_formula,i){ + + if(i == 0){//获取被关联控件的主数据code + target_code = _formula['pMdCode']; + }else{ + code_arr.push(_formula); + } + }); + //排除既为结果 又为条件的公式 +// if(item.gcMeCode == target_code){ +// return false; +// } + _.each($scope.form_items,function(item){ + if(item.gcCpnType != 10 && item.gcCpnType != 17){ + if(item.gcMeCode == target_code){ + if(item.gcCpnType == 12){//人员关联公式 不计算 + return false; + } + var child_num,child_num_pay; + var is_normal_child = true;//普通子表单 + var is_select = false; + _.each(code_arr,function(code){ + var is_child = true; + _.each(form_items,function(_item){ + if(code.pMdCode == _item.gcMeCode){ + is_child = false; + if(_item.render_value != undefined && _item.render_value !== ""){ + if(_item.gcCpnType == 7){ + _.extend(code,{"value":Number(_item.render_value)}); + }else if(_item.gcCpnType == 5){ + _.extend(code,{"value":_item.render_value,"isDate":true}); + } + else if((_item.gcCpnType == 6 || _item.gcCpnType == 12) && code_arr.length == 1){ + is_select = true; + } + else{ + _.extend(code,{"value":_item.render_value}); + } + }else{ + if(_item.gcCpnType == 7){ + _.extend(code,{"value":0}); + }else if(_item.gcCpnType == 5){ + _.extend(code,{"value":code.pDefVal,"isDate":true}); + }else if(_item.gcCpnType == 6){ +// is_select = true; + }else{ + _.extend(code,{"value":""}); + } + } + } + }) + if(is_child){ + child_num = 0; + child_num_pay = 0; + var all_sum = []; + var is_Number = false; + _.each(form_items,function(_forms){ + if(_forms.gcCpnType == 10){ + child_num++; + _.each(_forms.child,function(_cd){ + if(_cd.gcMeCode == code.pMdCode){ + if((_cd.gcCpnType == 6 || _cd.gcCpnType == 12) && code_arr.length == 1){ + is_select = true; + } + if(_cd.render_value != undefined && _cd.render_value !== ""){ + if(_cd.gcCpnType == 7){ + is_Number = true; + all_sum.push(Number(_cd.render_value)); + }else{ + all_sum.push(_cd.render_value); + } + }else{ + if(_cd.gcCpnType == 7){ + is_Number = true; + all_sum.push(0); + }else{ + all_sum.push(code.pDefVal); + } + } + } + }); + }else if(_forms.gcCpnType == 17){ + child_num_pay++; + _.each(_forms.child,function(_cd){ + if(_cd.gcMeCode == code.pMdCode){ + is_normal_child = false; + if((_cd.gcCpnType == 6 || _cd.gcCpnType == 12) && code_arr.length == 1){ + is_select = true; + } + if(_cd.render_value != undefined && _cd.render_value !== ""){ + if(_cd.gcCpnType == 7){ + is_Number = true; + all_sum.push(Number(_cd.render_value)); + }else{ + all_sum.push(_cd.render_value); + } + }else{ + if(_cd.gcCpnType == 7){ + is_Number = true; + all_sum.push(0); + }else{ + all_sum.push(code.pDefVal); + } + } + } + }); + } + }); + if(is_Number){ + _.extend(code,{"value":all_sum,"isNumber":true}); + }else{ + _.extend(code,{"value":all_sum}); + } + } + }); + //计算结果 + var goal; + if(is_select == false){ + if(child_num != undefined && child_num_pay != undefined){ + if(is_normal_child){ + goal = count_by_formula(formula,code_arr,child_num); + }else{ + goal = count_by_formula(formula,code_arr,child_num_pay); + } + + }else{ + goal = count_by_formula(formula,code_arr); + } + if(_.isNaN(goal) == false){ + $timeout(function(){ + item.render_value = goal; + $scope.change_apmonut(item); + },1) + } + + } + } + }else{ + _.each(item.child,function(cd){ + if(cd.gcMeCode == target_code){ + if(cd.gcCpnType == 12){//人员关联公式 不计算 + return false; + } + var is_select = false; + _.each(code_arr,function(code){ + var in_child = false; + _.each(item.child,function(_cd){ + if(code.pMdCode == _cd.gcMeCode){ + in_child = true; + if(_cd.render_value != undefined && _cd.render_value !== ""){ + if(_cd.gcCpnType == 7){ + _.extend(code,{"value":Number(_cd.render_value)}); + }else if(_cd.gcCpnType == 5){ + _.extend(code,{"value":_cd.render_value,"isDate":true}); + } + else if((_cd.gcCpnType == 6 || _cd.gcCpnType == 12) && code_arr.length == 1){ + is_select = true; + } + else{ + _.extend(code,{"value":_cd.render_value}); + } + }else{ + if(_cd.gcCpnType == 7){ + _.extend(code,{"value":0}); + }else if(_cd.gcCpnType == 5){ + _.extend(code,{"value":code.pDefVal,"isDate":true}); + }else if((_cd.gcCpnType == 6 || _cd.gcCpnType == 12) && code_arr.length == 1){ + is_select = true; + }else{ + _.extend(code,{"value":""}); + } + } + } + }); + if(in_child == false){ + _.each(form_items,function(_form){ + if(_form.gcMeCode == code.pMdCode){ + if(_form.render_value != undefined && _form.render_value !== ""){ + if(_form.gcCpnType == 7){ + _.extend(code,{"value":Number(_form.render_value)}); + }else if(_form.gcCpnType == 5){ + _.extend(code,{"value":_form.render_value,"isDate":true}); + } + else if((_form.gcCpnType == 6 || _form.gcCpnType == 12) && code_arr.length == 1){ + is_select = true; + } + else{ + _.extend(code,{"value":_form.render_value}); + } + + }else{ + if(_form.gcCpnType == 7){ + _.extend(code,{"value":0}); + }else if(_form.gcCpnType == 5){ + _.extend(code,{"value":code.pDefVal,"isDate":true}); + } + else if((_form.gcCpnType == 6 || _form.gcCpnType == 12) && code_arr.length == 1){ + is_select = true; + } + else{ + _.extend(code,{"value":""}); + } + } + } + }); + } + }); + + //计算结果 + if(is_select == false){ + var goal = count_by_formula(formula,code_arr); + if(_.isNaN(goal) == false){ +// $timeout(function(){ + cd.render_value = goal; + $scope.change_apmonut(cd,item); +// },10) + } + } + } + }) + } + + }) + } + $scope.formula_computing = function(formula,form_items){ + formula_computing(formula,form_items); + } + //子表单按时间排序 + function sort_fun(a,b){ + console.log('-------1111------'); + console.log(a); + console.log(b); + if(a.time_type.length > 10 && b.time_type.length > 10){ + console.log('----------:if'); + return a.time - b.time; + }else if(a.time_type.substring(0,10) == b.time_type.substring(0,10)){ + console.log('--------------:else if'); + var from_code,to_code; + _.each(filed,function(_filed){ + switch(_filed.busCode){ + case "From": + from_code = _filed.mdCode; + break; + case "To": + to_code = _filed.mdCode; + break; + } + }) + var a_from,a_to,b_from,b_to; + _.each(a.jour.child,function(cd){ + console.log('each1'); + console.log('cd.gcMeCode'+cd.gcMeCode); + console.log('from_code'+from_code); + if(cd.gcMeCode == from_code){ + a_from = cd.render_value; + }else if(cd.gcMeCode == to_code){ + a_to = cd.render_value; + } + console.log('a_from'+a_from); + console.log('a_to'+a_to); + }) + _.each(b.jour.child,function(cd){ + console.log('each2'); + console.log('cd.gcMeCode'+cd.gcMeCode); + console.log('from_code'+from_code); + if(cd.gcMeCode == from_code){ + b_from = cd.render_value; + }else if(cd.gcMeCode == to_code){ + b_to = cd.render_value; + } + console.log('b_from'+b_from); + console.log('b_to'+b_to); + }) + if(a_from != "" && a_from != undefined && b_from != "" && b_from != undefined && a_to != "" && a_to != undefined && b_to != "" && b_to != undefined){ + if(a_from == b_to){ + return -1; + }else if(a_to == b_from){ + return 1; + }else{ + return 0; + } + }else{ + return 0; + } + }else{ + console.log('--------------:else'); + return a.time - b.time; + } + } + function sort_bytime(item){ + var formDate,toDate; + _.each(filed,function(_filed){ + switch (_filed.busCode){ + case 'FromDate': + formDate = _filed.mdCode; + break; + case 'ToDate': + toDate = _filed.mdCode; + break; + } + }); + + + + if(item != undefined){ + if(item.gcMeCode != formDate && item.gcMeCode != toDate){ + return false; + } + } + var new_jour = []; + var oder_index = []; + console.log('-------1114------'); + console.log($scope.form_items); + _.each($scope.form_items,function(form,i){ + if(form.gcCpnType == 10){ + var date_flag = true; + _.each(form.child,function(cd){ + var sort_time; + if(cd.gcMeCode == formDate){ + console.log('----------cd.gcMeCode:'+cd.gcMeCode); + console.log('----------formDate:'+formDate); + date_flag = false; + sort_time = $rootScope.getNewDate(cd.render_value); + if(cd.render_value == ''){ + sort_time = undefined; + } + new_jour.push({'jour':_.cloneDeep(form),'time':sort_time,"time_type":cd.render_value}); + oder_index.push(i); + } + }) + if(date_flag){//没有出发日期则找到达日期 + _.each(form.child,function(cd){ + var sort_time; + console.log('cd.render_value:'+cd.render_value); + if(cd.gcMeCode == toDate){ + sort_time = $rootScope.getNewDate(cd.render_value); + console.log('sort_time:'+sort_time); + if(cd.render_value == ''){ + sort_time = undefined; + } + console.log(new_jour); + new_jour.push({'jour':_.cloneDeep(form),'time':sort_time,"time_type":cd.render_value}); + console.log(oder_index); + oder_index.push(i); + } + }); + } + } + }); + new_jour.sort(sort_fun); + console.log('-------1117------'); + console.log(new_jour); + $rootScope.new_jour = new_jour; +// new_jour = _.sortBy(new_jour,function(o){ +// return o.time; +// }) + $timeout(function(){ + + _.each(oder_index,function(index,k){ + $scope.form_items[index] = new_jour[k].jour; + }) + $scope.count_number()//计算子表单序号 + show_other_cost()//其它费用提示(必须在排序后) + },1) + } + $rootScope.sort_bytime = function(item){ + sort_bytime(item); + } + + function sys_formula_data(condition_code,target_ischild,child_item){//递归 从控件上取值 + if(target_ischild){ + _.each($scope.form_items,function(form){ + if(form == child_item){ + _.each(condition_code,function(cond){ + if(cond.joinMathId && cond.systemMathEntity){ + return sys_formula_data(cond.systemMathEntity.child,target_ischild,child_item); + }else{ + _.each(form.child,function(cd){ + if(cd.gcMeCode == cond.mdCode){ + cond['val'] = cd.render_value; + } + }) + } + }); + _.each(condition_code,function(cond){ + if(cond.joinMathId && cond.systemMathEntity){ + return sys_formula_data(cond.systemMathEntity.child,target_ischild,child_item); + }else{ + _.each($scope.form_items,function(_form){ + if(_form.gcMeCode == cond.mdCode){ + cond['val'] = _form.render_value; + } + }) + } + }); + } + }) + }else{ + _.each(condition_code,function(cond){ + if(cond.joinMathId && cond.systemMathEntity){ + return sys_formula_data(cond.systemMathEntity.child,target_ischild,child_item); + }else{ + _.each($scope.form_items,function(_form){ + if(_form.gcMeCode == cond.mdCode){ + cond['val'] = _form.render_value; + } + }) + } + }); + } + return condition_code; + } + function sys_formula_post(condition_code,post_data){//递归获得 请求参数 + _.each(condition_code,function(cond){ + if(cond.joinMathId && cond.systemMathEntity){ + post_data.values.push({ + 'countCpnMath':{"mathId":cond.joinMathId,"values":[]} + }); + return sys_formula_post(cond.systemMathEntity.child,post_data.values[(post_data.values.length - 1)].countCpnMath); + }else{ + if(cond.val != undefined && _.trim(cond.val) != ''){ + post_data.values.push({"mdCode":cond.mdCode,"meVal":cond.val}); + } + } + }) + return post_data; + } + function sys_formula_computing(sys_formula,child_item,isfrist){ + if($scope.stepCode == 30 || $scope.stepCode == 10){// 已完成/审核中 表单 不计算 + return false; + } + if($scope.sysSearchFinsh == undefined && $scope.billid){ + return false; + } + if($scope.sys_begin != undefined){ + $scope.sys_begin++; + if($scope.sys_num_check <= $scope.sys_begin){ + if(isfrist != true && $scope.edit != true){//编辑时 不拦截 + return false; + } + } + } + function sys_formula_check(post_data){//检查请求参数 有无空值 + if(post_data.values.length == 0){ + post_flag = false + } + _.each(post_data.values,function(_data){ + if(_data.countCpnMath){ + return sys_formula_check(_data.countCpnMath); + }else{ + if(_data.meVal == undefined || _.trim(_data) == ''){ + post_flag = false + } + } + }); + } + + + var condition_code = []; + _.each(sys_formula.formula.child,function(_formula){ + condition_code.push(_formula); + }); + var target_ischild = true; + var target_index; + if(child_item){ + if(child_item.num == undefined || child_item.num == ""){ + target_index = 0; + }else{ + target_index = child_item.num - 1; + } + } + _.each($scope.form_items,function(form){ + if(sys_formula.target == form.gcMeCode){ + target_ischild = false; + } + }); + condition_code = sys_formula_data(condition_code,target_ischild,child_item); +// if(target_ischild){ +// _.each($scope.form_items,function(form){ +// if(form == child_item){ +// _.each(condition_code,function(cond){ +// _.each(form.child,function(cd){ +// if(cd.gcMeCode == cond.mdCode){ +// cond['val'] = cd.render_value; +// } +// }) +// }); +// _.each(condition_code,function(cond){ +// _.each($scope.form_items,function(_form){ +// if(_form.gcMeCode == cond.mdCode){ +// cond['val'] = _form.render_value; +// } +// }) +// }); +// } +// }) +// }else{ +// _.each(condition_code,function(cond){ +// _.each($scope.form_items,function(_form){ +// if(_form.gcMeCode == cond.mdCode){ +// cond['val'] = _form.render_value; +// } +// }) +// }); +// } + + var post_data = { + "mathId":sys_formula.mathId, + "values":[] + } + var post_flag = true; +// _.each(condition_code,function(cond){ +// if(cond.val){ +// post_data.values.push({"mdCode":cond.mdCode,"meVal":cond.val}); +// }else{ +// post_flag = false; +// } +// }) + sys_formula_post(condition_code,post_data); + sys_formula_check(post_data); + + var useful_length = 0; + + _.each(sys_formula.formula.child,function(fcd){ + if(fcd.mdCode != undefined){ + _.each($scope.form_items,function(form){ + if(form.gcMeCode == fcd.mdCode){ + useful_length++; + } + }); + if($scope.form_jour && $scope.form_jour.child){ + _.each($scope.form_jour.child,function(jour){ + if(jour.gcMeCode == fcd.mdCode){ + useful_length++; + } + }); + } + if($scope.form_pay && $scope.form_pay.child){ + _.each($scope.form_pay.child,function(pay){ + if(pay.gcMeCode == fcd.mdCode){ + useful_length++; + } + }) + } + }else{ + useful_length++; + } + }) + if(sys_formula.mathId == 38){ +// +// +// + } + + + + if(post_flag && useful_length == post_data.values.length){ + //改变传值参数 开始 + var post_data_real = getquery_pd(); + if(target_ischild){ + _.extend(post_data_real,{"index":target_index,"mathId":sys_formula.mathId}); + }else{ + var has_jour = false; + _.each($scope.form_items,function(form){ + if(form.gcCpnType == 10){ + has_jour = true; + } + }) + if(has_jour == false){ + var empty_jour = _.cloneDeep($scope.form_jour); + _.each(empty_jour.child,function(ej){ + ej.render_value = ""; + }) + post_data_real = getquery_pd(empty_jour); + _.extend(post_data_real,{"mathId":sys_formula.mathId}); + }else{ + _.extend(post_data_real,{"mathId":sys_formula.mathId}); + } + } + //改变传值参数 结束 + + http_service.post("form/constCpn",post_data_real,function(res){ +// if(res.data.data.defErr == undefined){ + if(target_ischild){ + _.each($scope.form_items,function(form){ + if(form == child_item){ + _.each(form.child,function(cd){ + if(cd.gcMeCode == sys_formula.target && res.data.data.data != "NaN"){ + if(res.data.data.data != undefined){ + cd['sys_value'] = res.data.data.data; + }else{ + cd['sys_value'] = ""; + } + if(cd.gcEditFlag != 1){// 只有不可编辑或为空时 才填到控件中去 + cd.render_value = res.data.data.data; + }else if(cd.render_value == undefined || _.trim(cd.render_value) == ""){ + cd.render_value = res.data.data.data; + } + $scope.$watch(function(){ + return cd.render_value; + },function(){ +// + if(cd.sys_value != "" && cd.sys_value != undefined && cd.sys_value != cd.render_value){ + cd['sys_red'] = true; + }else{ + cd['sys_red'] = false; + } + }) + $scope.change_apmonut(cd); + } + }) + } + }) + }else{ + _.each($scope.form_items,function(form){ + if(form.gcMeCode == sys_formula.target && res.data.data.data != "NaN"){ + if(res.data.data.data != undefined){ + form['sys_value'] = res.data.data.data; + }else{ + form['sys_value'] = ""; + } + if(form.gcEditFlag != 1) { // 只有不可编辑或为空时 才填到控件中去 + form.render_value = res.data.data.data; + } else if(form.render_value == undefined || _.trim(form.render_value) == "") { + form.render_value = res.data.data.data; + } + $scope.$watch(function() { + return form.render_value; + }, function() { + if(form.sys_value != "" && form.sys_value != undefined && form.sys_value != form.render_value) { + form['sys_red'] = true; + } else { + form['sys_red'] = false; + } + }) + $scope.change_apmonut(form); + } + }) + } + if(res.data.data.defErr != undefined){ + + $scope.maindata_isright_sys = false; + if($scope.maindata_err_sys == undefined){ + $scope.maindata_err_sys = []; + $scope.maindata_err_sys.push(res.data.data.defErr); + }else{ + $scope.maindata_err_sys.push(res.data.data.defErr); + } + } + if(isfrist){ + $scope.sys_num++; + } + },false,function(){ + if(isfrist){ + $scope.sys_num++; + } + }) + }else{ + if(isfrist){ + $scope.sys_num++; + } + } + } + $rootScope.sys_formula_computing = function(sys_formula,child_item){ + sys_formula_computing(sys_formula,child_item); + } + //绑定控件 计算总金额 + $rootScope.change_apmonut = function(item){ + $scope.change_apmonut(item) + } + $scope.change_apmonut = function(item,child_item){ + eachMoney_check();//费用类型 金额验证 + $scope.bill_data_check();//获取详情数据后 验证 + + + + //匹配控件 并进行公式计算 + _.each($scope.formula,function(formula){ + _.each(formula.child,function(_formula,i){ + if(i > 0){ + if(_formula.pMdCode == item.gcMeCode){ + formula_computing(formula,$scope.form_items); + } + } + + }); + }) + + + + //匹配控件 并进行系统变量公式计算 + _.each($scope.sys_formula,function(sformula){ +// _.each(sformula.formula.child,function(_formula){ + //递归检查 是否进行系统变量公式计算 + function sys_count_flag(sformula){ + _.each(sformula.child,function(_formula){ + if(_formula.joinMathId){ + return sys_count_flag(_formula.systemMathEntity,sys_flag); + }else{ + if(_formula.mdCode == item.gcMeCode){ + sys_flag = true; + } + } + }); + } + var sys_flag = false; + sys_count_flag(sformula.formula); +// +// +// + if(sys_flag){ + if(child_item){ + sys_formula_computing(sformula,child_item); + }else{ + sys_formula_computing(sformula); + } + } + +// }); + }) + //子表单按时间排序 + if(item.gcCpnType != 5){ + sort_bytime(item); + } + show_other_cost()//其它费用提示(必须在排序后) + } +// }) + + //显示费用类型错误信息 + function cost_err_check(){ + $scope.show_cost_err = false; + var cost_err = []; + _.each($scope.form_items,function(form){ + if(form.gcCpnType == 10 && form.eachMoney && form.eachMoney.length > 0){ + cost_err.journame = form.gcCpnAlias + form.num; + _.each(form.eachMoney,function(money){ + if(money.errorMsg.length != 0){ + $scope.show_cost_err = true; + _.each(money.errorMsg,function(msg){ + var normName = []; + _.each(msg.normCode,function(_norm){ + normName.push(_norm.name); + }); + var normStr = normName.join(","); + if(form.num){ + cost_err.push({ + "journame":form.gcCpnAlias + form.num, + "errinfo":"费用类型--"+msg.costTypeName+",报销方式--"+msg.expendWayName+",错误提示--"+normStr+msg.errMsg + }); + }else{ + cost_err.push({ + "journame":form.gcCpnAlias, + "errinfo":"费用类型--"+msg.costTypeName+",报销方式--"+msg.expendWayName+",错误提示--"+normStr+msg.errMsg + }); + } + + }) + } + }) + } + + }) + $scope.cost_err = cost_err; + $scope.$parent.cost_err = cost_err; + } + $rootScope.query_journel_budget = function(formtype,callback,isfirst){ + $scope.query_journel_budget(formtype,callback,isfirst); + } + function getquery_pd(empty_jour){ + var pd; + if($scope.$parent.exCouldNumber){ + pd = { + "orderCode":$scope.$parent.exCouldNumber, + "joumeyInfo": [] + } + }else{ + pd = { + "joumeyInfo": [] + } + } + + var mdtype_arr = []; + _.each($scope.form_items,function(_item){ + if(_item.gcMeCode != undefined){//计算费用表单信息全部传递 + if(_item['bhValue'] != undefined){ + mdtype_arr.push({ + "meCode": _item['gcElIden'], + "mdCode": _item['gcMeCode'], + "meVal": _item['bhValue'] + }); + }else{ + mdtype_arr.push({ + "meCode": _item['gcElIden'], + "mdCode": _item['gcMeCode'], + "meVal": _item['render_value'] ? _item['render_value'] : _item['gcDefVal'] + }); + } + } + }) + if(empty_jour){ + var pdarr = { + "journeyId":"", + "journeyInfo":[] + }; + var beginTime,endTime; + _.each(filed,function(_filed){ + switch(_filed.busCode){ + case "FromDate": + beginTime = _filed.mdCode; + break; + case "ToDate": + endTime = _filed.mdCode; + break; + } + }) + _.each(empty_jour.child, function(child) { + if(child.gcCpnType != 9) { //过滤掉分割线 + if(child['bhValue'] != undefined){ + pdarr.journeyInfo.push({ + "meCode": child['gcElIden'], + "mdCode": child['gcMeCode'], + "meVal": child['bhValue'] + }); + }else{ + pdarr.journeyInfo.push({ + "meCode": child['gcElIden'], + "mdCode": child['gcMeCode'], + "meVal": child['render_value']!=undefined ? child['render_value'] : child['gcDefVal'] + }); + } + + if(child.gcMeCode == beginTime){ + beginTime = child.render_value; + } + if(child.gcMeCode == endTime){ + endTime = child.render_value; + } + } + }); + _.each(mdtype_arr,function(madtype){ + pdarr.journeyInfo.push(madtype); + }) + + if(empty_jour.aj_id){ + pdarr.journeyId = empty_jour.aj_id; + } + if(empty_jour.ej_id){ + pdarr.journeyId = empty_jour.ej_id; + } + if(empty_jour.ej_days != undefined){ + _.extend(pdarr,{'journeyDays':empty_jour.ej_days}); + // pdarr['journeyDays'] = _item.ej_days; + } + if(empty_jour.ej_hours != undefined){ + _.extend(pdarr,{'journeyTime':empty_jour.ej_hours}); + // pdarr['journeyTime'] = _item.ej_hours; + } + if(empty_jour.ej_kms != undefined){ + _.extend(pdarr,{'journeyKM':empty_jour.ej_kms}); + // pdarr['journeyKM'] = _item.ej_kms; + } + // if(_item.span_night != undefined){ + // _.extend(pdarr,{'spanNight':_item.span_night}); + // } + if(endTime!=undefined&&endTime!==""&&beginTime!=undefined&&beginTime!==""){ + var span_night = ($rootScope.getNewDate(endTime) - $rootScope.getNewDate(beginTime))/(24*60*60*1000); + _.extend(pdarr,{'spanNight':span_night}); + } + pd.joumeyInfo.push(pdarr); + }else{ + _.each(_.cloneDeep($scope.form_items),function(_item){ + var pdarr = { + "journeyId":"", + "journeyInfo":[] + }; + if(_item.gcCpnType == 10){ + var beginTime,endTime; + _.each(filed,function(_filed){ + switch(_filed.busCode){ + case "FromDate": + beginTime = _filed.mdCode; + break; + case "ToDate": + endTime = _filed.mdCode; + break; + } + }) + _.each(_item.child, function(child) { + if(child.gcCpnType != 9) { //过滤掉分割线 + if(child['bhValue'] != undefined){ + pdarr.journeyInfo.push({ + "meCode": child['gcElIden'], + "mdCode": child['gcMeCode'], + "meVal": child['bhValue'] + }); + }else{ + pdarr.journeyInfo.push({ + "meCode": child['gcElIden'], + "mdCode": child['gcMeCode'], + "meVal": child['render_value']!=undefined ? child['render_value'] : child['gcDefVal'] + }); + } + if(child.gcMeCode == 'F116'){ + } + if(child.gcMeCode == beginTime){ + beginTime = child.render_value; + }else{ + beginTime = undefined; + } + if(child.gcMeCode == endTime){ + endTime = child.render_value; + }else{ + endTime = undefined; + } + } + }); + _.each(mdtype_arr,function(madtype){ + pdarr.journeyInfo.push(madtype); + }) + + if(_item.aj_id){ + pdarr.journeyId = _item.aj_id; + } + if(_item.ej_id){ + pdarr.journeyId = _item.ej_id; + } + if(_item.ej_days != undefined){ + _.extend(pdarr,{'journeyDays':_item.ej_days}); + // pdarr['journeyDays'] = _item.ej_days; + } + if(_item.ej_hours != undefined){ + _.extend(pdarr,{'journeyTime':_item.ej_hours}); + // pdarr['journeyTime'] = _item.ej_hours; + } + if(_item.ej_kms != undefined){ + _.extend(pdarr,{'journeyKM':_item.ej_kms}); + // pdarr['journeyKM'] = _item.ej_kms; + } + // if(_item.span_night != undefined){ + // _.extend(pdarr,{'spanNight':_item.span_night}); + // } + if(endTime!=undefined&&endTime!==""&&beginTime!=undefined&&beginTime!==""){ + var span_night = ($rootScope.getNewDate(endTime) - $rootScope.getNewDate(beginTime))/(24*60*60*1000); + _.extend(pdarr,{'spanNight':span_night}); + } + pd.joumeyInfo.push(pdarr); + } + }) + } + return pd; + } + $scope.query_journel_budget = function(formtype,callback,isfirst) {//计算费用 + if(isfirst != true){ + $rootScope.formula_num = 0; + $rootScope.formula_num_id = [];//非自动计算 则将前端公式计数清零 + } + $rootScope.isfirst = isfirst; + $scope.$parent.save_btn_flag= false;//计算费用中不可提交、保存 + //参数设置,若用默认值可以省略以下面代 + toastr.options = { + "closeButton": false, //是否显示关闭按钮 + "debug": false, //是否使用debug模式 + "positionClass": "toast-top-center",//弹出窗的位置 + "showDuration": "300",//显示的动画时间 + "hideDuration": "3000",//消失的动画时间 + "timeOut": "500000", //展现时间 + "extendedTimeOut": "1000",//加长展示时间 + "showEasing": "swing",//显示时的动画缓冲方式 + "hideEasing": "linear",//消失时的动画缓冲方式 + "showMethod": "fadeIn",//显示时的动画方式 + "hideMethod": "fadeOut" //消失时的动画方式 + }; + + if(isfirst == false){ + toastr.info('计算费用中'); + } + var moneyUrl; + if(formtype == 20){ + moneyUrl = "apply/userMoney"; + }else if(formtype == 30){ + moneyUrl = "expend/userMoney"; + } + var parentitem = myServeice.getparentitem(); + var users_selected = myServeice.getusers_selected(); + var type = myServeice.gettype(); + var children = parentitem.child; + var pd = getquery_pd(); + + if($scope.billid){ + _.extend(pd,{"billId":$scope.billid}); + } + + http_service.post(moneyUrl, pd, function(res){ + toastr.clear(); + var journel_budget_list = res.data.data; + $rootScope.version = res.data.data.version;//初始化版本号 + if(formtype == 20){//申请单计算费用 + $timeout(function(){ + var child_item = []; + var main_item = []; + _.each($scope.form_items, function(_item){ + if(_item.gcCpnType == 10){ + child_item.push(_item); + }else{ + main_item.push(_item); + } + }); + var allcost = 0; + for(i in journel_budget_list.eachMoney){ + var eachMoney = journel_budget_list.eachMoney[i].money; + if(child_item[i].budget_list&&child_item[i].budget_list.length!=0){ + child_item[i].budget_list[0].child = eachMoney; + }else{ + _.extend(child_item[i],{"budget_list":[{"child":eachMoney}]}); + } + _.each(child_item[i].child,function(cd){ + _.each(eachMoney,function(data){ + if(data.jp_cd_code == cd.gcMeCode){ +// cd.standard_money = data.jp_amount; +// cd['standard_show'] = true; + if(cd.gcEditFlag != 1){ + cd.render_value = data.jp_amount; +// $scope.change_apmonut(cd); + }else if(cd.render_value == undefined || cd.render_value == ""){ + cd.render_value = data.jp_amount; +// $scope.change_apmonut(cd); + } + if(cd.render_value != undefined){ + allcost += parseFloat(cd.render_value); + } + } + }) + }); + } + _.each(child_item,function(cd){ + main_item.push(cd); + }) + $timeout(function(){ + $scope.form_items = main_item; + },1) + //将总金额显示在申请金额里 +// _.each(filed, function(_filed) { +// if(_filed.busCode == "applyMoney") { +// _.each($scope.form_items, function(_form) { +// if(_form.gcMeCode == _filed.mdCode) { +// $timeout(function(){ +// _form.render_value = allcost; +// _form.gcDefVal = allcost; +// },1) +// } +// }) +// } +// }); + }, 1); + }else if(formtype == 30){//报销单计算费用 + var form_list = _.cloneDeep($scope.form_list); + var err_list = []; + if(journel_budget_list.noJoinBill != undefined){ + $scope.unjoin_bill = journel_budget_list.noJoinBill; + if(journel_budget_list.noJoinBill.child.length != 0){ + $scope.unjoin_bill_show = true; + } + _.each(filed,function(_filed){ + if(_filed.busCode == "noJoinBill"){//无票据金额 + _.each($scope.form_items,function(item){ + if(item.gcMeCode == _filed.mdCode){ + if((item.render_value == "" || item.render_value == undefined) && journel_budget_list.noJoinBill.sum != 0){//(item.render_value == "" || parseInt(item.render_value) == 0) + item.render_value = journel_budget_list.noJoinBill.sum; + } + item['expend_standard'] = journel_budget_list.noJoinBill.sum; + item['billMoney'] = journel_budget_list.noJoinBill.sum;//无行程票据 的 票据金额 + item['expend_standard_sp'] = 0; +// item['expend_standard_show'] = true; + $scope.$watch(function(){//实时验证 + return item.render_value; + },function(){ + if(item.render_value != undefined && item.render_value != '' && item.render_value > 0){ + item['is_red'] = true; + }else{ + item['is_red'] = false; + } +// var flag; +// if(item.render_value == "" || parseInt(item.render_value) == 0){ +// flag = true; +// }else{ +// flag = false; +// } +// if(flag && journel_budget_list.noJoinBill.sum <= 0){ +// item['is_red'] = false; +// }else{ +// item['is_red'] = true; +// } + }) + } + }) + } + }) + }else{ + $scope.unjoin_bill_show = false; + } + + var eachmonety_err = []; + var child_item = []; + var bill_type_code; + _.each(cddata,function(_cd){//获取定额包干的code + if(_cd.cdType == 90 && _cd.cdName == "0002"){ + bill_type_code = _cd.cdCode; + } + }) + var main_item = []; + _.each($scope.form_items, function(_item){ + if(_item.gcCpnType == 10){ + child_item.push(_item); + }else{ + main_item.push(_item); + } + }); + var allcost = 0; + _.each(journel_budget_list.eachMoney,function(eachMoney,i){ +// var eachMoney = journel_budget_list.eachMoney[i]; + var eachmonety_err_child = []; + if(child_item[i].budget_list&&child_item[i].budget_list.length!=0){ + child_item[i].budget_list[0].child = eachMoney.money; + }else{ + _.extend(child_item[i],{"budget_list":[{"child":eachMoney.money}]}); + } + var otherMoney = 0; + var otherMoney_bill = 0; + _.each(eachMoney.money,function(data){ + var find_item = false; +// if(child_item[i] == undefined){ +// return false; +// } + _.each(child_item[i].child,function(cd){ + + if(data.jp_cd_code == cd.gcMeCode){ + // 找到了 + eachmonety_err_child.push(data); + if(data.billMoney != undefined){//票据金额 + cd['billMoney'] = data.billMoney; + }else{ + cd['billMoney'] = 0; + } + if(cd.gcEditFlag != 1){ + cd.render_value = data.jp_amount; +// $scope.change_apmonut(cd); + }else if(cd.render_value == undefined || cd.render_value == "" || cd.render_value == 0){ + cd.render_value = data.jp_amount; +// $scope.change_apmonut(cd); + } + cd.expend_standard = data.jp_amount; +// if(bill_type_code == data.expendWay){//暂时不做是否为定额包干判断 +// cd.expend_standard ="标准:" + data.jp_amount; +// }else{ +// cd.expend_standard ="票据:" + data.jp_amount; +// } + cd['expend_standard_show'] = true; + if(cd.render_value != undefined){ + allcost += parseFloat(cd.render_value); + } + find_item = true; + } + }); + // 未找到 + if(!find_item){ + otherMoney += data.jp_amount; + if(data.billMoney != undefined){//其他费用 票据金额 + otherMoney_bill += data.billMoney; + } + } + }); + //计算其他费用 将值显示到其它费用里 + otherMoney += eachMoney.otherMoney;//增加其他费用 + otherMoney_bill += eachMoney.otherMoney;//增加其他费用 票据金额 + _.each(filed, function(_filed) { + if(_filed.busCode == "otherMoneyType") { + if(child_item[i] == undefined){ + return false; + } + _.each(child_item[i].child, function(cd) { + if(cd.gcMeCode == _filed.mdCode) { + cd['billMoney'] = otherMoney_bill; + if((cd.render_value == "" || cd.render_value == undefined) && otherMoney != 0){//(cd.render_value == "" || parseInt(cd.render_value) == 0) + cd.render_value = otherMoney; + } + cd.expend_standard = otherMoney; +// cd['expend_standard_show'] = true; + cd['expend_standard_sp'] = 0; + $scope.$watch(function(){//实时验证 + return cd.render_value; + },function(){ + if(cd.render_value != '' && cd.render_value != undefined && cd.render_value > 0){//if(cd.render_value != otherMoney)修改前 + cd['is_red'] = true; + }else{ + cd['is_red'] = false; + } + }) + } + }) + } + }) + eachmonety_err.push(eachmonety_err_child); + if(child_item[i]){ + child_item[i]['eachMoney'] = eachmonety_err_child; + } + }) + //存储错误信息 + $scope.eachmonety_err = eachmonety_err; + _.each(child_item,function(cd){ + main_item.push(cd); + }) + $timeout(function(){ + $scope.form_items = main_item; + },1) + //将总金额显示在报销金额里 +// _.each(filed, function(_filed) { +// if(_filed.busCode == "expendMoney") { +// _.each($scope.form_items, function(_form) { +// if(_form.gcMeCode == _filed.mdCode) { +// $timeout(function(){ +// if(isfirst){ +// if(_form.render_value == undefined || _form.render_value === ""){ +// _form.render_value = allcost; +// _form.gcDefVal = allcost; +// } +// }else{ +// _form.render_value = allcost; +// _form.gcDefVal = allcost; +// } +// },1) +// } +// }) +// } +// }); + +// 显示费用类型错误信息 + cost_err_check(); + } + + if(isfirst){//详情页 计算费用时才进行主数据验证 + $scope.maindata_isright_query = true;//计算费用 主数据检查状态 true 代表无错误 + $scope.maindata_err_query = [];//计算费用 主数据错误信息 + $scope.maindata_err_sys=[];//系统变量 主数据错误信息 + $scope.maindata_isright_sys= true;//系统变量 主数据错误状态 true 代表无错误 + _.each(journel_budget_list.eachMoney,function(list){//获得主数据错误数据 + _.each(list.money,function(money){ + if(money.defErr != undefined && money.defErr.length != 0){ + $scope.maindata_isright_query = false; + _.each(money.defErr,function(err){ + $scope.maindata_err_query.push(err); + }) + } + }) + }); + } + + //匹配控件 并进行公式计算 + $timeout(function(){ + $scope.formula_num_check = 0; + _.each($scope.formula,function(formula){ + // _.each(formula.child,function(_formula,i){ + // if(i > 0){ + // if(_formula.pMdCode == item.gcMeCode){ + formula_computing(formula,$scope.form_items); + // } + // } + + // }); + _.each(formula.child, function(fcd){ + if(fcd.pMeCode != undefined && fcd.pMeCode != '' && fcd.pMeCode != 'code'){ + _.each($scope.form_items,function(form){ + var break_flag = false; + if(form.gcCpnType != 10 && form.gcCpnType != 17){ + if(form.gcMeCode == fcd.pMdCode){ + $scope.formula_num_check++; + break_flag = true; + return false; + } + }else{ + _.each(form.child,function(cd){ + if(cd.gcMeCode == fcd.pMdCode){ + $scope.formula_num_check++; + break_flag = true; + return false; + } + }); + } + if(break_flag){ + return false; + } + }) + } + }) + }) + if(isfirst){ + $rootScope.update_speical_formula = $scope.$watch(function() { + return $rootScope.formula_num; + }, function() { + + + + + if(_.uniq($rootScope.formula_num_id).length >= $scope.formula_num_check) { + $rootScope.update_speical_formula(); + //匹配控件 并进行系统变量公式计算 + $scope.sys_num = 0; + $scope.sys_num_check = 0; + $scope.sys_begin = 0; + _.each($scope.sys_formula, function(sformula) { + _.each($scope.form_items, function(form) { + if(form.gcCpnType != 10) { + if(form.gcMeCode == sformula.target) { + sys_formula_computing(sformula, undefined, true); + $scope.sys_num_check++; + } + } else { + _.each(form.child, function(cd) { + if(cd.gcMeCode == sformula.target) { + sys_formula_computing(sformula, form, true); + $scope.sys_num_check++; + } + }) + } + }) + }) + var save_form_uid = $rootScope.save_form_uid; + $rootScope.update_speical = $scope.$watch(function(){ + return $scope.sys_num; + },function(){ + + + if(save_form_uid != $rootScope.save_form_uid){ + return false; + } + if($scope.sys_num == $scope.sys_num_check){ + + if($rootScope.isfirst){ + var bill_state_update_flag = true; + var check_data = auto_save(); + if($scope.sys_num_check == 0 && (check_data.child == undefined || check_data.child.length == 0)){ + bill_state_update_flag = false; + } + + + + + if($rootScope.close_lock == true){ + $rootScope.update_speical_formula(); + return false; + } + $scope.$parent.save_btn_flag= true;//自动更新前才可提交、保存 + $rootScope.save_post(auto_save());//报销单详情自动更新 暂时 去除自动更新 + //显示主数据错误信息 + $scope.maindata_err = []; + _.each($scope.maindata_err_query,function(err){ + // $scope.maindata_err.push(err);// 暂时不显示 主数据缺失 + }) + $scope.maindata_err_sys = _.uniqBy($scope.maindata_err_sys,"eViewMsg"); + _.each($scope.maindata_err_sys,function(err){ + // $scope.maindata_err.push(err);// 暂时不显示 主数据缺失 + }) + if($scope.maindata_isright_query && $scope.select_isright && $scope.maindata_isright_sys && $scope.billState == 10 && $scope.exCouldNumber !='' && $scope.exCouldNumber != undefined){//如果报销单为自动审单中,且都不缺失主数据,向后端发送修改订单状态请求 + + + http_service.post("errmsg/update/updateBillStart",{"oCode":$scope.exCouldNumber},function(res){ + + }) + } + } + $timeout(function(){//前端公式并且系统变量公式算完后 再保存表单 李伟民 12-29 + + if(isfirst == false){ + callback($rootScope.version); + } + },100); + $timeout(function(){ + $rootScope.checkdata();//计算完费用且算完公式后 进行规则校验 + },10) + $rootScope.update_speical(); + } + }) + } + }); + }else{ + //匹配控件 并进行系统变量公式计算 + $scope.sys_num = 0; + $scope.sys_num_check = 0; + $scope.sys_begin = 0; + _.each($scope.sys_formula, function(sformula) { + _.each($scope.form_items, function(form) { + if(form.gcCpnType != 10) { + if(form.gcMeCode == sformula.target) { + sys_formula_computing(sformula, undefined, true); + $scope.sys_num_check++; + } + } else { + _.each(form.child, function(cd) { + if(cd.gcMeCode == sformula.target) { + sys_formula_computing(sformula, form, true); + $scope.sys_num_check++; + } + }) + } + }) + }) + $rootScope.update_speical = $scope.$watch(function(){ + return $scope.sys_num; + },function(){ + if($scope.sys_num == $scope.sys_num_check){ + $timeout(function(){//前端公式并且系统变量公式算完后 再保存表单 李伟民 12-29 + + if(isfirst == false){ + callback($rootScope.version); + } + },100); + $timeout(function(){ + $rootScope.checkdata();//计算完费用且算完公式后 进行规则校验 + },10) + $rootScope.update_speical(); + } + }) + } + + +// if(isfirst){ +// $rootScope.save_post(auto_save());//报销单详情自动更新 +// } +// $rootScope.checkdata();//计算完费用且算完公式后 进行规则校验 + },100); + show_other_cost()//其它费用提示 + if(isfirst != true){ + $scope.$parent.save_btn_flag= true;//计算费用后才可提交、保存 + } + }); + }; + //自动更新获取控件数据 + function auto_save(){ + var auto_post_data = {}; + var child_data = []; + var child_data_f = []; + _.each($scope.form_items,function(form){ + if(form.child == undefined || form.child.length == 0){ + if(form.gcColName != "ex_number"){// 自动更新 不传报销单号 + auto_post_data[form.gcColName] = form.render_value; + } + }else if(form.gcCpnType == 10){ + var single_child = {'child':[]}; + _.each(form.child,function(cd){ + single_child[cd.gcColName] = cd.render_value; + }); + if(form.ej_id){ + single_child['ej_id'] = form.ej_id; + } + child_data.push(single_child) + }else if(form.gcCpnType == 17){ + var single_child_f = {'child':[]}; + _.each(form.child,function(cd){ + single_child_f[cd.gcColName] = cd.render_value; + }); + if(form.ef_id){ + single_child_f['ef_id'] = form.ef_id; + } + child_data_f.push(single_child_f) + } + }) + _.extend(auto_post_data,{'child':child_data,'fchild':child_data_f}); + if($scope.expned_id != undefined){ + _.extend(auto_post_data,{'ex_id':$scope.expned_id}); + } + + return auto_post_data; + } + //计算费用后 验证费用 + function eachMoney_check(){ + _.each($scope.form_items,function(form){ + if(form.gcCpnType ==10){ + if(form.eachMoney){ + _.each(form.eachMoney,function(each){ + _.each(form.child,function(cd){ + if(each.jp_cd_code == cd.gcMeCode){ +// cd['nobill_cd'] = true;//默认报红 +// if(each.billMust && each.billMust == 0){//非票据必须的费用类型不进行无票据信息验证 +// cd['nobill_cd'] = false; +// } +// if(each.billMust && each.billMust == 1 && each.jp_amount > 0){//票据必须且金额大于0的费用类型不进行无票据信息验证 +// cd['nobill_cd'] = false; +// } + if(each.jp_amount != cd.render_value){ + cd['is_red'] = true; + }else{ + cd['is_red'] = false; + } + } + }) + }) + } + + } + }); + $scope.have_err(); + } +// $scope.$watch(function(){ +// return $scope.form_items; +// },function(){ +// eachMoney_check(); +// }); + + $scope.check_item = function(item, opt) { + if(opt == undefined){ + return false; + } + if(_.isArray(item.render_value)) { + if(_.indexOf(item.render_value, opt.value) > -1) { + return true; + } + } else { + if(item.render_value === opt.value) { + return true; + } + } + return false; + }; + + $scope.goto_pre_page = function() { + window.history.go(-1); + }; + + $scope.item_column = function(item) { + var item_class = ''; + if(item) { + if(item.gcCpnType == 10 || item.gcCpnType == 12 || item.gcCpnType == 0){ + item_class = 'col-md-12'; + }else{ + switch(item.gcCpnInCol){ + case 2: + item_class = 'col-md-12'; + break; + case 1: + item_class = 'col-md-6 column_cfg'; + break; + case 3: + item_class = 'col-md-3 column_cfg'; + break; + case 4: + item_class = 'col-md-2 column_cfg'; + break; + } + } + } + if(!$scope.form_show(item)){//被隐藏的子表单不占位 + item_class += " null_form"; + } + return item_class; +// if(item.gcCpnInCol == '1' && item.gcCpnType !== 10 && item.gcCpnType !== 12 && item.gcCpnType !== 0) { +// return 'col-md-6 column_cfg'; +// } else { +// return 'col-md-12'; +// } + }; + + $scope.redirect_to_args = function() { + $location.path([].slice.call(arguments).join('/')); + }; + + //计算子表单序号 + $scope.count_number = function(){ + var num = 0;//子表单 + _.each($scope.form_items,function(form){ + if(form.gcCpnType == 10){ + num++; + form['num'] = num; + } + }); + if(num <= 1){ + _.each($scope.form_items,function(form){ + if(form.gcCpnType == 10){ + form['num'] = ""; + } + }); + } + + var num_pay = 0;//支付方式子表单 + _.each($scope.form_items,function(form){ + if(form.gcCpnType == 17){ + num_pay++; + form['num'] = num_pay; + } + }); + if(num_pay <= 1){ + _.each($scope.form_items,function(form){ + if(form.gcCpnType == 17){ + form['num'] = ""; + } + }); + } + } + //其他费用及无票据行程金额提示 + function show_other_cost(){ + var otherMoneyType_code; + var nobill_money_code; + $scope.other_cost = []; + $scope.nobill_money_hint = ''; + _.each(filed,function(_filed){ + if(_filed.busCode == 'otherMoneyType'){ + otherMoneyType_code = _filed.mdCode; + } + if(_filed.busCode == 'noJoinBill'){ + nobill_money_code = _filed.mdCode; + } + }) + _.each($scope.form_items,function(form){ + if(form.gcCpnType == 10){ + _.each(form.child,function(cd){ + if(cd.gcMeCode == otherMoneyType_code){ + if(cd.render_value != undefined && cd.render_value != "" && (cd.render_value > 0 || cd.expend_standard > 0)){ + if(form.num){ + $scope.other_cost.push({"journame":form.gcCpnAlias+form.num,"bill_money":cd.render_value,"expend_money":cd.expend_standard}) + }else{ + $scope.other_cost.push({"journame":form.gcCpnAlias,"bill_money":cd.render_value,"expend_money":cd.expend_standard}) + } + } + } + }) + }else if(form.gcMeCode == nobill_money_code){ + if(form.render_value != undefined && form.render_value != "" && (form.render_value > 0 || form.expend_standard > 0)){ + $scope.nobill_money_hint = {"nobill_money":form.render_value,"expend_money":form.expend_standard} + } + } + }) + } + //加子表单 + var num = 2; + var onceflag = true; + $scope.duplicate_sub_form = function(item) { + if(item.gcCpnType == 10){ + var form_items = []; + for(i in $scope.form_items) { + $scope.form_items[0].num = 1; + if($scope.form_items[i] && item.gcCpnAlias === $scope.form_items[i].gcCpnAlias) { + $scope.number = $scope.form_items[i].num; + $scope.form_items[i].num = num++; + var obj = _.cloneDeep($scope.form_items[i]); + obj.budget_list = []; + var newchild = []; + _.each(obj.child, function(_obj) { + _obj = _.omit(_obj, "render_value"); + if(_obj != undefined) { + newchild.push(_obj); + } + }) + obj.child = newchild; + obj['deleteflag_jour'] = false; + form_items.push(_.cloneDeep($scope.form_jour));//修改后的添加方式 + $scope.form_items[i].num = $scope.number; + $scope.form_items.push(form_items[0]); + break; + } + }; + }else if(item.gcCpnType == 17){ + $scope.form_items.push(_.cloneDeep($scope.form_pay)); + } + + $scope.count_number(); + $scope.$parent.form_data['child'] = $scope.form_items; + cost_err_check()//增加完后重新调用显示费用类型错误信息方法 + show_other_cost()//其它费用提示 + + _.each($scope.formula,function(formula){ + _.each($scope.form_items,function(form){ + if(form.gcCpnType == 12 && formula.child[1].pMdCode == form.gcMeCode){ + $rootScope.formula_computing_user(formula,form.render_value,form,form); + } + }) + }) + + }; + //删除子表单 + $scope.rm_sub_form = function(item) { + var form_items = []; + if(item.billInfos != undefined && item.billInfos.length != 0){//有票据信息时 不可删除子表单 + $rootScope.twarning("不可删除有票据信息的行程"); + return false; + } + _.remove($scope.form_items,function(form){ + return form == item; + }) +// _.each($scope.form_items, function(_item) { +// if(item !== _item) { +// form_items.push(_item); +// } +// }); +// $scope.form_items = form_items; + //若无行程 则显示添加行程按钮 无支付方式 显示添加支付方式 + var jour_num = 0; + var pay_num = 0; + _.each($scope.form_items,function(form){ + if(form.gcCpnType == 10){ + jour_num++; + }else if(form.gcCpnType == 17){ + pay_num++; + } + }) + if(jour_num == 0){ + $scope.add_jour_show = true; + } + if(pay_num == 0){ + $scope.add_pay_show = true; + } + $scope.count_number(); + $scope.$parent.form_data['child'] = $scope.form_items; + //匹配控件 并进行公式计算 + + $scope.$parent.save_btn_flag= false; + + _.each($scope.formula,function(formula){ + _.each(formula.child,function(_formula){ +// if(formula.mathFormat != "select"){//排除下拉框联动的公式 + if($scope.add_jour_show){//无行程时 公式计算 + var new_form = _.cloneDeep($scope.form_items); + new_form.push($scope.form_jour); + formula_computing(formula,new_form); + }else{ + formula_computing(formula,$scope.form_items); + } + +// } + }); + }); + $scope.$parent.save_btn_flag = true; + sort_bytime();//子表单按时间排序 + cost_err_check()//删除完后重新调用显示费用类型错误信息方法 + show_other_cost()//其它费用提示 + }; + //添加行程按钮(支付方式)显示 + $rootScope.show_add_jour = function(){ + var jour_num = 0; + var pay_num = 0; + _.each($scope.form_items,function(form){ + if(form.gcCpnType == 10){ + jour_num++; + }else if(form.gcCpnType == 17){ + pay_num++; + } + }) + if(jour_num == 0){ + $scope.add_jour_show = true; + } + if(pay_num == 0){ + $scope.add_pay_show = true; + } + } + //添加行程按钮 + $scope.add_jour = function(){// + $scope.form_items.push(_.cloneDeep($scope.form_jour)); + $scope.$parent.form_data.child = $scope.form_items; + $scope.add_jour_show = false; + } + //添加支付方式按钮 + $scope.add_pay = function(){//add_pay + $scope.form_items.push(_.cloneDeep($scope.form_pay)); + $scope.$parent.form_data.child = $scope.form_items; + $scope.add_pay_show = false; + } + $scope.math_ceil = function(v) { + if(!v) { + return ''; + } + return Math.ceil(v); + } + //获取分页及查询信息 + function select_info(){ + var search = $("#apply_search").val(); + if(search!=undefined && search !== ""){ + return { + "num_per_page": $scope.page_number, + "page_num": $scope.pages, + "queryName": search + } + }else{ + return { + "num_per_page": $scope.page_number, + "page_num": $scope.pages + } + } + + } + //获取选择预算横向信息 + function get_budget_info(pages,page_num){ + var parameter = select_info(); + + if ($scope.type === 10) { + orgCode = $scope.budgetOrgCode; + } else if ($scope.type === 20) { + orgCode = $scope.appleOrgCode; + } + + if (orgCode) { + parameter.data = orgCode; + parameter.type = $scope.type; + } + http_service.post('budget/pass/budgetInfo',parameter,function(res){ + $rootScope.search_hint(res.data.data,'arrary'); +// $scope.budget_info = res.data.data; +// $scope.rows = res.data.rows; + $scope.rows = res.data.data.length;//前端分页 + if(pages*parseInt(page_num)<= $scope.rows){ + $scope.budget_info = res.data.data.slice((pages-1)*page_num,page_num*pages); + }else{ + $scope.budget_info = res.data.data.slice((pages-1)*page_num); + } + }); + } + //点击查询 + $scope.apply_search_info = function(){ + $scope.pages = 1; + $scope.page_number = "5"; + get_budget_info($scope.pages,$scope.page_number); + } + //按回车键则查询 + $scope.apply_search_info_keydown = function(event){ + if(event.keyCode == 13){ + $scope.apply_search_info(); + } + } + //点击上一页 + $scope.pre_page = function(){ + if($scope.pages > 1){ + $scope.pages = parseInt($scope.pages)-1; +// get_budget_info(); + //前端分页 + get_budget_info($scope.pages,$scope.page_number); + } + } + //点击下一页 + $scope.next_page = function(){ + if($scope.pages < Math.ceil($scope.rows/$scope.page_number)){ + $scope.pages = parseInt($scope.pages)+1; +// get_budget_info(); + //前端分页 + get_budget_info($scope.pages,$scope.page_number); + } + } + //改变一页显示条数 + $scope.change_page_number = function(){ +// get_budget_info(); + //前端分页 + get_budget_info($scope.pages,$scope.page_number); + } + //显示申请单选择预算并获得数据 + // TODO + $scope.show_apply_select = function(edit){ + if($rootScope.close_user_selector){ + $rootScope.close_user_selector(); + } + if(!edit){ + return false; + } + var orgCode = ""; + var gcCpnAlias = ""; + _.each(filed,function(_field){ + if (_field.busCode === "orgCode") { + _.each($scope.form_items,function(_form_items){ + if (_form_items.gcMeCode === _field.mdCode) { + //$('*[gccolname="' + _form_items.gcColName + '"]').val(); + orgCode = $('*[gccolname="' + _form_items.gcColName + '"]').attr("value"); + gcCpnAlias = _form_items.gcCpnAlias; + if ($scope.type === 10) { + $scope.budgetOrgCode = orgCode; + } else if ($scope.type === 20) { + $scope.appleOrgCode = orgCode; + } + } + }) + } + }) + if (!orgCode) { + if (edit) { + $scope.$parent.$parent.tinfo("请先选择"+gcCpnAlias+"!"); + } else { + $scope.$parent.tinfo("请先选择"+gcCpnAlias+"!"); + } + return false; + } + $scope.apply_select_show = true; + $scope.pages = 1; + $scope.page_number = "5"; + //获取表头信息 + http_service.post('form/search/showTables',{},function(res){ + $rootScope.search_hint(res.data.data,'arrary'); + $scope.heads = res.data.data; +// $scope.heads = res.data.data.cpnInfo; + }) + //获取横向信息 前端分页 + get_budget_info($scope.pages,$scope.page_number); + }; + //将选择的数据保存到数组内 + $scope.selected_budget = function(data){ + $scope.thshow = true; + $scope.close_apply_select(); + $rootScope.budget_selected = data.bu_number; + $rootScope['child_money'] = data.child_money; + $scope.selectinfo = []; + $scope.info = {}; + $scope.sumMoney = ""; + $scope.orgName = ""; + var startTime,endTime; + _.each($scope.heads,function(hd){ + _.each(filed,function(_filed){ + if(hd.gcMeCode == _filed.mdCode){ + if(data[hd.gcColName]){ + $scope.info[hd.gcColName] = data[hd.gcColName] + switch(_filed.busCode){ + case "sumMoney"://预算金额 + $scope.sumMoney = "【"+hd.gcCpnAlias+"】 "+data[hd.gcColName]+" "; + $scope.info[hd.gcColName] = $scope.sumMoney; + break; + case "beginCalendar": + startTime = data[hd.gcColName]; + $scope.info[hd.gcColName] = startTime; + break; + case "endCalendar": + endTime = data[hd.gcColName]; + $scope.info[hd.gcColName] = endTime; + break; + case "orgName"://组织机构 + $scope.orgName = data[hd.gcColName]; + $scope.info[hd.gcColName] = $scope.orgName; + break; + } + } + } + }); + }); + if(startTime&&endTime){ + $scope.time = "【预算时间】"+startTime+"~"+endTime; + $rootScope.startTime = startTime; + $rootScope.endTime = endTime; + } + $rootScope.sumMoney_budget = data.bu_money; + $scope.info['bu_number'] = data.bu_number; + $scope.info['bu_money'] = data.bu_money; + $scope.selectinfo.push($scope.info); + } + //关闭申请单选择预算 + $rootScope.close_apply_select = function(){ + $scope.close_apply_select(); + } + $scope.close_apply_select = function(){ + $scope.apply_select_show = false; + } +// 我是分割线---------------------------------------------------------------------- + //人员选择下拉框 + $scope.expend_search = {}; + + _.each(filed,function(_filed){ + if(_filed.busCode == "PersonalName"){ + $scope.expend_search = {"gcMeCode":_filed.mdCode}; + } + }); + //获取申请单分页及查询信息 + function expend_select_info(){ + var search = $(".expend_search").find(".select-container").attr('value'); + if(search==undefined){ + search=""; + } + if(search == ""){ + return { + "num_per_page": $scope.expend_page_number, + "page_num": $scope.expend_pages + } + }else{ + return { + "num_per_page": $scope.expend_page_number, + "page_num": $scope.expend_pages, + "queryName": search + } + } + + } + //申请单选择点击查询 + $scope.expend_search_info = function(){ + $scope.expend_pages = 1; +// $scope.page_number = "5"; + get_expend_info($scope.expend_pages,$scope.expend_page_number); + } + //点击上一页 + $scope.expend_pre_page = function(){ + if($scope.expend_pages > 1){ + $scope.expend_pages = parseInt($scope.expend_pages)-1; +// get_expend_info(); + //前端分页 + get_expend_info($scope.expend_pages,$scope.expend_page_number); + } + } + //点击下一页 + $scope.expend_next_page = function(){ + if($scope.expend_pages < Math.ceil($scope.expend_rows/$scope.expend_page_number)){ + $scope.expend_pages = parseInt($scope.expend_pages)+1; +// get_expend_info(); + //前端分页 + get_expend_info($scope.expend_pages,$scope.expend_page_number); + } + } + //改变一页显示条数 + $scope.expend_change_page_number = function(){ +// get_expend_info(); + //前端分页 + $timeout(function(){ + get_expend_info($scope.expend_pages,$scope.expend_page_number); + },1); + } + //获取选择申请横向信息 + function get_expend_info(pages,page_num){ + var parameter = expend_select_info(); + if ($scope.expendPersonCode) { + parameter.type = $scope.type; + parameter.queryName = $scope.expendPersonCode; + } + http_service.post('apply/pass/applyInfo',parameter,function(res){ + $rootScope.search_hint(res.data.data,'arrary'); +// $scope.expend_info = res.data.data; +// $scope.expend_rows = res.data.rows; + $scope.expend_rows = res.data.data.length;//前端分页 + if(pages*parseInt(page_num)<= $scope.expend_rows){ + $scope.expend_info = res.data.data.slice((pages-1)*page_num,page_num*pages); + }else{ + $scope.expend_info = res.data.data.slice((pages-1)*page_num); + } + }); + } + + //显示报销单选择申请并获得数据 + $scope.show_expend_select = function(edit){ + if($rootScope.close_user_selector){ + $rootScope.close_user_selector(); + } + if(!edit){ + return false; + } + + var personCode = ""; + var gcCpnAlias = ""; + _.each(filed,function(_field){ + if (_field.busCode === "personCode") { + _.each($scope.form_items,function(_form_items){ + if (_form_items.gcMeCode === _field.mdCode) { + personCode = _form_items.render_value; + gcCpnAlias = _form_items.gcCpnAlias; + $scope.expendPersonCode = personCode; + } + }) + } + }) + if (!personCode) { + if (edit) { + $scope.$parent.$parent.tinfo("请先选择"+gcCpnAlias+"!"); + } else { + $scope.$parent.tinfo("请先选择"+gcCpnAlias+"!"); + } + return false; + } + + $scope.expend_select_show = true; + $scope.expend_pages = 1; + $scope.expend_page_number = "5"; + //获取表头信息 + http_service.post('form/search/apply/showTables',{},function(res){ + $rootScope.search_hint(res.data.data,'arrary'); + $scope.expend_heads = res.data.data; +// $scope.heads = res.data.data.cpnInfo; + }) + //获取横向信息 前端分页 + get_expend_info($scope.expend_pages,$scope.expend_page_number); + }; + //关闭报销申请单选择申请 + $rootScope.close_expend_select = function(){ + $scope.close_expend_select(); + } + $scope.close_expend_select = function(){ + $scope.expend_select_show = false; + } + //点击空白关闭 + $(".body").on("click",function(event){ + event.preventDefault(); + if($(".apply_control").has(event.target).length === 0){ + $timeout(function(){ + $scope.expend_select_show = false; + $scope.apply_select_show = false; + },1) + } + }) + //匹配显示 + function expend_reflect_bill(data){ + var post_form_data; + if($scope.billid){ + post_form_data = {"guTempType": 20,"cache_id":20,"tId":$scope.billid}; + }else{ + post_form_data = {"guTempType": 20,"cache_id":20}; + } + http_service.post("form/list",post_form_data,function(res){ + if(!res.data.opState){ + return false; + } + var apply_form = res.data.data; + var expend_arr = []; + var expend_child = []; + var expend_child_arr = { + "child":[] + }; + _.each(apply_form.child,function(_apply){ + var id = _apply['gcColName']; + if(_apply.gcCpnType != 10){ + if(data[id] != undefined){ + expend_arr.push({"gcMeCode":_apply.gcMeCode,"render_value":data[id]}); + } + }else{ + _.each(data.child,function(_dcd){ + expend_child = []; + _.each(_apply.child,function(_acd){ + var cid = _acd['gcColName']; + if(_dcd[cid] != undefined){ + expend_child.push({"gcMeCode":_acd.gcMeCode,"render_value":_dcd[cid]}); + } + }) + expend_child_arr.child.push(expend_child); + }) + } + }) + var FromCode,ToCode; + var new_expend_child_arr = []; + var new_expend_child_arr_yes = []; + _.each(filed,function(_filed){//找到出发地与结束地的主数据定义code + switch(_filed.busCode){ + case "From": + FromCode = _filed.mdCode; + break; + case "To": + ToCode = _filed.mdCode; + break; + } + }); + _.each($scope.form_items,function(form){ + if(form.gcCpnType != 10){//非子表单 + _.each(expend_arr,function(_earr){ + if(form.gcMeCode == _earr.gcMeCode){ + if(form['render_value'] == undefined || form['render_value'] == ""){ + form['render_value'] = _earr.render_value; + _.extend(form,{"deleteflag_jour":true});//添加可删除状态 + } + } + }) + }else{//子表单 +// var Fromland,Toland,Fromland_e,Toland_e; +// _.each(form.child,function(_fcd){ +// if(_fcd.gcMeCode == FromCode){ +// Fromland = _fcd['render_value']; +// }else if(_fcd.gcMeCode == ToCode){ +// Toland = _fcd['render_value']; +// } +// }) +// _.each(expend_child_arr.child,function(_eca){ +// _.each(_eca,function(_ecd){ +// if(_ecd.gcMeCode == FromCode){ +// Fromland_e = _ecd.render_value; +// }else if(_ecd.gcMeCode == ToCode){ +// Toland_e = _ecd.render_value; +// } +// }); +// if(Fromland==Fromland_e&&Toland==Toland_e&&Fromland!=undefined&&Toland!=undefined){ +// _.each(form.child,function(_fcd){ +// _.each(_eca,function(_ecd){ +// if(_fcd.gcMeCode == _ecd.gcMeCode){ +// if(_fcd['render_value'] == undefined || _fcd['render_value'] == ""){ +// $timeout(function(){ +// _fcd['render_value'] = _ecd.render_value; +// },1) +// } +// } +// }); +// }); +// new_expend_child_arr_yes.push(_eca); +// } +//// else{ +//// new_expend_child_arr.push(_eca); +//// } +// }); + } + }); +// function removeByValue(arr, val) { +// for(var i=0; i<arr.length; i++) { +// if(arr[i] == val) { +// arr.splice(i, 1); +// break; +// } +// } +// } +// +// _.each(new_expend_child_arr_yes,function(_new){ +// removeByValue(expend_child_arr.child,_new); +// }); +// new_expend_child_arr = expend_child_arr.child; +// var new_form_child; +// _.each($scope.form_list,function(_list){ +// if(_list.gcCpnType == 10){ +// new_form_child = _.cloneDeep(_list); +// } +// }) +// var new_form_child_arr = []; +// _.each(new_expend_child_arr,function(_eca){ +// _.each(new_form_child.child,function(_newcd){ +// _.each(_eca,function(_ecd){ +// if(_newcd.gcMeCode == _ecd.gcMeCode){ +// _newcd['render_value'] = _ecd.render_value; +// } +// }) +// }) +// new_form_child_arr.push(_.cloneDeep(new_form_child)); +// }); +// var null_form = []; +// _.each($scope.form_items,function(form){ +// if(form.gcCpnType == 10){ +// var isnull = true; +// _.each(form.child,function(fcd){ +// if(fcd['render_value'] != undefined && fcd['render_value'] != ""){ +// isnull = false; +// } +// }) +// if(isnull){ +// null_form.push(form); +// } +// } +// }) +// _.each(null_form,function(nform){ +// removeByValue($scope.form_items,nform); +// }) +// _.each(new_form_child_arr,function(newarr){ +// _.extend(newarr,{"deleteflag_jour":true});//添加可删除状态 +// $scope.form_items.push(newarr); +// }); +// //添加行程按钮 +// var jour_num = 0; +// _.each($scope.form_items, function(form) { +// if(form.gcCpnType == 10) { +// jour_num++; +// } +// }); +// if(jour_num != 0) { +// $scope.add_jour_show = false; +// } else { +// $scope.add_jour_show = true; +// } +// new_form_child_arr = []; + $scope.expend_select_show = false;//关闭窗口 + $scope.count_number(); + }) + } + //清空申请选择 + $rootScope.clear_apply = function(){ + _.each($scope.form_items,function(form){ + if(form.gcCpnType == 14){//申请选择 + $rootScope.expend_number_info = null; + form.render_value = ""; + $scope.expend_heads = []; + $scope.expend_selectinfo = []; + $scope.expend_thshow = false; + }else if(form.gcCpnType != 10){ + form.render_value = ''; + } + }); + _.remove($scope.form_items,function(form){ + return form.gcCpnType == 10 && form.deleteflag_jour; + }); + $scope.count_number(); + //添加行程按钮显示 + $rootScope.show_add_jour(); + } + //点击选择按钮 + $scope.selected_expend = function(data,thisitem){ + $scope.expend_number = data.ap_number; + thisitem['render_value'] = data.ap_number; + $rootScope.expend_number_info = data.ap_number; + $scope.expend_selectinfo = [data]; + $scope.expend_thshow = true; + http_service.post("apply/selectOne",{"apId":data.AP_ID},function(res){ + expend_reflect_bill(res.data.data); + sort_bytime();//子表单按时间排序 + }); + } + }, + post: function($scope, element, attrs) { + function get_user_budget_list(user_detail) { + var bugets_item = []; + _.each(user_detail, function(v) { + bugets_item.push({ + 'userId': v['an_user_id'], + 'child': v['child'] + }); + }); + return bugets_item; + } + + if($scope.templateid) { + http_service.post('template/cpn/search', { + "gcTempId": $scope.templateid + }, function(res) { + complete(res.data); + }); + } else { + var post_form_data; + if($scope.billid){ + post_form_data = { + "guTempType":parseInt($scope.type), + "cache_id":parseInt($scope.type), + "tId":$scope.billid + } + }else{ + post_form_data = { + "guTempType":parseInt($scope.type), + "cache_id":parseInt($scope.type) + } + } + http_service.post('form/list',post_form_data, function(res) { + if(!res.data.opState){ + return false; + } + if($rootScope.close_lock == true){//页面关闭则不做后续操作 + return false; + } + complete(res.data); + classify(); + }); + } + //判断预算分类 + // TODO + function classify() { +// _.each(filed, function(item) { +// if(item.busCode == 'budgetType') { +// $scope.typecode = item.mdCode; +// _.each($scope.form_items, function(info) { +// _.each(filed,function(_filed){ +// switch (_filed.busCode){ +// case "project": +// if(_filed.mdCode == info.gcMeCode){ +// info['typeshow'] = 1; +// } +// break; +//// case "orgCode": +//// if(_filed.mdCode == info.gcMeCode){ +//// info['typeshow'] = 1; +//// } +//// break; +// } +// }) +// if(info.gcMeCode == $scope.typecode) { +// $scope.$watch(function() { +// return info.render_value; +// }, function() { +//// http_service.post('base/data/search',{'code':$scope.typecode},function(res){ +//// var types = res.data.data.child; +//// _.each(types,function(type){ +// +// _.each(cddata,function(data){ +// if(data.cdName == 'orgBudget'){ +// if(info.render_value == data.cdCode){ +// info.select_value = '预算部门'; +// deptbudget(); +// } +// if(!info.render_value){ +// info.render_value = data.cdCode +// info.select_value = '预算部门'; +// deptbudget(); +// } +// }else if(data.cdName == 'projectBudget'){ +// if(info.render_value == data.cdCode){ +// info.select_value = '预算项目'; +// programbudget(); +// } +// } +// }) +// +//// if(info.render_value == '002') { +//// info.select_value = '预算部门'; +//// deptbudget(); +//// } else if(info.render_value == '001') { +//// info.select_value = '预算项目'; +//// programbudget(); +//// }else{ +//// info.render_value = '002'; +//// info.select_value = '预算部门'; +//// deptbudget(); +//// // info.render_value = '001'; +//// // info.select_value = '预算项目'; +//// // programbudget(); +//// } +// $rootScope.select_value = info.render_value; +// }) +//// }) +//// +//// }) +// } +// }) +// } +// }) + } + //判断是否进行报销人验证 + function is_check_bill_user(name,callback){ + var post_data; + var moneyTypeValiPersion,moneyTypeName; + _.each(filed,function(_filed){ + switch(_filed.busCode){ + case "moneyTypeValiPersion": + moneyTypeValiPersion = _filed; + break; + case "moneyTypeName": + moneyTypeName = _filed; + break; + } + }) + post_data = { + "code":moneyTypeValiPersion.mdCode, + "criteria":[{ + "key":moneyTypeName.elIden, + "val":name + }], + "views":[moneyTypeValiPersion.elIden] + }; + http_service.post("base/data/getVals",post_data,function(res){ + var data = res.data.data[0]; + if(data != undefined && data[moneyTypeValiPersion.elIden] != undefined && data[moneyTypeValiPersion.elIden] !== ""){ + callback(true); + }else{ + callback(false); + } + }) + } + //提取表单错误数据 + $rootScope.get_all_err_data = function(){ + return $scope.get_all_err_data(); + } + $scope.get_all_err_data = function(){ + var all_err_data = {'form_err_data':[]}; +// all_err_data.form_err_data = _.cloneDeep($scope.form_items); + _.each($scope.form_items,function(form){// 获取标签上红字 + if(form.gcCpnType != 10 && form.gcCpnType != 17){ + var new_form; + var expend_standard = form.expend_standard; + var expend_standard_sp = form.expend_standard_sp; + var billMoney = form.billMoney; + var bhName = form.bhName; + var bbName = form.bbName; + var sys_value = form.sys_value; + var standard_money = form.standard_money; + var is_red = form.is_red; + var nobill_cd = form.nobill_cd; + var sys_red = form.sys_red; + var gcShowFlag = form.gcShowFlag;//用以单据固化后隐藏控件 + new_form = {'gcMeCode':form.gcMeCode}; + //保存校验规则 +// var rule_err = $('i[gcname="' + form.gcColName + '"]'); +// if(rule_err.length != 0){ +// _.extend(new_form,{'rule_err':rule_err.html()}); +// } + //保存校验规则 end + //保存老数据 + _.extend(new_form,{'render_value':form.render_value,'gcColName':form.gcColName}); + if(form.gcCpnType == 12){ + _.extend(new_form,{'old_users_selected':form.old_users_selected}) + }else if(form.gcCpnType == 6){ + _.extend(new_form,{'select_value':form.select_value}); + } + //保存老数据 end + + if(expend_standard != undefined){ + _.extend(new_form,{'expend_standard':expend_standard}); + } + if(expend_standard_sp != undefined){ + _.extend(new_form,{'expend_standard_sp':expend_standard_sp}); + } + if(billMoney != undefined){ + _.extend(new_form,{'billMoney':billMoney}); + } + if(bhName != undefined){ + _.extend(new_form,{'bhName':bhName}); + } + if(bbName != undefined){ + _.extend(new_form,{'bbName':bbName}); + } + if(sys_value != undefined){ + _.extend(new_form,{'sys_value':sys_value}); + } + if(standard_money != undefined){ + _.extend(new_form,{'standard_money':standard_money}); + } + if(is_red != undefined){ + _.extend(new_form,{'is_red':is_red}); + } + if(nobill_cd != undefined){ + _.extend(fonew_formrm,{'nobill_cd':nobill_cd}); + } + if(sys_red != undefined){ + _.extend(new_form,{'sys_red':sys_red}); + } + if(gcShowFlag != undefined){//用以单据固化后隐藏控件 + _.extend(new_form,{'gcShowFlag':gcShowFlag}); + } + all_err_data.form_err_data.push(new_form); + }else{ + var new_form; + var is_nobill = form.is_nobill; + var bill_user_err = form.bill_user_err; + if(form.num == undefined){ + new_form = {'num':'','child':[],'gcCpnType':form.gcCpnType}; + }else{ + new_form = {'num':form.num,'child':[],'gcCpnType':form.gcCpnType}; + } + if(is_nobill != undefined){ + _.extend(new_form,{'is_nobill':is_nobill,'nobill_red':true}); + } + if(bill_user_err != undefined && bill_user_err != ""){ + _.extend(new_form,{'bill_user_err':bill_user_err,'nobill_red':true}); + } + _.each(form.child,function(cd){ + var new_cd; + var expend_standard = cd.expend_standard; + var expend_standard_sp = cd.expend_standard_sp; + var billMoney = cd.billMoney; + var bhName = cd.bhName; + var bbName = cd.bbName; + var sys_value = cd.sys_value; + var standard_money = cd.standard_money; + var is_red = cd.is_red; + var nobill_cd = cd.nobill_cd; + var sys_red = cd.sys_red; + var gcShowFlag = cd.gcShowFlag//用以单据固化后隐藏控件 + new_cd = {'gcMeCode':cd.gcMeCode}; + //保存校验规则 +// if(form.num == undefined){ +// var rule_err = $('i[gcname="' + cd.gcColName + '"][gcnum="0"]'); +// }else{ +// var rule_err = $('i[gcname="' + cd.gcColName + '"][gcnum="' + (form.num - 1) + '"]'); +// } +// if(rule_err.length != 0){ +// _.extend(new_cd,{'rule_err':rule_err.html()}); +// } + //保存校验规则 end + //保存老数据 + _.extend(new_cd,{'render_value':cd.render_value,'gcColName':cd.gcColName}); + if(cd.gcCpnType == 12){ + _.extend(new_cd,{'old_users_selected':cd.old_users_selected}) + }else if(cd.gcCpnType == 6){ + _.extend(new_cd,{'select_value':cd.select_value}); + } + //保存老数据 end + + if(expend_standard != undefined){ + _.extend(new_cd,{'expend_standard':expend_standard}); + } + if(expend_standard_sp != undefined){ + _.extend(new_cd,{'expend_standard_sp':expend_standard_sp}); + } + if(billMoney != undefined){ + _.extend(new_cd,{'billMoney':billMoney}); + } + if(bhName != undefined){ + _.extend(new_cd,{'bhName':bhName}); + } + if(bbName != undefined){ + _.extend(new_cd,{'bbName':bbName}); + } + if(sys_value != undefined){ + _.extend(new_cd,{'sys_value':sys_value}); + } + if(standard_money != undefined){ + _.extend(new_cd,{'standard_money':standard_money}); + } + if(is_red != undefined){ + _.extend(new_cd,{'is_red':is_red}); + } + if(nobill_cd != undefined){ + _.extend(new_cd,{'nobill_cd':nobill_cd}); + } + if(sys_red != undefined){ + _.extend(new_cd,{'sys_red':sys_red}); + } + if(gcShowFlag != undefined){//用以单据固化后隐藏控件 + _.extend(new_cd,{'gcShowFlag':gcShowFlag}); + } + new_form.child.push(new_cd); + }); + all_err_data.form_err_data.push(new_form); + } + }); + //获取下方错误信息 + if($scope.cost_err != undefined && $scope.cost_err.length > 0){// 获取费用不符合标准提示信息 + _.extend(all_err_data,{"cost_err":_.cloneDeep($scope.cost_err)}); + } + if($scope.rule_bill != undefined && $scope.rule_bill.length > 0){// 获取票据内容错误信息 + _.extend(all_err_data,{"rule_bill":_.cloneDeep($scope.rule_bill)}); + } + if($scope.unjoin_bill != undefined && $scope.unjoin_bill.child.length > 0){// 获取未关联到行程的票据错误信息 + _.extend(all_err_data,{"unjoin_bill":_.cloneDeep($scope.unjoin_bill)}); + } + if($scope.other_cost != undefined && $scope.other_cost.length > 0){// 获取其它费用提示 + _.extend(all_err_data,{"other_cost":_.cloneDeep($scope.other_cost)}); + } + if($scope.maindata_err != undefined && $scope.maindata_err.length > 0){// 获取主数据缺失信息 + _.extend(all_err_data,{"maindata_err":_.cloneDeep($scope.maindata_err)}); + } + _.extend(all_err_data,{"all_err_show":_.cloneDeep($scope.all_err_show)}); + _.extend(all_err_data,{"show_cost_err":_.cloneDeep($scope.show_cost_err)}); + _.extend(all_err_data,{"rule_bill_show":_.cloneDeep($scope.rule_bill_show)}); + _.extend(all_err_data,{"unjoin_bill_show":_.cloneDeep($scope.unjoin_bill_show)}); + _.extend(all_err_data,{"nobill_money_hint":_.cloneDeep($scope.nobill_money_hint)}); +// + return all_err_data; + } + //reflect bill data + $rootScope.reflect_bill = function(){ + reflect_bill(); + } + //改变订单状态 + $rootScope.change_orderstatus = function(orderstatus_text){ + $scope.orderstatus = orderstatus_text; + } + function reflect_bill() { + if($rootScope.close_lock == true){ + return false; + } + $rootScope.formula_num = 0; + $rootScope.formula_num_id = [];//查询详情时初始化需要进行请求的前端公式 计数变量 + var get_bill_data_url = ''; + var post_data = {}; + var order_number; + if($scope.type === 10) { + get_bill_data_url = 'budget/selectOne'; + post_data = { "buId": $scope.billid }; + order_number = "bu_number"; + } else if($scope.type === 20) { + get_bill_data_url = 'apply/selectOne'; + post_data = { "apId": $scope.billid }; + order_number = "ap_number"; + } else if($scope.type === 30) { + get_bill_data_url = 'expend/selectOne'; + post_data = { "exId": $scope.billid }; + order_number = "ex_number"; + } + + http_service.post(get_bill_data_url, post_data, function(res) { + var data = res.data.data; + var sub_frms_data = []; + var sub_frms = []; + var frm_items = []; + $scope.billState = data.billState;//报销单状态 + $scope.exCouldNumber = data.exCouldNumber//云单编号 + $scope.stepCode = data.stepCode;// 流程状态 + $rootScope.stepCode = data.stepCode; + $rootScope.lock = data.lock//锁头 + $rootScope.form_id = $scope.billid//表单ID + //云单编号 + if(data.exCouldNumber){ + $scope.$parent.exCouldNumber = data.exCouldNumber; + } + + // 订单状态为审单成功 并且未提交流程的 显示重新审单 + if ($scope.billState) { + if ((!data.stepCode || data.stepCode == 20) && ($scope.billState == 15 || $scope.billState == 19)){ + $scope.$parent.restart_review_show = true; + } + } + + + if(data.billState) { + $scope.$parent.billState = data.billState;//报销单状态 + } + //重新纠偏按钮显示 + if(data.stepCode == undefined || data.stepCode == ""){ + $scope.$parent.rectification_show = true; + } + //票据内容错误信息 + $scope.err_bill = res.data.data.errMsg; + if($scope.err_bill != undefined && $scope.err_bill.length != 0){ + $scope.err_bill_show = true; + }else{ + $scope.err_bill_show = false; + } +// if(data.stepCode != 30 && data.stepCode != 10){// 已完成/审核中 表单 不进行任何红字验证 和公式计算 + //错误信息提示 + $scope.rule_bill = res.data.data.ruleMsg; + $scope.$parent.submit_Pors=true; + if($scope.rule_bill != undefined && $scope.rule_bill.length != 0) { + $scope.rule_bill_show = true; + _.each($scope.rule_bill, function(rule) { + if(rule.ruLevel == 30) { + $scope.$parent.submit_Pors=false; + } + }); + } else { + $scope.rule_bill_show = false; + } +// } + if(data.billState == 49){ + $scope.$parent.re_account_show = true; + $scope.$parent.re_account_exid = data.ex_id; + }else{ + $scope.$parent.re_account_show = false; + } + sub_frms_data = data.child; + //若无行程信息 则显示添加行程按钮 + if(data.child == undefined || data.child.length == 0){ + $scope.add_jour_show = true; + } + if(data.fchild == undefined || data.fchild.length == 0){ + $scope.add_pay_show = true; + } + $scope.selectinfo = []; + $scope.createtime = data.insT; + //显示订单号 + $scope.$parent.order_number = data[order_number]; + var statuslist = []; + _.each(cddata,function(item){ + if(item.cdType == 10){ + statuslist.push(item) + } + }) + _.each(statuslist,function(list){ + if(list.cdCode == data.billState){ + $scope.orderstatus = list.cdName + } + }) + //自动审单中(票据处理中)不可编辑 + if(data.billState == 10){ + $scope.$parent.editflag = false; + } + //票据处理中或失败 不能提交 + if(data.billState == 10 || data.billState == 19){ + $scope.$parent.commitflag_bill = false; + } + //票据处理中或完成 不能删除 + if(data.billState == 10 || data.billState == 15){ + $scope.$parent.deleteflag = false; + } + if(data.billState == 19){//票据处理失败 显示重新上传按钮 + $scope.$parent.re_upload = true; + $scope.$parent.bill_commit_text = "重新上传"; + }else if(data.billState == 20){//无票据 显示票据上传按钮 + $scope.$parent.re_upload = true; + $scope.$parent.bill_commit_text = "票据上传"; + }else{ + $scope.$parent.re_upload = false; + } + //assign plugin value + $rootScope.budget_back = true; + _.each($scope.form_items, function(item){ + var id = item['gcColName']; + if(id && data[id]){ + if(item.gcCpnType == 0){//找到占用预算控件 + //占用预算控件回调 + $rootScope.budget_selected = data[id]; + http_service.post('budget/pass/budgetInfo',{"buNumber":data[id],"type":$scope.type},function(res){ + $rootScope.search_hint(res.data.data,'arrary'); + if(!res.data.opState){ + return false; + } + var budget_info = res.data.data[0]; + //获取表头信息 + + http_service.post('form/search/showTables',{},function(res){ + $rootScope.search_hint(res.data.data,'arrary'); + $scope.heads = res.data.data; + var startTime,endTime; + + $scope.info = {}; + $scope.sumMoney = ""; + startTime = ""; + endTime = ""; + $scope.orgName = ""; + _.each($scope.heads,function(hd){ + _.each(filed,function(_filed){ + if(hd.gcMeCode == _filed.mdCode){ + if(budget_info == undefined){ + return false; + } + if(budget_info[hd.gcColName]){ + $scope.info[hd.gcColName] = budget_info[hd.gcColName]; + switch(_filed.busCode){ + case "sumMoney"://预算金额 + $scope.sumMoney = "【"+hd.gcCpnAlias+"】 "+budget_info[hd.gcColName]+" "; + $scope.info[hd.gcColName] = $scope.sumMoney; + break; + case "beginCalendar": + startTime = budget_info[hd.gcColName]; + $scope.info[hd.gcColName] = startTime; + break; + case "endCalendar": + endTime = budget_info[hd.gcColName]; + $scope.info[hd.gcColName] = endTime; + break; + case "orgName"://组织机构 + $scope.orgName = budget_info[hd.gcColName]; + $scope.info[hd.gcColName] = $scope.orgName; + break; + } + } + } + }); + }); + if(startTime&&endTime){ + $scope.time = "【预算时间】"+startTime+"~"+endTime; + $rootScope.startTime = startTime; + $rootScope.endTime = endTime; + } + if(budget_info){ + $rootScope.sumMoney_budget = budget_info.bu_money; + $rootScope['child_money'] = budget_info.child_money; + $scope.thshow = true; + $scope.info['bu_number'] = budget_info.bu_number; + $scope.info['bu_money'] = budget_info.bu_money; + $scope.selectinfo.push($scope.info); + } + }) + }); + }else if(item.gcCpnType == 14){//选择申请回调 + item['render_value'] = data[id]; + $rootScope.expend_number_info = data[id]; + http_service.post('apply/pass/applyInfo',{"apNumber":data[id],"type":$scope.type},function(res){ + $rootScope.search_hint(res.data.data,'arrary'); + if(!res.data.opState){ + return false; + } + $scope.expend_selectinfo = res.data.data; + //获取表头信息 + + http_service.post('form/search/apply/showTables',{},function(res){ + $rootScope.search_hint(res.data.data,'arrary'); + $scope.expend_heads = res.data.data; + $scope.expend_thshow = true; + }) + }); + }else{ + item['render_value'] = data[id]; + } + } + }); + var pay_child = []; + _.each($scope.form_items, function(item){//支付方式子表单回调 step1 + if(item.gcCpnType == 17){ + _.each(data.fchild,function(fcd){ + _.each(item.child,function(pay){ + var pay_id = pay['gcColName']; + if(pay_id && fcd[pay_id]){ + pay.render_value = fcd[pay_id]; + } + }) + _.extend(item,{"ef_id":fcd.ef_id}); + pay_child.push(_.cloneDeep(item)); + }) + } + }) + _.remove($scope.form_items,function(o){ + return o.gcCpnType == 17; + }) + _.each(pay_child, function(item){//支付方式子表单回调 step3 + $scope.form_items.push(item); + }) + + _.each($scope.form_items, function(item) {//保存人员信息 + if(item['gcCpnType'] == 12) { + var user = [{ + "personCode":item.render_value + }]; + myServeice.setuser(user); + } + }); + + _.each($scope.form_items, function(item) { + if(item['gcCpnType'] == 10) { + _.each(sub_frms_data, function(v, k) { + var _item = _.cloneDeep(item); + frm_items.push(_item); + sub_frms.push(_item); + }) + } else { + frm_items.push(item); + } + }); + _.each(sub_frms_data, function(sub_frm_data, k) { + + var bugets_item = get_user_budget_list(sub_frm_data['child']); + sub_frms[k]['budget_list'] = bugets_item; + sub_frms[k]['money'] = sub_frms_data[k]['money']; + sub_frms[k]['aj_id'] = sub_frms_data[k]['aj_id']; + sub_frms[k]['ej_id'] = sub_frms_data[k]['ej_id']; + sub_frms[k]['ej_days'] = sub_frms_data[k]['ej_days']; + sub_frms[k]['ej_hours'] = sub_frms_data[k]['ej_hours']; + sub_frms[k]['ej_kms'] = sub_frms_data[k]['ej_kms']; + sub_frms[k]['span_night'] = sub_frms_data[k]['span_night']; + if(sub_frms_data[k]['billInfos'] != undefined){ + sub_frms[k]['billInfos_str'] = sub_frms_data[k]['billInfos']; + sub_frms[k]['billInfos'] = [JSON.parse(sub_frms_data[k]['billInfos'])]; + } + var sub_frms_child = sub_frms[k].child; + _.each(sub_frms_child, function(child) { + var sfc_key = child['gcColName']; + if(sfc_key && sub_frm_data[sfc_key]) { + child['render_value'] = sub_frm_data[sfc_key]; + } + }); + }); + $scope.form_items = frm_items; + + $scope.sysSearchFinsh = true; +// + $scope.$parent.form_data['child'] = $scope.form_items; + if(data['ex_id'] != undefined){ + $scope.expned_id = data['ex_id']; + } + $scope.$parent.form_data['ap_id'] = data['ap_id'] || data['bu_id'] || data['ex_id']; + + console.log($scope.form_items); + console.log(JSON.stringify($scope.form_items)); + //监听显示是否完成 + var inited_flag = $interval(function(){ + + var fiished = true; + + _.each($scope.form_items,function(form){ + if(form.gcCpnType == 12 || form.gcCpnType == 6){ + // if(form.inited != true){ + // console.log(form.inited); + fiished = true; + // } + }else if(form.gcCpnType == 10 || form.gcCpnType == 17){ + _.each(form.child,function(cd){ + if(cd.gcCpnType == 12 || cd.gcCpnType == 6){ + if(cd.inited != true){ + fiished = false; + } + } + }) + } + }); + // console.log('emmmmmmm'); + if(fiished == true){ + $scope.$parent.init_btn_flag = true; + $interval.cancel(inited_flag); + inited_flag = undefined; + }else{ + $scope.$parent.init_btn_flag = false; + } + },1000); + + //跨行程验证开始时间 + $rootScope.check_data_cross(); + //报销单计算费用 + if($scope.type == 30){ + if(data.stepCode != 30 && data.stepCode != 10){// 已完成/审核中 表单 不进行任何验证 和计算 + //格式化报销人验证 信息 + _.each($scope.form_items,function(form){ + if(form.gcCpnType == 10){ + if(form.billInfos){ + var bill_user_check = []; + var bill_user_info = []; + bill_user_check.push(bill_user_info); + _.each(form.billInfos,function(bill){ + var fromDate_value = "";//出发日期特殊处理 = 出发日期加时间 + _.each(bill.map,function(_map){ + if(_map.bhKey == "FromDate"){ + fromDate_value += _map.bhValue; + } + }); + _.each(bill.map,function(_map){ + if(_map.bhKey == "FromTime"){ + fromDate_value += " " + _map.bhValue; + } + }); + _.each(bill.map,function(_map){ + if(_map.bhKey == "FromDate"){ + _map.bhValue = fromDate_value; + _map.bhName = fromDate_value; + } + })//特殊处理结束 +// var fromDate_value_cd = "";//出发日期特殊处理 = 出发日期加时间 +// _.each(bill.child,function(bd){ +// if(bd.bbKey == "FromDate"){ +// fromDate_value_cd += bd.bbValue; +// } +// }); +// _.each(bill.child,function(bd){ +// if(bd.bbKey == "FromTime"){ +// fromDate_value_cd += " " + bd.bbValue; +// } +// }); +// _.each(bill.child,function(bd){ +// if(bd.bbKey == "FromDate"){ +// bd.bbValue = fromDate_value_cd; +// bd.bbName = fromDate_value_cd; +// } +// });//特殊处理结束 + + var bill_info_data = {}; + var PersonalName,persionCode + , billTypeName, billTypeCode; + _.each(bill.map,function(_bmap){ + + if(_bmap.bhKey == "PersonalName"){ + PersonalName = _bmap.bhName; + persionCode = _bmap.bhValue; + } + + if(_bmap.bhKey == "billType"){ + billTypeName = _bmap.bhName; + billTypeCode = _bmap.bhValue; + } + }); + if(PersonalName && persionCode && billTypeName && billTypeCode){ + is_check_bill_user(billTypeName,function(flag){ + if(flag){ + _.extend(bill_info_data,{ + "typeName":billTypeName, + "typeCode":billTypeCode, + "PersonalName":PersonalName, + "persionCode":persionCode + }) + bill_user_info.push(bill_info_data); + form['bill_user_check'] = bill_user_check; + $rootScope.check_bill_user(); + } + }) + + } + }); + } + } + }); + } + + if(data.stepCode != 30 && data.stepCode != 10){// 已完成/审核中 表单 不进行任何验证 和计算 + $scope.bill_data_check();//获取详情数据后 验证 + + if($scope.billState == 10){//报销单状态为自动审单中状态,则发送验证是否存在主数据缺失 + if($scope.exCouldNumber != ""){//无云单编号 不进行主数据缺失验证 + _.each($scope.formula,function(formula){//验证前先计算前端公式 + $scope.formula_computing(formula,$scope.form_items); + }); + + http_service.post("errmsg/search/checkBillInfo",{"oCode":data.exCouldNumber},function(res){//发送验证请求 + if(res.data.opState){ + $scope.select_isright = res.data.data;//true 为没有主数据缺失 false为有缺失 + } + $scope.query_journel_budget($scope.type,function(){},true);//验证完后计算 前端公式 },5000); + }) + } + }else{ + $scope.query_journel_budget($scope.type,function(){},true); + } + } + + + //若不是本人的报销单 则不能编辑和删除 + if(data.insP != app_userinfo.userId){ + $scope.$parent.editflag = false; + $scope.$parent.deleteflag = false; + } + + + } + //获取费用类型数据 + http_service.post("supp/search/master", { "mdType": 1 }, function(res) { + $scope.cost_type = res.data.data; + _.each($scope.form_items, function(cd) { + if(cd.budget_list && cd.budget_list.length != 0) { + _.each($scope.cost_type, function(type) { + _.each(cd.budget_list[0].child, function(_list) { + if(_list.jp_cd_code == type.mdCode) { + _.extend(type, { "jp_amount": _list.jp_amount, "jp_cd_code": _list.jp_cd_code }); + } + }) + }) + cd.budget_list[0].child = $scope.cost_type; + } + }) + }); + + + $scope.count_number(); + + if(data.errInfo != undefined && JSON.parse(data.errInfo) != undefined && (data.stepCode != undefined && (data.stepCode == 30|| data.stepCode == 10))){// 显示 已完成/审核中 表单的错误信息 +// + data.errInfo = JSON.parse(data.errInfo) + _.each($scope.form_items,function(form){ + _.each(data.errInfo.form_err_data,function(form_err){ + if(form.gcCpnType != 10 && form.gcCpnType != 17){ + if(form.gcMeCode != undefined && form.gcMeCode == form_err.gcMeCode){ + _.extend(form,form_err); + } + }else{ + if(form.num == undefined){ + form.num = ""; + } + var fnum = form.num?(form.num - 1):0; + if(form.num == form_err.num && form.gcCpnType == form_err.gcCpnType){ + if(form_err.is_nobill != undefined){ + _.extend(form,{'is_nobill':form_err.is_nobill}); + } + if(form_err.bill_user_err != undefined && form_err.bill_user_err != ""){ + _.extend(form,{'bill_user_err':form_err.bill_user_err}); + } + if(form_err.nobill_red != undefined){ + _.extend(form,{'nobill_red':form_err.nobill_red}); + } + _.each(form.child,function(cd){ + _.each(form_err.child,function(e_cd){ + if(cd.gcMeCode != undefined && cd.gcMeCode == e_cd.gcMeCode){ + _.extend(cd,e_cd); +// if(e_cd.rule_err != undefined){ +// +// +// if(cd.gcCpnType == 6){ +// +// $timeout(function(){ +// $('*[gccolname="' + cd.gcColName + '"]:eq(' + fnum + ')').closest('.select').append("<i class='errinfo_point' gcname="+cd.gcColName+" gcnum="+fnum+" style='position:absolute;margin-top:4px;'>" + e_cd.rule_err +"</i>"); +// },10) +// +// }else if(cd.gcCpnType == 5){ +// $timeout(function(){ +// $("<i class='errinfo_point' gcname="+cd.gcColName+" gcnum="+fnum+">" + e_cd.rule_err + "</i>").appendTo($('*[gccolname="' + cd.gcColName + '"]:eq(' + fnum + ')').closest(".timeinfo")); +// },10) +// +// }else{ +// +// } +// } + } + }); + }); + } + } + }); + }); + if(data.errInfo.all_err_show != undefined){ + $scope.all_err_show = data.errInfo.all_err_show; + } + if(data.errInfo.show_cost_err != undefined){ + $scope.show_cost_err = data.errInfo.show_cost_err; + } + if(data.errInfo.rule_bill_show != undefined){ + $scope.rule_bill_show = data.errInfo.rule_bill_show; + } + if(data.errInfo.unjoin_bill_show != undefined){ + $scope.unjoin_bill_show = data.errInfo.unjoin_bill_show; + } + if(data.errInfo.nobill_money_hint != undefined){ + $scope.nobill_money_hint = data.errInfo.nobill_money_hint; + } + if(data.errInfo.maindata_err != undefined){ + $scope.maindata_err = data.errInfo.maindata_err; + } + if(data.errInfo.other_cost != undefined){ + $scope.other_cost = data.errInfo.other_cost; + } + if(data.errInfo.unjoin_bill != undefined){ + $scope.unjoin_bill = data.errInfo.unjoin_bill; + } + if(data.errInfo.rule_bill != undefined){ + $scope.rule_bill = data.errInfo.rule_bill; + } + if(data.errInfo.cost_err != undefined){ + $scope.cost_err = data.errInfo.cost_err; + } + $timeout(function(){ + $rootScope.checkdata();//已完成/审核中单子 进行规则校验 + },10) + } + + }); + } + //验证报销人信息 + $rootScope.check_bill_user = function(){ + //找到人员控件 + var now_user; + _.each($scope.form_items,function(item){ + if(item.gcCpnType == 12){ + now_user = item.render_value; + } + }); + _.each($scope.form_items,function(form){ + if(form.gcCpnType == 10){ + if(form.bill_user_check){ + var bill_user_err = []; + _.each(form.bill_user_check,function(bill){ + _.each(bill,function(info){ + var err; + if(info.persionCode){ + if(info.persionCode != now_user){ + err = info.typeName + " '"+info.PersonalName + "' 与单据人员不符"; + bill_user_err.push(err); + } + }else{ + err = info.typeName + " '"+info.PersonalName + "' 与单据人员不符"; + bill_user_err.push(err); + } + }) + }); + if(bill_user_err.length != 0){ + form['is_red'] = true; + form['nobill_red'] = true; + form['bill_user_err'] = bill_user_err.join(","); + }else{ + form['is_red'] = false; + form['nobill_red'] = false; + form['bill_user_err'] = ""; + } + } + } + }); + $scope.have_err(); + } + //获取详情数据后 验证 + $scope.bill_data_check = function(){ + if($scope.stepCode == 30 || $scope.stepCode == 10){// 已完成/审核中 表单 不验证 + return false; + } + if($scope.type != 30){ + return false; // 非报销单 不进行票据信息验证 + } + //将城市间交通费 放在最后 +// _.each($scope.form_items, function(form){ +// if(form.gcCpnType == 10){ +// if(form.billInfos != undefined && form.billInfos.length != 0){ +// var city_to_tity = []; +// _.each(form.billInfos, function(bill){ +// _.each(bill.map, function(map){ +// if(map.bhName == "城市间交通费" && map.bhKey == "billType"){ +// city_to_tity.push(bill); +// } +// }); +// }); +// _.pullAllBy(form.billInfos,city_to_tity,"bhBillCode"); +// form.billInfos.push(city_to_tity[0]); +// } +// } +// }); + + //获取离开日期控件的主数据code 和要进行无票信息验证的控件的主数据code + var journeyEndDate_code; + var nobill_data_check = []; + _.each(filed,function(_filed){ + if(_filed.busCode == 'journeyEndDate'){ + journeyEndDate_code = _filed.mdCode; + } + if(_filed.mappingIden && _filed.mappingIden == 'billInfo'){ + nobill_data_check.push(_filed.mdCode); + } + }) + _.each($scope.form_items,function(form){ + if(form.gcCpnType == 10){ + if(form.billInfos){ + if(form.billInfos.length == 0){ + form['is_nobill'] = "无票据行程"; + form['nobill_red'] = true; + } + _.each(form.billInfos,function(bill){ + _.each(form.child,function(cd){ + + if(cd.nobill_cd == undefined && _.indexOf(nobill_data_check,cd.gcMeCode) != -1){//无票据信息验证 只验证一次 + if(cd.gcMeCode != journeyEndDate_code){//有票据信息的行程 控件 默认为红色 除了离开日期控件 + cd['nobill_cd'] = true; + } + if(cd.joinMath.length > 0){//自动计算的控件 不进行无票据信息验证 + cd['nobill_cd'] = false; + } + } + + _.each(bill.map,function(_map){ + if(_map.bhName == undefined || _map.bhName == "" && _map.bhKey != "ToDate"){//若为空 则默认为无 + _map['bhName'] = '无'; + } + _.each(filed,function(_filed){ + if(_map.bhKey == "ToDate" && _filed.busCode == _map.bhKey && cd.gcMeCode == _filed.mdCode){//到达日期 不验证 +// + cd['nobill_cd'] = false; + cd['is_red'] = false; + return false; + } + if(_filed.busCode == _map.bhKey && cd.gcMeCode == _filed.mdCode){ + cd['nobill_cd'] = false; + cd.bhName = _map.bhName; + cd.bhValue = _map.bhValue; + if(cd.render_value == "" || cd.render_value == undefined){ + cd['is_red'] = true; + }else if(_map.bhValue != cd.render_value || _map.bhName == '无'){ + cd['is_red'] = true; + }else{ + cd['is_red'] = false; + } + return false; + } + }) + }); + +// _.each(bill.child,function(bd){ +// if(bd.bbName == undefined || bd.bbName == "" && bd.bbKey != "ToDate"){//若为空 则默认为无 +// bd['bbName'] = "无"; +// } +// _.each(filed,function(_filed){ +// if(bd.bbKey == "ToDate" && _filed.busCode == bd.bbKey && cd.gcMeCode == _filed.mdCode){//到达日期 不验证 +// cd['nobill_cd'] = false; +// cd['is_red'] = false; +// return false; +// } +// if(_filed.busCode == bd.bbKey && cd.gcMeCode == _filed.mdCode){ +// cd.bbName = bd.bbName; +// if(cd.render_value == "" || cd.render_value == undefined){ +// cd['is_red'] = true; +// }else if(bd.bbValue != cd.render_value || bd.bbName == '无'){ +// cd['is_red'] = true; +// }else{ +// cd['is_red'] = false; +// } +// return false; +// } +// }) +// }); + }) + + }) + }else{ + form['is_nobill'] = "无票据行程"; + form['nobill_red'] = true; + } + } + }); + $scope.have_err(); + } + //判断是否显示错误提示 + $scope.have_err = function(){ + var err_flag = false; + _.each($scope.form_items,function(form){ + if(form.gcCpnType == 10){ + _.each(form.child,function(cd){ + if(cd.is_red){ + err_flag = true; + } + }); + }else{ + if(form.is_red){ + err_flag = true; + } + } + }) + $scope.all_err_show = err_flag; + } +// http_service.post('syscfg/search/budegtTypes', {}, function(res) { +// $scope.deptbudgetflag = res.data.data[0]; +// $scope.programbudgetflag = res.data.data[1]; +// //添加默认 +// if($scope.type == 10 && $scope.deptbudgetflag && $scope.programbudgetflag) { +// $scope.classify = '部门预算'; +// deptbudget(); +// } else if($scope.type == 10 && $scope.deptbudgetflag) { +// $scope.classify = '部门预算'; +// deptbudget(); +// } else if($scope.type == 10 && $scope.programbudgetflag) { +// $scope.classify = "项目预算"; +// programbudget(); +// } +// }) +// $scope.programbudget = function() { +// if($scope.type == 10) { +// programbudget(); +// } +// } +// $scope.deptbudget = function() { +// if($scope.type == 10) { +// deptbudget(); +// } +// } + $scope.checkshow = function(item) { + if(item.gcCpnType != 90) { + if($scope.type == 10){ + if(item.typeshow){ + if(item.typeshow == 0){ + return true; + }else{ + return false; + } + }else{ + return true; + } + }else{ + return true; + } + + } +// if($scope.type == 10 && $scope.isbill) { +// //判断是项目预算还是部门预算 +// if($scope.select_value == '002'){ +// deptbudget(); +// }else{ +// programbudget(); +// } +// return true; +// } + } + +// for(i in filed) { +// if(filed[i].busCode == 'orgCode') { +// http_service.post('base/data/search', { code: filed[i].mdCode }, function(response) { +// $scope.options = response.data.data.child; +// programbudget(); +// }) +// break; +// } +// } +// for(i in filed) { +// if(filed[i].busCode == 'orgCode') { +// http_service.post('base/data/search', { code: filed[i].mdCode }, function(response) { +// $scope.sel_val_lst = response.data.data.child; +// }) +// break; +// } +// } + //项目预算分类 + function programbudget() { + //点击项目预算,展示部门(多选)及项目 +// _.each(filed, function(item) { +// if(item.busCode == 'orgCode') { +// $scope.thecode = item.mdCode; +// _.each($scope.form_items, function(items) { +// if($rootScope.mustscode == items.gcMeCode) { +// items['typeshow'] = 1; +// } +// if(items.gcMeCode == $scope.thecode) { +// items['typeshow'] = 0; +//// items.gcCpnMultiple = 1; +//// $rootScope.multiple = true; +// $timeout(function(){ +// items.ismultiple = true; +// },1) +// +// } +// }) +// } +// if(item.busCode == 'project') { +// $scope.thepcode = item.mdCode; +// _.each($scope.form_items, function(iteminfo) { +// if($rootScope.mustscode == iteminfo.gcMeCode) { +// iteminfo['typeshow'] = 1; +// } +// if(iteminfo.gcMeCode == $scope.thepcode) { +// $rootScope.mustprocode = $scope.thepcode; +// iteminfo['typeshow'] = 0; +// } +// }) +// } +// //上级管控 +// if(item.busCode == 'superBudget') { +// $scope.thescode = item.mdCode; +// _.each($scope.form_items, function(itemsuper) { +// if(itemsuper.gcMeCode == $scope.thescode) { +// itemsuper['typeshow'] = 1; +// } +// }) +// } +// }) + } + + + + + // TODO + //部门预算分类 + function deptbudget() { + //选择部门预算出现预算部门和上级预算管控控件,显示这两个控件 +// _.each(filed, function(item) { +// if(item.busCode == 'orgCode') { +// $scope.thedcode = item.mdCode; +// _.each($scope.form_items, function(itemdept) { +// if(($rootScope.mustscode == itemdept.gcMeCode) || ($rootScope.mustprocode == itemdept.gcMeCode)) { +// itemdept['typeshow'] = 1; +// } +// if(itemdept.gcMeCode == $scope.thedcode) { +// $rootScope.mustccode = $scope.thecode; +//// itemdept.gcCpnMultiple = 0; +// itemdept['typeshow'] = 0; +//// $rootScope.multiple = false; +// itemdept.ismultiple = false; +// } +// }) +// } +// //上级管控 +// if(item.busCode == 'superBudget') { +// $scope.thescode = item.mdCode; +// _.each($scope.form_items, function(itemsuper) { +// if(itemsuper.gcMeCode == $scope.thescode) { +// $scope.mustscode = $scope.thescode; +// itemsuper['typeshow'] = 0; +// } +// }) +// } +// }) + } + + + function complete(res) { + var data = res.data; + var select_arr; + if(!data) { + return false; + } + //获取公式数据 、系统变量公式数据 + $scope.formula = []; + $scope.sys_formula = []; + _.each(data.child,function(item){ + if(item.gcCpnType != 10 && item.gcCpnType != 17){ + if(item.gcDefVal != undefined && $scope.isbill == "false"){//新增时才添加默认值 + if(item.gcCpnType == 5 && item.gcDefVal == '10'){//默认时间为当前时间 + var now_date = $rootScope.getNewDate(); + item.gcDefVal = now_date.getFullYear()+"-"+(now_date.getMonth()+1)+"-"+now_date.getDate(); + }else if(item.gcCpnType == 5 && item.gcDefVal != '10'){ + item.gcDefVal = ''; + } + item['render_value'] = item.gcDefVal; + } + if(item.joinMath){ + if(item.joinMath.length > 0){ + _.each(item.joinMath,function(join){ + if(join.cpnMath){ + if(join.cpnMath.child.length > 1){ + $scope.formula.push(join.cpnMath); + } + } + }) + } + } + if(item.systemMathEntity != undefined){//系统变量公式 + $scope.sys_formula.push({ + "target":item.gcMeCode, + "formula":item.systemMathEntity, + "mathId":item.gcMathId + }); + } + }else{ + _.each(item.child,function(cd){ + if(cd.gcDefVal != undefined && $scope.isbill == "false"){//新增时才添加默认值 + if(cd.gcCpnType == 5 && cd.gcDefVal == '10'){//默认时间为当前时间 + var now_date = $rootScope.getNewDate(); + cd.gcDefVal = now_date.getFullYear()+"-"+(now_date.getMonth()+1)+"-"+now_date.getDate(); + }else if(cd.gcCpnType == 5 && cd.gcDefVal != '10'){ + cd.gcDefVal = ''; + } + cd['render_value'] = cd.gcDefVal; + } + if(cd.joinMath){ + if(cd.joinMath.length > 0){ + _.each(cd.joinMath,function(join){ + if(join.cpnMath){ + if(join.cpnMath.child.length > 1){ + $scope.formula.push(join.cpnMath); + } + } + }) + } + } + if(cd.systemMathEntity != undefined){//系统变量公式 + $scope.sys_formula.push({ + "target":cd.gcMeCode, + "formula":cd.systemMathEntity, + "mathId":cd.gcMathId + }); + } + }); + } + }); +// + //保存行程控件信息 + _.each(data.child,function(item){ + if(item.gcCpnType == 10){ + $scope.form_jour = _.cloneDeep(item); + } + if(item.gcCpnType == 17){ + $scope.form_pay = _.cloneDeep(item); + } + }) + $scope.template_name = data.guTempName; + $scope.template_desc = data.guTempDisc; + $scope.form_items = data.child; + //新增时默认无行程 + if($scope.isbill == "false"){ + var new_form = []; + _.each($scope.form_items,function(form){ + if(form.gcCpnType != 10){ + new_form.push(form); + } + }); + $scope.form_items = new_form; + $scope.add_jour_show = true; + } + $scope.form_list = _.cloneDeep(data.child); +// _.each($scope.form_items, function(_item) { +// if(_item.gcCpnType == 6) { +// http_service.post('base/data/search', { "code": _item.gcMeCode }, function(result) { +// var arr = []; +// _.each(result.data.data.child, function(_res) { +//// if(_item.render_value) { +//// if(_item.render_value.indexOf(",") > -1){ +//// select_arr = _item.render_value.split(","); +//// if(select_arr.length > 1) { +//// select_arr.pop(); +//// } +//// }else{ +//// select_arr = _item.render_value.split(""); +//// } +//// +//// for(i in select_arr) { +//// if(_res.code == select_arr[i]) { +//// arr.push(_res.value); +//// } +//// } +//// if(arr.length != 0) { +//// _item = _.extend(_item, { "select_value": arr.join(",") }); +//// } +//// +//// }else { +//// var timer = setInterval(function() { +//// if(_item.render_value) { +//// +//// if(_res.code == _item.render_value) { +//// +//// _item = _.extend(_item, { "select_value": _res.value }); +//// } +//// clearInterval(timer); +//// } +//// }, 1); +//// } +// $scope.$watch(function(){ +// return _item.render_value +// },function(){ +// if(_item.render_value != undefined) { +// if(_item.render_value.indexOf(",") != -1){ +// select_arr = _item.render_value.split(","); +// if(select_arr.length > 1) { +// select_arr.pop(); +// } +// }else{ +// select_arr = [_item.render_value]; +// } +// for(i in select_arr) { +// if(_res.code == select_arr[i]) { +// arr.push(_res.value); +// } +// } +// if(arr.length != 0) { +// _item = _.extend(_item, { "select_value": arr.join(",") }); +// } +// +// }else { +// var timer = setInterval(function() { +// if(_item.render_value) { +// +// if(_res.code == _item.render_value) { +// +// _item = _.extend(_item, { "select_value": _res.value }); +// } +// clearInterval(timer); +// } +// }, 1); +// } +// }) +// }) +// }); +// } +// }); + $scope.guId = data.guId; + $scope.$parent.form_data = data; + $scope.$parent.form_data.child = $scope.form_items; + //新增时默认添加用户信息 + if($scope.isbill == "false"){ + _.each($scope.form_items,function(form){ + if(form.gcCpnType == 12){ + form.render_value = app_userinfo.empCode; + $rootScope.change_apmonut(form); + } + }) + } + + + + if($scope.billid) { + reflect_bill(); + } + } + + } + } + } + } + }]) + .filter("selected_flag", function() { + return function(input) { + if(input) { + return "+"; + } else { + return "-"; + } + } +}) +.filter("getamount",function(){ + return function(inputs,parmas){ + var value; + _.each(inputs.money,function(money){ + if(money.jp_cd_code == parmas.gcMeCode){ + value = money.jp_amount; + } + }) + return value; + } +}) +.filter("getall", function() { + return function(input, params) { + var allcost = 0; + _.each(input, function(cost) { + if(cost != undefined) { + if("budget_list" in cost) { + if(cost.budget_list.length != 0) { + if('child' in cost.budget_list[0]) { + _.each(cost.budget_list[0].child, function(spell) { + if(params != 0) { + if(spell.jp_cd_code == params) { + allcost += spell.jp_amount; + } + } else { + allcost += spell.jp_amount; + } + + }); + } + } + } + } + }); + return allcost; + } + }); \ No newline at end of file diff --git a/src/static/js/system_config/module.js b/src/static/js/system_config/module.js new file mode 100644 index 0000000..bfcea29 --- /dev/null +++ b/src/static/js/system_config/module.js @@ -0,0 +1,577 @@ +angular.module('system_cfg', []) + .controller('systemCfgCtrl', ['$scope', '$rootScope', 'http_service', '$compile', function($scope, $rootScope, http_service, $compile) { + _.extend($scope, { + "toggle": function(bool) { + var eval_str = '$scope'; + _.each(bool.split('.'), function(key) { + eval_str += '["' + key + '"]'; + }); + var bool_value = eval(eval_str); + eval_str += '=' + (bool_value === '0' ? '"1"' : '"0"') + ';' + eval(eval_str); + }, + "cfg_data": { + "budget": { + "budget_open": "0", + "budget_type": [false, false], + "budget_method": '0', + "budget_scale": "", + "budget_amount": "" + }, + "apply": { + "apply_open": "0" + // "apply_type": [false, false], + // "apply_point": "1" + }, + "expend": { + "expend_open": "0" + // "expend_over": "1", + // "expend_below": "1", + // "expend_free": "1", + // "expend_cross": "1", + // "expend_supply": "1" + } + }, + "budget_ctrl_value": { + "type": "ratio" + }, + "parseInt": function(v) { + return parseInt(v); + }, + "check_ratio_value": function() { + if(/(^\s*\d+\.?\d*)%\s*$/.test($scope.cfg_data.budget.budget_scale)) { + $scope.ratio_val_match = true; + } else { + $scope.ratio_val_match = false; + } + }, + "check_finger_value": function() { + if(/^(0|[1-9][0-9]*)$/.test($scope.cfg_data.budget.budget_amount)) { + $scope.finger_val_match = true; + } else { + $scope.finger_val_match = false; + } + }, + "save_system_cfg": function() { + var cfg_data = $scope.cfg_data; + var data = []; + _.each(cfg_data, function(k, v) { + _.each(k, function(_k, _v) { + if(_v==='apply_type'){ + _k = _.map(_k, function(n){ + return n?'1':'0'; + }); + } + + // if(_v==='budget_type'){ + // + // _k = _.map(_k, function(n){ + // + // return n?'1':'0'; + // }); + // } + + data.push({ + "scGroup": v, + "scValue": _k, + "scName": _v + }); + }); + }); + http_service.post('syscfg/save', { + "data": data + }, function(res) { + if(res.data.errMsg) { + //alert(res.data.errMsg); + // swal({ + // title: "错误", + // text: res.data.errMsg, + // type: "error", + // confirmButtonText: "确定", + // }) + $scope.$parent.terro(res.data.errMsg) + + } else { + //alert('系统设置保存成功。'); + if(res.data.opState) { + $scope.$parent.tsuccess("系统保存设置成功!") + _.each(data, function(obj) { + switch(obj.scName) { + case "budget_open": + $rootScope.budget_open = obj.scValue; + break; + case "apply_open": + $rootScope.apply_open = obj.scValue; + break; + case "expend_open": + $rootScope.expend_open = obj.scValue; + break; + } + }); + } else { + $scope.$parent.terro("系统保存失败!") + } + } + }); + } + }); + $scope.check_ratio_value(); + $scope.check_finger_value(); + $scope.show_flag = 0; + + $scope.chang_show_flag = function(flag) { + $scope.show_flag = flag; + } + + http_service.post('syscfg/list', {}, function(res) { + var data = res.data.data; + _.each(data, function(obj, v) { + var val_txt = obj['scValue']; + if(_.isNumber(val_txt)) { + val_txt = _.toString(val_txt); + } + $scope.cfg_data[obj['scGroup']][obj['scName']] = val_txt; + $scope.check_ratio_value(); + $scope.check_finger_value(); + }); + }); + + // $http({ + // url:"./static/js/formula.json",//假数据 + // method:"GET", + // data:{} + // }).then(function(res){ + // var formulaList = res.data.data; + // $scope.formulaList = formulaList; + // },function(err){ + // //弹窗 + // }); + + http_service.post('template/cpn/masDataEleList', {}, function(res) { + $scope.form_data_choose = res.data.data.rows; + }); + + + http_service.post('systemMath/search/functionInfo', {}, function(res) { + $scope.fx_data = res.data.data; + + // $scope.fx_data=[{ + // "fx_name":"日期函数", + // "fx_value":"Date()", + // "fx_str":"Date", + // "fx_formula_str":"(1/(24*60*60*1000))*" + // }] + + }); + + function refres_sysMath(){ + http_service.post('systemMath/search/mathList', {}, function(res) { + var referenceFormula = res.data.data; + $scope.referenceFormula = referenceFormula; + }); + http_service.post('systemMath/search/list', {}, function(res) { + var formulaList = res.data.data; + $scope.formulaList = formulaList; + }); + } + refres_sysMath(); + + //系统变量编辑 + $scope.add_formula = function(formula) { + if (!formula) { + formula={}; + }else if(formula.child != undefined && formula.child.length != 0){ + var back_data = []; + _.each(formula.child,function(cd){ + back_data.push(cd); + }); + back_data = _.uniqBy(back_data,'mdCode'); + } + formula.resultFromat = formula.resultFromat == undefined ? 10 : formula.resultFromat; +// formula.type = formula['type'] == undefined ? 10 : formula.type; + $scope.formula = formula; + $scope.formula_content = ""; + $('.el_form').find('div[name="form_el_row"]').each(function(index, el) { + var el_data = $(el).data('data'); + }) + + var edl_arr = []; + + if(formula.view) { + $scope.formula_content = formula.view; + } + // $scope.value_type = ""; + //// if($scope.data.joinMath){ + // if( $scope.data.joinMath && $scope.data.joinMath.length > 0){ + // if($scope.data.joinMath[0].cpnMath.mView){ + // $scope.formula_content = $scope.data.joinMath[0].cpnMath.mView;//显示公式回调 + // } + // _.each($scope.mResultFromat,function(_result){ + // if(_result.value == $scope.data.joinMath[0].cpnMath.mResultFromat){ + // $scope.value_type = _result.code; + // } + // }) + // _.each($scope.data.joinMath[0].cpnMath.child,function(cpn){ + // if(cpn.pIndex != 0){ + // edl_arr.push(cpn); + // } + // }) + // } + // } + + _.each($scope.form_data_choose, function(data) { + // data['edl'] = ""; + // _.each(edl_arr,function(edl){ + // if(data.gcMeCode == edl.pMdCode && edl.meName != undefined){ + // data['edl'] = {"meCode":edl.pMeCode,"meName":edl.meName};//元素选择回调 + // } + // }) + }); + var $pop = $('<div class="bg-modal"><div ng-click="close_edl($event)" class="pop_panel_formula" onMouseOver ="$(this).draggable();event.stopPropagation()" ;>' + + '<div class="custom_validate_formula">' + + '<div class="cv_title_formula">系统变量编辑 <div class="close" ><img src="./static/img/close.png" style="width:60%;margin-top:5px;"></div></div>' + + '<div class="col-md-3 formula_left">'+ + '<p>主元素定义</p>'+ + '<ul>'+ + '<li ng-repeat="item in form_data_choose">'+ + '<span ng-click="add_item(item)" class="btn choose_item" style=" -webkit-box-orient: vertical;-webkit-line-clamp: 1;overflow: hidden;text-overflow: ellipsis;display: inline-block;line-height: 8px;width: 40%;padding: 5px 0px;" title="{{item.masDataDefineName}}">{{item.masDataDefineName}}</span>'+ + '<span class="btn choose_edl" ng-click="add_mecode(item,$event)" style="width:40%">元素选择</span>'+ + '<ul ng-show="item.show_edl" class="fromula_edl" style="width:34%">'+ + '<li ng-click="add_edl(item,data)" ng-repeat="data in item.edl_data" title="{{data.meName}}">{{data.meName}}</li>'+ + '</ul>'+ +// '<span class="edl" ng-show="item.edl">{{item.edl.meName}}</span>'+ + '</li>'+ + '</ul>'+ + '</div>'+ + '<div class="cv_fields_formula col-md-6">' + + '<div class="field_name_father">' + + '<span style="width: 75px;">'+'系统变量'+'</span>'+ + '<div class="field_name" style="width:10%;margin-right:22%;"><input type="text" ng-model="formula.name" placeholder="变量名称">' + +// formula.name+ ""+ + '</div>' + +// '<div class="formula_type">'+ +// '变量类型'+ +// '<select ng-model="formula.type">' + +// '<option ng-value="10"> 计算</option>' + +// '<option ng-value="20"> 取值</option>' + +// '</select>' + +// '</div>'+ + '<div class="formula_type">'+ + '结果格式'+ + '<select ng-model="formula.resultFromat">' + + '<option ng-value="10"> 整数 </option>' + + '<option ng-value="20"> 比较 </option>' + + '<option ng-value="30"> 字符 </option>' + + '</select>' + + '</div>'+ + '</div>' + +// '<div class="col-md-12">'+ +// '<div>'+ + '<textarea id="formula_content" ng-model="formula_content">'+ + '</textarea>'+ +// '</div>'+ +// '</div>'+ + '</div>' + + '<div class="col-md-3 formula_right">'+ + '<p class="sys_formula_choose"><span ng-class="{'+'sys_formula_choose_active'+':formula_type == 1}" ng-click="togle_formula()">公式函数</span><span ng-class="{'+'sys_formula_choose_active'+':formula_type == 2}" ng-click="togle_formula()">引用公式</span></p>'+ + '<ul ng-show="formula_type == 1">'+ + '<li class="btn" ng-repeat="fx in fx_data" ng-click="add_fx(fx)">{{fx.showName}}</li>'+ + '</ul>'+ + '<ul ng-show="formula_type == 2">'+ + '<li class="btn" ng-repeat="rf in referenceFormula" ng-click="add_rf(rf)">{{rf.name}}</li>'+ + '</ul>'+ + '</div>'+ +// '<div class="col-md-2 formula_right">'+ +//// '<p>引用公式</p>'+ +// '<ul>'+ +// '<li class="btn" ng-repeat="rf in referenceFormula" ng-click="add_rf(rf)">{{rf.name}}</li>'+ +// '</ul>'+ +// '</div>'+ + '<div class="formula_btn" style="justify-content:center">'+ + '<button ng-click="formula_commit()" class="btn btn-action btn-success btn-favourite confirm" style="margin-right:105px;">确定</button>'+ + '<button class="btn btn-action btn-success btn-favourite cancel" style="margin-left:105px;">取消</button>'+ + '</div>'+ + '</div>' + + '</div></div>'); + var $popdiv = $compile($pop)($scope); + $('body').append($popdiv); + $pop.find('div.close, button.cancel').on('click', function() { + $(this).closest('div.bg-modal').remove(); + }); + //默认为公式函数 + $scope.formula_type = 1; + //引用公式 选项卡 + $scope.togle_formula = function(){ + if($scope.formula_type == 1){ + $scope.formula_type = 2; + }else{ + $scope.formula_type = 1; + } + } + function insertAfterText(textDom, value) { //在光标后插入文本 + var selectRange; + if(document.selection) { + // IE Support + textDom.focus(); + selectRange = document.selection.createRange(); + selectRange.text = value; + $scope.formula_content = selectRange.text; + textDom.focus(); + } else if(textDom.selectionStart || textDom.selectionStart == '0') { + // Firefox support + var startPos = textDom.selectionStart; + var endPos = textDom.selectionEnd; + var scrollTop = textDom.scrollTop; + $scope.formula_content = $scope.formula_content.substring(0, startPos) + value + $scope.formula_content.substring(endPos, $scope.formula_content.length); + textDom.focus(); + textDom.selectionStart = startPos + value.length; + textDom.selectionEnd = startPos + value.length; + textDom.scrollTop = scrollTop; + } else { + $scope.formula_content += value; + textDom.focus(); + } + } + $scope.add_item = function(item) { //添加控件 + var formula_str = "[" + item.masDataDefineName + "]"; + insertAfterText(document.getElementById("formula_content"), formula_str); + } + $scope.add_mecode = function(item, event) { + http_service.post("base/data/element/info", { + "code": item.masDataDefineCode + }, function(res) { + _.each($scope.form_data_choose, function(_form) { + if(_form == item) { + _form['edl_data'] = res.data.data; + _form['show_edl'] = true; + } else { + _form['show_edl'] = false; + } + }) + }); + + event.stopPropagation(); + } + $scope.close_edl = function(event) { + _.each($scope.form_data_choose, function(_form) { + _form['show_edl'] = false; + }); + event.stopPropagation(); + event.preventDefault(); + } + $scope.add_edl = function(item, data) { + insertAfterText(document.getElementById("formula_content"), '[' + item.masDataDefineName + '.' + data.meName + ']'); + _.each($scope.form_data_choose, function(_form) { + if(_form == item) { + _form['edl'] = data; + } + }); + } + $scope.add_fx = function(fx) { + insertAfterText(document.getElementById("formula_content"), fx.showTemplate); + } + $scope.add_rf = function(rf) { + var rf_str = "[公式:" + rf.name + "]"; + insertAfterText(document.getElementById("formula_content"), rf_str); + } + + function formula_save(){ // 保存公式 数据 + var formula_str = $scope.formula_content; + var str = $scope.formula_content, + reg = /\[(.*?)\]/g, + code_arr = [], + x = null; + while((x = reg.exec(str)) != null) { + code_arr.push(x[1]); + } + + var formula_code = []; + _.each(code_arr, function(code, i) { + var pType = 10, + item_code = code; + if(item_code) { + if(item_code.indexOf("公式:") >= 0) { + pType = 20; + item_code = item_code.replace("公式:", ""); + + _.each($scope.referenceFormula, function(item) { + if(item_code == item.name) { + formula_code.push({ + "joinMathId": item.id, + "pType": pType, + "pIndex": (i + 1) + }); + formula_str = formula_str.replace("[" + code + "]", "{" + (i + 1) + "}"); + } + + }) + } + + if(item_code.indexOf(".") >= 0) { + var arr = item_code.split('.'); + _.each($scope.form_data_choose, function(item) { + if(arr[0] == item.masDataDefineName) { + _.each(item.edl_data, function(eldata) { + var arr_meName = _.split(arr[1],"("); + if(eldata.meName == arr_meName[0]) { + formula_code.push({ + "mdCode": item.masDataDefineCode, + 'mdName':item.masDataDefineName, + "pType": eldata.meType, + "pIndex": (i + 1), + "meCode": eldata.meCode, + "meName": eldata.meName, + "defVal":_.trim(arr_meName[1],")") + }); + } + }) + formula_str = formula_str.replace("[" + code + "]", "{" + (i + 1) + "}"); + } + }) + } else { + _.each($scope.form_data_choose, function(item) { + var item_def = _.split(item_code,"("); + if(item_def[0] == item.masDataDefineName) { + formula_code.push({ + "mdCode": item.masDataDefineCode, + 'mdName':item.masDataDefineName, + "pType": item.eleNameDataType, + "pIndex": (i + 1), + "meCode": item.eleCodeCode, + "defVal":_.trim(item_def[1],")") + }); + formula_str = formula_str.replace("[" + code + "]", "{" + (i + 1) + "}"); + } + }) + } + + } + + }); + _.each($scope.fx_data, function(fx) { + if(formula_str.indexOf(fx.fx_str) != -1) { + formula_str = formula_str.replace(fx.fx_str, fx.fx_formula_str); + } + }) + // var mResultFromat; + // _.each($scope.mResultFromat,function(_result){ + // if(_result.code == $scope.value_type){ + // mResultFromat = _result.value; + // } + // }); + // var post_data = { + // "child":formula_code, + // "mCount":formula_str, + // "mType":10, + // "mView":$scope.formula_content, + // "mResultFromat":mResultFromat + // } + // http_service.post("form/math/insert",post_data,function(res){ + if($scope.formula_content == "" || $scope.formula_content == undefined) { + formula = []; + } else { + // formula = [{ + // "mCount" : formula_str, + //// "mName" : "公式名称", + // "mResultFromat" :mResultFromat, + // "mType" : 10, + // "mView" : $scope.formula_content, + // "child" : formula_code + // }] ; + formula.count = formula_str; + formula.resultFromat = $scope.formula.resultFromat; + formula.view = $scope.formula_content; + formula.child = formula_code; +// formula.type = $scope.formula.type; + if (formula.id) { + http_service.post('systemMath/update', formula, function(res) { + if(res.data.opState) { +// $scope.tsuccess("系统变量["+formula.name+"]更新成功!") + refres_sysMath(); + } + }); + } else { + http_service.post('systemMath/insert', formula, function(res) { + if(res.data.opState) { + if(formula.name == undefined){ + $scope.terro("请添加系统变量") + }else{ + $scope.tsuccess("系统变量["+formula.name+"]新增成功!") + $scope.formulaList.push(formula); + refres_sysMath(); + } + } else { + $scope.terro("系统变量["+formula.name+"]新增失败!") + } + }); + } + } + $pop.find('div.close, button.cancel').closest('div.bg-modal').remove(); + // }); + } + + $scope.formula_commit = function() { //保存公式 + if(back_data != undefined && back_data.length > 0){ + $scope.back_num = 0; + _.each(back_data,function(bd){ + http_service.post("base/data/element/info", { + "code": bd.mdCode + }, function(res) { + _.each($scope.form_data_choose, function(_form) { + if(_form.masDataDefineCode == bd.mdCode) { + _form['edl_data'] = res.data.data; + } + }); + $scope.back_num++; + }); + }) + var back_data_check = $scope.$watch(function(){ + return $scope.back_num; + },function(){ + if($scope.back_num != 0 && $scope.back_num == back_data.length){ + formula_save(); + back_data_check();// 清除$watch + } + }) + }else{ + formula_save(); + } + } + } + + + + + var deletefo =true; + $scope.del_formula = function(formula) { + $rootScope.swalWhether({ "title": "确定删除?", 'text': "若补助标准或表单中已使用此系统变量,可能会导致异常" }, + function() { + if(deletefo){ + deletefo =false; + + http_service.post('systemMath/delete', formula, function(res) { + if(res.data.opState) { + deletefo =true; + $rootScope.swalsuccess({ "text": "系统变量["+formula.name+"]删除成功!" }, + refres_sysMath() + ) + } else { + deletefo =true; + $rootScope.swalerror({ "text": "系统变量["+formula.name+"]删除失败!"}) + } + }); + } + }); + + } + + $scope.refdata = function(){ + http_service.post('flow/syunOrganization', {}, function(res) { + if(res.data.opState){ + $rootScope.tsuccess("同步成功"); + }else{ + $rootScope.terro("同步组织机构失败"); + } + }) + } + }]); \ No newline at end of file diff --git a/src/static/js/templates_center/module.js b/src/static/js/templates_center/module.js new file mode 100644 index 0000000..630b2bd --- /dev/null +++ b/src/static/js/templates_center/module.js @@ -0,0 +1,518 @@ +angular.module('templates_center', []) + .factory('fileReader', ["$q", "$log", function($q, $log) { //图片转换base64 + var onLoad = function(reader, deferred, scope) { + return function() { + scope.$apply(function() { + deferred.resolve(reader.result); + }); + }; + }; + var onError = function(reader, deferred, scope) { + return function() { + scope.$apply(function() { + deferred.reject(reader.result); + }); + }; + }; + var getReader = function(deferred, scope) { + var reader = new FileReader(); + reader.onload = onLoad(reader, deferred, scope); + reader.onerror = onError(reader, deferred, scope); + return reader; + }; + var readAsDataURL = function(file, scope) { + var deferred = $q.defer(); + var reader = getReader(deferred, scope); + reader.readAsDataURL(file); + return deferred.promise; + }; + return { + readAsDataUrl: readAsDataURL + }; + }]) + .controller('templatesCenterCtrl', ['$scope', '$compile', 'http_service', '$routeParams', 'fileReader', '$http', '$rootScope',function($scope, $compile, http_service, $routeParams, fileReader, $http,$rootScope) { + $scope.step = $routeParams.step; + $scope.img_show_flag = false; + $scope.temp_show_falg = false; + $scope.$on('$viewContentLoaded', function() { + $('div.split_form').height($(document).height() - 52); + $(window).resize(function() { + $('div.split_form').height($(document).height() - 52); + }); + }); + + /* + $(document).off('click').on('click', function() { + if($('div.industry_menu_pane').is(':visible')){ + $('div.industry_menu_pane').remove(); + } + }); + */ + http_service.post('indusExten/list', {}, function(res) { + $rootScope.search_hint(res.data.data,'arrary'); + $scope.indus_templates = res.data.data; + _.each($scope.indus_templates, function(_temp) { + _temp.inBigIcon = "travel-web" + _temp.inBigIcon; + _temp.img_show_flag = false; + }); + }) + $scope.show_saved_form = function(business, type, action, templateid) { + $scope.business = business; + $scope.type = type; + $scope.action = action; + $scope.templateid = templateid; + var $form = $('<div saved-form business="business" type="type" unedit="1" action="action" templateid="templateid" ></div>'); + $('div.form_container').html($form); + $compile($form)($scope); + } + $scope.show_saved_form_insert = function(business, type, action) { + $scope.business = business; + $scope.type = type; + $scope.action = action; + var $form = $('<div saved-form business="business" type="type" action="action" ></div>'); + $('div.form_container').html($form); + $compile($form)($scope); + } + $scope.update = function(e) { + http_service.post('indusExten/list', {}, function(res) { + $rootScope.search_hint(res.data.data,'arrary'); + $scope.indus_templates = res.data.data; + _.each($scope.indus_templates, function(_temp) { + _temp.inBigIcon = "travel-web" + _temp.inBigIcon; + _temp.img_show_flag = false; + }); + }) + } + + $scope.show_industry_menu_pane = function(e) { + $("div.industry_menu_pane").remove(); + var $element = $('<div class="industry_menu_pane"><ul><li ng-click="add_industry()">新增行业</li><li>修改行业</li><li>删除行业</li></ul></div>'); + $('body').append($element); + $compile($element)($scope); + $element.css({ + 'top': e.pageY + 10, + 'left': e.pageX + 10 + }); + e.stopPropagation(); + } + + $scope.add_industry = function(e) { + $("div.industry_menu_pane").html('<div class="col-md-4"><label class="col-md-2">行业名称</label><input type="text" class="col-md-3"></div>'); + } + //点击空白 隐藏标识符 + $scope.show_sign_all = function() { + _.each($scope.indus_templates, function(_temp) { + _temp.o1 = {}; + _temp.num1 = 0; + _temp.o1_budget = {}; + _temp.num1_budget = 0; + _.each(_temp.budgets, function(_budgets) { + _budgets.o1_detail = {}; + _budgets.num1_detail = 0; + }); + _temp.o1_apply = {}; + _temp.num1_apply = 0; + _.each(_temp.applys, function(_apply) { + _apply.o1_detail = {}; + _apply.num1_detail = 0; + }); + _temp.o1_reimbursement = {}; + _temp.num1_reimbursement = 0; + _.each(_temp.expends, function(_expend) { + _expend.o1_detail = {}; + _expend.num1_detail = 0; + }) + }) + $scope.temp_show_falg = false; + // $(event).stopPropagation(); + // $(event).preventDefault(); + + } + //显示、隐藏标识符 + $scope.show_sign = function(template) { + $scope.temp_show_falg = true; + $scope.images = ''; + if(template.num1 == 1) { + template.num1 = 0; + template.o1 = {}; + } else { + _.each($scope.indus_templates, function(_temp) { + _temp.o1 = {}; + _temp.num1 = 0; + if(_temp == template) { + _temp.num1 = 0; + _temp.num2 = 0; + _temp.num3 = 0; + _temp.o1 = { opacity: 1 }; + } + }); + template.num1 = 1; + } + + // $scope.o2={}; + // $scope.inCode=1; + } + //获取图片信息 + $scope.img_change = function(files) { + $scope.imgIcon = files; + fileReader.readAsDataUrl($scope.imgIcon[0], $scope).then(function(res) { + $scope.images = res; + }); + $scope.img_change_flag = true; + $scope.indus_templates[this.$index].img_show_flag = true; + } + //添加、修改、删除行业信息表单 + $scope.indus_change = function(template, type) { + var pd = {}; + if(type == 1) { //添加 + if(!/\.(jpg|jpeg|png)$/.test($scope.imgIcon[0].name.toLowerCase())) { + $scope.$parent.twarning("图片格式必须为jpg,jpeg,png中的一种"); + return false; + } +// else { +// var img = new Image(); +// img.src = filepath; +// while(true) { +// if(img.fileSize > 0) { +// if(img.fileSize > 5 * 1024) { +// $scope.$parent.twarning("图片不大于5M。"); +// return false; +// } +// break; +// } +// +// } +// } + $http({ + method: 'post', + url: './travel-web/upload', + headers: { + 'Content-Type': undefined + }, + data: { + fileName: $scope.imgIcon[0], + problemType: '3' + }, + transformRequest: function(data, headersGetter) { + var formData = new FormData(); + angular.forEach(data, function(value, key) { + formData.append(key, value); + }); + return formData; + } + }).then(function(res) { + + if (res && res.data.opState === false) { + $scope.$parent.terro(res.data.errMsg + "(图片格式必须为jpg,jpeg,png中的一种)") + return false; + } else { + pd = { + "inName": $scope.template_title, + "inDesc": template.inDesc, + "inBigIcon": res.data.data, + "inSqu": template.inSqu, + }; + http_service.post('indus/insert', pd, function(result) { + if(result.data.opState) { + $scope.$parent.tsuccess("添加成功!") + setTimeout(function() { + reload(); + }) + } else { + $scope.$parent.terro("添加失败") + reload() + } + }); + } + + }, function(err) { + //alert("添加失败"); + $scope.$parent.terro("添加失败!") + + }); + // fileReader.readAsDataUrl($scope.imgIcon[0],$s cope).then(function(res){ + // var path = res; + // }) + + + + + } else if(type == 2) { //修改 + if(!/\.(jpg|jpeg|png)$/.test($scope.imgIcon[0].name.toLowerCase())) { + $scope.$parent.twarning("图片格式必须为jpg,jpeg,png中的一种"); + return false; + } +// else { +// var img = new Image(); +// img.src = filepath; +// while(true) { +// if(img.fileSize > 0) { +// if(img.fileSize > 5 * 1024) { +// $scope.$parent.twarning("图片不大于5M。"); +// return false; +// } +// break; +// } +// +// } +// } + if($scope.img_change_flag) { + $http({ + method: 'post', + url: './travel-web/upload', + headers: { + 'Content-Type': undefined + }, + data: { + fileName: $scope.imgIcon[0], + problemType: '3' + }, + transformRequest: function(data, headersGetter) { + var formData = new FormData(); + angular.forEach(data, function(value, key) { + formData.append(key, value); + }); + return formData; + } + }).then(function(res) { + if (res && res.data.opState === false) { + $scope.$parent.terro(res.data.errMsg + "(图片格式必须为jpg,jpeg,png中的一种)") + return false; + } else { + pd = { + "inName": $scope.template_title, + "inCode": template.inCode, + "inBigIcon": res.data.data + }; + http_service.post('indus/update', pd, function(result) { + //alert("修改成功"); + if(result.data.opState) { + $scope.$parent.tsuccess("修改成功!") + reload() + setTimeout("window.location.reload()") + } else { + $scope.$parent.terro("修改失败!") + } + }); + } + }, function(err) { + //alert(false); + // swal({ + // title: "错误", + // text:false, + // type: "error", + // confirmButtonText: "确定", + // }) + $scope.$parent.terro(false) + + }); + } else { + pd = { + "inName": $scope.template_title, + "inCode": template.inCode + }; + http_service.post('indus/update', pd, function(result) { + //alert("修改成功"); + if(result.data.opState) { + $scope.$parent.tsuccess("修改成功!") + reload() + } else { + $scope.$parent.terro("修改失败!") + + } + }); + } + + } else { + + } + template.num1 = 0; + template.num2 = 0; + template.num3 = 0; + template.o1 = {}; + } + //显示、隐藏预算单 + $scope.show_sign_budget = function(template) { + $scope.temp_show_falg = true; + if(template.num1_budget == 1) { + template.num1_budget = 0; + template.o1_budget = {}; + } else { + _.each($scope.indus_templates, function(_temp) { + if(_temp == template) { + _temp.num1_budget = 0; + _temp.o1_budget = { opacity: 1 }; + } + }); + template.num1_budget = 1; + } + + } + //显示、隐藏申请单 + $scope.show_sign_apply = function(template) { + $scope.temp_show_falg = true; + if(template.num1_apply == 1) { + template.num1_apply = 0; + template.o1_apply = {}; + } else { + _.each($scope.indus_templates, function(_temp) { + if(_temp == template) { + _temp.num1_apply = 0; + _temp.o1_apply = { opacity: 1 }; + } + }); + template.num1_apply = 1; + } + + } + //显示、隐藏报销单 + $scope.show_sign_reimbursement = function(template) { + $scope.temp_show_falg = true; + if(template.num1_reimbursement == 1) { + template.num1_reimbursement = 0; + template.o1_reimbursement = {}; + } else { + _.each($scope.indus_templates, function(_temp) { + if(_temp == template) { + _temp.num1_reimbursement = 0; + _temp.o1_reimbursement = { opacity: 1 }; + } + }); + template.num1_reimbursement = 1; + } + + } + //显示、隐藏预算详细单 + $scope.show_sign_budget_detail = function(template, budget) { + $scope.temp_show_falg = true; + if(budget.num1_detail == 1) { + budget.num1_detail = 0; + budget.o1_detail = {}; + } else { + _.each($scope.indus_templates, function(_temp) { + if(_temp == template) { + _.each(_temp.budgets, function(_budget) { + if(budget == _budget) { + _budget.num1_detail = 0; + _budget.num2 = 0; + _budget.num3 = 0; + _budget.o1_detail = { opacity: 1 }; + } + }) + } + }); + budget.num1_detail = 1; + } + + } + //显示、隐藏申请详细单 + $scope.show_sign_apply_budget_detail = function(template, apply) { + $scope.temp_show_falg = true; + if(apply.num1_detail == 1) { + apply.num1_detail = 0; + apply.o1_detail = {}; + } else { + _.each($scope.indus_templates, function(_temp) { + if(_temp == template) { + _.each(_temp.applys, function(_apply) { + if(apply == _apply) { + _apply.num1_detail = 0; + _apply.num2 = 0; + _apply.num3 = 0; + _apply.o1_detail = { opacity: 1 }; + } + }) + } + }); + apply.num1_detail = 1; + } + + } + //显示、隐藏报销详细单 + $scope.show_sign_extend_detail = function(template, extend) { + $scope.temp_show_falg = true; + if(extend.num1_detail == 1) { + extend.num1_detail = 0; + extend.o1_detail = {}; + } else { + _.each($scope.indus_templates, function(_temp) { + if(_temp == template) { + _.each(_temp.expends, function(_extend) { + if(extend == _extend) { + _extend.num1_detail = 0; + _extend.num2 = 0; + _extend.num3 = 0; + _extend.o1_detail = { opacity: 1 }; + } + }) + } + }); + extend.num1_detail = 1; + } + + } + //设置删除弹窗按钮颜色 + // function getBackgroundColor() { + // var rgb = $('#top').css('background-color'); + // rgb = rgb.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/); + // function hex(x) { + // return("0" + parseInt(x).toString(16)).slice(-2); + // } + // rgb = "#" + hex(rgb[1]) + hex(rgb[2]) + hex(rgb[3]); + // return rgb; + // }; + // $scope.btncolor = getBackgroundColor(); + + function reload() { + $scope.update(); + } + //删除表单模版 + $scope.delete_form = function(form) { + // swal({ + // title: "确定删除?", + // text: "您将无法恢复这些文件!", + // type: "warning", + // showCancelButton: true, + // confirmButtonColor: $scope.btncolor, + // confirmButtonText: "确定", + // cancelButtonText: "取消", + // closeOnConfirm: false + // }, + var deletefo =true; + $rootScope.swalWhether({ "title": "确定删除?", 'text': "" }, + function() { + if(deletefo){ + deletefo =false; + http_service.post("template/delete", { "guId": form.guId }, function(res) { + if(res.data.opState) { + $rootScope.swalsuccess({ "text": "成功删除!" }, + reload() + ) + + } else { + $rootScope.swalerror({ "text": "删除失败" }) + } + }); + } + }); + } + //删除行业 + $scope.delete_indus = function(template) { + var deleteind=true; + $rootScope.swalWhether({ "title": "确定删除?", 'text': "" }, + function() { + if(deleteind){ + deleteind=false; + http_service.post("indus/delete", { "inCode": template.inCode }, function(res) { + if(res.data.opState) { + $rootScope.swalsuccess({ "text": "成功删除!" }, + reload() + ) + } else { + $rootScope.swalerror({ "text": res.data.errMsg }) + } + }); + } + }); + } + }]); \ No newline at end of file diff --git a/src/static/js/travel_expense/module.js b/src/static/js/travel_expense/module.js new file mode 100644 index 0000000..2d37779 --- /dev/null +++ b/src/static/js/travel_expense/module.js @@ -0,0 +1,4195 @@ +angular.module('travel_expense', ['ngDraggable']) + .directive('dropDownSelector', ['$rootScope', 'http_service', function($rootScope, http_service) { + return { + restrict: 'EACM', + scope: { + 'filterlist': '=', + 'refreshdata': '&' + }, + templateUrl: './static/templates/drop_down_selector.html', + link: function($scope, element, attrs) { + $(document).off('click').on('click', function() { + if($('div.drop_down_sel').is(':visible')) { + $('div.drop_down_sel').remove(); + } + }); + $(element).on('click', function(e) { + $scope.save(); + e.stopPropagation(); + }) + // $scope.listfilter = function(list){ + // var arr = []; + // _.each(list,function(_list){ + // if(_list.gc_cpn_type != 10){ + // arr.push(_list); + // } + // }); + // return arr; + // } + $scope.save = function() { + var cfg_list = _.filter($scope.filterlist, function(o) { + return o.selected; + }); + var cfg = []; + _.each(cfg_list, function(cfg_item) { + cfg.push(_.pick(cfg_item, ['sfCfgType', 'sfFieldName'])); + }); + http_service.post('showFieldCfg/update', { + "child": cfg + }, function(res) { + if(res.status === 200) { + $scope.refreshdata(); + } else { + //alert('查询内容更新失败。'); + $scope.$parent.terro("查询内容更新失败!") + } + }); + } + } + } + }]) + .directive('detailPopup', ['$rootScope', 'http_service', '$timeout', function($rootScope, http_service, $timeout) { + return { + restrict: 'EACM', + scope: { + type: "=", + billid: "@", + edit: '=', + iscreate: "@" + }, + templateUrl: './static/templates/travel_expense_detail_popup.html?v=12292330', + link: function($scope, element, attrs) { + $scope.init_btn_flag = true; + $rootScope.form_id = undefined;//初始化表单ID + $rootScope.lock_key = undefined;//初始化钥匙 + $scope.save_btn_flag = true; + $rootScope.startTime = undefined; + $rootScope.endTime = undefined; + $rootScope.sumMoney_budget = undefined; + $scope.couldNumber = undefined; + $scope.exCouldNumber = undefined; + $scope.bill_commit_permission = "bill_commit_detail"; + $scope.rectification_show = false; + $scope.restart_review_show = false; + $scope.commitflag_bill = true; //提交按钮根据票据状态判断 初始值为true + //若无票据上传权限 则无票据上传按钮 + // if(app_userinfo.expendAllPermiss){ + // $scope.bill_commit_flag = true; + // }else{ + // $scope.bill_commit_flag = false; + // } + + + //打开查看图片新页面并且传值 + $scope.show_pic = function() { + if($scope.exCouldNumber) { + http_service.post("expend/get/order/pic", { 'orderCode': $scope.exCouldNumber }, function(res) { + var pic_data = res.data.data; + if(pic_data == undefined || pic_data.length == 0) { + $rootScope.twarning("无票据图片"); + return false; + } + // var pic_data = [{ 'picUrl':'http://localhost:8070/static/img/pic.png','picName':"aaaa"},{ 'picUrl':'http://localhost:8070/static/img/continue.png','picName':"bbbb"},{ 'picUrl':'http://localhost:8070/static/img/pic.png','picName':"aaaa"},{ 'picUrl':'http://localhost:8070/static/img/continue.png','picName':"bbbb"},{ 'picUrl':'http://localhost:8070/static/img/pic.png','picName':"aaaa"},{ 'picUrl':'http://localhost:8070/static/img/continue.png','picName':"bbbb"},{ 'picUrl':'http://localhost:8070/static/img/pic.png','picName':"aaaa"},{ 'picUrl':'http://localhost:8070/static/img/continue.png','picName':"bbbb"}]; + pic_data = JSON.stringify(pic_data); + $("#pic").attr('value', pic_data); + window.open('./static/templates/pic.html'); + }) + + } + + } + $scope.restart_review = function() { + if($scope.exCouldNumber) { + http_service.post("expend/order/backrule", { 'orderCode': $scope.exCouldNumber }, function(res) { + res.data.opState; + if (res.data.opState) { + $scope.$parent.tsuccess("单据已进入重新审单流程,请耐心等待!"); + $scope.restart_review_show = false; + $rootScope.reflect_bill(); + } else { + $scope.$parent.terro("订单来源必须是差旅费或费用云!"); + $rootScope.reflect_bill(); + } + }) + } + } + $scope.rectification = function(){ + if($scope.exCouldNumber != undefined){ + + $rootScope.swalWhether({ "title": "确认重新纠偏?", 'text': "重新纠偏将删除行程,可能造成数据损失,请谨慎操作!" }, function(res) { + + if(res == true){ + http_service.post("expend/backCorrect",{'orderCode':$scope.exCouldNumber},function(res){ + if(res.data.opState == true){ + $scope.edit = false; + $scope.editflag = false; + $rootScope.change_orderstatus("自动审单中"); + swal.close(); + } + }); + } + }); + } + } + var re_account_flag = true; + $scope.re_account = function() { + if(re_account_flag) { + re_account_flag = false; + http_service.post("flow/expend/add/order", { "tId": $scope.re_account_exid }, function(res) { + if(res.data.opState) { + $scope.$parent.tsuccess("重新记账成功"); + $scope.re_account_show = false; + if($rootScope.reflect_bill) { //刷新详情页面 + $rootScope.reflect_bill(); + } + } else { + $scope.$parent.terro("重新记账失败"); + re_account_flag = true; + if($rootScope.reflect_bill) { //刷新详情页面 + $rootScope.reflect_bill(); + } + } + }); + } + + } + if($scope.iscreate) { + $scope.btnflag = true; + } else { + $scope.btnflag = false; + } + + var update_url = ''; + if($scope.type === 10) { + update_url = 'budget/update'; + } else if($scope.type === 20) { + update_url = 'apply/update'; + } else if($scope.type === 30) { + update_url = 'expend/update'; + } + + function get_bill_data(form, data,cd_num,cd_type) { + var flag = !!data; + var bill_data = data || { + 'child': [], + 'fchild':[] + }; + if(!flag) { + var children = form.child; + if(children && children.length) { + var num = 0; + var pay_num = 0; + _.each(children, function(cd) { + var col_name = cd['gcColName']; + var _children = cd['child']; + if(col_name) { + var item_cus = $('*[gcColName="' + col_name + '"]'); + if(item_cus.is(':radio')) { + bill_data[col_name] = $('*[gcColName="' + col_name + '"]:checked').val(); + } else if(item_cus.attr("class") == "getDateTime ng-scope flatpickr-input") { + bill_data[col_name] = cd['render_value']; + } else if(item_cus.attr("class") == "select-container") { + bill_data[col_name] = $('*[gcColName="' + col_name + '"]:last').attr('value'); + } else if(item_cus.attr("choose_budget")) { //判断是否为预算选择控件 + bill_data[col_name] = $rootScope.budget_selected; + bill_data['buNumber'] = $rootScope.budget_selected; + } else if(item_cus.attr("choose_apply")) { //判断是否为申请选择控件 + bill_data[col_name] = $rootScope.expend_number_info; + bill_data['apNumber'] = $rootScope.expend_number_info; + } else if(item_cus.attr("user_selected")) { //判断是否为人员选择控件 + $rootScope.userId = $('*[gcColName="' + col_name + '"]').attr("user_selected"); + bill_data[col_name] = $('*[gcColName="' + col_name + '"]').attr("user_selected"); + } else if(item_cus.attr("org_selected")) { //判断是否为组织机构选择控件 + bill_data[col_name] = $('*[gcColName="' + col_name + '"]').attr("org_selected"); + } else if(item_cus.attr("selected_city")) { + bill_data[col_name] = $('*[gcColName="' + col_name + '"]').attr("selected_city"); + } else { + bill_data[col_name] = $('*[gcColName="' + col_name + '"]').val(); + } + } + if(_children && _children.length) { + if(cd.gcCpnType == 10){ + get_bill_data(cd, bill_data,num,1); + num++; + }else if(cd.gcCpnType == 17){ + get_bill_data(cd, bill_data,pay_num,2); + pay_num++; + } + } + }); + } + } else { + var children = form.child; + var num; + + + if(data.child == undefined) { + num = 0; + } else { + num = data.child.length; + } + if(children && children.length) { + var sub_form = { + 'child': [] + }; + if(form.billInfos != undefined){// 存储票据信息 + sub_form['billInfos'] = form.billInfos_str; + } + + _.each(children, function(cd) { + var col_name = cd['gcColName']; + var _children = cd['child']; + var type = cd['gcCpnType']; + + if(type === 12) { + sub_form[col_name] = $('*[gcColName="' + col_name + '"]:eq(' + cd_num + ')').attr("user_selected"); +// var budget_list = form['budget_list']; +// var user_id, _budget_list = []; +// _.each(budget_list, function(budget) { +// sub_form['child'].push({ +// "an_user_id": budget.userId, +// "child": _.map(budget.child, function(cld) { +// return { +// "jp_cd_code": cld['jp_cd_code'], +// "jp_amount": cld['jp_amount'] +// } +// }) +// }); +// }); + + } else { + if(col_name) { + if(cd.gcCpnType == 6) { + sub_form[col_name] = $('*[gcColName="' + col_name + '"]:eq(' + cd_num + ')').attr('value'); + } else { + sub_form[col_name] = $('*[gcColname="' + col_name + '"]:eq(' + cd_num + ')').val(); + } + } + } + + }); + if(form.ej_id) { + sub_form["ej_id"] = form.ej_id; + } + + // if(form.budget_list&&form.budget_list.length!=0){ + // var budget_list = form.budget_list[0].child; + // sub_form['child'].push({ + // "an_user_id":$rootScope.userId, + // "child": _.map(budget_list, function(cld) { + // return { + // "jp_cd_code": cld['jp_cd_code'], + // "jp_amount": cld['jp_amount'] + // } + // }) + // }); + // } + + } + if(cd_type == 1){ + bill_data['child'].push(sub_form); + }else if(cd_type == 2){ + bill_data['fchild'].push(sub_form); + } + } + var new_jour_arr = $rootScope.new_jour; + if (bill_data.child && new_jour_arr) { + if (bill_data.child.length == new_jour_arr.length) { + for (var i=0; i < bill_data.child.length; i++) { + bill_data.child[i].billInfos = new_jour_arr[i].jour.billInfos_str; + } + } + } + return bill_data; + + } + $scope.cancel = function() { + $(element).remove(); + $scope.close_lock(); + }; + $scope.close_lock = function(){ + + $rootScope.close_lock = true; + $rootScope.formula_num = 0; + $rootScope.formula_num_id = [];//页面关闭 则将前端公式计数清零 + if($rootScope.update_speical != undefined){//系统变量公式监听初始化 + $rootScope.update_speical(); + } + $rootScope.update_speical = undefined; + if($rootScope.update_speical_formula != undefined){//前端公式监听初始化 + $rootScope.update_speical_formula(); + } + $rootScope.update_speical_formula = undefined; + var key_data = { + "id":$rootScope.form_id, + "type":$scope.type, + "key":$rootScope.lock_key != undefined?$rootScope.lock_key:"" + } + http_service.post("form/closeForm",key_data,function(res){}) + } + //校验数字 + function numbercheck(form, child_item) { + var val = $('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').val(); + if(val != "") { + if(textcheck(form, val, child_item)) { //文本长度校验 + var reg0 = new RegExp("^([-]){0,1}([0-9]){1,}([.]){0,1}([0-9]){0,}$"); //校验是否为数字 + var reg1 = new RegExp("^-?\\d+$"); //校验是否为整数 + var reg2 = new RegExp("^-?\\d+(.[0-9]{0," + form.gcDmlLeng + "})?$"); //校验是否为n位小数 + if(!reg0.test(val)) { + $('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').after("<i class='errinfo'>请输入数字</i>"); + return false; + } else { + if(form.gcCpnFormat == 20) { //当条件为整数时 + if(!reg1.test(val)) { //不为整数 + $('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').after("<i class='errinfo'>必须为整数</i>"); + return false; + } else if(val.length > form.gcElLeng) { //长度超过限制 + $('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').after("<i class='errinfo'>长度不能超过" + form.gcElLeng + "</i>"); + return false; + } else { + return true; + } + } else { //当条件为允许小数时 + if(form.gcDmlLeng == undefined || _.trim(form.gcDmlLeng) == ''){ + return true; + }else if(!reg2.test(val)) { //超过n位小数 + $('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').after("<i class='errinfo'>小数位数不能超过" + form.gcDmlLeng + "位</i>"); + return false; + } else if(val.length > form.gcElLeng) { //长度超过限制 + $('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').after("<i class='errinfo'>长度不能超过" + form.gcElLeng + "</i>"); + return false; + } else { + return true; + } + } + } + } + + } else { + return true; + } + } + //判断并显示校验信息 + function showcheck(form, sValue, nValue, child_item) { + if(nValue != undefined) { + if(form.gcInputMust == 1) { //判断是否必填 必填 + var val; + if(form.gcCpnType == 6) { + val = $('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').attr("value"); + } else if(form.gcCpnType == 12) { + val = $('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').attr("user_selected"); + } else if(form.gcCpnType == 0) { + val = $rootScope.budget_selected + } else if(form.gcCpnType == 14) { + val = $rootScope.expend_number_info; + } else { + val = $('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').val(); + } + if(_.isNull(val) == false){ + val = val.replace(/\s/gi,''); + } + if(val == "" || _.isNull(val)) { + + if(form.gcCpnType == 5) { + $("<i class='errinfo'>" + form.gcCpnAlias + "不能为空</i>").appendTo($('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').closest(".timeinfo")); + } else { + $('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').after("<i class='errinfo'>" + form.gcCpnAlias + "不能为空</i>"); + } + return false; + } else { + switch(form.gcCheckOp) { + case "<": + if(sValue < nValue) { + if(form.gcCpnType == 5) { + $("<i class='errinfo'>" + form.gcErrorMsg + "</i>").appendTo($('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').closest(".timeinfo")); + } else { + $('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').after("<i class='errinfo'>" + form.gcErrorMsg + "</i>"); + } + return false; + } + break; + case "<=": + if(sValue <= nValue) { + if(form.gcCpnType == 5) { + $("<i class='errinfo'>" + form.gcErrorMsg + "</i>").appendTo($('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').closest(".timeinfo")); + } else { + $('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').after("<i class='errinfo'>" + form.gcErrorMsg + "</i>"); + } + return false; + } + break; + case ">": + if(sValue > nValue) { + if(form.gcCpnType == 5) { + $("<i class='errinfo'>" + form.gcErrorMsg + "</i>").appendTo($('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').closest(".timeinfo")); + } else { + $('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').after("<i class='errinfo'>" + form.gcErrorMsg + "</i>"); + } + return false; + } + break; + case ">=": + if(sValue >= nValue) { + if(form.gcCpnType == 5) { + $("<i class='errinfo'>" + form.gcErrorMsg + "</i>").appendTo($('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').closest(".timeinfo")); + } else { + $('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').after("<i class='errinfo'>" + form.gcErrorMsg + "</i>"); + } + return false; + } + break; + case "==": + if(sValue == nValue) { + if(form.gcCpnType == 5) { + $("<i class='errinfo'>" + form.gcErrorMsg + "</i>").appendTo($('*[gccolname="' + form.gcColName + '"]:last').closest(".timeinfo")); + } else { + $('*[gccolname="' + form.gcColName + '"]:last').after("<i class='errinfo'>" + form.gcErrorMsg + "</i>"); + } + return false; + } + break; + case "<>": + if(sValue != nValue) { + if(form.gcCpnType == 5) { + $("<i class='errinfo'>" + form.gcErrorMsg + "</i>").appendTo($('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').closest(".timeinfo")); + } else { + $('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').after("<i class='errinfo'>" + form.gcErrorMsg + "</i>"); + } + return false; + } + break; + } + } + } else { //判断是否必填 可为空 + switch(form.gcCheckOp) { + case "<": + if(sValue < nValue) { + if(form.gcCpnType == 5) { + $("<i class='errinfo'>" + form.gcErrorMsg + "</i>").appendTo($('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').closest(".timeinfo")); + } else { + $('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').after("<i class='errinfo'>" + form.gcErrorMsg + "</i>"); + } + return false; + } + break; + case "<=": + if(sValue <= nValue) { + if(form.gcCpnType == 5) { + $("<i class='errinfo'>" + form.gcErrorMsg + "</i>").appendTo($('*[gccolname="' + form.gcColName + '"]::eq(' + child_item + ')').closest(".timeinfo")); + } else { + $('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').after("<i class='errinfo'>" + form.gcErrorMsg + "</i>"); + } + return false; + } + break; + case ">": + if(sValue > nValue) { + if(form.gcCpnType == 5) { + $("<i class='errinfo'>" + form.gcErrorMsg + "</i>").appendTo($('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').closest(".timeinfo")); + } else { + $('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').after("<i class='errinfo'>" + form.gcErrorMsg + "</i>"); + } + return false; + } + break; + case ">=": + if(sValue >= nValue) { + if(form.gcCpnType == 5) { + $("<i class='errinfo'>" + form.gcErrorMsg + "</i>").appendTo($('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').closest(".timeinfo")); + } else { + $('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').after("<i class='errinfo'>" + form.gcErrorMsg + "</i>"); + } + return false; + } + break; + case "==": + if(sValue == nValue) { + if(form.gcCpnType == 5) { + $("<i class='errinfo'>" + form.gcErrorMsg + "</i>").appendTo($('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').closest(".timeinfo")); + } else { + $('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').after("<i class='errinfo'>" + form.gcErrorMsg + "</i>"); + } + return false; + } + break; + case "<>": + if(sValue != nValue) { + if(form.gcCpnType == 5) { + $("<i class='errinfo'>" + form.gcErrorMsg + "</i>").appendTo($('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').closest(".timeinfo")); + } else { + $('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').after("<i class='errinfo'>" + form.gcErrorMsg + "</i>"); + } + return false; + } + break; + } + } + } + } + //文本长度校验 + function textcheck(form, value, child_item) { + if(value.length <= form.gcElLeng) { + return true; + } else { + $('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').after("<i class='errinfo'>长度不能超过" + form.gcElLeng + "</i>"); + return false; + } + } + //获取占用预算控件内的日期 + function get_date() { + // $scope.str = "【预算部门】销售部、媒体部【预算日期】2017-01-01~2017-03-31【预算金额】RMB:30,000元【可用余额】RMB:25,000元"; + // $scope.str =$('.apply_control_input:last').val(); + var arr = []; + if(check_budget()) { + $scope.datestart = $rootScope.startTime; + $scope.dateend = $rootScope.endTime; + if($scope.datestart == undefined || $scope.dateend == undefined) { + return false; + } else { + arr = [$scope.datestart, $scope.dateend]; + } + } + return arr; + } + //判断是否为部门预算并判断是否为预算单 + function check_budget() { + if($scope.type != 10) { + if($scope.type == 20) { + return true; + } else { + return false; + } + } else { + return true; + } + } + //转化日期格式 + function replace_date(date) { + var y = date.getFullYear(); + var m = date.getMonth() + 1; + m = m < 10 ? '0' + m : m; + var d = date.getDate(); + d = d < 10 ? ('0' + d) : d; + return y + '-' + m + '-' + d; + } + + function addDate(dd, dadd) { + var a = $rootScope.getNewDate(dd) + a = a.valueOf() + a = a + dadd * 24 * 60 * 60 * 1000 + a = $rootScope.getNewDate(a) + return a; + } + + //验证申请单 出发日期+出差天数 是否在预算起始于截至日期范围内 + function applyDateCheck(form) { + var budget_date = get_date(); + if(budget_date) { + if(budget_date.length == 0) { + return false; + } + var start = $rootScope.getNewDate(budget_date[0].replace(/-/g, "/")); + var end = $rootScope.getNewDate(budget_date[1].replace(/-/g, "/")); + var mdCode_arr = []; + + _.each(filed, function(_filed) { + switch(_filed.busCode) { + case "FromDate": + mdCode_arr.push(_filed.mdCode); + break; + case "travelDays": + mdCode_arr.push(_filed.mdCode); + break; + } + }); + + var item_form = []; + _.each(mdCode_arr, function(_mdCode_arr) { + if(form && form.child !== undefined) { + _.each(form.child, function(_form) { + if(_form.gcMeCode == _mdCode_arr) { + item_form.push(_form); + } + }) + } + }); + + if(item_form && item_form.length > 0) { + if(item_form[0].render_value) { + var fromDate = $rootScope.getNewDate(item_form[0].render_value.replace(/-/g, "/")); + + if(fromDate < start || fromDate > end) { + $("<i class='errinfo'>" + item_form[0].gcCpnAlias + "不在选择的预算时间范围内</i>").appendTo($('*[gccolname="' + item_form[0].gcColName + '"]:last').closest(".timeinfo")); + } + + if(item_form[1].render_value) { + var travelDays = addDate(item_form[0].render_value, item_form[1].render_value); + if(travelDays < start || travelDays > end) { + $('*[gccolname="' + item_form[1].gcColName + '"]:last').after("<i class='errinfo'>" + item_form[0].gcCpnAlias + ' 和 ' + item_form[1].gcCpnAlias + "不在上级预算可用余额范围内</i>"); + } + } + } + } + + } + } + + //根据占用预算控件内的日期校验时间 + function datecheck(sDate, form) { + var datearr = get_date(); + var checkflag = false; + _.each(filed, function(_filed) { + switch(_filed.busCode) { + case "beginCalendar": + if(_filed.mdCode == form.gcMeCode) { + checkflag = true; + } + break; + case "endCalendar": + if(_filed.mdCode == form.gcMeCode) { + checkflag = true; + } + break; + } + }) + if(datearr != false && checkflag) { + datearr[0] = datearr[0].slice(0, 10); + datearr[1] = datearr[1].slice(0, 10); + var start = $rootScope.getNewDate(datearr[0].replace(/-/g, "/")); + var end = $rootScope.getNewDate(datearr[1].replace(/-/g, "/")); + if(start <= sDate && sDate <= end) { + return true; + } else { + $("<i class='errinfo'>" + form.gcCpnAlias + "不在选择的预算时间范围内</i>").appendTo($('*[gccolname="' + form.gcColName + '"]:last').closest(".timeinfo")); + return false; + } + } else { + return true; + } + } + //申请时间校验 + function check_applyDate() { + var datearr = get_date(); + var checkflag = false; + var apply_date_code, sDate, err_str; + _.each(filed, function(_filed) { + switch(_filed.busCode) { + case "applyDate": + apply_date_code = _filed.mdCode; + break; + } + }); + _.each($scope.form_data.child, function(form) { + if(form.gcMeCode == apply_date_code && form.gcMeCode != undefined) { + + sDate = $rootScope.getNewDate($('*[gccolname="' + form.gcColName + '"]').val().replace(/-/g, "/")); + checkflag = true; + err_str = form.gcCpnAlias + "不在选择的预算时间范围内"; + } + }); + if(datearr != false && checkflag && sDate) { + var start = $rootScope.getNewDate(datearr[0].replace(/-/g, "/")); + var end = $rootScope.getNewDate(datearr[1].replace(/-/g, "/")); + if(start <= sDate && sDate <= end) { + return true; + } else { + $rootScope.terro(err_str); + return false; + } + } else { + return true; + } + + } + //验证预算金额、申请金额 是否在上级预算范围内 + function check_sumMoney() { + if(check_budget() == false) { + return false; + } + var mdCode_arr = []; + _.each(filed, function(_filed) { + switch(_filed.busCode) { + case "budgetMoney": + mdCode_arr.push(_filed.mdCode); + break; + case "applyMoney": + mdCode_arr.push(_filed.mdCode); + break; + } + }); + _.each($scope.form_data.child, function(form) { + _.each(mdCode_arr, function(code) { + if(form.gcMeCode == code) { + if(form.render_value != undefined && form.render_value !== "") { + if(form.render_value > $rootScope.sumMoney_budget && $rootScope.sumMoney_budget != undefined) { + $('*[gccolname="' + form.gcColName + '"]:last').after("<i class='errinfo'>" + form.gcCpnAlias + "不在上级预算可用余额范围内</i>"); + } + } + } + }) + }) + } + //日期加天数 + function addDate(dd, dadd) { + var a = $rootScope.getNewDate(dd); + a = a.valueOf(); + a = a + dadd * 24 * 60 * 60 * 1000; + a = $rootScope.getNewDate(a); + return a; + } + //跨行程验证 开始时间 + function check_data_cross(type) { + if($scope.type == 10) { + return false; + } + if($scope.form_data == undefined){ + return false; + } + var jour_data = []; + _.each($scope.form_data.child, function(form) { + if(form.gcCpnType == 10) { + jour_data.push(form); + } + }); + var form_date = []; + var businessDays = []; + var leaveDate = []; + var form_date_code, businessDays_code, leaveDate_code; + _.each(filed, function(_filed) { + switch(_filed.busCode) { + case "FromDate": + form_date_code = _filed.mdCode; + break; + case "travelDays": + businessDays_code = _filed.mdCode; + break; + case "journeyEndDate": + leaveDate_code = _filed.mdCode; + break; + } + }) + if(jour_data.length > 1) { //当有一个以上行程才验证 + _.each(jour_data, function(_jour, i) { + _.each(_jour.child, function(cd) { + switch(cd.gcMeCode) { + case form_date_code: + if(type) { + form_date.push({ + "value": cd.render_value, + "item": cd + }); + } else { + form_date.push({ + "value": $('*[gccolname="' + cd.gcColName + '"]:eq(' + i + ')').val(), + "item": cd + }); + } + break; + case businessDays_code: + if(type) { + businessDays.push(cd.render_value); + } else { + businessDays.push($('*[gccolname="' + cd.gcColName + '"]:eq(' + i + ')').val()); + } + break; + case leaveDate_code: + if(type) { + leaveDate.push(cd.render_value); + } else { + leaveDate.push($('*[gccolname="' + cd.gcColName + '"]:eq(' + i + ')').val()); + } + break; + } + }); + }); + _.each(form_date, function(fdate, k) { + if($scope.type == 20) { + if(k > 0 && fdate.value != "" && fdate.value && form_date[k - 1].value != "" && form_date[k - 1].value && businessDays[k - 1] != "" && businessDays) { + var sDate = $rootScope.getNewDate(fdate.value); + var nDate = addDate(form_date[k - 1].value, businessDays[k - 1]); + if(sDate < nDate) { + if(type) { + $timeout(function() { + $('*[gccolname="' + fdate.item.gcColName + '"]:eq(' + k + ')').attr('color', 'red'); + $("<i class='errinfo_point' gcname="+fdate.item.gcColName+" gcnum="+k+">" + fdate.item.gcCpnAlias + "与上一行程未衔接</i>").appendTo($('*[gccolname="' + fdate.item.gcColName + '"]:eq(' + k + ')').closest(".timeinfo")); + }, 1) + } else { + $("<i class='errinfo_point' gcname="+fdate.item.gcColName+" gcnum="+k+">" + fdate.item.gcCpnAlias + "与上一行程未衔接</i>").appendTo($('*[gccolname="' + fdate.item.gcColName + '"]:eq(' + k + ')').closest(".timeinfo")); + } + } else if((sDate - nDate) != 0) { + if(type) { + $timeout(function() { + $('*[gccolname="' + fdate.item.gcColName + '"]:eq(' + k + ')').attr('color', 'red'); + $("<i class='errinfo_point' gcname="+fdate.item.gcColName+" gcnum="+k+">" + fdate.item.gcCpnAlias + "与上一行程不连续</i>").appendTo($('*[gccolname="' + fdate.item.gcColName + '"]:eq(' + k + ')').closest(".timeinfo")); + }, 1) + } else { + $("<i class='errinfo_point' gcname="+fdate.item.gcColName+" gcnum="+k+">" + fdate.item.gcCpnAlias + "与上一行程不连续</i>").appendTo($('*[gccolname="' + fdate.item.gcColName + '"]:eq(' + k + ')').closest(".timeinfo")); + } + } + } + } else if($scope.type == 30) { + if(k > 0 && fdate.value != "" && fdate.value && leaveDate[k - 1] != "" && leaveDate[k - 1]) { + var sDate = $rootScope.getNewDate(fdate.value); + var nDate = $rootScope.getNewDate(leaveDate[k - 1]); + if(sDate < nDate) { + if(type) { + $("<i class='errinfo_point' gcname="+fdate.item.gcColName+" gcnum="+k+">" + fdate.item.gcCpnAlias + "不可小于上一行程离开日期</i>").appendTo($('span[value="' + fdate.item.gcColName + '"]:eq(' + k + ')').closest(".timeinfo")); + } else { + $("<i class='errinfo_point' gcname="+fdate.item.gcColName+" gcnum="+k+">" + fdate.item.gcCpnAlias + "不可小于上一行程离开日期</i>").appendTo($('*[gccolname="' + fdate.item.gcColName + '"]:eq(' + k + ')').closest(".timeinfo")); + } + } else if((sDate - nDate) != 0) { + if(type) { + $("<i class='errinfo_point' gcname="+fdate.item.gcColName+" gcnum="+k+">" + fdate.item.gcCpnAlias + "与上一行程不连续</i>").appendTo($('span[value="' + fdate.item.gcColName + '"]:eq(' + k + ')').closest(".timeinfo")); + } else { + $("<i class='errinfo_point' gcname="+fdate.item.gcColName+" gcnum="+k+">" + fdate.item.gcCpnAlias + "与上一行程不连续</i>").appendTo($('*[gccolname="' + fdate.item.gcColName + '"]:eq(' + k + ')').closest(".timeinfo")); + } + } + } + } + }) + } + } + $rootScope.check_data_cross = function() { + check_data_cross(true); + } + //跨行程 验证 出发地 + function check_land_cross() { + if($scope.type == 10) { + return false; + } + if($scope.form_data == undefined){ + return false; + } + var jour_data = []; + _.each($scope.form_data.child, function(form) { + if(form.gcCpnType == 10) { + jour_data.push(form); + } + }); + var from_land = []; + var to_land = []; + var from_land_code, to_land_code; + _.each(filed, function(_filed) { + switch(_filed.busCode) { + case "journey_from": + from_land_code = _filed.mdCode; + break; + case "journey_to": + to_land_code = _filed.mdCode; + break; + } + }); + if(jour_data.length > 1) { //当有一个以上行程才验证 + _.each(jour_data, function(_jour, i) { + _.each(_jour.child, function(cd) { + switch(cd.gcMeCode) { + case from_land_code: + from_land.push({ + "value": $('*[gccolname="' + cd.gcColName + '"]:eq(' + i + ')').attr('value'), + "item": cd + }); + break; + case to_land_code: + to_land.push($('*[gccolname="' + cd.gcColName + '"]:eq(' + i + ')').attr('value')); + break; + } + }); + }); + _.each(from_land, function(fland, k) { + if(k > 0 && fland.value != "" && fland.value && to_land[k - 1] != "" && to_land[k - 1]) { + var sLand = fland.value; + var nLand = to_land[k - 1]; + if(sLand != nLand) { +// $('*[gccolname="' + fland.item.gcColName + '"]:eq(' + k + ')').after("<i class='errinfo_point' style='position:absolute'>" + fland.item.gcCpnAlias + "与上一行程的到达地不同</i>"); + $('*[gccolname="' + fland.item.gcColName + '"]:eq(' + k + ')').closest('.select').append("<i class='errinfo_point' gcname="+fland.item.gcColName+" gcnum="+k+" style='position:absolute;margin-top:4px;'>" + fland.item.gcCpnAlias + "与上一行程的到达地不同</i>"); + } + } + }) + } + } + //数据校验 + $rootScope.checkdata = function() { + $scope.checkdata(); + } + $scope.checkdata = function() { + var child_item = -1; //子表单索引 + var child_item_pay = -1;//支付方式子表单索引 + var form = $scope.form_data; + $(".errinfo").remove(); + $(".errinfo_point").remove(); + check_sumMoney(); + check_data_cross(false); + check_land_cross() + if($scope.type == 20) { + applyDateCheck(form); + } + _.each(form.child, function(_form) { + if(_form.gcCpnType !== 10 && _form.gcCpnType !== 17) { //判断是否为子表单 否 + if(_form.gcShowFlag != 0){//被隐藏的控件 不验证 + if(_form.gcCheckOp !== "" && _form.gcCheckOp != undefined) { //判断是否有校验规则 有 + if(_form.gcCheckCpnCode == "-1") { //判断是否根据固定值进行校验 是 + if(_form.gcCpnType == 5) { //判断是否为日期、时间 是 + var sDtate = $rootScope.getNewDate($('*[gccolname="' + _form.gcColName + '"]').val().replace(/-/g, "/")); + if(datecheck(sDtate, _form)) { + var nDate = $rootScope.getNewDate(_form.gcCheckValue.replace(/-/g, "/")); + showcheck(_form, sDtate, nDate, 0); + } + } else { + if(_form.gcCpnType == 7) { //判断是否为数字 是 + var numberflag = numbercheck(_form, 0); + if(numberflag) { + var sValue = parseFloat($('*[gccolname="' + _form.gcColName + '"]').val()); + var nValue = parseFloat(_form.gcCheckValue); + showcheck(_form, sValue, nValue, 0); + } + } else if(_form.gcCpnType == 1 || _form.gcCpnType == 2) { //判断是否为文本 是 + var sValue = $('*[gccolname="' + _form.gcColName + '"]').val(); + if(textcheck(_form, sValue, 0)) { + var nValue = _form.gcCheckValue; + showcheck(_form, sValue, nValue, 0); + } + } else { + var sValue = $('*[gccolname="' + _form.gcColName + '"]').val(); + var nValue = _form.gcCheckValue; + showcheck(_form, sValue, nValue, 0); + } + } + } else { //判断是否根据固定值进行校验 否 + if(_form.gcCpnType == 5) { //判断是否为日期时间 是 + var sDtate = $rootScope.getNewDate($('*[gccolname="' + _form.gcColName + '"]').val().replace(/-/g, "/")); + var nDate; + if(datecheck(sDtate, _form)) { + _.each(form.child, function(_formchild) { //找到与之比较的控件 + if(_formchild.gcMeCode == _form.gcCheckCpnCode) { + nDate = $rootScope.getNewDate($('*[gccolname="' + _formchild.gcColName + '"]').val().replace(/-/g, "/")); + } + }); + showcheck(_form, sDtate, nDate, 0); + } + + } else { //判断是否为日期时间 否 + if(_form.gcCpnType == 7) { //判断是否为数字 + var numberflag = numbercheck(_form, 0); + if(numberflag) { + var sValue = parseFloat($('*[gccolname="' + _form.gcColName + '"]').val()); + var nValue; + _.each(form.child, function(_formchild) { //找到与之比较的控件 + if(_formchild.gcMeCode == _form.gcCheckCpnCode) { + nValue = parseFloat($('*[gccolname="' + _formchild.gcColName + '"]').val()); + } + }); + showcheck(_form, sValue, nValue, 0); + } + + } else if(_form.gcCpnType == 1 || _form.gcCpnType == 2) { //判断是否为文本 是 + var sValue = $('*[gccolname="' + _form.gcColName + '"]').val(); + var nValue; + if(textcheck(_form, sValue, 0)) { + _.each(form.child, function(_formchild) { //找到与之比较的控件 + if(_formchild.gcMeCode == _form.gcCheckCpnCode) { + nValue = $('*[gccolname="' + _formchild.gcColName + '"]').val(); + } + }); + showcheck(_form, sValue, nValue, 0); + } + } else { + var sValue = $('*[gccolname="' + _form.gcColName + '"]').val(); + var nValue; + _.each(form.child, function(_formchild) { //找到与之比较的控件 + if(_formchild.gcMeCode == _form.gcCheckCpnCode) { + nValue = $('*[gccolname="' + _formchild.gcColName + '"]').val(); + } + }); + showcheck(_form, sValue, nValue, 0); + } + } + } + } else { //判断是否有校验规则 没有 + if(_form.gcInputMust == 1) { //判断是否必填 必填 + var val; + if(_form.gcCpnType == 6) { + val = $('*[gccolname="' + _form.gcColName + '"]:last').attr("value"); + } else if(_form.gcCpnType == 12) { + val = $('*[gccolname="' + _form.gcColName + '"]:last').attr("user_selected"); + } else if(_form.gcCpnType == 0) { + val = $rootScope.budget_selected; + } else if(_form.gcCpnType == 14) { + val = $rootScope.expend_number_info; + } else { + val = $('*[gccolname="' + _form.gcColName + '"]:last').val(); + } + if(_.isNull(val) == false){ + val = val.replace(/\s/gi,''); + } + if(val == "" || _.isNull(val)) { + + if(_form.gcCpnType == 5) { + $("<i class='errinfo'>" + _form.gcCpnAlias + "不能为空</i>").appendTo($('*[gccolname="' + _form.gcColName + '"]:last').closest(".timeinfo")); + } else { + $('*[gccolname="' + _form.gcColName + '"]:last').after("<i class='errinfo'>" + _form.gcCpnAlias + "不能为空</i>"); + } + } else { + if(_form.gcCpnType == 7) { //判断是否为数字 是 + numbercheck(_form, 0); + } else if(_form.gcCpnType == 1 || _form.gcCpnType == 2) { //判断是否为文本 + var sValue = $('*[gccolname="' + _form.gcColName + '"]').val(); + textcheck(_form, sValue, 0); + } else if(_form.gcCpnType == 5) { //判断是否为时间 是 + var sDtate = $rootScope.getNewDate($('*[gccolname="' + _form.gcColName + '"]').val().replace(/-/g, "/")); + datecheck(sDtate, _form); + } + } + } else { //判断是否必填 可为空 + if(_form.gcCpnType == 7) { //判断是否为数字 是 + numbercheck(_form, 0); + } else if(_form.gcCpnType == 1 || _form.gcCpnType == 2) { //判断是否为文本 + var sValue = $('*[gccolname="' + _form.gcColName + '"]').val().trim(val);; + textcheck(_form, sValue, 0); + } else if(_form.gcCpnType == 5) { //判断是否为时间 是 + var sDtate = $rootScope.getNewDate($('*[gccolname="' + _form.gcColName + '"]').val().replace(/-/g, "/")); + datecheck(sDtate, _form); + } + } + } + } + } else if(_form.gcCpnType == 10) { //判断是否为子表单 是 + child_item++; + _.each(_form.child, function(cd) { + if(cd.gcShowFlag != 0){//被隐藏的控件 不验证 + if(cd.gcCheckOp !== "" && cd.gcCheckOp != undefined) { //判断是否有校验规则 有 + if(cd.gcCheckCpnCode == "-1") { //判断是否根据固定值进行校验 是 + if(cd.gcCpnType == 5) { //判断是否为日期、时间 是 + var sDtate = $rootScope.getNewDate($('*[gccolname="' + cd.gcColName + '"]:eq(' + child_item + ')').val().replace(/-/g, "/")); + var nDate = $rootScope.getNewDate(cd.gcCheckValue.replace(/-/g, "/")); + showcheck(cd, sDtate, nDate, child_item); + + } else { + if(cd.gcCpnType == 7) { //判断是否为数字 是 + var numberflag = numbercheck(cd, child_item); + if(numberflag) { + var sValue = parseFloat($('*[gccolname="' + cd.gcColName + '"]:eq(' + child_item + ')').val()); + var nValue = parseFloat(cd.gcCheckValue); + showcheck(cd, sValue, nValue, child_item); + } + } else if(cd.gcCpnType == 1 || cd.gcCpnType == 2) { //判断是否为文本 是 + var sValue = $('*[gccolname="' + cd.gcColName + '"]:eq(' + child_item + ')').val(); + if(textcheck(cd, sValue, child_item)) { + var nValue = cd.gcCheckValue; + showcheck(cd, sValue, nValue, child_item); + } + } else { + var sValue = $('*[gccolname="' + cd.gcColName + '"]:eq(' + child_item + ')').val(); + var nValue = cd.gcCheckValue; + showcheck(cd, sValue, nValue, child_item); + } + } + + } else { //判断是否根据固定值进行校验 否 + + if(cd.gcCpnType == 5) { //判断是否为日期时间 是 + var sDtate = $rootScope.getNewDate($('*[gccolname="' + cd.gcColName + '"]:eq(' + child_item + ')').val().replace(/-/g, "/")); + var nDate; + _.each(_form.child, function(_formchild) { //找到与之比较的控件 + if(_formchild.gcMeCode == cd.gcCheckCpnCode) { + nDate = $rootScope.getNewDate($('*[gccolname="' + _formchild.gcColName + '"]:eq(' + child_item + ')').val().replace(/-/g, "/")) + } + }); + showcheck(cd, sDtate, nDate, child_item); + } else { //判断是否为日期时间 否 + if(cd.gcCpnType == 7) { //判断是否为数字 + var numberflag = numbercheck(cd, child_item); + if(numberflag) { + var sValue = parseFloat($('*[gccolname="' + cd.gcColName + '"]:eq(' + child_item + ')').val()); + var nValue; + _.each(_form.child, function(_formchild) { //找到与之比较的控件 + if(_formchild.gcMeCode == cd.gcCheckCpnCode) { + nValue = parseFloat($('*[gccolname="' + _formchild.gcColName + '"]:eq(' + child_item + ')').val()); + } + }); + showcheck(cd, sValue, nValue, child_item); + } + + } else if(cd.gcCpnType == 1 || cd.gcCpnType == 2) { //判断是否为文本 是 + var sValue = $('*[gccolname="' + cd.gcColName + '"]:eq(' + child_item + ')').val(); + var nValue; + if(textcheck(cd, sValue, child_item)) { + _.each(_form.child, function(_formchild) { //找到与之比较的控件 + if(_formchild.gcMeCode == cd.gcCheckCpnCode) { + nValue = $('*[gccolname="' + _formchild.gcColName + '"]:eq(' + child_item + ')').val(); + } + }); + showcheck(cd, sValue, nValue, child_item); + } + } else { + var sValue = $('*[gccolname="' + cd.gcColName + '"]:eq(' + child_item + ')').val(); + var nValue; + _.each(_form.child, function(_formchild) { //找到与之比较的控件 + if(_formchild.gcMeCode == cd.gcCheckCpnCode) { + nValue = $('*[gccolname="' + _formchild.gcColName + '"]:eq(' + child_item + ')').val(); + } + }); + showcheck(cd, sValue, nValue, child_item); + } + } + } + } else { //判断是否有校验规则 没有 + if(cd.gcInputMust == 1) { //判断是否必填 必填 + var val; + if(cd.gcCpnType == 6) { + val = $('*[gccolname="' + cd.gcColName + '"]:eq(' + child_item + ')').attr("value"); + }else if(cd.gcCpnType == 12) { + val = $('*[gccolname="' + cd.gcColName + '"]:eq('+child_item+')').attr("user_selected"); + } + else { + val = $('*[gccolname="' + cd.gcColName + '"]:eq(' + child_item + ')').val(); + } + if(_.isNull(val) == false){ + val = val.replace(/\s/gi,''); + } + if(val == "" || _.isNull(val)) { + if(cd.gcCpnType == 5) { + $("<i class='errinfo'>" + cd.gcCpnAlias + "不能为空</i>").appendTo($('*[gccolname="' + cd.gcColName + '"]:eq(' + ((child_item + 1) * 2 - 1) + ')').closest(".timeinfo")); + } else { + $('*[gccolname="' + cd.gcColName + '"]:eq(' + child_item + ')').after("<i class='errinfo'>" + cd.gcCpnAlias + "不能为空</i>"); + } + } else { + if(cd.gcCpnType == 7) { //判断是否为数字 是 + numbercheck(cd, child_item); + } else if(cd.gcCpnType == 1 || cd.gcCpnType == 2) { + var sValue = $('*[gccolname="' + cd.gcColName + '"]:eq(' + child_item + ')').val(); + textcheck(cd, sValue, child_item); + } + } + } else { //判断是否必填 可为空 + if(cd.gcCpnType == 7) { //判断是否为数字 是 + numbercheck(cd, child_item); + } else if(cd.gcCpnType == 1 || cd.gcCpnType == 2) { + var sValue = $('*[gccolname="' + cd.gcColName + '"]:eq(' + child_item + ')').val(); + textcheck(cd, sValue, child_item); + } + } + } + } + }) + }else if(_form.gcCpnType == 17){//判断是否为支付方式子表单 是 + child_item_pay++; + _.each(_form.child, function(cd) { + if(cd.gcShowFlag != 0){//被隐藏的控件 不验证 + if(cd.gcCheckOp !== "" && cd.gcCheckOp != undefined) { //判断是否有校验规则 有 + if(cd.gcCheckCpnCode == "-1") { //判断是否根据固定值进行校验 是 + if(cd.gcCpnType == 5) { //判断是否为日期、时间 是 + var sDtate = $rootScope.getNewDate($('*[gccolname="' + cd.gcColName + '"]:eq('+child_item_pay+')').val().replace(/-/g, "/")); + var nDate = $rootScope.getNewDate(cd.gcCheckValue.replace(/-/g, "/")); + showcheck(cd, sDtate, nDate,child_item_pay); + + } else { + if(cd.gcCpnType == 7) { //判断是否为数字 是 + var numberflag = numbercheck(cd,child_item_pay); + if(numberflag) { + var sValue = parseFloat($('*[gccolname="' + cd.gcColName + '"]:eq('+child_item_pay+')').val()); + var nValue = parseFloat(cd.gcCheckValue); + showcheck(cd, sValue, nValue,child_item_pay); + } + } else if(cd.gcCpnType == 1 || cd.gcCpnType == 2) { //判断是否为文本 是 + var sValue = $('*[gccolname="' + cd.gcColName + '"]:eq('+child_item_pay+')').val(); + if(textcheck(cd, sValue,child_item_pay)) { + var nValue = cd.gcCheckValue; + showcheck(cd, sValue, nValue,child_item_pay); + } + } else { + var sValue = $('*[gccolname="' + cd.gcColName + '"]:eq('+child_item_pay+')').val(); + var nValue = cd.gcCheckValue; + showcheck(cd, sValue, nValue,child_item_pay); + } + } + + } else { //判断是否根据固定值进行校验 否 + + if(cd.gcCpnType == 5) { //判断是否为日期时间 是 + var sDtate = $rootScope.getNewDate($('*[gccolname="' + cd.gcColName + '"]:eq('+child_item_pay+')').val().replace(/-/g, "/")); + var nDate; + _.each(_form.child, function(_formchild) { //找到与之比较的控件 + if(_formchild.gcMeCode == cd.gcCheckCpnCode) { + nDate = $rootScope.getNewDate($('*[gccolname="' + _formchild.gcColName + '"]:eq('+child_item_pay+')').val().replace(/-/g, "/")) + } + }); + showcheck(cd, sDtate, nDate,child_item_pay); + } else { //判断是否为日期时间 否 + if(cd.gcCpnType == 7) { //判断是否为数字 + var numberflag = numbercheck(cd,child_item_pay); + if(numberflag) { + var sValue = parseFloat($('*[gccolname="' + cd.gcColName + '"]:eq('+child_item_pay+')').val()); + var nValue; + _.each(_form.child, function(_formchild) { //找到与之比较的控件 + if(_formchild.gcMeCode == cd.gcCheckCpnCode) { + nValue = parseFloat($('*[gccolname="' + _formchild.gcColName + '"]:eq('+child_item_pay+')').val()); + } + }); + showcheck(cd, sValue, nValue,child_item_pay); + } + + } else if(cd.gcCpnType == 1 || cd.gcCpnType == 2) { //判断是否为文本 是 + var sValue = $('*[gccolname="' + cd.gcColName + '"]:eq('+child_item_pay+')').val(); + var nValue; + if(textcheck(cd, sValue,child_item_pay)) { + _.each(_form.child, function(_formchild) { //找到与之比较的控件 + if(_formchild.gcMeCode == cd.gcCheckCpnCode) { + nValue = $('*[gccolname="' + _formchild.gcColName + '"]:eq('+child_item_pay+')').val(); + } + }); + showcheck(cd, sValue, nValue,child_item_pay); + } + } else { + var sValue = $('*[gccolname="' + cd.gcColName + '"]:eq('+child_item_pay+')').val(); + var nValue; + _.each(_form.child, function(_formchild) { //找到与之比较的控件 + if(_formchild.gcMeCode == cd.gcCheckCpnCode) { + nValue = $('*[gccolname="' + _formchild.gcColName + '"]:eq('+child_item_pay+')').val(); + } + }); + showcheck(cd, sValue, nValue,child_item_pay); + } + } + } + } else { //判断是否有校验规则 没有 + if(cd.gcInputMust == 1) { //判断是否必填 必填 + var val; + if(cd.gcCpnType == 6){ + val = $('*[gccolname="' + cd.gcColName + '"]:eq('+child_item_pay+')').attr("value"); + }else if(cd.gcCpnType == 12) { + val = $('*[gccolname="' + cd.gcColName + '"]:eq('+child_item_pay+')').attr("user_selected"); + } + else{ + val = $('*[gccolname="' + cd.gcColName + '"]:eq('+child_item_pay+')').val(); + } + if(_.isNull(val) == false){ + val = val.replace(/\s/gi,''); + } + if(val == ""|| _.isNull(val)) { + + if(cd.gcCpnType == 5) { + $("<i class='errinfo'>" + cd.gcCpnAlias + "不能为空</i>").appendTo($('*[gccolname="' + cd.gcColName + '"]:eq('+((child_item_pay+1)*2-1)+')').closest(".timeinfo")); + } else { + $('*[gccolname="' + cd.gcColName + '"]:eq('+child_item_pay+')').after("<i class='errinfo'>" + cd.gcCpnAlias + "不能为空</i>"); + } + } else { + if(cd.gcCpnType == 7) { //判断是否为数字 是 + numbercheck(cd,child_item_pay); + } else if(cd.gcCpnType == 1 || cd.gcCpnType == 2) { + var sValue = $('*[gccolname="' + cd.gcColName + '"]:eq('+child_item_pay+')').val(); + textcheck(cd, sValue,child_item_pay); + } + } + } else { //判断是否必填 可为空 + if(cd.gcCpnType == 7) { //判断是否为数字 是 + numbercheck(cd,child_item_pay); + } else if(cd.gcCpnType == 1 || cd.gcCpnType == 2) { + var sValue = $('*[gccolname="' + cd.gcColName + '"]:eq('+child_item_pay+')').val(); + textcheck(cd, sValue,child_item_pay); + } + } + } + } + }) + } + }) + } + //保存发送请求 + function save_post(form_data, bill_type, auto_flag, auto_data,version) { + + var auto_post_flag = true; + if(auto_flag) { + var data = auto_data; + } else { + var data = get_bill_data(form_data); + } + var allcost = 0; + if($scope.form_data == undefined){ + is_click = true; + return false; + } + _.each($scope.form_data.child, function(cost) { + if(cost.gcCpnType == 10) { + if(cost.budget_list != undefined) { + if(cost.budget_list.length != 0) { + _.each(cost.budget_list, function(spell) { + allcost += parseFloat(spell.jp_amount); + }); + } + } + } + }); + data = _.extend(data, { "total": allcost }); + if($scope.type == 10) { + data['bu_temp_id'] = form_data.guId; + data['bu_id'] = form_data.ap_id; + } else if($scope.type == 20) { + data['ap_temp_id'] = form_data.guId; + data['ap_id'] = form_data.ap_id; + } else if($scope.type == 30) { + data['ex_temp_id'] = form_data.guId; + if(auto_flag){// 自动 更新 对比 报销单ID + if(auto_data.ex_id != undefined && form_data.ap_id != undefined && auto_data.ex_id != form_data.ap_id){ + auto_post_flag = false; + } + }else{// 非自动 更新不对比 + data['ex_id'] = form_data.ap_id; + } + } + // 报销单——订单编号字段 + if($scope.couldNumber) { + data['couldNumber'] = $scope.couldNumber; + } + // 报销单——公司代码字段 + if(getCookie("csc_comp_code")) { + data['ex_company'] = getCookie("csc_comp_code"); + } + var post_url; + if(auto_flag) { //自动更新时 接口不同 + post_url = 'expend/update/special'; + } else { + post_url = update_url; + } + + if($rootScope.get_all_err_data){ + var form_err = $rootScope.get_all_err_data();// 保存错误 信息 + + if(form_err != undefined){ + _.extend(data,{'errInfo':JSON.stringify(form_err)}); + } + } + + if(!auto_flag || (auto_flag && auto_post_flag)){ + if(version != undefined){//添加版本号 + _.extend(data,{"version":version}); + } + if($rootScope.lock_key != undefined){//添加钥匙 + _.extend(data,{"key":$rootScope.lock_key}); + } + http_service.post(post_url, data, function(res) { + if(!auto_flag) { + is_click = true; + $scope.couldNumber = undefined; + if(res.status === 200) { + //alert('成功更新'+bill_type+'。'); + // $scope.$parent.refreshdata(); + if(res.data.opState) { + $scope.$parent.tsuccess("成功更新" + bill_type + "") + $scope.$parent.refreshdata(); + $(element).remove(); + } else { +// $scope.$parent.terro("更新失败") + if(res.data.errMsg != undefined){ + $rootScope.twarning(res.data.errMsg); + }else{ + $scope.$parent.terro("更新失败") + } + } + } else { + //alert('更新'+bill_type+'失败。'); + $scope.$parent.terro("更新" + bill_type + "失败"); +// $rootScope.twarning(res.data.errMsg); + } + $(element).remove(); + } + }); + }else{ + is_click = true; + } + } + //详情页自动计算并计算完公式后自动更新 + $rootScope.save_post = function(auto_data) { + save_post($scope.form_data, "报销单", true, auto_data) + } + //修改确定 + var is_click = true; + $scope.create_bill = function() { + var form_data = $scope.form_data; + var bill_type = ""; + if($scope.type == 10) { + bill_type = "预算单"; + } else if($scope.type == 20) { + bill_type = "申请单"; + } else if($scope.type == 30) { + bill_type = "报销单"; + } + $timeout(function() { + if(is_click == false) { + return false; + } + is_click = false; + if($scope.type != 10) {// 申请单、报销单 详情保存时 计算费用 + $rootScope.query_journel_budget($scope.type, function(version) { + $timeout(function(){ + create_bill_save(form_data,bill_type,version); + }); + }, false); + } else { + create_bill_save(form_data,bill_type); + } +// $scope.checkdata(); +// if($(".errinfo").length == 0 && check_applyDate()) { +// if($scope.type == 10 && $rootScope.budget_selected != "") { +// http_service.post("budget/search/balance", { "buNumber": $rootScope.budget_selected }, function(result) { +// var budgetMoney_code; +// var save_flag = true; +// _.each(filed, function(_filed) { +// if(_filed.busCode == "budgetMoney") { +// budgetMoney_code = _filed.mdCode; +// } +// }) +// _.each($scope.form_data, function(form) { +// if(form.gcMeCode == budgetMoney_code) { +// if(form.render_value > result.data.data) { +// save_flag = false; +// is_click = true; +// $('*[gccolname="' + form.gcColName + '"]:last').after("<i class='errinfo'>" + form.gcCpnAlias + "不在上级预算可用余额范围内</i>"); +// } +// } +// }) +// if(save_flag) { +// save_post(form_data, bill_type, false); +// } +// }); +// } else { +// // 判断如果有错误提示 弹出确认框 +// if($(".errinfo_point").length > 0) { +// $rootScope.swalWhether({ "title": "确认保存?", 'text': "<p style='color:red'>提示:" + bill_type + "数据不符合标准</p><p style='color:red'>点击取消可查看</p>" }, function(res) { +// if(!res) { +// is_click = true; +// return false; +// } else { +// swal.close(); +// save_post(form_data, bill_type, false); +// } +// }); +// } else { +// save_post(form_data, bill_type, false); +// } +// } +// +// } else { +// is_click = true; +// } + }, 10); + }; + //详情保存 + function create_bill_save(form_data,bill_type,version){ + $scope.checkdata(); + if($(".errinfo").length == 0 && check_applyDate()) { + if($scope.type == 10 && $rootScope.budget_selected != "") { + http_service.post("budget/search/balance", { "buNumber": $rootScope.budget_selected }, function(result) { + var budgetMoney_code; + var save_flag = true; + _.each(filed, function(_filed) { + if(_filed.busCode == "budgetMoney") { + budgetMoney_code = _filed.mdCode; + } + }) + _.each($scope.form_data, function(form) { + if(form.gcMeCode == budgetMoney_code) { + if(form.render_value > result.data.data) { + save_flag = false; + is_click = true; + $('*[gccolname="' + form.gcColName + '"]:last').after("<i class='errinfo'>" + form.gcCpnAlias + "不在上级预算可用余额范围内</i>"); + } + } + }) + if(save_flag) { + save_post(form_data, bill_type, false,"",version); + } + }); + } else { + // 判断如果有错误提示 弹出确认框 + if($(".errinfo_point").length > 0) { + $rootScope.swalWhether({ "title": "确认保存?", 'text': "<p style='color:red'>提示:" + bill_type + "数据不符合标准</p><p style='color:red'>点击取消可查看</p>" }, function(res) { + if(!res) { + is_click = true; + return false; + } else { + swal.close(); + save_post(form_data, bill_type, false,"",version); + } + }); + } else { + save_post(form_data, bill_type, false,"",version); + } + } + + } else { + $rootScope.terro("存在未通过校验规则的控件,请检查",true); + is_click = true; + } + } + //显示iframe页面 + function getCookie(cname) { + var name = cname + "="; + var ca = document.cookie.split(';'); + for(var i = 0; i < ca.length; i++) { + var c = ca[i].trim(); + if(c.indexOf(name) == 0) return c.substring(name.length, c.length); + } + return ""; + } + var tokens = getCookie('token'); + var compid = getCookie("csc_compid"); + var tenantId = getCookie("tenantId"); + $scope.iframe_src = iframe_url + "views/order_create_visit.html?token="+tokens+"&compid="+compid+"&tenantId="+tenantId; +// $scope.iframe_src = "./static/templates/iframe_test.html"; + $scope.show_iframe = function() { + $scope.iframe_show = true; + var thisHeight = $(".bill_create_pop").height(); + $('#iframeId').height(thisHeight); + // var iframeHeight=document.getElementById("iframeId").contentWindow.document.body.offsetHeight; + } + $scope.close_iframe = function() { + $scope.iframe_show = false; + } + window.addEventListener("message", function(event) { + if(event.data != undefined && event.data.indexOf('=') != -1) { + var arr = event.data.split('='); + // 报销单 上传票据后 接收订单号 + $scope.couldNumber = arr[1]; + // if (arr[1]) { + // $scope.tsuccess("票据上传成功!"); + // } else { + // $scope.terro("票据上传失败!"); + // } + $scope.exCouldNumber = $scope.couldNumber; + + if($(".tool_icon").length != 0) { + //接收到订单号后 更新报销单 + http_service.post("expend/update/cloudNumber", { "ex_id": $rootScope.billid, "couldNumber": $scope.couldNumber }, function(res) { + if(res.status === 200) { + if(res.data.opState) { + // $scope.$parent.tsuccess("成功更新" + bill_type + ""); + if($rootScope.reflect_bill) { + $rootScope.reflect_bill(); + } + $scope.$parent.refreshdata(); + if($rootScope.refres_table_data){//审核成功后刷新列表 修改后 + $rootScope.refres_table_data(); + } + if($rootScope.refer_data_all) { //审核成功后刷新列表 + $rootScope.refer_data_all(); + } + if($rootScope.refer_data_budget) { //审核成功后刷新列表 + $rootScope.refer_data_budget(); + } + if($rootScope.refer_data_apply) { //审核成功后刷新列表 + $rootScope.refer_data_apply(); + } + if($rootScope.refer_data_expend) { //审核成功后刷新列表 + $rootScope.refer_data_expend(); + } + } else { + $scope.$parent.terro("更新失败") + } + } + }) + } + } + $timeout(function() { + $scope.iframe_show = false; + }, 1) + }, false); + + //关闭iframe页面并获取iframe页面的值 + window.getdata_iframe = function(couldNumber) { + $timeout(function() { + $scope.iframe_show = false; + }, 1) + } + //判断是否可以编辑和删除 + switch($scope.type) { + case 10: + $scope.editurl = 'flow/budget/can/edit'; + break; + case 20: + $scope.editurl = 'flow/apply/can/edit'; + break; + case 30: + $scope.editurl = 'flow/expend/can/edit'; + break; + } + //获取流程状态详情 + http_service.post($scope.editurl, { + "tId": $rootScope.billid + }, function(response) { + //获取预算,申请,报销记录 + switch($scope.type) { + case 10: + $scope.url = 'flow/budget/log'; + $scope.typeword = '预算流程'; + break; + case 20: + $scope.url = 'flow/apply/log'; + $scope.typeword = '申请流程'; + break; + case 30: + $scope.url = 'flow/expend/log'; + $scope.typeword = '报销流程'; + break; + } + http_service.post($scope.url, { + "tId": $rootScope.billid + }, function(res) { + $scope.res = res.data.data; + $scope.response = response.data.data; + $scope.editflag = $scope.response.edit; + $scope.deleteflag = $scope.response.edit; + $scope.commitflag = $scope.response.submit; + $scope.check = $scope.response.submit && $scope.response.edit ? "提交" : "审核"; + $scope.backflag = $scope.response.back; + $scope.data = $scope.response.data; + $scope.expendAllPermiss = app_userinfo.expendAllPermiss; + if($scope.res && $scope.res.length > 0) { + var flow_data = $scope.res[$scope.res.length - 1]; + if(flow_data.flStepCode == undefined) { + flow_data = $scope.res[$scope.res.length - 2]; + } + if(flow_data.flStepCode == 20) { + $scope.flow_back = true; + } + } + + //流程表单提交按钮响应事件 + $scope.commit_bill = function() { + if( !$scope.save_btn_flag || !$scope.init_btn_flag){// 计算完费用且显示完全后才可提交 + return false; + } + var cost_err; + if($scope.cost_err != undefined) { + if($scope.cost_err.length != 0) { + cost_err = "警告!费用不符合标准" + } else { + cost_err = ""; + } + } else if($('.errinfo').length > 0 || $('.errinfo_point').length > 0 || $('.is_red').length > 0 || $('.nobill_red').length > 0) { + cost_err = "警告!存在不符合标准信息"; + } else { + cost_err = ""; + } + if($scope.check == "提交") { + if($scope.type == 30) { //报销单中必须有行程且报销金额大于0才可提交 + var expendMoney_code; + var jour_flag = false; + var money_flag = true; + _.each(filed, function(_filed) { + if(_filed.busCode == "expendMoney") { + expendMoney_code = _filed.mdCode; + } + }); + _.each($scope.form_data.child, function(form) { + if(form.gcMeCode == expendMoney_code) { + var val = form.render_value; + if(val && val > 0) { + money_flag = true + } else { + money_flag = false; + } + } + if(form.gcCpnType == 10) { + jour_flag = true; + } + }); + if(!jour_flag) { + $rootScope.terro("必须有行程才可提交"); + return false; + } + if(!money_flag) { + $rootScope.terro("报销金额大于0才可提交"); + return false; + } + } + var approval = true; + $scope.checkdata(); //提交前校验规则 + if($('.errinfo').length > 0) { + return false; + } + $rootScope.swalWhether({ "title": "确认" + $scope.check + "?", 'text': cost_err }, + function() { + if(approval) { + approval = false; + $scope.param = _.extend({ + "tId": $rootScope.billid + }, $scope.data); + //判断表单类型 + switch($scope.type) { + case 10: + $scope.submiturl = 'flow/budget/submit'; + break; + case 20: + $scope.submiturl = 'flow/apply/submit'; + break; + case 30: + $scope.submiturl = 'flow/expend/submit'; + break; + } + + if($rootScope.get_all_err_data){ + var form_err = $rootScope.get_all_err_data();// 保存错误 信息 + + if(form_err != undefined){ + _.extend($scope.param,{'errInfo':JSON.stringify(form_err)}); + } + } + + if($rootScope.lock != undefined){//提交时 传锁头 + _.extend($scope.param,{'lock':$rootScope.lock}); + } + http_service.post($scope.submiturl, $scope.param, function(response) { + if(response.data.opState) { + $rootScope.swalsuccess({ "text": "流程表单" + $scope.check + "成功!" }) + $(element).remove(); + if($scope.$parent.refreshdata) { + $scope.$parent.refreshdata(); + } + if($rootScope.refres_table_data){//提交成功后刷新列表 修改后 + $rootScope.refres_table_data(); + } + if($rootScope.refer_data_all) { //提交成功后刷新列表 + $rootScope.refer_data_all(); + } + if($rootScope.refer_data_budget) { //提交成功后刷新列表 + $rootScope.refer_data_budget(); + } + if($rootScope.refer_data_apply) { //提交成功后刷新列表 + $rootScope.refer_data_apply(); + } + if($rootScope.refer_data_expend) { //提交成功后刷新列表 + $rootScope.refer_data_expend(); + } + } else { + // $rootScope.swalerror({ "text": "流程表单" + $scope.check + "失败!" }) + $rootScope.swalerror({ "text": response.data.errMsg }); + } + //$scope.$parent.tsuccess() + http_service.post($scope.editurl, { + "tId": $rootScope.billid + }, function(result) { + $scope.response = result.data.data; + $scope.editflag = $scope.response.edit; + $scope.deleteflag = $scope.response.edit; + $scope.commitflag = $scope.response.submit; + $scope.check = $scope.response.submit && $scope.response.edit ? "提交" : "审核"; + $scope.backflag = $scope.response.back; + }); + }) + } + }); + } else { + $scope.audit_commit_show = true; + $scope.back_commit_show = false; + } + }; + //关闭审核弹窗 + $scope.audit_commit_close = function() { + $scope.audit_commit_show = false; + $("#audit_commit_content_textarea").val(""); + } + //审核确定 + var audit_commit_wait = true; + $scope.audit_commit = function() { + if(audit_commit_wait) { + audit_commit_wait = false; + $scope.param = _.extend({ + "tId": $rootScope.billid, + "info": $("#audit_commit_content_textarea").val() + }, $scope.data); + var form_err = $rootScope.get_all_err_data();// 保存错误 信息 + if(form_err != undefined){ + _.extend($scope.param,{'errInfo':JSON.stringify(form_err)}); + } + + //判断表单类型 + switch($scope.type) { + case 10: + $scope.submiturl = 'flow/budget/submit'; + break; + case 20: + $scope.submiturl = 'flow/apply/submit'; + break; + case 30: + $scope.submiturl = 'flow/expend/submit'; + break; + } + http_service.post($scope.submiturl, $scope.param, function(response) { + audit_commit_wait = true; + if(response.data.opState) { + $rootScope.swalsuccess({ "text": "流程表单" + $scope.check + "成功!" }) + $(element).remove(); + if($rootScope.refres_table_data){//审核成功后刷新列表 修改后 + $rootScope.refres_table_data(); + } + if($rootScope.refer_data_all) { //审核成功后刷新列表 + $rootScope.refer_data_all(); + } + if($rootScope.refer_data_budget) { //审核成功后刷新列表 + $rootScope.refer_data_budget(); + } + if($rootScope.refer_data_apply) { //审核成功后刷新列表 + $rootScope.refer_data_apply(); + } + if($rootScope.refer_data_expend) { //审核成功后刷新列表 + $rootScope.refer_data_expend(); + } + } else { + // $rootScope.swalerror({ "text": "流程表单" + $scope.check + "失败!" }) + $rootScope.swalerror({ "text": response.data.errMsg }); + } + //$scope.$parent.tsuccess() + http_service.post($scope.editurl, { + "tId": $rootScope.billid + }, function(result) { + $scope.response = result.data.data; + $scope.editflag = $scope.response.edit; + $scope.deleteflag = $scope.response.edit; + $scope.commitflag = $scope.response.submit; + $scope.check = $scope.response.submit && $scope.response.edit ? "提交" : "审核"; + $scope.backflag = $scope.response.back; + }); + }) + } + } + //流程表单退回按钮响应事件 + $scope.back_bill = function() { + $scope.audit_commit_show = false; + $scope.back_commit_show = true; + // var disagree = true; + //// $rootScope.swalWhether({ "title": "确认退回表单?", 'text': "" }, + //// function() { + // if(disagree){ + // disagree = false; + // $scope.param = _.extend({ + // "tId": $rootScope.billid + // }, $scope.data); + // http_service.post('flow/budget/back', $scope.param, function(response) { + // if(response.data.opState) { + // $rootScope.swalsuccess({ "text": "退回成功!" }) + // } else { + // $rootScope.swalerror({ 'text': "退回失败!" }, + // function() { + // childDel(); + // }) + // } + // http_service.post($scope.editurl, { + // "tId": $rootScope.billid + // }, function(result) { + // $scope.response = result.data.data; + // $scope.editflag = $scope.response.edit; + // $scope.deleteflag = $scope.response.edit; + // $scope.commitflag = $scope.response.submit; + // $scope.check = $scope.response.submit && $scope.response.edit ? "提交" : "审核"; + // $scope.backflag = $scope.response.back; + // }); + // $(element).remove(); + // }) + // // swal({ + // // title: "完成", + // // text: "流程表单成功退回!", + // // type: "success", + // // confirmButtonText: "确定", + // // }); + // // + // + // $(element).remove(); + // } + // }) + }; + //退回确定 + var back_commit_wait = true; + $scope.back_commit = function() { + if(back_commit_wait) { + back_commit_wait = false; + $scope.param = _.extend({ + "tId": $rootScope.billid, + "info": $("#back_commit_content_textarea").val() + }, $scope.data); + var back_url; + switch($scope.type) { + case 10: + back_url = "flow/budget/back"; + break; + case 20: + back_url = 'flow/apply/back'; + break; + case 30: + back_url = 'flow/expend/back'; + break; + } + http_service.post(back_url, $scope.param, function(response) { + back_commit_wait = true; + if(response.data.opState) { + $rootScope.swalsuccess({ "text": "退回成功!" }) + if($rootScope.refres_table_data){//退回成功后刷新列表 修改后 + $rootScope.refres_table_data(); + } + if($rootScope.refer_data_all) { //退回成功后刷新列表 + $rootScope.refer_data_all(); + } + if($rootScope.refer_data_budget) { //退回成功后刷新列表 + $rootScope.refer_data_budget(); + } + if($rootScope.refer_data_apply) { //退回成功后刷新列表 + $rootScope.refer_data_apply(); + } + if($rootScope.refer_data_expend) { //退回成功后刷新列表 + $rootScope.refer_data_expend(); + } + } else { + // $rootScope.swalerror({ 'text': "退回失败!" }, + // function() { + // childDel(); + // }) + $rootScope.swalerror({ 'text': response.data.errMsg }, + function() { + childDel(); + }) + } + http_service.post($scope.editurl, { + "tId": $rootScope.billid + }, function(result) { + $scope.response = result.data.data; + $scope.editflag = $scope.response.edit; + $scope.deleteflag = $scope.response.edit; + $scope.commitflag = $scope.response.submit; + $scope.check = $scope.response.submit && $scope.response.edit ? "提交" : "审核"; + $scope.backflag = $scope.response.back; + }); + $(element).remove(); + }) + } + } + //关闭退回弹窗 + $scope.back_commit_close = function() { + $("#back_commit_content_textarea").val(""); + $scope.back_commit_show = false; + } + //判断是否有流程记录 + $scope.flowflag = $scope.response.flowStart; + //显示流程状态详情 + $scope.flowstatus = function() { + //存储流程信息 + $scope.flowDetail = []; + $scope.flow_status_show = $scope.flowflag; + + } + }) + + }) + + //删除按钮响应事件 + $scope.rm_bill = function() { + function childDel() { + var form_data = $scope.form_data; + var ap_id = form_data.ap_id; + var del_url = ''; + if($scope.type == 10) { + del_url = "budget/deletebudgets"; + var data = { + "child": [{ + "buId": ap_id, + "key":$rootScope.lock_key != undefined?$rootScope.lock_key:"" + }], + "insP": 1 //单个删除 用于后端权限判断 + }; + } else if($scope.type == 20) { + del_url = "apply/deleteApplys"; + var data = { + "child": [{ + "apId": ap_id, + "key":$rootScope.lock_key != undefined?$rootScope.lock_key:"" + }], + "insP": 1 //单个删除 用于后端权限判断 + }; + } else if($scope.type == 30) { + del_url = "expend/deleteExpends"; + var data = { + "child": [{ + "exId": ap_id, + "key":$rootScope.lock_key != undefined?$rootScope.lock_key:"" + }], + "insP": 1 //单个删除 用于后端权限判断 + }; + } + http_service.post(del_url, data, function(res) { + if(res.status == 200) { + $(element).remove(); + $scope.$parent.refreshdata(); + // swal({ + // title: "完成", + // text: "成功删除!", + // type: "success", + // confirmButtonText: "确定", + // }) + if(res.data.opState) { + $rootScope.swalsuccess({ "text": "成功删除!" }) + } else { + if(res.data.errMsg != undefined){ + $rootScope.swalerror({ "text": res.data.errMsg }) + }else{ + $rootScope.swalerror({ "text": "删除失败!" }) + } + + + } + + } + }); + }; + var deleteall = true; + $rootScope.swalWhether({ "title": "确定删除?", 'text': "" }, + function() { + if(deleteall) { + deleteall = false; + childDel(); + } + + }); + + }; + //删除单项项结束 + $(element).find('.close').on('click', function() { + $(element).remove(); + + }); + var edit_bill_flag = true; + $scope.edit_bill = function() { + if( !$scope.save_btn_flag){// 计算完费用后才可编辑 + return false; + } + if(!edit_bill_flag){ + return false; + } + var lock_key_url; + if($scope.type == "10"){//编辑验证锁 + lock_key_url = "budget/edit"; + }else if($scope.type == "20"){ + lock_key_url = "apply/edit"; + }else if($scope.type == "30"){ + lock_key_url = "expend/edit"; + } + lock_data = { + "type":$scope.type, + "id":$rootScope.form_id + }; + if($rootScope.lock != undefined){ + _.extend(lock_data,{"lock":$rootScope.lock}); + } + http_service.post(lock_key_url,lock_data,function(res){ + edit_bill_flag = true; + if(res.data.opState == true){ + $rootScope.lock_key = res.data.data; + $scope.edit = true; + $scope.bill_commit_permission = "bill_commit_update"; + $timeout(function() { + $scope.btnflag = true; + }, 10) + }else{ + $rootScope.twarning(res.data.errMsg); + } + }); + } + } + + } + }]) + .directive('billCreator', ['$rootScope', 'http_service', '$timeout', function($rootScope, http_service, $timeout) { + return { + restrict: 'EACM', + templateUrl: './static/templates/bill_create_popup.html?v=10211439', + link: function($scope, element, attrs) { + $scope.save_btn_flag = true; + $scope.init_btn_flag = false; + $rootScope.startTime = undefined; + $rootScope.endTime = undefined; + $rootScope.sumMoney_budget = undefined; + $scope.couldNumber = undefined; + $scope.exCouldNumber = undefined; + $scope.edit = true; + //若无票据上传权限 则无票据上传按钮 + // if(app_userinfo.expendAllPermiss){ + // $scope.bill_commit_flag = true; + // }else{ + // $scope.bill_commit_flag = false; + // } + function select_arr(select_arr) { + var str = ''; + if(select_arr && $.isArray(select_arr)) { + for(var i = 0; i < select_arr.length; i++) { + if(str != '') { str = str + ',' } + str = str + select_arr[i]; + } + return str; + } else { + return select_arr; + } + + } + + function get_bill_data(form, data,cd_num,cd_type) { + var flag = !!data; + var bill_data = data || { + 'child': [], + 'fchild':[] + }; + if(!flag) { + var children = form.child; + if(children && children.length) { + var num = 0; + var pay_num = 0; + _.each(children, function(cd) { + var col_name = cd['gcColName']; + var _children = cd['child']; + if(col_name) { + var item_cus = $('*[gcColName="' + col_name + '"]'); + if(item_cus.is(':radio')) { + bill_data[col_name] = $('*[gcColName="' + col_name + '"]:checked').val(); + } else if(item_cus.attr("class") == "getDateTime ng-scope flatpickr-input") { + bill_data[col_name] = cd['render_value']; + } else if(item_cus.attr("class") == "select-container") { + bill_data[col_name] = select_arr(cd['render_value']); + } else if(item_cus.attr("choose_budget")) { //判断是否为预算选择控件 + bill_data[col_name] = $rootScope.budget_selected; + bill_data['buNumber'] = $rootScope.budget_selected; + } else if(item_cus.attr("choose_apply")) { //判断是否为申请选择控件 + bill_data[col_name] = $rootScope.expend_number_info; + bill_data['apNumber'] = $rootScope.expend_number_info; + } else if(item_cus.attr("user_selected")) { //判断是否为人员选择控件 + $rootScope.userId = $('*[gcColName="' + col_name + '"]').attr("user_selected"); + bill_data[col_name] = $('*[gcColName="' + col_name + '"]').attr("user_selected"); + } else if(item_cus.attr("org_selected")) { //判断是否为组织机构选择控件 + bill_data[col_name] = $('*[gcColName="' + col_name + '"]').attr("org_selected"); + } else if(item_cus.attr("selected_city")) { + bill_data[col_name] = $('*[gcColName="' + col_name + '"]').attr("selected_city"); + } else { + bill_data[col_name] = $('*[gcColName="' + col_name + '"]').val(); + } + } + if(_children && _children.length) { + if(cd.gcCpnType == 10){ + get_bill_data(cd, bill_data,num,1); + num++; + }else if(cd.gcCpnType == 17){ + get_bill_data(cd, bill_data,pay_num,2); + pay_num++; + } + } + }); + } + } else{ + var children = form.child; + if(children && children.length) { + var sub_form = { + 'child': [] + }; + _.each(children, function(cd) { + var col_name = cd['gcColName']; + var _children = cd['child']; + var type = cd['gcCpnType']; + if(type === 12) { + sub_form[col_name] = $('*[gcColName="' + col_name + '"]:eq(' + cd_num + ')').attr("user_selected"); +// var budget_list = form['budget_list']; +// var user_id, _budget_list = []; +// _.each(budget_list, function(budget) { +// sub_form['child'].push({ +// "an_user_id": budget.userId, +// "child": _.map(budget.child, function(cld) { +// return { +// "jp_cd_code": cld['jp_cd_code'], +// "jp_amount": cld['jp_amount'] +// } +// }) +// }); +// }); + + } else { + if(col_name) { + if(cd.gcCpnType == 6) { + sub_form[col_name] = $('*[gcColName="' + col_name + '"]:eq(' + cd_num + ')').attr('value'); + } else { + sub_form[col_name] = $('*[gcColname="' + col_name + '"]:eq(' + cd_num + ')').val(); + } + } + } + + }); + // if(form.budget_list&&form.budget_list.length!=0){ + // var budget_list = form.budget_list[0].child; + // sub_form['child'].push({ + // "an_user_id":$rootScope.userId, + // "child": _.map(budget_list, function(cld) { + // return { + // "jp_cd_code": cld['jp_cd_code'], + // "jp_amount": cld['jp_amount'] + // } + // }) + // }); + // } + + } + if(cd_type == 1){ + bill_data['child'].push(sub_form); + }else if(cd_type == 2){ + bill_data['fchild'].push(sub_form); + } + } + return bill_data; + + } + + $scope.cancel = function() { + $(element).remove(); + }; + + //校验数字 + function numbercheck(form, child_item) { + var val = $('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').val(); + + + if(val != "") { + if(textcheck(form, val, child_item)) { //文本长度校验 + var reg0 = new RegExp("^([-]){0,1}([0-9]){1,}([.]){0,1}([0-9]){0,}$"); //校验是否为数字 + var reg1 = new RegExp("^-?\\d+$"); //校验是否为整数 + var reg2 = new RegExp("^-?\\d+(.[0-9]{0," + form.gcDmlLeng + "})?$"); //校验是否为n位小数 + if(!reg0.test(val)) { + $('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').after("<i class='errinfo'>请输入数字</i>"); + return false; + } else { + if(form.gcCpnFormat == 20) { //当条件为整数时 + if(!reg1.test(val)) { //不为整数 + + $('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').after("<i class='errinfo'>必须为整数</i>"); + return false; + } else if(val.length > form.gcElLeng) { //长度超过限制 + $('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').after("<i class='errinfo'>长度不能超过" + form.gcElLeng + "</i>"); + return false; + } else { + return true; + } + } else { //当条件为允许小数时 + if(form.gcDmlLeng == undefined || _.trim(form.gcDmlLeng) == ''){ + return true; + }else if(!reg2.test(val)) { //超过n位小数 + $('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').after("<i class='errinfo'>小数位数不能超过" + form.gcDmlLeng + "位</i>"); + return false; + } else if(val.length > form.gcElLeng) { //长度超过限制 + $('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').after("<i class='errinfo'>长度不能超过" + form.gcElLeng + "</i>"); + return false; + } else { + return true; + } + } + } + } + + } else { + return true; + } + } + //判断并显示校验信息 + function showcheck(form, sValue, nValue, child_item) { + if(nValue != undefined) { + if(form.gcInputMust == 1) { //判断是否必填 必填 + var val; + if(form.gcCpnType == 6) { + val = $('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').attr("value"); + } else if(form.gcCpnType == 12) { + val = $('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').attr("user_selected"); + } else if(form.gcCpnType == 0) { + val = $rootScope.budget_selected + } else if(form.gcCpnType == 14) { + val = $rootScope.expend_number_info; + } else { + val = $('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').val(); + } + if(_.isNull(val) == false){ + val = val.replace(/\s/gi,''); + } + if(val == "" || _.isNull(val)) { + + if(form.gcCpnType == 5) { + $("<i class='errinfo'>" + form.gcCpnAlias + "不能为空</i>").appendTo($('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').closest(".timeinfo")); + } else { + $('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').after("<i class='errinfo'>" + form.gcCpnAlias + "不能为空</i>"); + } + return false; + } else { + switch(form.gcCheckOp) { + case "<": + if(sValue < nValue) { + if(form.gcCpnType == 5) { + $("<i class='errinfo'>" + form.gcErrorMsg + "</i>").appendTo($('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').closest(".timeinfo")); + } else { + $('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').after("<i class='errinfo'>" + form.gcErrorMsg + "</i>"); + } + return false; + } + break; + case "<=": + if(sValue <= nValue) { + if(form.gcCpnType == 5) { + $("<i class='errinfo'>" + form.gcErrorMsg + "</i>").appendTo($('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').closest(".timeinfo")); + } else { + $('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').after("<i class='errinfo'>" + form.gcErrorMsg + "</i>"); + } + return false; + } + break; + case ">": + if(sValue > nValue) { + if(form.gcCpnType == 5) { + $("<i class='errinfo'>" + form.gcErrorMsg + "</i>").appendTo($('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').closest(".timeinfo")); + } else { + $('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').after("<i class='errinfo'>" + form.gcErrorMsg + "</i>"); + } + return false; + } + break; + case ">=": + if(sValue >= nValue) { + if(form.gcCpnType == 5) { + $("<i class='errinfo'>" + form.gcErrorMsg + "</i>").appendTo($('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').closest(".timeinfo")); + } else { + $('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').after("<i class='errinfo'>" + form.gcErrorMsg + "</i>"); + } + return false; + } + break; + case "==": + if(sValue == nValue) { + if(form.gcCpnType == 5) { + $("<i class='errinfo'>" + form.gcErrorMsg + "</i>").appendTo($('*[gccolname="' + form.gcColName + '"]:last').closest(".timeinfo")); + } else { + $('*[gccolname="' + form.gcColName + '"]:last').after("<i class='errinfo'>" + form.gcErrorMsg + "</i>"); + } + return false; + } + break; + case "<>": + if(sValue != nValue) { + if(form.gcCpnType == 5) { + $("<i class='errinfo'>" + form.gcErrorMsg + "</i>").appendTo($('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').closest(".timeinfo")); + } else { + $('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').after("<i class='errinfo'>" + form.gcErrorMsg + "</i>"); + } + return false; + } + break; + } + } + } else { //判断是否必填 可为空 + switch(form.gcCheckOp) { + case "<": + if(sValue < nValue) { + if(form.gcCpnType == 5) { + $("<i class='errinfo'>" + form.gcErrorMsg + "</i>").appendTo($('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').closest(".timeinfo")); + } else { + $('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').after("<i class='errinfo'>" + form.gcErrorMsg + "</i>"); + } + return false; + } + break; + case "<=": + if(sValue <= nValue) { + if(form.gcCpnType == 5) { + $("<i class='errinfo'>" + form.gcErrorMsg + "</i>").appendTo($('*[gccolname="' + form.gcColName + '"]::eq(' + child_item + ')').closest(".timeinfo")); + } else { + $('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').after("<i class='errinfo'>" + form.gcErrorMsg + "</i>"); + } + return false; + } + break; + case ">": + if(sValue > nValue) { + if(form.gcCpnType == 5) { + $("<i class='errinfo'>" + form.gcErrorMsg + "</i>").appendTo($('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').closest(".timeinfo")); + } else { + $('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').after("<i class='errinfo'>" + form.gcErrorMsg + "</i>"); + } + return false; + } + break; + case ">=": + if(sValue >= nValue) { + if(form.gcCpnType == 5) { + $("<i class='errinfo'>" + form.gcErrorMsg + "</i>").appendTo($('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').closest(".timeinfo")); + } else { + $('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').after("<i class='errinfo'>" + form.gcErrorMsg + "</i>"); + } + return false; + } + break; + case "==": + if(sValue == nValue) { + if(form.gcCpnType == 5) { + $("<i class='errinfo'>" + form.gcErrorMsg + "</i>").appendTo($('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').closest(".timeinfo")); + } else { + $('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').after("<i class='errinfo'>" + form.gcErrorMsg + "</i>"); + } + return false; + } + break; + case "<>": + if(sValue != nValue) { + if(form.gcCpnType == 5) { + $("<i class='errinfo'>" + form.gcErrorMsg + "</i>").appendTo($('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').closest(".timeinfo")); + } else { + $('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').after("<i class='errinfo'>" + form.gcErrorMsg + "</i>"); + } + return false; + } + break; + } + } + } + } + //文本长度校验 + function textcheck(form, value, child_item) { + + if(value.length <= form.gcElLeng) { + return true; + } else { + $('*[gccolname="' + form.gcColName + '"]:eq(' + child_item + ')').after("<i class='errinfo'>长度不能超过" + form.gcElLeng + "</i>"); + return false; + } + } + //获取占用预算控件内的日期 + function get_date() { + // $scope.str = "【预算部门】销售部、媒体部【预算日期】2017-01-01~2017-03-31【预算金额】RMB:30,000元【可用余额】RMB:25,000元"; + // $scope.str =$('.apply_control_input:last').val(); + var arr = []; + if(check_budget()) { + $scope.datestart = $rootScope.startTime; + $scope.dateend = $rootScope.endTime; + if($scope.datestart == undefined || $scope.dateend == undefined) { + return false; + } else { + arr = [$scope.datestart, $scope.dateend]; + } + } + return arr; + } + //判断是否为部门预算并判断是否为预算单 + function check_budget() { + if($scope.type != 10) { + if($scope.type == 20) { + return true; + } else { + return false; + } + } else { + return true; + } + } + + function addDate(dd, dadd) { + var a = $rootScope.getNewDate(dd) + a = a.valueOf() + a = a + dadd * 24 * 60 * 60 * 1000 + a = $rootScope.getNewDate(a) + return a; + } + + //验证申请单 出发日期+出差天数 是否在预算起始于截至日期范围内 + function applyDateCheck(form) { + var budget_date = get_date(); + if(budget_date) { + if(budget_date.length == 0) { + return false; + } + var start = $rootScope.getNewDate(budget_date[0].replace(/-/g, "/")); + var end = $rootScope.getNewDate(budget_date[1].replace(/-/g, "/")); + var mdCode_arr = []; + + _.each(filed, function(_filed) { + switch(_filed.busCode) { + case "FromDate": + mdCode_arr.push(_filed.mdCode); + break; + case "travelDays": + mdCode_arr.push(_filed.mdCode); + break; + } + }); + + var item_form = []; + _.each(mdCode_arr, function(_mdCode_arr) { + if(form && form.child !== undefined) { + _.each(form.child, function(_form) { + if(_form.gcMeCode == _mdCode_arr) { + item_form.push(_form); + } + }) + } + }); + + if(item_form && item_form.length > 0) { + if(item_form[0].render_value) { + var fromDate = $rootScope.getNewDate(item_form[0].render_value.replace(/-/g, "/")); + + if(fromDate < start || fromDate > end) { + $("<i class='errinfo'>" + item_form[0].gcCpnAlias + "不在选择的预算时间范围内</i>").appendTo($('*[gccolname="' + item_form[0].gcColName + '"]:last').closest(".timeinfo")); + } + + if(item_form[1].render_value) { + var travelDays = addDate(item_form[0].render_value, item_form[1].render_value); + if(travelDays < start || travelDays > end) { + $('*[gccolname="' + item_form[1].gcColName + '"]:last').after("<i class='errinfo'>" + item_form[0].gcCpnAlias + ' 和 ' + item_form[1].gcCpnAlias + "不在上级预算可用余额范围内</i>"); + } + } + } + } + + } + } + + //根据占用预算控件内的日期校验时间 + function datecheck(sDate, form) { + var datearr = get_date(); + var checkflag = false; + _.each(filed, function(_filed) { + switch(_filed.busCode) { + case "beginCalendar": + if(_filed.mdCode == form.gcMeCode) { + checkflag = true; + } + break; + case "endCalendar": + if(_filed.mdCode == form.gcMeCode) { + checkflag = true; + } + break; + } + }) + if(datearr != false && checkflag) { + var start = $rootScope.getNewDate(datearr[0].replace(/-/g, "/")); + var end = $rootScope.getNewDate(datearr[1].replace(/-/g, "/")); + if(start <= sDate && sDate <= end) { + return true; + } else { + $("<i class='errinfo'>" + form.gcCpnAlias + "不在选择的预算时间范围内</i>").appendTo($('*[gccolname="' + form.gcColName + '"]:last').closest(".timeinfo")); + return false; + } + } else { + return true; + } + } + //申请时间校验 + function check_applyDate() { + var datearr = get_date(); + var checkflag = false; + var apply_date_code, sDate, err_str; + _.each(filed, function(_filed) { + switch(_filed.busCode) { + case "applyDate": + apply_date_code = _filed.mdCode; + break; + } + }); + _.each($scope.form_data.child, function(form) { + if(form.gcMeCode == apply_date_code && form.gcMeCode != undefined) { + sDate = $rootScope.getNewDate($('*[gccolname="' + form.gcColName + '"]').val().replace(/-/g, "/")); + checkflag = true; + err_str = form.gcCpnAlias + "不在选择的预算时间范围内"; + } + }); + if(datearr != false && checkflag && sDate) { + var start = $rootScope.getNewDate(datearr[0].replace(/-/g, "/")); + var end = $rootScope.getNewDate(datearr[1].replace(/-/g, "/")); + if(start <= sDate && sDate <= end) { + return true; + } else { + $rootScope.terro(err_str); + return false; + } + } else { + return true; + } + + } + //验证预算金额、申请金额 是否在上级预算范围内 + function check_sumMoney() { + if(check_budget() == false) { + return false; + } + var mdCode_arr = []; + _.each(filed, function(_filed) { + switch(_filed.busCode) { + case "budgetMoney": + mdCode_arr.push(_filed.mdCode); + break; + case "applyMoney": + mdCode_arr.push(_filed.mdCode); + break; + } + }); + if($scope.form_data) { + _.each($scope.form_data.child, function(form) { + _.each(mdCode_arr, function(code) { + if(form.gcMeCode == code) { + if(form.render_value != undefined && form.render_value !== "") { + if(form.render_value > $rootScope.sumMoney_budget && $rootScope.sumMoney_budget != undefined) { + $('*[gccolname="' + form.gcColName + '"]:last').after("<i class='errinfo'>" + form.gcCpnAlias + "不在上级预算可用余额范围内</i>"); + } + } + } + }) + }) + } + + } + //日期加天数 + function addDate(dd, dadd) { + var a = $rootScope.getNewDate(dd); + a = a.valueOf(); + a = a + dadd * 24 * 60 * 60 * 1000; + a = $rootScope.getNewDate(a); + return a; + } + //跨行程验证 开始时间 + function check_data_cross(type) { + if($scope.type == 10) { + return false; + } + var jour_data = []; + if($scope.form_data == undefined) { + return false; + } + _.each($scope.form_data.child, function(form) { + if(form.gcCpnType == 10) { + jour_data.push(form); + } + }); + var form_date = []; + var businessDays = []; + var leaveDate = []; + var form_date_code, businessDays_code, leaveDate_code; + _.each(filed, function(_filed) { + switch(_filed.busCode) { + case "FromDate": + form_date_code = _filed.mdCode; + break; + case "travelDays": + businessDays_code = _filed.mdCode; + break; + case "journeyEndDate": + leaveDate_code = _filed.mdCode; + break; + } + }) + if(jour_data.length > 1) { //当有一个以上行程才验证 + _.each(jour_data, function(_jour, i) { + _.each(_jour.child, function(cd) { + switch(cd.gcMeCode) { + case form_date_code: + form_date.push({ + "value": $('*[gccolname="' + cd.gcColName + '"]:eq(' + i + ')').val(), + "item": cd + }); + break; + case businessDays_code: + businessDays.push($('*[gccolname="' + cd.gcColName + '"]:eq(' + i + ')').val()); + break; + case leaveDate_code: + leaveDate.push($('*[gccolname="' + cd.gcColName + '"]:eq(' + i + ')').val()); + break; + } + }); + }); + _.each(form_date, function(fdate, k) { + if($scope.type == 20) { + if(k > 0 && fdate.value != "" && fdate.value && form_date[k - 1].value != "" && form_date[k - 1].value && businessDays[k - 1] != "" && businessDays) { + var sDate = $rootScope.getNewDate(fdate.value); + var nDate = addDate(form_date[k - 1].value, businessDays[k - 1]); + if(sDate < nDate) { + if(type) { + $("<i class='errinfo_point'>" + fdate.item.gcCpnAlias + "与上一行程未衔接</i>").appendTo($('*[gccolname_date="' + fdate.item.gcColName + '"]:eq(' + k + ')').closest(".timeinfo")); + } else { + $("<i class='errinfo_point'>" + fdate.item.gcCpnAlias + "与上一行程未衔接</i>").appendTo($('*[gccolname="' + fdate.item.gcColName + '"]:eq(' + k + ')').closest(".timeinfo")); + } + } else if((sDate - nDate) != 0) { + if(type) { + $("<i class='errinfo_point'>" + fdate.item.gcCpnAlias + "与上一行程不连续</i>").appendTo($('*[gccolname_date="' + fdate.item.gcColName + '"]:eq(' + k + ')').closest(".timeinfo")); + } else { + $("<i class='errinfo_point'>" + fdate.item.gcCpnAlias + "与上一行程不连续</i>").appendTo($('*[gccolname="' + fdate.item.gcColName + '"]:eq(' + k + ')').closest(".timeinfo")); + } + } + } + } else if($scope.type == 30) { + if(k > 0 && fdate.value != "" && fdate.value && leaveDate[k - 1] != "" && leaveDate[k - 1]) { + var sDate = $rootScope.getNewDate(fdate.value); + var nDate = $rootScope.getNewDate(leaveDate[k - 1]); + if(sDate < nDate) { + if(type) { + $("<i class='errinfo_point'>" + fdate.item.gcCpnAlias + "不可小于上一行程离开日期</i>").appendTo($('*[gccolname_date="' + fdate.item.gcColName + '"]:eq(' + k + ')').closest(".timeinfo")); + } else { + $("<i class='errinfo_point'>" + fdate.item.gcCpnAlias + "不可小于上一行程离开日期</i>").appendTo($('*[gccolname="' + fdate.item.gcColName + '"]:eq(' + k + ')').closest(".timeinfo")); + } + } else if((sDate - nDate) != 0) { + if(type) { + $("<i class='errinfo_point'>" + fdate.item.gcCpnAlias + "与上一行程不连续</i>").appendTo($('span[value="' + fdate.item.gcColName + '"]:eq(' + k + ')').closest(".timeinfo")); + } else { + $("<i class='errinfo_point'>" + fdate.item.gcCpnAlias + "与上一行程不连续</i>").appendTo($('*[gccolname="' + fdate.item.gcColName + '"]:eq(' + k + ')').closest(".timeinfo")); + } + } + } + } + }) + } + } + //跨行程 验证 出发地 + function check_land_cross() { + if($scope.type == 10) { + return false; + } + var jour_data = []; + if($scope.form_data == undefined) { + return false; + } + _.each($scope.form_data.child, function(form) { + if(form.gcCpnType == 10) { + jour_data.push(form); + } + }); + var from_land = []; + var to_land = []; + var from_land_code, to_land_code; + _.each(filed, function(_filed) { + switch(_filed.busCode) { + case "journey_from": + from_land_code = _filed.mdCode; + break; + case "journey_to": + to_land_code = _filed.mdCode; + break; + } + }); + if(jour_data.length > 1) { //当有一个以上行程才验证 + _.each(jour_data, function(_jour, i) { + _.each(_jour.child, function(cd) { + switch(cd.gcMeCode) { + case from_land_code: + from_land.push({ + "value": $('*[gccolname="' + cd.gcColName + '"]:eq(' + i + ')').attr('value'), + "item": cd + }); + break; + case to_land_code: + to_land.push($('*[gccolname="' + cd.gcColName + '"]:eq(' + i + ')').attr('value')); + break; + } + }); + }); + _.each(from_land, function(fland, k) { + if(k > 0 && fland.value != "" && fland.value && to_land[k - 1] != "" && to_land[k - 1]) { + var sLand = fland.value; + var nLand = to_land[k - 1]; + if(sLand != nLand) { + $('*[gccolname="' + fland.item.gcColName + '"]:eq(' + k + ')').after("<i class='errinfo_point'>" + fland.item.gcCpnAlias + "与上一行程的到达地不同</i>"); + } + } + }) + } + } + //数据校验 + $rootScope.checkdata = function() { + $scope.checkdata(); + } + $scope.checkdata = function() { + var child_item = -1; //子表单索引 + var child_item_pay = -1//支付方式子表单索引 + var form = $scope.form_data; + $(".errinfo").remove(); + $(".errinfo_point").remove(); + check_sumMoney(); + check_data_cross(false); + check_land_cross(); + if($scope.type == 20) { + applyDateCheck(form); + } + if(form == undefined) { + return false; + } + _.each(form.child, function(_form) { + if(_form.gcCpnType !== 10 && _form.gcCpnType !== 17) {//判断是否为子表单 否 + if(_form.gcShowFlag != 0){//被隐藏的控件 不验证 + if(_form.gcCheckOp !== "" && _form.gcCheckOp != undefined) { //判断是否有校验规则 有 + if(_form.gcCheckCpnCode == "-1") { //判断是否根据固定值进行校验 是 + if(_form.gcCpnType == 5) { //判断是否为日期、时间 是 + var sDtate = $rootScope.getNewDate($('*[gccolname="' + _form.gcColName + '"]').val().replace(/-/g, "/")); + if(datecheck(sDtate, _form)) { + var nDate = $rootScope.getNewDate(_form.gcCheckValue.replace(/-/g, "/")); + showcheck(_form, sDtate, nDate, 0); + } + } else { + if(_form.gcCpnType == 7) { //判断是否为数字 是 + var numberflag = numbercheck(_form, 0); + if(numberflag) { + var sValue = parseFloat($('*[gccolname="' + _form.gcColName + '"]').val()); + var nValue = parseFloat(_form.gcCheckValue); + showcheck(_form, sValue, nValue, 0); + } + } else if(_form.gcCpnType == 1 || _form.gcCpnType == 2) { //判断是否为文本 是 + var sValue = $('*[gccolname="' + _form.gcColName + '"]').val(); + if(textcheck(_form, sValue, 0)) { + var nValue = _form.gcCheckValue; + showcheck(_form, sValue, nValue, 0); + } + } else { + var sValue = $('*[gccolname="' + _form.gcColName + '"]').val(); + var nValue = _form.gcCheckValue; + showcheck(_form, sValue, nValue, 0); + } + } + } else { //判断是否根据固定值进行校验 否 + if(_form.gcCpnType == 5) { //判断是否为日期时间 是 + var sDtate = $rootScope.getNewDate($('*[gccolname="' + _form.gcColName + '"]').val().replace(/-/g, "/")); + var nDate; + if(datecheck(sDtate, _form)) { + _.each(form.child, function(_formchild) { //找到与之比较的控件 + if(_formchild.gcMeCode == _form.gcCheckCpnCode) { + nDate = $rootScope.getNewDate($('*[gccolname="' + _formchild.gcColName + '"]').val().replace(/-/g, "/")); + } + }); + showcheck(_form, sDtate, nDate, 0); + } + + } else { //判断是否为日期时间 否 + if(_form.gcCpnType == 7) { //判断是否为数字 + var numberflag = numbercheck(_form, 0); + if(numberflag) { + var sValue = parseFloat($('*[gccolname="' + _form.gcColName + '"]').val()); + var nValue; + _.each(form.child, function(_formchild) { //找到与之比较的控件 + if(_formchild.gcMeCode == _form.gcCheckCpnCode) { + nValue = parseFloat($('*[gccolname="' + _formchild.gcColName + '"]').val()); + } + }); + showcheck(_form, sValue, nValue, 0); + } + + } else if(_form.gcCpnType == 1 || _form.gcCpnType == 2) { //判断是否为文本 是 + var sValue = $('*[gccolname="' + _form.gcColName + '"]').val(); + var nValue; + if(textcheck(_form, sValue, 0)) { + _.each(form.child, function(_formchild) { //找到与之比较的控件 + if(_formchild.gcMeCode == _form.gcCheckCpnCode) { + nValue = $('*[gccolname="' + _formchild.gcColName + '"]').val(); + } + }); + showcheck(_form, sValue, nValue, 0); + } + } else { + var sValue = $('*[gccolname="' + _form.gcColName + '"]').val(); + var nValue; + _.each(form.child, function(_formchild) { //找到与之比较的控件 + if(_formchild.gcMeCode == _form.gcCheckCpnCode) { + nValue = $('*[gccolname="' + _formchild.gcColName + '"]').val(); + } + }); + showcheck(_form, sValue, nValue, 0); + } + } + } + } else { //判断是否有校验规则 没有 + if(_form.gcInputMust == 1) { //判断是否必填 必填 + var val; + if(_form.gcCpnType == 6) { + val = $('*[gccolname="' + _form.gcColName + '"]:last').attr("value"); + } else if(_form.gcCpnType == 12) { + val = $('*[gccolname="' + _form.gcColName + '"]:last').attr("user_selected"); + } else if(_form.gcCpnType == 0) { + val = $rootScope.budget_selected; + } else if(_form.gcCpnType == 14) { + val = $rootScope.expend_number_info; + } else { + val = $('*[gccolname="' + _form.gcColName + '"]:last').val(); + } +// +// + if(_.isNull(val) == false){ + val = val.replace(/\s/gi,''); + } + if(val == "" || val == undefined || _.isNull(val)) { + + if(_form.gcCpnType == 5) { + $("<i class='errinfo'>" + _form.gcCpnAlias + "不能为空</i>").appendTo($('*[gccolname="' + _form.gcColName + '"]:last').closest(".timeinfo")); + } else { + $('*[gccolname="' + _form.gcColName + '"]:last').after("<i class='errinfo'>" + _form.gcCpnAlias + "不能为空</i>"); + } + } else { + if(_form.gcCpnType == 7) { //判断是否为数字 是 + numbercheck(_form, 0); + } else if(_form.gcCpnType == 1 || _form.gcCpnType == 2) { //判断是否为文本 + var sValue = $('*[gccolname="' + _form.gcColName + '"]').val(); + textcheck(_form, sValue, 0); + } else if(_form.gcCpnType == 5) { //判断是否为时间 是 + var sDtate = $rootScope.getNewDate($('*[gccolname="' + _form.gcColName + '"]').val().replace(/-/g, "/")); + datecheck(sDtate, _form); + } + } + } else { //判断是否必填 可为空 + if(_form.gcCpnType == 7) { //判断是否为数字 是 + numbercheck(_form, 0); + } else if(_form.gcCpnType == 1 || _form.gcCpnType == 2) { //判断是否为文本 + var sValue = $('*[gccolname="' + _form.gcColName + '"]').val(); + textcheck(_form, sValue, 0); + } else if(_form.gcCpnType == 5) { //判断是否为时间 是 + var sDtate = $rootScope.getNewDate($('*[gccolname="' + _form.gcColName + '"]').val().replace(/-/g, "/")); + datecheck(sDtate, _form); + } + } + } + } + } else if(_form.gcCpnType == 10) { //判断是否为子表单 是 + child_item++; + _.each(_form.child, function(cd) { + if(cd.gcShowFlag != 0){//被隐藏的控件 不验证 + if(cd.gcCheckOp !== "" && cd.gcCheckOp != undefined) { //判断是否有校验规则 有 + if(cd.gcCheckCpnCode == "-1") { //判断是否根据固定值进行校验 是 + if(cd.gcCpnType == 5) { //判断是否为日期、时间 是 + var sDtate = $rootScope.getNewDate($('*[gccolname="' + cd.gcColName + '"]:eq(' + child_item + ')').val().replace(/-/g, "/")); + var nDate = $rootScope.getNewDate(cd.gcCheckValue.replace(/-/g, "/")); + showcheck(cd, sDtate, nDate, child_item); + + } else { + if(cd.gcCpnType == 7) { //判断是否为数字 是 + var numberflag = numbercheck(cd, child_item); + if(numberflag) { + var sValue = parseFloat($('*[gccolname="' + cd.gcColName + '"]:eq(' + child_item + ')').val()); + var nValue = parseFloat(cd.gcCheckValue); + showcheck(cd, sValue, nValue, child_item); + } + } else if(cd.gcCpnType == 1 || cd.gcCpnType == 2) { //判断是否为文本 是 + var sValue = $('*[gccolname="' + cd.gcColName + '"]:eq(' + child_item + ')').val(); + if(textcheck(cd, sValue, child_item)) { + var nValue = cd.gcCheckValue; + showcheck(cd, sValue, nValue, child_item); + } + } else { + var sValue = $('*[gccolname="' + cd.gcColName + '"]:eq(' + child_item + ')').val(); + var nValue = cd.gcCheckValue; + showcheck(cd, sValue, nValue, child_item); + } + } + + } else { //判断是否根据固定值进行校验 否 + + if(cd.gcCpnType == 5) { //判断是否为日期时间 是 + var sDtate = $rootScope.getNewDate($('*[gccolname="' + cd.gcColName + '"]:eq(' + child_item + ')').val().replace(/-/g, "/")); + var nDate; + _.each(_form.child, function(_formchild) { //找到与之比较的控件 + if(_formchild.gcMeCode == cd.gcCheckCpnCode) { + nDate = $rootScope.getNewDate($('*[gccolname="' + _formchild.gcColName + '"]:eq(' + child_item + ')').val().replace(/-/g, "/")) + } + }); + showcheck(cd, sDtate, nDate, child_item); + } else { //判断是否为日期时间 否 + if(cd.gcCpnType == 7) { //判断是否为数字 + var numberflag = numbercheck(cd, child_item); + if(numberflag) { + var sValue = parseFloat($('*[gccolname="' + cd.gcColName + '"]:eq(' + child_item + ')').val()); + var nValue; + _.each(_form.child, function(_formchild) { //找到与之比较的控件 + if(_formchild.gcMeCode == cd.gcCheckCpnCode) { + nValue = parseFloat($('*[gccolname="' + _formchild.gcColName + '"]:eq(' + child_item + ')').val()); + } + }); + showcheck(cd, sValue, nValue, child_item); + } + + } else if(cd.gcCpnType == 1 || cd.gcCpnType == 2) { //判断是否为文本 是 + var sValue = $('*[gccolname="' + cd.gcColName + '"]:eq(' + child_item + ')').val(); + var nValue; + if(textcheck(cd, sValue, child_item)) { + _.each(_form.child, function(_formchild) { //找到与之比较的控件 + if(_formchild.gcMeCode == cd.gcCheckCpnCode) { + nValue = $('*[gccolname="' + _formchild.gcColName + '"]:eq(' + child_item + ')').val(); + } + }); + showcheck(cd, sValue, nValue, child_item); + } + } else { + var sValue = $('*[gccolname="' + cd.gcColName + '"]:eq(' + child_item + ')').val(); + var nValue; + _.each(_form.child, function(_formchild) { //找到与之比较的控件 + if(_formchild.gcMeCode == cd.gcCheckCpnCode) { + nValue = $('*[gccolname="' + _formchild.gcColName + '"]:eq(' + child_item + ')').val(); + } + }); + showcheck(cd, sValue, nValue, child_item); + } + } + } + } else{ //判断是否有校验规则 没有 + if(cd.gcInputMust == 1) { //判断是否必填 必填 + var val; + + if(cd.gcCpnType == 6) { + val = $('*[gccolname="' + cd.gcColName + '"]:eq(' + child_item + ')').attr("value"); + }else if(cd.gcCpnType == 12) { + val = $('*[gccolname="' + cd.gcColName + '"]:eq('+child_item+')').attr("user_selected"); + } + else { + val = $('*[gccolname="' + cd.gcColName + '"]:eq(' + child_item + ')').val(); + } + if(_.isNull(val) == false){ + val = val.replace(/\s/gi,''); + } + if(val == "" || _.isNull(val)) { + + if(cd.gcCpnType == 5) { + $("<i class='errinfo'>" + cd.gcCpnAlias + "不能为空</i>").appendTo($('*[gccolname="' + cd.gcColName + '"]:eq(' + ((child_item + 1) * 2 - 1) + ')').closest(".timeinfo")); + } else { + $('*[gccolname="' + cd.gcColName + '"]:eq(' + child_item + ')').after("<i class='errinfo'>" + cd.gcCpnAlias + "不能为空</i>"); + } + } else { + if(cd.gcCpnType == 7) { //判断是否为数字 是 + numbercheck(cd, child_item); + } else if(cd.gcCpnType == 1 || cd.gcCpnType == 2) { + var sValue = $('*[gccolname="' + cd.gcColName + '"]:eq(' + child_item + ')').val(); + textcheck(cd, sValue, child_item); + } + } + } else { //判断是否必填 可为空 + if(cd.gcCpnType == 7) { //判断是否为数字 是 + numbercheck(cd, child_item); + } else if(cd.gcCpnType == 1 || cd.gcCpnType == 2) { + var sValue = $('*[gccolname="' + cd.gcColName + '"]:eq(' + child_item + ')').val(); + textcheck(cd, sValue, child_item); + } + } + } + } + }) + }else if(_form.gcCpnType == 17){//判断是否为支付方式子表单 + child_item_pay++; + _.each(_form.child, function(cd) { + if(cd.gcShowFlag != 0){//被隐藏的控件 不验证 + if(cd.gcCheckOp !== "" && cd.gcCheckOp != undefined) { //判断是否有校验规则 有 + if(cd.gcCheckCpnCode == "-1") { //判断是否根据固定值进行校验 是 + if(cd.gcCpnType == 5) { //判断是否为日期、时间 是 + var sDtate = $rootScope.getNewDate($('*[gccolname="' + cd.gcColName + '"]:eq('+child_item_pay+')').val().replace(/-/g, "/")); + var nDate = $rootScope.getNewDate(cd.gcCheckValue.replace(/-/g, "/")); + showcheck(cd, sDtate, nDate,child_item_pay); + + } else { + if(cd.gcCpnType == 7) { //判断是否为数字 是 + var numberflag = numbercheck(cd,child_item_pay); + if(numberflag) { + var sValue = parseFloat($('*[gccolname="' + cd.gcColName + '"]:eq('+child_item_pay+')').val()); + var nValue = parseFloat(cd.gcCheckValue); + showcheck(cd, sValue, nValue,child_item_pay); + } + } else if(cd.gcCpnType == 1 || cd.gcCpnType == 2) { //判断是否为文本 是 + var sValue = $('*[gccolname="' + cd.gcColName + '"]:eq('+child_item_pay+')').val(); + if(textcheck(cd, sValue,child_item_pay)) { + var nValue = cd.gcCheckValue; + showcheck(cd, sValue, nValue,child_item_pay); + } + } else { + var sValue = $('*[gccolname="' + cd.gcColName + '"]:eq('+child_item_pay+')').val(); + var nValue = cd.gcCheckValue; + showcheck(cd, sValue, nValue,child_item_pay); + } + } + + } else { //判断是否根据固定值进行校验 否 + + if(cd.gcCpnType == 5) { //判断是否为日期时间 是 + var sDtate = $rootScope.getNewDate($('*[gccolname="' + cd.gcColName + '"]:eq('+child_item_pay+')').val().replace(/-/g, "/")); + var nDate; + _.each(_form.child, function(_formchild) { //找到与之比较的控件 + if(_formchild.gcMeCode == cd.gcCheckCpnCode) { + nDate = $rootScope.getNewDate($('*[gccolname="' + _formchild.gcColName + '"]:eq('+child_item_pay+')').val().replace(/-/g, "/")) + } + }); + showcheck(cd, sDtate, nDate,child_item_pay); + } else { //判断是否为日期时间 否 + if(cd.gcCpnType == 7) { //判断是否为数字 + var numberflag = numbercheck(cd,child_item_pay); + if(numberflag) { + var sValue = parseFloat($('*[gccolname="' + cd.gcColName + '"]:eq('+child_item_pay+')').val()); + var nValue; + _.each(_form.child, function(_formchild) { //找到与之比较的控件 + if(_formchild.gcMeCode == cd.gcCheckCpnCode) { + nValue = parseFloat($('*[gccolname="' + _formchild.gcColName + '"]:eq('+child_item_pay+')').val()); + } + }); + showcheck(cd, sValue, nValue,child_item_pay); + } + + } else if(cd.gcCpnType == 1 || cd.gcCpnType == 2) { //判断是否为文本 是 + var sValue = $('*[gccolname="' + cd.gcColName + '"]:eq('+child_item_pay+')').val(); + var nValue; + if(textcheck(cd, sValue,child_item_pay)) { + _.each(_form.child, function(_formchild) { //找到与之比较的控件 + if(_formchild.gcMeCode == cd.gcCheckCpnCode) { + nValue = $('*[gccolname="' + _formchild.gcColName + '"]:eq('+child_item_pay+')').val(); + } + }); + showcheck(cd, sValue, nValue,child_item_pay); + } + } else { + var sValue = $('*[gccolname="' + cd.gcColName + '"]:eq('+child_item_pay+')').val(); + var nValue; + _.each(_form.child, function(_formchild) { //找到与之比较的控件 + if(_formchild.gcMeCode == cd.gcCheckCpnCode) { + nValue = $('*[gccolname="' + _formchild.gcColName + '"]:eq('+child_item_pay+')').val(); + } + }); + showcheck(cd, sValue, nValue,child_item_pay); + } + } + } + } else { //判断是否有校验规则 没有 + if(cd.gcInputMust == 1) { //判断是否必填 必填 + var val; +// +// + if(cd.gcCpnType == 6){ + val = $('*[gccolname="' + cd.gcColName + '"]:eq('+child_item_pay+')').attr("value"); + }else if(cd.gcCpnType == 12) { + val = $('*[gccolname="' + cd.gcColName + '"]:eq('+child_item_pay+')').attr("user_selected"); + } + else{ + val = $('*[gccolname="' + cd.gcColName + '"]:eq('+child_item_pay+')').val(); + } + if(_.isNull(val) == false){ + val = val.replace(/\s/gi,''); + } +// + if(val == "" || _.isNull(val)) { + + if(cd.gcCpnType == 5) { + $("<i class='errinfo'>" + cd.gcCpnAlias + "不能为空</i>").appendTo($('*[gccolname="' + cd.gcColName + '"]:eq('+((child_item_pay+1)*2-1)+')').closest(".timeinfo")); + } else { + $('*[gccolname="' + cd.gcColName + '"]:eq('+child_item_pay+')').after("<i class='errinfo'>" + cd.gcCpnAlias + "不能为空</i>"); + } + } else { + if(cd.gcCpnType == 7) { //判断是否为数字 是 + numbercheck(cd,child_item_pay); + } else if(cd.gcCpnType == 1 || cd.gcCpnType == 2) { + var sValue = $('*[gccolname="' + cd.gcColName + '"]:eq('+child_item_pay+')').val(); + textcheck(cd, sValue,child_item_pay); + } + } + } else { //判断是否必填 可为空 + if(cd.gcCpnType == 7) { //判断是否为数字 是 + numbercheck(cd,child_item_pay); + } else if(cd.gcCpnType == 1 || cd.gcCpnType == 2) { + var sValue = $('*[gccolname="' + cd.gcColName + '"]:eq('+child_item_pay+')').val(); + textcheck(cd, sValue,child_item_pay); + } + } + } + } + }) + } + }) + } + //保存发送请求 + function save_post(form_data) { + var data = get_bill_data(form_data); + if($scope.type == 10) { + data['bu_temp_id'] = form_data.guId; + } else if($scope.type == 20) { + data['ap_temp_id'] = form_data.guId; + } else if($scope.type == 30) { + data['ex_temp_id'] = form_data.guId; + // 报销单——订单编号字段 + if($scope.couldNumber) { + data['couldNumber'] = $scope.couldNumber; + } + // 报销单——公司代码字段 + if(getCookie("csc_comp_code")) { + data['ex_company'] = getCookie("csc_comp_code"); + } + // if($rootScope.expend_number_info) { + // data['apNumber'] = $rootScope.expend_number_info; + // } + } + http_service.post($scope.bill_data_create_url, data, function(res) { + $scope.is_click = true; + $scope.couldNumber = undefined; + var bill_type = ""; + if($scope.type == 10) { + bill_type = "预算单"; + } else if($scope.type == 20) { + bill_type = "申请单"; + } else if($scope.type == 30) { + bill_type = "报销单"; + } + if(res.status === 200) { + + //alert('成功保存'+bill_type+'。'); + if(res.data.opState) { + $scope.$parent.tsuccess("成功保存" + bill_type + "。") + $scope.refreshdata() + $(element).remove(); + } else { + $scope.$parent.terro("保存" + bill_type + "失败。") + } + } else { + //alert('保存'+bill_type+'失败。'); + $scope.$parent.terro("保存" + bill_type + "失败") + } + $(element).remove(); + }) + } + //新建保存 + function create_bill_save(form_data) { + $scope.checkdata(); + if(check_applyDate() == false) { + $scope.is_click = true; + return false; + } + if($(".errinfo").length == 0) { + if($scope.type == 10 && $rootScope.budget_selected != "") { + http_service.post("budget/search/balance", { "buNumber": $rootScope.budget_selected }, function(res) { + var budgetMoney_code; + var save_flag = true; + _.each(filed, function(_filed) { + if(_filed.busCode == "budgetMoney") { + budgetMoney_code = _filed.mdCode; + } + }) + _.each($scope.form_data, function(form) { + if(form.gcMeCode == budgetMoney_code) { + if(form.render_value > res.data.data) { + save_flag = false; + is_click = true; + $('*[gccolname="' + form.gcColName + '"]:last').after("<i class='errinfo'>" + form.gcCpnAlias + "不在上级预算可用余额范围内</i>"); + } + } + }) + if(save_flag) { + save_post(form_data); + } + }) + } else { + var bill_type = ""; + if($scope.type == 10) { + bill_type = "预算单"; + } else if($scope.type == 20) { + bill_type = "申请单"; + } else if($scope.type == 30) { + bill_type = "报销单"; + } + // 判断如果有错误提示 弹出确认框 + if($(".errinfo_point").length > 0) { + $rootScope.swalWhether({ "title": "确认保存?", 'text': "<p style='color:red'>提示:" + bill_type + "数据不符合标准</p><p style='color:red'>点击取消可查看</p>" }, function(res) { + if(!res) { + $scope.is_click = true; + return false; + } else { + swal.close(); + save_post(form_data); + } + }); + } else { + save_post(form_data); + } + + } + } else { + $rootScope.terro("存在未通过校验规则的控件,请检查",true); + $scope.is_click = true; + } + } + //新建确定 + $scope.is_click = true; + $scope.create_bill = function() { + var form_data = $scope.form_data; + $timeout(function() { + if($scope.is_click == false) { + return false; + } + $scope.is_click = false; + if($scope.type != 10) {// 申请单、报销单 新建保存时 计算费用 + $rootScope.query_journel_budget($scope.type, function(version) { + $timeout(function(){ + create_bill_save(form_data); + },10) + }, false); + } else { + create_bill_save(form_data); + } + }, 10); + } + //document.domain = "";//iframe 同顶级域名的不同二级域名之间的调用解决办法 + //显示iframe页面 + function getCookie(cname) { + var name = cname + "="; + var ca = document.cookie.split(';'); + for(var i = 0; i < ca.length; i++) { + var c = ca[i].trim(); + if(c.indexOf(name) == 0) return c.substring(name.length, c.length); + } + return ""; + } + var tokens = getCookie('token'); + var compid = getCookie("csc_compid"); + var tenantId = getCookie("tenantId"); + $scope.iframe_src = iframe_url + "views/order_create_visit.html?token="+tokens+"&compid="+compid+"&tenantId="+tenantId; +// $scope.iframe_src = "./static/templates/iframe_test.html"; + $scope.show_iframe = function() { + $scope.iframe_show = true; + var thisHeight = $(".bill_create_pop").height(); + $('#iframeId').height(thisHeight); + // var iframeHeight=document.getElementById("iframeId").contentWindow.document.body.offsetHeight; + } + $scope.close_iframe = function() { + $scope.iframe_show = false; + } + // TODO + window.addEventListener("message", function(event) { + if(event.data != undefined && event.data.indexOf('=') != -1) { + var arr = event.data.split('='); + // 报销单 上传票据后 接收订单号 + $scope.couldNumber = arr[1]; + // if (arr[1]) { + // $scope.tsuccess("票据上传成功!"); + // } else { + // $scope.terro("票据上传失败!"); + // } + $scope.exCouldNumber = $scope.couldNumber; + } + $timeout(function() { + $scope.iframe_show = false; + }, 1) + }, false); + + //关闭iframe页面并获取iframe页面的值 + window.getdata_iframe = function(couldNumber) { + $timeout(function() { + $scope.iframe_show = false; + }, 1) + } + //关闭iframe页面并获取iframe页面的值 + // window.close_iframe = function() { + // $timeout(function() { + // $scope.iframe_show = false; + // }, 1) + // + // } + } + } + }]) + + //点击查看表详情 + .directive('clickDetailTd', ['$rootScope', '$compile', function($rootScope, $compile) { + return function(scope, element, attrs) { + $(element).css({ + 'cursor': 'pointer' + }); + $(element).on('click', function() { + var billid = $(element).find('input[type="checkbox"]').attr('bind_value'); + $rootScope.billid = billid; + $('#detailPopup').remove(); + //默认不可编辑 + scope.edit = false; + var $el = $('<div detail-popup id="detailPopup" type="type" billid="' + billid + '" edit="edit" iscreate=1 ></div>'); + $('body').append($el); + $compile($el)(scope); + }); + } + }]) + //上级预算管控:点击选择弹出预算单列表 + .directive('clickBudgetDetail', [function() { + return { + restrict: "EACM", + templateUrl: './static/templates/completed_order.html' + } + }]) + .directive('clickDetailTdAll', ['$rootScope', '$compile', 'http_service', function($rootScope, $compile, http_service) { + return { + scope: { + index: "@", + type: "@", + mold: "@" // editurl:"@" + }, + link: function(scope, element, attrs) { + + $(element).css({ + 'cursor': 'pointer' + }); + $(element).on('click', function() { + var urls = "flow/" + scope.mold + "/wait/handle"; + // http_service.post(urls, {}, function(res) { + var billid = scope.$parent.data[scope.index].id; + // if(res.data.data[scope.index].bu_id) { + // billid = res.data.data[scope.index].bu_id; + // } else if(res.data.data[scope.index].ap_id) { + // billid = res.data.data[scope.index].ap_id; + // } else { + // billid = res.data.data[scope.index].ex_id; + // } + + $rootScope.billid = billid; + $('#detailPopup').remove(); + scope.edit = false; + var $el = $('<div detail-popup id="detailPopup" type="' + scope.type + '" billid="' + billid + '" edit="edit" iscreate=1 ></div>'); + $('body').append($el); + $compile($el)(scope); + // }); + + }); + } + } + }]) + .controller('travelExpenseCtrl', ['$scope', '$routeParams', '$route', '$compile', 'http_service', '$rootScope', function($scope, $routeParams, $route, $compile, http_service, $rootScope) { + $scope.type = $routeParams.type; + if($rootScope.my_form_type == undefined){ + $rootScope.my_form_type = 1; + } + switch($scope.type){ + case "1": + $scope.my_form = '我的预算单'; + $scope.my_check_form = '我审核的预算单'; + break; + case "2": + $scope.my_form = '我的申请单'; + $scope.my_check_form = '我审核的申请单'; + break; + case "3": + $scope.my_form = '我的报销单'; + $scope.my_check_form = '我审核的报销单'; + break; + } + $scope.toggle_form = function(type){ + $rootScope.my_form_type = type; + $scope.refreshdata(); + } + var get_headers = function(cfg, form_list) { + var headers = []; + var headers_label_key = []; + if(form_list) { + _.each(form_list.child, function(form_item) { + _.each(cfg, function(cfg_item) { + if(form_item['gcColName'] === cfg_item) { + headers_label_key.push({ + 'label': form_item['gcCpnAlias'], + 'gcColName': cfg_item + }); + headers.push(form_item['gcCpnAlias']); + } + }); + if(form_item.child) { + if(form_item.child.length > 0) { + _.each(cfg, function(_cfg_item) { + _.each(form_item.child, function(_form_item) { + if(_form_item['gcColName'] === _cfg_item) { + headers_label_key.push({ + 'label': _form_item['gcCpnAlias'], + 'gcColName': _cfg_item + }); + headers.push(_form_item['gcCpnAlias']); + } + }) + }); + } + } + }); + } + return { + 'headers': headers, + 'headers_label_key': headers_label_key + }; + }, + get_search_items = function(cfg, form_list, cfgType) { + var search_items = []; + if(form_list) { + _.each(form_list.child, function(form_item) { + // 如果控件非分割线时 + if(form_item['gcCpnType'] !== 9 && form_item['gcCpnType'] !== 10 &&form_item['gcCpnType'] !== 0 && form_item['gcCpnType'] !== 14 && form_item['gcCpnType'] != 17 && form_item['gcShowFlag'] != 0) { + + var item = { + 'gc_cpn_alias': form_item['gcCpnAlias'], + 'sfCfgType': cfgType, + 'sfFieldName': form_item['gcColName'], + 'gc_cpn_type': form_item['gcCpnType'], + 'gcMeCode': form_item['gcMeCode'], // 关联查询页下拉框 + 'gcCpnMultiple': form_item['gcCpnMultiple'], // 关联查询页下拉框 + 'selected': true + }; + item.selected = _.includes(cfg, form_item['gcColName']); + search_items.push(item); + if(form_item.child) { + if(form_item.child.length > 0) { + _.each(form_item.child, function(form_item) { + + var _item = { + 'sfCfgType': cfgType, + 'gc_cpn_alias': form_item['gcCpnAlias'], + 'sfFieldName': form_item['gcColName'], + 'gc_cpn_type': form_item['gcCpnType'], + 'gcMeCode': form_item['gcMeCode'], // 关联查询页下拉框 + 'gcCpnMultiple': form_item['gcCpnMultiple'], // 关联查询页下拉框 + 'selected': true + } + _item.selected = _.includes(cfg, form_item['gcColName']); + search_items.push(_item); + }); + } + } + } + }); + } + return { + 'search_items': search_items + }; + }, + get_data = function(headers_label_key, bill_data) { + var data = []; + + _.each(bill_data, function(data_item, i) { + var _data = []; + var len = headers_label_key.length; + _.each(headers_label_key, function(cfg_item, n) { + + _data.push(_.get(data_item, cfg_item.gcColName)); + if(n === len - 1) { + var doc_id = _.get(data_item, 'bu_id') || _.get(data_item, 'ap_id') || _.get(data_item, 'ex_id'); + + _data.push(doc_id); + } + }); + if($rootScope.my_form_type == 2){ + var id = $scope.doc_id(_data); + + var wait_data = _.slice(_data,0,(_data.length-1)); + switch(parseInt(_.get(data_item,"flowStart"))){ + case 10: + wait_data.push("已审核"); + break; + case 20: + wait_data.push("驳回"); + break; + case 30: + wait_data.push("已通过"); + break; + case 50: + wait_data.push("待审核"); + break; + } + wait_data.push(id); + _data = wait_data; + } + data.push(_data); + + }); + return data; + }, + search_select = function() { + var search_list = []; + _.each($scope.searchlist, function(n, key) { + if(n.selected == true && (n.valueLeft || n.valueRight)) { + search_list.push({ + "sfFieldName": n.sfFieldName, + "gc_cpn_type": n.gc_cpn_type, + "valueLeft": n.valueLeft, + "valueRight": n.valueRight + }); + } + }); + if($rootScope.my_form_type == 1){ + if($scope.searchlist.length == 0){ + var data = _.assign({ + 'num_per_page': $scope.num_per_page + }, { + 'page_num': $scope.page_num + }); + }else{ + var data = _.assign({ + 'num_per_page': $scope.num_per_page + }, { + 'page_num': $scope.page_num + }, { + 'search': search_list + }); + } + } else { + + + if($scope.searchlist.length == 0){ + var data = _.assign({ + 'num_per_page': $scope.num_per_page + }, { + 'page_num': $scope.page_num + },{ + 'flowStart':$rootScope.my_status + }); + }else{ + var data = _.assign({ + 'num_per_page': $scope.num_per_page + }, { + 'page_num': $scope.page_num + }, { + 'search': search_list + },{ + 'flowStart':$rootScope.my_status + }); + } + } + + + + return data; + }, + list_lock = function(list_data,type){//列表单据固化 + var errInfo = ''; + if(type === 10) { + errInfo = 'buErrInfo'; + } else if(type === 20) { + errInfo = 'apErrInfo'; + } else if(type === 30) { + errInfo = 'exErrInfo'; + } + + _.each(list_data,function(ldata){ + if(ldata.canDel == 0 && ldata[errInfo] != undefined && ldata[errInfo] != ''){ + var errInfo_data = JSON.parse(ldata[errInfo]).form_err_data; + var new_data = {}; + _.each(errInfo_data,function(itemdata){ + if(itemdata.gcColName != undefined && itemdata.gcColName != ''){ + if(itemdata.old_users_selected != undefined){ + new_data[itemdata.gcColName] = itemdata.old_users_selected[0].personName; + }else if(itemdata.select_value != undefined){ + new_data[itemdata.gcColName] = itemdata.select_value; + }else if(itemdata.render_value != undefined){ + new_data[itemdata.gcColName] = itemdata.render_value; + } + } + }); + + _.extend(ldata,new_data); + } + }); + + return list_data; + }, + search_data = function(cfgColumnType, tempType) { + $scope.wait = true; + var url = ''; + $scope.bill_data_create_url = ''; + $scope.bill_data_update_url = ''; + if($rootScope.my_form_type == 1){ + if(tempType === 10) { + url = 'budget/search/myData'; + $scope.bill_data_create_url = 'budget/insert'; + $scope.bill_data_update_url = 'budget/update'; + } else if(tempType === 20) { + url = 'apply/search/myData'; + $scope.bill_data_create_url = 'apply/insert'; + $scope.bill_data_update_url = 'apply/update'; + } else if(tempType === 30) { + url = 'expend/search/myData'; + $scope.bill_data_create_url = 'expend/insert'; + $scope.bill_data_update_url = 'expend/update'; + } + }else{ + if(tempType === 10) { + url = 'budget/search/waitHandle'; + $scope.bill_data_create_url = 'budget/insert'; + $scope.bill_data_update_url = 'budget/update'; + } else if(tempType === 20) { + url = 'apply/search/waitHandle'; + $scope.bill_data_create_url = 'apply/insert'; + $scope.bill_data_update_url = 'apply/update'; + } else if(tempType === 30) { + url = 'expend/search/waitHandle'; + $scope.bill_data_create_url = 'expend/insert'; + $scope.bill_data_update_url = 'expend/update'; + } + } + + http_service.post(url, search_select(), function(res) { + var bill_data = list_lock(res.data.data,tempType);//列表单据固化 +// var bill_data = res.data.data; + $rootScope.search_hint(res.data.data, 'arrary', "无列表数据"); + $scope.handle_data = res.data.data; + $scope.rows = res.data.rows; + var headers = []; + http_service.post('showFieldCfg/list', { + "sfCfgType": cfgColumnType + }, function(res) { + var cfg; + if(res.data.data) { + if(res.data.data.length == 0) { + cfg = []; + if($scope.form_list_first.data.data != undefined && $scope.form_list_first.data.data.child.length > 0) { + _.each($scope.form_list_first.data.data.child, function(form_list) { + if(form_list.gcCpnType != 9 && form_list.gcCpnType != 10 && form_list.gcCpnType != 0 && form_list.gcCpnType != 14 && form_list.gcCpnType != 17 && form_list.gcShowFlag != 0) { + cfg.push(form_list.gcColName); + } + }) + } + + } else { + cfg = _.map(res.data.data, function(res) { + return res['sfFieldName']; + }); + } + } + + // var cfg= []; + // _.each($scope.showFieldCfg_data.data.data, function(res) { + // if(res['sfCfgType'] == cfgColumnType){ + // cfg.push(res['sfFieldName']); + // } + // + // }); + + // http_service.post('form/list', { + // "guTempType": tempType + // }, function(res) { + if(!$scope.form_list_first.data.opState) { + return false; + } + $scope.wait = false; + var form_list = $scope.form_list_first.data.data; + headers = get_headers(cfg, form_list); + $scope.data = get_data(headers.headers_label_key, bill_data); + $scope.id_list = {}; + $scope.budget_data = { + headers: headers.headers_label_key, + data: $scope.data + }; + // }); + + }); + }); + }; + //实现排序方法 + $scope.content_ordering = function() { + + } + //判断是否显示删除复选框 + $scope.delete_checkbox = function(data_list) { + if(data_list == undefined){ + return false; + } + var form_type; + var delteflag = false; + switch($scope.type) { + case 10: + form_type = "bu_id"; + break; + case 20: + form_type = "ap_id"; + break; + case 30: + form_type = "ex_id"; + break; + } + var doc_id = $scope.doc_id(data_list); + _.each($scope.handle_data, function(handle) { + if(handle[form_type] == doc_id && handle.canDel == 1 && handle.ins_p == app_userinfo.userId) { + delteflag = true; + } + }); + return delteflag; + } + $scope.doc_id = function(data_list) { + return _.slice(data_list, data_list.length - 1, data_list.length)[0]; + } + + $scope.sub_data = function(data_list) { + return _.slice(data_list, 0, data_list.length - 1); + } + + $scope.select_bill = function(event) { + event.stopPropagation(); + } + + // pager + $scope.num_per_page = "20"; + $scope.page_num = "1"; + + $scope.math_ceil = function(v) { + if(!v) { + return ''; + } + return Math.ceil(v); + } + + $scope.pre_page = function() { + if($scope.page_num > 1) { + $scope.page_num = $scope.page_num - 1; + } + search_data(cfgColumnType, tempType); + // $scope.budget_data['data'] = _.slice($scope.data, $scope.num_per_page * ($scope.page_num - 1), $scope.num_per_page * $scope.page_num - 1); + } + + $scope.next_page = function() { + if($scope.page_num < Math.ceil($scope.rows / $scope.num_per_page)) { + $scope.page_num = (parseInt($scope.page_num) + 1).toString(); + } + search_data(cfgColumnType, tempType); + // $scope.budget_data['data'] = _.slice($scope.data, $scope.num_per_page * ($scope.page_num - 1), $scope.num_per_page * $scope.page_num - 1); + } + $scope.change_page_num = function() { + $scope.page_num = 1; + search_data(cfgColumnType, tempType); + // $scope.budget_data['data'] = _.slice($scope.data, $scope.num_per_page * ($scope.page_num - 1), $scope.num_per_page * $scope.page_num - 1); + } + //pagenum键盘触发事件 + check_number = function(strings){ + //_.each(strings,function(string){ + // if(strings.indexOf(string) == -1){ + // return true; + // } + //}) + //return false; + var patrn = /^[0-9]*$/; + if (patrn.exec(strings) == null) { + return false + } else { + return true + } + } + $scope.change_keycode = function(pageNumber){ + if(check_number(pageNumber)){ + $scope.page_num = parseInt(pageNumber); + if($scope.page_num > Math.ceil($scope.rows/$scope.num_per_page)){ + $scope.page_num = Math.ceil($scope.rows/$scope.num_per_page); + }else if($scope.page_num < 1){ + $scope.page_num = 1; + } + }else if(!check_number(pageNumber) && check_number(pageNumber.charAt(0))){ + //遍历pagenumber字符 + var pageNum = ''; + _.each(pageNumber,function(pageCode){ + if(check_number(pageCode)){ + pageNum = pageNum + pageCode; + }else{ + return false; + } + }) + $scope.page_num = pageNum; + }else{ + $scope.page_num = 1; + } + } + + $scope.change_page = function() { + + if($scope.page_num > Math.ceil($scope.rows / $scope.num_per_page)) { + $scope.page_num = Math.ceil($scope.rows / $scope.num_per_page); + } else if($scope.page_num < 1) { + $scope.page_num = 1; + }else if(_.isNaN($scope.page_num)){ + $scope.page_num = 1; + } + search_data(cfgColumnType, tempType); + } + $scope.data = []; + + var cfgSearchType, tempType, cfgColumnType; + switch($scope.type) { + case "1": + tempType = 10; + $scope.type = 10; + cfgSearchType = 11; + cfgColumnType = 12; + break; + case "2": + tempType = 20; + $scope.type = 20; + cfgSearchType = 21; + cfgColumnType = 22; + break; + case "3": + tempType = 30; + $scope.type = 30; + cfgSearchType = 31; + cfgColumnType = 32; + break; + } + + // search_data(cfgColumnType, tempType); + //按回车键则查询 + $scope.search_keydown = function(event) { + if(event.keyCode == 13) { + $scope.refreshdata(); + } + } + $rootScope.refres_table_data = function(){ + $scope.refreshdata(); + } + $scope.refreshdata = function() { + search_data(cfgColumnType, tempType); + }; + //由于设置高度产生滚动条,注释之 + //$scope.$on('$viewContentLoaded', function() { + // $('div.split_form').height($(document).height() - 52); + // $(window).resize(function(){ + // $('div.split_form').height($(document).height() - 52); + // }); + //}); + _.extend($scope, { + "searchlist": [], + "visiblecolumns": [] + }); + + http_service.post('form/list', { + "guTempType": tempType, + "cache_id": tempType + }, function(result) { + $scope.form_list_first = result; + + http_service.post('showFieldCfg/list/type', { + "type": $scope.type + }, function(res) { + $scope.showFieldCfg_data = res; + search_data(cfgColumnType, tempType); + var cfg_search = []; + var cfg_show = []; + _.each(res.data.data, function(res) { + if(res['sfCfgType'] == cfgSearchType) { + cfg_search.push(res['sfFieldName']); + } + if(res['sfCfgType'] == cfgColumnType) { + cfg_show.push(res['sfFieldName']); + } + }); + if(!result.data.opState) { + return false; + } + var form_list = result.data.data; + var search_items_search = get_search_items(cfg_search, form_list, cfgSearchType); + $scope.searchlist = search_items_search.search_items; + var search_items_show = get_search_items(cfg_show, form_list, cfgColumnType); + $scope.visiblecolumns = search_items_show.search_items; + + }); + + // http_service.post('showFieldCfg/list',{ + // "sfCfgType": cfgSearchType + // },function(res){ + // var cfg = _.map(res.data.data, function(res) { + // return res['sfFieldName']; + // }); + // if(!result.data.opState){ + // return false; + // } + // var form_list = result.data.data; + // var search_items = get_search_items(cfg, form_list, cfgSearchType); + // $scope.searchlist = search_items.search_items; + // }); + // + // http_service.post('showFieldCfg/list',{ + // "sfCfgType": cfgColumnType + // },function(res){ + // var cfg = _.map(res.data.data, function(res) { + // return res['sfFieldName']; + // }); + // if(!result.data.opState){ + // return false; + // } + // var form_list = result.data.data; + // var search_items = get_search_items(cfg, form_list, cfgColumnType); + // $scope.visiblecolumns = search_items.search_items; + // }); + + }, true); + + // http_service.post('showFieldCfg/list', { + // "sfCfgType": cfgSearchType + // }, function(res) { + // var cfg = _.map(res.data.data, function(res) { + // return res['sfFieldName']; + // }); + // http_service.post('form/list', { + // "guTempType": tempType + // }, function(res) { + // if(!res.data.opState){ + // return false; + // } + // var form_list = res.data.data; + // var search_items = get_search_items(cfg, form_list, cfgSearchType); + // $scope.searchlist = search_items.search_items; + // }); + // }); + // + // http_service.post('showFieldCfg/list', { + // "sfCfgType": cfgColumnType + // }, function(res) { + // var cfg = _.map(res.data.data, function(res) { + // return res['sfFieldName']; + // }); + // http_service.post('form/list', { + // "guTempType": tempType + // }, function(res) { + // if(!res.data.opState){ + // return false; + // } + // var form_list = res.data.data; + // var search_items = get_search_items(cfg, form_list, cfgColumnType); + // $scope.visiblecolumns = search_items.search_items; + // }); + // }); + + $scope.show_search_dropdown = function(e) { + $('div.drop_down_sel').remove(); + var $element = $('<div drop-down-selector filterlist="searchlist" class="drop_down_sel" refreshdata="refreshdata()" ></div>'); + $('body').append($element); + $compile($element)($scope); + $element.css({ + 'top': e.pageY + 5, + 'right': 80 + }); + e.stopPropagation(); + }; + + $scope.searchcol = function() { + http_service.post('showFieldCfg/list', { + "flowStart": 100 + }, function(res) { + if(res.data.data.length == 0) { + return false; + } + }) + } + + $scope.selectli = function() { + alert(1); + for(i in $("input[name='status']")) { + if($("input[name='status']")[i].checked) { + $scope.status = $("input[name='status']")[i].val(); + } + } + } + + $scope.showstatus = function(e) { + $('div.drop_down_sel').remove(); + var $element = $('<div drop-down-selector filterlist="searchlist" class="drop_down_sel" refreshdata="refreshdata()" ></div>'); + $('body').append($element); + $compile($element)($scope); + $element.css({ + 'top': e.pageY + 5, + 'right': 80 + }); + e.stopPropagation(); + }; + + $scope.show_conent_dropdown = function(e) { + $('div.drop_down_sel').remove(); + var $element = $('<div drop-down-selector filterlist="visiblecolumns" class="drop_down_sel" refreshdata="refreshdata()" ></div>'); + $('body').append($element); + $compile($element)($scope); + $element.css({ + 'top': e.pageY + 5, + 'right': 80 + }); + e.stopPropagation(); + }; + + $scope.new = function() { + var bill_creator = $('<div bill-creator></div>'); + $('body').append(bill_creator); + $compile(bill_creator)($scope); + }; + + $scope.delete_batch = function() { + + if(!$('input[type="checkbox"]:checked').length) { + //$scope.swalwarning({"text": "请选择要删除的内容!"}) + $scope.$parent.twarning("请选择要删除的内容") + return; + } + + function childDel() { + var del_url = ''; + if(tempType === 10) { + del_url = 'budget/deletebudgets'; + } else if(tempType === 20) { + del_url = 'apply/deleteApplys'; + } else if(tempType === 30) { + del_url = 'expend/deleteExpends'; + } + var data = { + "child": [] + }; + $('input[type="checkbox"]:checked').each(function() { + var id = $(this).attr('bind_value'); + if(tempType === 10) { + data['child'].push({ + 'buId': parseInt(id) + }); + } else if(tempType === 20) { + data['child'].push({ + 'apId': parseInt(id) + }); + } else if(tempType === 30) { + data['child'].push({ + 'exId': parseInt(id) + }); + }; + }); + http_service.post(del_url, data, function(res) { + if(res.status != 200) { + var msg = ''; + if(tempType === 10) { + msg = '批量删除预算订单失败。'; + } else if(tempType === 20) { + msg = '批量删除申请订单失败。'; + } else if(tempType === 30) { + msg = '批量删除报销订单失败.'; + } + $('input[type="checkbox"]:checked').prop() + $rootScope.swalerror({ "text": msg }) + //alert(msg); + } else { + if(Math.ceil(($scope.rows - res.data.rows) / $scope.num_per_page) < $scope.page_num) { + $scope.page_num = 1; + } + search_data(cfgColumnType, tempType); + //swal("删除", "成功删除", "success"); + if(res.data.opState) { + $rootScope.swalsuccess({ "text": "成功删除!" }) + } else { + $rootScope.swalerror({ "text": "操作失败!" }) + } + $('input[type="checkbox"]').prop("checked", false); + + } + }); + } + var deletecon = true; + $rootScope.swalWhether({ "title": "确定删除?", "text": "" }, + function() { + if(deletecon) { + deletecon = false; + childDel(); + } + }); + + }; + + // 取消 列表页总金额查询 + // var sum_url; + // if(tempType == 10) { + // sum_url = 'budget/countPro'; + // } else if(tempType == 20) { + // sum_url = 'apply/countPro'; + // } else if(tempType == 30) { + // sum_url = 'expend/countPro'; + // } + // http_service.post(sum_url, {}, function(res) { + // if(res.data.opState) { + // $scope.sum_money = res.data.data.sum; + // } + // }) + + $scope.import = function() { + + }; + + $scope.export = function() { + + }; + }]); \ No newline at end of file diff --git a/src/static/js/travel_expense_todos/module.js b/src/static/js/travel_expense_todos/module.js new file mode 100644 index 0000000..e00ee8c --- /dev/null +++ b/src/static/js/travel_expense_todos/module.js @@ -0,0 +1,1326 @@ +angular.module('travel_expense_todos', []) +.directive('travelExpenseTodosAll', ['http_service', '$compile','$rootScope', function(http_service, $compile,$rootScope){ + return { + restrict: "EACM", + templateUrl: './static/templates/travel_expense_todos_all.html', + scope: { + todos: '=' + }, + link: function($scope, elemnet, attrs){ + _.each($scope.todos, function(n, m){ + $scope.todos[m] = (m==='all'); + }); + var get_headers = function(cfg, form_list){ + var headers = []; + var headers_label_key = []; + if(form_list){ + _.each(form_list.child, function(form_item){ + _.each(cfg, function(cfg_item){ + if(form_item['gcColName'] === cfg_item) { + headers_label_key.push({'label': form_item['gcCpnAlias'], 'gcColName': cfg_item}); + headers.push(form_item['gcCpnAlias']); + } + }); + if(form_item.child){ + if(form_item.child.length > 0) { + _.each(cfg, function(_cfg_item){ + _.each(form_item.child, function(_form_item){ + if(_form_item['gcColName'] === _cfg_item) { + headers_label_key.push({'label': _form_item['gcCpnAlias'], 'gcColName': _cfg_item}); + headers.push(_form_item['gcCpnAlias']); + } + }) + }); + } + } + + }); + } + + return {'headers': headers, 'headers_label_key': headers_label_key}; + }, + get_data = function(headers_label_key, bill_data,type){ + var data = []; + var len = headers_label_key.length; + var type_id; + switch(type){ + case 1: + type_id = "bu_id"; + break; + case 2: + type_id = "ap_id"; + break; + case 3: + type_id = "ex_id"; + break; + } + _.each(bill_data, function(data_item, i){ + var _data = []; + _.each(headers_label_key, function(cfg_item, n){ + _data.push({"name":_.get(data_item, cfg_item.gcColName),"id":data_item[type_id]}); +// if(n === len-1){ +// var doc_id = _.get(data_item, 'bu_id') || _.get(data_item, 'ap_id') || _.get(data_item, 'ex_id'); +// _data.push(doc_id); +// } + }); + switch(parseInt(_.get(data_item,"flowStart"))){ +// case 10: +// _data.push({"name":"待提交","id":data_item[type_id]}); +// break; +// case 20: +// _data.push({"name":"已提交","id":data_item[type_id]}); +// break; +// case 30: +// _data.push({"name":"待审核","id":data_item[type_id]}); +// break; +// case 40: +// _data.push({"name":"审核完成","id":data_item[type_id]}); +// break; +// case -1: +// _data.push({"name":"驳回","id":data_item[type_id]}); +// break; +// case 100: +// _data.push({"name":"已完成","id":data_item[type_id]}); +// break; + case 10: + _data.push({"name":"已审核","id":data_item[type_id]}); + break; + case 20: + _data.push({"name":"驳回","id":data_item[type_id]}); + break; + case 30: + _data.push({"name":"已通过","id":data_item[type_id]}); + break; + case 50: + _data.push({"name":"待审核","id":data_item[type_id]}); + break; + } + data.push(_data); + }); + return data; + }; + $scope.budget_data = { + "headers": [], + "data": [] + } + function list_lock(list_data,type){//列表单据固化 + var errInfo = ''; + if(type === 10) { + errInfo = 'buErrInfo'; + } else if(type === 20) { + errInfo = 'apErrInfo'; + } else if(type === 30) { + errInfo = 'exErrInfo'; + } + + _.each(list_data,function(ldata){ + if(ldata.canDel == 0 && ldata[errInfo] != undefined && ldata[errInfo] != ''){ + var errInfo_data = JSON.parse(ldata[errInfo]).form_err_data; + var new_data = {}; + _.each(errInfo_data,function(itemdata){ + if(itemdata.gcColName != undefined && itemdata.gcColName != ''){ + if(itemdata.old_users_selected != undefined){ + new_data[itemdata.gcColName] = itemdata.old_users_selected[0].personName; + }else if(itemdata.select_value != undefined){ + new_data[itemdata.gcColName] = itemdata.select_value; + }else if(itemdata.render_value != undefined){ + new_data[itemdata.gcColName] = itemdata.render_value; + } + } + }); + + _.extend(ldata,new_data); + } + }); + + return list_data; + } + function get_budget_data() { + // get budget bill data + http_service.post('budget/search/waitHandle', {"num_per_page":20,"page_num":1}, function(res){ + if(!res.data.opState){ + return false; + } + $scope.$parent.$parent.budget_temp_num = res.data.rows; + $scope.$parent.$parent.budget_temp_num_show = false; + var bill_data = _.slice(res.data.data, 0, 3); + bill_data = list_lock(bill_data,10);//列表单据固化 + var headers = []; + var data = []; + http_service.post('showFieldCfg/list', { + "sfCfgType":12 + }, function(res){ + + if(!res.data.opState){ + return false; + } + var cfg = _.map(res.data.data, function(res){ + return res['sfFieldName']; + }); + http_service.post('form/list', { + "guTempType":10, + "cache_id":10 + }, function(res){ + if(!res.data.opState){ + return false; + } + var form_list = res.data.data; + + if(cfg.length == 0){ + _.each(form_list.child,function(list){ + if(list.gcCpnType != 10 && list.gcCpnType != 14 && list.gcCpnType != 9 && list.gcCpnType != 17 && list.gcCpnType != 0){ + cfg.push(list.gcColName); + } + }) + } + headers = get_headers(cfg, form_list); +// headers.headers.push("状态"); + data = get_data(headers.headers_label_key, bill_data,1); + $scope.budget_data = { + headers: headers.headers, + data: data + }; + },true); + }); + }); + } + function get_apply_data() { + // get apply bill data + http_service.post('apply/search/waitHandle', { + "num_per_page":20,"page_num":1 + }, function(res){ + if(!res.data.opState){ + return false; + } + $scope.$parent.$parent.apply_temp_num = res.data.rows; + $scope.$parent.$parent.apply_temp_num_show = false; + var bill_data = _.slice(res.data.data, 0, 3); + bill_data = list_lock(bill_data,10);//列表单据固化 + http_service.post('showFieldCfg/list', { + "sfCfgType": 22 + }, function(res){ + var cfg = _.map(res.data.data, function(res){ + return res['sfFieldName']; + }); + http_service.post('form/list', { + "guTempType": 20, + "cache_id":20 + }, function(res){ + if(!res.data.opState){ + return false; + } + var form_list = res.data.data; + if(cfg.length == 0){ + _.each(form_list.child,function(list){ + if(list.gcCpnType != 10 && list.gcCpnType != 14 && list.gcCpnType != 9 && list.gcCpnType != 17 && list.gcCpnType != 0){ + cfg.push(list.gcColName); + } + }) + } + headers = get_headers(cfg, form_list); +// headers.headers.push("状态"); + data = get_data(headers.headers_label_key, bill_data,2); + $scope.apply_data = { + headers: headers.headers, + data: data + }; + + },true); + }); + }); + } + function get_expend_data() { + // get expend bill data + http_service.post('expend/search/waitHandle', { + "num_per_page":20,"page_num":1 + }, function(res){ + if(!res.data.opState){ + return false; + } + $scope.$parent.$parent.expend_temp_num = res.data.rows; + $scope.$parent.$parent.expend_temp_num_show = false; + var bill_data = _.slice(res.data.data, 0, 3); + bill_data = list_lock(bill_data,10);//列表单据固化 + http_service.post('showFieldCfg/list', { + "sfCfgType":32 + }, function(res){ + var cfg = _.map(res.data.data, function(res){ + return res['sfFieldName']; + }); + http_service.post('form/list', { + "guTempType":30, + "cache_id":30 + }, function(res){ + if(!res.data.opState){ + return false; + } + var form_list = res.data.data; + if(cfg.length == 0){ + _.each(form_list.child,function(list){ + if(list.gcCpnType != 10 && list.gcCpnType != 14 && list.gcCpnType != 9 && list.gcCpnType != 17 && list.gcCpnType != 0){ + cfg.push(list.gcColName); + } + }) + } + headers = get_headers(cfg, form_list); +// headers.headers.push("状态"); + data = get_data(headers.headers_label_key, bill_data,3); + $scope.expend_data = { + headers: headers.headers, + data: data + }; + },true); + }); + }); + } + +// $scope.doc_id = function(data_list){ +// return _.slice(data_list, data_list.length - 1, data_list.length)[0]; +// } +// +// $scope.sub_data = function(data_list){ +// return _.slice(data_list, 0, data_list.length - 1); +// } + + + get_budget_data(); + get_apply_data(); + get_expend_data(); + $rootScope.refer_data_all = function(){ + get_budget_data(); + get_apply_data(); + get_expend_data(); + } + + } + } +}]) +.directive('travelExpenseTodosBudget', ['http_service', '$compile','$rootScope', function(http_service, $compile,$rootScope){ + return { + restrict: "EACM", + templateUrl: './static/templates/travel_expense_todos_budget.html', + scope: { + todos: '=' + }, + link: function($scope, elemnet, attrs){ + $scope.type = 10; + _.each($scope.todos, function(n, m){ + $scope.todos[m] = (m==='budget'); + }); + +// $scope.selectstatus = function(){ +// var statusobj = {}; +// var statuscode = []; +// if($scope.status){ +// statusobj.selected = true; +// statusobj.valueLeft = []; +// statuscode.push($scope.code); +// statusobj.valueLeft.push(statuscode); +// } +// $scope.searchlist.push(statusobj); +// } + + var get_headers = function(cfg, form_list){ + var headers = []; + var headers_label_key = []; + _.each(form_list.child, function(form_item){ + _.each(cfg, function(cfg_item){ + if(form_item['gcColName'] === cfg_item) { + headers_label_key.push({'label': form_item['gcCpnAlias'], 'gcColName': cfg_item}); + headers.push(form_item['gcCpnAlias']); + } + }); + if(form_item.child != undefined){ + if(form_item.child.length > 0) { + _.each(cfg, function(_cfg_item){ + _.each(form_item.child, function(_form_item){ + if(_form_item['gcColName'] === _cfg_item) { + headers_label_key.push({'label': _form_item['gcCpnAlias'], 'gcColName': _cfg_item}); + headers.push(_form_item['gcCpnAlias']); + } + }) + }); + } + } + + }); + return {'headers': headers, 'headers_label_key': headers_label_key}; + }, + get_search_items = function(cfg, form_list){ + var search_items = []; + if(form_list){ + _.each(form_list.child, function(form_item){ + // 如果控件非分割线时 + if(form_item['gcCpnType'] !== 9 && form_item['gcCpnType'] !== 10 &&form_item['gcCpnType'] !== 0 &&form_item['gcCpnType'] !== 14){ + var item = { + 'gc_cpn_alias': form_item['gcCpnAlias'], + 'sfCfgType': 11, + 'sfFieldName': form_item['gcColName'], + 'gc_cpn_type': form_item['gcCpnType'], + 'gcMeCode': form_item['gcMeCode'], // 关联查询页下拉框 + 'gcCpnMultiple': form_item['gcCpnMultiple'], // 关联查询页下拉框 + 'selected': true + }; + item.selected = _.includes(cfg, form_item['gcColName']); + search_items.push(item); + if(form_item.child != undefined){ + if(form_item.child.length > 0) { + _.each(form_item.child, function(form_item){ + var _item = { + 'sfCfgType': 11, + 'gc_cpn_alias': form_item['gcCpnAlias'], + 'sfFieldName': form_item['gcColName'], + 'gc_cpn_type': form_item['gcCpnType'], + 'gcMeCode': form_item['gcMeCode'], // 关联查询页下拉框 + 'gcCpnMultiple': form_item['gcCpnMultiple'], // 关联查询页下拉框 + 'selected': true + } + _item.selected = _.includes(cfg, form_item['gcColName']); + search_items.push(_item); + }); + } + } + } + }); + } + + return {'search_items': search_items}; + }, + search_select = function() { + var search_list = []; + _.each($scope.searchlist, function(n, key) { + if(n.selected == true && (n.valueLeft || n.valueRight)) { + search_list.push({ + "sfFieldName": n.sfFieldName, + "gc_cpn_type": n.gc_cpn_type, + "valueLeft": n.valueLeft, + "valueRight": n.valueRight + }); + } + }); + if($scope.searchlist){ + var data = _.assign({ + 'num_per_page': $scope.num_per_page + }, { + 'page_num': $scope.page_num + }, { + 'search': search_list + },{ + 'flowStart':$scope.status + }); + }else{ + var data = _.assign({ + 'num_per_page': $scope.num_per_page + }, { + 'page_num': $scope.page_num + },{ + 'flowStart':$scope.status + }); + } + + + return data; + }, + get_data = function(headers_label_key, bill_data){ + var data = []; + var len = headers_label_key.length; + _.each(bill_data, function(data_item, i){ + var _data = []; + _.each(headers_label_key, function(cfg_item, n){ + _data.push({"name":_.get(data_item, cfg_item.gcColName),"id":data_item.bu_id}); +// if(n === len-1){ +// var doc_id = _.get(data_item, 'bu_id') || _.get(data_item, 'ap_id') || _.get(data_item, 'ex_id'); +// _data.push(doc_id); +// } + }); + switch(parseInt(_.get(data_item,"flowStart"))){ + case 10: + _data.push({"name":"待提交","id":data_item.bu_id}); + break; + case 20: + _data.push({"name":"已提交","id":data_item.bu_id}); + break; + case 30: + _data.push({"name":"待审核","id":data_item.bu_id}); + break; + case 40: + _data.push({"name":"审核完成","id":data_item.bu_id}); + break; + case -1: + _data.push({"name":"驳回","id":data_item.bu_id}); + break; + case 100: + _data.push({"name":"已完成","id":data_item.bu_id}); + break; + } + data.push(_data); + }); + return data; + }; + + // pager + $scope.num_per_page = "20"; + $scope.page_num = "1"; + + + $scope.math_ceil = function(v){ + if(v == 0){ + $scope.page_num = 1; + return 0; + } + if(!v){ + return ''; + } + + return Math.ceil(v); + } + + $scope.pre_page = function(){ + if($scope.page_num > 1){ + $scope.page_num = $scope.page_num - 1; + } + search_budget_data(); + } + + $scope.next_page = function(){ + if($scope.page_num < Math.ceil($scope.budget_rows/ $scope.num_per_page)){ + $scope.page_num = (parseInt($scope.page_num) + 1).toString(); + } + search_budget_data(); +// $scope.budget_data['data'] = _.slice($scope.data, $scope.num_per_page * ($scope.page_num-1), $scope.num_per_page * $scope.page_num - 1); + } + + $scope.change_page_num = function(){ + search_budget_data(); +// $scope.budget_data['data'] = _.slice($scope.data, $scope.num_per_page * ($scope.page_num-1), $scope.num_per_page * $scope.page_num - 1); + } + + $scope.doc_id = function(data_list){ + return _.slice(data_list, data_list.length - 1, data_list.length)[0]; + } + + $scope.sub_data = function(data_list){ + return _.slice(data_list, 0, data_list.length - 1); + } + + $scope.data = []; + + function search_budget_data() { + + http_service.post('flow/budget/wait/handle', search_select(), function(res){ + if(!res.data.opState){ + return false; + } + $rootScope.search_hint(res.data.data,'arrary'); +// $scope.$parent.$parent.budget_temp_num = res.data.rows; + $scope.budget_rows = res.data.rows; +// $scope.$parent.$parent.budget_temp_num_show = false; + var bill_data = res.data.data; + var headers = []; + http_service.post('showFieldCfg/list', { + "sfCfgType":12 + }, function(res){ +// if(res.data.data.length==0){ +// return false; +// } + var cfg = _.map(res.data.data, function(res){ + return res['sfFieldName']; + }); + http_service.post('form/list', { + "guTempType":10, + "cache_id":10 + }, function(res){ + if(!res.data.opState){ + return false; + } + var form_list = res.data.data; + if(form_list == undefined){ + return false; + } + headers = get_headers(cfg, form_list); + $scope.data = get_data(headers.headers_label_key, bill_data); + $scope.budget_data = { + headers: headers.headers, + data: _.slice($scope.data, 0, $scope.num_per_page * $scope.page_num - 1) + }; + },true); + }); + }); + } + + search_budget_data(); + + _.extend($scope, { + "searchlist": [], + "visiblecolumns": [] + }); + + http_service.post('showFieldCfg/list', { + "sfCfgType":11 + }, function(res){ +// if(res.data.data.length==0){ +// return false; +// } + var cfg = _.map(res.data.data, function(res){ + return res['sfFieldName']; + }); + http_service.post('form/list', { + "guTempType":10, + "cache_id":10 + }, function(res){ + if(!res.data.opState){ + return false; + } + var form_list = res.data.data; + var search_items = get_search_items(cfg, form_list); + $scope.searchlist = search_items.search_items; + },true); + }); + /* + http_service.get('./static/js/data/travel_expense_list.json', function(res){ + var data = res.data; + $scope.searchlist = _.filter(res.data.data, function(t){ + var type = t.sfCfgType, len = t.sfCfgType.length; + return type.substring(len-1, len) === '1'; + }); + + $scope.visiblecolumns = _.filter(res.data.data, function(t){ + var type = t.sfCfgType, len = t.sfCfgType.length; + return type.substring(len-1, len) === '2'; + }); + }); + */ + $scope.refreshdata = function(){ + search_budget_data(); + } + $rootScope.refer_data_budget = function(){ + $scope.refreshdata(); + } + $scope.show_search_dropdown = function(e){ + $('div.drop_down_sel').remove(); + var $element = $('<div drop-down-selector filterlist="searchlist" class="drop_down_sel" ></div>'); + $('body').append($element); + $compile($element)($scope); + $element.css({ + 'top': e.pageY + 5, + 'right': 80 + }); + e.stopPropagation(); + }; + + $scope.show_conent_dropdown = function(e){ + $('div.drop_down_sel').remove(); + var $element = $('<div drop-down-selector filterlist="visiblecolumns" class="drop_down_sel" ></div>'); + $('body').append($element); + $compile($element)($scope); + $element.css({ + 'top': e.pageY + 5, + 'right': 80 + }); + e.stopPropagation(); + }; + + } + } + +}]) +.directive('travelExpenseTodosRequest', ['http_service', '$compile','$rootScope', function(http_service, $compile,$rootScope){ + return { + restrict: "EACM", + templateUrl: './static/templates/travel_expense_todos_request.html', + scope: { + todos: '=' + }, + link: function($scope, elemnet, attrs){ + $scope.type = 20; + _.each($scope.todos, function(n, m){ + $scope.todos[m] = (m==='request'); + }); + + var get_headers = function(cfg, form_list){ + var headers = []; + var headers_label_key = []; + _.each(form_list.child, function(form_item){ + _.each(cfg, function(cfg_item){ + if(form_item['gcColName'] === cfg_item) { + headers_label_key.push({'label': form_item['gcCpnAlias'], 'gcColName': cfg_item}); + headers.push(form_item['gcCpnAlias']); + } + }); + if(form_item.child != undefined){ + if(form_item.child.length > 0) { + _.each(cfg, function(_cfg_item){ + _.each(form_item.child, function(_form_item){ + if(_form_item['gcColName'] === _cfg_item) { + headers_label_key.push({'label': _form_item['gcCpnAlias'], 'gcColName': _cfg_item}); + headers.push(_form_item['gcCpnAlias']); + } + }) + }); + } + } + + }); + return {'headers': headers, 'headers_label_key': headers_label_key}; + }, + get_search_items = function(cfg, form_list){ + var search_items = []; + if(form_list){ + _.each(form_list.child, function(form_item){ + // 如果控件非分割线时 + if(form_item['gcCpnType'] !== 9 && form_item['gcCpnType'] !== 10 &&form_item['gcCpnType'] !== 0 &&form_item['gcCpnType'] !== 14){ + var item = { + 'gc_cpn_alias': form_item['gcCpnAlias'], + 'sfCfgType': 21, + 'sfFieldName': form_item['gcColName'], + 'gc_cpn_type': form_item['gcCpnType'], + 'gcMeCode': form_item['gcMeCode'], // 关联查询页下拉框 + 'gcCpnMultiple': form_item['gcCpnMultiple'], // 关联查询页下拉框 + 'selected': true + }; + item.selected = _.includes(cfg, form_item['gcColName']); + search_items.push(item); + if(form_item.child != undefined){ + if(form_item.child.length > 0) { + _.each(form_item.child, function(form_item){ + var _item = { + 'sfCfgType': 21, + 'gc_cpn_alias': form_item['gcCpnAlias'], + 'sfFieldName': form_item['gcColName'], + 'gc_cpn_type': form_item['gcCpnType'], + 'gcMeCode': form_item['gcMeCode'], // 关联查询页下拉框 + 'gcCpnMultiple': form_item['gcCpnMultiple'], // 关联查询页下拉框 + 'selected': true + } + _item.selected = _.includes(cfg, form_item['gcColName']); + search_items.push(_item); + }); + } + } + + } + }); + } + + return {'search_items': search_items}; + }, + search_select = function() { + var search_list = []; + + _.each($scope.searchlist, function(n, key) { + if(n.selected == true && (n.valueLeft || n.valueRight)) { + search_list.push({ + "sfFieldName": n.sfFieldName, + "gc_cpn_type": n.gc_cpn_type, + "valueLeft": n.valueLeft, + "valueRight": n.valueRight + }); + } + }); + if($scope.searchlist){ + var data = _.assign({ + 'num_per_page': $scope.num_per_page + }, { + 'page_num': $scope.page_num + }, { + 'search': search_list + },{ + 'flowStart':$scope.status + }); + }else{ + var data = _.assign({ + 'num_per_page': $scope.num_per_page + }, { + 'page_num': $scope.page_num + },{ + 'flowStart':$scope.status + }); + } + return data; + }, + get_data = function(headers_label_key, bill_data){ + var data = []; + var len = headers_label_key.length; + _.each(bill_data, function(data_item, i){ + var _data = []; + _.each(headers_label_key, function(cfg_item, n){ + _data.push({"name":_.get(data_item, cfg_item.gcColName),"id":data_item.ap_id}); +// if(n === len-1){ +// var doc_id = _.get(data_item, 'bu_id') || _.get(data_item, 'ap_id') || _.get(data_item, 'ex_id'); +// _data.push(doc_id); +// } + }); + switch(parseInt(_.get(data_item,"flowStart"))){ + case 10: + _data.push({"name":"待提交","id":data_item.ap_id}); + break; + case 20: + _data.push({"name":"已提交","id":data_item.ap_id}); + break; + case 30: + _data.push({"name":"待审核","id":data_item.ap_id}); + break; + case 40: + _data.push({"name":"审核完成","id":data_item.ap_id}); + break; + case -1: + _data.push({"name":"驳回","id":data_item.ap_id}); + break; + case 100: + _data.push({"name":"已完成","id":data_item.ap_id}); + break; + } + data.push(_data); + }); + return data; + }; + + + // pager + $scope.num_per_page = "20"; + $scope.page_num = "1"; + + + $scope.math_ceil = function(v){ + if(v == 0){ + $scope.page_num = 1; + return 0; + } + if(!v){ + return ''; + } + return Math.ceil(v); + } + + $scope.pre_page = function(){ + if($scope.page_num > 1){ + $scope.page_num = $scope.page_num - 1; + } + search_budget_data(); +// $scope.budget_data['data'] = _.slice($scope.data, $scope.num_per_page * ($scope.page_num-1), $scope.num_per_page * $scope.page_num - 1); + } + + $scope.next_page = function(){ + if($scope.page_num < Math.ceil($scope.apply_rows / $scope.num_per_page)){ + $scope.page_num = (parseInt($scope.page_num) + 1).toString(); + } + search_budget_data(); +// $scope.budget_data['data'] = _.slice($scope.data, $scope.num_per_page * ($scope.page_num-1), $scope.num_per_page * $scope.page_num - 1); + } + + $scope.change_page_num = function(){ + search_budget_data(); +// $scope.budget_data['data'] = _.slice($scope.data, $scope.num_per_page * ($scope.page_num-1), $scope.num_per_page * $scope.page_num - 1); + } + + $scope.doc_id = function(data_list){ + return _.slice(data_list, data_list.length - 1, data_list.length)[0]; + } + + $scope.sub_data = function(data_list){ + return _.slice(data_list, 0, data_list.length - 1); + } + + $scope.data = []; + + function search_budget_data(){ + http_service.post('flow/apply/wait/handle', search_select(), function(res){ +// $scope.$parent.$parent.apply_temp_num = res.data.rows; +// $scope.$parent.$parent.apply_temp_num_show = false; + $rootScope.search_hint(res.data.data,'arrary'); + $scope.apply_rows = res.data.rows; + var bill_data = res.data.data; + var headers = []; + http_service.post('showFieldCfg/list', { + "sfCfgType":22 + }, function(res){ +// if(res.data.data.length==0){ +// return false; +// } + var cfg = _.map(res.data.data, function(res){ + return res['sfFieldName']; + }); + http_service.post('form/list', { + "guTempType":20, + "cache_id":20 + }, function(res){ + if(!res.data.opState){ + return false; + } + var form_list = res.data.data; + if(form_list == undefined){ + return false; + } + headers = get_headers(cfg, form_list); + $scope.data = get_data(headers.headers_label_key, bill_data); + $scope.budget_data = { + headers: headers.headers, + data: _.slice($scope.data, 0, $scope.num_per_page * $scope.page_num - 1) + }; + },true); + }); + }); + } + search_budget_data(); + + + _.extend($scope, { + "searchlist": [], + "visiblecolumns": [] + }); + + http_service.post('showFieldCfg/list', { + "sfCfgType":21 + }, function(res){ +// if(res.data.data.length==0){ +// return false; +// } + var cfg = _.map(res.data.data, function(res){ + return res['sfFieldName']; + }); + http_service.post('form/list', { + "guTempType":20, + "cache_id":20 + }, function(res){ + if(!res.data.opState){ + return false; + } + var form_list = res.data.data; + var search_items = get_search_items(cfg, form_list); + $scope.searchlist = search_items.search_items; + },true); + }); + /* + http_service.get('./static/js/data/travel_expense_list.json', function(res){ + var data = res.data; + $scope.searchlist = _.filter(res.data.data, function(t){ + var type = t.sfCfgType, len = t.sfCfgType.length; + return type.substring(len-1, len) === '1'; + }); + + $scope.visiblecolumns = _.filter(res.data.data, function(t){ + var type = t.sfCfgType, len = t.sfCfgType.length; + return type.substring(len-1, len) === '2'; + }); + }); + */ + $scope.refreshdata = function(){ + search_budget_data(); + } + $rootScope.refer_data_apply = function(){ + $scope.refreshdata(); + } + $scope.show_search_dropdown = function(e){ + $('div.drop_down_sel').remove(); + var $element = $('<div drop-down-selector filterlist="searchlist" class="drop_down_sel" ></div>'); + $('body').append($element); + $compile($element)($scope); + $element.css({ + 'top': e.pageY + 5, + 'right': 80 + }); + e.stopPropagation(); + }; + + $scope.show_conent_dropdown = function(e){ + $('div.drop_down_sel').remove(); + var $element = $('<div drop-down-selector filterlist="visiblecolumns" class="drop_down_sel" ></div>'); + $('body').append($element); + $compile($element)($scope); + $element.css({ + 'top': e.pageY + 5, + 'right': 80 + }); + e.stopPropagation(); + }; + } + } + +}]) +.directive('travelExpenseTodosRebuise', ['http_service', '$compile','$rootScope', function(http_service, $compile,$rootScope){ + return { + restrict: "EACM", + templateUrl: './static/templates/travel_expense_todos_rebuise.html', + scope: { + todos: '=' + }, + link: function($scope, elemnet, attrs){ + $scope.type = 30; + _.each($scope.todos, function(n, m){ + $scope.todos[m] = (m==='rebuise'); + }); + var get_headers = function(cfg, form_list){ + var headers = []; + var headers_label_key = []; + _.each(cfg, function(cfg_item){ + _.each(form_list.child, function(form_item){ + if(form_item['gcColName'] === cfg_item) { + headers_label_key.push({'label': form_item['gcCpnAlias'], 'gcColName': cfg_item}); + headers.push(form_item['gcCpnAlias']); + } + if(form_item.child != undefined){ + if(form_item.child.length > 0) { + _.each(cfg, function(_cfg_item){ + _.each(form_item.child, function(form_item){ + if(form_item['gcColName'] === _cfg_item) { + headers_label_key.push({'label': form_item['gcCpnAlias'], 'gcColName': _cfg_item}); + headers.push(form_item['gcCpnAlias']); + } + }) + }); + } + } + + }); + }); + return {'headers': headers, 'headers_label_key': headers_label_key}; + }, + get_search_items = function(cfg, form_list){ + var search_items = []; + if(form_list){ + _.each(form_list.child, function(form_item){ + // 如果控件非分割线时 + if(form_item['gcCpnType'] !== 9 && form_item['gcCpnType'] !== 10 &&form_item['gcCpnType'] !== 0 &&form_item['gcCpnType'] !== 14){ + var item = { + 'gc_cpn_alias': form_item['gcCpnAlias'], + 'sfCfgType': 31, + 'sfFieldName': form_item['gcColName'], + 'gc_cpn_type': form_item['gcCpnType'], + 'gcMeCode': form_item['gcMeCode'], // 关联查询页下拉框 + 'gcCpnMultiple': form_item['gcCpnMultiple'], // 关联查询页下拉框 + 'selected': true + }; + item.selected = _.includes(cfg, form_item['gcColName']); + search_items.push(item); + if(form_item.child != undefined){ + if(form_item.child.length > 0) { + _.each(form_item.child, function(form_item){ + var _item = { + 'sfCfgType': 31, + 'gc_cpn_alias': form_item['gcCpnAlias'], + 'sfFieldName': form_item['gcColName'], + 'gc_cpn_type': form_item['gcCpnType'], + 'gcMeCode': form_item['gcMeCode'], // 关联查询页下拉框 + 'gcCpnMultiple': form_item['gcCpnMultiple'], // 关联查询页下拉框 + 'selected': true + } + _item.selected = _.includes(cfg, form_item['gcColName']); + search_items.push(_item); + }); + } + } + } + }); + } + + return {'search_items': search_items}; + }, + search_select = function() { + var search_list = []; + + _.each($scope.searchlist, function(n, key) { + if(n.selected == true && (n.valueLeft || n.valueRight)) { + search_list.push({ + "sfFieldName": n.sfFieldName, + "gc_cpn_type": n.gc_cpn_type, + "valueLeft": n.valueLeft, + "valueRight": n.valueRight + }); + } + }); + + if($scope.searchlist){ + var data = _.assign({ + 'num_per_page': $scope.num_per_page + }, { + 'page_num': $scope.page_num + }, { + 'search': search_list + },{ + 'flowStart':$scope.status + }); + }else{ + var data = _.assign({ + 'num_per_page': $scope.num_per_page + }, { + 'page_num': $scope.page_num + },{ + 'flowStart':$scope.status + }); + } + return data; + }, + get_data = function(headers_label_key, bill_data){ + var data = []; + var len = headers_label_key.length; + _.each(bill_data, function(data_item, i){ + var _data = []; + _.each(headers_label_key, function(cfg_item, n){ + _data.push({"name":_.get(data_item, cfg_item.gcColName),"id":data_item.ex_id}); +// if(n === len-1){ +// var doc_id = _.get(data_item, 'bu_id') || _.get(data_item, 'ap_id') || _.get(data_item, 'ex_id'); +// _data.push(doc_id); +// } + }); + switch(parseInt(_.get(data_item,"flowStart"))){ + case 10: + _data.push({"name":"待提交","id":data_item.ex_id}); + break; + case 20: + _data.push({"name":"已提交","id":data_item.ex_id}); + break; + case 30: + _data.push({"name":"待审核","id":data_item.ex_id}); + break; + case 40: + _data.push({"name":"审核完成","id":data_item.ex_id}); + break; + case -1: + _data.push({"name":"驳回","id":data_item.ex_id}); + break; + case 100: + _data.push({"name":"已完成","id":data_item.ex_id}); + break; + } + data.push(_data); + }); + return data; + }; + + + // pager + $scope.num_per_page = "20"; + $scope.page_num = "1"; + + + $scope.math_ceil = function(v){ + if(v == 0){ + $scope.page_num = 1; + return 0; + } + if(!v){ + return ''; + } + return Math.ceil(v); + } + + $scope.pre_page = function(){ + if($scope.page_num > 1){ + $scope.page_num = $scope.page_num - 1; + } + search_budget_data(); +// $scope.budget_data['data'] = _.slice($scope.data, $scope.num_per_page * ($scope.page_num-1), $scope.num_per_page * $scope.page_num - 1); + } + + $scope.next_page = function(){ + if($scope.page_num < Math.ceil($scope.expend_rows / $scope.num_per_page)){ + $scope.page_num = (parseInt($scope.page_num) + 1).toString(); + } + search_budget_data(); +// $scope.budget_data['data'] = _.slice($scope.data, $scope.num_per_page * ($scope.page_num-1), $scope.num_per_page * $scope.page_num - 1); + } + + $scope.change_page_num = function(){ + search_budget_data(); +// $scope.budget_data['data'] = _.slice($scope.data, $scope.num_per_page * ($scope.page_num-1), $scope.num_per_page * $scope.page_num - 1); + } + + $scope.doc_id = function(data_list){ + return _.slice(data_list, data_list.length - 1, data_list.length)[0]; + } + + $scope.sub_data = function(data_list){ + return _.slice(data_list, 0, data_list.length - 1); + } + + $scope.data = []; + + function search_budget_data(){ + http_service.post('flow/expend/wait/handle', search_select(), function(res){ +// $scope.$parent.$parent.expend_temp_num = res.data.rows; +// $scope.$parent.$parent.expend_temp_num_show = false; + $rootScope.search_hint(res.data.data,'arrary'); + $scope.expend_rows = res.data.rows; + var bill_data = res.data.data; + var headers = []; + http_service.post('showFieldCfg/list', { + "sfCfgType":32 + }, function(res){ +// if(res.data.data.length==0){ +// return false; +// } + var cfg = _.map(res.data.data, function(res){ + return res['sfFieldName']; + }); + http_service.post('form/list', { + "guTempType":30, + "cache_id":30 + }, function(res){ + if(!res.data.opState){ + return false; + } + var form_list = res.data.data; + if(form_list == undefined){ + return false; + } + headers = get_headers(cfg, form_list); + $scope.data = get_data(headers.headers_label_key, bill_data); + $scope.budget_data = { + headers: headers.headers, + data: _.slice($scope.data, 0, $scope.num_per_page * $scope.page_num - 1) + }; + },true); + }); + }); + } + search_budget_data(); + + _.extend($scope, { + "searchlist": [], + "visiblecolumns": [] + }); + + http_service.post('showFieldCfg/list', { + "sfCfgType":31 + }, function(res){ +// if(res.data.data.length==0){ +// return false; +// } + var cfg = _.map(res.data.data, function(res){ + return res['sfFieldName']; + }); + http_service.post('form/list', { + "guTempType":30, + "cache_id":30 + }, function(res){ + if(!res.data.opState){ + return false; + } + var form_list = res.data.data; + var search_items = get_search_items(cfg, form_list); + $scope.searchlist = search_items.search_items; + },true); + }); + + /* + http_service.get('./static/js/data/travel_expense_list.json', function(res){ + var data = res.data; + $scope.searchlist = _.filter(res.data.data, function(t){ + var type = t.sfCfgType, len = t.sfCfgType.length; + return type.substring(len-1, len) === '1'; + }); + + $scope.visiblecolumns = _.filter(res.data.data, function(t){ + var type = t.sfCfgType, len = t.sfCfgType.length; + return type.substring(len-1, len) === '2'; + }); + }); + */ + $scope.refreshdata = function(){ + search_budget_data(); + } + $rootScope.refer_data_expend = function(){ + $scope.refreshdata(); + } + $scope.show_search_dropdown = function(e){ + $('div.drop_down_sel').remove(); + var $element = $('<div drop-down-selector filterlist="searchlist" class="drop_down_sel" ></div>'); + $('body').append($element); + $compile($element)($scope); + $element.css({ + 'top': e.pageY + 5, + 'right': 80 + }); + e.stopPropagation(); + }; + + $scope.show_conent_dropdown = function(e){ + $('div.drop_down_sel').remove(); + var $element = $('<div drop-down-selector filterlist="visiblecolumns" class="drop_down_sel" ></div>'); + $('body').append($element); + $compile($element)($scope); + $element.css({ + 'top': e.pageY + 5, + 'right': 80 + }); + e.stopPropagation(); + }; + } + } + +}]) + +.controller('travelExpenseTodosCtrl', ['$scope','$routeParams', '$route', '$compile', 'http_service',"$rootScope","$location", function($scope, $routeParams, $route, $compile, http_service,$rootScope,$location){ + //由于设置高度产生滚动条,注释之 + //$scope.$on('$viewContentLoaded', function() { + // $('div.split_form').height($(document).height() - 52); + // $(window).resize(function(){ + // $('div.split_form').height($(document).height() - 52); + // }); + //}); + $scope.type = $routeParams.type; + _.extend($scope, { + "searchlist": [], + "visiblecolumns": [] + }); + $scope.expend_code = 20; + $scope.apply_code = 30; + $scope.budget_code = 10; +// $scope.budget_temp_num = ""; +// $scope.expend_temp_num = ""; +// $scope.apply_temp_num = ""; + $scope.budget_temp_num_show = true; + $scope.expend_temp_num_show = true; + $scope.apply_temp_num_show = true; + + /* + http_service.get('./static/js/data/travel_expense_list.json', function(res){ + var data = res.data; + $scope.searchlist = _.filter(res.data.data, function(t){ + var type = t.sfCfgType, len = t.sfCfgType.length; + return type.substring(len-1, len) === '1'; + }); + + $scope.visiblecolumns = _.filter(res.data.data, function(t){ + var type = t.sfCfgType, len = t.sfCfgType.length; + return type.substring(len-1, len) === '2'; + }); + }); + */ + + $scope.more_form = function(url){ + $rootScope.my_form_type = 2; + $location.path(url); + } + $scope.show_search_dropdown = function(e){ + $('div.drop_down_sel').remove(); + var $element = $('<div drop-down-selector filterlist="searchlist" class="drop_down_sel" ></div>'); + $('body').append($element); + $compile($element)($scope); + $element.css({ + 'top': e.pageY + 5, + 'right': 80 + }); + e.stopPropagation(); + }; + + $scope.show_conent_dropdown = function(e){ + $('div.drop_down_sel').remove(); + var $element = $('<div drop-down-selector filterlist="visiblecolumns" class="drop_down_sel" ></div>'); + $('body').append($element); + $compile($element)($scope); + $element.css({ + 'top': e.pageY + 5, + 'right': 80 + }); + e.stopPropagation(); + }; + + $scope.todos = { + 'all': true, + 'budget': false, + 'request': false, + 'rebuise': false + } + +}]); diff --git a/src/static/js/userPermission.json b/src/static/js/userPermission.json new file mode 100644 index 0000000..97262ee --- /dev/null +++ b/src/static/js/userPermission.json @@ -0,0 +1,134 @@ +{ + "opState":true, + "rows":137, + "data":[ +{"name":"差旅费","id":1,"url":"travel_reimbursement","parentId":1}, +{"name":"预算单","id":2,"url":"budgetorder","parentId":1}, +{"name":"预算单查询列表页面","id":3,"url":"travel_expense/1","parentId":2}, +{"name":"查询按钮","id":4,"url":"search_condition","parentId":3}, +{"name":"更改查询内容","id":5,"url":"change_search_condition","parentId":3}, +{"name":"更改显示内容","id":6,"url":"show_condition","parentId":3}, +{"name":"新建按钮","id":7,"url":"new_order","parentId":3}, +{"name":"删除按钮(批量)","id":8,"url":"delete_order","parentId":3}, +{"name":"预算单流程状态","id":12,"url":"flow_content","parentId":3}, +{"name":"删除按钮","id":13,"url":"deletebtn","parentId":3}, +{"name":"提交按钮","id":14,"url":"commitbtn","parentId":3}, +{"name":"审核按钮","id":15,"url":"auditbtn","parentId":3}, +{"name":"保存按钮","id":16,"url":"savebtn","parentId":3}, +{"name":"编辑按钮","id":18,"url":"editbtn","parentId":3}, +{"name":"驳回按钮","id":19,"url":"backbtn","parentId":3}, +{"name":"申请单","id":20,"url":"applyorder","parentId":1}, +{"name":"申请单查询列表页面","id":21,"url":"travel_expense/2","parentId":20}, +{"name":"查询按钮","id":22,"url":"search_condition","parentId":21}, +{"name":"更改查询内容","id":23,"url":"change_search_condition","parentId":21}, +{"name":"更改显示内容","id":24,"url":"show_condition","parentId":21}, +{"name":"新建按钮","id":25,"url":"new_order","parentId":21}, +{"name":"删除按钮(批量)","id":26,"url":"delete_order","parentId":21}, +{"name":"申请单流程状态","id":30,"url":"flow_content","parentId":21}, +{"name":"删除按钮","id":31,"url":"deletebtn","parentId":21}, +{"name":"提交按钮","id":32,"url":"commitbtn","parentId":21}, +{"name":"审核按钮","id":33,"url":"auditbtn","parentId":21}, +{"name":"保存按钮","id":34,"url":"savebtn","parentId":21}, +{"name":"编辑按钮","id":36,"url":"editbtn","parentId":21}, +{"name":"驳回按钮","id":37,"url":"backbtn","parentId":21}, +{"name":"报销单","id":38,"url":"expendorder","parentId":1}, +{"name":"报销单查询列表页面","id":39,"url":"travel_expense/3","parentId":38}, +{"name":"查询按钮","id":40,"url":"search_condition","parentId":39}, +{"name":"更改查询内容","id":41,"url":"change_search_condition","parentId":39}, +{"name":"更改显示内容","id":42,"url":"show_condition","parentId":39}, +{"name":"新建按钮","id":43,"url":"new_order","parentId":39}, +{"name":"删除按钮(批量)","id":44,"url":"delete_order","parentId":39}, +{"name":"报销单流程状态","id":48,"url":"flow_content","parentId":39}, +{"name":"删除按钮","id":49,"url":"deletebtn","parentId":39}, +{"name":"提交按钮","id":50,"url":"commitbtn","parentId":39}, +{"name":"审核按钮","id":51,"url":"auditbtn","parentId":39}, +{"name":"保存按钮","id":52,"url":"savebtn","parentId":39}, +{"name":"编辑按钮","id":54,"url":"editbtn","parentId":39}, +{"name":"驳回按钮","id":55,"url":"backbtn","parentId":39}, +{"name":"待办事项","id":56,"url":"termination","parentId":1}, +{"name":"我的待办","id":57,"url":"mytodos","parentId":58}, +{"name":"待办事项页面","id":58,"url":"/travel_expense_todos","parentId":56}, +{"name":"待办预算查看页面","id":59,"url":"termination_budget","parentId":56}, +{"name":"查询按钮","id":60,"url":"search_budget","parentId":59}, +{"name":"更改查询内容","id":61,"url":"termination_budget_search","parentId":59}, +{"name":"待办申请查看页面","id":62,"url":"termination_apply","parentId":56}, +{"name":"查询按钮","id":63,"url":"search_apply","parentId":62}, +{"name":"更改查询内容","id":64,"url":"termination_apply_search","parentId":62}, +{"name":"待办报销查看页面","id":65,"url":"termination_expend","parentId":56}, +{"name":"查询按钮","id":66,"url":"search_expend","parentId":65}, +{"name":"更改查询内容","id":67,"url":"termination_expend_search","parentId":65}, +{"name":"配置中心","id":68,"url":"config_center","parentId":1}, +{"name":"配置中心","id":69,"url":"/cfg_center","parentId":68}, +{"name":"预算单配置","id":70,"url":"budget_template","parentId":69}, +{"name":"预算单配置页面","id":71,"url":"/budget_froms/10","parentId":70}, +{"name":"使用空白的预算单","id":72,"url":"/budget_form_customize/10","parentId":71}, +{"name":"我创建的预算单","id":73,"url":"myform","parentId":71}, +{"name":"行业精选预算单","id":74,"url":"bussiness_template","parentId":71}, +{"name":"行业精选预算单","id":75,"url":"/budget_froms/*/10","parentId":70}, +{"name":"保存按钮","id":76,"url":"save_create_form","parentId":72}, +{"name":"编辑按钮","id":77,"url":"edit_template","parentId":71}, +{"name":"启用模板按钮","id":79,"url":"start_template","parentId":75}, +{"name":"从该模板创建按钮","id":80,"url":"create_form_template","parentId":75}, +{"name":"申请单配置","id":81,"url":"apply_template","parentId":69}, +{"name":"申请单配置页面","id":82,"url":"/budget_froms/20","parentId":81}, +{"name":"使用空白的申请单","id":83,"url":"/budget_form_customize/20","parentId":82}, +{"name":"我创建的申请单","id":84,"url":"myform","parentId":82}, +{"name":"行业精选申请单","id":85,"url":"bussiness_template","parentId":82}, +{"name":"行业精选申请单","id":86,"url":"/budget_froms/*/20","parentId":81}, +{"name":"保存按钮","id":87,"url":"save_create_form","parentId":83}, +{"name":"编辑按钮","id":88,"url":"edit_template","parentId":82}, +{"name":"启用模板按钮","id":90,"url":"start_template","parentId":86}, +{"name":"从该模板创建按钮","id":91,"url":"create_form_template","parentId":86}, +{"name":"报销单配置","id":92,"url":"expend_template","parentId":90}, +{"name":"报销单配置页面","id":93,"url":"/budget_froms/30","parentId":92}, +{"name":"使用空白的报销单","id":94,"url":"/budget_form_customize/30","parentId":93}, +{"name":"我创建的报销单","id":95,"url":"myform","parentId":93}, +{"name":"行业精选报销单","id":96,"url":"bussiness_template","parentId":93}, +{"name":"行业精选报销单","id":97,"url":"/budget_froms/*/30","parentId":92}, +{"name":"保存按钮","id":98,"url":"save_create_form","parentId":94}, +{"name":"编辑按钮","id":99,"url":"edit_template","parentId":93}, +{"name":"启用模板按钮","id":101,"url":"start_template","parentId":97}, +{"name":"从该模板创建按钮","id":102,"url":"create_form_template","parentId":97}, +{"name":"系统设置","id":103,"url":"system","parentId":69}, +{"name":"系统设置页面","id":104,"url":"/system_config","parentId":103}, +{"name":"完成按钮","id":105,"url":"save_system","parentId":104}, +{"name":"报销标准","id":106,"url":"standard","parentId":69}, +{"name":"报销标准配置页面","id":107,"url":"/expend_standard","parentId":106}, +{"name":"新建按钮","id":108,"url":"new_standard","parentId":107}, +{"name":"保存按钮","id":109,"url":"save_standard","parentId":107}, +{"name":"复制按钮","id":110,"url":"copy_standard","parentId":107}, +{"name":"删除按钮","id":111,"url":"delete_standard","parentId":107}, +{"name":"添加数据按钮","id":114,"url":"add_standard_data","parentId":107}, +{"name":"工作流配置","id":115,"url":"flow","parentId":69}, +{"name":"工作流配置页面","id":116,"url":"/work_flow","parentId":116}, +{"name":"配置流程按钮(预算)","id":117,"url":"config_budget","parentId":116}, +{"name":"配置流程按钮(申请)","id":118,"url":"config_apply","parentId":116}, +{"name":"配置流程按钮(报销)","id":119,"url":"config_expend","parentId":116}, +{"name":"部署按钮(预算)","id":120,"url":"econfig_budget","parentId":116}, +{"name":"部署按钮(申请)","id":121,"url":"econfig_apply","parentId":116}, +{"name":"部署按钮(报销)","id":122,"url":"econfig_expend","parentId":116}, +{"name":"云中心","id":123,"url":"cloud_center","parentId":1}, +{"name":"模板中心","id":124,"url":"template_center","parentId":123}, + {"name":"消息中心","id":145,"url":"message_center","parentId":123}, +{"name":"模板管理页面","id":125,"url":"/templates_center","parentId":125}, +{"name":"添加预算单模板按钮","id":126,"url":"add_budget_template","parentId":125}, +{"name":"删除预算单模板按钮","id":127,"url":"delete_budget_template","parentId":125}, +{"name":"添加申请单模板按钮","id":128,"url":"add_apply_template","parentId":125}, +{"name":"删除申请单模板按钮","id":129,"url":"delete_apply_template","parentId":125}, +{"name":"添加报销单模板按钮","id":130,"url":"add_expend_template","parentId":125}, +{"name":"删除报销单模板按钮","id":131,"url":"delete_expend_template","parentId":125}, +{"name":"添加行业按钮","id":132,"url":"add_bussiness","parentId":125}, +{"name":"修改行业按钮","id":133,"url":"edit_bussiness","parentId":125}, +{"name":"删除行业按钮","id":134,"url":"delete_bussiness","parentId":125}, +{"name":"上传模板按钮","id":135,"url":"template_pass","parentId":125}, +{"name":"初始化向导页面","id":137,"url":"/guide","parentId":137}, +{"name":"选择行业向导页面","id":138,"url":"/business","parentId":137}, +{"name":"设置向导页面","id":139,"url":"/billing_cfg_guide","parentId":137}, +{"name":"登录","id":140,"url":"/registry","parentId":1}, +{"name":"模版中心编辑按钮","id":141,"url":"edit_template_center","parentId":125}, +{"name":"票据上传按钮(新增报销单)","id":142,"url":"bill_commit_create","parentId":39}, +{"name":"票据上传按钮(修改报销单)","id":143,"url":"bill_commit_update","parentId":39}, +{"name":"票据上传按钮(报销单详情)","id":144,"url":"bill_commit_detail","parentId":39} + + ] +} \ No newline at end of file diff --git a/src/static/js/utils/bootstrap-wysiwyg.min.js b/src/static/js/utils/bootstrap-wysiwyg.min.js new file mode 100644 index 0000000..6211a3e --- /dev/null +++ b/src/static/js/utils/bootstrap-wysiwyg.min.js @@ -0,0 +1,10 @@ +/* @fileoverview + * Provides full Bootstrap based, multi-instance WYSIWYG editor. + * + * Name = bootstrap-wysiwyg + * Author = Various, see LICENCE + * Version = v2.0.1 + * About = A tiny Bootstrap and jQuery based WYSIWYG rich text editor based on the browser function execCommand. +*/ + +!function(a,b){"use strict";function c(c,d){this.selectedRange=null,this.editor=b(c);var e=b(c),f={hotKeys:{"Ctrl+b meta+b":"bold","Ctrl+i meta+i":"italic","Ctrl+u meta+u":"underline","Ctrl+z":"undo","Ctrl+y meta+y meta+shift+z":"redo","Ctrl+l meta+l":"justifyleft","Ctrl+r meta+r":"justifyright","Ctrl+e meta+e":"justifycenter","Ctrl+j meta+j":"justifyfull","Shift+tab":"outdent",tab:"indent"},toolbarSelector:"[data-role=editor-toolbar]",commandRole:"edit",activeToolbarClass:"btn-info",selectionMarker:"edit-focus-marker",selectionColor:"darkgrey",dragAndDropImages:!0,keypressTimeout:200,fileUploadError:function(a,b){console.log("File upload error",a,b)}},g=b.extend(!0,{},f,d),h="a[data-"+g.commandRole+"],button[data-"+g.commandRole+"],input[type=button][data-"+g.commandRole+"]";this.bindHotkeys(e,g,h),g.dragAndDropImages&&this.initFileDrops(e,g,h),this.bindToolbar(e,b(g.toolbarSelector),g,h),e.attr("contenteditable",!0).on("mouseup keyup mouseout",function(){this.saveSelection(),this.updateToolbar(e,h,g)}.bind(this)),b(a).bind("touchend",function(a){var b=e.is(a.target)||e.has(a.target).length>0,c=this.getCurrentRange(),d=c&&c.startContainer===c.endContainer&&c.startOffset===c.endOffset;(!d||b)&&(this.saveSelection(),this.updateToolbar(e,h,g))})}c.prototype.readFileIntoDataUrl=function(a){var c=b.Deferred(),d=new FileReader;return d.onload=function(a){c.resolve(a.target.result)},d.onerror=c.reject,d.onprogress=c.notify,d.readAsDataURL(a),c.promise()},c.prototype.cleanHtml=function(a){var c=this;if(b(c).data("wysiwyg-html-mode")===!0&&(b(c).html(b(c).text()),b(c).attr("contenteditable",!0),b(c).data("wysiwyg-html-mode",!1)),a===!0&&b(c).parent().is("form")){var d=b(c).html;if(b(d).has("img").length){var e=b("img",b(d)),f=[],g=b(c).parent();b.each(e,function(a,c){b(c).attr("src").match(/^data:image\/.*$/)&&(f.push(e[a]),b(g).prepend("<input value='"+b(c).attr("src")+"' type='hidden' name='postedimage/"+a+"' />"),b(c).attr("src","postedimage/"+a))})}}var h=b(c).html();return h&&h.replace(/(<br>|\s|<div><br><\/div>| )*$/,"")},c.prototype.updateToolbar=function(a,c,d){d.activeToolbarClass&&b(d.toolbarSelector).find(c).each(function(){var a=b(this),c=a.data(d.commandRole).split(" "),e=c[0];c.length>1&&document.queryCommandEnabled(e)&&document.queryCommandValue(e)===c[1]?a.addClass(d.activeToolbarClass):1===c.length&&document.queryCommandEnabled(e)&&document.queryCommandState(e)?a.addClass(d.activeToolbarClass):a.removeClass(d.activeToolbarClass)})},c.prototype.execCommand=function(a,b,c,d,e){var f=a.split(" "),g=f.shift(),h=f.join(" ")+(b||""),i=a.split("-");1===i.length?document.execCommand(g,!1,h):"format"===i[0]&&2===i.length&&document.execCommand("formatBlock",!1,i[1]),c.trigger("change"),this.updateToolbar(c,e,d)},c.prototype.bindHotkeys=function(a,c,d){var e=this;b.each(c.hotKeys,function(f,g){b(a).keydown(f,function(f){a.attr("contenteditable")&&b(a).is(":visible")&&(f.preventDefault(),f.stopPropagation(),e.execCommand(g,null,a,c,d))}).keyup(f,function(c){a.attr("contenteditable")&&b(a).is(":visible")&&(c.preventDefault(),c.stopPropagation())})}),a.keyup(function(){a.trigger("change")})},c.prototype.getCurrentRange=function(){var b,c;return a.getSelection?(b=a.getSelection(),b.getRangeAt&&b.rangeCount&&(c=b.getRangeAt(0))):document.selection&&(c=document.selection.createRange()),c},c.prototype.saveSelection=function(){this.selectedRange=this.getCurrentRange()},c.prototype.restoreSelection=function(){var b;if(a.getSelection||document.createRange){if(b=a.getSelection(),this.selectedRange){try{b.removeAllRanges()}catch(c){document.body.createTextRange().select(),document.selection.empty()}b.addRange(this.selectedRange)}}else document.selection&&this.selectedRange&&this.selectedRange.select()},c.prototype.toggleHtmlEdit=function(a){if(a.data("wysiwyg-html-mode")!==!0){var c=a.html(),d=b("<pre />");b(d).append(document.createTextNode(c)),b(d).attr("contenteditable",!0),b(a).html(" "),b(a).append(b(d)),b(a).attr("contenteditable",!1),b(a).data("wysiwyg-html-mode",!0),b(d).focus()}else b(a).html(b(a).text()),b(a).attr("contenteditable",!0),b(a).data("wysiwyg-html-mode",!1),b(a).focus()},c.prototype.insertFiles=function(a,c,d,e){var f=this;d.focus(),b.each(a,function(a,g){/^image\//.test(g.type)?b.when(f.readFileIntoDataUrl(g)).done(function(a){f.execCommand("insertimage",a,d,c,e),d.trigger("image-inserted")}).fail(function(a){c.fileUploadError("file-reader",a)}):c.fileUploadError("unsupported-file-type",g.type)})},c.prototype.markSelection=function(a,b,c){this.restoreSelection(),document.queryCommandSupported("hiliteColor")&&document.execCommand("hiliteColor",!1,b||"transparent"),this.saveSelection(),a.data(c.selectionMarker,b)},c.prototype.bindToolbar=function(a,c,d,e){var f=this;c.find(e).click(function(){f.restoreSelection(),a.focus(),"html"===a.data(d.commandRole)?f.toggleHtmlEdit(a):f.execCommand(b(this).data(d.commandRole),null,a,d,e),f.saveSelection()}),c.find("[data-toggle=dropdown]").click(this.restoreSelection()),c.find("input[type=text][data-"+d.commandRole+"]").on("webkitspeechchange change",function(){var c=this.value;this.value="",f.restoreSelection(),c&&(a.focus(),f.execCommand(b(this).data(d.commandRole),c,a,d,e)),f.saveSelection()}).on("focus",function(){var a=b(this);a.data(d.selectionMarker)||(f.markSelection(a,d.selectionColor,d),a.focus())}).on("blur",function(){var a=b(this);a.data(d.selectionMarker)&&f.markSelection(a,!1,d)}),c.find("input[type=file][data-"+d.commandRole+"]").change(function(){f.restoreSelection(),"file"===this.type&&this.files&&this.files.length>0&&f.insertFiles(this.files,d,a,e),f.saveSelection(),this.value=""})},c.prototype.initFileDrops=function(a,b,c){var d=this;a.on("dragenter dragover",!1).on("drop",function(e){var f=e.originalEvent.dataTransfer;e.stopPropagation(),e.preventDefault(),f&&f.files&&f.files.length>0&&d.insertFiles(f.files,b,a,c)})},b.fn.wysiwyg=function(a){new c(this,a)}}(window,window.jQuery); \ No newline at end of file diff --git a/src/static/js/utils/des.js b/src/static/js/utils/des.js new file mode 100644 index 0000000..b914a99 --- /dev/null +++ b/src/static/js/utils/des.js @@ -0,0 +1,867 @@ + +/** +* DES加密/解密 +* @Copyright Copyright (c) 2015 +* @author liuyazhuang +* @see DESCore +*/ + +/* +* encrypt the string to string made up of hex +* return the encrypted string +*/ +function strEnc(data,firstKey,secondKey,thirdKey){ + var leng = data.length; + var encData = ""; + var firstKeyBt,secondKeyBt,thirdKeyBt,firstLength,secondLength,thirdLength; + if(firstKey != null && firstKey != ""){ + firstKeyBt = getKeyBytes(firstKey); + firstLength = firstKeyBt.length; + } + if(secondKey != null && secondKey != ""){ + secondKeyBt = getKeyBytes(secondKey); + secondLength = secondKeyBt.length; + } + if(thirdKey != null && thirdKey != ""){ + thirdKeyBt = getKeyBytes(thirdKey); + thirdLength = thirdKeyBt.length; + } + + if(leng > 0){ + if(leng < 4){ + var bt = strToBt(data); + var encByte ; + if(firstKey != null && firstKey !="" && secondKey != null && secondKey != "" && thirdKey != null && thirdKey != ""){ + var tempBt; + var x,y,z; + tempBt = bt; + for(x = 0;x < firstLength ;x ++){ + tempBt = enc(tempBt,firstKeyBt[x]); + } + for(y = 0;y < secondLength ;y ++){ + tempBt = enc(tempBt,secondKeyBt[y]); + } + for(z = 0;z < thirdLength ;z ++){ + tempBt = enc(tempBt,thirdKeyBt[z]); + } + encByte = tempBt; + }else{ + if(firstKey != null && firstKey !="" && secondKey != null && secondKey != ""){ + var tempBt; + var x,y; + tempBt = bt; + for(x = 0;x < firstLength ;x ++){ + tempBt = enc(tempBt,firstKeyBt[x]); + } + for(y = 0;y < secondLength ;y ++){ + tempBt = enc(tempBt,secondKeyBt[y]); + } + encByte = tempBt; + }else{ + if(firstKey != null && firstKey !=""){ + var tempBt; + var x = 0; + tempBt = bt; + for(x = 0;x < firstLength ;x ++){ + tempBt = enc(tempBt,firstKeyBt[x]); + } + encByte = tempBt; + } + } + } + encData = bt64ToHex(encByte); + }else{ + var iterator = parseInt(leng/4); + var remainder = leng%4; + var i=0; + for(i = 0;i < iterator;i++){ + var tempData = data.substring(i*4+0,i*4+4); + var tempByte = strToBt(tempData); + var encByte ; + if(firstKey != null && firstKey !="" && secondKey != null && secondKey != "" && thirdKey != null && thirdKey != ""){ + var tempBt; + var x,y,z; + tempBt = tempByte; + for(x = 0;x < firstLength ;x ++){ + tempBt = enc(tempBt,firstKeyBt[x]); + } + for(y = 0;y < secondLength ;y ++){ + tempBt = enc(tempBt,secondKeyBt[y]); + } + for(z = 0;z < thirdLength ;z ++){ + tempBt = enc(tempBt,thirdKeyBt[z]); + } + encByte = tempBt; + }else{ + if(firstKey != null && firstKey !="" && secondKey != null && secondKey != ""){ + var tempBt; + var x,y; + tempBt = tempByte; + for(x = 0;x < firstLength ;x ++){ + tempBt = enc(tempBt,firstKeyBt[x]); + } + for(y = 0;y < secondLength ;y ++){ + tempBt = enc(tempBt,secondKeyBt[y]); + } + encByte = tempBt; + }else{ + if(firstKey != null && firstKey !=""){ + var tempBt; + var x; + tempBt = tempByte; + for(x = 0;x < firstLength ;x ++){ + tempBt = enc(tempBt,firstKeyBt[x]); + } + encByte = tempBt; + } + } + } + encData += bt64ToHex(encByte); + } + if(remainder > 0){ + var remainderData = data.substring(iterator*4+0,leng); + var tempByte = strToBt(remainderData); + var encByte ; + if(firstKey != null && firstKey !="" && secondKey != null && secondKey != "" && thirdKey != null && thirdKey != ""){ + var tempBt; + var x,y,z; + tempBt = tempByte; + for(x = 0;x < firstLength ;x ++){ + tempBt = enc(tempBt,firstKeyBt[x]); + } + for(y = 0;y < secondLength ;y ++){ + tempBt = enc(tempBt,secondKeyBt[y]); + } + for(z = 0;z < thirdLength ;z ++){ + tempBt = enc(tempBt,thirdKeyBt[z]); + } + encByte = tempBt; + }else{ + if(firstKey != null && firstKey !="" && secondKey != null && secondKey != ""){ + var tempBt; + var x,y; + tempBt = tempByte; + for(x = 0;x < firstLength ;x ++){ + tempBt = enc(tempBt,firstKeyBt[x]); + } + for(y = 0;y < secondLength ;y ++){ + tempBt = enc(tempBt,secondKeyBt[y]); + } + encByte = tempBt; + }else{ + if(firstKey != null && firstKey !=""){ + var tempBt; + var x; + tempBt = tempByte; + for(x = 0;x < firstLength ;x ++){ + tempBt = enc(tempBt,firstKeyBt[x]); + } + encByte = tempBt; + } + } + } + encData += bt64ToHex(encByte); + } + } + } + return encData; +} + +/* +* decrypt the encrypted string to the original string +* +* return the original string +*/ +function strDec(data,firstKey,secondKey,thirdKey){ + var leng = data.length; + var decStr = ""; + var firstKeyBt,secondKeyBt,thirdKeyBt,firstLength,secondLength,thirdLength; + if(firstKey != null && firstKey != ""){ + firstKeyBt = getKeyBytes(firstKey); + firstLength = firstKeyBt.length; + } + if(secondKey != null && secondKey != ""){ + secondKeyBt = getKeyBytes(secondKey); + secondLength = secondKeyBt.length; + } + if(thirdKey != null && thirdKey != ""){ + thirdKeyBt = getKeyBytes(thirdKey); + thirdLength = thirdKeyBt.length; + } + + var iterator = parseInt(leng/16); + var i=0; + for(i = 0;i < iterator;i++){ + var tempData = data.substring(i*16+0,i*16+16); + var strByte = hexToBt64(tempData); + var intByte = new Array(64); + var j = 0; + for(j = 0;j < 64; j++){ + intByte[j] = parseInt(strByte.substring(j,j+1)); + } + var decByte; + if(firstKey != null && firstKey !="" && secondKey != null && secondKey != "" && thirdKey != null && thirdKey != ""){ + var tempBt; + var x,y,z; + tempBt = intByte; + for(x = thirdLength - 1;x >= 0;x --){ + tempBt = dec(tempBt,thirdKeyBt[x]); + } + for(y = secondLength - 1;y >= 0;y --){ + tempBt = dec(tempBt,secondKeyBt[y]); + } + for(z = firstLength - 1;z >= 0 ;z --){ + tempBt = dec(tempBt,firstKeyBt[z]); + } + decByte = tempBt; + }else{ + if(firstKey != null && firstKey !="" && secondKey != null && secondKey != ""){ + var tempBt; + var x,y,z; + tempBt = intByte; + for(x = secondLength - 1;x >= 0 ;x --){ + tempBt = dec(tempBt,secondKeyBt[x]); + } + for(y = firstLength - 1;y >= 0 ;y --){ + tempBt = dec(tempBt,firstKeyBt[y]); + } + decByte = tempBt; + }else{ + if(firstKey != null && firstKey !=""){ + var tempBt; + var x,y,z; + tempBt = intByte; + for(x = firstLength - 1;x >= 0 ;x --){ + tempBt = dec(tempBt,firstKeyBt[x]); + } + decByte = tempBt; + } + } + } + decStr += byteToString(decByte); + } + return decStr; +} +/* +* chang the string into the bit array +* +* return bit array(it's length % 64 = 0) +*/ +function getKeyBytes(key){ + var keyBytes = new Array(); + var leng = key.length; + var iterator = parseInt(leng/4); + var remainder = leng%4; + var i = 0; + for(i = 0;i < iterator; i ++){ + keyBytes[i] = strToBt(key.substring(i*4+0,i*4+4)); + } + if(remainder > 0){ + keyBytes[i] = strToBt(key.substring(i*4+0,leng)); + } + return keyBytes; +} + +/* +* chang the string(it's length <= 4) into the bit array +* +* return bit array(it's length = 64) +*/ +function strToBt(str){ + var leng = str.length; + var bt = new Array(64); + if(leng < 4){ + var i=0,j=0,p=0,q=0; + for(i = 0;i<leng;i++){ + var k = str.charCodeAt(i); + for(j=0;j<16;j++){ + var pow=1,m=0; + for(m=15;m>j;m--){ + pow *= 2; + } + bt[16*i+j]=parseInt(k/pow)%2; + } + } + for(p = leng;p<4;p++){ + var k = 0; + for(q=0;q<16;q++){ + var pow=1,m=0; + for(m=15;m>q;m--){ + pow *= 2; + } + bt[16*p+q]=parseInt(k/pow)%2; + } + } + }else{ + for(i = 0;i<4;i++){ + var k = str.charCodeAt(i); + for(j=0;j<16;j++){ + var pow=1; + for(m=15;m>j;m--){ + pow *= 2; + } + bt[16*i+j]=parseInt(k/pow)%2; + } + } + } + return bt; +} + +/* +* chang the bit(it's length = 4) into the hex +* +* return hex +*/ +function bt4ToHex(binary) { + var hex; + switch (binary) { + case "0000" : hex = "0"; break; + case "0001" : hex = "1"; break; + case "0010" : hex = "2"; break; + case "0011" : hex = "3"; break; + case "0100" : hex = "4"; break; + case "0101" : hex = "5"; break; + case "0110" : hex = "6"; break; + case "0111" : hex = "7"; break; + case "1000" : hex = "8"; break; + case "1001" : hex = "9"; break; + case "1010" : hex = "A"; break; + case "1011" : hex = "B"; break; + case "1100" : hex = "C"; break; + case "1101" : hex = "D"; break; + case "1110" : hex = "E"; break; + case "1111" : hex = "F"; break; + } + return hex; +} + +/* +* chang the hex into the bit(it's length = 4) +* +* return the bit(it's length = 4) +*/ +function hexToBt4(hex) { + var binary; + switch (hex) { + case "0" : binary = "0000"; break; + case "1" : binary = "0001"; break; + case "2" : binary = "0010"; break; + case "3" : binary = "0011"; break; + case "4" : binary = "0100"; break; + case "5" : binary = "0101"; break; + case "6" : binary = "0110"; break; + case "7" : binary = "0111"; break; + case "8" : binary = "1000"; break; + case "9" : binary = "1001"; break; + case "A" : binary = "1010"; break; + case "B" : binary = "1011"; break; + case "C" : binary = "1100"; break; + case "D" : binary = "1101"; break; + case "E" : binary = "1110"; break; + case "F" : binary = "1111"; break; + } + return binary; +} + +/* +* chang the bit(it's length = 64) into the string +* +* return string +*/ +function byteToString(byteData){ + var str=""; + for(i = 0;i<4;i++){ + var count=0; + for(j=0;j<16;j++){ + var pow=1; + for(m=15;m>j;m--){ + pow*=2; + } + count+=byteData[16*i+j]*pow; + } + if(count != 0){ + str+=String.fromCharCode(count); + } + } + return str; +} + +function bt64ToHex(byteData){ + var hex = ""; + for(i = 0;i<16;i++){ + var bt = ""; + for(j=0;j<4;j++){ + bt += byteData[i*4+j]; + } + hex+=bt4ToHex(bt); + } + return hex; +} + +function hexToBt64(hex){ + var binary = ""; + for(i = 0;i<16;i++){ + binary+=hexToBt4(hex.substring(i,i+1)); + } + return binary; +} + +/* +* the 64 bit des core arithmetic +*/ + +function enc(dataByte,keyByte){ + var keys = generateKeys(keyByte); + var ipByte = initPermute(dataByte); + var ipLeft = new Array(32); + var ipRight = new Array(32); + var tempLeft = new Array(32); + var i = 0,j = 0,k = 0,m = 0, n = 0; + for(k = 0;k < 32;k ++){ + ipLeft[k] = ipByte[k]; + ipRight[k] = ipByte[32+k]; + } + for(i = 0;i < 16;i ++){ + for(j = 0;j < 32;j ++){ + tempLeft[j] = ipLeft[j]; + ipLeft[j] = ipRight[j]; + } + var key = new Array(48); + for(m = 0;m < 48;m ++){ + key[m] = keys[i][m]; + } + var tempRight = xor(pPermute(sBoxPermute(xor(expandPermute(ipRight),key))), tempLeft); + for(n = 0;n < 32;n ++){ + ipRight[n] = tempRight[n]; + } + + } + + + var finalData =new Array(64); + for(i = 0;i < 32;i ++){ + finalData[i] = ipRight[i]; + finalData[32+i] = ipLeft[i]; + } + return finallyPermute(finalData); +} + +function dec(dataByte,keyByte){ + var keys = generateKeys(keyByte); + var ipByte = initPermute(dataByte); + var ipLeft = new Array(32); + var ipRight = new Array(32); + var tempLeft = new Array(32); + var i = 0,j = 0,k = 0,m = 0, n = 0; + for(k = 0;k < 32;k ++){ + ipLeft[k] = ipByte[k]; + ipRight[k] = ipByte[32+k]; + } + for(i = 15;i >= 0;i --){ + for(j = 0;j < 32;j ++){ + tempLeft[j] = ipLeft[j]; + ipLeft[j] = ipRight[j]; + } + var key = new Array(48); + for(m = 0;m < 48;m ++){ + key[m] = keys[i][m]; + } + + var tempRight = xor(pPermute(sBoxPermute(xor(expandPermute(ipRight),key))), tempLeft); + for(n = 0;n < 32;n ++){ + ipRight[n] = tempRight[n]; + } + } + + + var finalData =new Array(64); + for(i = 0;i < 32;i ++){ + finalData[i] = ipRight[i]; + finalData[32+i] = ipLeft[i]; + } + return finallyPermute(finalData); +} + +function initPermute(originalData){ + var ipByte = new Array(64); + for (i = 0, m = 1, n = 0; i < 4; i++, m += 2, n += 2) { + for (j = 7, k = 0; j >= 0; j--, k++) { + ipByte[i * 8 + k] = originalData[j * 8 + m]; + ipByte[i * 8 + k + 32] = originalData[j * 8 + n]; + } + } + return ipByte; +} + +function expandPermute(rightData){ + var epByte = new Array(48); + for (i = 0; i < 8; i++) { + if (i == 0) { + epByte[i * 6 + 0] = rightData[31]; + } else { + epByte[i * 6 + 0] = rightData[i * 4 - 1]; + } + epByte[i * 6 + 1] = rightData[i * 4 + 0]; + epByte[i * 6 + 2] = rightData[i * 4 + 1]; + epByte[i * 6 + 3] = rightData[i * 4 + 2]; + epByte[i * 6 + 4] = rightData[i * 4 + 3]; + if (i == 7) { + epByte[i * 6 + 5] = rightData[0]; + } else { + epByte[i * 6 + 5] = rightData[i * 4 + 4]; + } + } + return epByte; +} + +function xor(byteOne,byteTwo){ + var xorByte = new Array(byteOne.length); + for(i = 0;i < byteOne.length; i ++){ + xorByte[i] = byteOne[i] ^ byteTwo[i]; + } + return xorByte; +} + +function sBoxPermute(expandByte){ + + var sBoxByte = new Array(32); + var binary = ""; + var s1 = [ + [14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7], + [0, 15, 7, 4, 14, 2, 13, 1, 10, 6, 12, 11, 9, 5, 3, 8], + [4, 1, 14, 8, 13, 6, 2, 11, 15, 12, 9, 7, 3, 10, 5, 0], + [15, 12, 8, 2, 4, 9, 1, 7, 5, 11, 3, 14, 10, 0, 6, 13 ]]; + + /* Table - s2 */ + var s2 = [ + [15, 1, 8, 14, 6, 11, 3, 4, 9, 7, 2, 13, 12, 0, 5, 10], + [3, 13, 4, 7, 15, 2, 8, 14, 12, 0, 1, 10, 6, 9, 11, 5], + [0, 14, 7, 11, 10, 4, 13, 1, 5, 8, 12, 6, 9, 3, 2, 15], + [13, 8, 10, 1, 3, 15, 4, 2, 11, 6, 7, 12, 0, 5, 14, 9 ]]; + + /* Table - s3 */ + var s3= [ + [10, 0, 9, 14, 6, 3, 15, 5, 1, 13, 12, 7, 11, 4, 2, 8], + [13, 7, 0, 9, 3, 4, 6, 10, 2, 8, 5, 14, 12, 11, 15, 1], + [13, 6, 4, 9, 8, 15, 3, 0, 11, 1, 2, 12, 5, 10, 14, 7], + [1, 10, 13, 0, 6, 9, 8, 7, 4, 15, 14, 3, 11, 5, 2, 12 ]]; + /* Table - s4 */ + var s4 = [ + [7, 13, 14, 3, 0, 6, 9, 10, 1, 2, 8, 5, 11, 12, 4, 15], + [13, 8, 11, 5, 6, 15, 0, 3, 4, 7, 2, 12, 1, 10, 14, 9], + [10, 6, 9, 0, 12, 11, 7, 13, 15, 1, 3, 14, 5, 2, 8, 4], + [3, 15, 0, 6, 10, 1, 13, 8, 9, 4, 5, 11, 12, 7, 2, 14 ]]; + + /* Table - s5 */ + var s5 = [ + [2, 12, 4, 1, 7, 10, 11, 6, 8, 5, 3, 15, 13, 0, 14, 9], + [14, 11, 2, 12, 4, 7, 13, 1, 5, 0, 15, 10, 3, 9, 8, 6], + [4, 2, 1, 11, 10, 13, 7, 8, 15, 9, 12, 5, 6, 3, 0, 14], + [11, 8, 12, 7, 1, 14, 2, 13, 6, 15, 0, 9, 10, 4, 5, 3 ]]; + + /* Table - s6 */ + var s6 = [ + [12, 1, 10, 15, 9, 2, 6, 8, 0, 13, 3, 4, 14, 7, 5, 11], + [10, 15, 4, 2, 7, 12, 9, 5, 6, 1, 13, 14, 0, 11, 3, 8], + [9, 14, 15, 5, 2, 8, 12, 3, 7, 0, 4, 10, 1, 13, 11, 6], + [4, 3, 2, 12, 9, 5, 15, 10, 11, 14, 1, 7, 6, 0, 8, 13 ]]; + + /* Table - s7 */ + var s7 = [ + [4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1], + [13, 0, 11, 7, 4, 9, 1, 10, 14, 3, 5, 12, 2, 15, 8, 6], + [1, 4, 11, 13, 12, 3, 7, 14, 10, 15, 6, 8, 0, 5, 9, 2], + [6, 11, 13, 8, 1, 4, 10, 7, 9, 5, 0, 15, 14, 2, 3, 12]]; + + /* Table - s8 */ + var s8 = [ + [13, 2, 8, 4, 6, 15, 11, 1, 10, 9, 3, 14, 5, 0, 12, 7], + [1, 15, 13, 8, 10, 3, 7, 4, 12, 5, 6, 11, 0, 14, 9, 2], + [7, 11, 4, 1, 9, 12, 14, 2, 0, 6, 10, 13, 15, 3, 5, 8], + [2, 1, 14, 7, 4, 10, 8, 13, 15, 12, 9, 0, 3, 5, 6, 11]]; + + for(m=0;m<8;m++){ + var i=0,j=0; + i = expandByte[m*6+0]*2+expandByte[m*6+5]; + j = expandByte[m * 6 + 1] * 2 * 2 * 2 + + expandByte[m * 6 + 2] * 2* 2 + + expandByte[m * 6 + 3] * 2 + + expandByte[m * 6 + 4]; + switch (m) { + case 0 : + binary = getBoxBinary(s1[i][j]); + break; + case 1 : + binary = getBoxBinary(s2[i][j]); + break; + case 2 : + binary = getBoxBinary(s3[i][j]); + break; + case 3 : + binary = getBoxBinary(s4[i][j]); + break; + case 4 : + binary = getBoxBinary(s5[i][j]); + break; + case 5 : + binary = getBoxBinary(s6[i][j]); + break; + case 6 : + binary = getBoxBinary(s7[i][j]); + break; + case 7 : + binary = getBoxBinary(s8[i][j]); + break; + } + sBoxByte[m*4+0] = parseInt(binary.substring(0,1)); + sBoxByte[m*4+1] = parseInt(binary.substring(1,2)); + sBoxByte[m*4+2] = parseInt(binary.substring(2,3)); + sBoxByte[m*4+3] = parseInt(binary.substring(3,4)); + } + return sBoxByte; +} + +function pPermute(sBoxByte){ + var pBoxPermute = new Array(32); + pBoxPermute[ 0] = sBoxByte[15]; + pBoxPermute[ 1] = sBoxByte[ 6]; + pBoxPermute[ 2] = sBoxByte[19]; + pBoxPermute[ 3] = sBoxByte[20]; + pBoxPermute[ 4] = sBoxByte[28]; + pBoxPermute[ 5] = sBoxByte[11]; + pBoxPermute[ 6] = sBoxByte[27]; + pBoxPermute[ 7] = sBoxByte[16]; + pBoxPermute[ 8] = sBoxByte[ 0]; + pBoxPermute[ 9] = sBoxByte[14]; + pBoxPermute[10] = sBoxByte[22]; + pBoxPermute[11] = sBoxByte[25]; + pBoxPermute[12] = sBoxByte[ 4]; + pBoxPermute[13] = sBoxByte[17]; + pBoxPermute[14] = sBoxByte[30]; + pBoxPermute[15] = sBoxByte[ 9]; + pBoxPermute[16] = sBoxByte[ 1]; + pBoxPermute[17] = sBoxByte[ 7]; + pBoxPermute[18] = sBoxByte[23]; + pBoxPermute[19] = sBoxByte[13]; + pBoxPermute[20] = sBoxByte[31]; + pBoxPermute[21] = sBoxByte[26]; + pBoxPermute[22] = sBoxByte[ 2]; + pBoxPermute[23] = sBoxByte[ 8]; + pBoxPermute[24] = sBoxByte[18]; + pBoxPermute[25] = sBoxByte[12]; + pBoxPermute[26] = sBoxByte[29]; + pBoxPermute[27] = sBoxByte[ 5]; + pBoxPermute[28] = sBoxByte[21]; + pBoxPermute[29] = sBoxByte[10]; + pBoxPermute[30] = sBoxByte[ 3]; + pBoxPermute[31] = sBoxByte[24]; + return pBoxPermute; +} + +function finallyPermute(endByte){ + var fpByte = new Array(64); + fpByte[ 0] = endByte[39]; + fpByte[ 1] = endByte[ 7]; + fpByte[ 2] = endByte[47]; + fpByte[ 3] = endByte[15]; + fpByte[ 4] = endByte[55]; + fpByte[ 5] = endByte[23]; + fpByte[ 6] = endByte[63]; + fpByte[ 7] = endByte[31]; + fpByte[ 8] = endByte[38]; + fpByte[ 9] = endByte[ 6]; + fpByte[10] = endByte[46]; + fpByte[11] = endByte[14]; + fpByte[12] = endByte[54]; + fpByte[13] = endByte[22]; + fpByte[14] = endByte[62]; + fpByte[15] = endByte[30]; + fpByte[16] = endByte[37]; + fpByte[17] = endByte[ 5]; + fpByte[18] = endByte[45]; + fpByte[19] = endByte[13]; + fpByte[20] = endByte[53]; + fpByte[21] = endByte[21]; + fpByte[22] = endByte[61]; + fpByte[23] = endByte[29]; + fpByte[24] = endByte[36]; + fpByte[25] = endByte[ 4]; + fpByte[26] = endByte[44]; + fpByte[27] = endByte[12]; + fpByte[28] = endByte[52]; + fpByte[29] = endByte[20]; + fpByte[30] = endByte[60]; + fpByte[31] = endByte[28]; + fpByte[32] = endByte[35]; + fpByte[33] = endByte[ 3]; + fpByte[34] = endByte[43]; + fpByte[35] = endByte[11]; + fpByte[36] = endByte[51]; + fpByte[37] = endByte[19]; + fpByte[38] = endByte[59]; + fpByte[39] = endByte[27]; + fpByte[40] = endByte[34]; + fpByte[41] = endByte[ 2]; + fpByte[42] = endByte[42]; + fpByte[43] = endByte[10]; + fpByte[44] = endByte[50]; + fpByte[45] = endByte[18]; + fpByte[46] = endByte[58]; + fpByte[47] = endByte[26]; + fpByte[48] = endByte[33]; + fpByte[49] = endByte[ 1]; + fpByte[50] = endByte[41]; + fpByte[51] = endByte[ 9]; + fpByte[52] = endByte[49]; + fpByte[53] = endByte[17]; + fpByte[54] = endByte[57]; + fpByte[55] = endByte[25]; + fpByte[56] = endByte[32]; + fpByte[57] = endByte[ 0]; + fpByte[58] = endByte[40]; + fpByte[59] = endByte[ 8]; + fpByte[60] = endByte[48]; + fpByte[61] = endByte[16]; + fpByte[62] = endByte[56]; + fpByte[63] = endByte[24]; + return fpByte; +} + +function getBoxBinary(i) { + var binary = ""; + switch (i) { + case 0 :binary = "0000";break; + case 1 :binary = "0001";break; + case 2 :binary = "0010";break; + case 3 :binary = "0011";break; + case 4 :binary = "0100";break; + case 5 :binary = "0101";break; + case 6 :binary = "0110";break; + case 7 :binary = "0111";break; + case 8 :binary = "1000";break; + case 9 :binary = "1001";break; + case 10 :binary = "1010";break; + case 11 :binary = "1011";break; + case 12 :binary = "1100";break; + case 13 :binary = "1101";break; + case 14 :binary = "1110";break; + case 15 :binary = "1111";break; + } + return binary; +} +/* +* generate 16 keys for xor +* +*/ +function generateKeys(keyByte){ + var key = new Array(56); + var keys = new Array(); + + keys[ 0] = new Array(); + keys[ 1] = new Array(); + keys[ 2] = new Array(); + keys[ 3] = new Array(); + keys[ 4] = new Array(); + keys[ 5] = new Array(); + keys[ 6] = new Array(); + keys[ 7] = new Array(); + keys[ 8] = new Array(); + keys[ 9] = new Array(); + keys[10] = new Array(); + keys[11] = new Array(); + keys[12] = new Array(); + keys[13] = new Array(); + keys[14] = new Array(); + keys[15] = new Array(); + var loop = [1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1]; + + for(i=0;i<7;i++){ + for(j=0,k=7;j<8;j++,k--){ + key[i*8+j]=keyByte[8*k+i]; + } + } + + var i = 0; + for(i = 0;i < 16;i ++){ + var tempLeft=0; + var tempRight=0; + for(j = 0; j < loop[i];j ++){ + tempLeft = key[0]; + tempRight = key[28]; + for(k = 0;k < 27 ;k ++){ + key[k] = key[k+1]; + key[28+k] = key[29+k]; + } + key[27]=tempLeft; + key[55]=tempRight; + } + var tempKey = new Array(48); + tempKey[ 0] = key[13]; + tempKey[ 1] = key[16]; + tempKey[ 2] = key[10]; + tempKey[ 3] = key[23]; + tempKey[ 4] = key[ 0]; + tempKey[ 5] = key[ 4]; + tempKey[ 6] = key[ 2]; + tempKey[ 7] = key[27]; + tempKey[ 8] = key[14]; + tempKey[ 9] = key[ 5]; + tempKey[10] = key[20]; + tempKey[11] = key[ 9]; + tempKey[12] = key[22]; + tempKey[13] = key[18]; + tempKey[14] = key[11]; + tempKey[15] = key[ 3]; + tempKey[16] = key[25]; + tempKey[17] = key[ 7]; + tempKey[18] = key[15]; + tempKey[19] = key[ 6]; + tempKey[20] = key[26]; + tempKey[21] = key[19]; + tempKey[22] = key[12]; + tempKey[23] = key[ 1]; + tempKey[24] = key[40]; + tempKey[25] = key[51]; + tempKey[26] = key[30]; + tempKey[27] = key[36]; + tempKey[28] = key[46]; + tempKey[29] = key[54]; + tempKey[30] = key[29]; + tempKey[31] = key[39]; + tempKey[32] = key[50]; + tempKey[33] = key[44]; + tempKey[34] = key[32]; + tempKey[35] = key[47]; + tempKey[36] = key[43]; + tempKey[37] = key[48]; + tempKey[38] = key[38]; + tempKey[39] = key[55]; + tempKey[40] = key[33]; + tempKey[41] = key[52]; + tempKey[42] = key[45]; + tempKey[43] = key[41]; + tempKey[44] = key[49]; + tempKey[45] = key[35]; + tempKey[46] = key[28]; + tempKey[47] = key[31]; + switch(i){ + case 0: for(m=0;m < 48 ;m++){ keys[ 0][m] = tempKey[m]; } break; + case 1: for(m=0;m < 48 ;m++){ keys[ 1][m] = tempKey[m]; } break; + case 2: for(m=0;m < 48 ;m++){ keys[ 2][m] = tempKey[m]; } break; + case 3: for(m=0;m < 48 ;m++){ keys[ 3][m] = tempKey[m]; } break; + case 4: for(m=0;m < 48 ;m++){ keys[ 4][m] = tempKey[m]; } break; + case 5: for(m=0;m < 48 ;m++){ keys[ 5][m] = tempKey[m]; } break; + case 6: for(m=0;m < 48 ;m++){ keys[ 6][m] = tempKey[m]; } break; + case 7: for(m=0;m < 48 ;m++){ keys[ 7][m] = tempKey[m]; } break; + case 8: for(m=0;m < 48 ;m++){ keys[ 8][m] = tempKey[m]; } break; + case 9: for(m=0;m < 48 ;m++){ keys[ 9][m] = tempKey[m]; } break; + case 10: for(m=0;m < 48 ;m++){ keys[10][m] = tempKey[m]; } break; + case 11: for(m=0;m < 48 ;m++){ keys[11][m] = tempKey[m]; } break; + case 12: for(m=0;m < 48 ;m++){ keys[12][m] = tempKey[m]; } break; + case 13: for(m=0;m < 48 ;m++){ keys[13][m] = tempKey[m]; } break; + case 14: for(m=0;m < 48 ;m++){ keys[14][m] = tempKey[m]; } break; + case 15: for(m=0;m < 48 ;m++){ keys[15][m] = tempKey[m]; } break; + } + } + return keys; +} \ No newline at end of file diff --git a/src/static/js/utils/form-builder.js b/src/static/js/utils/form-builder.js new file mode 100644 index 0000000..63089b8 --- /dev/null +++ b/src/static/js/utils/form-builder.js @@ -0,0 +1,441 @@ +(function (define) { + "use strict"; + define('form_builder', function (require, exports) { + var $ = require('$'), + _ = require('_'); + var elements = [], + with_wrapper = true, + forms = [], + elements_boxes = [], + mouse_event = 'release', + dragging_el_btn = null, + mouse_in_form = null, + form_el_row = '<div class="form_el_row" name="form_el_row" ></div>', + place_holder = null, + form_data_recovering = null, + form_data_recovering_key = null; + function main(){ + /** + * { + * 'btn': '单行文本', + * 'field': '<input />' + * } + */ + elements = []; + forms = []; + elements_boxes = []; + } + var attrs = { + /** + * after function for element dropped to the form. + * */ + element_appended_callback: function(after) { + this.element_appended = after; + }, + element_appended_before_allback: function(before) { + this.element_before_append = before; + }, + insert_element: function(data){ + var uid = dragging_el_btn.attr('uid'); + var element = _.filter(elements, function(element){ + return element.uid === uid; + }); + if(this.element_before_append) + this.element_before_append.apply(this, [element, place_holder, data]) + var $el = $(element[0].field); + if(place_holder && place_holder.is(forms.join(' ,'))){ + place_holder.append($el); + }else{ + $el.insertAfter(place_holder); + } + if(with_wrapper){ + $el.wrap(form_el_row); + $el.wrap('<div></div>'); + } + $el.data('tag', element[0]); + this.element_appended.apply(this, [element, $el, place_holder, data]); + dragging_el_btn = null; + place_holder = null; + return $el; + }, + highlight_place_holder: function(el){ + var $el = $(el); + $el.addClass('place_holder_after'); + }, + rm_highlight_place_holder: function(){ + $(forms.join(' ,')).find('div').removeClass('place_holder_after'); + }, + mouseover_element: function(event){ + var $target = $(event.target); + var _forms = forms.join(' ,'); + if($target.is(forms.join(' ,'))){ + if($target.children('div.form_el_row').length){ + place_holder = $target.children('div.form_el_row').last(); + this.highlight_place_holder(place_holder); + }else{ + place_holder = $target; + } + }else if($target.closest(forms.join(' ,')).length){ + if($target.is('div[name="form_el_row"]')){ + place_holder = $target; + }else{ + place_holder = $target.closest('div[name="form_el_row"]'); + } + this.highlight_place_holder(place_holder); + } + event.stopPropagation(); + }, + drag_add: function(){ + var _this = this; + $(elements_boxes.join(' ,')).children().each(function(i, obj){ + $(obj).on('mousedown', function(event){ + mouse_event = 'dragging'; + dragging_el_btn = $(this).clone(); + dragging_el_btn.css({ + 'top': event.pageY+12, + 'left': event.pageX-80, + 'position': 'absolute', + 'z-index': 99999 + }); + $('body').append(dragging_el_btn); + event.stopPropagation(); + }); + }); + + $(document).on('mousemove', function(event){ + if(mouse_event === 'dragging'){ + dragging_el_btn.css({ + 'top': event.pageY+12, + 'left': event.pageX-80, + 'position': 'absolute', + 'z-index': 99999 + }); + _this.rm_highlight_place_holder(); + _this.mouseover_element(event); + } + }); + + $(document).on('mouseup', function(){ + mouse_event = 'release'; + if(dragging_el_btn){ + dragging_el_btn.remove(); + _this.insert_element(); + _this.rm_highlight_place_holder(); + } + //sort columns + + $( forms.join(' ,') ).sortable({ + connectWith: "div.main", + stop: function(event, ui) { + + } + }); + }); + }, + init_els_box: function(){ + var _this = this; + _.each(elements, function(el){ + var $el = $(el.btn); + var uid = _.uniqueId(new Date().getTime()); + el.uid = uid; + _.each(elements_boxes, function(el_box){ + $(el_box).append($el); + $el.attr('uid', uid); + $el.attr('type', el.type); + }) + }); + }, + recover_form_data: function(form_data, type_key){ + form_data_recovering = form_data; + form_data_recovering_key = type_key; + }, + recover: function(el_data, g_placeholder){ + var _this = this; + var data_el_key = form_data_recovering_key; + var type = _.get(el_data, data_el_key), + btn_el = $(elements_boxes.join(' ,')).find('button[type="'+type+'"]'); + if(btn_el.length){ + dragging_el_btn = btn_el; + place_holder = g_placeholder; + return _this.insert_element(el_data); + }else{ + return false; + } + }, + recover_form: function(){ + if(!form_data_recovering) return false; + var _this = this, field, + _elements = form_data_recovering['child']; + _.each(_elements, function(el_data){ + var type = _.get(el_data, form_data_recovering_key), + $el_appended = _this.recover(el_data, $(forms[0])), + el_btn_data = _.filter(elements, function(el){ + return _.eq(_.get(el, 'type'), type); + }); + if(el_btn_data.length){ + field = el_btn_data[0]['field']; + } + if($(field).is('div')){ + var sub_form_data = el_data['child']; + _.each(sub_form_data, function(sub_form_el_data){ + _this.recover(sub_form_el_data, $el_appended); + }) + } + }); + }, + bootstrap: function(){ + this.init_els_box(); + this.drag_add(); + this.recover_form(); + }, + add_elements: function(els){ + elements = _.concat(elements, els); + }, + add_forms: function(form){ + + forms.push(form); + }, + add_elements_box: function(el_box){ + elements_boxes.push(el_box); + }, + no_wrapper: function(bool){ + with_wrapper = bool; + } + + } + + _.extend(main.prototype, attrs); + + $.extend(exports, { + create: main + }) + }); +}(typeof define === 'function' && define.amd ? define : function (id, factory) { + if (typeof exports !== 'undefined') { + factory(require, exports); + } else { + factory(function(value) { + return window[value]; + }, (window[id] = {})); + } +})); +(function (define) { + "use strict"; + define('form_builder_s', function (require, exports) { + var $ = require('$'), + _ = require('_'); + var elements = [], + with_wrapper = true, + forms = [], + elements_boxes = [], + mouse_event = 'release', + dragging_el_btn = null, + mouse_in_form = null, + form_el_row = '<div class="form_el_row" name="form_el_row" ></div>', + place_holder = null, + form_data_recovering = null, + form_data_recovering_key = null; + function main(){ + /** + * { + * 'btn': '单行文本', + * 'field': '<input />' + * } + */ + elements = []; + forms = []; + elements_boxes = []; + } + var attrs = { + /** + * after function for element dropped to the form. + * */ + element_appended_callback: function(after) { + this.element_appended = after; + }, + element_appended_before_allback: function(before) { + this.element_before_append = before; + }, + insert_element: function(data){ + var uid = dragging_el_btn.attr('uid'); + var element = _.filter(elements, function(element){ + return element.uid === uid; + }); + if(this.element_before_append) + this.element_before_append.apply(this, [element, place_holder, data]) + var $el = $(element[0].field); + if(place_holder && place_holder.is(forms.join(' ,'))){ + place_holder.append($el); + }else{ + $el.insertAfter(place_holder); + } + if(with_wrapper){ + $el.wrap(form_el_row); + $el.wrap('<div></div>'); + } + $el.data('tag', element[0]); + this.element_appended.apply(this, [element, $el, place_holder, data]); + dragging_el_btn = null; + place_holder = null; + return $el; + }, + highlight_place_holder: function(el){ + var $el = $(el); + $el.addClass('place_holder_after'); + }, + rm_highlight_place_holder: function(){ + $(forms.join(' ,')).find('div').removeClass('place_holder_after'); + }, + mouseover_element: function(event){ + var $target = $(event.target); + var _forms = forms.join(' ,'); + if($target.is(forms.join(' ,'))){ + if($target.children('div.form_el_row').length){ + place_holder = $target.children('div.form_el_row').last(); + this.highlight_place_holder(place_holder); + }else{ + place_holder = $target; + } + }else if($target.closest(forms.join(' ,')).length){ + if($target.is('div[name="form_el_row"]')){ + place_holder = $target; + }else{ + place_holder = $target.closest('div[name="form_el_row"]'); + } + this.highlight_place_holder(place_holder); + } + event.stopPropagation(); + }, + drag_add: function(){ + var _this = this; + $(elements_boxes.join(' ,')).children().each(function(i, obj){ + $(obj).on('mousedown', function(event){ + mouse_event = 'dragging'; + dragging_el_btn = $(this).clone(); + dragging_el_btn.css({ + 'top': event.pageY+12, + 'left': event.pageX-80, + 'position': 'absolute', + 'z-index': 99999 + }); + $('body').append(dragging_el_btn); + event.stopPropagation(); + }); + }); + + $(document).on('mousemove', function(event){ + if(mouse_event === 'dragging'){ + dragging_el_btn.css({ + 'top': event.pageY+12, + 'left': event.pageX-80, + 'position': 'absolute', + 'z-index': 99999 + }); + _this.rm_highlight_place_holder(); + _this.mouseover_element(event); + } + }); + + $(document).on('mouseup', function(){ + mouse_event = 'release'; + if(dragging_el_btn){ + dragging_el_btn.remove(); + _this.insert_element(); + _this.rm_highlight_place_holder(); + } + //sort columns + $( forms.join(' ,') ).sortable({ + connectWith: "div.main", + stop: function(event, ui) { + + } + }); + }); + }, + init_els_box: function(){ + var _this = this; + _.each(elements, function(el){ + var $el = $(el.btn); + var uid = _.uniqueId(new Date().getTime()); + el.uid = uid; + _.each(elements_boxes, function(el_box){ + $(el_box).append($el); + $el.attr('uid', uid); + $el.attr('type', el.type); + }) + }); + }, + recover_form_data: function(form_data, type_key){ + form_data_recovering = form_data; + form_data_recovering_key = type_key; + }, + recover: function(el_data, g_placeholder){ + var _this = this; + var data_el_key = form_data_recovering_key; + var type = _.get(el_data, data_el_key), + btn_el = $(elements_boxes.join(' ,')).find('button[type="'+type+'"]'); + if(btn_el.length){ + dragging_el_btn = btn_el; + place_holder = g_placeholder; + return _this.insert_element(el_data); + }else{ + return false; + } + }, + recover_form: function(){ + if(!form_data_recovering) return false; + var _this = this, field, + _elements = form_data_recovering['child']; + _.each(_elements, function(el_data){ + var type = _.get(el_data, form_data_recovering_key), + $el_appended = _this.recover(el_data, $(forms[0])), + el_btn_data = _.filter(elements, function(el){ + return _.eq(_.get(el, 'type'), type); + }); + if(el_btn_data.length){ + field = el_btn_data[0]['field']; + } + if($(field).is('div')){ + var sub_form_data = el_data['child']; + _.each(sub_form_data, function(sub_form_el_data){ + _this.recover(sub_form_el_data, $el_appended); + }) + } + }); + }, + bootstrap: function(){ + this.init_els_box(); + this.drag_add(); + this.recover_form(); + }, + add_elements: function(els){ + elements = _.concat(elements, els); + }, + add_forms: function(form){ + + forms.push(form); + }, + add_elements_box: function(el_box){ + elements_boxes.push(el_box); + }, + no_wrapper: function(bool){ + with_wrapper = bool; + } + + } + + _.extend(main.prototype, attrs); + + $.extend(exports, { + create: main + }) + }); +}(typeof define === 'function' && define.amd ? define : function (id, factory) { + if (typeof exports !== 'undefined') { + factory(require, exports); + } else { + factory(function(value) { + return window[value]; + }, (window[id] = {})); + } +})); \ No newline at end of file diff --git a/src/static/js/utils/http.js b/src/static/js/utils/http.js new file mode 100644 index 0000000..25c2cf5 --- /dev/null +++ b/src/static/js/utils/http.js @@ -0,0 +1,162 @@ +var http_module = angular.module("http_module", []); +http_module.factory('http_service', ['$http','$rootScope','$timeout', function($http,$rootScope,$timeout) { + var factory = {}; + function getCookie(cname){ + var name = cname + "="; + var ca = document.cookie.split(';'); + for(var i=0; i<ca.length; i++) { + var c = ca[i].trim(); + if (c.indexOf(name)==0) return c.substring(name.length,c.length); + } + return ""; + } +// var token = {"token":getCookie("token")}; +// var token = {"token": 868686}; + var api_server = './travel-web/'; + var success = function(complete,flg,url,data){ + return function(res){ + if(res.data.invalidUser){ + var href_str = register_url + "index.html"; + $rootScope.terro("登录验证失效"); + $timeout(function(){ + window.location.href = register_url; + },2000) + return false; + } + if(res.data.power){ + $rootScope.terro("无权限操作"); + return false; + } + if(res.status === 200){ + if (flg) { + if (res.data.opState) { + saveCache(url,data,res); + } + } + complete(res); + }else{ + //alert('server error: ' + api_server + url); + sweetAlert('server error: ' + api_server + url); + + } + } + }; + var list = function(complete){ + return function(res){ + if(res.status === 200){ + permission_list = response.data.data; + complete(res); + }else{ + //alert('server error: ' + api_server + url); + sweetAlert('server error: ' + "./travel-web/permission/search/userPermission"); + } + } + } + factory.get = function(url, complete) { + $http({ + url: api_server + url, + method: 'GET' + }).then(success(complete)); + }; + factory.post = function(url, data,complete,flg,errorCallback) { + if (flg == true) { + getCache(url,data,complete); + } else { +// data.token = getCookie("token");//暂时不加密 + +// var prmData = {"data":getDes(data)}; //暂时不加密 + + var prmData = getDes(data); + $http({ + url: api_server + url, + method: 'POST', + data: prmData, + }).then(success(complete),errorCallback); + } + + }; + factory.delelte = function(url, complete) { + $http({ + url: api_server + url, + method: 'DELETE' + }).then(success(complete)); + }; + factory.update = function(url, data, complete) { + $http({ + url: api_server + url, + method: 'PUT', + data: _.extend(data, token) + }).then(success(complete)); + }; + var getCache = function(url,data,complete) { + var url_key = app_userinfo.tenantId + "_" + url + "_" + data["cache_id"]; + + var cacheData = localStorage.getItem(url_key); + if (cacheData) { + cacheData = unescape($.base64.decode(cacheData)); + } + // 验证缓存版本号 + if (cacheData && JSON.parse(cacheData).data.version) { + $http({ + url: api_server + 'valid/version', + method: 'POST', + params: {"cacheKey":url,"cache_id":data.cache_id,"version":JSON.parse(cacheData).data.version}, +// cache: true + }).then(function successCallback(res){ + // 如果缓存版本号通过验证 直接返回缓存数据 + if (res.data.start) { + success(complete(JSON.parse(cacheData))); + } else { + postCache(complete,true,url,data); + } + }) + } else { + // 取接口数据并添加到缓存 + postCache(complete,true,url,data); + } + }; + + var postCache = function (complete,flg,url,data) { +// data.token = getCookie("token");//暂时不加密 +// var prmData = {"data":getDes(data)};//暂时不加密 + var prmData = getDes(data); + $http({ + url: api_server + url, + method: 'POST', + data: prmData + }).then(success(complete,flg,url,data)); + } + + + var saveCache = function(url,data,cacheData) { + var url_key = app_userinfo.tenantId + "_" + url + "_" + data["cache_id"]; + cacheData = JSON.stringify(cacheData); +// localStorage.setItem(url_key,$.base64.encode(cacheData)); + cacheData = $.base64.encode(escape(cacheData)); + localStorage.setItem(url_key,cacheData); + } + + + function getDes(data){ + return data;//暂时不加密 + //待加密字符串 +// var str = JSON.stringify(data); +// //第一个参数必须;第二个、第三个参数可选 +// var key1 = $.md5(getCookie("token")); +// var key2 = $.md5(getCookie("csc_compid")); +// var key3 = $.md5(getCookie("tenantId")); +// //加密方法 +// var enResult = strEnc(str,key1,key2,key3); +// +// return enResult; + + + //解密方法 + //var deResult = strDec(enResult,key1,key2,key3); + //展示结果 + //document.getElementById("enStr").innerHTML = enResult; + //document.getElementById("dnStr").innerHTML = deResult; + } + + return factory; +}]); \ No newline at end of file diff --git a/src/static/js/utils/jquery.base64.min.js b/src/static/js/utils/jquery.base64.min.js new file mode 100644 index 0000000..2687c41 --- /dev/null +++ b/src/static/js/utils/jquery.base64.min.js @@ -0,0 +1 @@ +"use strict";jQuery.base64=(function($){var _PADCHAR="=",_ALPHA="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",_VERSION="1.0";function _getbyte64(s,i){var idx=_ALPHA.indexOf(s.charAt(i));if(idx===-1){throw"Cannot decode base64"}return idx}function _decode(s){var pads=0,i,b10,imax=s.length,x=[];s=String(s);if(imax===0){return s}if(imax%4!==0){throw"Cannot decode base64"}if(s.charAt(imax-1)===_PADCHAR){pads=1;if(s.charAt(imax-2)===_PADCHAR){pads=2}imax-=4}for(i=0;i<imax;i+=4){b10=(_getbyte64(s,i)<<18)|(_getbyte64(s,i+1)<<12)|(_getbyte64(s,i+2)<<6)|_getbyte64(s,i+3);x.push(String.fromCharCode(b10>>16,(b10>>8)&255,b10&255))}switch(pads){case 1:b10=(_getbyte64(s,i)<<18)|(_getbyte64(s,i+1)<<12)|(_getbyte64(s,i+2)<<6);x.push(String.fromCharCode(b10>>16,(b10>>8)&255));break;case 2:b10=(_getbyte64(s,i)<<18)|(_getbyte64(s,i+1)<<12);x.push(String.fromCharCode(b10>>16));break}return x.join("")}function _getbyte(s,i){var x=s.charCodeAt(i);if(x>255){throw"INVALID_CHARACTER_ERR: DOM Exception 5"}return x}function _encode(s){if(arguments.length!==1){throw"SyntaxError: exactly one argument required"}s=String(s);var i,b10,x=[],imax=s.length-s.length%3;if(s.length===0){return s}for(i=0;i<imax;i+=3){b10=(_getbyte(s,i)<<16)|(_getbyte(s,i+1)<<8)|_getbyte(s,i+2);x.push(_ALPHA.charAt(b10>>18));x.push(_ALPHA.charAt((b10>>12)&63));x.push(_ALPHA.charAt((b10>>6)&63));x.push(_ALPHA.charAt(b10&63))}switch(s.length-imax){case 1:b10=_getbyte(s,i)<<16;x.push(_ALPHA.charAt(b10>>18)+_ALPHA.charAt((b10>>12)&63)+_PADCHAR+_PADCHAR);break;case 2:b10=(_getbyte(s,i)<<16)|(_getbyte(s,i+1)<<8);x.push(_ALPHA.charAt(b10>>18)+_ALPHA.charAt((b10>>12)&63)+_ALPHA.charAt((b10>>6)&63)+_PADCHAR);break}return x.join("")}return{decode:_decode,encode:_encode,VERSION:_VERSION}}(jQuery)); \ No newline at end of file diff --git a/src/static/js/utils/jquery.md5.js b/src/static/js/utils/jquery.md5.js new file mode 100644 index 0000000..5168575 --- /dev/null +++ b/src/static/js/utils/jquery.md5.js @@ -0,0 +1,229 @@ + /** + * jQuery MD5 hash algorithm function + * + * <code> + * Calculate the md5 hash of a String + * String $.md5 ( String str ) + * </code> + * + * Calculates the MD5 hash of str using the » RSA Data Security, Inc. MD5 Message-Digest Algorithm, and returns that hash. + * MD5 (Message-Digest algorithm 5) is a widely-used cryptographic hash function with a 128-bit hash value. MD5 has been employed in a wide variety of security applications, and is also commonly used to check the integrity of data. The generated hash is also non-reversable. Data cannot be retrieved from the message digest, the digest uniquely identifies the data. + * MD5 was developed by Professor Ronald L. Rivest in 1994. Its 128 bit (16 byte) message digest makes it a faster implementation than SHA-1. + * This script is used to process a variable length message into a fixed-length output of 128 bits using the MD5 algorithm. It is fully compatible with UTF-8 encoding. It is very useful when u want to transfer encrypted passwords over the internet. If you plan using UTF-8 encoding in your project don't forget to set the page encoding to UTF-8 (Content-Type meta tag). + * This function orginally get from the WebToolkit and rewrite for using as the jQuery plugin. + * + * Example + * Code + * <code> + * $.md5("I'm Persian."); + * </code> + * Result + * <code> + * "b8c901d0f02223f9761016cfff9d68df" + * </code> + * + * @alias Muhammad Hussein Fattahizadeh < muhammad [AT] semnanweb [DOT] com > + * @link http://www.semnanweb.com/jquery-plugin/md5.html + * @see http://www.webtoolkit.info/ + * @license http://www.gnu.org/licenses/gpl.html [GNU General Public License] + * @param {jQuery} {md5:function(string)) + * @return string + */ + + (function($){ + + var rotateLeft = function(lValue, iShiftBits) { + return (lValue << iShiftBits) | (lValue >>> (32 - iShiftBits)); + } + + var addUnsigned = function(lX, lY) { + var lX4, lY4, lX8, lY8, lResult; + lX8 = (lX & 0x80000000); + lY8 = (lY & 0x80000000); + lX4 = (lX & 0x40000000); + lY4 = (lY & 0x40000000); + lResult = (lX & 0x3FFFFFFF) + (lY & 0x3FFFFFFF); + if (lX4 & lY4) return (lResult ^ 0x80000000 ^ lX8 ^ lY8); + if (lX4 | lY4) { + if (lResult & 0x40000000) return (lResult ^ 0xC0000000 ^ lX8 ^ lY8); + else return (lResult ^ 0x40000000 ^ lX8 ^ lY8); + } else { + return (lResult ^ lX8 ^ lY8); + } + } + + var F = function(x, y, z) { + return (x & y) | ((~ x) & z); + } + + var G = function(x, y, z) { + return (x & z) | (y & (~ z)); + } + + var H = function(x, y, z) { + return (x ^ y ^ z); + } + + var I = function(x, y, z) { + return (y ^ (x | (~ z))); + } + + var FF = function(a, b, c, d, x, s, ac) { + a = addUnsigned(a, addUnsigned(addUnsigned(F(b, c, d), x), ac)); + return addUnsigned(rotateLeft(a, s), b); + }; + + var GG = function(a, b, c, d, x, s, ac) { + a = addUnsigned(a, addUnsigned(addUnsigned(G(b, c, d), x), ac)); + return addUnsigned(rotateLeft(a, s), b); + }; + + var HH = function(a, b, c, d, x, s, ac) { + a = addUnsigned(a, addUnsigned(addUnsigned(H(b, c, d), x), ac)); + return addUnsigned(rotateLeft(a, s), b); + }; + + var II = function(a, b, c, d, x, s, ac) { + a = addUnsigned(a, addUnsigned(addUnsigned(I(b, c, d), x), ac)); + return addUnsigned(rotateLeft(a, s), b); + }; + + var convertToWordArray = function(string) { + var lWordCount; + var lMessageLength = string.length; + var lNumberOfWordsTempOne = lMessageLength + 8; + var lNumberOfWordsTempTwo = (lNumberOfWordsTempOne - (lNumberOfWordsTempOne % 64)) / 64; + var lNumberOfWords = (lNumberOfWordsTempTwo + 1) * 16; + var lWordArray = Array(lNumberOfWords - 1); + var lBytePosition = 0; + var lByteCount = 0; + while (lByteCount < lMessageLength) { + lWordCount = (lByteCount - (lByteCount % 4)) / 4; + lBytePosition = (lByteCount % 4) * 8; + lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount) << lBytePosition)); + lByteCount++; + } + lWordCount = (lByteCount - (lByteCount % 4)) / 4; + lBytePosition = (lByteCount % 4) * 8; + lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80 << lBytePosition); + lWordArray[lNumberOfWords - 2] = lMessageLength << 3; + lWordArray[lNumberOfWords - 1] = lMessageLength >>> 29; + return lWordArray; + }; + + var wordToHex = function(lValue) { + var WordToHexValue = "", WordToHexValueTemp = "", lByte, lCount; + for (lCount = 0; lCount <= 3; lCount++) { + lByte = (lValue >>> (lCount * 8)) & 255; + WordToHexValueTemp = "0" + lByte.toString(16); + WordToHexValue = WordToHexValue + WordToHexValueTemp.substr(WordToHexValueTemp.length - 2, 2); + } + return WordToHexValue; + }; + + var uTF8Encode = function(string) { + string = string.replace(/\x0d\x0a/g, "\x0a"); + var output = ""; + for (var n = 0; n < string.length; n++) { + var c = string.charCodeAt(n); + if (c < 128) { + output += String.fromCharCode(c); + } else if ((c > 127) && (c < 2048)) { + output += String.fromCharCode((c >> 6) | 192); + output += String.fromCharCode((c & 63) | 128); + } else { + output += String.fromCharCode((c >> 12) | 224); + output += String.fromCharCode(((c >> 6) & 63) | 128); + output += String.fromCharCode((c & 63) | 128); + } + } + return output; + }; + + $.extend({ + md5: function(string) { + var x = Array(); + var k, AA, BB, CC, DD, a, b, c, d; + var S11=7, S12=12, S13=17, S14=22; + var S21=5, S22=9 , S23=14, S24=20; + var S31=4, S32=11, S33=16, S34=23; + var S41=6, S42=10, S43=15, S44=21; + string = uTF8Encode(string); + x = convertToWordArray(string); + a = 0x67452301; b = 0xEFCDAB89; c = 0x98BADCFE; d = 0x10325476; + for (k = 0; k < x.length; k += 16) { + AA = a; BB = b; CC = c; DD = d; + a = FF(a, b, c, d, x[k+0], S11, 0xD76AA478); + d = FF(d, a, b, c, x[k+1], S12, 0xE8C7B756); + c = FF(c, d, a, b, x[k+2], S13, 0x242070DB); + b = FF(b, c, d, a, x[k+3], S14, 0xC1BDCEEE); + a = FF(a, b, c, d, x[k+4], S11, 0xF57C0FAF); + d = FF(d, a, b, c, x[k+5], S12, 0x4787C62A); + c = FF(c, d, a, b, x[k+6], S13, 0xA8304613); + b = FF(b, c, d, a, x[k+7], S14, 0xFD469501); + a = FF(a, b, c, d, x[k+8], S11, 0x698098D8); + d = FF(d, a, b, c, x[k+9], S12, 0x8B44F7AF); + c = FF(c, d, a, b, x[k+10], S13, 0xFFFF5BB1); + b = FF(b, c, d, a, x[k+11], S14, 0x895CD7BE); + a = FF(a, b, c, d, x[k+12], S11, 0x6B901122); + d = FF(d, a, b, c, x[k+13], S12, 0xFD987193); + c = FF(c, d, a, b, x[k+14], S13, 0xA679438E); + b = FF(b, c, d, a, x[k+15], S14, 0x49B40821); + a = GG(a, b, c, d, x[k+1], S21, 0xF61E2562); + d = GG(d, a, b, c, x[k+6], S22, 0xC040B340); + c = GG(c, d, a, b, x[k+11], S23, 0x265E5A51); + b = GG(b, c, d, a, x[k+0], S24, 0xE9B6C7AA); + a = GG(a, b, c, d, x[k+5], S21, 0xD62F105D); + d = GG(d, a, b, c, x[k+10], S22, 0x2441453); + c = GG(c, d, a, b, x[k+15], S23, 0xD8A1E681); + b = GG(b, c, d, a, x[k+4], S24, 0xE7D3FBC8); + a = GG(a, b, c, d, x[k+9], S21, 0x21E1CDE6); + d = GG(d, a, b, c, x[k+14], S22, 0xC33707D6); + c = GG(c, d, a, b, x[k+3], S23, 0xF4D50D87); + b = GG(b, c, d, a, x[k+8], S24, 0x455A14ED); + a = GG(a, b, c, d, x[k+13], S21, 0xA9E3E905); + d = GG(d, a, b, c, x[k+2], S22, 0xFCEFA3F8); + c = GG(c, d, a, b, x[k+7], S23, 0x676F02D9); + b = GG(b, c, d, a, x[k+12], S24, 0x8D2A4C8A); + a = HH(a, b, c, d, x[k+5], S31, 0xFFFA3942); + d = HH(d, a, b, c, x[k+8], S32, 0x8771F681); + c = HH(c, d, a, b, x[k+11], S33, 0x6D9D6122); + b = HH(b, c, d, a, x[k+14], S34, 0xFDE5380C); + a = HH(a, b, c, d, x[k+1], S31, 0xA4BEEA44); + d = HH(d, a, b, c, x[k+4], S32, 0x4BDECFA9); + c = HH(c, d, a, b, x[k+7], S33, 0xF6BB4B60); + b = HH(b, c, d, a, x[k+10], S34, 0xBEBFBC70); + a = HH(a, b, c, d, x[k+13], S31, 0x289B7EC6); + d = HH(d, a, b, c, x[k+0], S32, 0xEAA127FA); + c = HH(c, d, a, b, x[k+3], S33, 0xD4EF3085); + b = HH(b, c, d, a, x[k+6], S34, 0x4881D05); + a = HH(a, b, c, d, x[k+9], S31, 0xD9D4D039); + d = HH(d, a, b, c, x[k+12], S32, 0xE6DB99E5); + c = HH(c, d, a, b, x[k+15], S33, 0x1FA27CF8); + b = HH(b, c, d, a, x[k+2], S34, 0xC4AC5665); + a = II(a, b, c, d, x[k+0], S41, 0xF4292244); + d = II(d, a, b, c, x[k+7], S42, 0x432AFF97); + c = II(c, d, a, b, x[k+14], S43, 0xAB9423A7); + b = II(b, c, d, a, x[k+5], S44, 0xFC93A039); + a = II(a, b, c, d, x[k+12], S41, 0x655B59C3); + d = II(d, a, b, c, x[k+3], S42, 0x8F0CCC92); + c = II(c, d, a, b, x[k+10], S43, 0xFFEFF47D); + b = II(b, c, d, a, x[k+1], S44, 0x85845DD1); + a = II(a, b, c, d, x[k+8], S41, 0x6FA87E4F); + d = II(d, a, b, c, x[k+15], S42, 0xFE2CE6E0); + c = II(c, d, a, b, x[k+6], S43, 0xA3014314); + b = II(b, c, d, a, x[k+13], S44, 0x4E0811A1); + a = II(a, b, c, d, x[k+4], S41, 0xF7537E82); + d = II(d, a, b, c, x[k+11], S42, 0xBD3AF235); + c = II(c, d, a, b, x[k+2], S43, 0x2AD7D2BB); + b = II(b, c, d, a, x[k+9], S44, 0xEB86D391); + a = addUnsigned(a, AA); + b = addUnsigned(b, BB); + c = addUnsigned(c, CC); + d = addUnsigned(d, DD); + } + var tempValue = wordToHex(a) + wordToHex(b) + wordToHex(c) + wordToHex(d); + return tempValue.toLowerCase(); + } + }); + })(jQuery); \ No newline at end of file diff --git a/src/static/js/utils/uuid.js b/src/static/js/utils/uuid.js new file mode 100644 index 0000000..67ab9f7 --- /dev/null +++ b/src/static/js/utils/uuid.js @@ -0,0 +1,109 @@ +(function () { + var isNode = typeof module !== 'undefined' && + typeof module.exports !== 'undefined', + _; + if (isNode) { + _ = require('lodash').runInContext(); + } + else { + // browser environment + _ = window._; + } + + var mixins = (function () { + var extendWith = {}; + + /** + * _.uuid + * + * Usage: + * _.uuid() + * Produces: + * '9716498c-45df-47d2-8099-3f678446d776' + * + * Generates an RFC 4122 version 4 uuid + * @see http://stackoverflow.com/a/8809472 + * @returns {String} the generated uuid + */ + extendWith.uuid = function () { + var d = _.now(); + return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + var r = (d + _.random(16)) % 16 | 0; + d = Math.floor(d / 16); + return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16); + }); + }; + + /** + * _.isUuid4 + * + * Usage: + * _.isUuid4(_.uuid()) + * Produces: + * true|false + * + * Validates a version 4 uuid string + * @param {String} uuid - the uuid under test + * @returns {Boolean} true if the uuid under test is a valid uuid + **/ + extendWith.isUuid4 = function (uuid) { + var re = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i; + return re.test(uuid); + }; + + /** + * _.isUuid + * + * Usage: + * _.isUuid(_.uuid()) + * Produces: + * true|false + * + * Validates any version uuid string + * @param {String} uuid - the uuid under test + * @returns {Boolean} true if the uuid under test is a valid uuid + **/ + extendWith.isUuid = function (uuid) { + var re = /^([a-f\d]{8}(-[a-f\d]{4}){3}-[a-f\d]{12}?)$/i; + return re.test(uuid); + }; + + /** + * _.compactObject + * + * Usage: + * var obj = {a: false, b: 3, c: ''}; + * _.compactObject(obj) + * Produces: + * {b: 3} + * + * Removes properties from an object where the value is falsy. + * Like _.compact but for objects + * @param {Object} obj - the object to remove falsy properties from + * @returns {Object} the object with falsy properties removed + **/ + + return extendWith; + })(); + + /** + * bootstrap mixins for node and the browser + * For the browser: lodash must be explicitly included above + * this library + * For node: this library will wrap lodash so there is no + * need to include lodash + */ + if (isNode) { + _.mixin(mixins, {'chain': true}); + module.exports = _; + } + else { + // browser environment + if (typeof _ === 'function') { + _.mixin(mixins, {'chain': true}); + } + else { + throw new Error('lodash must be included before lodash-extensions.'); + } + } +})(); \ No newline at end of file diff --git a/src/static/js/work_flow/module.js b/src/static/js/work_flow/module.js new file mode 100644 index 0000000..e023d42 --- /dev/null +++ b/src/static/js/work_flow/module.js @@ -0,0 +1,276 @@ +angular.module('work_flow_module', []) +.controller('workflowCtrl',['http_service','$scope','$timeout',function(http_service,$scope,$timeout){ + $scope.buDefFlag = false;//初始化配置流程、部署按钮 禁用状态 + $scope.apDefFlag = false; + $scope.exDefFlag = false; + $scope.buDef_bushuFlag = false; + $scope.apDef_bushuFlag = false; + $scope.exDef_bushuFlag = false; + //保存ip + $scope.webip = work_flow_url; + //流程引擎 修改 11-27 + function getCookie(cname) { + var name = cname + "="; + var ca = document.cookie.split(';'); + for(var i = 0; i < ca.length; i++) { + var c = ca[i].trim(); + if(c.indexOf(name) == 0) return c.substring(name.length, c.length); + } + return ""; + } + +// $scope.openId = app_userinfo.openId; + $scope.tenantId = getCookie("tenantId"); + $scope.companyId = getCookie("companyRowId"); +// $scope.companyId = 17; + $scope.appId = appId; + $scope.token = getCookie("token"); + //流程引擎 修改 11-27 + //加载JS + function add_js(info,callback){ +// var otherJScipt = document.createElement("script"); +// otherJScipt.setAttribute("type", "text/javascript"); +// otherJScipt.setAttribute("src", work_flow_url+"workspace/travel-info-min.js?info="+info); +// document.getElementsByTagName("head")[0].appendChild(otherJScipt); +// otherJScipt.onload = function(){ + callback(); +// } +// $("<script>").attr({type:"text/javascript",src:work_flow_url+"workspace/travel-info-min.js?info="+info}).appendTo("head").onload= function(){ +// callback(); +// } + + + } + //创建流程定义之后查询 + + $scope.createflow= function(type){ + switch (type){ + case 10: + $scope.workflow_flag = $scope.budget_flag; + if($scope.buDefFlag == false){ + return false; + } + break; + case 20: + $scope.workflow_flag = $scope.apply_flag; + if($scope.apDefFlag == false){ + return false; + } + break; + case 30: + $scope.workflow_flag = $scope.expend_flag; + if($scope.exDefFlag == false){ + return false; + } + break; + } + if($scope.workflow_flag){ + switch (type){ + case 10: + $scope.workflow_url_now = $scope.workflow_url_budget; + break; + case 20: + $scope.workflow_url_now = $scope.workflow_url_apply; + break; + case 30: + $scope.workflow_url_now = $scope.workflow_url_expend; + break; + } + http_service.post('workflow/userInfo',{},function(res){ + var info = res.data.data; + add_js(info,function(){ + $scope.skip($scope.workflow_url_now); + }) +// $("<script>").attr({type:"text/javascript",src:work_flow_url+"workspace/travel-info-min.js?info="+info}).appendTo("head"); + + }) + }else{ + switch (type){ + case 10: + $scope.createurl = 'flow/budget/'; + $scope.btnclass = ".budgetbtn"; + break; + case 20: + $scope.createurl = 'flow/apply/'; + $scope.btnclass = ".applybtn"; + break; + case 30: + $scope.createurl = 'flow/expend/'; + $scope.btnclass = ".expendbtn"; + break; + } + http_service.post($scope.createurl+'create',{},function(response){ + if(response.data.opState == false){// 流程定义创建失败 不可跳转工作流 李伟民12-30 + $scope.$parent.terro('流程定义创建失败。') + return false; + } + $scope.id = response.data.data; + //修改流程定义,弹出子窗口 + $scope.workflow_url_now = $scope.webip+"#/Iframe?token="+ $scope.token +"&openId="+ app_userinfo.openId +"&tenantId="+ $scope.tenantId +"&companyId="+ $scope.companyId +"&appId="+$scope.appId+"&processDefId="+$scope.id; +// $scope.workflow_url_now = $scope.webip+'workspace/workflow/bps_composer/flex/bizProcessCustomDg.jsp?hasForm=false&locale=zh_CN&processDefID='+$scope.id+'&author=&editType=custom&mdfState=9' + $scope.searchbuget(); + http_service.post('workflow/userInfo',{},function(res){ + var info = res.data.data; + add_js(info,function(){ + $scope.skip($scope.workflow_url_now); + }) +// $("<script>").attr({type:"text/javascript",src:work_flow_url+"workspace/travel-info-min.js?info="+info}).appendTo("head"); +// $scope.skip($scope.workflow_url_now); + }) + }); + + } + } + + $scope.skip =function(url){ + var openLink = window.open("_blank"); + openLink.location = url; + } + + $scope.searchbuget = function(){ + $scope.buDefFlag = false;//初始化配置流程、部署按钮 禁用状态 + $scope.apDefFlag = false; + $scope.exDefFlag = false; + $scope.buDef_bushuFlag = false; + $scope.apDef_bushuFlag = false; + $scope.exDef_bushuFlag = false; + //查询预算流程定义 + http_service.post('flow/budget/defInfo',{},function(response){ + //若没有流程 + if(!response.data.data){ + $scope.budgetcreateflag = "未定义"; + $scope.bconfigflag = false; + $scope.budgetcolor = "orange"; + $scope.budget_flag = false; + $scope.buDefFlag = true;//未定义可配置流程 不可部署 +// $scope.configbudget(10,false); + }else{ + $scope.buDefFlag = true;//已定义可配置流程 也可部署 + $scope.buDef_bushuFlag = true; + $scope.budget_flag = true; + $scope.budgetcreateflag = "使用中"; + $scope.budgetcolor = "green"; + $scope.bconfigflag = true; + //流程定义id + $scope.budgetflowid = response.data.data.flBizDefId; + $scope.skipbudgetid = response.data.data.flDefId; + //是否可提交 + $scope.commitflag = response.data.data.update; + $scope.bname = response.data.data.flDefName; + //修改流程定义,弹出子窗口 + $scope.workflow_url_budget = $scope.webip+"#/Iframe?token="+ $scope.token +"&openId="+ app_userinfo.openId +"&tenantId="+ $scope.tenantId +"&companyId="+ $scope.companyId +"&appId="+$scope.appId+"&processDefId="+$scope.budgetflowid; +// $scope.workflow_url_budget = $scope.webip+'workspace/workflow/bps_composer/flex/bizProcessCustomDg.jsp?hasForm=false&locale=zh_CN&processDefID='+$scope.budgetflowid+'&author=&editType=custom&mdfState=9'; +// $scope.configbudget(10,true,workflow_url_budget); +// $(".budgetbtn").attr('href',$scope.webip+'workspace/workflow/bps_composer/flex/bizProcessCustomDg.jsp?hasForm=false&locale=zh_CN&processDefID='+$scope.budgetflowid+ +// '&author=&editType=custom&mdfState=9'); + //预算部署 + $scope.configb = function(){ + if($scope.buDef_bushuFlag == false){ + return false; + } + http_service.post('flow/budget/submit/def',{'processDefName':$scope.bname,'processDefID':$scope.skipbudgetid},function(response){ + if(response.data.opState){ + $scope.$parent.tsuccess("预算流程部署成功") + }else{ + $scope.$parent.terro( response.data.errMsg) + } + }) + } + } + }) + + //查询申请流程定义 + http_service.post('flow/apply/defInfo',{},function(response){ + if(!response.data.data){ + $scope.applycreateflag = "未定义"; + $scope.applycolor = "orange"; + $scope.aconfigflag = false; + $scope.apply_flag = false; + $scope.apDefFlag = true;//未定义可配置流程 不可部署 +// $scope.configapply = function(){ +// $scope.createflow(20); +// } + }else{ + $scope.apDefFlag = true;//已定义可配置流程 也可部署 + $scope.apDef_bushuFlag = true; + $scope.apply_flag = true; + $scope.applycreateflag = "使用中"; + $scope.aconfigflag = true; + $scope.applycolor = "green"; + //流程定义id + $scope.applyflowid = response.data.data.flBizDefId; + $scope.skipapplyid = response.data.data.flDefId; + //是否可提交 + $scope.commitflag = response.data.data.update; + $scope.aname = response.data.data.flDefName; + //修改流程定义,弹出子窗口 + $scope.workflow_url_apply = $scope.webip+"#/Iframe?token="+ $scope.token +"&openId="+ app_userinfo.openId +"&tenantId="+ $scope.tenantId +"&companyId="+ $scope.companyId +"&appId="+$scope.appId+"&processDefId="+$scope.applyflowid; +// $scope.workflow_url_apply = $scope.webip+'workspace/workflow/bps_composer/flex/bizProcessCustomDg.jsp?hasForm=false&locale=zh_CN&processDefID='+$scope.applyflowid+'&author=&editType=custom&mdfState=9'; +// $(".applybtn").attr('href',$scope.webip+'workspace/workflow/bps_composer/flex/bizProcessCustomDg.jsp?hasForm=false&locale=zh_CN&processDefID='+$scope.applyflowid+ +// '&author=&editType=custom&mdfState=9'); + //申请部署 + $scope.configa = function(){ + if($scope.apDef_bushuFlag == false){ + return false; + } + http_service.post('flow/apply/submit/def',{'processDefName':$scope.aname,'processDefID':$scope.skipapplyid},function(response){ + if(response.data.opState){ + $scope.$parent.tsuccess("申请流程部署成功!") + }else{ + $scope.$parent.terro(response.data.errMsg) + } + }) + } + } + }) + + + //查询报销流程定义 + http_service.post('flow/expend/defInfo',{},function(response){ + if(!response.data.data){ + $scope.expendcreateflag = "未定义"; + $scope.econfigflag = false; + $scope.expendcolor = "orange"; + $scope.expend_flag = false; + $scope.exDefFlag = true;//未定义可配置流程 不可部署 +// $scope.configexpend = function(){ +// $scope.createflow(30); +// } + }else{ + $scope.exDefFlag = true;//已定义可配置流程 也可部署 + $scope.exDef_bushuFlag = true; + $scope.expend_flag = true; + $scope.expendcreateflag = "使用中"; + $scope.expendcolor = "green"; + $scope.econfigflag = true; + //流程定义id + $scope.expendflowid = response.data.data.flBizDefId; + $scope.skipexpendid = response.data.data.flDefId; + //是否可提交 + $scope.commitflag = response.data.data.update; + $scope.ename = response.data.data.flDefName; + //修改流程定义,弹出子窗口 + $scope.workflow_url_expend = $scope.webip+"#/Iframe?token="+ $scope.token +"&openId="+ app_userinfo.openId +"&tenantId="+ $scope.tenantId +"&companyId="+ $scope.companyId +"&appId="+$scope.appId+"&processDefId="+$scope.expendflowid; +// $scope.workflow_url_expend = $scope.webip+'workspace/workflow/bps_composer/flex/bizProcessCustomDg.jsp?hasForm=false&locale=zh_CN&processDefID='+$scope.expendflowid+'&author=&editType=custom&mdfState=9'; +// $(".expendbtn").attr('href',$scope.webip+'workspace/workflow/bps_composer/flex/bizProcessCustomDg.jsp?hasForm=false&locale=zh_CN&processDefID='+$scope.expendflowid+ +// '&author=&editType=custom&mdfState=9'); + //报销部署 + $scope.confige = function(){ + if($scope.exDef_bushuFlag == false){ + return false; + } + http_service.post('flow/expend/submit/def',{'processDefName':$scope.ename,'processDefID':$scope.skipexpendid},function(response){ + if(response.data.opState){ + $scope.$parent.tsuccess('报销流程部署成功。') + }else{ + $scope.$parent.terro(response.data.errMsg) + } + }) + } + } + }) + } + + $scope.searchbuget(); +}]) + diff --git a/src/static/sonar-project.json b/src/static/sonar-project.json new file mode 100644 index 0000000..3268865 --- /dev/null +++ b/src/static/sonar-project.json @@ -0,0 +1,17 @@ + +# must be unique in a given SonarQube instance +sonar.projectKey=my:travel-js +# this is the name displayed in the SonarQube UI +sonar.projectName=travel-js +sonar.projectVersion=1.0 + +# Path is relative to the sonar-project.properties file. Replace "/" by "/" on Windows. +# Since SonarQube 4.2, this property is optional if sonar.modules is set. +# If not set, SonarQube starts looking for source code from the directory containing +# the sonar-project.properties file. +sonar.sources=F:/JSChangHong/item-iem + +sonar.language=js + +# Encoding of the source code. Default is default system encoding +sonar.sourceEncoding=UTF-8 \ No newline at end of file diff --git a/src/static/templates/apply_select.html b/src/static/templates/apply_select.html new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/static/templates/apply_select.html diff --git a/src/static/templates/bill_create_popup.html b/src/static/templates/bill_create_popup.html new file mode 100644 index 0000000..7624ea0 --- /dev/null +++ b/src/static/templates/bill_create_popup.html @@ -0,0 +1,42 @@ +<div class="bg-modal bill_create_pop"> + <div class="pop_panel" ng-drop="true" ng-drag="$root.drag_flag" ng-mousedown="$root.drag_div($event)" ng-drag-start="$root.draging()" ng-drag-stop="$root.drag_div_end()" id="create_order"> + <div class="heading creat_bill_heading" > + {{type==10?"预算单":""}} + {{type==20?"申请单":""}} + {{type==30?"报销单":""}} + <div class="close close_create" ng-click="cancel()"> + <img src="./static/img/close.png"> + </div> + </div> + <div class="body"> + <div class="order_number" style="position: absolute;" ng-if="exCouldNumber != undefined"><span ng-if="type == 30">云单编</span>号:{{exCouldNumber}}</div> + <div class="paper_upload" ng-if="type==30 && $root.permission_check('bill_commit_create')"> + <a ng-href="javascript:void(0);" ng-click="show_iframe();"> + <img src="./static/img/update.png" title="票据上传" /> 票据上传 + </a> + </div> + <div class="paper_iframe" ng-if="type==30 && iframe_show"> + <div class="paper_iframe_nav"> + <span> + 票据上传 + </span> + <div class="close" ng-click="close_iframe()"> + <img src="./static/img/close.png"> + </div> + </div> + <iframe id="iframeId" style="width: 100%;overflow: auto;" name='myiframe' ng-init="show_iframe()" ng-src='{{iframe_src}}'></iframe> + </div> + <div class="form_container" style="padding-top:0px;"> + <div saved-form type="type" isbill='false' edit="edit" btnflag="true"><!-- ng-show="classifypart"</div>--> + </div> + <div ng-if="type == 30" style="float: right;"> + <!--<span>创建时间: {{createtime}} </span> + <span>订单状态: {{orderstatus}}</span>--> + </div> + <div class="row btn-zone-center" style="padding-left:25px;"> + <button class="btn btn-success btn-favourite " ng-disabled="!save_btn_flag" ng-click="create_bill()" id="savebtn">保存</button> + <button class="btn btn-success btn-favourite " ng-click="cancel();" id="cancelbtn">取消</button> + </div> + </div> + </div> +</div> \ No newline at end of file diff --git a/src/static/templates/billing_cfg_guide.html b/src/static/templates/billing_cfg_guide.html new file mode 100644 index 0000000..8b19718 --- /dev/null +++ b/src/static/templates/billing_cfg_guide.html @@ -0,0 +1,168 @@ +<title> + {{step==1?'预算向导':''}} + {{step==2?'申请向导':''}} + {{step==3?'报销向导':''}} + {{step==4?'报销标准向导页':''}} + {{step==5?'系统设置向导页':''}} + {{step==6?'工作流配置向导页':''}} + {{step==7?'云报销配置向导':''}} +</title> +<div class="content"> + <h1>云报销配置向导</h1> + <br> + <div ng-show="step == 1"> + <label class="text_label">选择式设计一款符合您公司业务的预算单,如果不需要预算单请跳过.</label> + <br><br> + <div class="container"> + <ul class="wizard_content"> + <div class="col-md-6"> + <a ng-click="redirect_to_budget_forms('/budget_froms/', business, '10')" ng-href="javascript:void(0);"> + <img src="./static/img/budget_settings_guid.jpg"> + <p><label>设置预算单</label></p> + </a> + </div> + <div class="col-md-6"> + <a ng-href="javascript:void(0);" ng-click="redirect_to_billing_cfg_guide('/billing_cfg_guide/', business, '2')"> + <img src="./static/img/next_step.jpg"> + <p><label>跳过</label></p> + </a> + </div> + </ul> + </div> + <button class="btn btn-success btn-favourite" ng-click="redirect_to('/business')">上一步</button> + </div> + + <div ng-show="step == 2"> + <label class="text_label">选择式设计一款符合您公司业务的申请单,如果不需申请单请跳过.</label> + <br><br> + <div class="container"> + <ul class="wizard_content"> + <div class="col-md-6"> + <a ng-click="redirect_to_budget_forms('/budget_froms/', business, '20')" ng-href="javascript:void(0);"> + <img src="./static/img/request_billing_setting_guid.jpg"> + <p><label>设置申请单</label></p> + </a> + </div> + <div class="col-md-6"> + <a ng-href="javascript:void(0);" ng-click="redirect_to_billing_cfg_guide('/billing_cfg_guide/', business, '3')"> + <img src="./static/img/next_step.jpg"> + <p><label>跳过</label></p> + </a> + </div> + </ul> + </div> + <button class="btn btn-success btn-favourite" ng-click="redirect_to_billing_cfg_guide('/billing_cfg_guide/', business, '1')">上一步</button> + </div> + + <div ng-show="step == 3"> + <label class="text_label">选择式设计一款符合您公司业务的报销单,如果不需报销单请跳过.</label> + <br><br> + <div class="container"> + <ul class="wizard_content"> + <div class="col-md-6"> + <a ng-click="redirect_to_budget_forms('/budget_froms/', business, '30')" ng-href="javascript:void(0);"> + <img src="./static/img/reimbursement_settings_guid.jpg"> + <p><label>设置报销单</label></p> + </a> + </div> + <div class="col-md-6"> + <a ng-href="javascript:void(0);" ng-click="redirect_to_billing_cfg_guide('/billing_cfg_guide/', business, '4')"> + <img src="./static/img/next_step.jpg"> + <p><label>稍后设置</label></p> + </a> + </div> + </ul> + </div> + <button class="btn btn-success btn-favourite" ng-click="redirect_to_billing_cfg_guide('/billing_cfg_guide/', business, '2')">上一步</button> + </div> + + <div ng-show="step == 4"> + <label class="text_label">选择式设计一款符合您公司业务的补助标准,如果不需申补助标准请跳过.</label> + <br><br> + <div class="container"> + <ul class="wizard_content"> + <div class="col-md-6"> + <a ng-click="redirect_to('/expend_standard')" ng-href="javascript:void(0);"> + <img src="./static/img/reimbursement_standard_settings_guid.jpg"> + <p><label>报销标准</label></p> + </a> + </div> + <div class="col-md-6"> + <a ng-href="javascript:void(0);" ng-click="redirect_to_billing_cfg_guide('/billing_cfg_guide/', business, '5')"> + <img src="./static/img/next_step.jpg"> + <p><label>稍后设置</label></p> + </a> + </div> + </ul> + </div> + <button class="btn btn-success btn-favourite" ng-click="redirect_to_billing_cfg_guide('/billing_cfg_guide/', business, '3')">上一步</button> + </div> + + <div ng-show="step == 5"> + <label class="text_label">选择式设计一款符合您公司业务的系统设置,如果不需系统设置请跳过.</label> + <br><br> + <div class="container"> + <ul class="wizard_content"> + <a ng-href="javascript:void(0);" ng-click="redirect_to('/system_config');"> + <div class="col-md-6"> + <img src="./static/img/system_settings.jpg"> + <p><label>系统设置</label></p> + </div> + </a> + <div class="col-md-6"> + <a ng-href="javascript:void(0);" ng-click="redirect_to_billing_cfg_guide('/billing_cfg_guide/', business, '6')"> + <img src="./static/img/next_step.jpg"> + <p><label>跳过</label></p> + </a> + </div> + </ul> + </div> + <button class="btn btn-success btn-favourite" ng-click="redirect_to_billing_cfg_guide('/billing_cfg_guide/', business, '4')">上一步</button> + </div> + + <div ng-show="step == 6"> + <label class="text_label">选择式设计一款符合您公司业务的系统设置,如果不需系统设置请跳过.</label> + <br><br> + <div class="container"> + <ul class="wizard_content"> + <a ng-href="javascript:void(0);" ng-click="redirect_to('/work_flow');"> + <div class="col-md-6"> + <img src="./static/img/workflowing_settins_guid.png"> + <p><label>工作流配置</label></p> + </div> + </a> + <div class="col-md-6"> + <a ng-href="javascript:void(0);" ng-click="redirect_to_billing_cfg_guide('/billing_cfg_guide/', business, '7')"> + <img src="./static/img/next_step.jpg"> + <p><label>跳过</label></p> + </a> + </div> + </ul> + </div> + <button class="btn btn-success btn-favourite" ng-click="redirect_to_billing_cfg_guide('/billing_cfg_guide/', business, '5')">上一步</button> + </div> + + <div ng-show="step == 7"> + <label class="text_label">下一秒您就会拥有属于自己的报销云平台.</label> + <br><br> + <div class="container"> + <ul class="wizard_content"> + <div class="col-md-6"> + <a ng-href="javascript:void(0)" ng-click="redirect_to('/cfg_center/');"> + <img src="./static/img/edit_saved_templates.jpg"> + <p><label>编辑已有模板</label></p> + </a> + </div> + <div class="col-md-6"> + <a ng-href="javascript:void(0);" ng-click="redirect_to_billing_cfg_guide('/billing_cfg_guide/', business, '8')"> + <!--<a ng-href="javascript:void(0);" ng-click="redirect_to('/travel_expense_todos');">--> + <img src="./static/img/system_entry.jpg"> + <p><label>进入云报销系统</label></p> + </a> + </div> + </ul> + </div> + <button class="btn btn-success btn-favourite" ng-click="redirect_to_billing_cfg_guide('/billing_cfg_guide/', business, '6')">上一步</button> + </div> + +</div> \ No newline at end of file diff --git a/src/static/templates/budget_form_customize.html b/src/static/templates/budget_form_customize.html new file mode 100644 index 0000000..43ba6fb --- /dev/null +++ b/src/static/templates/budget_form_customize.html @@ -0,0 +1,55 @@ +<div class="split_form" id="split_form"> + <div class="main" style="padding-top:42px;"> + <div class="row " style="margin-top:-41px;"> + <div class="col-md-7 bill_name" > + <input + type="text" + class="inputunderline" + placeholder=" 表单名称" + maxlength=50 + ng-model="guTempName" + /> + </div> + <div class="col-md-3" > + <!-- + <textarea + style="float:left;margin-left:5px;height:35px;width:100%;" + ng-model="guTempDisc" + > + </textarea> + --> + </div> + <div class="col-md-2"> + <button + class="btn btn-success btn-favourite" + style="float:right;margin-bottom:2px;margin-right:5px;" + ng-click="create_forms();" + id="save_create_form" + ng-show="permission_check('save',1)" + > + 保存 + </button> + </div> + </div> + <div class="el_form"> + + </div> + </div> + <div class="left" style="position:fixed;margin: 0;"> + <h6>基础字段</h6> + <hr/> + </div> + <div class="right" style="position: relative;"> + <h6>控件属性</h6> + <hr/> + <div name="el_attr_editor_container"> + <div + frm-element-attr-editor + element="element" + data="data" + type="type" + ></div> + </div> + + </div> +</div> \ No newline at end of file diff --git a/src/static/templates/budget_forms.html b/src/static/templates/budget_forms.html new file mode 100644 index 0000000..f13ea57 --- /dev/null +++ b/src/static/templates/budget_forms.html @@ -0,0 +1,87 @@ +<title> + {{type==10?'预算单向导配置页':''}} + {{type==20?'申请单向导配置页':''}} + {{type==30?'报销单向导配置页':''}} +</title> +<div class="split_form"> + <div class="main"style="padding-left:230px;padding-right:0px;"> <!--position:relative;overflow-x:hidden--> + <div class="form_container"> + </div> + <!--<div style="width: 100%;height: 100%;position: fixed;top:0;z-index:9;"> + </div>--> + </div> + <div class="left" style="width:230px;"> + <ul class="ul-tree forms_editor"> + <li class="forms_list" ng-if="!isShow"> + <img src="./static/img/create_form.png" class="small" > + <a + ng-if="type==10" + ng-href="javascript:void(0);" + ng-click="redirect_to_args('/budget_form_customize', type ,business)" + > + 使用空白的预算单 + </a> + <a + ng-if="type==20" + ng-href="javascript:void(0);" + ng-click="redirect_to_args('/budget_form_customize', type, business)" + > + 使用空白的申请单 + </a> + <a + ng-if="type==30" + ng-href="javascript:void(0);" + ng-click="redirect_to_args('/budget_form_customize', type, business)" + > + 使用空白的报销单 + </a> + </li> + <li ng-show="permission_check('myform',1)" class="forms_list" ng-if="isShow"> + <img src="./static/img/form_created.png" > + <a + ng-href="javascript:void(0);" + ng-if="type==10" + ng-click="show_saved_form(business,type, 1)" + > + 我创建的预算单 + </a> + <a + ng-href="javascript:void(0);" + ng-if="type==20" + ng-click="show_saved_form(business, type,1)" + > + 我创建的申请单 + </a> + <a + ng-href="javascript:void(0);" + ng-if="type==30" + ng-click="show_saved_form(business, type,1)" + > + 我创建的报销单 + </a> + </li> + <li ng-show="permission_check('bussiness',1)" class="forms_list"> + <a ng-href="javascript:void(0);" ng-click="indus_templates_collpase = !indus_templates_collpase"> + <img src="./static/img/form_default.png" > + <span ng-if="type==10" ng-click="searchtemplate(1)" id="bussiness_budget"> + 行业精选预算单 + </span> + <span ng-if="type==20" ng-click="searchtemplate(2)" id="bussiness_apply"> + 行业精选申请单 + </span> + <span ng-if="type==30" ng-click="searchtemplate(3)" id="bussiness_expend"> + 行业精选报销单 + </span> + </a> + <ul ng-if="!indus_templates_collpase"> + <li ng-repeat="template in indus_templates"> + <img src="./static/img/page.png" > + <a ng-href="javascript:void(0);" ng-click="show_saved_form(business, type, 2, template.guId)"> + {{template.guTempName}} + </a> + </li> + </ul> + </li> + </ul> + </div> +</div> \ No newline at end of file diff --git a/src/static/templates/business.html b/src/static/templates/business.html new file mode 100644 index 0000000..ab78aeb --- /dev/null +++ b/src/static/templates/business.html @@ -0,0 +1,38 @@ +<title>选择行业</title> +<div class="content"> + <h1>请选择您公司的行业</h1> + <br> + <label class="text_label">我们会按照您所选择的行业快速匹配适合您的报销管理平台</label> + <br><br> + <div class="container"> + <!--num表循环个数示--> + <ul class="business_items" ng-init="num=7"> + <li ng-repeat="business in business_list | limitTo:num"> + <div + ng-mouseenter="mouseover_business_item($event)" + ng-mouseleave="mouseout_business_item($event)" + ng-click="redirect_to_billing_cfg_guide(business.inCode);" + > + <label>{{business.inName}}</label> + <ul > + <li style="font-size:12px;"> + {{business.inDesc}} + </li> + </ul> + <img src="travel-web\{{business.inBigIcon}}" /> + <span>{{business.inName}}</span> + </div> + </li> + <!--加入更多--> + <li> + <!--点击时判断num的数量并进行切换--> + <a ng-href="javascript:void(0);" ng-click="show_more();num=num==Number.POSITIVE_INFINITY?7:Number.POSITIVE_INFINITY"> + <img src="./static/img/more_collapse.png" /> + <label class="bottom_label"> {{business_card_shown?'返回':'更多'}}</label> + </a> + </li> + + </ul> + </div> + <button class="btn btn-success btn-favourite" ng-click="redirect_to('/guide')">上一步</button> +</div> \ No newline at end of file diff --git a/src/static/templates/city.html b/src/static/templates/city.html new file mode 100644 index 0000000..9ef277b --- /dev/null +++ b/src/static/templates/city.html @@ -0,0 +1,37 @@ +<title>选择城市</title> +<div id="citycontent"> + <div class="topsection"> + <p style="border: none;">选择城市</p> + <div id="searchdiv"> + <input type="text" id="search" ng-model="somecity"/> + <i class="fa fa-search search" aria-hidden="true"></i> + </div> + <button class="button" ng-click="savecity()">保存</button> + <img src="static/img/close.png" ng-click="hidecity()"/> + </div> + <div class="selectedcity" gcColName="{{item.gcColName}}" selected_city="{{citycode.join(',')}}"> + <p style="border: none;">已选城市</p> + <span ng-repeat="selectedcity in cityList">{{selectedcity}}<span class="deletecity" ng-click="deletecity($index)">×</span></span> + </div> + <div class="showcity"> + + <div class="leftsection"> + <ul> + <li class="hot">热门城市</li> + <li ng-repeat="province in provinces" ng-click="selecthot($index)">{{province.value}}</li> + </ul> + </div> + <div class="rightsection"> + <div class="classcity"> + <a href="javascript:void(0)" class="firstcity" ng-click="firstcity()">一级城市</a> + <a href="javascript:void(0)" class="secondcity" ng-click="secondcity()">二级城市</a> + <a href="javascript:void(0)" class="thirdcity" ng-click="thirdcity()">三级城市</a> + </div> + <span class="citycontent" ng-repeat="city in citys track by $index"> + <input type="checkbox" name="city.value" id="city.value" ng-checked="{{city.value|cityfilter:cityList}}" ng-click="selectcity($event,$index)"/> + <span>{{city.value}}</span> + </span> + + </div> + </div> +</div> \ No newline at end of file diff --git a/src/static/templates/config_center.html b/src/static/templates/config_center.html new file mode 100644 index 0000000..dac7616 --- /dev/null +++ b/src/static/templates/config_center.html @@ -0,0 +1,67 @@ +<title>配置中心</title> +<div id="config"> +<div class="content"> + <div class="container form"> + <ul class="business_items cfg_items"> + <li ng-if="permission_check('budget_template') && $root.budget_open == 1"> + <div hover-card ng-click="redirect_to('/budget_froms/10');" id="budget_template"> + <label>这里是您想要的预算单模板.</label> + <img src="./static/img/cfg_center_1.png" /> + </div> + </li> + <li ng-if="permission_check('apply_template') && $root.apply_open == 1"> + <div hover-card ng-click="redirect_to('/budget_froms/20');" id="apply_template"> + <label>这里是您想要的申请单模板.</label> + <img src="./static/img/cfg_center_2.png" /> + </div> + </li> + <li ng-if="permission_check('expend_template') && $root.expend_open == 1"> + <div hover-card ng-click="redirect_to('/budget_froms/30');" id="expend_template"> + <label>这里是您想要的报销单模板.</label> + <img src="./static/img/cfg_center_3.png" /> + </div> + </li> + </ul> + </div> +</div> +<div class="content"> + <div class="container form"> + <ul class="business_items cfg_items"> + <li ng-if="permission_check('system')"> + <div + hover-card + ng-click="redirect_to('/system_config')" + id="system"> + <label>这里是您想要的系统设置.</label> + <img src="./static/img/cfg_center_4.png" style="width:180px !important;height:190px !important;position:absolute;top:9px;" /> + </div> + </li> + <li ng-if="permission_check('standard')"> + <div hover-card + ng-click="redirect_to('/expend_standard')" + id="standard" + > + <label>这里是您想要的报销标准.</label> + <img src="./static/img/cfg_center_5.png" style="width:222px !important;height:250px !important;position:absolute;top:-30px;left:2px;" /> + </div> + </li> + <li ng-if="permission_check('flow')"> + <div hover-card ng-click="redirect_to('/work_flow')" id="flow"> + <label>这里是您想要的工作流配置.</label> + <img src="./static/img/cfg_center_6.png" style="width:222px !important;height:250px !important;position:absolute;top:-38px;left:-28px;" /> + </div> + </li> + <!-- + <li > + <div hover-card> + <label>这里是您想要的基础数据管理.</label> + <img src="./static/img/cfg_center_7.png" style="width:222px !important;height:250px !important;position:absolute;top:-62px;left:-15px;" /> + </div> + </li> + --> + </ul> + </div> +</div> +</div> + + diff --git a/src/static/templates/drop_down_selector.html b/src/static/templates/drop_down_selector.html new file mode 100644 index 0000000..1fed62e --- /dev/null +++ b/src/static/templates/drop_down_selector.html @@ -0,0 +1,14 @@ +<ul> + <li ng-repeat="option in filterlist"> + <div> + <div> + <input + type="checkbox" + ng-model="option.selected" + multiple="multiple" + > + </div> + <div>{{option.gc_cpn_alias}}</div> + </div> + </li> +</ul> \ No newline at end of file diff --git a/src/static/templates/expend_standard.html b/src/static/templates/expend_standard.html new file mode 100644 index 0000000..9bb461c --- /dev/null +++ b/src/static/templates/expend_standard.html @@ -0,0 +1,78 @@ +<div class="split_form" id="expend_standard" ng-click="hide()"> + <div class="main travel_expense" style="padding-left:280px;padding-right:0px;"> + <div class="expense_strd_content"> + <button ng-show="permission_check('new_standard')" class="btn btn-success btn-favourite btn-action col-md-offset-8" ng-click="create_expense_strd_table();" id="new_standard">新建</button> + <button + class="btn btn-success btn-favourite btn-action" + ng-click="saveExpense();" + id="save_standard" + ng-show="permission_check('save_standard')" + > + 保存报销标准 + </button> + <div + ng-if="get_all_data" + expense-table + ng-repeat="data in allexpensedata track by $index" + allexpensedata="allexpensedata" + expensedata="allexpensedata[$index]" + tabletitlescfg="tabletitlescfgs[$index]" + tabletitlescfgs="tabletitlescfgs" + sstype="sstypes[$index]" + ssname="ssnames[$index]" + ssrules="ssrules" + sstypename="sstypename[$index]" + ssnamename="ssnamename[$index]" + sstypename="sstypename" + ssnamename="ssnamename" + sstypes="sstypes" + ssnames="ssnames" + index="$index" + > + </div> + + + + </div> + </div> + <div class="left" style="width:280px;"> + <div class="left-expense-title"> + <div class="containr_header"> + <span ng-click="title_type = true" ng-class="{'type_strand':title_type}">补助标准内容</span> + <span ng-click="title_type = false" ng-class="{'type_strand':!title_type}">系统变量</span> + </div> + <div ng-show="title_type" class="expense_titles" > + </div> + <div ng-show="!title_type" class="system_titles"> + </div> + </div> + </div> +</div> + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/static/templates/expense_standard_table.html b/src/static/templates/expense_standard_table.html new file mode 100644 index 0000000..7388b5d --- /dev/null +++ b/src/static/templates/expense_standard_table.html @@ -0,0 +1,177 @@ +<div class="expense_standard"> + <div class="table-content"> + <div class="row second"> + <div class="col-md-3 filter"> + <img src="./static/img/u6181.png" class="expense_standard_filter"> + <label> + 费用类型: + </label> + <span class="selectclass"> + <select + class="myselect" + ng-model="sstype" + ng-options="type.code as type.value for type in ssTypeOptions" > + </select/> + </span> + <!--<div class="select3-element selectclass"> + <div class="select-container typeclass type" ng-click="showtype($event)"> + {{sstypename}} + <div class="suffix"> + <i class="fa fa-caret-down" aria-hidden="true"></i> + </div> + </div> + <ul + class="showtype" + ng-click="showclass = !showclass" + ng-show ="showclass" + > + <li ng-repeat="type in ssTypeOptions" ng-click="selecttype($index)" ng-model="sstypetype.mdCode">{{type.mdName}}</li> + </ul> + </div>--> + <!--<span select4 datamodel="sstypes" options="ssTypeOptions" style=style class="selectclass"> + <select + ng-options="type.mdCode as type.mdName for type in ssTypeOptions" + ng-model="sstypename" + value="sstypename" + > + </select> + </span>--> + </div> + <div class="col-md-6 filter"> + <img src="./static/img/u6181.png" class="expense_standard_filter"> + <label> + 报销方式: + </label> + <span class="selectclass"> + <select + class="myselect" + ng-model="ssname" + ng-options="name.cdCode as name.cdValue for name in ssNameOptions" > + </select> + </span> + <input class="expense_standard_radio" ng-model="ssSubType" ng-disabled="ssname!=222" type="checkbox"/> + <span>票据必须</span> + <span class="selectclass" ng-show="ssname == 222"> + <select + class="myselect" + ng-model="ssRule" + ng-options="name.val as name.name for name in ssRuleOps" > + </select> + </span> + <!--<div class="select3-element selectclass"> + <div class="select-container typeclass name" ng-click="showname = !showname;$event.stopPropagation()"> + {{ssnamename}} + <div class="suffix"> + <i class="fa fa-caret-down" aria-hidden="true"></i> + </div> + </div> + <ul + class="showtype" + ng-click="showname = !showname" + ng-show="showname" + > + <li ng-repeat="name in ssNameOptions" ng-click="selectname($index)" ng-model="name.cdCode">{{name.cdValue}}</li> + </ul> + </div>--> + <!--<span select4 datamodel="ssnames" options="ssNameOptions" style=style class="selectclass"> + <select + ng-options="name.cdCode as name.cdValue for name in ssNameOptions" + ng-model="ssnamename" + value="ssnamename" + > + </select> + </span>--> + </div> + <div class="col-md-3 filter"> + <button ng-show="$parent.permission_check('copy_standard')" class="btn btn-success btn-favourite btnbtn" ng-click="duplicate_expense_strd_table();" id="copy_standard">复制</button> + <button ng-show="$parent.permission_check('delete_standard')" class="btn btn-success btn-favourite btnbtn" ng-click="rm_expense_strd_table();" id="delete_standard">删除</button> + <button class="btn btn-success btn-favourite btn-action" ng-show="hide" ng-click="hide = !hide" id="open_standard">展开</button> + <button class="btn btn-success btn-favourite btn-action" ng-show="!hide" ng-click="hide = !hide" id="close_standard">收回</button> + </div> + </div> + <table class="table table_travel_expense" ng-show="!hide"> + <thead> + <th colspan="{{expenseConditionsTitles.length}}"> + 补助条件 + <a ng-href="javascript:void(0);" ng-click="addConditions();"> + <!--<i class="fa fa-plus-square-o" aria-hidden="true"></i>--> + <img src="./static/img/addelement.png" alt="addelement" class="deleteelment" /> + </a> + </th> + <th colspan="{{expenseCtriteraTitles.length}}"> + 补助标准 + <a ng-href="javascript:void(0);" ng-click="addCritera();"> + <!--<i class="fa fa-plus-square-o" aria-hidden="true"></i>--> + <img src="./static/img/addelement.png" alt="addelement" class="deleteelment" /> + </a> + </th> + <th colspan="{{budgetColspan(expenseBudgetTitles) || expenseBudgetTitles.length}}"> + <!--补助金额--> + {{sstypename}}&{{ssnamename}} + <!--<a ng-href="javascript:void(0);" ng-click="addBudget();">--> + <!--<i class="fa fa-plus-square-o" aria-hidden="true"></i>--> + <!--<img src="./static/img/addelement.png" alt="addelement" class="deleteelment" />--> + <!--</a>--> + </th> + </thead> + <tbody> + <tr> + <td ng-repeat="title in expenseConditionsTitles track by $index" class="expenseTitle" rowspan="2" group="condition" index="{{$index}}" tableindex="{{index}}"> + + {{title.mdName?title.mdName:"请拖拽补助标准内容到这里"}} + <a class="rm-title" ng-href="javascript:void(0);" ng-click="rmTitle(title,$index,1);"> + <!--<i class="fa fa-minus-square-o" aria-hidden="true"></i>--> + <img src="./static/img/deleteelement.png" class="deleteelment" /> + </a> + <br /> + <a class="relation-title" ng-href="javascript:void(0);" ng-click="togle_relation(title,$index,1);" ng-if="$index != (expenseConditionsTitles.length-1)"> + 或者 + <i ng-if="title.asRelation == 1" class="fa fa-toggle-on" aria-hidden="true"></i> + <i ng-if="title.asRelation != undefined && title.asRelation == 0" class="fa fa-toggle-off" aria-hidden="true"></i> + 并且 + </a> + + </td> + <td ng-repeat="title in expenseCtriteraTitles track by $index" class="expenseTitle" rowspan="2" group="criteria" index="{{$index}}" tableindex="{{index}}"> + {{title.mdName?title.mdName:"请拖拽补助标准内容到这里"}} + <a class="rm-title" ng-href="javascript:void(0);" ng-click="rmTitle(title,$index,2);"> + <!--<i class="fa fa-minus-square-o" aria-hidden="true"></i>--> + <img src="./static/img/deleteelement.png" class="deleteelment" /> + </a> + <br /> + <a class="relation-title" ng-href="javascript:void(0);" ng-click="togle_relation(title,$index,2);" ng-if="$index != (expenseCtriteraTitles.length-1)"> + 或者 + <i ng-if="title.asRelation == 1" class="fa fa-toggle-on" aria-hidden="true"></i> + <i ng-if="title.asRelation != undefined && title.asRelation == 0" class="fa fa-toggle-off" aria-hidden="true"></i> + 并且 + </a> + </td> + <td ng-repeat="title in expenseBudgetTitles track by $index" class="expenseTitle" group="expense" index="{{$index}}" tableindex="{{index}}" colspan="{{title.child.length || 1}}"> + {{title.mdName?title.mdName:sstypename}} + <a class="rm-title" ng-href="javascript:void(0);" ng-click="rmTitle(title,$index,3);"> + <!--<i class="fa fa-minus-square-o" aria-hidden="true"></i>--> + <img src="./static/img/deleteelement.png" class="deleteelment" /> + </a> + </td> + </tr> + <tr> + <td ng-repeat="subTitle in budgetSubTitles"> + {{subTitle.value}} + <!-- + <a class="rm-title" ng-href="javascript:void(0);" ng-click="rmTitle(title);"> + <i class="fa fa-minus-square-o" aria-hidden="true"></i> + <img src="./static/img/deleteelement.png" class="deleteelment" /> + </a> + --> + </td> + </tr> + <tr expense-standard-row ng-repeat="data in expensedata track by $index" tabletitlescfg="tabletitlescfg" expenserowdata="data" expensedata="expensedata"> + </tr> + </tbody> + </table> + <div style="margin-bottom: 10px;text-align: left;"> + <button class="btn btn-success btn-favourite addbtn" ng-click="addRow();" ng-show="$parent.permission_check('delete_standard')&&!hide" id="add_standard_data">+ 添加数据</button> + </div> + </div> +</div> +</div> \ No newline at end of file diff --git a/src/static/templates/form_item.html b/src/static/templates/form_item.html new file mode 100644 index 0000000..6d1b8a9 --- /dev/null +++ b/src/static/templates/form_item.html @@ -0,0 +1,90 @@ +<div class=" {{item.gcCpnType == 10 ? 'col-md-12':' col-md-6 column_cfg'}}" ng-repeat="item in form_items"> + <div ng-if="item.gcCpnType === 1" class="text"> + <span> + <input type="text" > + </span> + <label> + {{item.gcCpnAlias}} + </label> + </div> + <div ng-if="item.gcCpnType === 2" class="textarea"> + <span> + <textarea> + + </textarea> + </span> + <label> + {{item.gcCpnAlias}} + </label> + </div> + <div ng-if="item.gcCpnType === 3" class="checkbox"> + <span> + <input type="checkbox" > + <br> + <input type="checkbox" > + <br> + <input type="checkbox" > + </span> + <label> + {{item.gcCpnAlias}} + </label> + </div> + <div ng-if="item.gcCpnType === 4" class="radio"> + <span> + <div ng-repeat="option in item.gcOptList"> + <input type="radio" value="0" name="{{item.gcCpnAlias}}"> + <label>{{value}}</label> + </div> + </span> + <label> + {{item.gcCpnAlias}} + </label> + </div> + <div ng-if="item.gcCpnType === 5" class="text"> + <span> + <input type="text" > + </span> + <label> + {{item.gcCpnAlias}} + </label> + </div> + <div ng-if="item.gcCpnType === 6" class="select"> + <span> + <select> + </select> + </span> + <label> + {{item.gcCpnAlias}} + </label> + </div> + <div ng-if="item.gcCpnType === 7" class="text"> + <span> + <input type="text" > + </span> + <label> + {{item.gcCpnAlias}} + </label> + </div> + <div ng-if="item.gcCpnType === 8" class="textarea"> + <span> + <textarea> + </textarea> + </span> + <label> + {{item.gcCpnAlias}} + </label> + </div> + <div ng-if="item.gcCpnType === 9" class="hr"> + <span> + <hr> + </span> + <label> + {{item.gcCpnAlias}} + </label> + </div> + <div ng-if="item.gcCpnType === 10" class="sub_form"> + <div class="sub_form_container"> + {{item.child}} + </div> + </div> +</div> \ No newline at end of file diff --git a/src/static/templates/forms_center.html b/src/static/templates/forms_center.html new file mode 100644 index 0000000..23861ac --- /dev/null +++ b/src/static/templates/forms_center.html @@ -0,0 +1,135 @@ +<title>表单管理</title> +<div class="split_form"> + <div class="main travel_expense" style="padding-left:230px;padding-right:0px;"> + <div class="form_container"> + </div> + </div> + + <div class="left" style="width:230px;"> + <ul class="ul-tree "> + <li class="search"> + <a ng-href="javascript:void(0);" > + <input type="text"> + <span class="query_icon"><i class="fa fa-search" aria-hidden="true"></i></span> + </a> + </li> + <li class="forms_list"> + <img src="./static/img/create_form.png" class="small" > + <a + ng-href="javascript:void(0);" + ng-click="frm1=!frm1" + > + 预算单 + </a> + <ul ng-if="frm1"> + <li> + <img src="./static/img/doc.png" > + <a + g-href="javascript:void(0);" + ng-click="show_saved_form();" + > + 学校的预算单 + </a> + </li> + <li> + <img src="./static/img/doc.png" > + <a + g-href="javascript:void(0);" + ng-click="show_saved_form();" + > + 培训机构的预算单 + </a> + </li> + </ul> + </li> + <li class="forms_list"> + <img src="./static/img/form_created.png" > + <a + ng-class="{'active': type==2}" + ng-href="javascript:void(0);" + ng-click="frm2=!frm2" + > + 申请单 + </a> + <ul ng-if="frm2"> + <li> + <img src="./static/img/doc.png" > + <a + g-href="javascript:void(0);" + ng-click="show_saved_form();" + > + 学校的申请单 + </a> + </li> + <li> + <img src="./static/img/doc.png" > + <a + g-href="javascript:void(0);" + ng-click="show_saved_form();" + > + 培训机构的申请单 + </a> + </li> + </ul> + </li> + <li class="forms_list"> + <img src="./static/img/form_default.png" > + <a + ng-class="{'active': type==3}" + ng-href="javascript:void(0);" + ng-click="frm3=!frm3" + > + 报销单 + </a> + <ul ng-if="frm3"> + <li> + <img src="./static/img/doc.png" > + <a + g-href="javascript:void(0);" + ng-click="show_saved_form();" + > + 学校的报销单 + </a> + </li> + <li> + <img src="./static/img/doc.png" > + <a + g-href="javascript:void(0);" + ng-click="show_saved_form();" + > + 培训机构的报销单 + </a> + </li> + </ul> + </li> + </ul> + </div> +</div> + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/static/templates/frm_elem_attrs_editor.html b/src/static/templates/frm_elem_attrs_editor.html new file mode 100644 index 0000000..b0a6a3d --- /dev/null +++ b/src/static/templates/frm_elem_attrs_editor.html @@ -0,0 +1,1018 @@ +<div class="frm_el_attr_editor"> + <div ng-if="data.gcCpnType===1 || data.gcCpnType===2"> + <div> + <label>标题</label> + <hr> + <input type="text" ng-model="data.gcCpnName" readonly/> + <button class="btn-el-attr-bind" ng-click="showMasDataEleList();">主数据定义选择</button> + </div> + <div> + <label>别名</label> + <hr> + <input value="无标题" type="text" ng-model="data.gcCpnAlias" /> + </div> + <div> + <label>描述信息</label> + <hr> + <textarea ng-model="data.gcCpnDisc" name="desc_txt"></textarea> + </div> + <div> + <label>操作权限</label> + <hr> + <div> + <div class="el_container"> + <span class="element"> + <input type="checkbox" id="visible" ng-model="data.gcShowFlag" ng-true-value="1" ng-false-value="0" ng-checked="data.gcShowFlag == 1"> + <label class="label" for="visible">可见</label> + </span> + + </div> + <div class="el_container"> + <span class="element"> + <input type="checkbox" id="editable" ng-model="data.gcEditFlag" ng-true-value="1" ng-false-value="0" ng-checked="data.gcEditFlag == 1"> + <label class="label" for="editable">可编辑</label> + </span> + </div> + </div> + </div> + <!--<div> + <label>格式</label> + <hr> + <select ng-model="data.gcCpnFormat"> + <option ng-value="0" selected="selected"> + 无 + </option> + <option ng-value="11"> + 手机号码 + </option> + <option ng-value="12"> + 电话号码 + </option> + <option ng-value="13"> + 邮编号码 + </option> + <option ng-value="14"> + 身份证号码 + </option> + <option ng-value="15"> + 邮箱 + </option> + </select> + </div>--> + <div> + <label>默认值</label> + <hr> + <div> + <input type="text" placeholder="请输入默认值" ng-model="data.gcDefVal"> + </div> + </div> + <div> + <label>校验</label> + <hr> + <div> + <div class="el_container"> + <span class="element"> + <input type="checkbox" id="required" ng-model="data.gcInputMust" ng-true-value="1" ng-false-value="0" ng-click="manadatory_ifd_check($event);"> + </span> + <label class="label" for="required">输入必填</label> + </div> + <div class="el_container"> + <span class="element"> + <input type="checkbox" id="required" ng-model="data.gcMustCpn" ng-true-value="1" ng-false-value="0" ng-click="process_ifd_check($event);"> + </span> + <label class="label" for="required">流程必填</label> + </div> + <!--<div class="el_container"> + <span class="element"> + <input type="checkbox"> + </span> + <label class="label">不允许重复</label> + </div>--> + </div> + </div> + + <div> + <label>系统变量</label> + <hr> + <select ng-model="data.gcMathId"> + <option ng-value="0">无</option> + <option ng-repeat="options in type_eill track by $index" ng-value="{{options.id}}"> + {{options.name}} + </option> + </select> + </div> + + <div> + <label>显示长度</label> + <hr> + <select ng-model="data.gcCpnInCol"> + <option ng-value="1"> + 1/2 + </option> + <option ng-value="3"> + 1/4 + </option> + <option ng-value="4"> + 1/6 + </option> + <option ng-value="2"> + 全部 + </option> + </select> + </div> + <div> + <label>长度限制</label> + <hr> + <div> + <!--<input type="text" placeholder="" ng-model="data.gcElLeng">--> + <input ng-change="check_length()" ng-model="data.gcElLeng"> + <p class="length_err">{{data.length_err}}</p> + </div> + </div> + <div> + <label>自定义校验</label> + <hr> + <button class="btn-el-attr-bind" ng-click="add_customize_validation();">校验规则</button> + </div> + <div> + <label>自定义公式</label> + <hr> + <button class="btn-el-attr-bind" ng-click="add_formula();">公式编辑</button> + </div> + </div> + <div ng-if="data.gcCpnType===3 || data.gcCpnType===4"> + <div> + <label>标题</label> + <hr> + <input type="text" ng-model="data.gcCpnName" readonly/> + <button class="btn-el-attr-bind" ng-click="showMasDataEleList();">主数据定义选择</button> + </div> + <div> + <label>别名</label> + <hr> + <input value="无标题" type="text" ng-model="data.gcCpnAlias" /> + </div> + <div> + <label>描述信息</label> + <hr> + <textarea ng-model="data.gcCpnDisc"></textarea> + </div> + + <div> + <label>操作权限</label> + <hr> + <div> + <div class="el_container"> + <span class="element"> + <input type="checkbox" id="visible" ng-model="data.gcShowFlag" ng-true-value="1" ng-false-value="0" checked="checked"> + <label class="label" for="visible">可见</label> + </span> + </div> + <div class="el_container"> + <span class="element"> + <input type="checkbox" id="editable" ng-model="data.gcEditFlag" ng-true-value="1" ng-false-value="0" checked="checked"> + </span> + <label class="label" for="editable">可编辑</label> + </div> + </div> + </div> + <div> + <label>校验</label> + <hr> + <div> + <div class="el_container"> + <span class="element"> + <input type="checkbox" id="required" ng-model="data.gcInputMust" ng-true-value="1" ng-false-value="0" ng-click="manadatory_ifd_check($event);"> + </span> + <label class="label" for="required">输入必填</label> + </div> + <div class="el_container"> + <span class="element"> + <input type="checkbox" id="required" ng-model="data.gcMustCpn" ng-true-value="1" ng-false-value="0" ng-click="process_ifd_check($event);"> + </span> + <label class="label" for="required">流程必填</label> + </div> + </div> + </div> + <!--<div> + <label>选项</label> + <hr> + <div> + <div class="el_container" ng-repeat="option in data.gcOptList"> + <div class="third_column one_column"> + <label><input type="checkbox" ng-model="option.selected"></label> + </div> + <div class="third_column third_column_full"> + <span><input type="text" ng-model="option.value" /></span> + </div> + <div class="third_column two_column"> + <div class="frm_item_icons"> + <div class="frm_item_icon remove"><a ng-ref="" ng-click="remove_select_option(option)"><i class="fa fa-minus-circle"></i></a></div> + <div class="frm_item_icon duplicate"><a ng-ref="" ng-click="add_select_option()"><i class="fa fa-plus-circle"></i></a></div> + </div> + </div> + </div> + </div> + </div>--> + <div> + <label>显示长度</label> + <hr> + <select ng-model="data.gcCpnInCol"> + <option ng-value="1"> + 1/2 + </option> + <option ng-value="3"> + 1/4 + </option> + <option ng-value="4"> + 1/6 + </option> + <option ng-value="2"> + 全部 + </option> + </select> + </div> + <div> + <label>自定义校验</label> + <hr> + <button class="btn-el-attr-bind" ng-click="add_customize_validation();">校验规则</button> + </div> + </div> + <div ng-if="data.gcCpnType===5"> + <div> + <label>标题</label> + <hr> + <input type="text" ng-model="data.gcCpnName" readonly/> + <button class="btn-el-attr-bind" ng-click="showMasDataEleList();">主数据定义选择</button> + </div> + <div> + <label>别名</label> + <hr> + <input value="无标题" type="text" ng-model="data.gcCpnAlias" /> + </div> + <div> + <label>描述信息</label> + <hr> + <textarea ng-model="data.gcCpnDisc"></textarea> + </div> + + <div> + <label>系统变量</label> + <hr> + <select ng-model="data.gcMathId"> + <option ng-value="0">无</option> + <option ng-repeat="options in type_eill track by $index" ng-value="{{options.id}}"> + {{options.name}} + </option> + </select> + </div> + + <div> + <label>操作权限</label> + <hr> + <div> + <div class="el_container"> + <span class="element"> + <input type="checkbox" id="visible" ng-model="data.gcShowFlag" ng-true-value="1" ng-false-value="0" checked="checked"> + <label class="label" for="visible" >可见</label> + </span> + </div> + <div class="el_container"> + <span class="element"> + <input type="checkbox" id="editable" ng-model="data.gcEditFlag" ng-true-value="1" ng-false-value="0" checked="checked"> + <label class="label" for="editable">可编辑</label> + </span> + </div> + </div> + </div> + <div> + <label>日期类型</label> + <hr> + <select ng-model="data.gcCpnFormat"> + <option ng-value="30" selected="selected"> + 日期 + </option> + <option ng-value="31"> + 日期和时间 + </option> + </select> + </div> + + <div> + <label>默认值</label> + <hr> + <!--<div>--> + <!--<input type="text" placeholder="请输入默认值" ng-model="data.gcDefVal">--> + <select ng-model="data.gcDefVal"> + <option ng-value="'1'" selected="selected">无</option> + <option ng-value="'10'">当前日期</option> + </select> + <!--</div>--> + </div> + <!--<div> + <label>系统变量</label> + <hr> + <select ng-model="data.gcCpnFormat" > + <option ng-value="30" selected="selected"> + 日期 + </option> + <option ng-value="31"> + 日期和时间 + </option> + </select> + </div> + <div> + <label>默认值</label> + <hr> + <div> + <div class="el_container"> + <span class="element"> + <input type="checkbox"> + </span> + <label class="label">是否默认当天</label> + </div> + </div> + </div>--> + <div> + <label>校验</label> + <hr> + <div> + <div class="el_container"> + <span class="element"> + <input type="checkbox" id="required" ng-true-value="1" ng-false-value="0" ng-model="data.gcInputMust" ng-click="manadatory_ifd_check($event);"> + </span> + <label class="label" for="required">输入必填</label> + </div> + <div class="el_container"> + <span class="element"> + <input type="checkbox" id="required" ng-model="data.gcMustCpn" ng-true-value="1" ng-false-value="0" ng-click="process_ifd_check($event);"> + </span> + <label class="label" for="required">流程必填</label> + </div> + </div> + </div> + <div> + <label>显示长度</label> + <hr> + <select ng-model="data.gcCpnInCol"> + <option ng-value="1"> + 1/2 + </option> + <option ng-value="3"> + 1/4 + </option> + <option ng-value="4"> + 1/6 + </option> + <option ng-value="2"> + 全部 + </option> + </select> + <!--<div class="select3-element"> + <div class="select-container"> + <div class="suffix"> + <i class="fa fa-caret-down" aria-hidden="true"></i> + </div> + </div> + <div drop-down-selector filterlist="searchlist" class="drop_down_sel" > + <ul> + <li class="sel_query">1</li> + </ul> + </div> + </div>--> + </div> + <div> + <label>自定义校验</label> + <hr> + <button class="btn-el-attr-bind" ng-click="add_customize_validation();">校验规则</button> + </div> + </div> + + <div ng-if="data.gcCpnType===6"> + <div> + <label>标题</label> + <hr> + <input type="text" ng-model="data.gcCpnName" readonly/> + <button class="btn-el-attr-bind" ng-click="showMasDataEleList();">主数据定义选择</button> + </div> + <div> + <label>别名</label> + <hr> + <input value="无标题" type="text" ng-model="data.gcCpnAlias" /> + </div> + <div> + <label>描述信息</label> + <hr> + <textarea ng-model="data.gcCpnDisc"></textarea> + </div> + <div> + <label>下拉类别</label> + <hr> + <div> + <div class="el_container"> + <span class="element"> + <input type="radio" id="radio" ng-value="0" ng-true-value="1" ng-false-value="0" name="select_type" ng-model="data.gcCpnMultiple"> + </span> + <label class="label" for="radio">单选</label> + </div> + <div class="el_container"> + <span class="element"> + <input type="radio" id="multiselect" ng-value="1" ng-true-value="1" ng-false-value="0" name="select_type" ng-model="data.gcCpnMultiple"> + </span> + <label class="label" for="multiselect">多选</label> + </div> + </div> + </div> + + <div> + <label>系统变量</label> + <hr> + <select ng-model="data.gcMathId"> + <option ng-value="0">无</option> + <option ng-repeat="options in type_eill track by $index" ng-value="{{options.id}}"> + {{options.name}} + </option> + </select> + </div> + + <div> + <label>操作权限</label> + <hr> + <div> + <div class="el_container"> + <span class="element"> + <input type="checkbox" id="visible" ng-model="data.gcShowFlag" ng-true-value="1" ng-false-value="0" checked="checked"> + <label class="label" for="visible">可见</label> + </span> + </div> + <div class="el_container"> + <span class="element"> + <input type="checkbox" id="editable" ng-model="data.gcEditFlag" ng-true-value="1" ng-false-value="0" checked="checked"> + </span> + <label class="label" for="editable">可编辑</label> + </div> + </div> + </div> + <div> + <label>默认值</label> + <hr> + <div> + <input type="text" placeholder="请输入默认值" ng-model="data.gcDefVal"> + </div> + </div> + <div> + <label>校验</label> + <hr> + <div> + <div class="el_container"> + <span class="element"> + <input type="checkbox" id="required" ng-model="data.gcInputMust" ng-true-value="1" ng-false-value="0" ng-click="manadatory_ifd_check($event);"> + </span> + <label class="label" for="required">输入必填</label> + </div> + <div class="el_container"> + <span class="element"> + <input type="checkbox" id="required" ng-model="data.gcMustCpn" ng-true-value="1" ng-false-value="0" ng-click="process_ifd_check($event);"> + </span> + <label class="label" for="required">流程必填</label> + </div> + </div> + </div> + <!--<div> + <label>选项</label> + <hr> + <div> + <div class="el_container" ng-repeat="option in data.gcOptList"> + <div class="third_column one_column"> + <label><input type="checkbox" ng-model="option.selected"></label> + </div> + <div class="third_column third_column_full"> + <span><input type="text" ng-model="option.value" /></span> + </div> + <div class="third_column two_column"> + <div class="frm_item_icons"> + <div class="frm_item_icon remove"><a ng-ref="" ng-click="remove_select_option(option)"><i class="fa fa-minus-circle"></i></a></div> + <div class="frm_item_icon duplicate"><a ng-ref="" ng-click="add_select_option()"><i class="fa fa-plus-circle"></i></a></div> + </div> + </div> + </div> + </div> + </div>--> + <div> + <label>显示长度</label> + <hr> + <select ng-model="data.gcCpnInCol"> + <option ng-value="1"> + 1/2 + </option> + <option ng-value="3"> + 1/4 + </option> + <option ng-value="4"> + 1/6 + </option> + <option ng-value="2"> + 全部 + </option> + </select> + </div> + + <div> + <label>自定义校验</label> + <hr> + <button class="btn-el-attr-bind" ng-click="add_customize_validation();">校验规则</button> + </div> + <div> + <label>自定义公式</label> + <hr> + <button class="btn-el-attr-bind" ng-click="add_formula();">公式编辑</button> + </div> + <div> + <label>控件隐藏关联</label> + <hr> + <button class="btn-el-attr-bind" ng-click="add_hide_formula();">关联公式编辑</button> + </div> + </div> + <div ng-if="data.gcCpnType===7"> + <div> + <label>标题</label> + <hr> + <input type="text" ng-model="data.gcCpnName" readonly/> + <button class="btn-el-attr-bind" ng-click="showMasDataEleList();">主数据定义选择</button> + </div> + <div> + <label>别名</label> + <hr> + <input value="无标题" type="text" ng-model="data.gcCpnAlias" /> + </div> + <div> + <label>描述信息</label> + <hr> + <textarea ng-model="data.gcCpnDisc"></textarea> + </div> + + <div> + <label>系统变量</label> + <hr> + <select ng-model="data.gcMathId"> + <option ng-value="0">无</option> + <option ng-repeat="options in type_eill track by $index" ng-value="{{options.id}}"> + {{options.name}} + </option> + </select> + </div> + + <div> + <label>操作权限</label> + <hr> + <div> + <div class="el_container"> + <span class="element"> + <input type="checkbox" id="visible" ng-model="data.gcShowFlag" ng-true-value="1" ng-false-value="0" checked="checked"> + <label class="label" for="visible" >可见</label> + </span> + </div> + <div class="el_container"> + <span class="element"> + <input type="checkbox" id="editable" ng-model="data.gcEditFlag" ng-true-value="1" ng-false-value="0" checked="checked"> + </span> + <label class="label" for="editable">可编辑</label> + </div> + </div> + </div> + <div> + <label>格式</label> + <hr> + <select ng-model="data.gcCpnFormat"> + <option ng-value="20"> + 整数 + </option> + <option ng-value="21"> + 允许小数 + </option> + <!--<option ng-value="22"> + 金额 + </option>--> + </select> + </div> + <div> + <label>小数位数</label> + <hr> + <div> + <input onkeyup="this.value=this.value.replace(/\D/g,'')" onblur="this.value=this.value.replace(/\D/g,'')" onafterpaste="this.value=this.value.replace(/\D/g,'')" ng-model="data.gcDmlLeng"> + </div> + </div> + <div> + <label>长度限制</label> + <hr> + <div> + <!--<input type="text" placeholder="" ng-model="data.gcElLeng">--> + <input ng-change="check_length()" ng-model="data.gcElLeng"> + <p class="length_err">{{data.length_err}}</p> + </div> + </div> + <div> + <label>默认值</label> + <hr> + <div> + <input type="text" placeholder="请输入默认值" ng-model="data.gcDefVal"> + </div> + </div> + <div> + <label>校验</label> + <hr> + <div> + <div class="el_container"> + <span class="element"> + <input type="checkbox" id="required" ng-model="data.gcInputMust" ng-true-value="1" ng-false-value="0" ng-click="manadatory_ifd_check($event);"> + </span> + <label class="label" for="required">输入必填</label> + <div class="el_container"> + <span class="element"> + <input type="checkbox" id="required" ng-model="data.gcMustCpn" ng-true-value="1" ng-false-value="0" ng-click="process_ifd_check($event);"> + </span> + <label class="label" for="required">流程必填</label> + </div> + </div> + + </div> + </div> + <div> + <label>显示长度</label> + <hr> + <select ng-model="data.gcCpnInCol"> + <option ng-value="1"> + 1/2 + </option> + <option ng-value="3"> + 1/4 + </option> + <option ng-value="4"> + 1/6 + </option> + <option ng-value="2"> + 全部 + </option> + </select> + </div> + <div> + <label>自定义校验</label> + <hr> + <button class="btn-el-attr-bind" ng-click="add_customize_validation();">校验规则</button> + </div> + <div> + <label>自定义公式</label> + <hr> + <button class="btn-el-attr-bind" ng-click="add_formula();">公式编辑</button> + </div> + </div> + + <div ng-if="data.gcCpnType===8"> + <div> + <label>标题</label> + <hr> + <input type="text" ng-model="data.gcCpnName" readonly/> + <button class="btn-el-attr-bind" ng-click="showMasDataEleList();">主数据定义选择</button> + </div> + <div> + <label>别名</label> + <hr> + <input value="无标题" type="text" ng-model="data.gcCpnAlias" /> + </div> + <div> + <label>描述信息</label> + <hr> + <textarea ng-model="data.gcCpnDisc"></textarea> + </div> + <div> + <label>操作权限</label> + <hr> + <div> + <div class="el_container"> + <span class="element"> + <input type="checkbox" id="visible" ng-model="data.gcShowFlag" ng-true-value="1" ng-false-value="0" checked="checked"> + <label class="label" for="visible">可见</label> + </span> + </div> + <div class="el_container"> + <span class="element"> + <input type="checkbox" id="editable" ng-model="data.gcEditFlag" ng-true-value="1" ng-false-value="0" checked="checked"> + </span> + <label class="label" for="editable">可编辑</label> + </div> + </div> + </div> + <div> + <label>校验</label> + <hr> + <div> + <div class="el_container"> + <span class="element"> + <input type="checkbox" id="required" ng-model="data.gcInputMust" ng-true-value="1" ng-false-value="0" ng-click="manadatory_ifd_check($event);"> + </span> + <label class="label" for="required">输入必填</label> + <div class="el_container"> + <span class="element"> + <input type="checkbox" id="required" ng-model="data.gcMustCpn" ng-true-value="1" ng-false-value="0" ng-click="process_ifd_check($event);"> + </span> + <label class="label" for="required">流程必填</label> + </div> + </div> + </div> + </div> + <div> + <label>显示长度</label> + <hr> + <select ng-model="data.gcCpnInCol"> + <option ng-value="1"> + 1/2 + </option> + <option ng-value="3"> + 1/4 + </option> + <option ng-value="4"> + 1/6 + </option> + <option ng-value="2"> + 全部 + </option> + </select> + </div> + </div> + <div ng-if="data.gcCpnType===9"> + <div> + <label>别名</label> + <hr> + <input value="无标题" type="text" ng-model="data.gcCpnAlias" /> + </div> + <div> + <label>描述信息</label> + <hr> + <textarea ng-model="data.gcCpnDisc"></textarea> + </div> + <div> + <label>显示长度</label> + <hr> + <select ng-model="data.gcCpnInCol"> + <option ng-value="2"> + 全部 + </option> + </select> + </div> + </div> + <!--子表单默认显示长度为全部,select默认选1--> + <div ng-if="data.gcCpnType===10"> + <div> + <label>别名</label> + <hr> + <input value="无标题" type="text" ng-model="data.gcCpnAlias" /> + </div> + <div> + <label>描述信息</label> + <hr> + <textarea ng-model="data.gcCpnDisc"></textarea> + </div> + <div> + <label>显示长度</label> + <hr> + <select ng-model="data.gcCpnInCol"> + + <option ng-value="2" selected="selected"> + 全部 + </option> + </select> + </div> + <!--<div> + <label>显示格式</label> + <hr> + <select ng-model="data.gcCpnFormat" > + <option ng-value="10" selected="selected"> + 平铺 + </option> + <option ng-value="20"> + 列表 + </option> + </select> + </div>--> + </div> + <div ng-if="data.gcCpnType===17"> + <div> + <label>别名</label> + <hr> + <input value="无标题" type="text" ng-model="data.gcCpnAlias" /> + </div> + <div> + <label>描述信息</label> + <hr> + <textarea ng-model="data.gcCpnDisc"></textarea> + </div> + <div> + <label>显示长度</label> + <hr> + <select ng-model="data.gcCpnInCol"> + + <option ng-value="2" selected="selected"> + 全部 + </option> + </select> + </div> + <!--<div> + <label>显示格式</label> + <hr> + <select ng-model="data.gcCpnFormat" > + <option ng-value="10" selected="selected"> + 平铺 + </option> + <option ng-value="20"> + 列表 + </option> + </select> + </div>--> + </div> + <!--选择城市 控件属性--> + <div ng-if="data.gcCpnType===11"> + <div> + <label>标题</label> + <hr> + <input type="text" ng-model="data.gcCpnName" readonly/> + <button class="btn-el-attr-bind" ng-click="showMasDataEleList();">主数据定义选择</button> + </div> + <div> + <label>别名</label> + <hr> + <input value="无标题" type="text" ng-model="data.gcCpnAlias" /> + </div> + <div> + <label>描述信息</label> + <hr> + <textarea ng-model="data.gcCpnDisc"></textarea> + </div> + <div> + <label>显示长度</label> + <hr> + <select ng-model="data.gcCpnInCol"> + <option ng-value="1"> + 1/2 + </option> + <option ng-value="3"> + 1/4 + </option> + <option ng-value="4"> + 1/6 + </option> + <option ng-value="2"> + 全部 + </option> + </select> + </div> + </div> + <!--选择人员 控件属性--> + <div ng-if="data.gcCpnType===12||data.gcCpnType===0 || data.gcCpnType===14 || data.gcCpnType===16"> + <div> + <label>标题</label> + <hr> + <input type="text" ng-model="data.gcCpnName" readonly/> + <button class="btn-el-attr-bind" ng-click="showMasDataEleList();">主数据定义选择</button> + </div> + <div> + <label>别名</label> + <hr> + <input value="无标题" type="text" ng-model="data.gcCpnAlias" /> + </div> + <div> + <label>描述信息</label> + <hr> + <textarea ng-model="data.gcCpnDisc"></textarea> + </div> + <div ng-if="!(data.gcCpnType == 12 && data.parent_type != 0)"> + <label>系统变量</label> + <hr> + <select ng-model="data.gcMathId"> + <option ng-value="0">无</option> + <option ng-repeat="options in type_eill track by $index" ng-value="{{options.id}}"> + {{options.name}} + </option> + </select> + </div> + <div> + <label>校验</label> + <hr> + <div> + <div class="el_container"> + <span class="element"> + <input type="checkbox" id="required" ng-model="data.gcInputMust" ng-true-value="1" ng-false-value="0" ng-click="manadatory_ifd_check($event);"> + </span> + <label class="label" for="required">输入必填</label> + </div> + <div class="el_container"> + <span class="element"> + <input type="checkbox" id="required" ng-model="data.gcMustCpn" ng-true-value="1" ng-false-value="0" ng-click="process_ifd_check($event);"> + </span> + <label class="label" for="required">流程必填</label> + </div> + <!--<div class="el_container"> + <span class="element"> + <input type="checkbox"> + </span> + <label class="label">不允许重复</label> + </div>--> + </div> + </div> + <div> + <label>显示长度</label> + <hr> + <select ng-model="data.gcCpnInCol"> + <option ng-value="2"> + 全部 + </option> + </select> + </div> + <div> + <label>自定义公式</label> + <hr> + <button class="btn-el-attr-bind" ng-click="add_formula();">公式编辑</button> + </div> + </div> + <!--选择组织机构 控件属性--> + <div ng-if="data.gcCpnType===13"> + <div> + <label>标题</label> + <hr> + <input type="text" ng-model="data.gcCpnName" readonly/> + <button class="btn-el-attr-bind" ng-click="showMasDataEleList();">主数据定义选择</button> + </div> + <div> + <label>别名</label> + <hr> + <input value="无标题" type="text" ng-model="data.gcCpnAlias" /> + </div> + <div> + <label>描述信息</label> + <hr> + <textarea ng-model="data.gcCpnDisc"></textarea> + </div> + <div> + <label>显示长度</label> + <hr> + <select ng-model="data.gcCpnInCol"> + <option ng-value="1"> + 1/2 + </option> + <option ng-value="3"> + 1/4 + </option> + <option ng-value="4"> + 1/6 + </option> + <option ng-value="2"> + 全部 + </option> + </select> + </div> + </div> + <!--标签--> + <div ng-if="data.gcCpnType===15"> + <div> + <label>标题</label> + <hr> + <input type="text" ng-model="data.gcCpnName" readonly/> + <button class="btn-el-attr-bind" ng-click="showMasDataEleList();">主数据定义选择</button> + </div> + <div> + <label>别名</label> + <hr> + <input value="无标题" type="text" ng-model="data.gcCpnAlias" /> + </div> + <div> + <label>描述信息</label> + <hr> + <textarea ng-model="data.gcCpnDisc"></textarea> + </div> + <div> + <label>显示长度</label> + <hr> + <select ng-model="data.gcCpnInCol"> + <option ng-value="1"> + 1/2 + </option> + <option ng-value="3"> + 1/4 + </option> + <option ng-value="4"> + 1/6 + </option> + <option ng-value="2"> + 全部 + </option> + </select> + </div> + <div> + <label>默认值</label> + <hr> + <div> + <input type="text" placeholder="请输入默认值" ng-model="data.gcDefVal"> + </div> + </div> + </div> + +</div> \ No newline at end of file diff --git a/src/static/templates/frm_elem_cloud_attr.html b/src/static/templates/frm_elem_cloud_attr.html new file mode 100644 index 0000000..140546f --- /dev/null +++ b/src/static/templates/frm_elem_cloud_attr.html @@ -0,0 +1,97 @@ +<div class="bg-modal "> + <div class="pop_panel cloud_attr" onMouseOver ="$(this).draggable();event.stopPropagation();" style="width:690px;height:auto;"> + <div class="cv_title">主数据定义选择 + <div class="close" ng-click="close();"> + <img src="./static/img/close.png" style="width:60%;margin-top:5px;"> + </div> + </div> + <div class="table-content"> + <table class="table table_travel_expense table_cloud_attr"> + <thead> + <tr> + <!--<td>所属模块:</td> + <td> + <select ng-model="masDataEleList_type" ng-options="type.type for type in masDataEleList_types"> + <!--<option>预算</option> + <option>申请</option> + <option>报销</option>--> + <!--</select> + </td>--> + <!--<td> + 主数据名称 + </td>--> + <td class="mdcode_search" colspan="4"> + <input type="text" placeholder="请输入主数据名称" class="table_search_input" ng-model="masDataEleList_keywords" ng-keydown="search_masDataEleList_keydown($event)" /> + <button class="btn btn-success btn-favourite btn-action" ng-click="search_masDataEleList()">搜索</button> + </td> + </tr> + <tr> + <th > + 主数据编码 + </th> + <th > + 主数据名称 + </th> + <th > + 主数据说明 + </th> + <th style="width:75px;"> + 选择 + </th> + </tr> + </thead> + <tbody> + <tr class="{{$index%2?'even':'odd'}}" ng-repeat="attr in attr_rows"> + + <td > + {{attr.masDataDefineCode}} + </td> + <td > + {{attr.masDataDefineName}} + </td> + <td > + {{attr.masDataDefineDesc}} + </td> + <td style="text-align: center;"> + <input class="btn btn-success btn-favourite btn-action" + type="button" + value="选择" + name="attr_code" + ng-click="get_cloud_attr(attr.masDataDefineCode);" + style="width:50px;" + > + </td> + </tr> + </tbody> + </table> + </div> + <div class="condition_search_footer"> + <label class="first"> + <span> + <select ng-model="pageSize" ng-change="changed_page_size()"> + <!--<option value="5" selected="selected">5条/页</option>--> + <option value="10" selected="selected">10条/页</option> + <option value="20"> 20条/页</option> + <option value="50">50条/页</option> + </select> + </span> + <span > + 共{{math_ceil(total/pageSize)}}页 + </span> + </label> + <label class="second"> + <span> + <a ng-href="javascript:void(0);" ng-click="pre_page();" href="javascript:void(0);"> + <i class="fa" aria-hidden="true">上一页</i> + </a> + </span> + <span> + <a ng-href="javascript:void(0);" ng-click="next_page();" href="javascript:void(0);"> + <i class="fa" aria-hidden="true">下一页</i> + </a> + </span> + <span class="ng-binding">第<input type="text" value="1" ng-model="pageNumber" ng-change="search_keydown(pageNumber)"> 页/ 共{{math_ceil(total/pageSize)}}页</span> + </label> + </div> + </div> +</div> \ No newline at end of file diff --git a/src/static/templates/guide.html b/src/static/templates/guide.html new file mode 100644 index 0000000..06b6e9e --- /dev/null +++ b/src/static/templates/guide.html @@ -0,0 +1,21 @@ +<title>长虹云帐坊-费用云</title> +<div class="welcome_guide"> + <div name="step1" class="steps"> + <div class="desc"> + <img src="./static/img/hero_guide.png" /> + <h1>长虹云帐坊-费用云</h1> + <h6>使用长虹费用云放飞你的双手</h6> + </div> + <div class="hero_content"> + <img src="./static/img/guide.png" /> + </div> + <p> + <button class="btn btn-success btn-favourite" ng-click="business_select_phase();" style="text-align: center;"> + 开始使用 + </button> + <!--<button class="btn btn-success btn-favourite" ng-click="registry_model();" style="text-align: center;"> + 登录入口 + </button>--> + </p> + </div> +</div> diff --git a/src/static/templates/iframe_test.html b/src/static/templates/iframe_test.html new file mode 100644 index 0000000..1f365e4 --- /dev/null +++ b/src/static/templates/iframe_test.html @@ -0,0 +1,39 @@ +<!DOCTYPE html> +<html> + <head> + <meta charset="UTF-8"> + <title></title> + <style type="text/css"> + body{ + background-color: white; + height: 2000px; + } + input{ + height: 20px; + } + button{ + height: 20px; + } + </style> + <script type="text/javascript"> +// document.domain = "";//填写顶级域名 用于解决同顶级域名的不同二级域名之间的调用 + function get_couldNumber(){//此方法用于向父页面传值(传订单编号) + return document.getElementById("myinput").value; + sessionStorage.setItem("orderCode","2222"); + } + function closes(){//此方法用于关闭iframe页面 同时调用父页面的方法传值 +// var a = document.getElementById("myinput").value; + var orderCode = document.getElementById("myinput").value; +// parent.window.getdata_iframe(orderCode);//此为调用父页面方法 orderCode为要传的值 + window.parent.postMessage(orderCode,"*"); + } + </script> + </head> + <body> + test + <div style="height: 1800px;width: 100%;"></div> + <input type="text" id="myinput" /> + <button onclick="closes()">close</button> + + </body> +</html> diff --git a/src/static/templates/messages_center.html b/src/static/templates/messages_center.html new file mode 100644 index 0000000..f17a732 --- /dev/null +++ b/src/static/templates/messages_center.html @@ -0,0 +1,98 @@ +<title>消息中心</title> +<style> +</style> +<style> +</style> +<div class="condition_search"> + <div class="condition_search_header"> + <label class="first">消息中心</label> + <label style="height: 30px;line-height: 30px;float: right;margin-right: 20px;"> + <span>消息状态:</span> + + + + <select ng-init="state_now = '20'" ng-model="state_now" ng-change="change_state(state_now);" > + <option value="" selected="selected">全部</option> + <option value="10"> 已处理</option> + <option value="20">未处理</option> + </select> + </label> + <label style="height: 30px;line-height: 30px;float: right;margin-right: 20px;"> + <span>租户ID:</span> + <select ng-model="tenant_name" ng-change="change_tenantState(tenant_name)"> + <!--ng-init=""--> + <!--ng-model="tenant.tenantName"--> + <!--ng-change="change_tenantState(tenant.tenantName)" ng-option="tenant.tenantName for tenant in tenants">--> + <option value="" selected="selected" >----请选择----</option> + <option ng-repeat="tenant in tenants" ng-value="{{tenant.gpUserId}}">{{tenant.tenantName}}</option> + <!--<option value="2"></option>--> + </select> + </label> + </div> +</div> +<!--table--> +<div class="table-content"> + <table class="table table_travel_expense"> + <thead> + <tr> + <!--<th ng-repeat="num in nums track by $index" class="ng-binding ng-scope">{{num}}</th>--> + <th class="ng-binding ng-scope">主数据名称</th> + <th class="ng-binding ng-scope">错误原因</th> + <th class="ng-binding ng-scope">创建时间</th> + <th class="ng-binding ng-scope">状态</th> + </tr> + </thead> + <tbody> + <tr ng-repeat="message in messages track by $index" class="{{($index % 2)?'odd':'even'}}" + +click-read> + <!--<td>{{message.eMdCode}}</td>--> + <td title="{{message.eMdName}}">{{message.eMdName}}</td> + <td title="{{message.eViewMsg}}">{{message.eViewMsg}}</td> + <td title="{{message.insT}}">{{message.insT}}</td> + <td ng-class="{statered:message.eState == '已读'}">{{message.eState}}</td> + <!--<td ng-class="{{message.eState == '已读'?'statered':'statedefault'}}"> + +{{message.eState}}</td>--> + <!--<td>{{message.eId}}</td>--> + <!--<td>{{message.eCouldNumber}}</td>--> + <!--<td>{{message.eBillName}}</td>--> + <!--<td>{{message.eUpTime}}</td>--> + </tr> + </tbody> + </table> +</div> + +<div style="background: #fff;border: 1px solid #ddd;padding-top: 1px;height: 29px;"> + <label style="font-weight: 400;float: left;padding-left: 4px;margin-bottom: 0;font-size: 12px;line-height: + +29px;display: inline-block;max-width: 100%;"> + <span style="cursor: pointer; margin: 0px 5px;font-size: 12px;"> + <select style="height: 22px;margin: 0;" ng-init="page.num_per_page='20'" ng-model="page.num_per_page" ng-change="change_page_num(page.num_per_page);"> + <!--<option value="" hidden></option>--> + <option value="20" selected="selected">20条/页</option> + <option value="50"> 50条/页</option> + <option value="100">100条/页</option> + </select> + </span> + <span ng-bind="'共'+total_page+'页'" style="cursor: pointer; margin: 0px 5px;font-size: + +12px;"> + </span> + </label> + <label style="font-weight: 400;float: right;padding-left: 4px;font-size: 12px;line-height: 29px;margin- + +bottom: 5px;display: inline-block;max-width: 100%;"> + <span style="cursor: pointer; margin: 0px 5px;font-size: 12px;"> + <a ng-href="javascript:void(0);" ng-click="pre_page();"> + <i class="fa" aria-hidden="true">上一页</i> + </a> + </span> + <span style="cursor: pointer; margin: 0px 5px;font-size: 12px;"> + <a ng-href="javascript:void(0);" ng-click="next_page();"> + <i class="fa" aria-hidden="true">下一页</i> + </a> + </span> + <span>第<input style="width: 25px;min-width: 25px;min-height: 20px!important;height: 20px !important;" value="1" ng-model="page.page_num" ng-change="change_page(page.page_num)"> 页/ 共<span ng-bind="total_page"></span>页</span> + </label> + </div> \ No newline at end of file diff --git a/src/static/templates/no_permission.html b/src/static/templates/no_permission.html new file mode 100644 index 0000000..253b157 --- /dev/null +++ b/src/static/templates/no_permission.html @@ -0,0 +1,3 @@ + <body> + 您没有权限 + </body> diff --git a/src/static/templates/pic.html b/src/static/templates/pic.html new file mode 100644 index 0000000..833bb89 --- /dev/null +++ b/src/static/templates/pic.html @@ -0,0 +1,74 @@ +<!DOCTYPE html> +<html> + <head> + <meta charset="UTF-8"> + <title></title> + <script src="../js/build/all.min.js" type="text/javascript" charset="utf-8"></script> + <script src="../vendors/jquery/dist/jquery.min.js" type="text/javascript" charset="utf-8"></script> + <link rel="stylesheet" type="text/css" href="../vendors/imageviewer/dist/viewer.css"/> + <style type="text/css"> + body{ + background-color: rgba(0,0,0,0.1); + } + p{ + width: 100%; + text-align: center; + } + #pic_detail{ + display: flex; + justify-content: flex-start; + width: 700px; + margin: auto; + padding-top: 100px; + padding-bottom: 100px; + flex-wrap: wrap; + background-color: white; + } + #pic_detail li{ + width: 30%; + list-style-type: none; + display: flex; + flex-direction: column; + margin-bottom: 10px; + margin-right: 3%; + /*justify-content: center;*/ + } + #pic_detail li span{ + width: 100%; + text-align: center; + display: inline-block; + + } + #pic_detail img{ + box-shadow: 0 0 10px rgba(0, 0, 0, .5); + width: 200px; + height: 200px; + } + </style> + <script src="../vendors/imageviewer/dist/viewer.js" type="text/javascript" charset="utf-8"></script> + <script type="text/javascript"> + $(function() { + var opn=window.opener; + var parentName=opn.document.getElementById("pic").getAttribute('value');//获取父页面标签的值 + + parentName = JSON.parse(parentName); + + for(i in parentName){ + $("<li><span>"+parentName[i].picName+"</span><img src='"+parentName[i].picUrl+"' alt="+parentName[i].picName+"/></li>").appendTo($("#pic_detail")); + } + + + $('#pic_detail').viewer({ + url: 'data-original', + }); + }); + </script> + </head> + <body> + <p>票据图像资料</p> + <ul id="pic_detail"> + <!--<li></li>--> + </ul> + <!--<img src="http://localhost:8070/static/img/pic.png"/>--> + </body> +</html> diff --git a/src/static/templates/registry.html b/src/static/templates/registry.html new file mode 100644 index 0000000..d40b496 --- /dev/null +++ b/src/static/templates/registry.html @@ -0,0 +1,21 @@ +<title>登录界面</title> + +<div id="tenant" style="text-align:center"> + <h1>请选择租户</h1> + <h3 ng-repeat="tname in tenantnames"> + <i class="glyphicon glyphicon-user"></i>{{tname.name}} + <input type="radio" name="tenantname" ng-click="selecttenant($index)"/> + </h3> + <!--<button class="btn btn-default registrybtn" ng-click="lessee()">确认登录</button>--> + +</div> + +<div id="registrySection"> + <h1>请选择登录用户</h1> + <h3 ng-repeat="name in adminname" > + <i class="glyphicon glyphicon-user"></i>{{name.name}} + <input type="radio" name="registryname" ng-click="selectuser($index)"/> + </h3> + <button class="btn btn-default registrybtn" ng-click="registry()">确认登录</button> +</div> + diff --git a/src/static/templates/saved_form.html b/src/static/templates/saved_form.html new file mode 100644 index 0000000..efe6e6c --- /dev/null +++ b/src/static/templates/saved_form.html @@ -0,0 +1,911 @@ +<div class="form_content" id="form"> + <!--<div class="trans" ng-if="!isbill"> + + </div>--> + <div class="title" ng-if="!isbill"> + <i class="fa fa-home" aria-hidden="true"></i> + <i class="fa fa-angle-right" aria-hidden="true"></i> + <h8>{{template_name}}</h8> + <!--<label class="text_label">({{template_desc}})</label>--> + </div> + <div class="row" > + <div class="row_unedit" ng-if="unedit == 1"> + + </div> + <div ng-if="type==20 || type==30" ng-show="edit" class="cost_count"> + <a ng-href="javascript:void(0);" ng-click="query_journel_budget(type)"> + <img src="./static/img/calculate.png" title="计算费用" /> 计算费用 + </a> + </div> + <div class=" {{item_column(item)}}" ng-repeat="item in form_items track by $index" style="border-bottom:1px solid {{edit|borderfilt}};" ng-show="checkshow(item) && item.gcShowFlag !== 0"> + <div class="apply_control search_column" ng-show="item.gcShowFlag !== 0" ng-if="item.gcCpnType === 0 "> + <label>{{item.gcCpnAlias}} + <text class="manadatory_ifd" ng-if='item.gcInputMust==1'>*</text> + <a gcColName="{{item.gcColName}}" choose_budget="1" ng-show="edit" ng-href="javascript:void(0);" ng-click="show_apply_select(edit);">选择预算</a></label> + <!--<button class="btn btn-success btn-favourite btn-action" ng-click="show_apply_select($event);" ng-if="edit || !isbill">选择</button>--> + <!--<textarea gcColName="{{item.gcColName}}" choose_budget="1" type="text" class="apply_control_input" ng-model="selectinfo" readonly="readonly"></textarea>--> + <!--<div gcColName="{{item.gcColName}}" choose_budget="1" class="apply_control_input" />--> + <table class="apply_select_table col-md-12" ng-if="thshow"> + <tr> + <th ng-repeat="head in heads track by $index">{{head.gcCpnAlias}}</th> + </tr> + <tr ng-repeat="info in selectinfo track by $index"> + <td ng-repeat="head in heads">{{info[head.gcColName]}}</td> + </tr> + </table> + <!--</div>--> + <span ng-if="!edit && isbill">{{item.render_value}}</span> + <div ng-if="apply_select_show " class="apply_select" onMouseOver="$(this).draggable();event.stopPropagation();"> + <div class="apply_select_close"> + <p>可选择预算</p> + <!--<i class="fa fa-times apply_close" ng-click="close_apply_select()"></i>--> + <img src="./static/img/close2.png" class="close close_create" style="width:-1%;margin-top:5px;text-shadow: 0 1px 0 #fff;"ng-click="close_apply_select()"> + </div> + <div class="apply_select_search"> + <input placeholder="请输入预算部门或项目" type="text" id="apply_search" ng-keydown="apply_search_info_keydown($event)" /> + <button ng-click="apply_search_info();" class="btn btn-success btn-favourite btn-action">查询</button> + </div> + <table class="apply_select_table"> + <thead> + <tr> + <th ng-repeat="head in heads">{{head.gcCpnAlias}}</th> + <!--<th>预算项目</th> + <th>预算部门</th> + <th>预算开始时间</th> + <th>预算截止时间</th> + <th>预算金额</th>--> + <th>选择</th> + </tr> + </thead> + <tbody> + <tr ng-repeat="data in budget_info"> + <!--<td ng-repeat="data in datas">{{data}}</td>--> + <td ng-repeat="head in heads">{{data[head.gcColName]}}</td> + <td><button class="btn btn-success btn-favourite btn-action" ng-click="selected_budget(data)">选择</button></td> + </tr> + </tbody> + </table> + <div class="condition_search_footer"> + <label class="first"> + <span> + <select ng-model="page_number" ng-change="change_page_number();"> + <option value="5" selected="selected">5条/页</option> + <option value="10" >10条/页</option> + </select> + </span> + <span > + 共{{math_ceil(rows/page_number)}}页 + </span> + </label> + <label class="second"> + <span> + <a ng-href="javascript:void(0);" ng-click="pre_page();" href="javascript:void(0);"> + <i class="fa" aria-hidden="true">上一页</i> + </a> + </span> + <span> + <a ng-href="javascript:void(0);" ng-click="next_page();" href="javascript:void(0);"> + <i class="fa" aria-hidden="true">下一页</i> + </a> + </span> + <span class="ng-binding">第<input class="pagenumber" type="text" value="1" ng-model="pages"> 页/ 共{{math_ceil(rows/page_number)}}页</span> + </label> + </div> + </div> + </div> + + <div ng-if="item.gcCpnType === 1" ng-show="item.gcShowFlag !== 0" class="text"> + + <span ng-mouseenter="detail= true" ng-mouseleave="detail = false"> + <span ng-if="!edit && isbill">{{item.render_value}}</span> + <!--<p ng-if="item.gcCpnDisc">{{item.gcCpnDisc}}</p>--> + <input ng-blur="check_data(edit)" ng-model="item.render_value " ng-change="change_apmonut(item)" type="text" value="{{item.render_value || item.gcDefVal}}" gcColName="{{item.gcColName}}" ng-show="edit || !isbill" ng-disabled="!item.gcEditFlag == 1" > + <div class="showDetail" ng-show="detail" ng-if="item.gcCpnDisc">{{item.gcCpnDisc}}</div> + </span> + <label ng-class="{is_red:item.is_red}"> + + {{item.gcCpnAlias}} + <text class="manadatory_ifd" ng-if='item.gcInputMust==1'>*</text> + <text class="process_ifd" ng-if='item.gcMustCpn==1' >△</text> + <i ng-show="type==30 && item.expend_standard != undefined && item.expend_standard_sp != 0" >{{item.expend_standard}}</i> + <i ng-show="type==30 && item.expend_standard_sp != undefined" >{{item.expend_standard_sp}}</i> + <i ng-show="type==30 && item.billMoney != undefined" title="票据:{{item.billMoney}}">票据:{{item.billMoney}}</i> + </label> + </div> + <div ng-if="item.gcCpnType === 2" ng-show="item.gcShowFlag !== 0" class="textarea col-md-12"> + <span ng-mouseenter="detail= true" ng-mouseleave="detail = false"> + <span ng-if="!edit && isbill">{{item.render_value}}</span> + <textarea + ng-blur="check_data(edit)" + ng-model="item.render_value " + gcColName="{{item.gcColName}}" + ng-show="edit || !isbill" + ng-disabled="!item.gcEditFlag == 1" + >{{item.render_value || item.gcDefVal}}</textarea> + <div class="showDetail" ng-show="detail" ng-if="item.gcCpnDisc">{{item.gcCpnDisc}}</div> + </span> + <label ng-class="{is_red:item.is_red}"> + {{item.gcCpnAlias}} + <text class="manadatory_ifd" ng-if='item.gcInputMust==1'>*</text> + <text class="process_ifd" ng-if='item.gcMustCpn==1' >△</text> + <i ng-show="type==30 && item.expend_standard != undefined && item.expend_standard_sp != 0" >{{item.expend_standard}}</i> + <i ng-show="type==30 && item.expend_standard_sp != undefined" >{{item.expend_standard_sp}}</i> + <i ng-show="type==30 && item.billMoney != undefined" title="票据:{{item.billMoney}}">票据:{{item.billMoney}}</i> + </label> + </div> + <div ng-if="item.gcCpnType === 3" ng-show="item.gcShowFlag !== 0" class="checkbox"> + <div ng-mouseenter="detail= true" ng-mouseleave="detail = false"> + {{item.gcCpnAlias}} + <text class="manadatory_ifd" ng-if='item.gcInputMust==1' ng-disabled="!item.gcEditFlag == 1">*</text> + <text class="process_ifd" ng-if='item.gcMustCpn==1' >△</text> + </div> + <div> + <!--<p ng-if="item.gcCpnDisc">{{item.gcCpnDisc}}</p>--> + <!--<div ng-repeat="opt in item.gcOptList" class="checkbox_container" ng-if="edit || !isbill">--> + <input type="checkbox" value="{{opt.value}}" ng-checked="check_item(item, opt);" checked="{{opt.selected}}" gcColName="{{item.gcColName}}" ng-disabled="!item.gcEditFlag == 1"> + <!--<label class="cb_label">{{opt.value}}</label>--> + <!--</div>--> + <!--<span ng-if="!edit && isbill">{{item.render_value}}</span>--> + </div> + <div class="showDetail" ng-show="detail" ng-if="item.gcCpnDisc">{{item.gcCpnDisc}}</div> + </div> + <div ng-if="item.gcCpnType === 4" ng-show="item.gcShowFlag !== 0" class="radio"> + <div ng-mouseenter="detail= true" ng-mouseleave="detail = false"> + {{item.gcCpnAlias}} + <text class="manadatory_ifd" ng-if='item.gcInputMust==1' ng-disabled="!item.gcEditFlag == 1">*</text> + <text class="process_ifd" ng-if='item.gcMustCpn==1' >△</text> + </div> + <div> + <span ng-if="!edit && isbill" class="radio">{{item.render_value}} + <div class="showDetail" ng-show="detail" ng-if="item.gcCpnDisc">{{item.gcCpnDisc}}</div> + </span> + <!--<p ng-if="item.gcCpnDisc">{{item.gcCpnDisc}}</p>--> + <!--<span ng-repeat="opt in item.gcOptList" class="rd_container" ng-if="edit || !isbill">--> + <input type="radio" value="{{opt.value}}" name="{{item.gcCpnAlias}}" ng-checked="check_item(item, opt);" ng-disabled="!item.gcEditFlag == 1" gcColName="{{item.gcColName}}"> + <label class="rd_label">{{opt.value}}</label> + <!--</span>--> + + </div> + </div> + + <div ng-if="item.gcCpnType === 5" ng-show="item.gcShowFlag !== 0" class="text timeinfo" > + <span ng-mouseenter="detail= true" ng-mouseleave="detail = false"> + + <!--<p ng-if="item.gcCpnDisc">{{item.gcCpnDisc}}</p>--> + <div ng-if="item.gcCpnFormat == 30"><input type="text" item="{{item}}" realitem="item" editflag="{{item.gcEditFlag}}" edit="edit" class="getDateTime" date gcColName="{{item.gcColName}}" value="{{item.render_value || item.gcDefVal}}" ng-if="edit || !isbill" ng-disabled="!item.gcEditFlag == 1" ></div> + <div ng-if="item.gcCpnFormat == 31"><input type="text" item="{{item}}" realitem="item" editflag="{{item.gcEditFlag}}" edit="edit" class="getDateTime" datetime gcColName="{{item.gcColName}}" value="{{item.render_value || item.gcDefVal}}" ng-if="edit || !isbill" ng-disabled="!item.gcEditFlag == 1" ></div> + <div ng-if="item.gcCpnFormat == 32"><input type="text" item="{{item}}" realitem="item" editflag="{{item.gcEditFlag}}" edit="edit" class="getDateTime" time gcColName="{{item.gcColName}}" value="{{item.render_value || item.gcDefVal}}" ng-if="edit || !isbill" ng-disabled="!item.gcEditFlag == 1"></div> + <span ng-if="!edit && isbill">{{item.render_value}} + <div class="showDetail" ng-show="detail" ng-if="item.gcCpnDisc">{{item.gcCpnDisc}}</div> + </span> + <input gcColName="{{item.gcColName}}" type="text" ng-show="false" ng-if="!edit && isbill" value="{{item.render_value}}" /> + </span> + <label> + {{item.gcCpnAlias}} + <text class="manadatory_ifd" ng-if='item.gcInputMust==1' >*</text> + <text class="process_ifd" ng-if='item.gcMustCpn==1' >△</text> + </label> + </div> + <div ng-if="item.gcCpnType === 6" ng-show="item.gcShowFlag !== 0" class="select"> + <span ng-if="!edit && isbill">{{item.select_value}}</span> + <span select3 edit-flag="item.gcEditFlag" edit="edit" item="item" ng-show="edit || !isbill" ng-mouseenter="detail= true" ng-mouseleave="detail = false" > + <!--<p ng-if="item.gcCpnDisc" >{{item.gcCpnDisc}}</p>--> + <select + ng-if="!!item.gcCpnMultiple" + value="{{item.render_value}}" + class="select_get" + multiple + load-data + > + <!--<option ng-if="kinds" ng-repeat="opt in options" {{opt.selected?'selected':''}} value="{{opt.value}}"> + {{opt.value}} + </option>--> + </select> + <select + ng-if="!item.gcCpnMultiple" + value="{{item.render_value}}" + class="select_get" + load-data + > + <!--<option ng-if="kind" ng-repeat="opt in options" {{opt.selected?'selected':''}} value="{{opt.value}}" > + {{opt.value}} + </option>--> + <!--<option ng-repeat="opt in item.gcOptList" {{opt.selected?'selected':''}} >{{opt.value}}</option>--> + </select> + </span> + <div class="showDetail" ng-show="detail" ng-if="item.gcCpnDisc">{{item.gcCpnDisc}}</div> + <label> + {{item.gcCpnAlias}} + <text class="manadatory_ifd" ng-if='item.gcInputMust==1'>*</text> + <text class="process_ifd" ng-if='item.gcMustCpn==1' >△</text> + </label> + </div> + <div ng-if="item.gcCpnType === 7" ng-show="item.gcShowFlag !== 0" class="text"> + <span ng-mouseenter="detail= true" ng-mouseleave="detail = false"> + <!--<p ng-if="item.gcCpnDisc">{{item.gcCpnDisc}}</p>--> + <span ng-if="!edit && isbill">{{item.render_value}}</span> + <input ng-blur="check_data(edit)" ng-model="item.render_value " ng-change="change_apmonut(item)" type="text" gcColName="{{item.gcColName}}" ng-disabled="!item.gcEditFlag == 1" value="{{item.render_value || item.gcDefVal}}" ng-show="edit || !isbill" > + </span> + <div class="showDetail" ng-show="detail" ng-if="item.gcCpnDisc">{{item.gcCpnDisc}}</div> + <label ng-class="{is_red:item.is_red}"> + {{item.gcCpnAlias}} + <text class="manadatory_ifd" ng-if='item.gcInputMust==1'>*</text> + <text class="process_ifd" ng-if='item.gcMustCpn==1' >△</text> + <i ng-show="type==30 && item.expend_standard != undefined && item.expend_standard_sp != 0" >{{item.expend_standard}}</i> + <i ng-show="type==30 && item.expend_standard_sp != undefined" >{{item.expend_standard_sp}}</i> + <i ng-show="type==30 && item.billMoney != undefined" title="票据:{{item.billMoney}}">票据:{{item.billMoney}}</i> + </label> + </div> + <!--城市选择部分--> + <div ng-if="item.gcCpnType === 11 "> + <div select-city ng-show="city" class="col-md-12 citycity" style="padding: 0;"></div> + <a class="btn btn-default citybtn" ng-show="!city" ng-click="citybtn()">{{cityList.join(",")||'请选择城市'}}</a> + </div> + <!--去掉查看表单中的下划线--> + <div ng-if="item.gcCpnType === 9 " class="hr"> + <span> + <!--<p ng-if="item.gcCpnDisc">{{item.gcCpnDisc}}</p>--> + <div class="showDetail" ng-show="detail" ng-if="item.gcCpnDisc">{{item.gcCpnDisc}}</div> + <hr style="margin:12px 0px;"> + </span> + </div> + <!--选择人员--> + <div ng-if="item.gcCpnType === 12" class="people"> + <div user-selector item="item" parentitem="item" type="type"></div> + </div> + <!--申请单选择--> + <div class="apply_control search_column" ng-if="item.gcCpnType === 14 && type == 30"> + <label>{{item.gcCpnAlias}} + <text class="manadatory_ifd" ng-if='item.gcInputMust==1'>*</text> + <a gcColName="{{item.gcColName}}" choose_apply="1" ng-href="javascript:void(0);" ng-show="isbill=='false'" ng-click="show_expend_select(edit);">选择申请单</a></label> + <!--<input class="apply_control_number_input" gcColName="{{item.gcColName}}" value="{{item.render_value}}" readonly="readonly" style="border: none;"></input>--> + <table class="apply_select_table col-md-12" ng-if="expend_thshow"> + <tr> + <th ng-repeat="head in expend_heads track by $index">{{head.gcCpnAlias}}</th> + </tr> + <tr ng-repeat="info in expend_selectinfo track by $index"> + <td ng-repeat="head in expend_heads">{{info[head.gcColName]}}</td> + </tr> + </table> + <div ng-if="expend_select_show " class="apply_select" onMouseOver="$(this).draggable();event.stopPropagation();"> + <div class="apply_select_close"> + <p>可选择申请</p> + <i class="fa fa-times apply_close" ng-click="close_expend_select()"></i> + </div> + <!--<div class="apply_select_search"> + <span select3 item="expend_search" class="expend_search_style"> + <select + load-data + > + </select> + </span> + <button ng-click="expend_search_info();" class="btn btn-success btn-favourite btn-action apply_search_btn">查询</button> + </div>--> + <table class="apply_select_table"> + <thead> + <tr> + <th ng-repeat="head in expend_heads">{{head.gcCpnAlias}}</th> + <th>选择</th> + </tr> + </thead> + <tbody> + <tr ng-repeat="data in expend_info"> + <td ng-repeat="head in expend_heads">{{data[head.gcColName]}}</td> + <td><button class="btn btn-success btn-favourite btn-action" ng-click="selected_expend(data,item)">选择</button></td> + </tr> + </tbody> + </table> + <div class="condition_search_footer"> + <label class="first"> + <span> + <select ng-model="expend_page_number" ng-change="expend_change_page_number();"> + <option value="5" selected="selected">5条/页</option> + <option value="10" >10条/页</option> + </select> + </span> + <span > + 共{{math_ceil(expend_rows/expend_page_number)}}页 + </span> + </label> + <label class="second"> + <span> + <a ng-href="javascript:void(0);" ng-click="expend_pre_page();" href="javascript:void(0);"> + <i class="fa" aria-hidden="true">上一页</i> + </a> + </span> + <span> + <a ng-href="javascript:void(0);" ng-click="expend_next_page();" href="javascript:void(0);"> + <i class="fa" aria-hidden="true">下一页</i> + </a> + </span> + <span class="ng-binding">第<input class="pagenumber" type="text" value="1" ng-model="expend_pages"> 页/ 共{{math_ceil(expend_rows/expend_page_number)}}页</span> + </label> + </div> + </div> + </div> + <!--标签--> + <!----> + <div ng-if="item.gcCpnType === 15" ng-show="item.gcShowFlag !== 0" class="textarea col-md-12"> + <span ng-mouseenter="detail= true" ng-mouseleave="detail = false"> + <!--<p ng-if="item.gcCpnDisc">{{item.gcCpnDisc}}</p>--> + <div class="showDetail" ng-show="detail" ng-if="item.gcCpnDisc">{{item.gcCpnDisc}}</div> + <label ng-blur="check_data(edit)" ng-model="item.render_value " ng-change="change_apmonut(item)" value="{{item.render_value || item.gcDefVal}}" gcColName="{{item.gcColName}}" ng-if="edit || !isbill" ng-disabled="!item.gcEditFlag == 1" > + </label> + <span ng-show="edit || !isbill">{{item.render_value ||item.gcDefVal}}</span> + <span ng-if="!edit && isbill">{{item.render_value || item.gcDefVal}}</span> + </span> + <label class="ng-binding"> + {{item.gcCpnAlias}} + </label> + </div> + <!--选择组织机构--> + <!--<div ng-if="item.gcCpnType === 16" class="people"> + <div org-selector item="item" parentitem="item" type="type"></div> + </div>--> + <!--子表单--> + <div ng-if="item.gcCpnType === 10" ng-show="item.gcCpnType == tap_type" class="col-md-12 sub_form"> + <div class="sub_form_container sub_form_s"> + <label ng-class="{nobill_red:item.nobill_red,is_red:item.is_red}" style="display: block;">{{item.gcCpnAlias}}{{item.num}} {{item.is_nobill}} {{item.bill_user_err}}</label> + <div class="sub_frm_tlbar" ng-show="btnflag"> + <!--<div class="sfm_cou" ng-show="btnflag"> + <a ng-href="javascript:void(0);" ng-click="query_journel_budget()"> + <img src="./static/img/calculate.png" title="计算费用"/> + </a> + </div> --> + <div class="sfm_plus"> + <a ng-href="javascript:void(0);" ng-click="duplicate_sub_form(item);"> + <img src="./static/img/createorder.png" title="添加" /> + </a> + </div> + <div class="sfm_minus"> + <a ng-href="javascript:void(0);" ng-click="rm_sub_form(item); "> + <img src="./static/img/delete.png" title="删除" /> + </a> + </div> + </div> + <div class=" {{item_column(_item)}}" ng-show="_item.gcShowFlag !== 0" ng-repeat="_item in item.child track by $index"> + <!--选择人员--> + <div ng-if="_item.gcCpnType === 12" class="people"> + <div user-selector item="_item" parentitem="item" type="type"></div> + </div> + <div ng-if="_item.gcCpnType === 1" ng-show="_item.gcShowFlag !== 0" class="text"> + <span ng-mouseenter="detail= true" ng-mouseleave="detail = false"> + <span ng-if="!edit && isbill">{{_item.render_value}}</span> + <input ng-blur="check_data(edit)" ng-model="_item.render_value" ng-change="change_apmonut(_item,item)" type="text" gcColName="{{_item.gcColName}}" value="{{_item.render_value || _item.gcDefVal}}" ng-show="edit || !isbill" ng-disabled="!_item.gcEditFlag == 1"><i ng-if="edit || !isbill">{{item|getamount:_item}}</i> + <div class="showDetail" ng-show="detail" ng-if="_item.gcCpnDisc">{{_item.gcCpnDisc}}</div> + </span> + <label ng-class="{is_red:_item.is_red || _item.nobill_cd || _item.sys_red}"> + {{_item.gcCpnAlias}} + <text class="manadatory_ifd" ng-if='_item.gcInputMust==1'>*</text> + <text class="process_ifd" ng-if='_item.gcMustCpn==1' >△</text> + <i ng-show="type==30 && _item.nobill_cd" >无</i> + <i ng-show="type==30 && _item.expend_standard != undefined && _item.expend_standard_sp != 0" >{{_item.expend_standard}}</i> + <i ng-show="type==30 && _item.expend_standard_sp != undefined" >{{_item.expend_standard_sp}}</i> + <i ng-show="type==30 && _item.billMoney != undefined" title="票据:{{_item.billMoney}}">票据:{{_item.billMoney}}</i> + <i ng-show="type==30" title="{{_item.bhName}}">{{_item.bhName}}</i> + <i ng-show="type==30" title="{{_item.bbName}}">{{_item.bbName}}</i> + <i ng-show="type==30" title="{{_item.sys_value}}">{{_item.sys_value}}</i> + <i ng-show="type==20 && _item.standard_show"> 标准金额:{{_item.standard_money}}</i> + </label> + </div> + <div ng-if="_item.gcCpnType === 2" ng-show="_item.gcShowFlag !== 0" class="textarea col-md-12"> + <span ng-mouseenter="detail= true" ng-mouseleave="detail = false"> + <p ng-if="_item.gcCpnDisc">{{_item.gcCpnDisc}}</p> + <span ng-if="!edit && isbill">{{_item.render_value}}</span> + <textarea ng-blur="check_data(edit)" ng-model="_item.render_value " gcColName="{{_item.gcColName}}" ng-show="edit || !isbill" ng-disabled="!_item.gcEditFlag == 1" >{{_item.render_value || _item.gcDefVal}}</textarea> + <div class="showDetail" ng-show="detail" ng-if="_item.gcCpnDisc">{{_item.gcCpnDisc}}</div> + </span> + <label ng-class="{is_red:_item.is_red || _item.nobill_cd || _item.sys_red}"> + {{_item.gcCpnAlias}} + <text class="manadatory_ifd" ng-if='_item.gcInputMust==1'>*</text> + <text class="process_ifd" ng-if='_item.gcMustCpn==1' >△</text> + <i ng-show="type==30 && _item.nobill_cd" >无</i> + <i ng-show="type==30 && _item.expend_standard != undefined && _item.expend_standard_sp != 0" >{{_item.expend_standard}}</i> + <i ng-show="type==30 && _item.expend_standard_sp != undefined" >{{_item.expend_standard_sp}}</i> + <i ng-show="type==30 && _item.billMoney != undefined" title="票据:{{_item.billMoney}}">票据:{{_item.billMoney}}</i> + <i ng-show="type==30" title="{{_item.bhName}}">{{_item.bhName}}</i> + <i ng-show="type==30" title="{{_item.bbName}}">{{_item.bbName}}</i> + <i ng-show="type==30" title="{{_item.sys_value}}">{{_item.sys_value}}</i> + <i ng-show="type==20 && _item.standard_show"> 标准金额:{{_item.standard_money}}</i> + </label> + </div> + <div ng-if="_item.gcCpnType === 3" ng-show="_item.gcShowFlag !== 0" class="checkbox"> + <div ng-mouseenter="detail= true" ng-mouseleave="detail = false"> + {{_item.gcCpnAlias}} + <text class="manadatory_ifd" ng-if='_item.gcInputMust==1'>*</text> + <text class="process_ifd" ng-if='_item.gcMustCpn==1' >△</text> + <div class="showDetail" ng-show="detail" ng-if="_item.gcCpnDisc">{{_item.gcCpnDisc}}</div> + </div> + <div> + <span ng-repeat="opt in _item.gcOptList" class="checkbox_container"> + <input ng-model="_item.render_value " type="checkbox" value="{{opt.value}}" ng-disabled="!_item.gcEditFlag == 1" ng-checked="check_item(_item, opt);" gcColName="{{_item.gcColName}}" ng-show="edit || !isbill" > + <span ng-if="!edit && isbill">{{_item.render_value}}</span> + <label ng-if="opt.selected==true || (edit || !isbill)" class="cb_label">{{opt.value}}</label> + </span> + </div> + </div> + <div ng-if="_item.gcCpnType === 4" ng-show="_item.gcShowFlag !== 0" class="radio"> + <div ng-mouseenter="detail= true" ng-mouseleave="detail = false"> + {{_item.gcCpnAlias}} + <text class="manadatory_ifd" ng-if='_item.gcInputMust==1' ng-disabled="!_item.gcEditFlag == 1">*</text> + <text class="process_ifd" ng-if='_item.gcMustCpn==1' >△</text> + <div class="showDetail" ng-show="detail" ng-if="_item.gcCpnDisc">{{_item.gcCpnDisc}}</div> + </div> + <div> + <span ng-if="!edit && isbill">{{_item.render_value}}</span> + <span ng-repeat="opt in _item.gcOptList" class="rd_container"> + <input + type="radio" + value="{{opt.value}}" + name="{{_item.gcCpnAlias}}" + gcColName="{{_item.gcColName}}" + ng-disabled="!_item.gcEditFlag == 1" + ng-show="edit || !isbill" + ng-checked="check_item(_item, opt);" > <i ng-show="edit || !isbill">{{item|getamount:_item}}</i> + + <label ng-if="opt.selected==true || (edit || !isbill)" class="rd_label">{{opt.value}}</label> + </span> + </div> + </div> + + <div ng-if="_item.gcCpnType === 5" ng-show="_item.gcShowFlag !== 0" class="text timeinfo"> + <span ng-mouseenter="detail= true" ng-mouseleave="detail = false"> + + <!--<p ng-if="_item.gcCpnDisc">{{_item.gcCpnDisc}}</p>--> + <div ng-if="_item.gcCpnFormat == 30"><input type="text" item="{{_item}}" realitem="_item" editflag="{{_item.gcEditFlag}}" edit="edit" date ng-model="_item.render_value" ng-change="change_apmonut(_item,item)" gcColName="{{_item.gcColName}}" value="{{_item.render_value || _item.gcDefVal}}" ng-if="edit || !isbill" ng-disabled="!_item.gcEditFlag == 1" readonly="readonly"></div> + <div ng-if="_item.gcCpnFormat == 31"><input type="text" item="{{_item}}" realitem="_item" editflag="{{_item.gcEditFlag}}" edit="edit" datetime ng-model="_item.render_value" ng-change="change_apmonut(_item,item)" gcColName="{{_item.gcColName}}" value="{{_item.render_value || _item.gcDefVal}}" ng-if="edit || !isbill" ng-disabled="!_item.gcEditFlag == 1" readonly="readonly"></div> + <div ng-if="_item.gcCpnFormat == 32"><input type="text" item="{{_item}}" realitem="_item" editflag="{{_item.gcEditFlag}}" edit="edit" time ng-model="_item.render_value" ng-change="change_apmonut(_item,item)" gcColName="{{_item.gcColName}}" value="{{_item.render_value || _item.gcDefVal}}" ng-if="edit || !isbill" ng-disabled="!_item.gcEditFlag == 1" readonly="readonly"></div> + <div class="showDetail" ng-show="detail" ng-if="_item.gcCpnDisc">{{_item.gcCpnDisc}}</div> + <span ng-if="!edit && isbill">{{_item.render_value}}</span> + <input gcColName="{{_item.gcColName}}" type="text" ng-show="false" ng-if="!edit && isbill" value="{{_item.render_value}}" /> + </span> + <label ng-class="{is_red:_item.is_red || _item.nobill_cd || _item.sys_red}">{{_item.gcCpnAlias}} + <text class="manadatory_ifd" ng-if='_item.gcInputMust==1' ng-disabled="!_item.gcEditFlag == 1">*</text> + <i ng-show="type==30 && _item.nobill_cd" >无</i> + <i ng-show="type==30" title="{{_item.bhName}}">{{_item.bhName}}</i> + <i ng-show="type==30" title="{{_item.bbName}}">{{_item.bbName}}</i> + <i ng-show="type==30" title="{{_item.sys_value}}">{{_item.sys_value}}</i> + </label> + <text class="process_ifd" ng-if='_item.gcMustCpn==1' >△</text> + + </div> + <div ng-if="_item.gcCpnType === 6" ng-show="_item.gcShowFlag !== 0" class="select"> + <span ng-if="!edit && isbill">{{_item.select_value}}</span> + <span select3 bill-check="bill_data_check()" childitem="item" edit-flag="_item.gcEditFlag" edit="edit" item="_item" ng-show="edit || !isbill" ng-mouseenter="detail= true" ng-mouseleave="detail = false"> + <select + ng-if="!!_item.gcCpnMultiple" + ng-disabled="!_item.gcEditFlag == 1" + value="{{_item.render_value}}" + class="select_get" + multiple + > + <option ng-repeat="opt in _item.gcOptList" {{opt.selected?'selected':''}} value="{{opt.value}}" >{{opt.value}}</option> + </select> + <select + ng-if="!_item.gcCpnMultiple" + value="{{_item.render_value}}" + ng-disabled="!_item.gcEditFlag == 1" + class="select_get" + > + <option ng-repeat="opt in _item.gcOptList" {{opt.selected?'selected':''}} value="{{opt.value}}" >{{opt.value}}</option> + </select> + </span> + <div class="showDetail" ng-show="detail" ng-if="_item.gcCpnDisc">{{_item.gcCpnDisc}}</div> + <label ng-class="{is_red:_item.is_red || _item.nobill_cd || _item.sys_red}"> + {{_item.gcCpnAlias}} + <text class="manadatory_ifd" ng-if='_item.gcInputMust==1'>*</text> + <text class="process_ifd" ng-if='_item.gcMustCpn==1' >△</text> + <i ng-show="type==30 && _item.nobill_cd" >无</i> + <i ng-show="type==30" title="{{_item.bhName}}">{{_item.bhName}}</i> + <i ng-show="type==30" title="{{_item.bbName}}">{{_item.bbName}}</i> + <i ng-show="type==30" title="{{_item.sys_value}}">{{_item.sys_value}}</i> + </label> + </div> + <div ng-if="_item.gcCpnType === 7" ng-show="_item.gcShowFlag !== 0" class="text"> + <span ng-mouseenter="detail= true" ng-mouseleave="detail = false"> + <span ng-if="!edit && isbill">{{_item.render_value}}</span> + <input ng-blur="check_data(edit)" ng-model="_item.render_value " ng-change="change_apmonut(_item,item)" type="text" gcColName="{{_item.gcColName}}" value="{{_item.render_value || _item.gcDefVal}}" ng-show="edit || !isbill" ng-disabled="!_item.gcEditFlag == 1" > + <div class="showDetail" ng-show="detail" ng-if="_item.gcCpnDisc">{{_item.gcCpnDisc}}</div> + </span> + + <label ng-class="{is_red:_item.is_red || _item.nobill_cd || _item.sys_red}"> + {{_item.gcCpnAlias}} + <text class="manadatory_ifd" ng-if='_item.gcInputMust==1'>*</text> + <text class="process_ifd" ng-if='_item.gcMustCpn==1' >△</text> + <i ng-show="type==30 &&_item.nobill_cd" >无</i> + <i ng-show="type==30 && _item.expend_standard != undefined && _item.expend_standard_sp != 0" >{{_item.expend_standard}}</i> + <i ng-show="type==30 && _item.expend_standard_sp != undefined" >{{_item.expend_standard_sp}}</i> + <i ng-show="type==30 && _item.billMoney != undefined" title="票据:{{_item.billMoney}}">票据:{{_item.billMoney}}</i> + <i ng-show="type==30" title="{{_item.bhName}}">{{_item.bhName}}</i> + <i ng-show="type==30" title="{{_item.bbName}}">{{_item.bbName}}</i> + <i ng-show="type==30" title="{{_item.sys_value}}">{{_item.sys_value}}</i> + <i ng-show="type==20 && _item.standard_show"> 标准金额:{{_item.standard_money}}</i> + </label> + </div> + <div ng-if="_item.gcCpnType === 8" ng-show="_item.gcShowFlag !== 0" class="textarea"> + <span ng-mouseenter="detail= true" ng-mouseleave="detail = false"> + <textarea gcColName="{{_item.gcColName}}" ng-show="edit || !isbill" ng-disabled="!_item.gcEditFlag == 1">{{_item.render_value || _item.gcDefVal}}</textarea><i ng-show="edit || !isbill">{{item|getamount:_item}}</i> + <span ng-if="!edit && isbill">{{_item.render_value}}</span> + <text class="manadatory_ifd" ng-if='_item.gcInputMust==1'>*</text> + </span> + <label ng-class="{is_red:_item.is_red || _item.nobill_cd || _item.sys_red}"> + {{_item.gcCpnAlias}} + <div class="showDetail" ng-show="detail" ng-if="_item.gcCpnDisc">{{_item.gcCpnDisc}}</div> + <text class="process_ifd" ng-if='_item.gcMustCpn==1' >△</text> + <i ng-show="type==30_item.nobill_cd" >无</i> + <i ng-show="type==30" title="{{_item.bhName}}">{{_item.bhName}}</i> + <i ng-show="type==30" title="{{_item.bbName}}">{{_item.bbName}}</i> + <i ng-show="type==30" title="{{_item.sys_value}}">{{_item.sys_value}}</i> + </label> + </div> + <!--去掉查看表单中的下划线(子表单中)--> + <div ng-if="item.gcCpnType === 9 && type != '10' && type != '20' && type != '30'" class="hr"> + <span ng-mouseenter="detail= true" ng-mouseleave="detail = false"> + <hr> + <div class="showDetail" ng-show="detail" ng-if="_item.gcCpnDisc">{{_item.gcCpnDisc}}</div> + </span> + <label> + {{_item.gcCpnAlias}} + </label> + </div> + <div ng-if="_item.gcCpnType === 15" ng-show="_item.gcShowFlag !== 0" class="textarea col-md-12"> + <span ng-mouseenter="detail= true" ng-mouseleave="detail = false"> + <!--<p ng-if="_item.gcCpnDisc">{{item.gcCpnDisc}}</p>--> + <label ng-blur="check_data(edit)" ng-model="_item.render_value " ng-change="change_apmonut(_item,item)" value="{{_item.render_value || _item.gcDefVal}}" gcColName="{{_item.gcColName}}" ng-show="edit || !isbill" > + </label> + <span ng-if="!edit && isbill">{{_item.render_value}}</span> + <div class="showDetail" ng-show="detail" ng-if="_item.gcCpnDisc">{{_item.gcCpnDisc}}</div> + </span> + <label ng-class="{is_red:_item.is_red}" class="ng-binding"> + {{_item.gcCpnAlias}} + <i ng-show="type==30" >{{_item.bhName}}</i> + <i ng-show="type==30" >{{_item.bbName}}</i> + </label> + </div> + + </div> + + </div> + <!--<div class="cost_div" class="col-md-12" style="padding:0px;margin-top:10px;" name="journel_budget" user_id="{{budget_item.userId}}"> + <div ng-repeat="budget in item.budget_list[0].child" class="col-md-12"> + <div class="text"> + <span> + <input + type="text" + gcColName="{{budget.name}}" + jp_cd_code="{{budget.jp_cd_code}}" + ng-model="budget.jp_amount" + > + </span> + <label> + {{budget.mdDesc || budget.cd_name}} + </label> + </div> + </div> + </div>--> + </div> + <!--支付方式子表单--> + <div ng-if="item.gcCpnType === 17" ng-show="item.gcCpnType == tap_type" class="col-md-12 sub_form"> + <div class="sub_form_container sub_form_s"> + <label ng-class="{nobill_red:item.nobill_red,is_red:item.is_red}" style="display: block;">{{item.gcCpnAlias}}{{item.num}} {{item.is_nobill}} {{item.bill_user_err}}</label> + <div class="sub_frm_tlbar" ng-show="btnflag"> + <!--<div class="sfm_cou" ng-show="btnflag"> + <a ng-href="javascript:void(0);" ng-click="query_journel_budget()"> + <img src="./static/img/calculate.png" title="计算费用"/> + </a> + </div> --> + <div class="sfm_plus"> + <a ng-href="javascript:void(0);" ng-click="duplicate_sub_form(item);"> + <img src="./static/img/createorder.png" title="添加" /> + </a> + </div> + <div class="sfm_minus"> + <a ng-href="javascript:void(0);" ng-click="rm_sub_form(item); "> + <img src="./static/img/delete.png" title="删除" /> + </a> + </div> + </div> + <div class=" {{item_column(_item)}}" ng-show="_item.gcShowFlag !== 0" ng-repeat="_item in item.child track by $index"> + <!--选择人员--> + <div ng-if="_item.gcCpnType === 12" class="people"> + <div user-selector item="_item" parentitem="item" type="type"></div> + </div> + <div ng-if="_item.gcCpnType === 1" ng-show="_item.gcShowFlag !== 0" class="text"> + <span ng-mouseenter="detail= true" ng-mouseleave="detail = false"> + <span ng-if="!edit && isbill">{{_item.render_value}}</span> + <input ng-blur="check_data(edit)" ng-model="_item.render_value" ng-change="change_apmonut(_item,item)" type="text" gcColName="{{_item.gcColName}}" value="{{_item.render_value || _item.gcDefVal}}" ng-show="edit || !isbill" ng-disabled="!_item.gcEditFlag == 1"><i ng-if="edit || !isbill">{{item|getamount:_item}}</i> + <div class="showDetail" ng-show="detail" ng-if="_item.gcCpnDisc">{{_item.gcCpnDisc}}</div> + </span> + <label ng-class="{is_red:_item.is_red || _item.nobill_cd || _item.sys_red}"> + {{_item.gcCpnAlias}} + <text class="manadatory_ifd" ng-if='_item.gcInputMust==1'>*</text> + <text class="process_ifd" ng-if='_item.gcMustCpn==1' >△</text> + <i ng-show="type==30 && _item.nobill_cd" >无</i> + <i ng-show="type==30 && _item.expend_standard != undefined && _item.expend_standard_sp != 0" >{{_item.expend_standard}}</i> + <i ng-show="type==30 && _item.expend_standard_sp != undefined" >{{_item.expend_standard_sp}}</i> + <i ng-show="type==30 && _item.billMoney != undefined" title="票据:{{_item.billMoney}}">票据:{{_item.billMoney}}</i> + <i ng-show="type==30" title="{{_item.bhName}}">{{_item.bhName}}</i> + <i ng-show="type==30" title="{{_item.bbName}}">{{_item.bbName}}</i> + <i ng-show="type==30" title="{{_item.sys_value}}">{{_item.sys_value}}</i> + <i ng-show="type==20 && _item.standard_show"> 标准金额:{{_item.standard_money}}</i> + </label> + </div> + <div ng-if="_item.gcCpnType === 2" ng-show="_item.gcShowFlag !== 0" class="textarea col-md-12"> + <span ng-mouseenter="detail= true" ng-mouseleave="detail = false"> + <p ng-if="_item.gcCpnDisc">{{_item.gcCpnDisc}}</p> + <span ng-if="!edit && isbill">{{_item.render_value}}</span> + <textarea ng-blur="check_data(edit)" ng-model="_item.render_value " gcColName="{{_item.gcColName}}" ng-show="edit || !isbill" ng-disabled="!_item.gcEditFlag == 1" >{{_item.render_value || _item.gcDefVal}}</textarea> + <div class="showDetail" ng-show="detail" ng-if="_item.gcCpnDisc">{{_item.gcCpnDisc}}</div> + </span> + <label ng-class="{is_red:_item.is_red || _item.nobill_cd || _item.sys_red}"> + {{_item.gcCpnAlias}} + <text class="manadatory_ifd" ng-if='_item.gcInputMust==1'>*</text> + <text class="process_ifd" ng-if='_item.gcMustCpn==1' >△</text> + <i ng-show="type==30 && _item.nobill_cd" >无</i> + <i ng-show="type==30 && _item.expend_standard != undefined && _item.expend_standard_sp != 0" >{{_item.expend_standard}}</i> + <i ng-show="type==30 && _item.expend_standard_sp != undefined" >{{_item.expend_standard_sp}}</i> + <i ng-show="type==30 && _item.billMoney != undefined" title="票据:{{_item.billMoney}}">票据:{{_item.billMoney}}</i> + <i ng-show="type==30" title="{{_item.bhName}}">{{_item.bhName}}</i> + <i ng-show="type==30" title="{{_item.bbName}}">{{_item.bbName}}</i> + <i ng-show="type==30" title="{{_item.sys_value}}">{{_item.sys_value}}</i> + <i ng-show="type==20 && _item.standard_show"> 标准金额:{{_item.standard_money}}</i> + </label> + </div> + <div ng-if="_item.gcCpnType === 3" ng-show="_item.gcShowFlag !== 0" class="checkbox"> + <div ng-mouseenter="detail= true" ng-mouseleave="detail = false"> + {{_item.gcCpnAlias}} + <text class="manadatory_ifd" ng-if='_item.gcInputMust==1'>*</text> + <text class="process_ifd" ng-if='_item.gcMustCpn==1' >△</text> + <div class="showDetail" ng-show="detail" ng-if="_item.gcCpnDisc">{{_item.gcCpnDisc}}</div> + </div> + <div> + <span ng-repeat="opt in _item.gcOptList" class="checkbox_container"> + <input ng-model="_item.render_value " type="checkbox" value="{{opt.value}}" ng-disabled="!_item.gcEditFlag == 1" ng-checked="check_item(_item, opt);" gcColName="{{_item.gcColName}}" ng-show="edit || !isbill" > + <span ng-if="!edit && isbill">{{_item.render_value}}</span> + <label ng-if="opt.selected==true || (edit || !isbill)" class="cb_label">{{opt.value}}</label> + </span> + </div> + </div> + <div ng-if="_item.gcCpnType === 4" ng-show="_item.gcShowFlag !== 0" class="radio"> + <div ng-mouseenter="detail= true" ng-mouseleave="detail = false"> + {{_item.gcCpnAlias}} + <text class="manadatory_ifd" ng-if='_item.gcInputMust==1' ng-disabled="!_item.gcEditFlag == 1">*</text> + <text class="process_ifd" ng-if='_item.gcMustCpn==1' >△</text> + <div class="showDetail" ng-show="detail" ng-if="_item.gcCpnDisc">{{_item.gcCpnDisc}}</div> + </div> + <div> + <span ng-if="!edit && isbill">{{_item.render_value}}</span> + <span ng-repeat="opt in _item.gcOptList" class="rd_container"> + <input + type="radio" + value="{{opt.value}}" + name="{{_item.gcCpnAlias}}" + gcColName="{{_item.gcColName}}" + ng-disabled="!_item.gcEditFlag == 1" + ng-show="edit || !isbill" + ng-checked="check_item(_item, opt);" > <i ng-show="edit || !isbill">{{item|getamount:_item}}</i> + + <label ng-if="opt.selected==true || (edit || !isbill)" class="rd_label">{{opt.value}}</label> + </span> + </div> + </div> + + <div ng-if="_item.gcCpnType === 5" ng-show="_item.gcShowFlag !== 0" class="text timeinfo"> + <span ng-mouseenter="detail= true" ng-mouseleave="detail = false"> + + <!--<p ng-if="_item.gcCpnDisc">{{_item.gcCpnDisc}}</p>--> + <div ng-if="_item.gcCpnFormat == 30"><input type="text" item="{{_item}}" realitem="_item" editflag="{{_item.gcEditFlag}}" edit="edit" date ng-model="_item.render_value" ng-change="change_apmonut(_item,item)" gcColName="{{_item.gcColName}}" value="{{_item.render_value || _item.gcDefVal}}" ng-if="edit || !isbill" ng-disabled="!_item.gcEditFlag == 1" readonly="readonly"></div> + <div ng-if="_item.gcCpnFormat == 31"><input type="text" item="{{_item}}" realitem="_item" editflag="{{_item.gcEditFlag}}" edit="edit" datetime ng-model="_item.render_value" ng-change="change_apmonut(_item,item)" gcColName="{{_item.gcColName}}" value="{{_item.render_value || _item.gcDefVal}}" ng-if="edit || !isbill" ng-disabled="!_item.gcEditFlag == 1" readonly="readonly"></div> + <div ng-if="_item.gcCpnFormat == 32"><input type="text" item="{{_item}}" realitem="_item" editflag="{{_item.gcEditFlag}}" edit="edit" time ng-model="_item.render_value" ng-change="change_apmonut(_item,item)" gcColName="{{_item.gcColName}}" value="{{_item.render_value || _item.gcDefVal}}" ng-if="edit || !isbill" ng-disabled="!_item.gcEditFlag == 1" readonly="readonly"></div> + <div class="showDetail" ng-show="detail" ng-if="_item.gcCpnDisc">{{_item.gcCpnDisc}}</div> + <span ng-if="!edit && isbill">{{_item.render_value}}</span> + <input gcColName="{{_item.gcColName}}" type="text" ng-show="false" ng-if="!edit && isbill" value="{{_item.render_value}}" /> + </span> + <label ng-class="{is_red:_item.is_red || _item.nobill_cd || _item.sys_red}">{{_item.gcCpnAlias}} + <text class="manadatory_ifd" ng-if='_item.gcInputMust==1' ng-disabled="!_item.gcEditFlag == 1">*</text> + <i ng-show="type==30 && _item.nobill_cd" >无</i> + <i ng-show="type==30" title="{{_item.bhName}}">{{_item.bhName}}</i> + <i ng-show="type==30" title="{{_item.bbName}}">{{_item.bbName}}</i> + <i ng-show="type==30" title="{{_item.sys_value}}">{{_item.sys_value}}</i> + </label> + <text class="process_ifd" ng-if='_item.gcMustCpn==1' >△</text> + + </div> + <div ng-if="_item.gcCpnType === 6" ng-show="_item.gcShowFlag !== 0" class="select"> + <span ng-if="!edit && isbill">{{_item.select_value}}</span> + <span select3 bill-check="bill_data_check()" childitem="item" edit-flag="_item.gcEditFlag" edit="edit" item="_item" ng-show="edit || !isbill" ng-mouseenter="detail= true" ng-mouseleave="detail = false"> + <select + ng-if="!!_item.gcCpnMultiple" + ng-disabled="!_item.gcEditFlag == 1" + value="{{_item.render_value}}" + class="select_get" + multiple + > + <option ng-repeat="opt in _item.gcOptList" {{opt.selected?'selected':''}} value="{{opt.value}}" >{{opt.value}}</option> + </select> + <select + ng-if="!_item.gcCpnMultiple" + value="{{_item.render_value}}" + ng-disabled="!_item.gcEditFlag == 1" + class="select_get" + > + <option ng-repeat="opt in _item.gcOptList" {{opt.selected?'selected':''}} value="{{opt.value}}" >{{opt.value}}</option> + </select> + </span> + <div class="showDetail" ng-show="detail" ng-if="_item.gcCpnDisc">{{_item.gcCpnDisc}}</div> + <label ng-class="{is_red:_item.is_red || _item.nobill_cd || _item.sys_red}"> + {{_item.gcCpnAlias}} + <text class="manadatory_ifd" ng-if='_item.gcInputMust==1'>*</text> + <text class="process_ifd" ng-if='_item.gcMustCpn==1' >△</text> + <i ng-show="type==30 && _item.nobill_cd" >无</i> + <i ng-show="type==30" title="{{_item.bhName}}">{{_item.bhName}}</i> + <i ng-show="type==30" title="{{_item.bbName}}">{{_item.bbName}}</i> + <i ng-show="type==30" title="{{_item.sys_value}}">{{_item.sys_value}}</i> + </label> + </div> + <div ng-if="_item.gcCpnType === 7" ng-show="_item.gcShowFlag !== 0" class="text"> + <span ng-mouseenter="detail= true" ng-mouseleave="detail = false"> + <span ng-if="!edit && isbill">{{_item.render_value}}</span> + <input ng-blur="check_data(edit)" ng-model="_item.render_value " ng-change="change_apmonut(_item,item)" type="text" gcColName="{{_item.gcColName}}" value="{{_item.render_value || _item.gcDefVal}}" ng-show="edit || !isbill" ng-disabled="!_item.gcEditFlag == 1" > + <div class="showDetail" ng-show="detail" ng-if="_item.gcCpnDisc">{{_item.gcCpnDisc}}</div> + </span> + + <label ng-class="{is_red:_item.is_red || _item.nobill_cd || _item.sys_red}"> + {{_item.gcCpnAlias}} + <text class="manadatory_ifd" ng-if='_item.gcInputMust==1'>*</text> + <text class="process_ifd" ng-if='_item.gcMustCpn==1' >△</text> + <i ng-show="type==30 &&_item.nobill_cd" >无</i> + <i ng-show="type==30 && _item.expend_standard != undefined && _item.expend_standard_sp != 0" >{{_item.expend_standard}}</i> + <i ng-show="type==30 && _item.expend_standard_sp != undefined" >{{_item.expend_standard_sp}}</i> + <i ng-show="type==30 && _item.billMoney != undefined" title="票据:{{_item.billMoney}}">票据:{{_item.billMoney}}</i> + <i ng-show="type==30" title="{{_item.bhName}}" class="check_data">{{_item.bhName}}</i> + <i ng-show="type==30"title="{{_item.bbName}}">{{_item.bbName}}</i> + <i ng-show="type==30" title="{{_item.sys_value}}">{{_item.sys_value}}</i> + <i ng-show="type==20 && _item.standard_show"> 标准金额:{{_item.standard_money}}</i> + </label> + </div> + <div ng-if="_item.gcCpnType === 8" ng-show="_item.gcShowFlag !== 0" class="textarea"> + <span ng-mouseenter="detail= true" ng-mouseleave="detail = false"> + <textarea gcColName="{{_item.gcColName}}" ng-show="edit || !isbill" ng-disabled="!_item.gcEditFlag == 1">{{_item.render_value || _item.gcDefVal}}</textarea><i ng-show="edit || !isbill">{{item|getamount:_item}}</i> + <span ng-if="!edit && isbill">{{_item.render_value}}</span> + <text class="manadatory_ifd" ng-if='_item.gcInputMust==1'>*</text> + </span> + <label ng-class="{is_red:_item.is_red || _item.nobill_cd || _item.sys_red}"> + {{_item.gcCpnAlias}} + <div class="showDetail" ng-show="detail" ng-if="_item.gcCpnDisc">{{_item.gcCpnDisc}}</div> + <text class="process_ifd" ng-if='_item.gcMustCpn==1' >△</text> + <i ng-show="type==30_item.nobill_cd" >无</i> + <i ng-show="type==30" title="{{_item.bhName}}">{{_item.bhName}}</i> + <i ng-show="type==30"title="{{_item.bbName}}">{{_item.bbName}}</i> + <i ng-show="type==30" title="{{_item.sys_value}}">{{_item.sys_value}}</i> + </label> + </div> + <!--去掉查看表单中的下划线(子表单中)--> + <div ng-if="item.gcCpnType === 9 && type != '10' && type != '20' && type != '30'" class="hr"> + <span ng-mouseenter="detail= true" ng-mouseleave="detail = false"> + <hr> + <div class="showDetail" ng-show="detail" ng-if="_item.gcCpnDisc">{{_item.gcCpnDisc}}</div> + </span> + <label> + {{_item.gcCpnAlias}} + </label> + </div> + <div ng-if="_item.gcCpnType === 15" ng-show="_item.gcShowFlag !== 0" class="textarea col-md-12"> + <span ng-mouseenter="detail= true" ng-mouseleave="detail = false"> + <!--<p ng-if="_item.gcCpnDisc">{{item.gcCpnDisc}}</p>--> + <label ng-blur="check_data(edit)" ng-model="_item.render_value " ng-change="change_apmonut(_item,item)" value="{{_item.render_value || _item.gcDefVal}}" gcColName="{{_item.gcColName}}" ng-show="edit || !isbill" > + </label> + <span ng-if="!edit && isbill">{{_item.render_value}}</span> + <div class="showDetail" ng-show="detail" ng-if="_item.gcCpnDisc">{{_item.gcCpnDisc}}</div> + </span> + <label ng-class="{is_red:_item.is_red}" class="ng-binding"> + {{_item.gcCpnAlias}} + <i ng-show="type==30" >{{_item.bhName}}</i> + <i ng-show="type==30" >{{_item.bbName}}</i> + </label> + </div> + + </div> + + </div> + <!--<div class="cost_div" class="col-md-12" style="padding:0px;margin-top:10px;" name="journel_budget" user_id="{{budget_item.userId}}"> + <div ng-repeat="budget in item.budget_list[0].child" class="col-md-12"> + <div class="text"> + <span> + <input + type="text" + gcColName="{{budget.name}}" + jp_cd_code="{{budget.jp_cd_code}}" + ng-model="budget.jp_amount" + > + </span> + <label> + {{budget.mdDesc || budget.cd_name}} + </label> + </div> + </div> + </div>--> + </div> + </div> + <div class="col-md-12 add_jour" ng-if="type != 10 && add_jour_show && edit" ng-show="form_jour.gcCpnType == tap_type"> + <i ng-click="add_jour()" class="fa fa-plus-circle" aria-hidden="true"></i> + <span>添加行程</span> + </div> + <div class="col-md-12 add_jour" ng-if="type != 10 && add_pay_show && edit" ng-show="form_pay.gcCpnType == tap_type"> + <i ng-click="add_pay()" class="fa fa-plus-circle" aria-hidden="true"></i> + <span>添加支付方式</span> + </div> + <div class="col-md-12 tabstrip" ng-if="form_jour && form_pay"> + <ul> + <li ng-class="{'tabstrip_active':form_jour.gcCpnType == tap_type}" ng-click="toggle_tap(form_jour.gcCpnType)"><span title="{{form_jour.gcCpnAlias}}">{{form_jour.gcCpnAlias}}</span></li> + <li ng-class="{'tabstrip_active':form_pay.gcCpnType == tap_type}" ng-click="toggle_tap(form_pay.gcCpnType)"><span title="{{form_pay.gcCpnAlias}}">{{form_pay.gcCpnAlias}}</span></li> + </ul> + </div> + <!--<div class="col-md-12" ng-if="type == 30" ng-show=" rule_bill_show || show_cost_err || err_bill_show || unjoin_bill_show || all_err_show || (maindata_err && maindata_err.length != 0)">--> + <div class="col-md-12" ng-if="type == 30" ng-show=" rule_bill_show || show_cost_err || err_bill_show || unjoin_bill_show || all_err_show || (maindata_err && maindata_err.length != 0)"> + <div class="col-md-12 sub_form"> + <div class="sub_form_container cost_err"> + <label class="col-md-12 " ng-if="all_err_show">【表单中有与审定信息不符的内容,详见红字信息】</label> + <label class="col-md-12 " ng-if="show_cost_err">【费用不符合标准提示信息】</label> + <div class="col-md-12"> + <ul ng-repeat="errs in cost_err track by $index"> + <li>{{errs.journame}}:{{errs.errinfo}}</li> + </ul> + </div> + <label class="col-md-12 " ng-if="rule_bill_show">【票据内容错误信息】</label> + <div class="col-md-12"> + <ul ng-repeat="error in rule_bill track by $index"> + <li ng-class="error.ruLevel == 30 ? 'activeops' : 'inactiveops'">{{error.ruleName}}<span ng-if="error.ruLevel != 30">(警告)</span> + </li> + </ul> + </div> + <!--<label class="col-md-12 " ng-if="unjoin_bill_show || nobill_money_hint != ''">【未关联到行程的票据错误信息】</label>--> + <label class="col-md-12 " ng-if="unjoin_bill_show">【未关联到行程的票据错误信息】</label> + <div class="col-md-12"> + <!--<ul ng-if="nobill_money_hint != ''"> + <li> + <span ng-if="nobill_money_hint.expend_money != undefined && nobill_money_hint.expend_money != 0">存在</span><span ng-if="nobill_money_hint.expend_money == undefined || nobill_money_hint.expend_money == 0">无</span>未关联到行程的票据, + <span ng-if="nobill_money_hint.expend_money != undefined">票据金额为{{nobill_money_hint.expend_money}}</span> + <span ng-if="nobill_money_hint.expend_money != undefined">报销金额为{{nobill_money_hint.nobill_money}}</span> + </li> + </ul>--> + <ul ng-repeat="err in unjoin_bill.child track by $index"> + <li>{{err.billMsg}}</li> + </ul> + </div> + <!--<label class="col-md-12 " ng-if="other_cost.length > 0">【其它费用提示】</label> + <div class="col-md-12"> + <ul ng-repeat="other in other_cost track by $index"> + <li>{{other.journame}}存在其它费用, + <span ng-if="other.expend_money != undefined">票据金额为{{other.expend_money}}</span> + <span ng-if="other.bill_money != undefined">报销金额为{{other.bill_money}}</span> + </li> + </ul> + </div>--> + <label class="col-md-12 " ng-if="maindata_err && maindata_err.length != 0">【主数据缺失信息】</label> + <div class="col-md-12"> + <ul ng-repeat="errs in maindata_err track by $index"> + <li>{{errs.eViewMsg}}</li> + </ul> + </div> + </div> + </div> + </div> + + + </div> + <div ng-if="type == 30 && isbill" style="float: right;"> + <span>创建时间: {{createtime}} </span> + <span>订单状态: {{orderstatus}}</span> + </div> + <div class="btn-zone" ng-if="!isbill" > + + <!--<div style=" position: fixed;z-index:10;width: 718px;"style="position:relative">--> + + <button class="btn btn-success btn-favourite" ng-if="isguide" ng-click="goto_pre_page()" id="back">上一步</button> + <button ng-show="$parent.$parent.$parent.$parent.permission_check('edit',1)" ng-if="action != 2 && form_items" class="btn btn-success btn-favourite" ng-click="redirect_to_args('/budget_form_customize', type, business, guId, action);" id="edit_template">编辑</button> + <p ng-if="action != 2 && !form_items">您目前没有创建表单</p> + <button ng-if="action == 2 && $parent.$parent.$parent.$parent.permission_check('start',1)" class="btn btn-success btn-favourite" ng-click="enable_templates(business, type, guId, action);" id="start_template">启用该模板</button> + <button ng-if="action == 2 && $parent.$parent.$parent.$parent.permission_check('create',1)" class="btn btn-success btn-favourite" ng-click="redirect_to_args('/budget_form_customize', type, business,guId, action);" id="create_form_template">从该模板创建</button> + <!--</div>--> + </div> \ No newline at end of file diff --git a/src/static/templates/select3.html b/src/static/templates/select3.html new file mode 100644 index 0000000..245b0ad --- /dev/null +++ b/src/static/templates/select3.html @@ -0,0 +1,25 @@ +<div> + <div ng-transclude style="display:none;"></div> + <div class="select3-element"> + <div ng-style="{'background-color':'{{editFlag == 0 ? '#EBEBE4' : ''}}'}" class="select-container" gcColName="{{item.gcColName}}" value="{{item.render_value}}" ng-style="style"> + <!--<div ng-if="editFlag == 0" class="select-container" style="background-color:#EBEBE4;" gcColName="{{item.gcColName}}" value="{{item.render_value}}" ng-style="style">--> + <div + class="val-card" + ng-repeat="sel_val in sel_val_lst track by $index" + ng-show={{sel_val|myhide}} + multiple + load-data + > + {{sel_val.label}} + <a ng-click="rm_option($event);" ng-href="javascript:void(0);"> + <i ng-if="editFlag !== 0 " class="fa fa-times" aria-hidden="true" val="{{sel_val}}" style="color:#20b4aa;"></i> + <i ng-if="editFlag == 0 " class="fa" aria-hidden="true" val="{{sel_val}}" style="color:#20b4aa;"></i> + <!--<i ng-if="editFlag == 0" class="fa" ng-class="{{editFlag !== 0 ? 'fa-times' : ''}} " aria-hidden="true" val="{{sel_val}}" style="color:#20b4aa;"></i>--> + </a> + </div> + <div class="suffix"> + <i class="fa fa-caret-down" aria-hidden="true"></i> + </div> + </div> + </div> +</div> diff --git a/src/static/templates/system_config.html b/src/static/templates/system_config.html new file mode 100644 index 0000000..9f424e2 --- /dev/null +++ b/src/static/templates/system_config.html @@ -0,0 +1,341 @@ +<title>系统设置</title> +<div class="system_cfg" id="system_config"> + <div class="bread_crumb"> + <i class="fa fa-home" ></i> + <i class="fa fa-angle-right" aria-hidden="true"></i> + <label>系统设置</label> + </div> + + + + <div class="container form "> + <ul id="myTab" class="col-md-8 nav nav-tabs"> + <li class="active"><a data-toggle="tab" style="cursor:pointer" ng-click="chang_show_flag(0)"> + 系统设置</a></li> + <li><a data-toggle="tab" style="cursor:pointer" ng-click="chang_show_flag(1)">系统变量</a></li> + </ul> + <div id="system_setting" ng-show="show_flag==0"> + + <div class="row"> + <div class="col-md-8"> + <div class="panel panel-default"> + <div class="panel-heading"> + <label>系统设置</label> + </div> + <div class="panel-heading {{!parseInt(cfg_data.budget.budget_open) && 'collapse_heading'}}"> + <label>是否启用预算单</label> + <img ng-src="{{parseInt(cfg_data.budget.budget_open)?'./static/img/switch_on.png':'./static/img/switch_off.png'}}" ng-click="toggle('cfg_data.budget.budget_open');"> + <label>*(否,则无需针对其他相关参数设置)</label> + </div> + <!--<div class="panel-body" ng-if="parseInt(cfg_data.budget.budget_open)"> + <table class="table table-bordered system_cfg_frm" > + <tbody> + <tr> + <td>启用预算类型</td> + <td> + <div > + <span> + <input type="checkbox" value="0" ng-model="cfg_data.budget.budget_type[0]" > + </span> + <label> + 部门预算 + </label> + </div> + <div> + <span> + <input type="checkbox" value="1" ng-model="cfg_data.budget.budget_type[1]" > + </span> + <label> + 项目预算 + </label> + </div> + </td> + </tr> + <tr> + <td>预算管控方式</td> + <td> + <div> + <span> + <input type="radio" value="0" ng-model="cfg_data.budget.budget_method" > + </span> + <label> + 预警 + </label> + </div> + <div> + <span> + <input type="radio" value="1" ng-model="cfg_data.budget.budget_method"> + </span> + <label> + 限制 + </label> + </div> + </td> + </tr> + <tr> + <td>预算执行预警值</td> + <td> + <div> + <span> + <input type="radio" value="ratio" ng-model="budget_ctrl_value.type" ng-disabled="cfg_data.budget.budget_method === '1'"> + </span> + <label> + 比例值 + <input + type="text" + ng-model="cfg_data.budget.budget_scale" + ng-disabled="budget_ctrl_value.type === 'finger' || cfg_data.budget.budget_method === '1'" + ng-change="check_ratio_value();"> + </label> + <label class="error" ng-if="cfg_data.budget.budget_scale && !ratio_val_match">比例值类型不合法, 请重新输入。</label> + </div> + <div> + <span class="second_level" > + <input + type="radio" + value="finger" + ng-model="budget_ctrl_value.type" + ng-disabled="cfg_data.budget.budget_method === '1'"> + </span> + <label> + 数值 + <input + type="text" + ng-model="cfg_data.budget.budget_amount" + ng-disabled="budget_ctrl_value.type === 'ratio' || cfg_data.budget.budget_method === '1'" + ng-change="check_finger_value();" > + </label> + <label class="error" ng-if="cfg_data.budget.budget_amount && !finger_val_match">数值类型不合法, 请重新输入。</label> + </div> + </td> + </tr> + </tbody> + </table> + </div>--> + </div> + </div> + </div> + + <div class="row"> + <div class="col-md-8"> + <div class="panel panel-default"> + <div class="panel-heading {{!parseInt(cfg_data.apply.apply_open) && 'collapse_heading'}}"> + <label>是否启用申请单</label> + <img ng-src="{{parseInt(cfg_data.apply.apply_open)?'./static/img/switch_on.png':'./static/img/switch_off.png'}}" ng-click="toggle('cfg_data.apply.apply_open');"> + <label><!--*(否,则无需针对其他相关参数设置)--></label> + </div> + <!--<div class="panel-body" ng-if="parseInt(cfg_data.apply.apply_open)"> + <table class="table table-bordered system_cfg_frm" > + <tbody> + <tr> + <td>启用申请工具模块的业务类型</td> + <td> + <div> + <span> + <input type="checkbox" value="0" ng-model="cfg_data.apply.apply_type[0]" > + </span> + <label> + 主数据带入 + </label> + </div> + <div> + <span> + <input type="checkbox" value="1" ng-model="cfg_data.apply.apply_type[1]" > + </span> + <label> + 参加业务类型集 + </label> + </div> + </td> + </tr> + <tr> + <td>开始占用预算额度的审批节点</td> + <td> + <div> + <span> + <input type="radio" value="0" ng-model="cfg_data.apply.apply_point"> + </span> + <label> + 申请环节第一审批人 + </label> + </div> + <div> + <span> + <input type="radio" value="1" ng-model="cfg_data.apply.apply_point"> + </span> + <label> + 申请环节最后审批人 + </label> + </div> + </td> + </tr> + </tbody> + </table> + </div>--> + </div> + </div> + </div> + <div class="row"> + <div class="col-md-8"> + <div class="panel panel-default"> + <div class="panel-heading {{!parseInt(cfg_data.expend.expend_open) && 'collapse_heading'}}"> + <label>是否启用报销管理模块</label> + <img src="{{parseInt(cfg_data.expend.expend_open)?'./static/img/switch_on.png':'./static/img/switch_off.png'}}" ng-click="toggle('cfg_data.expend.expend_open');"> + <label><!--*(否,则无需针对其他相关参数设置)--></label> + </div> + <!--<div class="panel-body" ng-if="parseInt(cfg_data.expend.expend_open)"> + <table class="table table-bordered system_cfg_frm " > + <tbody> + <tr> + <td>报销金额是否允许超过原申请单金额</td> + <td> + <div> + <label style="text-align:center;"> + 是 + </label> + <label> + <img + ng-src="{{parseInt(cfg_data.expend.expend_over)?'./static/img/switch_on.png':'./static/img/switch_off.png'}}" + ng-click="toggle('cfg_data.expend.expend_over');" + > + </label> + <label style="text-align:left;margin-left:-35px;"> + 否 + </label> + <label> + *(逻辑管控点:超预算执行是否需要领导单独事项审批) + </label> + </div> + </td> + </tr> + <tr> + <td>报销金额小于等于原申请单金额情况下是否需要单独就报销事项再审批</td> + <td> + <div> + <label style="text-align:center;"> + 是 + </label> + <label> + <img + ng-src="{{parseInt(cfg_data.expend.expend_below)?'./static/img/switch_on.png':'./static/img/switch_off.png'}}" + ng-click="toggle('cfg_data.expend.expend_below');" + > + </label> + <label style="text-align:left;margin-left:-35px;"> + 否 + </label> + <label> + *(逻辑管控点:影响后续流程) + </label> + </div> + </td> + </tr> + <tr> + <td>是否允许白条报销</td> + <td> + <div> + <label style="text-align:center;"> + 是 + </label> + <label> + <img + ng-src="{{parseInt(cfg_data.expend.expend_free)?'./static/img/switch_on.png':'./static/img/switch_off.png'}}" + ng-click="toggle('cfg_data.expend.expend_free');" + > + </label> + <label style="text-align:left;margin-left:-35px;"> + 否 + </label> + <label> + *(接口传递,费用系统检查) + </label> + </div> + </td> + </tr> + <tr> + <td>是否允许跨区域单据报销(单据显示地与业务发生地不一致的情况)</td> + <td> + <div> + <label style="text-align:center;"> + 是 + </label> + <label> + <img + ng-src="{{parseInt(cfg_data.expend.expend_cross)?'./static/img/switch_on.png':'./static/img/switch_off.png'}}" + ng-click="toggle('cfg_data.expend.expend_cross');" + > + </label> + <label style="text-align:left;margin-left:-35px;"> + 否 + </label> + <label> + *(接口传递,费用系统检查) + </label> + </div> + </td> + </tr> + <tr> + <td>是否启用信息补录功能</td> + <td> + <div> + <label style="text-align:center;"> + 是 + </label> + <label> + <img + ng-src="{{parseInt(cfg_data.expend.expend_supply)?'./static/img/switch_on.png':'./static/img/switch_off.png'}}" + ng-click="toggle('cfg_data.expend.expend_supply');" + > + </label> + <label style="text-align:left;margin-left:-35px;"> + 否 + </label> + <label> + *(接口传递,费用系统检查) + </label> + </div> + </td> + </tr> + </tbody> + </table> + </div>--> + </div> + </div> + </div> + <div> + <buttton class="save_btn btn btn-success btn-favourite" ng-click="refdata()">同步组织机构</buttton> + </div> + </div> + <div id="system_variable" ng-show="show_flag==1"> + <div class="row"> + <div class="col-md-8"> + <div class="panel panel-default"> + <div class="panel-heading"> + <label>系统变量</label> + <button ng-click="add_formula()" class="add_btn btn btn-success btn-favourite btn-action">新增</button> + </div> + <table class="table table-bordered system_cfg_frm" > + <tbody> + <tr ng-repeat="formula in formulaList"> + <td>{{formula.name}}</td><td>{{formula.view}}</td><td><button ng-click="add_formula(formula)" class="btn btn-success btn-favourite btn-action">编辑</button> <button class="btn btn-success btn-favourite btn-action" ng-click="del_formula(formula)">删除</button></td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + </div> + + <div class="row" ng-show="show_flag==0"> + <div class="col-md-12"> + <button ng-show="permission_check('save_system')" class="save_btn btn btn-success btn-favourite" ng-click="save_system_cfg();" id="save_system"> 完成 </button> + </div> + </div> + </div> +</div> + + + + + + \ No newline at end of file diff --git a/src/static/templates/templates_center.html b/src/static/templates/templates_center.html new file mode 100644 index 0000000..f742715 --- /dev/null +++ b/src/static/templates/templates_center.html @@ -0,0 +1,218 @@ +<title>模板中心</title> +<div class="split_form" ng-click="show_sign_all();$event.stopPropagation();$(event).preventDefault();" id="templates_center"> + <div class="main travel_expense form_container" style="padding-left:230px;padding-right:0px;"> + <div class="content"> + <div class="container"> + <ul class="business_items forms_center"> + + <li ng-repeat="business in indus_templates"> + <div ng-mouseenter="mouseover_business_item($event)" ng-mouseleave="mouseout_business_item($event)"> + <label ng-bind="business.inName"></label> + <ul> + <li ng-bind="business.inDesc"> + <!--{{business.inDesc}}--> + </li> + </ul> + <img src="{{business.inBigIcon}}" /> + <span ng-bind="business.inName"></span> + </div> + </li> + + <!-- + <li> + <a ng-href="javascript:void(0);" ng-click="show_more();"> + <img src="./static/img/more_collapse.png" /> + <label class="bottom_label"> {{business_card_shown?'返回':'更多'}}</label> + </a> + </li> + --> + </ul> + </div> + </div> + </div> + + <div class="left" style="width:230px;"> + <div class="containr_header"> + 模板管理 + </div> + <ul class="ul-tree templates_list"> + <li ng-repeat="template in indus_templates"> + <div class="template_list_top"> + <a ng-href="javascript:void(0);" ng-click="collapse=!collapse"> + <img src="{{template.inBigIcon}}"><i style="font-style: normal;" ng-bind="template.inName"></i> + </a> + + <!--加入标志符--> + <span ng-style="template.o1" ng-click="show_sign(template);$event.stopPropagation();">i</span> + </div> + + <!--表单内容--> + <div class="list-operation" ng-show="template.num1==1&&temp_show_falg"> + <div class="list-triangle-top"> + <div class="list-triangle-top-in"></div> + <div class="list-triangle-top-out"></div> + </div> + <div class="list-group list-operation-centent" ng-init="indus_change_type=0"> + <a ng-show="permission_check('add_bussiness')" ng-href="javascript:void(0);" class="list-group-item" ng-click="template.num2=1;template.num1=0;indus_change_type=1;" id="add_bussiness">添加行业</a> + <a ng-show="permission_check('edit_bussiness')" ng-href="javascript:void(0);" class="list-group-item" ng-click="template.num2=1;template.num1=0;indus_change_type=2;" id="edit_bussiness">修改行业</a> + <a ng-show="permission_check('delete_bussiness')" ng-href="javascript:void(0);" class="list-group-item" ng-click="delete_indus(template);template.num3=0;template.num1=0;indus_change_type=3;" id="delete_bussiness">删除行业</a> + </div> + </div> + <div class="list-change" ng-show="template.num2==1||template.num3==1"> + <div class="list-triangle-top"> + <div class="list-triangle-top-in"></div> + <div class="list-triangle-top-out"></div> + </div> + <div class="list-change-centent"> + <label ng-show="template.num2==1">标题 </label><input ng-show="template.num2==1" type="text" ng-model="$parent.template_title"> + <!-- <div ng-show="permission_check('template_pass')&&template.num2==1"> --> + <div ng-show="false"> + <label>图标</label><input type="file" file-model="images" ngf-select onchange="angular.element(this).scope().img_change(this.files)" name="file" ngf-pattern="image/*" accept="image/jpg,image/jpeg,image/png" ngf-max-size="5MB" ngf-min-height="100"/> + <img src={{images}} alt="" ng-show="template.img_show_flag"> + </div> + <div class="list-button"> + <button type="button" class="btn btn-primary" ng-click="indus_change(template,indus_change_type)" id="template_pass">确定</button> + <button type="button" class="btn btn-default" data-dismiss="modal" ng-click="template.num1=0;template.num2=0;template.num3=0;template.o1={}" id="template_cancle">取消</button> + </div> + </div> + </div> + <!--表单内容结束--> + + <ul ng-if="collapse" class="list_detail_ul"> + <li class="list_detail_li"> + <div class="template_list_second"> + <!--<img src="./static/img/doc.png">--> + <img src="./static/img/rebuise_card.png"/> + <a ng-href="javascript:void(0);" ng-click="budget_show =! budget_show;$event.stopPropagation();"> + 预算单 + </a> + <!--加入标志符--> + <span ng-style="template.o1_budget" ng-click="show_sign_budget(template);$event.stopPropagation();">i</span> + </div> + <!--表单内容--> + <div class="list-operation" ng-show="template.num1_budget==1&&temp_show_falg"> + <div class="list-triangle-top"> + <div class="list-triangle-top-in"></div> + <div class="list-triangle-top-out"></div> + </div> + <div ng-show="permission_check('add_budget_template')" class="list-group list-operation-centent"> + <a ng-href="javascript:void(0);" class="list-group-item" ng-click="redirect_to_args('/budget_form_customize',10,template.inCode,'',3)" id="add_budget_template">添加预算单模版</a> + </div> + </div> + <!--表单内容结束--> + <ul ng-if="budget_show"> + <li class="list_detail" ng-repeat="budget in template.budgets"> + <a ng-href="javascript:void(0);" ng-click="show_saved_form( template.inCode,10,3,budget.guId);$event.stopPropagation();"> + {{budget.guTempName}} + </a> + <!--加入标志符--> + <span ng-style="budget.o1_detail" ng-click="show_sign_budget_detail(template,budget);$event.stopPropagation();">i</span> + <!--表单内容--> + <div class="list-operation" ng-show="budget.num1_detail==1&&temp_show_falg"> + <div class="list-triangle-top"> + <div class="list-triangle-top-in"></div> + <div class="list-triangle-top-out"></div> + </div> + <div ng-show="permission_check('delete_budget_template')" class="list-group list-operation-centent"> + <a ng-href="javascript:void(0);" class="list-group-item" ng-click="delete_form(budget);budget.num3=1;budget.num1=0" id="delete_budget_template">删除预算单模版</a> + </div> + </div> + <div class="list-change" ng-show="budget.num2==1||budget.num3==1"> + <div class="list-triangle-top"> + <div class="list-triangle-top-in"></div> + <div class="list-triangle-top-out"></div> + </div> + </div> + <!--表单内容结束--> + </li> + </ul> + </li> + <li class="list_detail_li"> + <div class="template_list_second"> + <!--<img src="./static/img/doc.png">--> + <img src="./static/img/rebuise_card.png"/> + <a ng-href="javascript:void(0);" ng-click="apply_show =!apply_show;$event.stopPropagation();"> + 申请单 + </a> + <!--加入标志符--> + <span ng-style="template.o1_apply" ng-click="show_sign_apply(template);$event.stopPropagation();">i</span> + </div> + <!--表单内容--> + <div class="list-operation" ng-show="template.num1_apply==1&&temp_show_falg"> + <div class="list-triangle-top"> + <div class="list-triangle-top-in"></div> + <div class="list-triangle-top-out"></div> + </div> + <div ng-show="permission_check('add_apply_template')" class="list-group list-operation-centent"> + <a ng-href="javascript:void(0);" class="list-group-item" ng-click="redirect_to_args('/budget_form_customize',20,template.inCode,'',3)" id="add_apply_template">添加申请单模版</a> + </div> + </div> + <!--表单内容结束--> + <ul ng-if="apply_show"> + <li class="list_detail" ng-repeat="apply in template.applys"> + <a ng-href="javascript:void(0);" ng-click="show_saved_form( template.inCode,20,3,apply.guId);$event.stopPropagation();"> + {{apply.guTempName}} + </a> + <!--加入标志符--> + <span ng-style="apply.o1_detail" ng-click="show_sign_apply_budget_detail(template,apply);$event.stopPropagation();">i</span> + <!--表单内容--> + <div class="list-operation" ng-show="apply.num1_detail==1&&temp_show_falg"> + <div class="list-triangle-top"> + <div class="list-triangle-top-in"></div> + <div class="list-triangle-top-out"></div> + </div> + <div ng-show="permission_check('delete_apply_template')" class="list-group list-operation-centent"> + <a ng-href="javascript:void(0);" class="list-group-item" ng-click="delete_form(apply);apply.num3=1;apply.num1=0" id="delete_apply_template">删除申请单模版</a> + </div> + </div> + <!--表单内容结束--> + </li> + </ul> + </li> + <li class="list_detail_li"> + <div class="template_list_second"> + <!--<img src="./static/img/doc.png">--> + <img src="./static/img/rebuise_card.png"/> + <a ng-href="javascript:void(0);" ng-click="expend_show =! expend_show;$event.stopPropagation();"> + 报销单 + </a> + <!--加入标志符--> + <span ng-style="template.o1_reimbursement" ng-click="show_sign_reimbursement(template);$event.stopPropagation();">i</span> + </div> + <!--表单内容--> + <div class="list-operation" ng-show="template.num1_reimbursement==1&&temp_show_falg"> + <div class="list-triangle-top"> + <div class="list-triangle-top-in"></div> + <div class="list-triangle-top-out"></div> + </div> + <div ng-show="permission_check('add_expend_template')" class="list-group list-operation-centent"> + <a ng-href="javascript:void(0);" class="list-group-item" ng-click="redirect_to_args('/budget_form_customize',30,template.inCode,'',3)" id="add_expend_template">添加报销单模版</a> + </div> + </div> + <!--表单内容结束--> + <ul ng-if="expend_show"> + <li class="list_detail" ng-repeat="expend in template.expends"> + <a ng-href="javascript:void(0);" ng-click="show_saved_form( template.inCode,30,3,expend.guId);$event.stopPropagation();"> + {{expend.guTempName}} + </a> + <!--加入标志符--> + <span ng-style="expend.o1_detail" ng-click="show_sign_extend_detail(template,expend);$event.stopPropagation();">i</span> + <!--表单内容--> + <div class="list-operation" ng-show="expend.num1_detail==1&&temp_show_falg"> + <div class="list-triangle-top"> + <div class="list-triangle-top-in"></div> + <div class="list-triangle-top-out"></div> + </div> + <div ng-show="permission_check('delete_expend_template')" class="list-group list-operation-centent"> + <a ng-href="javascript:void(0);" class="list-group-item" ng-click="delete_form(expend);expend.num3=1;expend.num1=0;" id="delete_expend_template">删除报销单模版</a> + </div> + </div> + <!--表单内容结束--> + </li> + </ul> + </li> + </ul> + </li> + </ul> + </div> +</div> \ No newline at end of file diff --git a/src/static/templates/to_do_list.html b/src/static/templates/to_do_list.html new file mode 100644 index 0000000..0c819da --- /dev/null +++ b/src/static/templates/to_do_list.html @@ -0,0 +1,46 @@ +<div class="split_form"> + <div class="main" style="padding-left:230px;padding-right:0px;"> + <div class="form_container"> + </div> + </div> + <div class="left" style="width:230px;"> + <ul class="ul-tree"> + <li> + <img src="./static/img/to_do.png" class="small" > + <a + ng-href="javascript:void(0);" + ng-click="redirect_to('/budget_form_customize/1')" + > + 我的待办 + </a> + </li> + <li> + <img src="./static/img/create_form.png" class="small" > + <a + ng-href="javascript:void(0);" + ng-click="redirect_to('/budget_form_customize/1')" + > + 预算单 + </a> + </li> + <li> + <img src="./static/img/form_created.png" > + <a + ng-href="javascript:void(0);" + ng-click="show_saved_form()" + > + 申请单 + </a> + </li> + <li> + <img src="./static/img/form_default.png" > + <a + ng-href="javascript:void(0);" + ng-click="show_saved_form()" + > + 报销单 + </a> + </li> + </ul> + </div> +</div> \ No newline at end of file diff --git a/src/static/templates/travel_expense.html b/src/static/templates/travel_expense.html new file mode 100644 index 0000000..b2321f9 --- /dev/null +++ b/src/static/templates/travel_expense.html @@ -0,0 +1,262 @@ +<title ng-bind="type=='10'?'预算单':''+type=='20'?'申请单':''+type=='30'?'报销单':''"> + +</title> +<div class="split_form" id="searchorder"> + <div class="main travel_expense" style="padding-left:230px;padding-right:0px;"> + <div> + <ul class="main_choose"> + <li ng-bind="my_form" ng-click="toggle_form(1)" ng-class="{'main_active':$root.my_form_type == 1}"></li> + <li ng-if="$root.permission_check(type,3)" ng-bind="my_check_form" ng-click="toggle_form(2)" ng-class="{'main_active':$root.my_form_type == 2}"></li> + </ul> + </div> + <div class="condition_search"> + <div class="condition_search_header"> + <label class="first"></label> + <label class="second" ng-show="permission_check('change',1)"> + <a + ng-href="javascript:void(0);" + ng-click="show_search_dropdown($event);" + id="change_search_condition" + > + <img src="./static/img/search_item.png"> + 更改查询内容 + </a> + </label> + </div> + <div class="search_item" > + <div class="search_column" ng-repeat="search in searchlist | filter: {selected: true}"> + <!--预算、申请、报销单号--> + <span ng-if="search.gc_cpn_type == 1 || search.gc_cpn_type == 2 || search.gc_cpn_type == 90"> + <input type="text" name="{{search.sfFieldName}}" ng-model="search.valueLeft" ng-keydown="search_keydown($event)" class="text_input"> + </span> + <span ng-if="search.gc_cpn_type == 5" style="display: inline-block;width:285px;"> + <span style="display: inline-block;width: 47%;"> + <input type="text" date editflag="1" name="{{search.sfFieldName}}" ng-model="search.valueLeft" ng-keydown="search_keydown($event)"> + </span> + <span> + ~ + </span> + <span style="display: inline-block;width: 47%;"> + <input type="text" date editflag="1" name="{{search.sfFieldName}}" ng-model="search.valueRight" ng-keydown="search_keydown($event)"> + </span> + </span> + <span ng-if="search.gc_cpn_type == 7"> + <span> + <input type="text" name="{{search.sfFieldName}}" ng-model="search.valueLeft" ng-keydown="search_keydown($event)"> + </span> + <span> + ~ + </span> + <span> + <input type="text" name="{{search.sfFieldName}}" ng-model="search.valueRight" ng-keydown="search_keydown($event)"> + </span> + </span> + <span ng-if="search.gc_cpn_type == 3 || search.gc_cpn_type == 4 || search.gc_cpn_type == 6" ng-model="search.valueLeft"> + <span select3 item="search"> + <select name="{{search.sfFieldName}}" + multiple + load-data + > + </select> + </span> + </span> + <span ng-if="search.gc_cpn_type == 11"> + <span select3 item="search"> + <select name="{{search.sfFieldName}}" + multiple + load-data + > + </select> + </span> + </span> + <span ng-if="search.gc_cpn_type == 12"> + <span select3 item="search"> + <select name="{{search.sfFieldName}}" + multiple + load-data + > + </select> + </span> + </span> + <span ng-if="search.gc_cpn_type == 13"> + + </span> + + <!--<span ng-if="search.gc_cpn_type == 0"> + <span select3 item="search"> + <select name="{{search.sfFieldName}}" + multiple + load-data + > + </select> + </span> + </span>--> + <label ng-bind="search.gc_cpn_alias"> + <!--{{search.gc_cpn_alias}}--> + </label> + </div> + <div class="search_column" ng-if="$root.my_form_type == 2"> + <label>状态</label> + <select name="status" ng-model="$root.my_status" class="myselect"> + <option ng-value="10" >已审核</option> + <option ng-value="20" >驳回</option> + <option ng-value="30" >已通过</option> + <option ng-value="50" >待审核</option> + </select> + </div> + <div class="search_column_button" ng-if="$root.my_form_type == 1"> + <span> + <span> + <button ng-show="permission_check('search',1)" class="btn btn-success btn-favourite btn-action" ng-click="refreshdata()" id="search_condition">查询</button> + </span> + </span> + </div> + <div class="search_column_button" ng-if="$root.my_form_type == 2"> + <span> + <span> + <button ng-show="permission_check(type,4)" class="btn btn-success btn-favourite btn-action" ng-click="refreshdata()" id="search_condition">查询</button> + </span> + </span> + </div> + </div> + </div> + <div class="condition_search"> + <div class="condition_search_header"> + <div class="first"> + <span><button ng-show="permission_check('new',1) && $root.my_form_type == 1" class="btn btn-success btn-favourite btn-action" ng-click="new();" id="new_order">+ 新建</button></span> + <span ng-show="permission_check('delete',1) && $root.my_form_type == 1"><a ng-href="javascript:void(0);" ng-click="delete_batch();"><img src="./static/img/travel_expense_del.png" id="delete_order">删除</a></span> + <!-- + <span><a ng-href="javascript:void(0);" ng-click="import();"><img src="./static/img/travel_expense_import.png">导入</a></span> + <span><a ng-href="javascript:void(0);" ng-click="export();"><img src="./static/img/travel_expense_export.png">导出</a></span> + --> + </div> + <label class="second"> + <!-- <span>汇总金额: <span ng-bind="sum_money"></span></span>--> + <span ng-show="permission_check('show',1)"> + <a + ng-href="javascript:void(0);" + ng-click="show_conent_dropdown($event);" + id="show_condition" + > + <img src="./static/img/travel_expense_view_content.png"> 显示内容 + </a> + </span> + <!-- + <span><img src="./static/img/travel_expense_full.png"> 全屏</span> + --> + </label> + </div> + <div class="table-content"> + <table class="table table_travel_expense"> + <thead> + <tr> + + <th style="width:70px;" ng-show="$root.my_form_type == 1"> + + </th> + <th ng-repeat="data in budget_data.headers track by $index" ng-click="content_ordering()"> + {{data.label}} + </th> + <th ng-if="$root.my_form_type == 2"> + 状态 + </th> + </tr> + </thead> + <tbody> + + <tr + class="{{($index % 2)?'odd':'even'}}" + click-detail-td + ng-repeat="data in budget_data.data track by $index" + > + <td ng-show="$root.my_form_type == 1"> + <input + type="checkbox" + style="margin:0px;height:12px;width:12px;" + bind_value="{{doc_id(data)}}" + name="bill_cbx_{{doc_id(data)}}" + ng-click="select_bill($event);" + ng-show="doc_id(data) && delete_checkbox(data)" + /> + </td> + <td class="ellipsis_td" ng-repeat="value in sub_data(data) track by $index" title="{{value}}"> + {{value}} + </td> + </tr> + </tbody> + </table> + </div> + <div class="condition_search_footer"> + <label class="first"> + <span> + <select ng-model="num_per_page" ng-change="change_page_num();"> + <option value="20" selected="selected" >20条/页</option> + <option value="50"> 50条/页</option> + <option value="100">100条/页</option> + </select> + </span> + <span ng-bind="'共'+math_ceil(rows / num_per_page)+'页'"> + <!--共{{math_ceil(rows / num_per_page)}}页--> + </span> + </label> + <label class="second"> + <span> + <a ng-href="javascript:void(0);" ng-click="pre_page();"> + <i class="fa" aria-hidden="true">上一页</i> + </a> + </span> + <span> + <a ng-href="javascript:void(0);" ng-click="next_page();"> + <i class="fa" aria-hidden="true">下一页</i> + </a> + </span> + <span>第<input type="text" value="1" ng-model="page_num" ng-blur="change_page();" ng-change="change_keycode(page_num)"> 页/ 共<span ng-bind="math_ceil(rows / num_per_page)"></span>页</span> + </label> + </div> + </div> + </div> + <div class="wait bg-modal bill_create_pop" ng-if="wait"><i class="fa fa-spinner fa-pulse fa-3x fa-fw"></i></div> + <div class="left" style="width:230px;"> + <ul class="ul-tree"> + <li> + <img src="./static/img/to_do.png" class="small" > + <a + ng-href="javascript:void(0);" + ng-click="redirect_to('/travel_expense_todos/')" + > + 我的待办 + </a> + </li> + <li ng-if="permission_check('budgetorder') && $root.budget_open == 1"> + <img src="./static/img/create_form.png" class="small" > + <a + ng-class="{'active': type=='10'}" + ng-href="javascript:void(0);" + ng-click="redirect_to('/travel_expense/1')" + > + 预 算 + </a> + </li> + <li ng-if="permission_check('applyorder') && $root.apply_open == 1"> + <img src="./static/img/form_created.png" > + <a + ng-class="{'active': type=='20'}" + ng-href="javascript:void(0);" + ng-click="redirect_to('/travel_expense/2')" + > + 申 请 + </a> + </li> + <li ng-if="permission_check('expendorder') && $root.expend_open == 1"> + <img src="./static/img/form_default.png" > + <a + ng-class="{'active': type=='30'}" + ng-href="javascript:void(0);" + ng-click="redirect_to('/travel_expense/3')" + > + 报 销 + </a> + </li> + </ul> + </div> +</div> \ No newline at end of file diff --git a/src/static/templates/travel_expense_detail_popup.html b/src/static/templates/travel_expense_detail_popup.html new file mode 100644 index 0000000..428c07a --- /dev/null +++ b/src/static/templates/travel_expense_detail_popup.html @@ -0,0 +1,118 @@ +<div class="bg-modal bill_create_pop {{edit?'bill_detail_edit':'bill_detail_pop'}}" > + <div class="pop_panel" ng-drop="true" ng-drag="$root.drag_flag" ng-mousedown="$root.drag_div($event)" ng-drag-start="$root.draging()" ng-drag-stop="$root.drag_div_end()" style="padding-top:69px;"> + <div class="heading" style="margin-top:-69px;"> + <ul> + <li ng-click="flow_status_show = false"> + 流程表单 + </li> + <!--<li ng-show="$root.permission_check('flow',1)" ng-click="flowstatus()"> + 流程状态 + </li>--> + <li ng-click="flowstatus()"> + 流程状态 + </li> + </ul> + <div class="close" ng-click="close_lock()"> + <img src="./static/img/close.png"> + </div> + </div> + <div class="body" style="border: 1px solid #ddd;height:100%;"> + <div class="audit_commit" ng-if="audit_commit_show"> + <div class="audit_commit_header"> + 审核意见 + </div> + <div class="audit_commit_content"> + <!--<p>备注</p>--> + <textarea id="audit_commit_content_textarea"></textarea> + </div> + <div class="audit_commit_btn"> + <button class="btn btn-action" ng-click="audit_commit()">确定</button> + <button class="btn btn-action" ng-click="audit_commit_close()">取消</button> + </div> + </div> + <div class="audit_commit" ng-if="back_commit_show"> + <div class="audit_commit_header"> + 退回意见 + </div> + <div class="audit_commit_content"> + <!--<p>备注</p>--> + <textarea id="back_commit_content_textarea"></textarea> + </div> + <div class="audit_commit_btn"> + <button class="btn btn-action" ng-click="back_commit()">确定</button> + <button class="btn btn-action" ng-click="back_commit_close()">取消</button> + </div> + </div> + <div class="tool_icon" style="z-index: 99999999999999999999;"><!-- (true && re_upload) || (flow_back && true) --> + <div ng-if="type==30 && $root.permission_check(bill_commit_permission) && ((flow_back || (res.length == 0 && res != undefined))&& re_upload)"> + <a ng-href="javascript:void(0);" ng-click="show_iframe();"> + <img src="./static/img/update.png" title="票据上传" /> {{bill_commit_text}} + </a> + </div> + <div ng-if="restart_review_show" id="restart_review"> + <!-- <div ng-if="1==0" id="restart_review"> --> + <a ng-href="javascript:void(0);" ng-click="restart_review()"> + <img src="./static/img/page.png" style="height:20px;width:20px"/> 重新审单 + </a> + </div> + <div id="pic" ng-if="exCouldNumber != undefined"> + <a ng-href="javascript:void(0);" ng-click="show_pic()"> + <img src="./static/img/pic.png" /> 查看票据图片 + </a> + </div> + <div class="paper_iframe" ng-if="type==30 && iframe_show"> + <div class="paper_iframe_nav"> + <span> + 票据上传 + </span> + <div class="close" ng-click="close_iframe()"> + <img src="./static/img/close.png"> + </div> + </div> + <iframe id="iframeId" style="width: 100%;overflow: auto;" name='myiframe' ng-init="show_iframe()" ng-src='{{iframe_src}}'></iframe> + </div> + <div class="order_number"><span ng-if="type == 10">预算单</span><span ng-if="type == 20">申请单</span><span ng-if="type == 30">报销单</span>号:{{order_number}}</div> + <div class="order_number" ng-if="exCouldNumber != undefined"><span ng-if="type == 30">云单编</span>号:{{exCouldNumber}}</div> + <!--<div ng-if="!edit && type == 30 && rectification_show"><a ng-click="rectification();" ng-href="javascript:void(0);"><i class="fa fa-eraser" aria-hidden="true" ></i> 重新纠偏</a></div>--> + <div ng-if="!edit && type == 30 && re_account_show"><a ng-click="re_account();" ng-href="javascript:void(0);"><i class="fa fa-pencil" aria-hidden="true" ></i> 重新记账</a></div> + <div ng-show="$root.permission_check('deletebtn',1)&&deleteflag"id="deletebtn"><a ng-click="rm_bill();" ng-href="javascript:void(0);"><i class="fa fa-trash" aria-hidden="true"></i> 删除</a></div> + <div ng-show="$root.permission_check('editbtn',1)&&editflag" id="editbtn"><a ng-click="edit_bill();" ng-class="{'allow_commit':save_btn_flag,'forbidden_commit':!save_btn_flag}" ng-href="javascript:void(0);"><i class="fa fa-pencil" aria-hidden="true" ></i> 编辑</a></div> + <div ng-show="$root.permission_check(check,2)&&commitflag&&!edit&&commitflag_bill&&submit_Pors" id="commitbtn"><a ng-click="commit_bill();" ng-class="{'allow_commit':(save_btn_flag && init_btn_flag),'forbidden_commit':(!save_btn_flag || !init_btn_flag)}" ng-href="javascript:void(0);" ><i class="fa fa-file-text-o" aria-hidden="true"></i> {{check}}</a></div> + <div ng-show="$root.permission_check('backbtn',1)&&backflag" id="backbtn"><a ng-click="back_bill();" ng-href="javascript:void(0);"><i class="fa fa-arrow-circle-o-left" aria-hidden="true"></i> 退回</a></div> + <!-- + <div><i class="fa fa-print" aria-hidden="true"></i> 打印</div> + --> + + </div> + + <div id="flowcontent" ng-show="!flow_status_show"> + <div class="form_container"> + <div saved-form type="type" isbill='true' billid="billid" edit="edit" btnflag="btnflag"></div> + <div class="row btn-zone-center" ng-show="btnflag"> + <button class="btn btn-success btn-favourite " ng-disabled="!save_btn_flag" ng-click="create_bill()">保存</button> + <button class="btn btn-success btn-favourite " ng-click="cancel();">取消</button> + </div> + </div> + </div> + + + + <div ng-show="flow_status_show" class="flowstatus" id="flow_content"> + <ul> + <li ng-repeat="response in res"> + <div style="position: relative;text-align: center;clear:left;border-right:1px solid {{response.flStepCode|borderfilter}}" class="flowdetail"> + <p>{{response.activityName}}</p> + <span style="background:{{response.flStepCode|colorfilter}};">{{response.flStepCode|stepfilter}}</span> + <!--<img src='{{response.flStepCode|statusfilter}}'/>--> + </div> + <div style="border-right:none;"> + <p>{{response.flOperatorName}} {{response.flTime}}</p> + <p>{{response.info}}</p> + </div> + </li> + </ul> + </div> + </div> + + +</div> diff --git a/src/static/templates/travel_expense_todos.html b/src/static/templates/travel_expense_todos.html new file mode 100644 index 0000000..7a55966 --- /dev/null +++ b/src/static/templates/travel_expense_todos.html @@ -0,0 +1,108 @@ +<div class="split_form"> + <div class="main travel_expense" style="padding-left:230px;padding-right:0px;"> + <div class="page-title" id="mytodos"> 我的待办 </div> + <div class="condition_search"> + <div class="task_statics"> + <div class="col-md-6"> + <div class="task_card"> + <div class="budget_card" ng-show="$parent.permission_check('termination_budget')" ng-click="more_form('/travel_expense/1')"> + <!--<div class="budget_card" ng-show="$parent.permission_check('termination_budget')" ng-click="todos.budget=true">--> + <div class="col-md-6"> + <img src="./static/img/budget_card.png"> + </div> + <div class="col-md-6"> + <label class="todos_total"> + {{budget_temp_num}} + <i class="fa-li fa fa-spinner fa-spin" ng-if="budget_temp_num_show"></i> + </label> + <label>待办预算</label> + </div> + </div> + </div> + </div> + <div class="col-md-6"> + <div class="task_card center"> + <div class="request_card" ng-show="$parent.permission_check('termination_apply')" ng-click="more_form('/travel_expense/2')"> + <!--<div class="request_card" ng-show="$parent.permission_check('termination_apply')" ng-click="todos.request=true">--> + <div class="col-md-6"> + <img src="./static/img/request_card.png"> + </div> + <div class="col-md-6"> + <label class="todos_total"> + {{apply_temp_num}} + <i class="fa-li fa fa-spinner fa-spin" ng-if="apply_temp_num_show"></i> + </label> + <label>待办申请</label> + </div> + </div> + </div> + + <div class="task_card"> + <div class="rebuise_card" ng-show="$parent.permission_check('termination_expend')" ng-click="more_form('/travel_expense/3')"> + <!--<div class="rebuise_card" ng-show="$parent.permission_check('termination_expend')" ng-click="todos.rebuise=true">--> + <div class="col-md-6"> + <img src="./static/img/rebuise_card.png" width="34px"> + </div> + <div class="col-md-6"> + <label class="todos_total"> + {{expend_temp_num}} + <i class="fa-li fa fa-spinner fa-spin" ng-if="expend_temp_num_show"></i> + </label> + <label>待办报销</label> + </div> + </div> + </div> + </div> + </div> + </div> + <div travel-expense-todos-all todos="todos" ng-if="todos.all"></div> + <div travel-expense-todos-budget todos="todos" budget_temp_num="budget_temp_num" ng-show="$parent.permission_check('termination_budget')" ng-if="todos.budget" ></div> + <div travel-expense-todos-request todos="todos" apply_temp_num="apply_temp_num" ng-show="$parent.permission_check('termination_apply')" ng-if="todos.request" ></div> + <div travel-expense-todos-rebuise todos="todos" expend_temp_num="expend_temp_num" ng-show="$parent.permission_check('termination_expend')" ng-if="todos.rebuise"></div> + </div> + + <div class="left" style="width:230px;"> + <ul class="ul-tree"> + <li ng-show="$parent.permission_check('mytodos')"> + <img src="./static/img/to_do.png" class="small" > + <a + class="active" + ng-href="javascript:void(0);" + ng-click="redirect_to('/travel_expense_todos/')" + > + 我的待办 + </a> + </li> + <li ng-if="permission_check('budgetorder')"> + <img src="./static/img/create_form.png" class="small" > + <a + ng-class="{'active': type==1}" + ng-href="javascript:void(0);" + ng-click="redirect_to('/travel_expense/1')" + > + 预 算 + </a> + </li> + <li ng-if="permission_check('applyorder')"> + <img src="./static/img/form_created.png" > + <a + ng-class="{'active': type==2}" + ng-href="javascript:void(0);" + ng-click="redirect_to('/travel_expense/2')" + > + 申 请 + </a> + </li> + <li ng-if="permission_check('expendorder')"> + <img src="./static/img/form_default.png" > + <a + ng-class="{'active': type==3}" + ng-href="javascript:void(0);" + ng-click="redirect_to('/travel_expense/3')" + > + 报 销 + </a> + </li> + </ul> + </div> +</div> \ No newline at end of file diff --git a/src/static/templates/travel_expense_todos_all.html b/src/static/templates/travel_expense_todos_all.html new file mode 100644 index 0000000..a41ebc7 --- /dev/null +++ b/src/static/templates/travel_expense_todos_all.html @@ -0,0 +1,136 @@ +<title>待办</title> +<div > + <div ng-show="$parent.permission_check('termination_budget')" class="condition_search "> + <div class="table-heading"> + <span>待办预算</span> + </div> + <div class="table-content width-heading"> + <table class="table table_travel_expense"> + <thead> + <tr > + <th ng-repeat="data in budget_data.headers track by $index"> + {{data}} + </th> + <th> + 状态 + </th> + </tr> + </thead> + <tbody> + <tr + class="{{($index % 2)?'odd':'even'}}" + click-detail-td-all + type="10" + mold="budget" + index = "{{$index}}" + ng-repeat="data in budget_data.data track by $index" + > + <!--<td style="display:none;"> + <input + type="checkbox" + bind_value="{{doc_id(data)}}" + name="bill_cbx_{{doc_id(data)}}" + ng-click="select_bill($event);" + /> + </td>--> + <td ng-repeat="value in data track by $index" title="{{value.name}}" class="ellipsis_td "> + {{value.name}} + </td> + </tr> + </tbody> + </table> + </div> + </div> + + + + + <div ng-show="$parent.permission_check('termination_apply')" class="condition_search"> + <div class="table-heading "> + <span>待办申请</span> + </div> + <div class="table-content width-heading"> + <table class="table table_travel_expense"> + <thead> + <tr > + <th ng-repeat="data in apply_data.headers track by $index"> + {{data}} + </th> + <th> + 状态 + </th> + </tr> + </thead> + <tbody> + <tr + class="{{($index % 2)?'odd':'even'}}" + click-detail-td-all + type="20" + mold="apply" + index = "{{$index}}" + ng-repeat="data in apply_data.data track by $index" + > + <td style="display:none;"> + <input + type="checkbox" + bind_value="{{doc_id(data)}}" + name="bill_cbx_{{doc_id(data)}}" + ng-click="select_bill($event);" + /> + </td> + <td ng-repeat="value in data track by $index" title="{{value.name}}" class="ellipsis_td "> + {{value.name}} + </td> + </tr> + </tbody> + </table> + </div> + </div> + + + + <div ng-show="$parent.permission_check('termination_expend')" class="condition_search"> + <div class="table-heading"> + <span>待办报销</span> + </div> + <div class="table-content width-heading"> + <table class="table table_travel_expense"> + <thead> + <tr > + <th ng-repeat="data in expend_data.headers track by $index"> + {{data}} + </th> + <th> + 状态 + </th> + </tr> + </thead> + <tbody> + <tr + class="{{($index % 2)?'odd':'even'}}" + click-detail-td-all + type="30" + mold="expend" + index = "{{$index}}" + bill_data="data" + ng-repeat="data in expend_data.data track by $index" + > + <td style="display:none;"> + <input + type="checkbox" + bind_value="{{doc_id(data)}}" + name="bill_cbx_{{doc_id(data)}}" + ng-click="select_bill($event);" + /> + </td> + <td ng-repeat="value in data track by $index" title="{{value.name}}" class="ellipsis_td "> + {{value.name}} + </td> + </tr> + </tbody> + </table> + </div> + </div> +</div> + + \ No newline at end of file diff --git a/src/static/templates/travel_expense_todos_budget.html b/src/static/templates/travel_expense_todos_budget.html new file mode 100644 index 0000000..0989e6b --- /dev/null +++ b/src/static/templates/travel_expense_todos_budget.html @@ -0,0 +1,178 @@ +<title>待办预算</title> +<div id="termination_budget"> + <div class="condition_search"> + <div class="condition_search_header"> + <label class="first">查询条件</label> + <label ng-show="$parent.permission_check('termination_budget_search')" class="second"> + <a + ng-href="javascript:void(0);" + ng-click="show_search_dropdown($event);" + id="termination_budget_search" + > + <img src="./static/img/search_item.png"> + 更改查询内容 + </a> + </label> + </div> + <div> + <div class="search_item" style="min-height: 70px;"> + <div class="search_column" ng-repeat="search in searchlist | filter: {selected: true}"> + <!--预算、申请、报销单号--> + <span ng-if="search.gc_cpn_type == 1 || search.gc_cpn_type == 2 || search.gc_cpn_type == 90"> + <input type="text" name="{{search.sfFieldName}}" ng-model="search.valueLeft"> + </span> + <span ng-if="search.gc_cpn_type == 5" style="display: inline-block;width:285px;"> + <span style="display: inline-block;width: 47%;"> + <input type="text" date name="{{search.sfFieldName}}" ng-model="search.valueLeft"> + </span> + <span> + ~ + </span> + <span style="display: inline-block;width: 47%;"> + <input type="text" date name="{{search.sfFieldName}}" ng-model="search.valueRight"> + </span> + </span> + <span ng-if="search.gc_cpn_type == 7"> + <span> + <input type="text" name="{{search.sfFieldName}}" ng-model="search.valueLeft"> + </span> + <span> + ~ + </span> + <span> + <input type="text" name="{{search.sfFieldName}}" ng-model="search.valueRight"> + </span> + </span> + <span ng-if="search.gc_cpn_type == 3 || search.gc_cpn_type == 4 || search.gc_cpn_type == 6" ng-model="search.valueLeft"> + <span select3 item="search"> + <select name="{{search.sfFieldName}}" + multiple + load-data + > + </select> + </span> + </span> + <span ng-if="search.gc_cpn_type == 11"> + <span select3 item="search"> + <select name="{{search.sfFieldName}}" + multiple + load-data + > + </select> + </span> + </span> + <span ng-if="search.gc_cpn_type == 12"> + <span select3 item="search"> + <select name="{{search.sfFieldName}}" + multiple + load-data + > + </select> + </span> + </span> + <span ng-if="search.gc_cpn_type == 13"> + + </span> + <!--<span ng-if="search.gc_cpn_type == 0"> + <span select3 item="search"> + <select name="{{search.sfFieldName}}" + multiple + load-data + > + </select> + </span> + </span>--> + <label ng-bind="search.gc_cpn_alias"> + <!--{{search.gc_cpn_alias}}--> + </label> + </div> + <div class="search_column"> + <label>状态</label> + <!--<div class="select3-element selectul" ng-click="showstatus = !showstatus" > + <div class="select-container" ng-style="style"> + {{status}} + <div class="suffix"> + <i class="fa fa-caret-down" aria-hidden="true"></i> + </div> + </div> + <ul ng-show="showstatus" class="showul" ng-click="selectstatus()" ng-model="code"> + <li ng-click="status = '待提交';showstatus = true;code = 10;"><input type="checkbox" name="status" value="10" />待提交</li> + <li ng-click="status = '已提交';showstatus = true;code = 20;"><input type="checkbox" name="status" value="20" />已提交</li> + <li ng-click="status = '待审核';showstatus = true;code = 30;"><input type="checkbox" name="status" value="30" />待审核</li> + <li ng-click="status = '审核完成';showstatus = true;code = 40;"><input type="checkbox" name="status" value="40" />审核完成</li> + <li ng-click="status = '驳回';showstatus = true;code = -1;"><input type="checkbox" name="status" value="-1" />驳回</li> + <li ng-click="status = '已完成';showstatus = true;code = 100;"><input type="checkbox" name="status" value="100" />已完成</li> + </ul> + </div>--> + <select name="status" ng-model="status" class="myselect"> + <option value="10" ng-model="status">待提交</option> + <option value="20" ng-model="status">已提交</option> + <option value="30" ng-model="status">待审核</option> + <option value="40" ng-model="status">审核完成</option> + <option value="-1" ng-model="status">驳回</option> + <option value="100" ng-model="status">已完成</option> + </select> + </div> + <div class="search_column"> + <button ng-show="$parent.permission_check('search_budget')" ng-click="refreshdata();" class="btn btn-success btn-favourite btn-action" id="search_budget">查询</button> + </div> + </div> + </div> + </div> + + <div class="condition_search"> + <div class="table-content"> + <table class="table table_travel_expense"> + <thead> + <tr> + <th ng-repeat="data in budget_data.headers track by $index"> + {{data}} + </th> + <th> + 状态 + </th> + </tr> + </thead> + <tbody> + <tr class="{{($index % 2)?'odd':'even'}}" click-detail-td-all type="10" mold="budget" index="{{$index}}" ng-repeat="data in budget_data.data track by $index"> + <td style="display:none;"> + <input type="radio" bind_value="{{doc_id(data)}}" name="bill_cbx_{{doc_id(data)}}" ng-click="select_bill($event);" /> + </td> + <td ng-repeat="value in data track by $index"> + {{value.name}} + </td> + </tr> + </tbody> + </table> + </div> + + <div class="condition_search_footer"> + <label class="first"> + <span> + <select ng-model="num_per_page" ng-change="change_page_num();"> + <option value="20" selected="selected">20条/页</option> + <option value="50"> 50条/页</option> + <option value="100">100条/页</option> + </select> + </span> + <span ng-bind="'共'+math_ceil(budget_rows/ num_per_page)+'页'"> + <!--共{{math_ceil(budget_rows/ num_per_page)}}页--> + </span> + </label> + <label class="second"> + <span> + <a ng-href="javascript:void(0);" ng-click="pre_page();"> + <i class="fa" aria-hidden="true">上一页</i> + </a> + </span> + <span> + <a ng-href="javascript:void(0);" ng-click="next_page();"> + <i class="fa" aria-hidden="true">下一页</i> + </a> + </span> + <span>第<input type="text" value="1" ng-change="change_page_num()" ng-model="page_num"> 页/ 共<span ng-bind="math_ceil(budget_rows / num_per_page)"></span>页</span> + </label> + </div> + + </div> +</div> \ No newline at end of file diff --git a/src/static/templates/travel_expense_todos_rebuise.html b/src/static/templates/travel_expense_todos_rebuise.html new file mode 100644 index 0000000..b251431 --- /dev/null +++ b/src/static/templates/travel_expense_todos_rebuise.html @@ -0,0 +1,182 @@ +<title>待办报销</title> +<div id="termination_expend"> + <div class="condition_search"> + <div class="condition_search_header"> + <label class="first">查询条件</label> + <label ng-show="$parent.permission_check('termination_expend_search')" class="second"> + <a + ng-href="javascript:void(0);" + ng-click="show_search_dropdown($event);" + id="termination_expend_search" + > + <img src="./static/img/search_item.png"> + 更改查询内容 + </a> + </label> + </div> + <div> + <div class="search_item"> + <div class="search_column" ng-repeat="search in searchlist | filter: {selected: true}"> + <!--预算、申请、报销单号--> + <span ng-if="search.gc_cpn_type == 1 || search.gc_cpn_type == 2 || search.gc_cpn_type == 90"> + <input type="text" name="{{search.sfFieldName}}" ng-model="search.valueLeft"> + </span> + <span ng-if="search.gc_cpn_type == 5" style="display: inline-block;width:285px;"> + <span style="display: inline-block;width: 47%;"> + <input type="text" date name="{{search.sfFieldName}}" ng-model="search.valueLeft"> + </span> + <span> + ~ + </span> + <span style="display: inline-block;width: 47%;"> + <input type="text" date name="{{search.sfFieldName}}" ng-model="search.valueRight"> + </span> + </span> + <span ng-if="search.gc_cpn_type == 7"> + <span> + <input type="text" name="{{search.sfFieldName}}" ng-model="search.valueLeft"> + </span> + <span> + ~ + </span> + <span> + <input type="text" name="{{search.sfFieldName}}" ng-model="search.valueRight"> + </span> + </span> + <span ng-if="search.gc_cpn_type == 3 || search.gc_cpn_type == 4 || search.gc_cpn_type == 6" ng-model="search.valueLeft"> + <span select3 item="search"> + <select name="{{search.sfFieldName}}" + multiple + load-data + > + </select> + </span> + </span> + <span ng-if="search.gc_cpn_type == 11"> + <span select3 item="search"> + <select name="{{search.sfFieldName}}" + multiple + load-data + > + </select> + </span> + </span> + <span ng-if="search.gc_cpn_type == 12"> + <span select3 item="search"> + <select name="{{search.sfFieldName}}" + multiple + load-data + > + </select> + </select> + </span> + </span> + <span ng-if="search.gc_cpn_type == 13"> + + </span> + <!--<span ng-if="search.gc_cpn_type == 0"> + <span select3 item="search"> + <select name="{{search.sfFieldName}}" + multiple + load-data + > + </select> + </span> + </span>--> + <label> + {{search.gc_cpn_alias}} + </label> + </div> + <div class="search_column"> + <label>状态</label> + <!--<div class="select3-element selectul" ng-click="showstatus = !showstatus" > + <div class="select-container" ng-style="style"> + {{status}} + <div class="suffix"> + <i class="fa fa-caret-down" aria-hidden="true"></i> + </div> + </div> + <ul ng-show="showstatus" class="showul" ng-click="selectstatus()"> + <li ng-click="status = '待提交';showstatus = true;code = 10;">待提交</li> + <li ng-click="status = '已提交';showstatus = true;code = 20;">已提交</li> + <li ng-click="status = '待审核';showstatus = true;code = 30;">待审核</li> + <li ng-click="status = '审核完成';showstatus = true;code = 40;">审核完成</li> + <li ng-click="status = '驳回';showstatus = true;code = -1;">驳回</li> + <li ng-click="status = '已完成';showstatus = true;code = 100;">已完成</li> + </ul> + </div>--> + <select name="status" ng-model="status" class="myselect"> + <option value="10" ng-model="status">待提交</option> + <option value="20" ng-model="status">已提交</option> + <option value="30" ng-model="status">待审核</option> + <option value="40" ng-model="status">审核完成</option> + <option value="-1" ng-model="status">驳回</option> + <option value="100" ng-model="status">已完成</option> + </select> + </div> + <div class="search_column"> + <span> + <span> + <button ng-show="$parent.permission_check('search_expend')" ng-click="refreshdata();" class="btn btn-success btn-favourite btn-action" id="search_expend">查询</button> + </span> + </span> + </div> + </div> + </div> + </div> + + <div class="condition_search"> + <div class="table-content"> + <table class="table table_travel_expense"> + <thead> + <tr> + <th ng-repeat="data in budget_data.headers track by $index"> + {{data}} + </th> + <th> + 状态 + </th> + </tr> + </thead> + <tbody> + <tr class="{{($index % 2)?'odd':'even'}}" click-detail-td-all type="30" mold="expend" index="{{$index}}" ng-repeat="data in budget_data.data track by $index"> + <td style="display:none;"> + <input type="checkbox" bind_value="{{doc_id(data)}}" name="bill_cbx_{{doc_id(data)}}" ng-click="select_bill($event);" /> + </td> + <td ng-repeat="value in data track by $index"> + {{value.name}} + </td> + </tr> + </tbody> + </table> + </div> + + <div class="condition_search_footer"> + <label class="first"> + <span> + <select ng-model="num_per_page" ng-change="change_page_num();"> + <option value="20" selected="selected">20条/页</option> + <option value="50"> 50条/页</option> + <option value="100">100条/页</option> + </select> + </span> + <span ng-bind="'共'+math_ceil(expend_rows / num_per_page)+'页'"> + <!--共{{math_ceil(expend_rows / num_per_page)}}页--> + </span> + </label> + <label class="second"> + <span> + <a ng-href="javascript:void(0);" ng-click="pre_page();"> + <i class="fa" aria-hidden="true">上一页</i> + </a> + </span> + <span> + <a ng-href="javascript:void(0);" ng-click="next_page();"> + <i class="fa" aria-hidden="true">下一页</i> + </a> + </span> + <span>第<input type="text" value="1" ng-change="change_page_num()" ng-model="page_num"> 页/ 共<span ng-bind="math_ceil(expend_rows / num_per_page)"></span>页</span> + </label> + </div> + </div> +</div> \ No newline at end of file diff --git a/src/static/templates/travel_expense_todos_request.html b/src/static/templates/travel_expense_todos_request.html new file mode 100644 index 0000000..641084f --- /dev/null +++ b/src/static/templates/travel_expense_todos_request.html @@ -0,0 +1,181 @@ +<title>待办申请</title> +<div id="termination_apply"> + <div class="condition_search"> + <div class="condition_search_header"> + <label class="first">查询条件</label> + <label ng-show="$parent.permission_check('termination_apply_search')" class="second"> + <a + ng-href="javascript:void(0);" + ng-click="show_search_dropdown($event);" + id="termination_apply_search" + > + <img src="./static/img/search_item.png"> + 更改查询内容 + </a> + </label> + </div> + <div> + <div class="search_item"> + <div class="search_column" ng-repeat="search in searchlist | filter: {selected: true}"> + <!--预算、申请、报销单号--> + <span ng-if="search.gc_cpn_type == 1 || search.gc_cpn_type == 2 || search.gc_cpn_type == 90"> + <input type="text" name="{{search.sfFieldName}}" ng-model="search.valueLeft"> + </span> + <span ng-if="search.gc_cpn_type == 5" style="display: inline-block;width:285px;"> + <span style="display: inline-block;width: 47%;"> + <input type="text" date name="{{search.sfFieldName}}" ng-model="search.valueLeft"> + </span> + <span> + ~ + </span> + <span style="display: inline-block;width: 47%;"> + <input type="text" date name="{{search.sfFieldName}}" ng-model="search.valueRight"> + </span> + </span> + <span ng-if="search.gc_cpn_type == 7"> + <span> + <input type="text" name="{{search.sfFieldName}}" ng-model="search.valueLeft"> + </span> + <span> + ~ + </span> + <span> + <input type="text" name="{{search.sfFieldName}}" ng-model="search.valueRight"> + </span> + </span> + <span ng-if="search.gc_cpn_type == 3 || search.gc_cpn_type == 4 || search.gc_cpn_type == 6" ng-model="search.valueLeft"> + <span select3 item="search"> + <select name="{{search.sfFieldName}}" + multiple + load-data + > + </select> + </span> + </span> + <span ng-if="search.gc_cpn_type == 11"> + <span select3 item="search"> + <select name="{{search.sfFieldName}}" + multiple + load-data + > + </select> + </span> + </span> + <span ng-if="search.gc_cpn_type == 12"> + <span select3 item="search"> + <select name="{{search.sfFieldName}}" + multiple + load-data + > + </select> + </span> + </span> + <span ng-if="search.gc_cpn_type == 13"> + + </span> + <!--<span ng-if="search.gc_cpn_type == 0"> + <span select3 item="search"> + <select name="{{search.sfFieldName}}" + multiple + load-data + > + </select> + </span> + </span>--> + <label> + {{search.gc_cpn_alias}} + </label> + </div> + <div class="search_column"> + <label>状态</label> + <!--<div class="select3-element selectul" ng-click="showstatus = !showstatus" > + <div class="select-container" ng-style="style"> + {{status}} + <div class="suffix"> + <i class="fa fa-caret-down" aria-hidden="true"></i> + </div> + </div> + <ul ng-show="showstatus" class="showul" ng-click="selectstatus()"> + <li ng-click="status = '待提交';showstatus = true;code = 10;">待提交</li> + <li ng-click="status = '已提交';showstatus = true;code = 20;">已提交</li> + <li ng-click="status = '待审核';showstatus = true;code = 30;">待审核</li> + <li ng-click="status = '审核完成';showstatus = true;code = 40;">审核完成</li> + <li ng-click="status = '驳回';showstatus = true;code = -1;">驳回</li> + <li ng-click="status = '已完成';showstatus = true;code = 100;">已完成</li> + </ul> + </div>--> + <select name="status" ng-model="status" class="myselect"> + <option value="10" ng-model="status">待提交</option> + <option value="20" ng-model="status">已提交</option> + <option value="30" ng-model="status">待审核</option> + <option value="40" ng-model="status">审核完成</option> + <option value="-1" ng-model="status">驳回</option> + <option value="100" ng-model="status">已完成</option> + </select> + </div> + <div class="search_column"> + <span> + <span> + <button ng-show="$parent.permission_check('search_apply')" ng-click="refreshdata();" class="btn btn-success btn-favourite btn-action" id="search_apply">查询</button> + </span> + </span> + </div> + </div> + </div> + </div> + + <div class="condition_search"> + <div class="table-content"> + <table class="table table_travel_expense"> + <thead> + <tr> + <th ng-repeat="data in budget_data.headers track by $index"> + {{data}} + </th> + <th> + 状态 + </th> + </tr> + </thead> + <tbody> + <tr class="{{($index % 2)?'odd':'even'}}" click-detail-td-all type="20" mold="apply" index="{{$index}}" ng-repeat="data in budget_data.data track by $index"> + <td style="display:none;"> + <input type="checkbox" bind_value="{{doc_id(data)}}" name="bill_cbx_{{doc_id(data)}}" ng-click="select_bill($event);" /> + </td> + <td ng-repeat="value in data track by $index"> + {{value.name}} + </td> + </tr> + </tbody> + </table> + </div> + + <div class="condition_search_footer"> + <label class="first"> + <span> + <select ng-model="num_per_page" ng-change="change_page_num();"> + <option value="20" selected="selected">20条/页</option> + <option value="50"> 50条/页</option> + <option value="100">100条/页</option> + </select> + </span> + <span ng-bind="'共'+math_ceil(apply_rows / num_per_page)+'页'"> + <!--共{{math_ceil(apply_rows / num_per_page)}}页--> + </span> + </label> + <label class="second"> + <span> + <a ng-href="javascript:void(0);" ng-click="pre_page();"> + <i class="fa" aria-hidden="true">上一页</i> + </a> + </span> + <span> + <a ng-href="javascript:void(0);" ng-click="next_page();"> + <i class="fa" aria-hidden="true">下一页</i> + </a> + </span> + <span>第<input type="text" value="1" ng-change="change_page_num()" ng-model="page_num"> 页/ 共<span ng-bind="math_ceil(apply_rows / num_per_page)"></span>页</span> + </label> + </div> + </div> +</div> \ No newline at end of file diff --git a/src/static/templates/user_select.html b/src/static/templates/user_select.html new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/static/templates/user_select.html diff --git a/src/static/templates/work_flow.html b/src/static/templates/work_flow.html new file mode 100644 index 0000000..5f6895a --- /dev/null +++ b/src/static/templates/work_flow.html @@ -0,0 +1,48 @@ +<title>工作流配置</title> +<h1 class="flowtitle">工作流配置</h1> +<div id="workflowcontent"> + <div class="workflow_part" ng-if="$root.budget_open == 1"> + <div class="workflow_btn" style="display: flex;justify-content:center;"> + <img src="./static/img/workflow_ys.png" alt="" /> + </div> + <div class="part"> + <p>状态: <span style="color:{{budgetcolor}}" ng-bind="budgetcreateflag"></span></p> + <div class="kongbai"></div> + <a ng-show="permission_check('config_budget')" class="btn_class btn btn-favourite budgetbtn" ng-disabled="!buDefFlag" ng-click="createflow(10)" href="javascript:void(0)" target="_blank" id="config_budget">配置流程</a> + <div class="kongbai"></div> + <button ng-show="permission_check('econfig_budget')" class="btn_class btn btn-favourite" ng-disabled="!buDef_bushuFlag" ng-click="configb()" ng-show="bconfigflag" id="econfig_budget">部署</button> + </div> + <!--<i class="workflow_type glyphicon glyphicon-list-alt"> 预算流程</i>--> + </div> + <div class="workflow_part" ng-if="$root.apply_open == 1"> + <div class="workflow_btn" style="display: flex;justify-content: center;"> + <img src="./static/img/workflow_sq.png" alt="" /> + </div> + <div class="part"> + <p>状态: <span style="color:{{applycolor}}" ng-bind="applycreateflag"></span></p> + <div class="kongbai"></div> + <a ng-show="permission_check('config_apply')" class="btn btn-favourite applybtn" ng-disabled="!apDefFlag" ng-click="createflow(20)" href="javascript:void(0)" target="_blank" id="config_apply">配置流程</a> + <div class="kongbai"></div> + <button ng-show="permission_check('econfig_apply')" class="btn btn-favourite" ng-disabled="!apDef_bushuFlag" ng-click="configa()" ng-show="aconfigflag" id="econfig_apply">部署</button> + </div> + <!--<i class="workflow_type glyphicon glyphicon-calendar"> 申请流程</i>--> + </div> + <div class="workflow_part" ng-if="$root.expend_open == 1"> + <div class="workflow_btn" style="display: flex;justify-content: center;"> + <img src="./static/img/workflow_bx.png" alt="" /> + </div> + <div class="part"> + <p>状态: <span style="color:{{expendcolor}}" ng-bind="expendcreateflag"></span></p> + <div class="kongbai"></div> + <a ng-show="permission_check('config_expend')" class="btn btn-favourite expendbtn" ng-disabled="!exDefFlag" ng-click="createflow(30)" href="javascript:void(0)" target="_blank" id="config_expend">配置流程</a> + <div class="kongbai"></div> + <button ng-show="permission_check('econfig_expend')" class="btn btn-favourite" ng-disabled="!exDef_bushuFlag" ng-click="confige()" ng-show="econfigflag" id="econfig_expend">部署</button> + </div> + <!--<i class="workflow_type glyphicon glyphicon-credit-card"> 报销流程</i>--> + </div> + + +</div> + <div class="back_btn"> + <button class="btn btn-success btn-favourite" style="width:80px;height:40px;font-size:18px;display: block;text-align: center;margin-left:40%;margin-top:10%;" ng-click="redirect_to('cfg_center')">返回</button> + </div> \ No newline at end of file diff --git "a/src/\345\267\256\346\227\205\351\203\250\347\275\262\350\257\264\346\230\216.txt" "b/src/\345\267\256\346\227\205\351\203\250\347\275\262\350\257\264\346\230\216.txt" new file mode 100644 index 0000000..ceffae2 --- /dev/null +++ "b/src/\345\267\256\346\227\205\351\203\250\347\275\262\350\257\264\346\230\216.txt" @@ -0,0 +1,5 @@ +1.���� 10.4.32.55 +���� /usr/local/nginx���ļ����� +2.Ȼ���ļ����µ�html/static�ļ��б��� +3.��ѹdistѹ������ʹ��dist/static�ļ����滻��/usr/local/nginx/html/static�ļ��У� +����ʹ��dist/index.html �滻/usr/local/nginx/html/index.html -- Gitblit v1.8.0