Browse Source

修改报销模块

seyason 4 năm trước cách đây
mục cha
commit
8db683ac44

+ 7 - 4
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/StagesController.java

@@ -114,10 +114,13 @@ public class StagesController {
             stagesQueryWrapper.eq("group_id", item.getGroupId()).gt("sequence", stages.getSequence());
             stagesService.removeById(item.getId());
             List<Stages> afterList = stagesService.list(stagesQueryWrapper);
-            afterList.forEach(a->{
-                a.setSequence(a.getSequence() -1);
-            });
-            stagesService.updateBatchById(afterList);
+            if (afterList.size() > 0) {
+                afterList.forEach(a->{
+                    a.setSequence(a.getSequence() -1);
+                });
+                stagesService.updateBatchById(afterList);
+            }
+
 
             return msg;
         }

+ 2 - 3
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/ExpenseItem.java

@@ -2,7 +2,6 @@ package com.management.platform.entity;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
-import java.time.LocalDate;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableField;
 import java.io.Serializable;
@@ -16,7 +15,7 @@ import lombok.experimental.Accessors;
  * </p>
  *
  * @author Seyason
- * @since 2021-05-17
+ * @since 2021-05-18
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -44,7 +43,7 @@ public class ExpenseItem extends Model<ExpenseItem> {
      * 费用日期
      */
     @TableField("happen_date")
-    private LocalDate happenDate;
+    private String happenDate;
 
     /**
      * 0-增值税专用发票,1-增值税普通发票

+ 19 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/ExpenseSheet.java

@@ -2,12 +2,16 @@ package com.management.platform.entity;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
+import java.time.LocalDate;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableField;
 import java.io.Serializable;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
 
 /**
  * <p>
@@ -15,7 +19,7 @@ import lombok.experimental.Accessors;
  * </p>
  *
  * @author Seyason
- * @since 2021-05-17
+ * @since 2021-05-18
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -51,6 +55,14 @@ public class ExpenseSheet extends Model<ExpenseSheet> {
     @TableField("owner_name")
     private String ownerName;
 
+    /**
+     * 填报日期
+     */
+    @TableField("create_date")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private LocalDate createDate;
+
     /**
      * 发票张数
      */
@@ -75,6 +87,12 @@ public class ExpenseSheet extends Model<ExpenseSheet> {
     @TableField("remark")
     private String remark;
 
+    /**
+     * 总费用
+     */
+    @TableField("total_amount")
+    private Double totalAmount;
+
 
     @Override
     protected Serializable pkVal() {

+ 17 - 4
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ExpenseSheetServiceImpl.java

@@ -18,6 +18,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.management.platform.util.HttpRespMsg;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.RequestParam;
 
 import javax.annotation.Resource;
@@ -64,6 +65,7 @@ public class ExpenseSheetServiceImpl extends ServiceImpl<ExpenseSheetMapper, Exp
         sheet.setCompanyId(user.getCompanyId());
         expenseSheetMapper.insert(sheet);
         List<ExpenseItem> itemList = new ArrayList<ExpenseItem>();
+
         for (int i=0;i<array.size(); i++) {
             JSONObject obj = array.getJSONObject(i);
             ExpenseItem expenseItem = JSONObject.toJavaObject(obj, ExpenseItem.class);
@@ -87,17 +89,25 @@ public class ExpenseSheetServiceImpl extends ServiceImpl<ExpenseSheetMapper, Exp
         QueryWrapper<ExpenseSheet> queryWrapper = new QueryWrapper<ExpenseSheet>();
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         queryWrapper.orderByDesc("id");
-        if (sheet.getCode() != null) {
+        if (!StringUtils.isEmpty(sheet.getCode())) {
             queryWrapper.eq("code", sheet.getCode());
         }
-        if (sheet.getOwnerId() != null) {
+        if (!StringUtils.isEmpty(sheet.getOwnerId())) {
             queryWrapper.eq("owner_id", sheet.getOwnerId());
         }
+        if (sheet.getType() != null) {
+            queryWrapper.eq("type", sheet.getType());
+        }
+        if (sheet.getCreateDate() != null) {
+            queryWrapper.eq("create_date", sheet.getCreateDate());
+        }
         IPage<ExpenseSheet> listIPager = expenseSheetMapper.selectPage(new Page<>(pageIndex, pageSize),
                 queryWrapper);
+        List<ExpenseSheet> records = listIPager.getRecords();
+        System.out.println("record size===="+records.size());
         Long total = listIPager.getTotal();
         Map<String, Object> map = new HashMap<>();
-        map.put("records", listIPager.getRecords());
+        map.put("records", records);
         map.put("total", total);
         httpRespMsg.data = map;
         return httpRespMsg;
@@ -115,7 +125,10 @@ public class ExpenseSheetServiceImpl extends ServiceImpl<ExpenseSheetMapper, Exp
         if (list.size() > 0) {
             String code = list.get(0).getCode();
             code = code.substring(format.length(), code.length());
-            start = Integer.parseInt(code) + 1;
+            System.out.println("code====="+code);
+            if (code.length() > 0) {
+                start = Integer.parseInt(code) + 1;
+            }
         }
         HttpRespMsg msg = new HttpRespMsg();
         msg.data = format+start;

+ 3 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ExpenseSheetMapper.xml

@@ -9,15 +9,17 @@
         <result column="company_id" property="companyId" />
         <result column="owner_id" property="ownerId" />
         <result column="owner_name" property="ownerName" />
+        <result column="create_date" property="createDate" />
         <result column="ticket_num" property="ticketNum" />
         <result column="type" property="type" />
         <result column="status" property="status" />
         <result column="remark" property="remark" />
+        <result column="total_amount" property="totalAmount" />
     </resultMap>
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        id, code, company_id, owner_id, owner_name, ticket_num, type, status, remark
+        id, code, company_id, owner_id, owner_name, create_date, ticket_num, type, status, remark, total_amount
     </sql>
 
 </mapper>

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/TaskMapper.xml

@@ -109,6 +109,6 @@
         <if test="taskType != null" >
             and task.task_type = #{taskType}
         </if>
-        GROUP BY task.id ORDER BY SUM(report.`working_time`) DESC LIMIT 10
+        GROUP BY task.id
     </select>
 </mapper>

+ 124 - 20
fhKeeper/formulahousekeeper/timesheet/src/views/expense/expense.vue

@@ -125,18 +125,70 @@
 
     <!-- 下面部分 -->
     <div class="staff" style="margin-left: 250px" v-if="displayTable">
-      <div class="search">
-        <el-input v-model="input" placeholder="单据编号"></el-input>
-        <span>单据类别:
-          <el-select v-model="value" placeholder="请选择">
-            <el-option
-              v-for="item in options"
-              :key="item.value"
-              :label="item.label"
-              :value="item.value">
-            </el-option>
-          </el-select>
-        </span>
+      <div style="padding:10px;">
+        <div>
+        <el-form label-width="80px" inline>
+          <!-- 填报日期 -->
+          <el-form-item label="单据编号" >
+            <el-input v-model="code" placeholder="单据编号" clearable="true"></el-input>
+          </el-form-item>
+          <!-- 填报日期 -->
+          <el-form-item label="填报日期" >
+            <el-date-picker type="date" clearable="true" placeholder="选择日期" value-format="yyyy-MM-dd" v-model="date" style="width: 200px;"></el-date-picker>
+          </el-form-item>
+          <!-- 费用类型 -->
+          <el-form-item label="费用类型">
+            <el-select v-model="type" placeholder="请选择费用类型" clearable="true" style="width: 150px">
+              <el-option label="一般费用" value="0"></el-option>
+              <el-option label="差旅费用" value="1"></el-option>
+              <el-option label="外包费用" value="2"></el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item>
+            <el-button @click="getList">查找</el-button>
+          </el-form-item>
+        </el-form>
+      </div>
+      <el-divider ></el-divider>
+      <!--列表-->
+        <el-table :data="list" highlight-current-row v-loading="listLoading" :height="tableHeight" style="width: 100%;">
+            <el-table-column prop="code" label="票据编号" ></el-table-column>
+            <el-table-column prop="totalAmount" label="金额" ></el-table-column>
+            <el-table-column prop="ownerName" label="填报人" ></el-table-column>
+            <el-table-column prop="createDate" label="填报日期" ></el-table-column>
+            <el-table-column prop="ticketNum" label="发票张数" ></el-table-column>
+            <el-table-column prop="type" label="票据类型" >
+              <template slot-scope="scope">
+                {{feeType[scope.row.type]}}
+              </template>
+            </el-table-column>
+            <el-table-column prop="remark" label="备注" width="250">
+              <template slot-scope="scope">
+                <span style="font-size:12px;">{{scope.row.remark}}</span>
+              </template>
+            </el-table-column>
+            <el-table-column label="操作" width="160">
+                <template slot-scope="scope">
+                    <el-button  icon="el-icon-view"  circle size="mini"  @click.stop.native="downloadByA(scope.row)"></el-button>
+                    <el-button icon="el-icon-edit" circle size="mini" style="margin-left:10px;" @click.stop.native="showEditName(scope.row)"></el-button>
+                    <el-button icon="el-icon-delete"  circle size="mini" style="margin-left:10px;" @click.stop.native="deleteItem(scope.row)"></el-button>
+                    
+                </template>
+            </el-table-column>
+        </el-table>
+
+        <!--工具条-->
+        <el-col :span="24" class="toolbar">
+            <el-pagination
+                @size-change="handleSizeChange"
+                @current-change="handleCurrentChange"
+                :page-sizes="[20 , 50 , 80 , 100]"
+                :page-size="20"
+                layout="total, sizes, prev, pager, next"
+                :total="total"
+                style="float:right;"
+            ></el-pagination>
+        </el-col>
       </div>
     </div>
   </section>
@@ -149,6 +201,15 @@ export default {
   props: {},
   data() {
     return {
+      feeType:["一般费用","差旅费用","外包费用"],
+      listLoading:false,
+      tableHeight:0,
+      list:[],
+      total:0,
+      code:null,
+      date:null,
+      type:null,
+      ownerId: null,
       displayTable: false,
       form: {
           name: '',
@@ -221,8 +282,17 @@ export default {
   },
   computed: {},
   watch: {},
-  created() {},
-  mounted() {},
+  created() {
+    let height = window.innerHeight;
+    this.tableHeight = height - 195;
+    const that = this;
+    window.onresize = function temp() {
+        that.tableHeight = window.innerHeight - 195;
+    };
+  },
+  mounted() {
+    this.getList();
+  },
   methods: {
 
     staffs() { // 控制员工费用报表
@@ -236,15 +306,15 @@ export default {
     getList() {
       this.http.post('/expense-sheet/list', {pageIndex: this.page,
                     pageSize: this.size,
-                    code: null,
-                    ownerId:null,
+                    code: this.code,
+                    createDate: this.date,
+                    ownerId:this.ownerId,
+                    type:this.type,
                     },
         res => {
             if (res.code == "ok") {
-                this.$message({
-                message: '填报成功',
-                type: "success"
-                });
+                this.list = res.data.records;
+                this.total = res.data.total; 
             } else {
                 this.$message({
                 message: res.msg,
@@ -328,6 +398,40 @@ export default {
             });
         });
     },
+    
+    //分页
+    handleCurrentChange(val) {
+        this.page = val;
+        this.getList();
+    },
+
+    handleSizeChange(val) {
+        this.size = val;
+        this.getList();
+    },
+    deleteItem(item) {
+      this.$confirm("确认要删除吗?", "提示", {
+                    //type: 'warning'
+                }).then(() => {
+                    this.http.post('/expense-sheet/delete', {id:item.id},
+                    res => {
+                        if (res.code == "ok") {
+                            this.getList();
+                        } else {
+                            this.$message({
+                            message: res.msg,
+                            type: "error"
+                            });
+                        }
+                    },
+                    error => {
+                        this.$message({
+                            message: error,
+                            type: "error"
+                        });
+                    });
+                });
+    },
   },
 };
 </script>

+ 1 - 1
fhKeeper/formulahousekeeper/timesheet/src/views/project/info.vue

@@ -156,7 +156,7 @@
             </div>
         </el-dialog>
 
-        <el-dialog title="校成本基线" v-if="addBaseFormVisible" :visible.sync="addBaseFormVisible" :close-on-click-modal="false" customClass="customWidth" width="600px">
+        <el-dialog title="校成本基线" v-if="addBaseFormVisible" :visible.sync="addBaseFormVisible" :close-on-click-modal="false" customClass="customWidth" width="600px">
             <el-form ref="basicInfoForm" :model="addForm" :rules="rules" label-width="120px">
                 <el-form-item label="人工成本" >
                     <el-input v-model="addForm.baseMan"  placeholder="请输入" clearable></el-input>