Min 1 jaar geleden
bovenliggende
commit
8a0b72cedd

+ 16 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/DepartmentController.java

@@ -4,7 +4,10 @@ package com.management.platform.controller;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.management.platform.entity.Department;
+import com.management.platform.entity.User;
 import com.management.platform.entity.vo.DepartmentVO;
+import com.management.platform.mapper.UserMapper;
 import com.management.platform.service.DepartmentService;
 import com.management.platform.util.HttpRespMsg;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -32,6 +35,8 @@ public class DepartmentController {
     private DepartmentService departmentService;
     @Resource
     private HttpServletRequest request;
+    @Resource
+    private UserMapper userMapper;
     /**
      * 获取带有层级的部门列表
      */
@@ -147,5 +152,16 @@ public class DepartmentController {
     public HttpRespMsg exportCustomDataSum(String startDate, String endDate) {
         return departmentService.exportCustomDataSum(startDate, endDate, request);
     }
+    
+    @RequestMapping("/getIncharger")
+    public HttpRespMsg getIncharger(Integer deptId){
+        HttpRespMsg httpRespMsg=new HttpRespMsg();
+        Department department = departmentService.getById(deptId);
+        if(department.getManagerId()!=null){
+            User user = userMapper.selectById(department.getManagerId());
+            httpRespMsg.setData(user);
+        }
+        return httpRespMsg;
+    }
 }
 

+ 7 - 2
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/PlanController.java

@@ -31,8 +31,8 @@ public class PlanController {
     private PlanService planService;
 
     @RequestMapping("/list")
-    public HttpRespMsg list(String date,String steelStampNumber,@RequestParam(defaultValue = "3") Integer planType,Integer deptId){
-        return planService.getList(date,steelStampNumber,planType,deptId);
+    public HttpRespMsg list(String date,String steelStampNumber,@RequestParam(defaultValue = "3") Integer planType,Integer deptId,Integer pageIndex,Integer pageSize){
+        return planService.getList(date,steelStampNumber,planType,deptId,pageIndex,pageSize);
     }
 
     @RequestMapping("/addOrUpdatePlan")
@@ -62,6 +62,11 @@ public class PlanController {
         return planService.deptList();
     }
 
+    @RequestMapping("/hasSetDeptDetail")
+    public HttpRespMsg hasSetDeptDetail(){
+        return planService.hasSetDeptDetail();
+    }
+
     @RequestMapping("/importData")
     public HttpRespMsg importData(MultipartFile file,Integer planType){
         return planService.importData(file,planType);

+ 15 - 9
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/entity/Plan.java

@@ -17,7 +17,7 @@ import lombok.experimental.Accessors;
  * </p>
  *
  * @author Seyason
- * @since 2023-07-24
+ * @since 2023-07-25
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -48,16 +48,16 @@ public class Plan extends Model<Plan> {
     private String productName;
 
     /**
-     * 公司ID
+     * 项目代码
      */
-    @TableField("company_id")
-    private Integer companyId;
+    @TableField("project_code")
+    private String projectCode;
 
     /**
-     * 部门ID
+     * 公司ID
      */
-    @TableField("dept_id")
-    private Integer deptId;
+    @TableField("company_id")
+    private Integer companyId;
 
     /**
      * 钢印号
@@ -101,6 +101,12 @@ public class Plan extends Model<Plan> {
     @TableField("foreman_id")
     private Integer foremanId;
 
+    /**
+     * 工长
+     */
+    @TableField("foreman_name")
+    private String foremanName;
+
     /**
      * 计划类型 0-今日计划 1-明日计划 2-插单计划
      */
@@ -158,8 +164,8 @@ public class Plan extends Model<Plan> {
     /**
      * 描述
      */
-    @TableField("desc")
-    private String desc;
+    @TableField("describtion")
+    private String describtion;
 
 
     @Override

+ 3 - 1
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/PlanService.java

@@ -15,7 +15,7 @@ import org.springframework.web.multipart.MultipartFile;
  */
 public interface PlanService extends IService<Plan> {
 
-    HttpRespMsg getList(String date, String steelStampNumber, Integer planType,Integer deptId);
+    HttpRespMsg getList(String date, String steelStampNumber, Integer planType,Integer deptId,Integer pageIndex,Integer pageSize);
 
     HttpRespMsg addOrUpdatePlan(Plan plan);
 
@@ -30,4 +30,6 @@ public interface PlanService extends IService<Plan> {
     HttpRespMsg deptList();
 
     HttpRespMsg planDetail(Integer productSchedulingNum, Integer type);
+
+    HttpRespMsg hasSetDeptDetail();
 }

+ 37 - 15
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/PlanServiceImpl.java

@@ -3,6 +3,8 @@ package com.management.platform.service.impl;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.management.platform.entity.*;
 import com.management.platform.entity.vo.SysRichFunction;
 import com.management.platform.mapper.*;
@@ -31,6 +33,7 @@ import javax.servlet.http.HttpServletRequest;
 import java.io.*;
 import java.math.BigDecimal;
 import java.sql.Wrapper;
+import java.text.SimpleDateFormat;
 import java.time.Instant;
 import java.time.LocalDate;
 import java.time.ZoneId;
@@ -71,25 +74,30 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
     private ProductMapper productMapper;
 
     @Override
-    public HttpRespMsg getList(String date, String steelStampNumber, Integer planType,Integer deptId) {
+    public HttpRespMsg getList(String date, String steelStampNumber, Integer planType,Integer deptId,Integer pageIndex,Integer pageSize) {
         HttpRespMsg msg=new HttpRespMsg();
         QueryWrapper<Plan> queryWrapper=new QueryWrapper();
         DateTimeFormatter df=DateTimeFormatter.ofPattern("yyyy-MM-dd");
         queryWrapper.eq("plan_type",planType);
         if(planType!=2){
-            queryWrapper.eq("dept_id",deptId);
+            queryWrapper.eq("station_id",deptId);
         }
-        if(date!=null){
-            queryWrapper.eq("plan_date",LocalDate.parse(date,df));
+        if(!StringUtils.isEmpty(date)){
+            LocalDate parse = LocalDate.parse(date,df);
+            queryWrapper.eq("plan_date",parse);
         }else {
-            queryWrapper.eq("plan_date",planType==0?LocalDate.now():LocalDate.now().plusDays(1));
+            LocalDate now = LocalDate.now();
+            queryWrapper.eq("plan_date",planType==0?now:now.plusDays(1));
         }
         if(!StringUtils.isEmpty(steelStampNumber)){
             queryWrapper.gt("steel_stamp_number_start",steelStampNumber);
             queryWrapper.lt("steel_stamp_number_end",steelStampNumber);
         }
-        List<Plan> planList = planMapper.selectList(queryWrapper);
-        msg.setData(planList);
+        IPage<Plan> planIPage = planMapper.selectPage(new Page<>(pageIndex, pageSize), queryWrapper);
+        Map map=new HashMap();
+        map.put("total",planIPage.getTotal());
+        map.put("records",planIPage.getRecords());
+        msg.setData(map);
         return msg;
     }
 
@@ -202,7 +210,7 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
                 XSSFCell stationNameCell = row.getCell(6);
                 XSSFCell startDateCell = row.getCell(7);
                 XSSFCell endDateCell = row.getCell(8);
-                XSSFCell descCell = row.getCell(9);
+                XSSFCell describtionCell = row.getCell(9);
 
                 if (deptCell != null) deptCell.setCellType(CellType.STRING);
                 if (productSchedulingNumCell != null) productSchedulingNumCell.setCellType(CellType.NUMERIC);
@@ -213,13 +221,14 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
                 if (stationNameCell != null) stationNameCell.setCellType(CellType.STRING);
                 if (startDateCell != null) startDateCell.setCellType(CellType.NUMERIC);
                 if (endDateCell != null) endDateCell.setCellType(CellType.NUMERIC);
-                if (descCell != null) descCell.setCellType(CellType.STRING);
+                if (describtionCell != null) describtionCell.setCellType(CellType.STRING);
                 Plan plan=new Plan();
                 plan.setPlanDate(planType==0?LocalDate.now():LocalDate.now().plusDays(1));
                 if(deptCell!=null){
                     Optional<Department> first = departmentList.stream().filter(dl -> dl.getDepartmentName().equals(deptCell.getStringCellValue())).findFirst();
                     if(first.isPresent()){
-                        plan.setDeptId(first.get().getDepartmentId());
+                        plan.setStationId(first.get().getDepartmentId());
+                        plan.setStationName(first.get().getDepartmentName());
                     }else {
                         msg.setError("部门["+deptCell.getStringCellValue()+"]不存在");
                         return msg;
@@ -258,7 +267,7 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
                 if(stationNameCell!=null){
                     Optional<Department> first = departmentList.stream().filter(dl -> dl.getDepartmentName().equals(stationNameCell.getStringCellValue())).findFirst();
                     if(first.isPresent()){
-                        if(!first.get().getSuperiorId().equals(plan.getDeptId())){
+                        if(!first.get().getSuperiorId().equals(plan.getStationId())){
                             msg.setError("工位["+stationNameCell.getStringCellValue()+"]不属于部门["+deptCell.getStringCellValue()+"]");
                             return msg;
                         }
@@ -275,9 +284,12 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
                 if(endDateCell!=null){
                     plan.setEndDate(LocalDate.parse(endDateCell.getDateCellValue().toString(),df));
                 }
-                plan.setDesc(descCell==null?"":descCell.getStringCellValue());
+                plan.setDescribtion(describtionCell==null?"":describtionCell.getStringCellValue());
+                needInsertList.add(plan);
+            }
+            if(needInsertList.size()>0){
+                saveBatch(needInsertList);
             }
-
         } catch (IOException e) {
             e.printStackTrace();
         } catch (NullPointerException e) {
@@ -327,10 +339,20 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
         Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
         List<PlanDept> planDeptList = planDeptService.list(new QueryWrapper<PlanDept>().eq("company_id", companyId));
         List<Integer> deptIds = planDeptList.stream().map(PlanDept::getDeptId).distinct().collect(Collectors.toList());
+        msg.setData(org.apache.commons.lang3.StringUtils.join(deptIds,","));
+        return msg;
+    }
+
+    @Override
+    public HttpRespMsg hasSetDeptDetail() {
+        HttpRespMsg httpRespMsg=new HttpRespMsg();
+        Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
+        List<PlanDept> planDeptList = planDeptService.list(new QueryWrapper<PlanDept>().eq("company_id", companyId));
+        List<Integer> deptIds = planDeptList.stream().map(PlanDept::getDeptId).distinct().collect(Collectors.toList());
         deptIds.add(-1);
         List<Department> departmentList = departmentMapper.selectBatchIds(deptIds);
-        msg.setData(departmentList);
-        return msg;
+        httpRespMsg.setData(departmentList);
+        return httpRespMsg;
     }
 
     @Override

+ 4 - 3
fhKeeper/formulahousekeeper/management-workshop/src/main/resources/mapper/PlanMapper.xml

@@ -8,8 +8,8 @@
         <result column="product_scheduling_num" property="productSchedulingNum" />
         <result column="product_id" property="productId" />
         <result column="product_name" property="productName" />
+        <result column="project_code" property="projectCode" />
         <result column="company_id" property="companyId" />
-        <result column="dept_id" property="deptId" />
         <result column="steel_stamp_number_start" property="steelStampNumberStart" />
         <result column="steel_stamp_number_end" property="steelStampNumberEnd" />
         <result column="num" property="num" />
@@ -17,6 +17,7 @@
         <result column="station_id" property="stationId" />
         <result column="station_name" property="stationName" />
         <result column="foreman_id" property="foremanId" />
+        <result column="foreman_name" property="foremanName" />
         <result column="plan_type" property="planType" />
         <result column="plan_date" property="planDate" />
         <result column="start_date" property="startDate" />
@@ -26,12 +27,12 @@
         <result column="task_change_notice_num" property="taskChangeNoticeNum" />
         <result column="plan_work_hour" property="planWorkHour" />
         <result column="money_of_job" property="moneyOfJob" />
-        <result column="desc" property="desc" />
+        <result column="describtion" property="describtion" />
     </resultMap>
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        id, product_scheduling_num, product_id, product_name, company_id, dept_id, steel_stamp_number_start, steel_stamp_number_end, num, main_process, station_id, station_name, foreman_id, plan_type, plan_date, start_date, end_date, task_name, task_type_id, task_change_notice_num, plan_work_hour, money_of_job, desc
+        id, product_scheduling_num, product_id, product_name, project_code, company_id, steel_stamp_number_start, steel_stamp_number_end, num, main_process, station_id, station_name, foreman_id, foreman_name, plan_type, plan_date, start_date, end_date, task_name, task_type_id, task_change_notice_num, plan_work_hour, money_of_job, describtion
     </sql>
 
 </mapper>

+ 452 - 6
fhKeeper/formulahousekeeper/timesheet-workshop/src/views/plan/today.vue

@@ -8,21 +8,182 @@
         <el-date-picker
         v-model="planDate"
         type="date"
+        value-format="yyyy-MM-dd"
+        @change="getTableData(hasChooseDept)"
         placeholder="选择日期">
         </el-date-picker>
         </div>
         <div class="OutSide">
-            <span style="width:100px">{{'钢印号'}}</span><el-input v-model="steelStampNumber" placeholder="请输入内容"></el-input>
+            <span style="width:100px">{{'钢印号'}}</span><el-input v-model="steelStampNumber" @change="getTableData(hasChooseDept)" placeholder="请输入内容"></el-input>
         </div>
         <div>
             <span>
-                <el-link type="primary" :underline="false" @click="deptSetDialog=true">{{'部门设置'}}</el-link>
-                <el-link type="primary" :underline="false">{{'新增今日计划'}}</el-link>
+                <el-link type="primary" :underline="false" @click="deptSetDialog=true,getPlanDeptSet()">{{'部门设置'}}</el-link>
+                <el-link type="primary" :underline="false" @click="addPlan()">{{'新增今日计划'}}</el-link>
                 <el-link type="primary" :underline="false">{{'导入'}}</el-link>
                 <el-link type="primary" :underline="false">{{'导出'}}</el-link>
             </span>
         </div>
     </div>
+    <!-- tab 切换 -->
+    <div class="today-tab">
+      <div v-for="item,index in hasSetDeptList" :key="index" :class="`${todayTabIndex === index ? 'on' : ''}`" @click="tabChange(item, index)">{{ item.departmentName }}</div>
+    </div>
+
+    <!-- 各部分数据列表 -->
+    <el-table
+      :data="tableData"
+      style="width: 100%"
+      v-loading="tableDataLoading">
+       <el-table-column
+        type="selection"
+        width="55">
+      </el-table-column>
+      <el-table-column
+        prop="productSchedulingNum"
+        label="排产工单号"
+        width="180">
+      </el-table-column>
+      <el-table-column
+        prop="productName"
+        label="产品名称"
+        width="180">
+      </el-table-column>
+      <el-table-column
+        prop="projectCode"
+        label="项目代码"
+        width="180">
+      </el-table-column>
+      <el-table-column
+        prop="num"
+        label="数量"
+        width="180">
+      </el-table-column>
+      <el-table-column
+        prop="mainProcess"
+        label="主工序"
+        width="180">
+      </el-table-column>
+      <el-table-column
+        prop="stationName"
+        label="工位名称"
+        width="180">
+      </el-table-column>
+      <el-table-column
+        prop="foremanId"
+        label="工长"
+        width="180">
+      </el-table-column>
+      <el-table-column
+        prop="startDate"
+        label="开工时间"
+        width="180">
+      </el-table-column>
+      <el-table-column
+        prop="endDate"
+        label="完工时间"
+        width="180">
+      </el-table-column>
+      <el-table-column label="编辑">
+        <template slot-scope="scope">
+          <div @click="editPlan(scope.row)">编辑</div>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <!-- 新增今日计划 -->
+    <el-dialog
+      title="新增今日计划"
+      :visible.sync="editPlanDiaLog"
+      width="800px"
+      top="18.5vh"
+      :before-close="handleClose">
+        <div class="planDialog">
+          <el-form ref="todayPlanForm" :rules="todayPlanFormrules" :model="todayPlanForm" label-width="120px">
+            <el-form-item label="排产工单号" style="width: 100%" prop="productSchedulingNum">
+              <el-input v-model="todayPlanForm.productSchedulingNum"></el-input>
+            </el-form-item>
+            <el-form-item label="产品名称" style="width: 100%"  prop="productId">
+              <el-select v-model="todayPlanForm.productId" placeholder="请选择" class="w100">
+                <el-option
+                  v-for="item in productList"
+                  :key="item.id"
+                  :label="item.name"
+                  :value="item.id">
+                </el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item label="项目代码" style="width: 100%" prop="projectCode">
+              <el-input v-model="todayPlanForm.projectCode"></el-input>
+            </el-form-item>
+            <el-form-item label="钢印号" style="width: 100%" prop="steelStampNumberStart">
+              <el-input class="w45" v-model="todayPlanForm.steelStampNumberStart"></el-input>
+              {{'-'}}
+               <el-input class="w45" v-model="todayPlanForm.steelStampNumberEnd"></el-input>
+            </el-form-item>
+            <el-form-item label="数量"  prop="num">
+              <el-input v-model="todayPlanForm.num"></el-input>
+            </el-form-item>
+            <el-form-item label="主工序"  prop="mainProcess">
+              <el-input v-model="todayPlanForm.mainProcess"></el-input>
+            </el-form-item>
+            <el-form-item label="工位"  prop="stationId">
+              <!-- <el-select v-model="todayPlanForm.stationId" placeholder="请选择" class="w100" @change="getIncharger()">
+                <el-option
+                  v-for="item in departmentList"
+                  :key="item.id"
+                  :label="item.label"
+                  :value="item.id"
+                >
+                </el-option>
+              </el-select> -->
+               <el-cascader
+                v-model="todayPlanForm.stationId"
+                :options="departmentList"
+                :props="{ checkStrictly: true }"
+                collapse-tags
+                class="w100"
+                clearable
+                @change="getIncharger()">
+                </el-cascader>
+            </el-form-item>
+            <el-form-item label="工长" prop="foremanId">
+              <el-input v-model="todayPlanForm.foremanName"></el-input>
+            </el-form-item>
+            <el-form-item label="开工时间" prop="startDate">
+              <el-date-picker
+                class="w100"
+                v-model="todayPlanForm.startDate"
+                type="date"
+                placeholder="选择日期"
+                value-format="yyyy-MM-dd">
+              </el-date-picker>
+            </el-form-item>
+            <el-form-item label="完工时间" prop="endDate">
+              <el-date-picker
+                class="w100"
+                v-model="todayPlanForm.endDate"
+                type="date"
+                placeholder="选择日期"
+                value-format="yyyy-MM-dd">
+              </el-date-picker>
+            </el-form-item>
+             <el-form-item label="描述" style="width: 100%">
+              <el-input
+                type="textarea"
+                :rows="6"
+                placeholder="请输入描述"
+                v-model="textarea">
+              </el-input>
+             </el-form-item>
+          </el-form>
+        </div>
+        <span slot="footer" class="dialog-footer">
+          <el-button @click="editPlanDiaLog = false,$refs['todayPlanForm'].resetFields();">取 消</el-button>
+          <el-button type="primary" @click="addPlanData('todayPlanForm')">确 定</el-button>
+        </span>
+     </el-dialog>
+
     <!-- 部门设置弹框 -->
     <el-dialog
       title="部门设置"
@@ -30,6 +191,7 @@
       width="30%"
       :before-close="handleClose">
       <div>
+        <span>{{'选择部门'}}</span>
         <el-cascader
         v-model="departmentIdArray"
         :options="departmentList"
@@ -58,17 +220,78 @@ export default {
   data() {
     return {
         steelStampNumber:'',
-        planDate:'',
+        planDate:this.today(),
         deptSetDialog:false,
         departmentList:[],
         departmentIdArray: [],
+        deptSetData:'',
+        props: { multiple: true },
+        hasSetDeptList:[],
+        todayPlanForm:{
+          productSchedulingNum:'',
+          productId:'',
+          projectCode:'',
+          steelStampNumberStart:'',
+          steelStampNumberEnd:'',
+          num:'',
+          mainProcess:'',
+          stationId:'',
+          foremanId:'',
+          foremanName:'',
+          startDate:'',
+          endDate:'',
+          describtion:''
+        },
+        todayTabIndex: 0,
+        tableDataLoading: false,
+        editPlanDiaLog: false,
+        pageIndex:0,
+        pageSize:20,
+        hasChooseDept:'',
+        productList:[],
+        // 表单规则验证
+        todayPlanFormrules: {
+          productSchedulingNum: [
+            { required: true, message: '排产工单号', trigger: 'blur' }
+          ],
+          productId: [
+            { required: true, message: '产品名称', trigger: 'blur' }
+          ],
+          projectCode: [
+            { required: true, message: '项目代码', trigger: 'blur' }
+          ],
+          steelStampNumberStart: [
+            { required: true, message: '钢印号', trigger: 'blur' }
+          ],
+          steelStampNumberEnd: [
+            { required: true, message: '钢印号', trigger: 'blur' }
+          ],
+          num: [
+            { required: true, message: '数量', trigger: 'blur' }
+          ],
+          mainProcess: [
+            { required: true, message: '主工序', trigger: 'blur' }
+          ],
+          stationId: [
+            { required: true, message: '工位', trigger: 'blur' }
+          ],
+          startDate: [
+            { required: true, message: '开工时间', trigger: 'blur' }
+          ],
+          endDate: [
+            { required: true, message: '完工时间', trigger: 'blur' }
+          ],
+        }
     };
   },
   computed: {},
   watch: {},
   created() {},
   mounted() {
-    this.getDepartmentList()
+    this.getDepartmentList(),
+    this.getPlanDeptSet(),
+    this.getHasSetPlanDeptList(),
+    this.getProductList()
   },
   methods: {
     today(){
@@ -115,7 +338,193 @@ export default {
         return arr;
     },
     deptSet(){
-      console.log(this.departmentIdArray)
+      console.log(this.departmentIdArray, JSON.stringify(this.departmentIdArray))
+      // return
+      let arr = []
+      for(var i in this.departmentIdArray) {
+        arr.push(this.departmentIdArray[i][this.departmentIdArray[i].length - 1])
+      }
+      this.http.post( '/plan/deptSet', {deptIds:arr.join(',')},
+        res => {
+          if (res.code == "ok") {
+            this.$message({
+              message: "设置成功",
+              type: "success"
+            });
+          } else {
+            this.$message({
+              message: res.msg,
+              type: "error"
+            });
+          }
+        },error => {
+          this.$message({
+            message: error,
+            type: "error"
+          });
+        });
+    },
+    getPlanDeptSet(){
+      this.http.post( '/plan/deptList', {},
+        res => {
+          if (res.code == "ok") {
+            let arr = res.data.split(",") || []
+            for(var i in arr) {
+              arr[i] = +arr[i]
+            }
+            console.log(arr)
+            this.departmentIdArray=arr 
+          } else {
+            this.$message({
+              message: res.msg,
+              type: "error"
+            });
+          }
+        },error => {
+          this.$message({
+            message: error,
+            type: "error"
+          });
+        });
+    },
+    getHasSetPlanDeptList(){
+      this.http.post( '/plan/hasSetDeptDetail', {},
+        res => {
+          if (res.code == "ok") {
+            this.hasSetDeptList=res.data
+            if(res.data.length > 0) {
+              this.tableDataLoading = true
+              this.hasChooseDept=res.data[0].departmentId
+              this.getTableData(res.data[0].departmentId)
+            }
+          } else {
+            this.$message({
+              message: res.msg,
+              type: "error"
+            });
+          }
+        },error => {
+          this.$message({
+            message: error,
+            type: "error"
+          });
+        });
+    },
+
+    // tab 切换事件
+    tabChange(item, index) {
+      console.log(item, 'item')
+      this.todayTabIndex = index
+      this.tableDataLoading = true
+      this.hasChooseDept=item.departmentId
+      this.getTableData(item.departmentId)
+    },
+    // 获取车间数据
+    getTableData(departmentId) {
+      console.log(this.planDate)
+      this.http.post( '/plan/list', {
+        deptId: departmentId,
+        planType: 0,
+        date: this.planDate,
+        steelStampNumber:this.steelStampNumber,
+        pageIndex:this.pageIndex,
+        pageSize:this.pageSize
+      },
+        res => {
+          if (res.code == "ok") {
+            this.tableDataLoading = false
+          } else {
+            this.$message({
+              message: res.msg,
+              type: "error"
+            });
+          }
+        },error => {
+          this.$message({
+            message: error,
+            type: "error"
+          });
+        });
+    },
+    addPlan() {
+      this.editPlanDiaLog = true
+      this.getDepartmentList()
+      this.getProductList()
+      // this.todayPlanForm
+    },
+    addPlanData(formName) {
+      console.log(this.todayPlanForm)
+      this.$refs[formName].validate((valid) => {
+        if (valid) {
+              console.log(this.todayPlanForm, '传给后端的值')
+              let stationId = this.todayPlanForm.stationId[this.todayPlanForm.stationId.length - 1]
+              this.http.post( '/plan/addOrUpdatePlan', {},
+            res => {
+              if (res.code == "ok") {
+
+              } else {
+                this.$message({
+                  message: res.msg,
+                  type: "error"
+                });
+              }
+            },error => {
+              this.$message({
+                message: error,
+                type: "error"
+              });
+            });
+        } else {
+          console.log('error submit!!');
+          return false;
+        }
+      });
+    },
+    editPlan(item) {
+      console.log(item)
+    },
+    getProductList(){
+      this.http.post( '/product/getProductPage', {
+        pageIndex:null,
+        pageSize:null
+      },
+        res => {
+          if (res.code == "ok") {
+            this.productList=res.data.records
+          } else {
+            this.$message({
+              message: res.msg,
+              type: "error"
+            });
+          }
+        },error => {
+          this.$message({
+            message: error,
+            type: "error"
+          });
+        });
+    },
+    getIncharger(){
+      console.log(this.todayPlanForm.stationId)
+      this.http.post( '/department/getIncharger', {
+        deptId:this.todayPlanForm.stationId[this.todayPlanForm.stationId.length - 1]
+      },
+        res => {
+          if (res.code == "ok") {
+            this.todayPlanForm.foremanId=res.data.id
+            this.todayPlanForm.foremanName=res.data.name
+          } else {
+            this.$message({
+              message: res.msg,
+              type: "error"
+            });
+          }
+        },error => {
+          this.$message({
+            message: error,
+            type: "error"
+          });
+        });
     }
   },
 };
@@ -126,5 +535,42 @@ export default {
         display: flex;
         align-items: center;
     }
+    .today-tab {
+      display: flex;
+      overflow-x: auto;
+      div {
+        font-size: 18px;
+        margin-left: 15px;
+        cursor: pointer;
+      }
+      .on {
+        color: #02A7F0;
+      }
+    }
+
+    .planDialog::-webkit-scrollbar {
+      display: none; /* Chrome Safari */
+    }
+    // 新增样式
+    .planDialog {
+      max-height: 50vh;
+      overflow-y: auto;
+      scrollbar-width: none; /* Firefox */
+      -ms-overflow-style: none; /* IE 10+ */
+      .el-form {
+        display: flex;
+        flex-wrap: wrap;
+        justify-content: space-between;
+      }
+      .w100 {
+        width: 100%;
+      }
+      .el-form-item {
+        width: 50%;
+        .w45 {
+          width: 49%;
+        }
+      }
+    }
  }
 </style>