Browse Source

车船税相关

zhongzewei 6 years ago
parent
commit
2bfed475c6

+ 5 - 0
modules/all_models/engineering_lib.js

@@ -63,6 +63,11 @@ let modelSchema = {
         type: Schema.Types.Mixed,
         default: []
     },
+    //车船税文件
+    vvTax_lib: {
+        type: Schema.Types.Mixed,
+        default: []
+    },
     //设置人材机显示列
     glj_col:{
         showAdjustPrice:Boolean//是否显示调整价列

+ 27 - 0
modules/all_models/vehicle_vessel_tax_items.js

@@ -0,0 +1,27 @@
+'use strict';
+
+/**
+ *
+ *
+ * @author Zhong
+ * @date 2019/2/18
+ * @version
+ */
+const mongoose = require('mongoose');
+const Schema = mongoose.Schema;
+
+const vehicleVesselTax = new Schema({
+    libID: String,
+    ID: String,
+    code: String,
+    name: String,
+    spec: String,
+    unit: String,
+    vehicleVesselTax: Number, //车船税
+    useTax: Number, //使用税
+    useTaxMeasure: Number, //使用税计量吨
+    annualMonth: Number, //年工作月
+    annualMachine: Number, //年工作台班
+}, {versionKey: false});
+
+mongoose.model('std_vehicleVesselTax_items', vehicleVesselTax, 'std_vehicleVesselTax_items');

+ 26 - 0
modules/all_models/vehicle_vessel_tax_lib.js

@@ -0,0 +1,26 @@
+'use strict';
+
+/**
+ *
+ *
+ * @author Zhong
+ * @date 2019/2/18
+ * @version
+ */
+
+/*
+* 车船税编辑器
+* */
+const mongoose = require('mongoose');
+const Schema = mongoose.Schema;
+const oprSchema = require('../all_schemas/opr_schema');
+
+const vehicleVesselTaxLib = new Schema({
+    ID: String,
+    name: String,
+    creator: String,
+    createDate: Date,
+    recentOpr: [oprSchema]
+}, {versionKey: false});
+
+mongoose.model('std_vehicleVesselTax_lib', vehicleVesselTaxLib, 'std_vehicleVesselTax_lib');

+ 3 - 0
modules/bills_lib/controllers/bills_permissionController.js

@@ -136,6 +136,9 @@ class billsPermContr extends baseController{
                 if (!trigger || !imgTriggers.includes(trigger)) {
                     throw '该操作没有上传权限'
                 }
+                if (!fs.existsSync(uploadDir)) {
+                    fs.mkdirSync(uploadDir);
+                }
                 //根据触发源放置文件到相关文件夹
                 let triggerPath = path.join(uploadDir, trigger);
                 if (!fs.existsSync(triggerPath)) {

+ 14 - 1
modules/users/controllers/compilation_controller.js

@@ -23,6 +23,7 @@ import mainColFacade from "../../main_col_lib/facade/main_col_facade";
 import billTemplateFacade from "../../bills_template_lib/facade/bills_template_facade";
 import projectFeatureFacade from "../../project_feature_lib/facade/project_feature_facade";
 import progressiveFacade from "../../progressive_interval_lib/facade/progressive_facade";
+import vvTaxFacade from "../../vehicleVessel_lib/facade/vvTax_facade";
 import {default as category, List as categoryList} from "../../common/const/category_const.js";
 let config = require("../../../config/config.js");
 const fs = require('fs');
@@ -181,7 +182,16 @@ class CompilationController extends BaseController {
         let section = request.params.section;
         let selectedCompilation = request.session.selectedCompilation;
 
-        let compilationList = [],billList = [], rationList = [], gljList = [],feeRateList = [], libData = {}, billsTemplateData = [],featureList = [],progressiveList = [];
+        let compilationList = [],
+            billList = [],
+            rationList = [],
+            gljList = [],
+            feeRateList = [],
+            libData = {},
+            billsTemplateData = [],
+            featureList = [],
+            progressiveList = [],
+            vvTaxList = [];
         let valuationData = {}, valuationList = {}, artificialCoefficientList = [], calculationList = [], billsGuidanceList = [], mainTreeColList = [];
         let billTemplateList = [];
         try {
@@ -241,6 +251,8 @@ class CompilationController extends BaseController {
             //获取累进区间库
             progressiveList = await progressiveFacade.findByCondition({},null,false);
 
+            //获取车船税库
+            vvTaxList = await vvTaxFacade.findByCondition({}, false, false);
 
         } catch (error) {
             console.log(error);
@@ -268,6 +280,7 @@ class CompilationController extends BaseController {
             billsGuidanceList: JSON.stringify(billsGuidanceList),
             featureList:JSON.stringify(featureList),
             progressiveList:JSON.stringify(progressiveList),
+            vvTaxList: JSON.stringify(vvTaxList),
             layout: 'users/views/layout/layout',
             LicenseKey:config.getLicenseKey(process.env.NODE_ENV)
         };

+ 3 - 0
modules/users/models/engineering_lib_model.js

@@ -184,6 +184,9 @@ class EngineeringLibModel extends BaseModel {
         //判断累进区间库
         data.progressive_lib = this._validLib(data.progressive_lib);
 
+        //判断车船税
+        data.vvTax_lib = this._validLib(data.vvTax_lib);
+
         //计税方式组合
         data.tax_group = this._validLib(data.tax_group);
 

+ 106 - 0
modules/vehicleVessel_lib/controllers/vvTax_controller.js

@@ -0,0 +1,106 @@
+'use strict';
+
+/**
+ *
+ *
+ * @author Zhong
+ * @date 2019/1/25
+ * @version
+ */
+
+import BaseController from "../../common/base/base_controller";
+import vvTaxFacade from "../facade/vvTax_facade";
+let config = require("../../../config/config.js");
+
+class VVTaxController extends BaseController{
+    async main(request, response) {
+        let vvTaxLibs = await vvTaxFacade.findByCondition({},false,false);
+        let randerData = {
+            title:'车船税库',
+            userAccount: request.session.managerData.username,
+            userID: request.session.managerData.userID,
+            vvTaxLibs:vvTaxLibs,
+            layout: 'maintain/common/html/layout'
+        };
+        response.render("maintain/vehicleVesselTax_lib/html/main", randerData);
+    }
+    async addLib(request, response){
+        try {
+            await vvTaxFacade.addLib(request.body);
+        }catch (error) {
+            console.log(error);
+        }
+        response.redirect(request.headers.referer);
+    }
+    async findLib(request, response){
+        let result={
+            error:0
+        };
+        try {
+            let data = request.body.data;
+            data = JSON.parse(data);
+            let conditions={'ID' : data.ID};
+            let resultData = await vvTaxFacade.findByCondition(conditions);
+            result.data=resultData;
+        }catch (err){
+            console.log(err);
+            result.error=1;
+            result.message = err.message;
+        }
+        response.json(result);
+    }
+    async saveLib(request, response){
+        let result={
+            error:0
+        };
+        try {
+            let data = request.body.data;
+            data = JSON.parse(data);
+            let resultData= await vvTaxFacade.saveLib(data);
+            result.data=resultData;
+        }catch (err){
+            console.log(err);
+            result.error=1;
+            result.message = err.message;
+        }
+        response.json(result);
+    }
+    async deleteLibByID(request,response){
+        let result={
+            error:0
+        };
+        try {
+            let data = request.body.data;
+            data = JSON.parse(data);
+            let resultData= await vvTaxFacade.deleteLibByID(data.ID);
+            result.data=resultData;
+        }catch (err){
+            console.log(err);
+            result.error=1;
+            result.message = err.message;
+        }
+        response.json(result);
+    }
+    async edit(request,response){
+        //先取出替换库信息:
+        let libID = request.params.libID;
+        let vvTaxLib = await vvTaxFacade.findByCondition({'ID':libID}, true);
+        if(vvTaxLib){
+            let randerData = {
+                title:'车船税库',
+                mainURL:'/vvTax/main',
+                libName:vvTaxLib.name,
+                userAccount: request.session.managerData.username,
+                userID: request.session.managerData.userID,
+                vvTaxList:JSON.stringify(vvTaxLib.data),
+                libID:libID,
+                LicenseKey:config.getLicenseKey(process.env.NODE_ENV),
+                layout: 'maintain/common/html/edit_layout'
+            };
+            response.render("maintain/vehicleVesselTax_lib/html/edit", randerData);
+        }else {
+            response.redirect(request.headers.referer);
+        }
+    }
+}
+export default VVTaxController;

+ 64 - 0
modules/vehicleVessel_lib/facade/vvTax_facade.js

@@ -0,0 +1,64 @@
+'use strict';
+
+/**
+ *
+ *
+ * @author Zhong
+ * @date 2019/1/25
+ * @version
+ */
+
+import mongoose from "mongoose";
+const uuidV1 = require('uuid/v1');
+let moment = require("moment");
+const vvTaxLibModel = mongoose.model('std_vehicleVesselTax_lib');
+const vvTaxModel = mongoose.model('std_vehicleVesselTax_items');
+
+
+let vvTaxLib = {
+    findByCondition:async function(conditions,withData=false,single=true){
+        if(single == true){
+            let lib = await vvTaxLibModel.findOne(conditions);
+            if (withData) {
+                lib._doc.data = await vvTaxModel.find({libID: conditions.ID}, {_id: 0, libID:0, ID: 0});
+            }
+            return lib._doc;
+        }else {
+            return await  vvTaxLibModel.find(conditions);
+        }
+    },
+    addLib : async function (data){
+        let now = new Date().getTime();
+        let dateStr = moment(now).format('YYYY-MM-DD HH:mm:ss');
+        let newLib = {
+            creator: data.userAccount,
+            createDate: now,
+            recentOpr: [{operator: data.userAccount, operateDate: dateStr}],
+            name: data.name,
+        };
+        newLib.ID = uuidV1();
+        return await vvTaxLibModel.create(newLib);
+    },
+    saveLib:async function(param) {
+        if (param.edit) {//更改保存车船税具体数据
+            await vvTaxModel.deleteMany({libID: param.query.ID});
+            let tasks = [];
+            for (let data of param.data.data) {
+                data.libID = param.query.ID;
+                data.ID = uuidV1();
+                tasks.push({insertOne: {document: data}});
+            }
+            if (tasks.length > 0) {
+                await vvTaxModel.bulkWrite(tasks);
+            }
+        } else {
+            return await vvTaxLibModel.findOneAndUpdate(param.query,param.data,{new:true});
+        }
+    },
+    deleteLibByID:async function(ID){
+        await vvTaxLibModel.deleteOne({ID: ID});
+        return await vvTaxModel.deleteMany({libID: ID});
+    },
+};
+
+export default vvTaxLib;

+ 26 - 0
modules/vehicleVessel_lib/routes/vvTax_route.js

@@ -0,0 +1,26 @@
+'use strict';
+
+/**
+ *
+ *
+ * @author Zhong
+ * @date 2019/2/18
+ * @version
+ */
+
+let express = require("express");
+let vvTaxRouter =express.Router();
+import VVTaxController from "../controllers/vvTax_controller";
+let vvTaxController = new VVTaxController();
+
+module.exports =function (app){
+
+    vvTaxRouter.get("/main", vvTaxController.auth, vvTaxController.init, vvTaxController.main);
+    vvTaxRouter.post("/addLib", vvTaxController.auth, vvTaxController.init, vvTaxController.addLib);
+    vvTaxRouter.post("/findLib", vvTaxController.auth, vvTaxController.init, vvTaxController.findLib);
+    vvTaxRouter.post("/saveLib", vvTaxController.auth, vvTaxController.init, vvTaxController.saveLib);
+    vvTaxRouter.post("/deleteLibByID", vvTaxController.auth, vvTaxController.init, vvTaxController.deleteLibByID);
+    vvTaxRouter.get("/edit/:libID", vvTaxController.auth, vvTaxController.init, vvTaxController.edit);
+    app.use("/vvTax", vvTaxRouter);
+};
+

+ 8 - 4
web/maintain/common/js/util.js

@@ -19,13 +19,13 @@ async function initCompilationSelect() {
 }
 
 //对JSON对象排序,按属性key的顺序显示
-function sortJson(obj) {
+function sortJson(obj, compare) {
     if(obj === null){
         return null;
     }
     if(obj instanceof Array){
         for(let o in obj){
-            obj[o] = sortJson(obj[o]);
+            obj[o] = sortJson(obj[o], compare);
         }
         return obj;
     }else if(typeof obj == 'object'){
@@ -34,9 +34,13 @@ function sortJson(obj) {
         for(let key in obj){
             arr.push(key);
         }
-        arr.sort();
+        if (compare) {
+            arr.sort(compare);
+        } else {
+            arr.sort();
+        }
         for(let a of arr){
-            newOjb[a]= sortJson(obj[a]);
+            newOjb[a]= sortJson(obj[a], compare);
         }
         return newOjb;
     }else {

+ 37 - 0
web/maintain/vehicleVesselTax_lib/html/edit.html

@@ -0,0 +1,37 @@
+<nav class="navbar navbar-toggleable-lg justify-content-between navbar-light p-0 second_header">
+    <ul class="nav nav-tabs" role="tablist">
+        <li class="nav-item">
+            <a class="nav-link active px-3" href="javascript: void(0);">车船税</a>
+        </li>
+    </ul>
+</nav>
+
+<div class="main">
+    <div class="content" >
+        <div class="container-fluid" >
+        <div class=" col-lg-12 p-0">
+            <nav class="navbar sticky-top navbar-toggleable-md navbar-light bg-faded tools-bar">
+                <div class="collapse navbar-collapse" id="navbarNav">
+                    <div class="tools-btn btn-group align-top">
+                        <a href="javascript:void(0)" class="btn btn-sm" id="createNormal"><i class="fa fa-list-alt" aria-hidden="true"></i> 生成默认</a>
+                        <a href="javascript:void(0)" class="btn btn-sm" id="format"><i class="fa fa-list-alt" aria-hidden="true"></i> 校验格式</a>
+                        <a href="javascript:void(0)" class="btn btn-sm" id="save"><i class="fa fa-floppy-o" aria-hidden="true"></i> 保存</a>
+                    </div>
+                </div>
+            </nav>
+            <textarea class="form-control" id="vvTaxList" rows="38"></textarea>
+        </div>
+        </div>
+        <input type="hidden" id="libID" value="<%= libID %>">
+        <input type="hidden" id="originalVVTax" value="<%= vvTaxList %>">
+    </div>
+</div>
+
+
+
+<script type="text/javascript">
+
+</script>
+<script type="text/javascript" src="/public/web/PerfectLoad.js"></script>
+<script type="text/javascript" src="/lib/json/json2.js"></script>
+<script type="text/javascript" src="/web/maintain/vehicleVesselTax_lib/js/vvTax_edit.js"></script>

+ 108 - 0
web/maintain/vehicleVesselTax_lib/html/main.html

@@ -0,0 +1,108 @@
+<div class="main">
+    <div class="content">
+        <div class="container-fluid">
+            <div class="row">
+                <div class="col-md-5">
+                    <div class="warp-p2 mt-3">
+                        <table class="table table-hover table-bordered">
+                            <thead><tr><th >库名称</th><th width="160">添加时间</th><th width="120">操作</th></tr></thead>
+                            <tbody id="showArea">
+                            <% for(let lib of vvTaxLibs){ %>
+                            <tr class="libTr">
+                                <td id="<%= lib.ID%>"><a href="/vvTax/edit/<%= lib.ID%>"><%= lib.name%></a></td>
+                                <td><%= moment(lib.createDate).format('YYYY-MM-DD')%></td>
+                                <td>
+                                    <a style="color: #0275d8" onclick='getVVTaxLib("<%= lib.ID%>")' title="编辑"><i class="fa fa-pencil-square-o"></i></a>
+                                    <a style="color: #0275d8" onclick='showDeleteModal("<%= lib.ID%>")' class="text-danger" title="删除"><i class="fa fa-remove"></i></a>
+                                </td>
+                            </tr>
+                            <% } %>
+                            </tbody>
+                        </table>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+
+<!--弹出添加-->
+<div class="modal fade" id="add" data-backdrop="static" style="display: none;" aria-hidden="true">
+    <div class="modal-dialog" role="document">
+        <div class="modal-content">
+            <div class="modal-header">
+                <h5 class="modal-title">添加车船税库</h5>
+                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+                    <span aria-hidden="true">×</span>
+                </button>
+            </div>
+            <div class="modal-body">
+                <form id="addLibForm" method="post" action="/vvTax/addLib" enctype="application/x-www-form-urlencoded21">
+                    <div class="form-group">
+                        <label>库名称</label>
+                        <input id="name" name="name" class="form-control" placeholder="请输入车船税库名称" type="text">
+                        <small class="form-text text-danger" id="nameError" style="display: none">请输入车船税库名称。</small>
+                    </div>
+                    <input type="hidden" name = "userAccount" value="<%= userAccount%>">
+                </form>
+            </div>
+            <div class="modal-footer">
+                <button id="addLibs"  class="btn btn-primary">新建</button>
+                <button type="button" id="cancelBtn" class="btn btn-secondary" data-dismiss="modal">取消</button>
+            </div>
+        </div>
+    </div>
+</div>
+
+<!--弹出编辑-->
+<div class="modal fade" id="edit" data-backdrop="static" style="display: none;" aria-hidden="true">
+    <div class="modal-dialog" role="document">
+        <div class="modal-content">
+            <div class="modal-header">
+                <h5 class="modal-title">车船税库</h5>
+                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+                    <span aria-hidden="true">×</span>
+                </button>
+            </div>
+            <div class="modal-body">
+                <form>
+                    <div class="form-group">
+                        <label>车船税库名称</label>
+                        <input id="renameText" class="form-control" placeholder="输入名称" type="text" value="">
+                        <small class="form-text text-danger" id="renameError" style="display: none">请输入名称。</small>
+                        <input id="libID" type="hidden">
+                    </div>
+                </form>
+            </div>
+            <div class="modal-footer">
+                <a id="rename" href="javascript: void(0);" class="btn btn-primary" >确定</a>
+                <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
+            </div>
+        </div>
+    </div>
+</div>
+
+<!--弹出删除-->
+<div class="modal fade" id="del" data-backdrop="static" style="display: none;" aria-hidden="true">
+    <div class="modal-dialog" role="document">
+        <div class="modal-content">
+            <div class="modal-header">
+                <h5 class="modal-title">删除确认</h5>
+                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+                    <span aria-hidden="true">×</span>
+                </button>
+            </div>
+            <div class="modal-body">
+                <h5 class="text-danger">删除后无法恢复,确认是否删除?</h5>
+                <input type="hidden" id="libID_del">
+                <input type="hidden" id="delCount">
+            </div>
+            <div class="modal-footer">
+                <a id="delete" href="javascript:void(0);" class="btn btn-danger" >确认</a>
+                <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
+            </div>
+        </div>
+    </div>
+</div>
+
+<script type="text/javascript" src="/web/maintain/vehicleVesselTax_lib/js/vvTax.js"></script>

+ 76 - 0
web/maintain/vehicleVesselTax_lib/js/vvTax.js

@@ -0,0 +1,76 @@
+/**
+ * Created by zhang on 2018/9/3.
+ */
+$(document).ready(function() {
+    // 保存按钮
+    $("#addLibs").click(async function() {
+        let name = $('#name').val();
+        if(name==''){
+            $("#nameError").show();
+            return;
+        }else {
+            $("#addLibs").attr("disabled",true);//防止重复提交
+            $("#addLibForm").submit();
+        }
+    });
+
+    $("#rename").click(async function() {
+        let libID = $("#libID").val();
+        let name = $('#renameText').val();
+        if(libID!=''){
+            if(name ==''){
+                $("#renameError").show();
+                return;
+            }else {
+                try {
+                    let newVVTax = await ajaxPost("/vvTax/saveLib",{query:{ID:libID},data:{name:name}});
+                    $("#"+libID).children("a").text(newVVTax.name);
+                    $("#edit").modal('hide');
+                }catch(err) {
+                    console.log(err);
+                }
+            }
+        }
+    });
+
+    $("#delete").click(async function() {
+        let libID = $("#libID_del").val();
+        let delCount = parseInt($("#delCount").val());
+        delCount = delCount+1;
+        $("#delCount").val(delCount);
+        if(delCount == 3){
+            if(libID!=""){
+                try {
+                    let result = await ajaxPost("/vvTax/deleteLibByID",{ID:libID});
+                    if(result.ok){
+                        $("#"+libID).parent(".libTr").remove();
+                    }
+                    $("#del").modal('hide');
+                }catch (err){
+                    console.log(err);
+                }
+            }
+        }
+    });
+});
+
+async function getVVTaxLib (ID) {
+    try {
+        let lib = await ajaxPost("/vvTax/findLib",{ID:ID});
+        if(lib){
+            $("#renameText").val(lib.name);
+            $("#libID").val(ID);
+            $("#edit").modal({show:true});
+        }else {
+            alert("没有车船税库");
+        }
+    }catch (err){
+        console.log(err);
+    }
+}
+
+function showDeleteModal(ID){
+    $("#libID_del").val(ID);
+    $("#delCount").val(0);
+    $("#del").modal({show:true});
+}

+ 78 - 0
web/maintain/vehicleVesselTax_lib/js/vvTax_edit.js

@@ -0,0 +1,78 @@
+/**
+ * Created by zhang on 2018/9/3.
+ */
+
+$(document).ready(function () {
+    try {
+        let tem = sortJson(JSON.parse($("#originalVVTax").val()), compareVVTax);
+        $("#vvTaxList").val(JSON.stringify(tem,null,4));
+    }catch (err){
+        console.log(err);
+    }
+
+   $("#format").click( function() {
+       try {
+           let jsonText =  $("#vvTaxList").val();
+           $("#vvTaxList").val(JSON.stringify(JSON.parse(jsonText),null,4));
+       }catch (err){
+           console.log(err);
+           alert("输入的JSON格式有误,请重新输入!");
+       }
+   });
+    $("#save").click(async function() {
+        try {
+            $.bootstrapLoading.start();
+            let libID = $("#libID").val();
+            let jsonText =  $("#vvTaxList").val();
+            if(jsonText.indexOf("'")!=-1){
+                alert("输入的格式不能包含 ' 位于:"+jsonText.substr(jsonText.indexOf("'")-15,18));
+                return;
+            }
+            await ajaxPost("/vvTax/saveLib",{edit:true,query:{ID:libID},data:{data:JSON.parse(jsonText)}});
+            $.bootstrapLoading.end();
+        }catch (err){
+            $.bootstrapLoading.end();
+            console.log(err);
+            alert("保存失败,请查看输入数据");
+        }
+    });
+    $("#createNormal").click(async function() {
+        let vvTax = [
+            {
+                code: '0101001',
+                name: '名称x',
+                spec: '规格x',
+                unit: '单位x',
+                vehicleVesselTax: 0.1,
+                useTax: 0.1,
+                useTaxMeasure: 10,
+                annualMonth: 3,
+                annualMachine: 3
+            }
+        ];
+        try {
+            let jsonText =  JSON.stringify(vvTax);
+            $("#vvTaxList").val(JSON.stringify(JSON.parse(jsonText),null,4));
+        }catch (err){
+            console.log(err);
+        }
+
+    })
+});
+
+function compareVVTax(a, b) {
+    let mapping = {
+        code: 1,
+        name: 2,
+        spec: 3,
+        unit: 4,
+        vehicleVesselTax: 5,
+        useTax: 6,
+        useTaxMeasure: 7,
+        annualMonth: 8,
+        annualMachine: 9
+    };
+    let aV = mapping[a] ? mapping[a] : 0,
+        bV = mapping[b] ? mapping[b] : 0;
+    return aV - bV;
+}

+ 23 - 1
web/users/js/compilation.js

@@ -245,6 +245,10 @@ $(document).ready(function() {
                 $("#progressive-area").show();
                 $("#add-compilation-title").text('添加累进区间');
                 break;
+            case 'vvTax':
+                $("#vvTax-area").show();
+                $("#add-compilation-title").text('添加车船税');
+                break;
         }
         $("#addcompilation").modal('show');
     });
@@ -261,7 +265,7 @@ $(document).ready(function() {
     });
 
     // 移除操作
-    $(".bill-list, .ration-list, .glj-list, .fee-list, .artificial-list, .program-list, .billsGuidance-list,.feature-list,.progressive-list").on("click", ".remove-lib", function() {
+    $(".bill-list, .ration-list, .glj-list, .fee-list, .artificial-list, .program-list, .billsGuidance-list,.feature-list,.progressive-list,.vvTax-list").on("click", ".remove-lib", function() {
         $(this).parent().remove();
     });
 
@@ -453,6 +457,7 @@ function initCompilation() {
     let mainTreeColData= mainTreeColList == undefined ? [] : JSON.parse(mainTreeColList);
     let featureData = featureList == undefined?[]: JSON.parse(featureList);
     let progressiveData = progressiveList == undefined?[]: JSON.parse(progressiveList);
+    let vvTaxData = vvTaxList == undefined?[]: JSON.parse(vvTaxList);
     /*mainTreeCol = mainTreeCol !== '' ? mainTreeCol.replace(/\n/g, '\\n') : mainTreeCol;
     billsTemplateData = billsTemplateData.replace(/\n/g, '\\n');
 
@@ -559,6 +564,14 @@ function initCompilation() {
         html += tmpHtml;
     }
     $("select[name='progressive_lib']").children("option").first().after(html);
+
+    //车船税文件
+    html = '';
+    for(let tmp of vvTaxData){
+        let tmpHtml = '<option value="' + tmp.ID + '">' + tmp.name + '</option>';
+        html += tmpHtml;
+    }
+    $("select[name='vvTax_lib']").children("option").first().after(html);
 }
 
 /**
@@ -578,6 +591,7 @@ function getAndValidData(model) {
     let billsGuidanceLib = $("select[name='billsGuidance_lib']").children("option:selected").val();
     let featureLib = $("select[name='feature_lib']").children("option:selected").val();
     let progressiveLib = $("select[name='progressive_lib']").children("option:selected").val();
+    let vvTaxLib = $("select[name='vvTax_lib']").children("option:selected").val();
 
 
     if (name === '' && model === 'all') {
@@ -597,6 +611,9 @@ function getAndValidData(model) {
     if (model === 'progressive' && (progressiveLib === '' || progressiveLib === undefined)) {
         throw '请选择累进区间库';
     }
+    if (model === 'vvTax' && (vvTaxLib === '' || vvTaxLib === undefined)) {
+        throw '请选择车船税文件';
+    }
 
     if (model === 'glj' && (gljLib === '' || gljLib === undefined)) {
         throw '请选择人材机库';
@@ -623,6 +640,7 @@ function getAndValidData(model) {
     let billsGuidanceString = $("select[name='billsGuidance_lib']").children("option:selected").text();
     let featrueString = $("select[name='feature_lib']").children("option:selected").text();
     let progressiveString = $("select[name='progressive_lib']").children("option:selected").text();
+    let vvTaxString = $("select[name='vvTax_lib']").children("option:selected").text();
 
 
     let result = {
@@ -662,6 +680,10 @@ function getAndValidData(model) {
         progressive:{
             id:progressiveLib,
             name:progressiveString
+        },
+        vvTax: {
+            id: vvTaxLib,
+            name: vvTaxString
         }
     };
     return result;

+ 18 - 0
web/users/views/compilation/engineering.html

@@ -123,6 +123,23 @@
                                 </div>
                                 <a href="#" class="btn btn-link btn-sm add-compilation" data-model="progressive">添加</a>
                             </div>
+                            <div class="form-group col-md-3">
+                                <label>车船税</label>
+                                <div class="vvTax-list">
+                                    <% if (Object.keys(libData).length > 0 && libData.vvTax_lib && libData.vvTax_lib.length > 0) { %>
+                                    <% libData.vvTax_lib.forEach(function (vvTax, index){ %>
+                                    <p class="form-control-static">
+                                        <a class="pull-right text-danger remove-lib" data-model="vvTax" title="移除" data-id="<%= vvTax.id %>">
+                                            <span class="glyphicon glyphicon-remove"></span>
+                                        </a>
+                                        <input type="hidden" name="vvTax_lib" data-id="<%= vvTax.id %>" value="<%= JSON.stringify({id: vvTax.id, name: vvTax.name}) %>">
+                                        <% if (index === 0) {%><i class="glyphicon glyphicon-flag"></i>&nbsp;<% } %><%= vvTax.name %>
+                                    </p>
+                                    <% }) %>
+                                    <% } %>
+                                </div>
+                                <a href="#" class="btn btn-link btn-sm add-compilation" data-model="vvTax">添加</a>
+                            </div>
                     </div>
 
                     <div class="col-md-12">
@@ -250,6 +267,7 @@
     let mainTreeColList = '<%- mainTreeColList %>';
     let featureList = '<%- featureList %>';
     let progressiveList = '<%- progressiveList %>';
+    let vvTaxList = '<%- vvTaxList %>';
     let colSpread = null;
     let colEditSpread = null;
 </script>

+ 10 - 0
web/users/views/compilation/modal.html

@@ -61,6 +61,16 @@
                         </div>
                     </div>
                 </div>
+                <div class="form-group" id="vvTax-area">
+                    <label>车船税</label>
+                    <div class="row">
+                        <div class="col-xs-12">
+                            <select class="form-control" name="vvTax_lib">
+                                <option value="">请选择车船税文件</option>
+                            </select>
+                        </div>
+                    </div>
+                </div>
                 <div class="form-group" id="artificial-area">
                     <label>人工系数</label>
                     <div class="row">