Browse Source

日报基础信息录入

lfj 3 years ago
parent
commit
d488551f4d

+ 1 - 1
fjs-scenic-common/src/main/java/com/fjs/scenic/utils/Cons.java

@@ -229,6 +229,6 @@ public class Cons {
     /**
      * 景区列表 必须跟前端必须一一对应
      */
-    public static final List<String> SCENICS = new ArrayList<>(Arrays.asList("大峡谷景区", "水车坪景区", "濯水景区", "小南海", "十三寨", "水师码头",
+    public static final List<String> SCENICS = new ArrayList<>(Arrays.asList("大峡谷景区", "水车坪景区", "濯水景区", "小南海", "十三寨",
             "神龟峡景区", "官村", "爱莉丝", "阿蓬江旅行社公司"));
 }

+ 20 - 0
fjs-scenic-entity/src/main/java/com/fjs/scenic/dto/InputInfoDto.java

@@ -0,0 +1,20 @@
+package com.fjs.scenic.dto;
+
+import com.fjs.scenic.entity.system.InpIncome;
+import com.fjs.scenic.entity.system.InputInfo;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @program: fjs-parent
+ * @description: 日报统计基础信息
+ * @author: lfj
+ * @since: 2021-09-30 15:26
+ **/
+
+@Data
+public class InputInfoDto extends InputInfo {
+    private List<InpIncome> income;
+}

+ 32 - 0
fjs-scenic-entity/src/main/java/com/fjs/scenic/entity/system/InpIncome.java

@@ -0,0 +1,32 @@
+package com.fjs.scenic.entity.system;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * (InpIncome)实体类
+ *
+ * @author lfj
+ * @since 2021-09-30 15:16:31
+ */
+
+@Data
+public class InpIncome implements Serializable {
+    private static final long serialVersionUID = 702062402388139779L;
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    private Integer inputInfoId;
+    /**
+     * 条目名称
+     */
+    private String item;
+    /**
+     * 值
+     */
+    private Integer sum;
+
+}

+ 48 - 0
fjs-scenic-entity/src/main/java/com/fjs/scenic/entity/system/InputInfo.java

@@ -0,0 +1,48 @@
+package com.fjs.scenic.entity.system;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.util.Date;
+
+/**
+ * (InputInfo)实体类
+ *
+ * @author lfj
+ * @since 2021-09-30 15:20:54
+ */
+
+@Data
+public class InputInfo implements Serializable {
+    private static final long serialVersionUID = 685778159669072758L;
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+    /**
+     * 公司名
+     */
+    private String company;
+    /**
+     * 景区名
+     */
+    private String scenic;
+    /**
+     * 合计金额
+     */
+    private Integer total;
+    /**
+     * 合计人次
+     */
+    private Integer personTimes;
+    /**
+     * 统计日期
+     */
+    private LocalDate staticDate;
+    /**
+     * 创建时间
+     */
+    private LocalDate createTime;
+
+}

+ 30 - 111
fjs-scenic-manager/src/main/java/com/fjs/scenic/controller/system/InputInfoController.java

@@ -2,14 +2,21 @@ package com.fjs.scenic.controller.system;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.fjs.scenic.controller.common.BaseController;
+import com.fjs.scenic.dto.InputInfoDto;
+import com.fjs.scenic.entity.system.InpIncome;
+import com.fjs.scenic.entity.system.InputInfo;
 import com.fjs.scenic.entity.system.Manage;
 import com.fjs.scenic.entity.system.TypeAuthority;
+import com.fjs.scenic.service.system.InpIncomeService;
+import com.fjs.scenic.service.system.InputInfoService;
 import com.fjs.scenic.service.system.TypeAuthorityService;
 import com.fjs.scenic.service.system.impl.ManageServiceImpl;
 import com.fjs.scenic.utils.Cons;
 import com.fjs.scenic.utils.ReturnResult;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.Assert;
 import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.servlet.ModelAndView;
@@ -17,6 +24,8 @@ import org.springframework.web.servlet.ModelAndView;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpSession;
 import java.security.Principal;
+import java.time.LocalDate;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -28,125 +37,35 @@ import java.util.List;
  */
 @RestController
 @RequestMapping("/inputInfo")
-public class InputInfoController extends BaseController<Manage> {
-
-    @Autowired
-    private ManageServiceImpl manageService;
+public class InputInfoController {
     @Autowired
-    private BCryptPasswordEncoder passwordEncoder;
+    private InputInfoService inputInfoService;
     @Autowired
-    private TypeAuthorityService typeAuthorityService;
+    private InpIncomeService inpIncomeService;
 
     @GetMapping("/index")
-    public ModelAndView sceniclist(HttpSession session) {
+    public ModelAndView sceniclist() {
         return new ModelAndView("system/inputInfo");
     }
 
-    @PostMapping("/addManage")
-    public ReturnResult addManage(Manage record, HttpServletRequest request) {
-        /* WSessionInfo sessionInfo = (WSessionInfo) request.getSession().getAttribute(Cons.SESSION_INFO);*/
-
-        //检验用户名是否存在
-        Manage nameRepet = new Manage();
-        nameRepet.setName(record.getName());
-        List<Manage> selectName = manageService.selectRepet(nameRepet);
-        if (!selectName.isEmpty()) {
-            return ReturnResult.build(400, "该管理员已存在!");
-        }
-        //检验手机号 是否存在
-        Manage phoneRepet = new Manage();
-        phoneRepet.setPhone(record.getPhone());
-        List<Manage> selectPhone = manageService.selectRepet(phoneRepet);
-        if (!selectPhone.isEmpty()) {
-            return ReturnResult.build(400, "该手机号已存在!");
-        }
-        record.setStatus(Cons.MANAGE_STATUS.NORMAL);
-        record.setManageId(2);
-        record.setPassword(passwordEncoder.encode(record.getPassword()));
-        return manageService.save(record);
-    }
-
-    @PostMapping("/delManage")
-    @ResponseBody
-    public ReturnResult delManage(int id) {
-        return ReturnResult.ok(manageService.delManage(id));
-    }
-
-    @PostMapping("/saveRole")
-    @ResponseBody
-    public ReturnResult saveRole(String roles, Integer id) {
-        return manageService.saveManageRole(id, roles);
-    }
-
-    @PostMapping("/saveTypeAuthority")
-    @ResponseBody
-    public ReturnResult saveTypeAuthority(@RequestBody List<TypeAuthority> typeAuthoritys) {
-        typeAuthorityService.remove(new LambdaQueryWrapper<TypeAuthority>().eq(TypeAuthority::getManager, typeAuthoritys.get(0).getManager()));
-        return ReturnResult.ok(typeAuthorityService.saveBatch(typeAuthoritys));
-    }
-
-    @PostMapping("/getTypeAuthority/{id}")
-    @ResponseBody
-    public ReturnResult getTypeAuthority(@PathVariable("id") Integer id) {
-        return ReturnResult.ok(typeAuthorityService.listMaps(new LambdaQueryWrapper<TypeAuthority>()
-                .select(TypeAuthority::getCompany, TypeAuthority::getScenic, TypeAuthority::getAuthority)
-                .eq(TypeAuthority::getManager, id)
-        ));
-    }
-
-    @GetMapping("/get/{id}")
-    public ReturnResult get(@PathVariable("id") Integer id) {
-        return manageService.get(id);
-    }
-
-    @PostMapping("/page1")
-    public ReturnResult page1(Manage record, int currentPage, int pageSize) {
-        return manageService.selfPage(record,currentPage,pageSize);
-    }
-
-    /**
-     * 管理账户冻结 解冻
-     *
-     * @param id
-     * @param status
-     * @return
-     */
-    @PostMapping("/freezeUnfreeza")
-    public ReturnResult freezeUnfreeza(Integer id, String status) {
-        return manageService.freezeUnfreeza(id, status) == 0 ? ReturnResult.error("操作失败") : ReturnResult.ok("操作成功");
-    }
-
-
-    /**
-     * 修改密码
-     *
-     * @param principal
-     * @param oldPWD    原密码
-     * @param newPWD    新密码
-     * @return
-     */
-    @PostMapping("/updatePWD")
-    public ReturnResult updatePWD(Principal principal, String oldPWD, String newPWD) {
-        String account = principal.getName();
-        Manage manage = manageService.getMangerByAccount(account);
-        if (!passwordEncoder.matches(oldPWD, manage.getPassword())) {
-            return ReturnResult.error("原密码验证失败");
-        } else if (manageService.updatePWD(account, passwordEncoder.encode(newPWD))) {
-            return ReturnResult.ok("密码修改成功");
-        } else {
-            return ReturnResult.error("密码修改失败");
-        }
-    }
-
-    @PostMapping("/update")
-    public ReturnResult update(Manage record) {
-        String password = record.getPassword();
-        if (!StringUtils.isEmpty(password)) {
-            record.setPassword(passwordEncoder.encode(password));
-        } else {
-            record.setPassword(null);
+    @PostMapping("/add")
+    @Transactional(rollbackFor = Exception.class)
+    public ReturnResult add(@RequestBody List<InputInfoDto> inputInfoDtos) {
+        for (InputInfoDto inputInfoDto : inputInfoDtos) {
+            inputInfoDto.setCreateTime(LocalDate.now());
+            int sum = inputInfoService.count(new LambdaQueryWrapper<InputInfo>()
+                    .eq(InputInfo::getStaticDate, inputInfoDto.getStaticDate())
+                    .eq(InputInfo::getScenic, inputInfoDto.getScenic()));
+            Assert.isTrue(sum == 0, "请勿重复添加");
+            inputInfoService.save(inputInfoDto);
+            if (inputInfoDto.getIncome()!=null){
+                for (InpIncome inpIncome : inputInfoDto.getIncome()) {
+                    inpIncome.setInputInfoId(inputInfoDto.getId());
+                    inpIncomeService.save(inpIncome);
+                }
+            }
         }
-        return ReturnResult.ok(manageService.update(record));
+        return ReturnResult.ok();
     }
 
 }

+ 305 - 287
fjs-scenic-manager/src/main/resources/templates/system/inputInfo.html

@@ -39,7 +39,8 @@
                                 </el-date-picker>
                             </el-form-item>
                             <el-form-item label="" :label-width="queryLabelWidth">
-                                <el-cascader placeholder="景区" v-model="con.companyScenic" :options="companyScenicOptions" :props="{ multiple: true }">
+                                <el-cascader placeholder="景区" v-model="con.companyScenic"
+                                    :options="companyScenicOptions" :props="{ multiple: true }">
                             </el-form-item>
                             </el-cascader>
                             <el-form-item label="" :label-width="queryLabelWidth">
@@ -102,80 +103,226 @@
                         </el-pagination>
                     </div>
                     <!--对话框1 新增-->
-                    <el-dialog title="新增" :visible.sync="dialog1Visible" :custom-class="'ele-dialog'" :center="true"
-                        @close="closeAddDialog1">
+                    <el-dialog title="新增" :visible.sync="dialog1Visible" :custom-class="'ele-dialog'" :center="true">
+                            <span class="demonstration">数据日期</span>
+                            <el-date-picker
+                                v-model="staticDate"
+                                type="date"
+                                format="yyyy-MM-dd"
+                                value-format="yyyy-MM-dd"
+                                :clearable = "false"
+                                :editable = "false"
+                                placeholder="选择日期">
+                            </el-date-picker>
                         <el-collapse v-model="collapse">
                             <el-collapse-item title="大峡谷景区" name="0">
-                                <el-form :model="addData" status-icon :rules="rules" ref="dialog1">
-                                    <el-form-item label="姓名" :label-width="formLabelWidth" prop="name">
-                                        <el-input v-model="addData.name" placeholder="请输入姓名"></el-input>
+                                <el-form :model="addData[0]" status-icon :label-width="formLabelWidth" inline ref="form0">
+                                    <template v-for="(item,i) in addData[0].income">
+                                        <el-form-item :label="item.item" :prop="'income['+i+'].sum'" :rules="commonRule">
+                                            <el-input-number v-model="item.sum" controls-position="right" :min="0"></el-input-number>
+                                        </el-form-item>
+                                    </template>
+                                    <el-form-item label="合计收入" prop="total" :rules="commonRule">
+                                        <el-input-number 
+                                        :value="countVal(addData[0],2,6)" 
+                                        controls-position="right" 
+                                        :min="0" 
+                                        :controls="false"
+                                        @input="bind(addData[0],'total',$event)"></el-input-number>
+                                    </el-form-item>
+                                    <el-form-item label="合计人次" prop="personTimes" :rules="commonRule">
+                                        <el-input-number 
+                                        :value="countVal(addData[0],0,2)" 
+                                        controls-position="right" 
+                                        :min="0" 
+                                        :controls="false"
+                                        @input="bind(addData[0],'personTimes',$event)"></el-input-number>
                                     </el-form-item>
                                 </el-form>
                             </el-collapse-item>
                             <el-collapse-item title="水车坪景区" name="1">
-                                <el-form :model="addData" status-icon :rules="rules" ref="dialog1">
-                                    <el-form-item label="姓名" :label-width="formLabelWidth" prop="name">
-                                        <el-input v-model="addData.name" placeholder="请输入姓名"></el-input>
+                                <el-form :model="addData[1]" status-icon :label-width="formLabelWidth" inline ref="form1">
+                                    <template v-for="(item,i) in addData[1].income">
+                                        <el-form-item :label="item.item" :prop="'income['+i+'].sum'" :rules="commonRule">
+                                            <el-input-number v-model="item.sum" controls-position="right" :min="0"></el-input-number>
+                                        </el-form-item>
+                                    </template>
+                                    <el-form-item label="合计收入" prop="total" :rules="commonRule">
+                                        <el-input-number 
+                                        :value="countVal(addData[1],0,2)" 
+                                        controls-position="right" 
+                                        :min="0" 
+                                        :controls="false"
+                                        @input="bind(addData[1],'total',$event)"></el-input-number>
+                                    </el-form-item>
+                                    <el-form-item label="合计人次" prop="personTimes" :rules="commonRule">
+                                        <el-input-number 
+                                        v-model="addData[1].personTimes" 
+                                        controls-position="right" 
+                                        :min="0" 
+                                        :controls="false">
+                                    </el-input-number>
                                     </el-form-item>
                                 </el-form>
                             </el-collapse-item>
                             <el-collapse-item title="濯水景区" name="2">
-                                <el-form :model="addData" status-icon :rules="rules" ref="dialog1">
-                                    <el-form-item label="姓名" :label-width="formLabelWidth" prop="name">
-                                        <el-input v-model="addData.name" placeholder="请输入姓名"></el-input>
+                                <el-form :model="addData[2]" status-icon :label-width="formLabelWidth" inline ref="form2">
+                                    <template v-for="(item,i) in addData[2].income">
+                                        <el-form-item :label="item.item" :prop="'income['+i+'].sum'" :rules="commonRule">
+                                            <el-input-number v-model="item.sum" controls-position="right" :min="0"></el-input-number>
+                                        </el-form-item>
+                                    </template>
+                                    <el-form-item label="合计收入" prop="total" :rules="commonRule">
+                                        <el-input-number 
+                                        :value="countVal(addData[2],2,14)" 
+                                        controls-position="right" 
+                                        :min="0" 
+                                        :controls="false"
+                                        @input="bind(addData[2],'total',$event)"></el-input-number>
+                                    </el-form-item>
+                                    <el-form-item label="合计人次" prop="personTimes" :rules="commonRule">
+                                        <el-input-number 
+                                        :value="countVal(addData[2],0,2)" 
+                                        controls-position="right" 
+                                        :min="0" 
+                                        :controls="false"
+                                        @input="bind(addData[2],'personTimes',$event)"></el-input-number>
                                     </el-form-item>
                                 </el-form>
                             </el-collapse-item>
                             <el-collapse-item title="小南海" name="3">
-                                <el-form :model="addData" status-icon :rules="rules" ref="dialog1">
-                                    <el-form-item label="姓名" :label-width="formLabelWidth" prop="name">
-                                        <el-input v-model="addData.name" placeholder="请输入姓名"></el-input>
+                                <el-form :model="addData[3]" status-icon :label-width="formLabelWidth" inline ref="form3">
+                                    <el-form-item label="合计收入" prop="total" :rules="commonRule">
+                                        <el-input-number 
+                                        v-model="addData[3].total" 
+                                        controls-position="right" 
+                                        :min="0" 
+                                        :controls="false">
+                                    </el-input-number>
+                                    </el-form-item>
+                                    <el-form-item label="合计人次" prop="personTimes" :rules="commonRule">
+                                        <el-input-number 
+                                        v-model="addData[3].personTimes" 
+                                        controls-position="right" 
+                                        :min="0" 
+                                        :controls="false"></el-input-number>
                                     </el-form-item>
                                 </el-form>
                             </el-collapse-item>
                             <el-collapse-item title="十三寨" name="4">
-                                <el-form :model="addData" status-icon :rules="rules" ref="dialog1">
-                                    <el-form-item label="姓名" :label-width="formLabelWidth" prop="name">
-                                        <el-input v-model="addData.name" placeholder="请输入姓名"></el-input>
+                                <el-form :model="addData[4]" status-icon :label-width="formLabelWidth" inline ref="form4">
+                                    <template v-for="(item,i) in addData[4].income">
+                                        <el-form-item :label="item.item" :prop="'income['+i+'].sum'" :rules="commonRule">
+                                            <el-input-number v-model="item.sum" controls-position="right" :min="0"></el-input-number>
+                                        </el-form-item>
+                                    </template>
+                                    <el-form-item label="合计收入" prop="total" :rules="commonRule">
+                                        <el-input-number 
+                                        :value="countVal(addData[4],2,3)" 
+                                        controls-position="right" 
+                                        :min="0" 
+                                        :controls="false"
+                                        @input="bind(addData[4],'total',$event)"></el-input-number>
                                     </el-form-item>
-                                </el-form>
-                            </el-collapse-item>
-                            <el-collapse-item title="水师码头" name="5">
-                                <el-form :model="addData" status-icon :rules="rules" ref="dialog1">
-                                    <el-form-item label="姓名" :label-width="formLabelWidth" prop="name">
-                                        <el-input v-model="addData.name" placeholder="请输入姓名"></el-input>
+                                    <el-form-item label="合计人次" prop="personTimes" :rules="commonRule">
+                                        <el-input-number 
+                                        :value="countVal(addData[4],0,2)" 
+                                        controls-position="right" 
+                                        :min="0" 
+                                        :controls="false"
+                                        @input="bind(addData[4],'personTimes',$event)"></el-input-number>
                                     </el-form-item>
                                 </el-form>
                             </el-collapse-item>
-                            <el-collapse-item title="神龟峡景区" name="6">
-                                <el-form :model="addData" status-icon :rules="rules" ref="dialog1">
-                                    <el-form-item label="姓名" :label-width="formLabelWidth" prop="name">
-                                        <el-input v-model="addData.name" placeholder="请输入姓名"></el-input>
+                            <el-collapse-item title="神龟峡景区" name="5">
+                                <el-form :model="addData[5]" status-icon :label-width="formLabelWidth" inline ref="form5">
+                                    <template v-for="(item,i) in addData[5].income">
+                                        <el-form-item :label="item.item" :prop="'income['+i+'].sum'" :rules="commonRule">
+                                            <el-input-number v-model="item.sum" controls-position="right" :min="0"></el-input-number>
+                                        </el-form-item>
+                                    </template>
+                                    <el-form-item label="合计收入" prop="total" :rules="commonRule">
+                                        <el-input-number 
+                                        :value="countVal(addData[5],2,3)" 
+                                        controls-position="right" 
+                                        :min="0" 
+                                        :controls="false"
+                                        @input="bind(addData[5],'total',$event)"></el-input-number>
+                                    </el-form-item>
+                                    <el-form-item label="合计人次" prop="personTimes" :rules="commonRule">
+                                        <el-input-number 
+                                        :value="countVal(addData[5],0,2)" 
+                                        controls-position="right" 
+                                        :min="0" 
+                                        :controls="false"
+                                        @input="bind(addData[5],'personTimes',$event)"></el-input-number>
                                     </el-form-item>
                                 </el-form>
                             </el-collapse-item>
-                            <el-collapse-item title="官村" name="7">
-                                <el-form :model="addData" status-icon :rules="rules" ref="dialog1">
-                                    <el-form-item label="姓名" :label-width="formLabelWidth" prop="name">
-                                        <el-input v-model="addData.name" placeholder="请输入姓名"></el-input>
+                            <el-collapse-item title="官村" name="6">
+                                <el-form :model="addData[6]" status-icon :label-width="formLabelWidth" inline ref="form6">
+                                    <el-form-item label="合计收入" prop="total" :rules="commonRule">
+                                        <el-input-number 
+                                        v-model="addData[6].total" 
+                                        controls-position="right" 
+                                        :min="0" 
+                                        :controls="false">
+                                    </el-input-number>
+                                    </el-form-item>
+                                    <el-form-item label="合计人次" prop="personTimes" :rules="commonRule">
+                                        <el-input-number 
+                                        v-model="addData[6].personTimes" 
+                                        controls-position="right" 
+                                        :min="0" 
+                                        :controls="false"></el-input-number>
                                     </el-form-item>
                                 </el-form>
                             </el-collapse-item>
-                            <el-collapse-item title="爱莉丝" name="8">
-                                <el-form :model="addData" status-icon :rules="rules" ref="dialog1">
-                                    <el-form-item label="姓名" :label-width="formLabelWidth" prop="name">
-                                        <el-input v-model="addData.name" placeholder="请输入姓名"></el-input>
+                            <el-collapse-item title="爱莉丝" name="7">
+                                <el-form :model="addData[7]" status-icon :label-width="formLabelWidth" inline ref="form7">
+                                    <el-form-item label="合计收入" prop="total" :rules="commonRule">
+                                        <el-input-number 
+                                        v-model="addData[7].total" 
+                                        controls-position="right" 
+                                        :min="0" 
+                                        :controls="false">
+                                    </el-input-number>
+                                    </el-form-item>
+                                    <el-form-item label="合计人次" prop="personTimes" :rules="commonRule">
+                                        <el-input-number 
+                                        v-model="addData[7].personTimes" 
+                                        controls-position="right" 
+                                        :min="0" 
+                                        :controls="false"></el-input-number>
                                     </el-form-item>
                                 </el-form>
                             </el-collapse-item>
-                            <el-collapse-item title="阿蓬江旅行社公司" name="9">
-                                <el-form :model="addData" status-icon :rules="rules" ref="dialog1">
-                                    <el-form-item label="姓名" :label-width="formLabelWidth" prop="name">
-                                        <el-input v-model="addData.name" placeholder="请输入姓名"></el-input>
+                            <el-collapse-item title="阿蓬江旅行社公司" name="8">
+                                <el-form :model="addData[8]" status-icon :label-width="formLabelWidth" inline ref="form8">
+                                    <template v-for="(item,i) in addData[8].income">
+                                        <el-form-item :label="item.item" :prop="'income['+i+'].sum'" :rules="commonRule">
+                                            <el-input-number v-model="item.sum" controls-position="right" :min="0"></el-input-number>
+                                        </el-form-item>
+                                    </template>
+                                    <el-form-item label="合计收入" prop="total" :rules="commonRule">
+                                        <el-input-number 
+                                        :value="countVal(addData[8],0,4)" 
+                                        controls-position="right" 
+                                        :min="0" 
+                                        :controls="false"
+                                        @input="bind(addData[8],'total',$event)"></el-input-number>
+                                    </el-form-item>
+                                    <el-form-item label="合计人次" prop="personTimes" :rules="commonRule">
+                                        <el-input-number 
+                                        :value="countVal(addData[8],4,7)" 
+                                        controls-position="right" 
+                                        :min="0" 
+                                        :controls="false"
+                                        @input="bind(addData[8],'personTimes',$event)"></el-input-number>
                                     </el-form-item>
                                 </el-form>
                             </el-collapse-item>
-                          </el-collapse>
+                        </el-collapse>
                         <div slot="footer" class="dialog-footer">
                             <el-button type="primary" @click="dialog1Sub('dialog1')">提 交</el-button>
                             <el-button @click="dialog1Visible = false">取 消</el-button>
@@ -192,199 +339,119 @@
 <script src="/js/util/dyAjax.js"></script>
 <script>
     $(function () {
+        const initIncomeFunc = arr => Array.from(arr, item => { return { item, sum: 0 } })
         const TYPE_AUTHORITY = { authority: 0, companyScenic: [[0, 0]] }
+        const COMPANY_SCENIC = [
+            {
+                value: 0,
+                label: '巴拉胡景区管理公司',
+                children: [
+                    { value: 0, label: '大峡谷景区' },
+                    { value: 1, label: '水车坪景区' },
+                    { value: 2, label: '濯水景区' },
+                    { value: 3, label: '小南海' },
+                    { value: 4, label: '十三寨' }]
+            }, {
+                value: 1,
+                label: '芭拉胡公司',
+                children: [
+                    { value: 5, label: '神龟峡景区' }]
+            }, {
+                value: 2,
+                label: '爱莉丝公司',
+                children: [
+                    { value: 6, label: '官村' },
+                    { value: 7, label: '爱莉丝' }]
+            }, {
+                value: 3,
+                label: '阿蓬江旅行社公司',
+                children: [{ value: 8, label: '阿蓬江旅行社公司' }]
+            }]
+
         var option = {
             mixins: [dyMixin],
             data() {
                 return {
-                    collapse:['0','1','2','3','4','5','6','7','8','9'],
+                    staticDate:new Date().toJSON().slice(0,10),
+                    formLabelWidth:'200px',
+                    collapse: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'],
                     companyScenic: undefined,
-                    companyScenicOptions: [
-                        {
-                            value: 0,
-                            label: '巴拉胡景区管理公司',
-                            children: [
-                                { value: 0, label: '大峡谷景区' },
-                                { value: 1, label: '水车坪景区' },
-                                { value: 2, label: '濯水景区' },
-                                { value: 3, label: '小南海' },
-                                { value: 4, label: '十三寨' }]
-                        }, {
-                            value: 1,
-                            label: '芭拉胡公司',
-                            children: [
-                                { value: 5, label: '水师码头' },
-                                { value: 6, label: '神龟峡景区' }]
-                        }, {
-                            value: 2,
-                            label: '爱莉丝公司',
-                            children: [
-                                { value: 7, label: '官村' },
-                                { value: 8, label: '爱莉丝' }]
-                        }, {
-                            value: 3,
-                            label: '阿蓬江旅行社公司',
-                            children: [{ value: 9, label: '阿蓬江旅行社公司' }]
-                        }],
-                    con: { dataTime:undefined,companyScenic:undefined, currentPage: 1, pageSize: 10, total: 0,createTime:undefined, },//查询条件
+                    companyScenicOptions: [...COMPANY_SCENIC],
+                    con: { dataTime: undefined, companyScenic: undefined, currentPage: 1, pageSize: 10, total: 0, createTime: undefined, },//查询条件
                     tableData: [],
                     dialog1Visible: false,//对话框隐藏
-                    addData: {
-                        name: '',
-                        phone: '',
-                        account: '',
-                        password: '',
-                        password2: ''
-                    },//新增数据模板
+                    addData: [
+                        {
+                            total:0,
+                            personTimes:0,
+                            company: COMPANY_SCENIC[0].label,
+                            scenic: COMPANY_SCENIC[0].children[0].label,
+                            income: initIncomeFunc(['门票 散客人次', '门票 团队人次', '门票收入', '中转车收入', '停车费收入', '玻璃桥索道收入'])
+                        },
+                        {
+                            total:0,
+                            personTimes:0,
+                            company: COMPANY_SCENIC[0].label,
+                            scenic: COMPANY_SCENIC[0].children[1].label,
+                            income: initIncomeFunc(['骑马收入', '露营收入'])
+                        },
+                        {
+                            total:0,
+                            personTimes:0,
+                            company: COMPANY_SCENIC[0].label,
+                            scenic: COMPANY_SCENIC[0].children[2].label,
+                            income: initIncomeFunc(['暗河门票 散客人次', '暗河门票 团队人次', '门票收入', '花田收入', '钟楼收入',
+                                '芭茅岛酒店收入', '蒲花河酒店收入', '水乐园收入', '特产馆收入', '暗河购物中心收入',
+                                '观光车收入', '竹筏收入', '快艇收入', '水上自行车收入'])
+                        },
+                        {
+                            total:0,
+                            personTimes:0,
+                            company: COMPANY_SCENIC[0].label,
+                            scenic: COMPANY_SCENIC[0].children[3].label
+                        },
+                        {
+                            total:0,
+                            personTimes:0,
+                            company: COMPANY_SCENIC[0].label,
+                            scenic: COMPANY_SCENIC[0].children[4].label,
+                            income: initIncomeFunc(['门票 散客人次', '门票 团队人次', '门票收入'])
+                        },
+                        {
+                            total:0,
+                            personTimes:0,
+                            company: COMPANY_SCENIC[1].label,
+                            scenic: COMPANY_SCENIC[1].children[0].label,
+                            income: initIncomeFunc(['船票 散客人次', '船票 团队人次', '船票收入'])
+                        },
+                        {
+                            total:0,
+                            personTimes:0,
+                            company: COMPANY_SCENIC[2].label,
+                            scenic: COMPANY_SCENIC[2].children[0].label
+                        },
+                        {
+                            total:0,
+                            personTimes:0,
+                            company: COMPANY_SCENIC[2].label,
+                            scenic: COMPANY_SCENIC[2].children[1].label
+                        },
+                        {
+                            total:0,
+                            personTimes:0,
+                            company: COMPANY_SCENIC[3].label,
+                            scenic: COMPANY_SCENIC[3].children[0].label,
+                            income: initIncomeFunc(['组团收入', '地接收入', '研学收入','导服收入','组团人次','地接人次','研学人次','收入合计','合计人次'])
+                        }
+                    ],//新增数据模板
                     editData: {},//编辑数据
                     typeAuthority: Object.assign(TYPE_AUTHORITY),//角色数据
                     roleIds: [],
                     dialog2Visible: false,//编辑弹框隐藏
                     dialog3Visible: false,//角色弹框隐藏
-                    rules: {
-                        name: [
-                            {
-                                required: true, validator: (rule, value, callback) => {
-                                    if (!(/^[\u4E00-\u9FA5\uf900-\ufa2d]{2,4}$/.test(value))) {
-                                        callback(new Error('请输入正确的姓名,只能输入汉字,长度在2-4个字符之间'));
-                                    } else {
-                                        callback();
-                                    }
-                                }, trigger: 'blur'
-                            }
-                        ],
-                        phone: [
-                            {
-                                required: true, validator: (rule, value, callback) => {
-                                    if (!(/^1[34578]\d{9}$/.test(value))) {
-                                        callback(new Error('请输入正确的联系方式'));
-                                    } else {
-                                        callback();
-                                    }
-                                }, trigger: 'blur'
-                            }
-                        ],
-                        account: [
-                            {
-                                required: true,
-                                validator: (rule, value, callback) => {
-                                    if (!(/^[a-zA-Z0-9]+$/.test(value))) {
-                                        callback(new Error('请输入字母或数字'));
-                                    } else {
-                                        callback();
-                                    }
-                                }, trigger: 'blur'
-                            },
-                            { min: 6, max: 12, message: '长度在6-12个字符', trigger: 'blur' }
-                        ],
-                        password: [
-                            {
-                                required: true,
-                                validator: (rule, value, callback) => {
-                                    if (!(/^.{6,12}$/.test(value))) {
-                                        callback(new Error('请输入6-12位密码'));
-                                    } else {
-                                        if (this.addData.password !== '') {
-                                            this.$refs.dialog1.validateField('password2');
-                                        }
-                                        callback();
-                                    }
-                                }, trigger: 'blur'
-                            }
-                        ],
-                        password2: [
-                            {
-                                required: true, validator: (rule, value, callback) => {
-                                    if (value === '') {
-                                        callback(new Error('请再次输入密码'));
-                                    } else if (value !== this.addData.password) {
-                                        callback(new Error('两次输入密码不一致!'));
-                                    } else {
-                                        callback();
-                                    }
-                                }, trigger: 'blur'
-                            }
-                        ]
-                    },//对话框1验证规则
-                    rules2: {
-                        name: [
-                            {
-                                required: true, validator: (rule, value, callback) => {
-                                    if (!(/^[\u4E00-\u9FA5\uf900-\ufa2d]{2,4}$/.test(value))) {
-                                        callback(new Error('请输入正确的姓名'));
-                                    } else {
-                                        callback();
-                                    }
-                                }, trigger: 'blur'
-                            }
-                        ],
-                        phone: [
-                            {
-                                required: true, validator: (rule, value, callback) => {
-                                    if (!(/^1[34578]\d{9}$/.test(value))) {
-                                        callback(new Error('请输入正确的联系方式'));
-                                    } else {
-                                        callback();
-                                    }
-                                }, trigger: 'blur'
-                            }
-                        ],
-                        account: [
-                            {
-                                required: true,
-                                validator: (rule, value, callback) => {
-                                    if (!(/^[a-zA-Z0-9]+$/.test(value))) {
-                                        callback(new Error('请输入字母或数字'));
-                                    } else {
-                                        callback();
-                                    }
-                                }, trigger: 'blur'
-                            },
-                            { min: 6, max: 12, message: '长度在6-12个字符', trigger: 'blur' }
-                        ],
-                        password: [
-                            {
-                                required: false,
-                                validator: (rule, value, callback) => {
-                                    // console.log(value===null)
-                                    if (value !== null && value !== '') {
-                                        if (!(/^.{6,12}$/.test(value))) {
-                                            callback(new Error('请输入6-12位密码'));
-                                        } else {
-                                            if (this.editData.password !== '') {
-                                                this.$refs.dialog2.validateField('password2');
-                                            }
-                                            callback();
-                                        }
-                                    } else {
-                                        callback();
-                                    }
-
-                                }, trigger: 'blur'
-                            }
-                        ],
-                        password2: [
-                            {
-                                required: false, validator: (rule, value, callback) => {
-                                    // if (value === '') {
-                                    //     callback(new Error('请再次输入密码'));
-                                    // } else
-                                    console.log(value, typeof (value), typeof (value) !== 'undefined', "b:" + this.editData.password)
-                                    console.log(this.editData.password)
-                                    if ((this.editData.password !== null && this.editData.password !== '') || typeof (value) !== 'undefined' && value !== null) {
-                                        if (value !== this.editData.password) {
-                                            callback(new Error('两次输入密码不一致!'));
-                                        } else {
-                                            callback();
-                                        }
-                                    } else {
-                                        callback();
-                                    }
-
-                                }, trigger: 'blur'
-                            }
-                        ]
-                    },//对话框2验证规则
+                    commonRule: {
+                        required: true, trigger: ['blur','change'], message: '不能为空'
+                    },
                     MANAGE_STATUS: { '正常': "1", '无效': "0" },//账户状态
                 }
             },
@@ -392,8 +459,11 @@
                 this.loadTable1();
             },
             methods: {
-                companyScenicChange(value) {
-                    console.log(value);
+                countVal(scenic,form,to){
+                    return scenic.income.slice(form,to).reduce((acc,cur) => acc+cur.sum,0)
+                },
+                bind(bindVal,key,val){
+                    bindVal[key] = val
                 },
                 // 表1 冻结 解结
                 table1FreezeUnfreeza(id, stutes) {
@@ -416,7 +486,6 @@
                     let _this = this;
                     $.dyAjax('/manage/get/' + row.id, {}, function (data) {
                         _this.editData = data;
-                        //                        _this.editData.password2 = '';
                         _this.dialog2Visible = true;
                         console.log(data);
                     }, 'get');
@@ -436,10 +505,18 @@
                 //对话框1提交事件
                 dialog1Sub: function (formName) {
                     var _this = this;
-                    console.log(this.addData);
-                    this.$refs[formName].validate((valid) => {
-                        if (valid) {
-                            $.dyAjax('/manage/addManage', _this.addData, function (data) {
+                    const promises = [];
+                    Array.from(new Array(9),item => null).forEach((el,i)=>{
+                        promises.push(this.$refs['form'+i].validate())
+                    })
+                    Promise.allSettled(promises).then((results) => {
+                       const fail = results.findIndex(result => result.status==='rejected' )>-1
+                        if (!fail) {
+                            const datas = Object.assign([],_this.addData)
+                            console.log(datas);
+                            datas.forEach(el => el.staticDate = this.staticDate)
+                            console.log(datas);
+                            $.dyjAjax('/inputInfo/add', datas, function (data) {
                                 if (data.status === 200) {
                                     _this.loadTable1(function () {
                                         _this.$message({
@@ -447,7 +524,6 @@
                                             type: 'success'
                                         });
                                         _this.dialog1Visible = false;
-                                        _this.jsonClear(_this.addData);
                                     });
                                 } else {
                                     _this.loadTable1(function () {
@@ -456,10 +532,8 @@
                                             type: 'error'
                                         });
                                         _this.dialog1Visible = false;
-                                        _this.jsonClear(_this.addData);
                                     });
                                 }
-
                             });
                         } else {
                             return false;
@@ -514,62 +588,6 @@
                         _this.dialog3Visible = true;
                     });
                 },
-                //对话框2 编辑提交事件
-                dialog2Sub: function (formName) {
-                    var _this = this;
-                    console.log(this.editData);
-                    this.$refs[formName].validate((valid) => {
-                        if (valid) {
-                            $.dyAjax('/manage/update', _this.editData, function (data) {
-                                _this.loadTable1(function () {
-                                    _this.$message({
-                                        message: '成功',
-                                        type: 'success'
-                                    });
-                                    _this.dialog2Visible = false;
-                                    _this.jsonClear(_this.editData);
-                                });
-                            });
-                        } else {
-                            return false;
-                        }
-                    });
-                },
-                //对话框3 编辑提交事件
-                dialog3Sub: function (formName) {
-                    var _this = this;
-                    this.$refs[formName].validate((valid) => {
-                        if (valid) {
-                            const { companyScenic, authority, manager } = _this.typeAuthority
-                            let datas = []
-                            companyScenic.forEach(element => {
-                                datas.push({ company: element[0], scenic: element[1], authority, manager })
-                            });
-                            $.dyjAjax('/manage/saveTypeAuthority', datas, function (data) {
-                                _this.loadTable1(function () {
-                                    _this.$message({
-                                        message: '成功',
-                                        type: 'success'
-                                    });
-                                    _this.dialog3Visible = false;
-                                }, 'post');
-                            });
-                        } else {
-                            return false;
-                        }
-                    });
-                },
-
-                closeAddDialog1: function () {
-                    this.$refs['dialog1'].resetFields()
-                },
-
-                closeEditDialog2: function () {
-                    this.$refs['dialog2'].resetFields()
-                },
-
-
-
             },
         };
         var app = Vue.extend(option);

+ 14 - 0
fjs-scenic-mapper/src/main/java/com/fjs/scenic/mapper/system/InpIncomeMapper.java

@@ -0,0 +1,14 @@
+package com.fjs.scenic.mapper.system;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fjs.scenic.entity.system.InpIncome;
+
+/**
+ * (InpIncome)表数据库访问层
+ *
+ * @author lfj
+ * @since 2021-09-30 15:16:27
+ */
+public interface InpIncomeMapper extends BaseMapper<InpIncome> {
+
+}

+ 14 - 0
fjs-scenic-mapper/src/main/java/com/fjs/scenic/mapper/system/InputInfoMapper.java

@@ -0,0 +1,14 @@
+package com.fjs.scenic.mapper.system;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fjs.scenic.entity.system.InputInfo;
+
+/**
+ * (InputInfo)表数据库访问层
+ *
+ * @author lfj
+ * @since 2021-09-30 15:20:51
+ */
+public interface InputInfoMapper extends BaseMapper<InputInfo> {
+
+}

+ 14 - 0
fjs-scenic-service/src/main/java/com/fjs/scenic/service/system/InpIncomeService.java

@@ -0,0 +1,14 @@
+package com.fjs.scenic.service.system;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fjs.scenic.entity.system.InpIncome;
+
+/**
+ * (InpIncome)表服务接口
+ *
+ * @author lfj
+ * @since 2021-09-30 15:16:29
+ */
+public interface InpIncomeService extends IService<InpIncome> {
+
+}

+ 14 - 0
fjs-scenic-service/src/main/java/com/fjs/scenic/service/system/InputInfoService.java

@@ -0,0 +1,14 @@
+package com.fjs.scenic.service.system;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fjs.scenic.entity.system.InputInfo;
+
+/**
+ * (InputInfo)表服务接口
+ *
+ * @author lfj
+ * @since 2021-09-30 15:20:53
+ */
+public interface InputInfoService extends IService<InputInfo> {
+
+}

+ 18 - 0
fjs-scenic-service/src/main/java/com/fjs/scenic/service/system/impl/InpIncomeServiceImpl.java

@@ -0,0 +1,18 @@
+package com.fjs.scenic.service.system.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjs.scenic.entity.system.InpIncome;
+import com.fjs.scenic.mapper.system.InpIncomeMapper;
+import com.fjs.scenic.service.system.InpIncomeService;
+import org.springframework.stereotype.Service;
+
+/**
+ * (InpIncome)表服务实现类
+ *
+ * @author lfj
+ * @since 2021-09-30 15:16:30
+ */
+@Service("inpIncomeService")
+public class InpIncomeServiceImpl extends ServiceImpl<InpIncomeMapper, InpIncome> implements InpIncomeService {
+
+}

+ 18 - 0
fjs-scenic-service/src/main/java/com/fjs/scenic/service/system/impl/InputInfoServiceImpl.java

@@ -0,0 +1,18 @@
+package com.fjs.scenic.service.system.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjs.scenic.entity.system.InputInfo;
+import com.fjs.scenic.mapper.system.InputInfoMapper;
+import com.fjs.scenic.service.system.InputInfoService;
+import org.springframework.stereotype.Service;
+
+/**
+ * (InputInfo)表服务实现类
+ *
+ * @author lfj
+ * @since 2021-09-30 15:20:54
+ */
+@Service("inputInfoService")
+public class InputInfoServiceImpl extends ServiceImpl<InputInfoMapper, InputInfo> implements InputInfoService {
+
+}