Browse Source

增加模板的时间范围功能,同时生成能填写的数据

yanliming 9 months ago
parent
commit
9f0b8119bd

+ 1 - 1
.env.development

@@ -1,3 +1,3 @@
 OUT_PUT_DIR=dist/cy-revenue-budget-portal
 
-VUE_APP_BACKEND_URL=http://192.168.33.220:8086/cy-revenue-budget-server
+VUE_APP_BACKEND_URL=http://192.168.8.220:8086/cy-revenue-budget-server

+ 10 - 1
src/api/base/templateInfo.js

@@ -33,6 +33,15 @@ function update(formModel) {
   });
 }
 
+function updateDate(formModel) {
+  return request.post(constant.serverUrl + "/base/templateInfo/updateDate", formModel, {
+    headers: {
+      "Content-Type": "application/json"
+    }
+  });
+}
+
+
 function remove(id) {
   return request.post(constant.serverUrl + "/base/templateInfo/delete/" + id);
 }
@@ -55,5 +64,5 @@ function saveAttachment(formData) {
 }
 
 export default {
-  pageList, create, edit, add, update, remove, batchRemove,list,checked,saveAttachment
+  pageList, create, edit, add, update, remove, batchRemove,list,checked,saveAttachment,updateDate
 }

+ 212 - 0
src/views/base/templateDepartment-edit-date.vue

@@ -0,0 +1,212 @@
+
+<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-form
+          ref="form"
+          :model="formModel"
+          :rules="ruleValidate"
+          :label-width="'130px'"
+          :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"
+              disabled
+              >
+            </el-date-picker>
+          </el-form-item>
+          <el-form-item label="标题" prop="title">
+            <el-input v-model="formModel.title" placeholder="请输入标题" style="width: 300px" disabled></el-input>
+          </el-form-item>
+          <el-form-item label="填写起止月份" prop="dateRangeArr" >
+            <el-date-picker
+            style="width: 300px"
+              v-model="formModel.dateRangeArr"
+              type="monthrange"
+              range-separator="至"
+              start-placeholder="开始月份"
+              end-placeholder="结束月份"
+              value-format="yyyy-MM"
+              format="yyyy-MM">
+            </el-date-picker>
+          </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 templateInfoApi from "@/api/base/templateInfo";
+  
+  export default {
+    props: ["businessKey", "title"],
+    data() {
+       // 自定义验证函数
+      const validateDateRange = (rule, value, callback) => {
+        var year = this.formModel.year;
+        var startStr = year+"-01"+"-01";
+        var endStr = year+"-12"+"-31";
+        const start = new Date(startStr);
+        const end = new Date(endStr);
+        const date1 = new Date(value[0]);
+        const date2 = new Date(value[1]);
+        if(date1 > start||date2 < end){    
+          callback(new Error('所选月份范围不能小于所属年份范围'));
+        } else {
+          callback();
+        }
+      };
+      return {
+          showPwd: true,
+          ruleValidate: {
+              year: [
+              { required: true, message: "所属年份不能为空", trigger: "blur" },
+              ],
+              title: [
+              { required: true, message: "标题不能为空", trigger: "blur" },
+              ],
+              dateRangeArr:[
+                { validator: validateDateRange, trigger: 'blur' }
+              ]
+          },
+          roleList: [],
+          formModel: {},
+          showDialog: true,
+          loading: false,
+          submitting: false,
+          typeList:[
+            {
+                "name":"收入",
+                "value":"1",
+            },
+            {
+                "name":"支出",
+                "value":"2",
+            }
+          ]
+      };
+    },
+    created() {
+    },
+    methods: {
+      closeDialog() {
+        this.$emit("close", false);
+      },
+      handleSubmit() {
+        var self = this;
+  
+        this.$refs["form"].validate((valid) => {
+          if (valid) {
+            (function () {
+              var id = self.formModel.id;
+
+              return templateInfoApi.updateDate(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);
+              }
+            });
+          }
+        });
+      },
+    },
+    async mounted() {
+      var self = this;
+      self.loading = true;
+  
+      (function () {
+        if (self.businessKey != null && self.businessKey.length > 0) {
+          return templateInfoApi.edit(self.businessKey);
+        } else {
+          return templateInfoApi.create();
+        }
+      })()
+        .then((response) => {
+          var jsonData = response.data;
+  
+          if (jsonData.result) {
+              self.formModel = jsonData.data;
+  
+              let photo = self.formModel.photo;
+              if (photo != null) {
+                  self.fileUrl = photo 
+              }
+  
+              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>

+ 32 - 6
src/views/base/templateDepartment-list.vue

@@ -97,15 +97,17 @@
             </el-upload>
           </template>
         </el-table-column>
-        <el-table-column label="操作" width="450">
+        <el-table-column label="操作" width="500">
           <template slot-scope="{row}" >
             <el-button v-if="row.attachment&&row.status=='0'" size="mini" type="warning" @click="handleSave(row)">保存附件</el-button>
             <el-button size="mini" type="primary" @click="handleOption(row)">模板选项</el-button>
-            <permission-detect class="inline" style="display:inline;margin-left:10px" path="/base/templateDepartment/Checked" method="post">
+            <el-button size="mini" type="warning" @click="handleDateRange(row)">日期范围</el-button>
+            <permission-detect class="inline" style="display:inline;margin-left:5px" path="/base/templateDepartment/Checked" method="post">
               <el-button v-if="row.status=='0'" size="mini" type="success" @click="handleChecked(row)">审核</el-button>
             </permission-detect>
-            <permission-detect class="inline" style="display:inline;margin-left:10px" path="/base/fundIncomeInfo/generateData" method="post">
+            <permission-detect class="inline" style="display:inline;margin-left:5px" path="/base/fundIncomeInfo/generateData" method="post">
               <el-button type="danger"
+              v-if="row.status=='1'"
               size="mini" 
               icon="el-icon-s-data" 
               @click="handleGenerateData(row.id)"
@@ -129,6 +131,13 @@
         :title="modalTitle2"
         @close="onDetailModalClose2"
       ></templateDepartment-detail>
+      <templateDepartment-edit-date
+        v-if="showModal3"
+        ref="userDetail"
+        :businessKey="businessKey"
+        :title="modalTitle3"
+        @close="onDetailModalClose3"
+      ></templateDepartment-edit-date>
       <!-- <el-dialog
       title="选择生成年份"
       :visible.sync="batchImportVisible2"
@@ -164,6 +173,7 @@
   import templateInfoApi from "@/api/base/templateInfo";
   import fundIncomeInfoApi from "@/api/base/fundIncomeInfo";
   import templateDepartmentDetail from "./templateDepartment-detail";
+  import templateDepartmentEditDate from "./templateDepartment-edit-date";
   import { getToken } from "@/utils/auth"; // get token from cookie
   
   export default {
@@ -187,10 +197,12 @@
         pageSizeList: [10, 20, 30],
         multipleSelection: [],
         modalTitle: "",
-        modalTitle2: "",        
+        modalTitle2: "",
+        modalTitle3: "",          
         businessKey: "",
         showModal: false,
         showModal2:false,
+        showModal3:false,
         dialogFormVisible:false,
         newPassword:"",
         roleResult:[],
@@ -324,6 +336,13 @@
         self.businessKey = record.id;
         self.showModal2 = true;
       },
+      handleDateRange(record){
+        var self = this;
+        
+        self.modalTitle3 = "编辑日期范围";
+        self.businessKey = record.id;
+        self.showModal3 = true;
+      },
       handleSave(row){
         var self = this;
 
@@ -440,6 +459,13 @@
             this.changePage(this.pageIndex);
             }
         },
+        onDetailModalClose3(refreshed) {
+            this.showModal3 = false;
+    
+            if(refreshed) {
+            this.changePage(this.pageIndex);
+            }
+        },
         beforeUpload(file, fileList) {
             //导入前判断
             var self = this;
@@ -556,14 +582,14 @@
           }
           return false;
         },
-
     },
     mounted: function() {
       var self = this;
       this.changePage(1);
     },
     components: {
-        "templateDepartment-detail":templateDepartmentDetail
+        "templateDepartment-detail":templateDepartmentDetail,
+        "templateDepartment-edit-date":templateDepartmentEditDate
     }
   };
   </script>

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

@@ -13,7 +13,7 @@
           ref="form"
           :model="formModel"
           :rules="ruleValidate"
-          :label-width="'100px'"
+          :label-width="'130px'"
           :inline="true"
         >
         <el-form-item label="所属年份" prop="year">
@@ -42,6 +42,18 @@
                 </el-option>
             </el-select>
           </el-form-item>
+          <el-form-item label="填写起止月份" prop="dateRange" >
+            <el-date-picker
+            style="width: 300px"
+              v-model="formModel.dateRangeArr"
+              type="monthrange"
+              range-separator="至"
+              start-placeholder="开始月份"
+              end-placeholder="结束月份"
+              value-format="yyyy-MM"
+              format="yyyy-MM">
+            </el-date-picker>
+          </el-form-item>
         </el-form>
       </div>
       <span slot="footer" class="dialog-footer">