lsw преди 1 година
родител
ревизия
7abf865efe

+ 20 - 9
admin-ui/src/views/work/statement/audit/index.vue

@@ -8,10 +8,10 @@
         <el-input v-model="queryParams.batchName" placeholder="请输入结算批次" @keyup.enter.native="handleQuery" clearable />
       </el-form-item>
       <el-form-item label="关联项目" prop="projectId">
-        <projectSelect v-model="queryParams.projectId"></projectSelect>
+        <projectSelect v-model="queryParams.projectId" class="inp"></projectSelect>
       </el-form-item>
       <el-form-item label="审核状态" prop="audit">
-        <el-select v-model="queryParams.audit" placeholder="充值状态" class="se" clearable>
+        <el-select v-model="queryParams.audit" placeholder="待审状态" class="se" clearable>
           <el-option value="1" label="待审核"></el-option>
           <el-option value="2" label="审核通过"></el-option>
           <el-option value="3" label="审核驳回"></el-option>
@@ -40,7 +40,7 @@
           <el-tag type="success" v-if="scope.row.audit == 2">审核通过</el-tag>
           <el-popover placement="top-start" v-if="scope.row.audit == 3" title="原因" width="200" trigger="hover" :content="scope.row.msg">
             <div slot="reference">
-              <el-tag type="info">审核驳回</el-tag>
+              <el-tag type="info">驳回</el-tag>
               <i class="el-icon-warning"></i>
             </div>
           </el-popover>
@@ -51,7 +51,7 @@
         <template slot-scope="scope">
           <el-button size="mini" type="text" icon="el-icon-view" @click="op('detail', scope.row)">详情</el-button>
           <el-button size="mini" type="text" icon="el-icon-check" @click="op('success', scope.row)" v-if="scope.row.audit === 1">同意</el-button>
-          <el-button size="mini" type="text" icon="el-icon-close" @click="op('submit', scope.row)" v-if="scope.row.audit === 1">驳回</el-button>
+          <el-button size="mini" type="text" icon="el-icon-close" @click="op('reject', scope.row)" v-if="scope.row.audit === 1">驳回</el-button>
         </template>
       </el-table-column>
       <template slot="empty">
@@ -72,6 +72,7 @@ export default {
       queryParams: {
         pageNum: 1,
         pageSize: 10,
+        num: null,
         batchName: null,
         audit: null,
         projectId: null,
@@ -104,16 +105,26 @@ export default {
       }
       if (tag == 'success') {
         this.$confirm('是否确认审核通过?', '警告', { type: 'warning' }).then(() => {
-          this.ajax({ url: '/work/statement/audit/success/' + id, data: { id: id } }).then((response) => {
+          this.ajax({ url: '/work/statement/audit/success/' + id }).then((response) => {
             this.$modal.msgSuccess('审核成功');
             this.getList();
           });
         });
       }
-      if (tag == 'cancel') {
-        this.$confirm('是否撤销审核?', '警告', { type: 'warning' }).then(() => {
-          this.ajax({ url: '/work/statement/manage/cancel/' + id, data: { id: id } }).then((response) => {
-            this.$modal.msgSuccess('撤销成功');
+      if (tag == 'reject') {
+        this.$prompt('确定审核驳回', {
+          type: 'warning',
+          showInput: true,
+          inputType: 'textarea',
+          inputPlaceholder: '驳回原因',
+          inputValidator: (value) => {
+            if (!value) {
+              return '请输入驳回原因';
+            }
+          }
+        }).then(({ value }) => {
+          this.ajax({ method: 'post', url: '/work/statement/audit/reject', data: { id: id, msg: value } }).then((response) => {
+            this.$modal.msgSuccess('驳回成功');
             this.getList();
           });
         });

+ 1 - 1
admin-ui/src/views/work/statement/make/edit.vue

@@ -78,7 +78,7 @@ export default {
       this.form.file = '';
     },
     importTemplate() {
-      this.download('work/statement/importTemplate', {}, '结算单模版.xlsx');
+      this.download('work/statement/make/download', {}, '结算单模版.xlsx');
     },
     submitForm() {
       this.$refs['form'].validate((valid) => {

+ 5 - 4
admin-ui/src/views/work/statement/make/index.vue

@@ -31,10 +31,11 @@
         </template>
       </el-table-column>
       <el-table-column label="创建日期" align="center" prop="createTime" width="170" />
-      <el-table-column label="操作" align="center" width="230">
+      <el-table-column label="操作" align="center" width="270">
         <template slot-scope="scope">
           <el-button size="mini" type="text" icon="el-icon-view" @click="op('detail', scope.row)">详情</el-button>
-          <el-button size="mini" type="text" icon="el-icon-edit" @click="op('generate', scope.row)" v-if="scope.row.state === 0">生成结算单</el-button>
+          <el-button size="mini" type="text" icon="el-icon-check" @click="op('generate', scope.row)" v-if="scope.row.state === 0">生成结算单</el-button>
+          <el-button size="mini" type="text" icon="el-icon-edit" @click="op('edit', scope.row)" v-if="scope.row.state === 0">编辑</el-button>
           <el-button size="mini" type="text" icon="el-icon-delete" @click="del(scope.row)" v-if="scope.row.state === 0">删除</el-button>
         </template>
       </el-table-column>
@@ -87,7 +88,7 @@ export default {
         return;
       }
       if (tag == 'download') {
-        this.download('work/statement/importTemplate', {}, '结算单模版.xlsx');
+        this.download('work/statement/make/download', {}, '结算单模版.xlsx');
         return;
       }
       const id = row.id;
@@ -95,7 +96,7 @@ export default {
         this.iframe({ obj: record, param: { id: id, detail: true }, title: '查看结算单明细', width: '65%', height: '65%' });
       }
       if (tag == 'edit') {
-        this.iframe({ obj: edit, param: { id: id }, title: '编辑', width: '50%', height: '50%' });
+        this.iframe({ obj: record, param: { id: id }, title: '编辑结算单', width: '65%', height: '65%' });
       }
       if (tag == 'generate') {
         this.$confirm('是否确认生成结算单?', '警告', { type: 'warning' }).then(() => {

+ 13 - 2
ruoyi-admin/src/main/java/com/ruoyi/web/work/controller/StatementController.java

@@ -8,6 +8,7 @@ import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.web.work.domain.Statement;
 import com.ruoyi.web.work.domain.StatementDetail;
+import com.ruoyi.web.work.domain.dto.RejectDto;
 import com.ruoyi.web.work.service.IStatementDetailService;
 import com.ruoyi.web.work.service.IStatementService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -98,6 +99,13 @@ public class StatementController extends BaseController {
         return statementService.auditSuccess(id);
     }
 
+    @PreAuthorize("@ss.hasPermi('work:statement:audit')")
+    @Log(title = "结算单审核驳回", businessType = BusinessType.UPDATE)
+    @PostMapping("/audit/reject")
+    public AjaxResult auditReject(@Validated @RequestBody RejectDto dto) {
+        return statementService.auditReject(dto);
+    }
+
     @PreAuthorize("@ss.hasPermi('work:statement:manage')")
     @Log(title = "提交结算单审核", businessType = BusinessType.UPDATE)
     @GetMapping("/manage/submit/{id}")
@@ -150,9 +158,12 @@ public class StatementController extends BaseController {
         return statementService.makeRemove(id);
     }
 
+    /**
+     * 结算单模板下载
+     */
     @PreAuthorize("@ss.hasPermi('work:statement:make')")
-    @PostMapping("/importTemplate")
-    public void importTemplate(HttpServletResponse response) {
+    @PostMapping("/make/download")
+    public void download(HttpServletResponse response) {
         ExcelUtil<StatementDetail> util = new ExcelUtil<StatementDetail>(StatementDetail.class);
         util.importTemplateExcel(response, "结算单");
     }

+ 16 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/work/domain/dto/RejectDto.java

@@ -0,0 +1,16 @@
+package com.ruoyi.web.work.domain.dto;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+@Data
+public class RejectDto {
+
+    @NotNull(message = "参数错误")
+    private Long id;
+
+    @NotBlank(message = "驳回原因不能为空")
+    private String msg;
+}

+ 8 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/work/service/IStatementService.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.web.work.domain.Statement;
 import com.ruoyi.web.work.domain.StatementDetail;
+import com.ruoyi.web.work.domain.dto.RejectDto;
 
 import java.util.List;
 
@@ -59,6 +60,13 @@ public interface IStatementService extends IService<Statement> {
     AjaxResult auditSuccess(Long id);
 
     /**
+     * 结算单审核驳回
+     * @param dto
+     * @return
+     */
+    AjaxResult auditReject(RejectDto dto);
+
+    /**
      * 删除结算单(只有未生成的才能删除)
      *
      * @param id

+ 18 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/work/service/impl/StatementServiceImpl.java

@@ -11,6 +11,7 @@ import com.ruoyi.common.utils.bean.BeanValidators;
 import com.ruoyi.web.work.domain.Platform;
 import com.ruoyi.web.work.domain.Statement;
 import com.ruoyi.web.work.domain.StatementDetail;
+import com.ruoyi.web.work.domain.dto.RejectDto;
 import com.ruoyi.web.work.mapper.StatementDetailMapper;
 import com.ruoyi.web.work.mapper.StatementMapper;
 import com.ruoyi.web.work.service.IStatementDetailService;
@@ -164,6 +165,23 @@ public class StatementServiceImpl extends ServiceImpl<StatementMapper, Statement
     }
 
     @Override
+    public AjaxResult auditReject(RejectDto dto) {
+        Statement statement = getById(dto.getId());
+        if (statement == null || !statement.getCompanyId().equals(SecurityUtils.getLoginUser().getUser().getCompanyId())) {
+            return AjaxResult.error("结算单不存在或非法操作");
+        }
+        if (statement.getAudit() != 1) {
+            return AjaxResult.error("当前结算单不能被驳回");
+        }
+        statement.setMsg(dto.getMsg());
+        statement.setAudit(3);
+        if (!updateById(statement)) {
+            throw new ServiceException("结算单驳回失败,请联系平台");
+        }
+        return AjaxResult.success();
+    }
+
+    @Override
     public AjaxResult makeRemove(Long id) {
         Statement statement = getById(id);
         if (statement == null || !statement.getCompanyId().equals(SecurityUtils.getLoginUser().getUser().getCompanyId())) {

+ 1 - 0
ruoyi-admin/src/main/resources/mapper/work/StatementMapper.xml

@@ -13,6 +13,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             s.give,
             s.batch_name,
             s.file_name,
+            s.msg,
             s.service_company,
             s.create_time,
             s.generate_time,