Jelajahi Sumber

1.数据明细列表显示功能
2.预算收入可以修改功能
3.项目年度预算修改,上传新的凭证,修改明细列表
4.在项目预算的图表显示修改信息
5.添加当前最新预算收入列
6.经费收入添加责任人列

yanliming 1 tahun lalu
induk
melakukan
184ae27060

+ 50 - 0
src/api/base/budgetModifyRecord.js

@@ -0,0 +1,50 @@
+import request from '@/utils/request'
+import constant from '@/constant'
+
+function pageList(formData) {
+  return request.post(constant.serverUrl + "/base/budgetModifyRecord/pageList", formData);
+}
+
+function list() {
+  return request.post(constant.serverUrl + "/base/budgetModifyRecord/list");
+}
+
+function create() {
+  return request.get(constant.serverUrl + "/base/budgetModifyRecord/create");
+}
+
+function edit(id) {
+  return request.get(constant.serverUrl + "/base/budgetModifyRecord/edit/" + id);
+}
+
+function add(formModel) {
+  return request.post(constant.serverUrl + "/base/budgetModifyRecord/add", formModel, {
+    headers: {
+      "Content-Type": "application/json"
+    }
+  });
+}
+
+function update(formModel) {
+  return request.post(constant.serverUrl + "/base/budgetModifyRecord/update", formModel, {
+    headers: {
+      "Content-Type": "application/json"
+    }
+  });
+}
+
+function remove(id) {
+  return request.post(constant.serverUrl + "/base/budgetModifyRecord/delete/" + id);
+}
+
+function batchRemove(idList) {
+  return request.post(constant.serverUrl + "/base/budgetModifyRecord/batchDelete", idList, {
+    headers: {
+      "Content-Type": "application/json"
+    }
+  });
+}
+
+export default {
+  pageList, create, edit, add, update, remove, batchRemove,list
+}

+ 46 - 0
src/api/base/incomeModifyRecord.js

@@ -0,0 +1,46 @@
+import request from '@/utils/request'
+import constant from '@/constant'
+
+function pageList(formData) {
+  return request.post(constant.serverUrl + "/base/incomeModifyRecord/pageList", formData);
+}
+
+function create() {
+  return request.get(constant.serverUrl + "/base/incomeModifyRecord/create");
+}
+
+function edit(id) {
+  return request.get(constant.serverUrl + "/base/incomeModifyRecord/edit/" + id);
+}
+
+function add(formModel) {
+  return request.post(constant.serverUrl + "/base/incomeModifyRecord/add", formModel, {
+    headers: {
+      "Content-Type": "application/json"
+    }
+  });
+}
+
+function update(formModel) {
+  return request.post(constant.serverUrl + "/base/incomeModifyRecord/update", formModel, {
+    headers: {
+      "Content-Type": "application/json"
+    }
+  });
+}
+
+function remove(id) {
+  return request.post(constant.serverUrl + "/base/incomeModifyRecord/delete/" + id);
+}
+
+function batchRemove(idList) {
+  return request.post(constant.serverUrl + "/base/incomeModifyRecord/batchDelete", idList, {
+    headers: {
+      "Content-Type": "application/json"
+    }
+  });
+}
+
+export default {
+  pageList, create, edit, add, update, remove, batchRemove
+}

+ 196 - 0
src/views/base/budgetModify-detail.vue

@@ -0,0 +1,196 @@
+
+<template>
+    <el-dialog
+      :visible.sync="showDialog"
+      :title="title"
+      :modal-append-to-body="true"
+      style="text-align:left;"
+      :close-on-click-modal="true"
+      @close="closeDialog"
+      :append-to-body="true"
+      width="500px"
+    >
+      <div class="user-panel" v-loading="loading">
+        <el-form
+          ref="form"
+          :model="formModel"
+          :rules="ruleValidate"
+          :label-width="'100px'"
+          :inline="true"
+        >
+            <el-form-item label="预算收入" prop="currentAmount">
+                <el-input-number v-model="formModel.currentAmount" placeholder="请输入预算收入" style="width: 300px"></el-input-number>
+            </el-form-item>
+            <el-form-item label="上传凭证">
+            <el-upload
+                style="width:300px"
+                class="avatar-uploader"
+                name="photoFile"
+                :action="uploadUrl"
+                :headers="headers"
+                :data="uploadData"
+                :show-file-list="false"
+                :on-success="handleAvatarSuccess"
+                :before-upload="beforeAvatarUpload">
+                <img v-if="fileUrl" :src="fileUrl" class="avatar">
+                <i v-else class="el-icon-plus avatar-uploader-icon"></i>
+            </el-upload>
+        </el-form-item>
+            
+        </el-form>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="closeDialog">取 消</el-button>
+        <el-button type="primary" @click="handleSubmit" :loading="submitting"
+          >确 定</el-button
+        >
+      </span>
+    </el-dialog>
+  </template>
+  <script>
+  import Constant from "@/constant";
+  import { getToken } from "@/utils/auth"; // get token from cookie
+  import budgetModifyRecordApi from "@/api/base/budgetModifyRecord";
+  
+  export default {
+    props: ["businessKey2", "title"],
+    data() {
+      return {
+            showPwd: true,
+            ruleValidate: {
+                currentAmount: [
+                { required: true, message: "预算收入不能为空", trigger: "blur" },
+                ],
+                image: [
+                { required: true, message: "凭证不能为空", trigger: "blur" },
+                ],
+            },
+            roleList: [],
+            formModel: {},
+            showDialog: true,
+            loading: false,
+            submitting: false,
+            //上传地址
+            uploadUrl: Constant.serverUrl + "/uploadPicture",
+            uploadData: {
+                subFolder: "budget-modify",
+            },
+            fileUrl: "",
+            headers: {
+                Authorization: getToken(),
+            },
+          
+      };
+    },
+    created() {
+    },
+    methods: {
+      closeDialog() {
+        this.$emit("close", false);
+      },
+      handleSubmit() {
+        var self = this;
+  
+        this.$refs["form"].validate((valid) => {
+          if (valid) {
+            (function () {
+              self.formModel.templateOptionId = self.businessKey2;
+              if(self.fileUrl!=null&&self.fileUrl!=""){
+                self.formModel.image=self.fileUrl;
+              }
+              return budgetModifyRecordApi.update(self.formModel);
+              
+            })().then(function (response) {
+              var jsonData = response.data;
+  
+              if (jsonData.result) {
+                self.$message({
+                  message: "保存成功!",
+                  type: "success",
+                });
+  
+                self.$emit("close", true);
+              } else {
+                self.$message({
+                  message: jsonData.message + "",
+                  type: "warning",
+                });
+  
+                self.$emit("close", false);
+              }
+            });
+          }
+        });
+      },
+      handleAvatarSuccess(res, file) {
+          var self = this;
+          self.formModel.image = res.data;
+  
+          self.fileUrl =
+            res.data + "?x-oss-process=image/resize,m_lfit,h_300,w_300";
+      },
+      beforeAvatarUpload(file) {
+          const isLt2M = file.size / 1024 / 1024 < 2;
+          if (!isLt2M) {
+              this.$message.error('上传头像图片大小不能超过 2MB!');
+          }
+          return isLt2M;
+      }
+    },
+    async mounted() {
+      var self = this;
+      self.loading = true;
+  
+      (function () {
+        return budgetModifyRecordApi.create();
+      })()
+        .then((response) => {
+          var jsonData = response.data;
+  
+          if (jsonData.result) {
+              self.formModel = jsonData.data;
+  
+              self.showModal = true;
+          } else {
+            self.$message.error(jsonData.message + "");
+          }
+  
+          self.loading = false;
+        })
+        .catch((error) => {
+          self.$message.error(error + "");
+          self.loading = false;
+        });
+    },
+    components: {
+    },
+  };
+  </script>
+  <style scoped>
+  .user-panel {
+    margin: 10px auto;
+  }
+  .avatar-uploader .el-upload {
+    border: 1px dashed #d9d9d9;
+    border-radius: 6px;
+    cursor: pointer;
+    position: relative;
+    overflow: hidden;
+  }
+  .avatar-uploader .el-upload:hover {
+    border-color: #409EFF;
+  }
+  .avatar-uploader-icon {
+    font-size: 28px;
+    color: #8c939d;
+    width: 178px;
+    height: 178px;
+    line-height: 178px;
+    text-align: center;
+  }
+  .avatar {
+    width: 178px;
+    height: 178px;
+    display: block;
+  }
+  </style>

+ 156 - 0
src/views/base/budgetModifyRecord-list.vue

@@ -0,0 +1,156 @@
+
+<template>
+    <el-dialog
+      :visible.sync="showDialog"
+      :title="title"
+      :modal-append-to-body="false"
+      style="text-align: left;"
+      @close="closeDialog"
+      :close-on-click-modal="false"
+    >
+      <div class="user-panel" v-loading="loading">
+        <el-table
+        :data="tableData"
+        style="min-height:400px;"
+        v-loading="loading"
+        stripe
+        >
+            <el-table-column  prop="originalAmount"  label="原金额"></el-table-column>
+            <el-table-column  prop="currentAmount"  label="修改后金额"></el-table-column>
+            <el-table-column  prop="createTime"  label="修改时间"></el-table-column>
+            <el-table-column  prop="createName"  label="修改人"></el-table-column>
+        </el-table>
+        <el-pagination
+            style="text-align:center"
+            :current-page.sync="pageIndex"
+            :total="totalElements"
+            :page-sizes="pageSizeList"
+            @current-change="changePage"
+            @size-change="pageSizeChange"
+            layout="total, sizes, prev, pager, next, jumper"
+        ></el-pagination>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="closeDialog">关 闭</el-button>
+      </span>
+    </el-dialog>
+  </template>
+  <script>
+  import Constant from "@/constant";
+  import { getToken } from "@/utils/auth"; // get token from cookie
+  import budgetModifyRecordApi from "@/api/base/budgetModifyRecord";
+  
+  export default {
+    props: ["businessKey", "title"],
+    data() {
+      return {
+            showPwd: true,
+            ruleValidate: {
+                title: [
+                { required: true, message: "标题不能为空", trigger: "blur" },
+                ],
+                type: [
+                { required: true, message: "模板类型不能为空", trigger: "blur" },
+                ],
+            },
+            roleList: [],
+            formModel: {},
+            showDialog: true,
+            loading: false,
+            submitting: false,
+            tableData: [],
+            pageIndex: 1,
+            pageSize: 10,
+            totalPages: 0,
+            totalElements: 0,
+            field: "",
+            direction: "",
+            pageSizeList: [10, 20, 30],
+            multipleSelection: [],
+      };
+    },
+    created() {
+    },
+    methods: {
+      closeDialog() {
+        this.$emit("close", false);
+      },
+      handleSubmit() {
+        var self = this;
+  
+        this.$refs["form"].validate((valid) => {
+          if (valid) {
+            (function () {
+              var id = self.formModel.id;
+  
+              if (id == null || id.length == 0) {
+                return budgetModifyRecordApi.add(self.formModel);
+              } else {
+                return budgetModifyRecordApi.update(self.formModel);
+              }
+            })().then(function (response) {
+              var jsonData = response.data;
+  
+              if (jsonData.result) {
+                self.$message({
+                  message: "保存成功!",
+                  type: "success",
+                });
+  
+                self.$emit("close", true);
+              } else {
+                self.$message({
+                  message: jsonData.message + "",
+                  type: "warning",
+                });
+  
+                self.$emit("close", false);
+              }
+            });
+          }
+        });
+      },
+      changePage(pageIndex) {
+        var self = this;
+
+        self.pageIndex = pageIndex;
+        var formData = new FormData();
+
+        formData.append("pageIndex", self.pageIndex);
+        formData.append("pageSize", self.pageSize);
+        formData.append("incomeId", self.businessKey);
+
+        budgetModifyRecordApi
+            .pageList(formData)
+            .then(function(response) {
+
+                var jsonData = response.data.data;
+
+                self.tableData = jsonData.data;
+                self.totalPages = jsonData.totalPages;
+                self.totalElements = jsonData.recordsTotal;
+            })
+            .catch(error => {
+            // self.$message.error(error + "");
+            });
+        },
+        pageSizeChange(pageSize) {
+            this.pageSize = pageSize;
+
+            this.$nextTick(()=>{
+                this.changePage(this.pageIndex);
+            });
+        },
+    },
+    async mounted() {
+      this.changePage(1);
+    },
+    components: {
+    },
+  };
+  </script>
+  <style scoped>
+  .user-panel {
+    margin: 10px auto;
+  }
+  </style>

+ 98 - 19
src/views/base/fundIncomeInfo-list.vue

@@ -108,26 +108,39 @@
                 <div class="item__txt">{{scope.row.serialNumber}}</div>
             </div> -->
         </el-table-column>
-        <el-table-column  prop="name" fixed label="项目名称" width="300">
+        <el-table-column  prop="name" fixed label="项目名称" width="250">
             <!-- <div class="item" slot-scope="scope">
                 <el-input size="mini" class="item__input" v-model="scope.row.name" @blur="save(scope.row)"></el-input>
                 <div class="item__txt">{{scope.row.name}}</div>
             </div> -->
         </el-table-column>
-        <el-table-column  prop="budgetRevenue"  label="预算收入" width="200">
-            <!-- <div class="item" slot-scope="scope">
-                <el-input-number 
-                style="width:180px"
-                size="mini" 
-                class="item__input" 
-                :precision="2" :step="0.1"
-                v-model="scope.row.budgetRevenue" 
-                @blur="save(scope.row)">
-                </el-input-number>
-                <div class="item__txt">{{scope.row.budgetRevenue}}</div>
-            </div> -->
+        <el-table-column  label="预算修改明细" width="120">
+          <template slot-scope="scope">
+            <el-link 
+            v-if="!scope.row.isSum&&scope.row.budgetRevenue!=scope.row.curBudgetRevenue" 
+            type="primary" 
+            @click="handleBudgetDetail(scope.row)">查看明细</el-link>
+          </template>
         </el-table-column>
-        <el-table-column  prop="accountName"  label="账户名称" width="180">
+        <el-table-column  prop="budgetRevenue"  label="原预算收入" width="130">
+          <template slot-scope="scope">
+            {{formaNum(scope.row.budgetRevenue)}}
+          </template>
+        </el-table-column>
+        <el-table-column  prop="curBudgetRevenue"  label="当前预算收入" width="130">
+          <template slot-scope="scope">
+            <span v-if="scope.row.budgetRevenue<scope.row.curBudgetRevenue" style="color:#F56C6C">
+              {{formaNum(scope.row.curBudgetRevenue)}}
+            </span>
+            <span v-else-if="scope.row.budgetRevenue>scope.row.curBudgetRevenue" style="color:#67C23A">
+              {{formaNum(scope.row.curBudgetRevenue)}}
+            </span>
+            <span v-else >
+              {{formaNum(scope.row.curBudgetRevenue)}}
+            </span>
+          </template>
+        </el-table-column>
+        <el-table-column  prop="accountName"  label="账户名称" width="150">
             <div class="item" slot-scope="scope">
               <div v-if="!scope.row.isSum">
                 <el-input size="mini" class="item__input" v-model="scope.row.accountName" @blur="save(scope.row)"></el-input>
@@ -135,6 +148,11 @@
               </div>
             </div>
         </el-table-column>
+        <el-table-column  prop="budgetRevenue"  label="当月到账明细" width="120">
+          <template slot-scope="scope">
+            <el-link v-if="!scope.row.isSum" type="primary" @click="handleDetail(scope.row)">查看明细</el-link>
+          </template>
+        </el-table-column>
         <el-table-column  prop="curMonthReceived"  label="本月到账资金" width="200">
           <template slot="header">
             <span>本月到账资金</span>
@@ -150,7 +168,9 @@
                 v-model="scope.row.curMonthReceived" 
                 @blur="saveNum(scope.row)">
               </el-input-number>
-              <div class="item__txt">{{scope.row.curMonthReceived}}</div>
+              <div class="item__txt">
+                {{formaNum(scope.row.curMonthReceived)}}
+              </div>
             </div>
         </el-table-column>
         <el-table-column  prop="actualTotalRevenue"  label="实际总收入"  width="200">
@@ -162,7 +182,9 @@
                  :precision="2" :step="0.1"
                  v-model="scope.row.actualTotalRevenue" 
                  @blur="save(scope.row)"></el-input-number>
-                <div class="item__txt" v-if="!scope.row.isSum">{{scope.row.actualTotalRevenue}}</div>
+                <div class="item__txt" v-if="!scope.row.isSum">
+                  {{formaNum(scope.row.actualTotalRevenue)}}
+                </div>
             </div>
         </el-table-column>
         <el-table-column  prop="accumulatedArrears"  label="累计欠费" width="200">
@@ -174,7 +196,9 @@
                   :precision="2" :step="0.1"
                   v-model="scope.row.accumulatedArrears"
                   @blur="save(scope.row)"></el-input-number>
-                <div class="item__txt" v-if="!scope.row.isSum">{{scope.row.accumulatedArrears}}</div>
+                <div class="item__txt" v-if="!scope.row.isSum">
+                  {{formaNum(scope.row.accumulatedArrears)}}
+                </div>
             </div>
         </el-table-column>
         <el-table-column  prop="incomeTimeRange"  label="收入时间区间" width="200">
@@ -226,6 +250,7 @@
               </div>
             </div>
         </el-table-column>
+        <el-table-column  prop="chargePerson"  label="责任人"></el-table-column>
         <el-table-column  prop="bak"  label="备注" width="180">
             <div class="item" slot-scope="scope">
               <div v-if="!scope.row.isSum">
@@ -291,6 +316,18 @@
         >
       </div>
     </el-dialog>
+    <incomeModifyRecord-list
+        v-if="showModal"
+        :businessKey="businessKey"
+        :title="modalTitle"
+        @close="onDetailModalClose"
+      ></incomeModifyRecord-list>
+      <budgetModifyRecord-list
+        v-if="showModal2"
+        :businessKey="businessKey"
+        :title="modalTitle2"
+        @close="onDetailModalClose2"
+      ></budgetModifyRecord-list>
     </div>
   </template>
   <script>
@@ -299,6 +336,8 @@
   import templateInfoApi from "@/api/base/templateInfo";
   import { getToken } from "@/utils/auth"; // get token from cookie
   import permissionApi from "@/api/sys/permission";
+  import incomeModifyRecordList from "./incomeModifyRecord-list"
+  import budgetModifyRecordList from "./budgetModifyRecord-list"
   
   export default {
     name: 'baseFundIncomeInfoInfo',
@@ -321,9 +360,11 @@
         direction: "",
         pageSizeList: [10, 20, 30],
         multipleSelection: [],
-        modalTitle: "",      
+        modalTitle: "",
+        modalTitle2: "",         
         businessKey: "",
         showModal: false,
+        showModal2: false,
         dialogFormVisible:false,
         batchImportVisible: false,
         batchImportVisible2:false,
@@ -375,6 +416,18 @@
 
       };
     },
+    computed:{
+      formaNum(){
+        return function(numer){
+          if(numer!=null){
+            return numer.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
+          }
+          else{
+            numer;
+          }
+        }
+      }
+    },
     created(){
       var self = this;
     
@@ -761,7 +814,31 @@
             }
           });
 
-        }
+        },
+        handleDetail(record){
+          var self = this;
+          self.modalTitle = "查看当月到账明细";
+          self.businessKey = record.id;
+          self.showModal = true;
+        },
+        handleBudgetDetail(record){
+          var self = this;
+          self.modalTitle2 = "查看预算修改明细";
+          self.businessKey = record.id;
+          self.showModal2 = true;
+        },
+        onDetailModalClose(refreshed) {
+          this.showModal = false;
+          if(refreshed) {
+            this.changePage(this.pageIndex);
+          }
+        },
+        onDetailModalClose2(refreshed) {
+          this.showModal2 = false;
+          if(refreshed) {
+            this.changePage(this.pageIndex);
+          }
+        },
       
     },
     mounted: function() {
@@ -781,6 +858,8 @@
       });
     },
     components: {
+      "incomeModifyRecord-list":incomeModifyRecordList,
+      "budgetModifyRecord-list":budgetModifyRecordList
     }
   };
   </script>

+ 156 - 0
src/views/base/incomeModifyRecord-list.vue

@@ -0,0 +1,156 @@
+
+<template>
+    <el-dialog
+      :visible.sync="showDialog"
+      :title="title"
+      :modal-append-to-body="false"
+      style="text-align: left;"
+      @close="closeDialog"
+      :close-on-click-modal="false"
+    >
+      <div class="user-panel" v-loading="loading">
+        <el-table
+        :data="tableData"
+        style="min-height:400px;"
+        v-loading="loading"
+        stripe
+        >
+            <el-table-column  prop="originalAmount"  label="原金额"></el-table-column>
+            <el-table-column  prop="currentAmount"  label="修改后金额"></el-table-column>
+            <el-table-column  prop="createTime"  label="修改时间"></el-table-column>
+            <el-table-column  prop="createName"  label="修改人"></el-table-column>
+        </el-table>
+        <el-pagination
+            style="text-align:center"
+            :current-page.sync="pageIndex"
+            :total="totalElements"
+            :page-sizes="pageSizeList"
+            @current-change="changePage"
+            @size-change="pageSizeChange"
+            layout="total, sizes, prev, pager, next, jumper"
+        ></el-pagination>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="closeDialog">关 闭</el-button>
+      </span>
+    </el-dialog>
+  </template>
+  <script>
+  import Constant from "@/constant";
+  import { getToken } from "@/utils/auth"; // get token from cookie
+  import incomeModifyRecordApi from "@/api/base/incomeModifyRecord";
+  
+  export default {
+    props: ["businessKey", "title"],
+    data() {
+      return {
+            showPwd: true,
+            ruleValidate: {
+                title: [
+                { required: true, message: "标题不能为空", trigger: "blur" },
+                ],
+                type: [
+                { required: true, message: "模板类型不能为空", trigger: "blur" },
+                ],
+            },
+            roleList: [],
+            formModel: {},
+            showDialog: true,
+            loading: false,
+            submitting: false,
+            tableData: [],
+            pageIndex: 1,
+            pageSize: 10,
+            totalPages: 0,
+            totalElements: 0,
+            field: "",
+            direction: "",
+            pageSizeList: [10, 20, 30],
+            multipleSelection: [],
+      };
+    },
+    created() {
+    },
+    methods: {
+      closeDialog() {
+        this.$emit("close", false);
+      },
+      handleSubmit() {
+        var self = this;
+  
+        this.$refs["form"].validate((valid) => {
+          if (valid) {
+            (function () {
+              var id = self.formModel.id;
+  
+              if (id == null || id.length == 0) {
+                return incomeModifyRecordApi.add(self.formModel);
+              } else {
+                return incomeModifyRecordApi.update(self.formModel);
+              }
+            })().then(function (response) {
+              var jsonData = response.data;
+  
+              if (jsonData.result) {
+                self.$message({
+                  message: "保存成功!",
+                  type: "success",
+                });
+  
+                self.$emit("close", true);
+              } else {
+                self.$message({
+                  message: jsonData.message + "",
+                  type: "warning",
+                });
+  
+                self.$emit("close", false);
+              }
+            });
+          }
+        });
+      },
+      changePage(pageIndex) {
+        var self = this;
+
+        self.pageIndex = pageIndex;
+        var formData = new FormData();
+
+        formData.append("pageIndex", self.pageIndex);
+        formData.append("pageSize", self.pageSize);
+        formData.append("incomeId", self.businessKey);
+
+        incomeModifyRecordApi
+            .pageList(formData)
+            .then(function(response) {
+
+                var jsonData = response.data.data;
+
+                self.tableData = jsonData.data;
+                self.totalPages = jsonData.totalPages;
+                self.totalElements = jsonData.recordsTotal;
+            })
+            .catch(error => {
+            // self.$message.error(error + "");
+            });
+        },
+        pageSizeChange(pageSize) {
+            this.pageSize = pageSize;
+
+            this.$nextTick(()=>{
+                this.changePage(this.pageIndex);
+            });
+        },
+    },
+    async mounted() {
+      this.changePage(1);
+    },
+    components: {
+    },
+  };
+  </script>
+  <style scoped>
+  .user-panel {
+    margin: 10px auto;
+  }
+  </style>

+ 51 - 10
src/views/base/templateDepartment-detail.vue

@@ -7,7 +7,7 @@
       style="text-align: left;"
       @close="closeDialog"
       :close-on-click-modal="false"
-      width="1300px"
+      width="1350px"
     >
       <div class="user-panel" v-loading="loading">
         <el-form
@@ -22,21 +22,27 @@
                 :data="formModel.optionList" >
                 <el-table-column prop="serialNum" label="序号" ></el-table-column>
                 <el-table-column prop="name" label="名称" width="200"></el-table-column>
-                <el-table-column prop="budgetRevenue" label="预算收入"></el-table-column>
-                <el-table-column prop="incomeTimeRange" label="收入时间区间" width="180"></el-table-column>
+                <el-table-column prop="budgetRevenue" label="预算收入">
+                  <template slot-scope="{row}">
+                    {{formaNum(row.budgetRevenue)}}
+                  </template>
+                </el-table-column>
+                <el-table-column prop="incomeTimeRange" label="收入时间区间" width="150"></el-table-column>
                 <el-table-column prop="incomeTypeN" label="收入类型"></el-table-column>
-                <el-table-column prop="endDate" label="终止日"></el-table-column>
-                <el-table-column prop="departmentNames" label="部门"></el-table-column>
+                <el-table-column prop="endDate" label="终止日" width="130"></el-table-column>
+                <el-table-column prop="departmentNames" label="部门" width="180"></el-table-column>
                 <el-table-column prop="isSum" label="是否合计">
                     <template slot-scope="{row}" >
                         <span v-if="row.isSum" style="color:#67C23A">是</span>
                         <span v-else>否</span>
                     </template>
                 </el-table-column>
+                <el-table-column prop="chargePerson" label="责任人"></el-table-column>
                 <el-table-column prop="index" label="排序号" ></el-table-column>
-                <el-table-column label="操作" >
-                  <template slot-scope="{row}" v-if="formModel.status=='0'">
-                    <el-button size="mini" type="warning" @click="handleEdit(row)">编辑</el-button>
+                <el-table-column label="操作"  width="130">
+                  <template slot-scope="{row}">
+                    <el-link v-if="formModel.status=='0'" type="warning" @click="handleEdit(row)" style="margin-right:10px">编辑 -</el-link>
+                    <el-link v-if="!row.isSum" type="primary" @click="handlebudgetEdit(row)">修改预算</el-link>
                   </template>
                 </el-table-column>
             </el-table>
@@ -53,6 +59,12 @@
         :title="modalTitle"
         @close="onDetailModalClose"
       ></templateDepartment-edit>
+      <budgetModify-detail
+        v-if="showModal3"
+        :businessKey2="businessKey2"
+        :title="modalTitle3"
+        @close="onDetailModalClose3"
+      ></budgetModify-detail>
     </el-dialog>
   </template>
   <script>
@@ -61,6 +73,8 @@
   import templateOptionApi from "@/api/base/templateOption";
   import departmentInfoApi from "@/api/base/departmentInfo";
   import templateDepartmentEdit from "./templateDepartment-edit";
+  import budgetModifyDetail from "./budgetModify-detail";
+ 
   
   export default {
     props: ["businessKey", "title"],
@@ -94,8 +108,22 @@
             "value":true
           }],
           showModal: false,
+          showModal3: false,
+          modalTitle3:"",
       };
     },
+    computed:{
+      formaNum(){
+        return function(numer){
+          if(numer!=null){
+            return numer.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
+          }
+          else{
+            numer;
+          }
+        }
+      }
+    },
     created() {
       var self = this;
     
@@ -167,13 +195,25 @@
         self.businessKey2 = record.id;
         self.showModal = true;
       },
+      handlebudgetEdit(record) {
+        var self = this;
+        
+        self.modalTitle3 = "编辑模板";
+        self.businessKey2 = record.id;
+        self.showModal3 = true;
+      },
       onDetailModalClose(refreshed) {
         this.showModal = false;
         if(refreshed) {
           this.loadDataList(this.businessKey)
         }
       },
-
+      onDetailModalClose3(refreshed) {
+        this.showModal3 = false;
+        if(refreshed) {
+          this.loadDataList(this.businessKey)
+        }
+      },
       loadDataList(businessKey){
         var self = this;
         self.loading = true;
@@ -203,7 +243,8 @@
       this.loadDataList(this.businessKey);
     },
     components: {
-      "templateDepartment-edit":templateDepartmentEdit
+      "templateDepartment-edit":templateDepartmentEdit,
+      "budgetModify-detail":budgetModifyDetail
     },
   };
   </script>

+ 4 - 0
src/views/base/templateDepartment-edit.vue

@@ -8,6 +8,7 @@
       :close-on-click-modal="true"
       @close="closeDialog"
       :append-to-body="true"
+      width="500px"
     >
       <div class="user-panel" v-loading="loading">
         <el-form
@@ -53,6 +54,9 @@
               format='yyyy-MM-dd'>
             </el-date-picker>
           </el-form-item>
+          <el-form-item label="责任人" prop="chargePerson">
+            <el-input style="width: 300px" v-model="formModel.chargePerson" placeholder="请输入责任人"></el-input>
+          </el-form-item>
         </el-form>
       </div>
       <span slot="footer" class="dialog-footer">

+ 19 - 12
src/views/base/templateDepartment-list.vue

@@ -14,6 +14,16 @@
         要resetFields起作用,必须配置:model和prop
       -->
       <el-form ref="queryForm" :model="queryModel" inline class="demo-form-inline">
+        <el-form-item label="年份" prop="year">
+            <el-date-picker
+              v-model="queryModel.year"
+              size="mini"
+              type="year"
+              placeholder="选择年"
+              value-format="yyyy"
+              format="yyyy">
+            </el-date-picker>
+          </el-form-item>
         <el-form-item label="标题" prop="title">
           <el-input type="text" size="mini" v-model="queryModel.title"></el-input>
         </el-form-item>
@@ -41,6 +51,7 @@
         stripe
         @sort-change="sortChange"
       >
+        <el-table-column  prop="year"  label="所属年份"></el-table-column>
         <el-table-column  prop="title"  label="标题" width="300"></el-table-column>
         <el-table-column  prop="subtitle"  label="副标题"></el-table-column>
         <el-table-column  prop="type"  label="模板类型">
@@ -94,7 +105,8 @@
               <el-button type="danger"
               size="mini" 
               icon="el-icon-s-data" 
-              @click="batchGenerateData(row)">生成模板项目</el-button>
+              @click="handleGenerateData(row.id)"
+              >生成模板项目</el-button>
             </permission-detect>
           </template>
         </el-table-column>
@@ -114,7 +126,7 @@
         :title="modalTitle2"
         @close="onDetailModalClose2"
       ></templateDepartment-detail>
-      <el-dialog
+      <!-- <el-dialog
       title="选择生成年份"
       :visible.sync="batchImportVisible2"
       :modal-append-to-body="false"
@@ -140,7 +152,7 @@
           >生 成</el-button
         >
       </div>
-    </el-dialog>
+    </el-dialog> -->
 
     </div>
   </template>
@@ -158,10 +170,8 @@
   
       return {
         queryModel: {
-          realName: "",
-          phone:"",
-          idCard:"",
-          status:"",
+          title: "",
+          year:"",
         },
         loading: false,
         tableData: [],
@@ -240,10 +250,8 @@
         else{
             formData.append("pageSize", self.pageSize);
         }
-        formData.append("realName", self.queryModel.realName);
-        formData.append("phone", self.queryModel.phone);
-        formData.append("idCard", self.queryModel.idCard);
-        formData.append("status", self.queryModel.status);
+        formData.append("year", self.queryModel.year);
+        formData.append("title", self.queryModel.title);
   
         self.loading = true;
   
@@ -514,7 +522,6 @@
             var formData = new FormData();
 
             formData.append("templateId", templateId);
-            formData.append("year", year);
 
             fundIncomeInfoApi.generateData(formData).then(function(response) {
                 var jsonData = response.data;

+ 13 - 0
src/views/base/templateInfo-detail.vue

@@ -16,6 +16,16 @@
           :label-width="'100px'"
           :inline="true"
         >
+        <el-form-item label="所属年份" prop="year">
+            <el-date-picker
+              v-model="formModel.year"
+              type="year"
+              placeholder="选择年"
+              style="width: 300px"
+              value-format="yyyy"
+              format="yyyy">
+            </el-date-picker>
+          </el-form-item>
           <el-form-item label="标题" prop="title">
             <el-input v-model="formModel.title" placeholder="请输入标题" style="width: 300px"></el-input>
           </el-form-item>
@@ -53,6 +63,9 @@
       return {
           showPwd: true,
           ruleValidate: {
+              year: [
+              { required: true, message: "所属年份不能为空", trigger: "blur" },
+              ],
               title: [
               { required: true, message: "标题不能为空", trigger: "blur" },
               ],

+ 15 - 8
src/views/base/templateInfo-list.vue

@@ -14,6 +14,16 @@
         要resetFields起作用,必须配置:model和prop
       -->
       <el-form ref="queryForm" :model="queryModel" inline class="demo-form-inline">
+          <el-form-item label="年份" prop="year">
+            <el-date-picker
+              v-model="queryModel.year"
+              size="mini"
+              type="year"
+              placeholder="选择年"
+              value-format="yyyy"
+              format="yyyy">
+            </el-date-picker>
+          </el-form-item>
         <el-form-item label="标题" prop="title">
           <el-input type="text" size="mini" v-model="queryModel.title"></el-input>
         </el-form-item>
@@ -54,6 +64,7 @@
         @selection-change="handleSelectionChange"
       >
         <el-table-column type="selection" width="55"></el-table-column>
+        <el-table-column  prop="year"  label="所属年份"></el-table-column>
         <el-table-column  prop="title"  label="标题" width="400"></el-table-column>
         <el-table-column  prop="subtitle"  label="副标题"></el-table-column>
         <el-table-column  prop="type"  label="模板类型">
@@ -117,10 +128,8 @@
   
       return {
         queryModel: {
-          realName: "",
-          phone:"",
-          idCard:"",
-          status:"",
+          year: "",
+          title:"",
         },
         loading: false,
         tableData: [],
@@ -189,10 +198,8 @@
         else{
             formData.append("pageSize", self.pageSize);
         }
-        formData.append("realName", self.queryModel.realName);
-        formData.append("phone", self.queryModel.phone);
-        formData.append("idCard", self.queryModel.idCard);
-        formData.append("status", self.queryModel.status);
+        formData.append("year", self.queryModel.year);
+        formData.append("title", self.queryModel.title);
   
         self.loading = true;