浏览代码

Merge branch 'master' of http://116.63.33.55/git/nazw

leihy 2 年之前
父节点
当前提交
30afa7955d
共有 28 个文件被更改,包括 699 次插入340 次删除
  1. 11 7
      naqwzsjtj/naqwzsjtj/src/api/repair.js
  2. 51 83
      naqwzsjtj/naqwzsjtj/src/views/repair/RepairWorker.vue
  3. 96 0
      nngkxxdp/src/main/java/com/example/nngkxxdp/controller/SWorkereeController.java
  4. 1 3
      nngkxxdp/src/main/java/com/example/nngkxxdp/program/controller/SRepairController.java
  5. 10 10
      nngkxxdp/src/main/java/com/example/nngkxxdp/program/controller/SWorkerController.java
  6. 76 0
      nngkxxdp/src/main/java/com/example/nngkxxdp/program/controller/WorkerMiniController.java
  7. 3 1
      nngkxxdp/src/main/java/com/example/nngkxxdp/program/dao/SRepairDao.java
  8. 8 94
      nngkxxdp/src/main/java/com/example/nngkxxdp/program/entity/SRepair.java
  9. 17 0
      nngkxxdp/src/main/java/com/example/nngkxxdp/program/entity/vo/WorkerPageVo.java
  10. 113 5
      nngkxxdp/src/main/java/com/example/nngkxxdp/program/service/Impl/SRepairServiceImpl.java
  11. 12 2
      nngkxxdp/src/main/java/com/example/nngkxxdp/program/service/Impl/SWorkerServiceImpl.java
  12. 12 1
      nngkxxdp/src/main/java/com/example/nngkxxdp/program/service/SRepairService.java
  13. 7 0
      nngkxxdp/src/main/java/com/example/nngkxxdp/program/service/SWorkerService.java
  14. 1 1
      nngkxxdp/src/main/resources/mapper/AppletUserDao.xml
  15. 35 14
      nngkxxdp/src/main/resources/mapper/SRepairDao.xml
  16. 12 33
      nngkxxdp/src/main/resources/mapper/SWorkerDao.xml
  17. 31 11
      nnzwminiapp/pages/index/index.wxml
  18. 1 1
      nnzwminiapp/pages/myCenter/myCenter.js
  19. 1 1
      nnzwminiapp/pages/myCenter/myCenter.wxml
  20. 1 0
      nnzwminiapp/pages/serve/serve.js
  21. 2 2
      nnzwminiapp/pages/serve/serve.wxml
  22. 34 1
      nnzwminiapp/pagesPublic/pages/work-order-detail/work-order-detail.js
  23. 11 7
      nnzwminiapp/pagesPublic/pages/work-order-detail/work-order-detail.wxml
  24. 5 0
      nnzwminiapp/pagesPublic/pages/work-order-detail/work-order-detail.wxss
  25. 0 56
      nnzwminiapp/pagesPublic/pages/work-order/work-order-worker.wxml
  26. 119 2
      nnzwminiapp/pagesPublic/pages/work-order/work-order.js
  27. 14 4
      nnzwminiapp/pagesPublic/pages/work-order/work-order.wxml
  28. 15 1
      nnzwminiapp/pagesPublic/pages/work-order/work-order.wxss

+ 11 - 7
naqwzsjtj/naqwzsjtj/src/api/repair.js

@@ -1,13 +1,17 @@
 import request from '../utils/request'
 
 export default {
-    /**
-     * 检查微信用户是否存在
-     * 
-     * @param {{phoneNum: string}} data
-     * @returns 
-     */
+
   hasWxUser(data) {
-    return request.get('repair/hasWxUser', data)
+    return request.get('worker/hasWxUser', data)
+  },
+  queryByPage(data){
+    return request.get('worker/queryByPage',data)
+  },
+  add(data){
+    return request.get('worker/add',data)
+  },
+  canteenPage(data) {
+    return request.get('canteen/page', data)
   }
 }

+ 51 - 83
naqwzsjtj/naqwzsjtj/src/views/repair/RepairWorker.vue

@@ -44,7 +44,7 @@
         :total="total">
       </el-pagination>
     </div>
-    <!-- 新增/编辑食堂 -->
+    <!-- 新增/编辑工人 -->
     <el-dialog :visible.sync="workDialog" width="35%" class="detailDialog" :close-on-click-modal="false" top="200px">
       <div slot="title">
         <div class="addTitle">{{ workTitle }}</div>
@@ -133,6 +133,7 @@
         uploadFiles: [],
         // 文件上传绑定的list
         fileList: [],
+        add:false,
       };
     },
     methods: {
@@ -141,12 +142,16 @@
        * 检索当前手机号是否存在微信用户
        */
       hasWxUser(){
-        console.log(123);
-        Repair.hasWxUser({
-          "phoneNum":this.postManagement.phoneNum
-        }).then((r)=>{
-          console.log(r);
-        })
+        let params = {
+          phoneNum: this.postManagement.phoneNum
+        };
+        Repair
+          .hasWxUser({
+            params
+          },
+        ).then(res => {
+          this.add = res.data
+        });
       },
 
       // 列表排序
@@ -158,13 +163,10 @@
         };
       },
       openAddWork(){
-        this.postManagement = {
-          canteenName: "",
-          canteenPhotoPath: "",
-          supplyTimeId: [],
-          principal: "",
-          complaint_phone: "",
-          takeout_phone: "",
+        this.postManagement= {
+          name: "",
+          region: "",
+          phoneNum: "",
         };
         this.workTitle = "新增工人";
         this.workDialog = true;
@@ -183,62 +185,30 @@
       // 保存
       saveWork() {
         if (
-          !this.postManagement.canteenName ||
-          this.postManagement.canteenName.length < 1
+          !this.postManagement.name ||
+          this.postManagement.name.length < 1
         ) {
-          this.$message.error("请输入食堂名称!");
-          return;
-        }
-        if (
-          !this.postManagement.principal ||
-          this.postManagement.principal.length < 1
-        ) {
-          this.$message.error("请输入负责人名称!");
+          this.$message.error("请输入工人名称!");
           return;
         }
+
         if (
-          !this.postManagement.complaintPhone ||
-          this.postManagement.complaintPhone.length < 1
+          !this.postManagement.phoneNum ||
+          this.postManagement.phoneNum.length < 1
         ) {
-          this.$message.error("投诉电话不能为空!");
+          this.$message.error("请输入工人联系电话!");
           return;
         }
         if (
-          !this.isMobile(this.postManagement.complaintPhone) &&
-          !this.isTel(this.postManagement.complaintPhone)
+          !this.isMobile(this.postManagement.region) &&
+          !this.isTel(this.postManagement.region)
         ) {
-          this.$message.error("投诉电话格式有误!");
+          this.$message.error("请输入地区!");
           return;
         }
-        if (
-          this.postManagement.takeoutPhone &&
-          this.postManagement.takeoutPhone.length > 0
-        ) {
-          if (
-            !this.isMobile(this.postManagement.takeoutPhone) &&
-            !this.isTel(this.postManagement.takeoutPhone)
-          ) {
-            this.$message.error("外卖电话格式有误!");
-            return;
-          }
-        }
-        let params = new FormData();
-        this.uploadFiles.forEach((item) => {
-          params.append("files", item.raw);
-        });
-        params.append("canteenName", this.postManagement.canteenName);
-        if (this.postManagement.canteenPhotoPath) {
-          params.append("canteenPhotoPath", this.postManagement.canteenPhotoPath);
-        }
-        if (this.postManagement.supplyTimeId) {
-          params.append("supplyTimeId", this.postManagement.supplyTimeId);
-        }
-        params.append("principal", this.postManagement.principal);
-        params.append("complaintPhone", this.postManagement.complaintPhone);
-        if (this.postManagement.takeoutPhone) {
-          params.append("takeoutPhone", this.postManagement.takeoutPhone);
-        }
-        if (this.workTitle == "编辑食堂") {
+
+
+        if (this.workTitle == "编辑工人") {
           params.append("id", this.postManagement.id);
           api
             .updateCanteen(params)
@@ -296,21 +266,21 @@
           .then(() => {
             let fd = new FormData();
             fd.append("id", id);
-            api.deleteCanteenById(fd).then((res) => {
-              if (res.data.result) {
-                this.$message({
-                  type: "success",
-                  message: "删除成功!",
-                });
-                this.tableData.splice(index, 1);
-                this.getData();
-              } else {
-                this.$message({
-                  type: "info",
-                  message: res.data.msg,
-                });
-              }
-            });
+            // api.deleteCanteenById(fd).then((res) => {
+            //   if (res.data.result) {
+            //     this.$message({
+            //       type: "success",
+            //       message: "删除成功!",
+            //     });
+            //     this.tableData.splice(index, 1);
+            //     this.getData();
+            //   } else {
+            //     this.$message({
+            //       type: "info",
+            //       message: res.data.msg,
+            //     });
+            //   }
+            // });
           })
           .catch(() => {
             this.$message({
@@ -322,17 +292,15 @@
       // 获取列表数据
       getData() {
         let params = {
-          page: this.sorts.page,
-          limit: this.sorts.limit,
-          canteenName: this.query.canteenName,
-        };
-        api
-          .canteenPage({
-            params,
+            page:this.sorts.page,
+            size:this.sorts.limit
+        }
+        Repair
+          .queryByPage({
+            params
           })
           .then((r) => {
-            this.total = r.data.count;
-            this.tableData = r.data.data;
+            console.log(r);
           });
       },
       // 搜索

+ 96 - 0
nngkxxdp/src/main/java/com/example/nngkxxdp/controller/SWorkereeController.java

@@ -0,0 +1,96 @@
+package com.example.nngkxxdp.controller;
+
+
+import com.example.nngkxxdp.program.entity.SWorker;
+import com.example.nngkxxdp.program.entity.vo.WorkerPageVo;
+import com.example.nngkxxdp.program.service.SWorkerService;
+import lombok.AllArgsConstructor;
+import org.jsoup.internal.StringUtil;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * (SWorker)表控制层
+ *
+ * @author elis
+ * @since 2023-03-20 14:38:05
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("worker1")
+public class SWorkereeController {
+    /**
+     * 服务对象
+     */
+    
+    private final SWorkerService sWorkerService;
+
+
+    @GetMapping("/hasWxUser")
+    public ResponseEntity<Boolean> hasWxUser(String phoneNum){
+        System.out.println(phoneNum);
+        if (StringUtil.isBlank(phoneNum)){
+            return ResponseEntity.ok(false);
+        }
+        return ResponseEntity.ok(sWorkerService.hasWxUser(phoneNum));
+    }
+    /**
+     * 分页查询
+     *
+     * @param sWorker 请求体
+     * @return 查询结果
+     */
+    @GetMapping("queryByPage")
+    public ResponseEntity<Page<SWorker>> queryByPage(WorkerPageVo sWorker) {
+        System.out.println(sWorker);
+        return ResponseEntity.ok(this.sWorkerService.queryByPage(sWorker.getSWorker(), PageRequest.of(sWorker.getPage(),sWorker.getSize())));
+    }
+
+    /**
+     * 通过主键查询单条数据
+     *
+     * @param id 主键
+     * @return 单条数据
+     */
+    @GetMapping("{id}")
+    public ResponseEntity<SWorker> queryById(@PathVariable("id") String id) {
+        return ResponseEntity.ok(this.sWorkerService.queryById(id));
+    }
+
+    /**
+     * 新增数据
+     *
+     * @param sWorker 实体
+     * @return 新增结果
+     */
+    @PostMapping("add")
+    public ResponseEntity<SWorker> add(SWorker sWorker) {
+        return ResponseEntity.ok(this.sWorkerService.insert(sWorker));
+    }
+
+    /**
+     * 编辑数据
+     *
+     * @param sWorker 实体
+     * @return 编辑结果
+     */
+    @PutMapping
+    public ResponseEntity<SWorker> edit(SWorker sWorker) {
+        return ResponseEntity.ok(this.sWorkerService.update(sWorker));
+    }
+
+    /**
+     * 删除数据
+     *
+     * @param id 主键
+     * @return 删除是否成功
+     */
+    @DeleteMapping
+    public ResponseEntity<Boolean> deleteById(String id) {
+        return ResponseEntity.ok(this.sWorkerService.deleteById(id));
+    }
+
+}
+

+ 1 - 3
nngkxxdp/src/main/java/com/example/nngkxxdp/program/controller/SRepairController.java

@@ -3,10 +3,8 @@ package com.example.nngkxxdp.program.controller;
 
 import com.example.nngkxxdp.program.entity.SRepair;
 import com.example.nngkxxdp.program.service.SRepairService;
-import org.jsoup.internal.StringUtil;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
-import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 
@@ -50,7 +48,7 @@ public class SRepairController {
      * @return 单条数据
      */
     @GetMapping("{id}")
-    public ResponseEntity<SRepair> queryById(@PathVariable("id") Integer id) {
+    public ResponseEntity<SRepair> queryById(@PathVariable("id") String id) {
         return ResponseEntity.ok(this.sRepairService.queryById(id));
     }
 

+ 10 - 10
nngkxxdp/src/main/java/com/example/nngkxxdp/program/controller/SWorkerController.java

@@ -2,7 +2,9 @@ package com.example.nngkxxdp.program.controller;
 
 
 import com.example.nngkxxdp.program.entity.SWorker;
+import com.example.nngkxxdp.program.entity.vo.WorkerPageVo;
 import com.example.nngkxxdp.program.service.SWorkerService;
+import lombok.AllArgsConstructor;
 import org.jsoup.internal.StringUtil;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
@@ -16,6 +18,7 @@ import org.springframework.web.bind.annotation.*;
  * @since 2023-03-20 14:38:05
  */
 @RestController
+@AllArgsConstructor
 @RequestMapping("worker")
 public class SWorkerController {
     /**
@@ -23,12 +26,9 @@ public class SWorkerController {
      */
     
     private final SWorkerService sWorkerService;
-    public SWorkerController(SWorkerService sWorkerService) {
-        this.sWorkerService = sWorkerService;
-    }
 
 
-    @GetMapping("hasWxUser")
+    @GetMapping("/hasWxUser/?{phoneNum}")
     public ResponseEntity<Boolean> hasWxUser(String phoneNum){
         if (StringUtil.isBlank(phoneNum)){
             return ResponseEntity.ok(false);
@@ -38,13 +38,13 @@ public class SWorkerController {
     /**
      * 分页查询
      *
-     * @param sWorker 筛选条件
-     * @param pageRequest      分页对象
+     * @param sWorker 请求体
      * @return 查询结果
      */
-    @GetMapping
-    public ResponseEntity<Page<SWorker>> queryByPage(SWorker sWorker, PageRequest pageRequest) {
-        return ResponseEntity.ok(this.sWorkerService.queryByPage(sWorker, pageRequest));
+    @GetMapping("queryByPage")
+    public ResponseEntity<Page<SWorker>> queryByPage(WorkerPageVo sWorker) {
+        System.out.println(sWorker);
+        return ResponseEntity.ok(this.sWorkerService.queryByPage(sWorker.getSWorker(), PageRequest.of(sWorker.getPage(),sWorker.getSize())));
     }
 
     /**
@@ -64,7 +64,7 @@ public class SWorkerController {
      * @param sWorker 实体
      * @return 新增结果
      */
-    @PostMapping
+    @PostMapping("add")
     public ResponseEntity<SWorker> add(SWorker sWorker) {
         return ResponseEntity.ok(this.sWorkerService.insert(sWorker));
     }

+ 76 - 0
nngkxxdp/src/main/java/com/example/nngkxxdp/program/controller/WorkerMiniController.java

@@ -0,0 +1,76 @@
+package com.example.nngkxxdp.program.controller;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.example.nngkxxdp.entity.SEvaluation;
+import com.example.nngkxxdp.program.constant.MiniConstant;
+import com.example.nngkxxdp.program.entity.SRepair;
+import com.example.nngkxxdp.program.service.CanteenMiniService;
+import com.example.nngkxxdp.program.service.SRepairService;
+import com.example.nngkxxdp.program.service.SWorkerService;
+import com.example.nngkxxdp.program.util.MiniTokenUtil;
+import com.example.nngkxxdp.util.Blank;
+import com.example.nngkxxdp.util.ConstStr;
+import com.example.nngkxxdp.util.DateUtil;
+import com.example.nngkxxdp.util.SendUtil;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.Map;
+
+@RestController
+@RequestMapping("mini/worker")
+@CrossOrigin
+@RequiredArgsConstructor
+public class WorkerMiniController {
+    private final SRepairService service;
+
+
+    @PostMapping("/addOrder")
+    public Map<String, Object> addOrder(@RequestParam(value = "files", required = false) MultipartFile[] files, SRepair sRepair) {
+        try {
+            return service.addEvaluation(files, sRepair);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return SendUtil.send(false, ConstStr.ADD_FAILED);
+    }
+
+    @GetMapping("/myOrder")
+    public Map<String, Object> myOrders(String id,Integer status){
+        if (StrUtil.isEmpty(id)){
+            return SendUtil.send(false, ConstStr.REQUEST_WRONGPARAMS);
+        }
+        if (ObjectUtil.isEmpty(status)){
+            status = 0;
+        }
+        return SendUtil.send(true, service.myOrder(id,status));
+    }
+
+    @GetMapping("/orderInfo")
+    public Map<String, Object> myOrder(String id){
+        if (StrUtil.isEmpty(id)){
+            return SendUtil.send(false, ConstStr.REQUEST_WRONGPARAMS);
+        }
+        return SendUtil.send(true, service.myOrderInfo(id));
+    }
+
+    @PostMapping("/closeOrder")
+    public Map<String, Object> closeOrder(@RequestParam(value = "files", required = false) MultipartFile[] files, SRepair sRepair) {
+        try {
+            return service.closeOrder(files, sRepair);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return SendUtil.send(false, ConstStr.ADD_FAILED);
+    }
+
+
+
+
+}

+ 3 - 1
nngkxxdp/src/main/java/com/example/nngkxxdp/program/dao/SRepairDao.java

@@ -22,7 +22,7 @@ public interface SRepairDao {
      * @param id 主键
      * @return 实例对象
      */
-    SRepair queryById(Integer id);
+    SRepair queryById(String id);
 
     /**
      * 查询指定行数据
@@ -82,5 +82,7 @@ public interface SRepairDao {
      */
     int deleteById(Integer id);
 
+    List<SRepair> getMyOrder(String userId, Integer status, Integer status2);
+
 }
 

+ 8 - 94
nngkxxdp/src/main/java/com/example/nngkxxdp/program/entity/SRepair.java

@@ -1,7 +1,9 @@
 package com.example.nngkxxdp.program.entity;
 
-import java.util.Date;
+import lombok.Data;
+
 import java.io.Serializable;
+import java.util.Date;
 
 /**
  * (SRepair)实体类
@@ -9,10 +11,11 @@ import java.io.Serializable;
  * @author elis
  * @since 2023-03-20 14:36:16
  */
+@Data
 public class SRepair implements Serializable {
     private static final long serialVersionUID = -71621014662582472L;
     
-    private Integer id;
+    private String id;
     
     private Integer repairType;
     
@@ -36,102 +39,13 @@ public class SRepair implements Serializable {
     
     private Integer isDel;
 
+    private String userId;
 
-    public Integer getId() {
-        return id;
-    }
-
-    public void setId(Integer id) {
-        this.id = id;
-    }
-
-    public Integer getRepairType() {
-        return repairType;
-    }
-
-    public void setRepairType(Integer repairType) {
-        this.repairType = repairType;
-    }
-
-    public String getUserDescription() {
-        return userDescription;
-    }
-
-    public void setUserDescription(String userDescription) {
-        this.userDescription = userDescription;
-    }
-
-    public String getRepairPic() {
-        return repairPic;
-    }
-
-    public void setRepairPic(String repairPic) {
-        this.repairPic = repairPic;
-    }
-
-    public Integer getPhoneNum() {
-        return phoneNum;
-    }
-
-    public void setPhoneNum(Integer phoneNum) {
-        this.phoneNum = phoneNum;
-    }
-
-    public Integer getStatus() {
-        return status;
-    }
-
-    public void setStatus(Integer status) {
-        this.status = status;
-    }
-
-    public String getWorkerDescription() {
-        return workerDescription;
-    }
-
-    public void setWorkerDescription(String workerDescription) {
-        this.workerDescription = workerDescription;
-    }
-
-    public String getResultPic() {
-        return resultPic;
-    }
-
-    public void setResultPic(String resultPic) {
-        this.resultPic = resultPic;
-    }
-
-    public Integer getWorkerId() {
-        return workerId;
-    }
-
-    public void setWorkerId(Integer workerId) {
-        this.workerId = workerId;
-    }
-
-    public Date getCreateTime() {
-        return createTime;
-    }
-
-    public void setCreateTime(Date createTime) {
-        this.createTime = createTime;
-    }
-
-    public Date getUpdateTime() {
-        return updateTime;
-    }
+    private Date appointmentTime;
 
-    public void setUpdateTime(Date updateTime) {
-        this.updateTime = updateTime;
-    }
+    private String maintenanceAddress;
 
-    public Integer getIsDel() {
-        return isDel;
-    }
 
-    public void setIsDel(Integer isDel) {
-        this.isDel = isDel;
-    }
 
 }
 

+ 17 - 0
nngkxxdp/src/main/java/com/example/nngkxxdp/program/entity/vo/WorkerPageVo.java

@@ -0,0 +1,17 @@
+package com.example.nngkxxdp.program.entity.vo;
+
+import com.example.nngkxxdp.program.entity.SWorker;
+import lombok.Data;
+
+/**
+ * @author elis
+ */
+@Data
+public class WorkerPageVo {
+
+    private SWorker sWorker;
+
+    private Integer page;
+
+    private Integer size;
+}

+ 113 - 5
nngkxxdp/src/main/java/com/example/nngkxxdp/program/service/Impl/SRepairServiceImpl.java

@@ -1,14 +1,29 @@
 package com.example.nngkxxdp.program.service.Impl;
 
 
-import com.example.nngkxxdp.program.dao.AppletUserDao;
+import cn.hutool.core.io.FileTypeUtil;
+import cn.hutool.core.lang.UUID;
+import com.example.nngkxxdp.dao.FileDao;
+import com.example.nngkxxdp.entity.SFile;
 import com.example.nngkxxdp.program.dao.SRepairDao;
 import com.example.nngkxxdp.program.entity.SRepair;
 import com.example.nngkxxdp.program.service.SRepairService;
+import com.example.nngkxxdp.util.Blank;
+import com.example.nngkxxdp.util.ConstStr;
+import com.example.nngkxxdp.util.SendUtil;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageImpl;
 import org.springframework.data.domain.PageRequest;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
 
 /**
  * (SRepair)表服务实现类
@@ -20,11 +35,13 @@ import org.springframework.data.domain.PageRequest;
 public class SRepairServiceImpl implements SRepairService {
     
     private final SRepairDao sRepairDao;
-
-
+    private final FileDao fileDao;
+    @Value("${file.location}")
+    private String location;
     
-    public SRepairServiceImpl(SRepairDao sRepairDao) {
+    public SRepairServiceImpl(SRepairDao sRepairDao, FileDao fileDao) {
         this.sRepairDao = sRepairDao;
+        this.fileDao = fileDao;
     }
     /**
      * 通过ID查询单条数据
@@ -33,7 +50,7 @@ public class SRepairServiceImpl implements SRepairService {
      * @return 实例对象
      */
     @Override
-    public SRepair queryById(Integer id) {
+    public SRepair queryById(String id) {
         return this.sRepairDao.queryById(id);
     }
 
@@ -85,5 +102,96 @@ public class SRepairServiceImpl implements SRepairService {
         return this.sRepairDao.deleteById(id) > 0;
     }
 
+    @Override
+    public Map<String, Object> addEvaluation(MultipartFile[] files, SRepair sRepair) throws IOException {
+        if (Blank.isNotEmpty(files)) {
+            File pathFile = new File(location);
+            if (!pathFile.isDirectory()) {
+                if (!pathFile.mkdirs()) {
+                    return SendUtil.send(false, ConstStr.ADD_FAILED, "");
+                }
+            }
+            ArrayList<String> picPathList = new ArrayList<>();
+            for (MultipartFile file : files) {
+                //获取上传过来的文件名
+                File temporaryFile = new File(location + file.getOriginalFilename());
+                file.transferTo(temporaryFile);
+                String type = FileTypeUtil.getType(temporaryFile);
+                if (!("jpg".equals(type) || "png".equals(type) || "bmp".equals(type) || "jpeg".equals(type))) {
+                    return SendUtil.send(false, ConstStr.ADD_FAILED, "上传的格式必须是jpg或png或bmp或jpeg");
+                }
+                String newName = (new Date()).getTime() + ((int) (Math.random() * 9000) + 1000) + "." + type;
+                String filePath = location + newName;
+                File newFile = new File(filePath);
+                if (!temporaryFile.renameTo(newFile)) {
+                    return SendUtil.send(false, ConstStr.ADD_FAILED, "");
+                }
+                // 增加数据到s_file表
+                SFile sFile = new SFile();
+                sFile.setPath(newName);
+                sFile.setSuffix(type);
+                if (fileDao.addFile(sFile) <= 0) {
+                    return SendUtil.send(false, ConstStr.ADD_FAILED, "");
+                }
+                picPathList.add(sFile.getId().toString());
+            }
+            String picPath = String.join(",", picPathList);
+            sRepair.setRepairPic(picPath);
+        }
+        sRepair.setId(UUID.randomUUID().toString(true));
+        return SendUtil.send(true,sRepairDao.insert(sRepair)>0);
+    }
 
+    @Override
+    public List<SRepair> myOrder(String id,Integer status) {
+        Integer status2 = null;
+        if (status==3){
+            status2 = -1;
+        }
+        return sRepairDao.getMyOrder(id,status,status2);
+    }
+
+    @Override
+    public SRepair myOrderInfo(String id) {
+        return sRepairDao.queryById(id);
+    }
+
+    @Override
+    public Map<String, Object> closeOrder(MultipartFile[] files, SRepair sRepair) throws IOException {
+        if (Blank.isNotEmpty(files)) {
+            File pathFile = new File(location);
+            if (!pathFile.isDirectory()) {
+                if (!pathFile.mkdirs()) {
+                    return SendUtil.send(false, ConstStr.ADD_FAILED, "");
+                }
+            }
+            ArrayList<String> picPathList = new ArrayList<>();
+            for (MultipartFile file : files) {
+                //获取上传过来的文件名
+                File temporaryFile = new File(location + file.getOriginalFilename());
+                file.transferTo(temporaryFile);
+                String type = FileTypeUtil.getType(temporaryFile);
+                if (!("jpg".equals(type) || "png".equals(type) || "bmp".equals(type) || "jpeg".equals(type))) {
+                    return SendUtil.send(false, ConstStr.ADD_FAILED, "上传的格式必须是jpg或png或bmp或jpeg");
+                }
+                String newName = (new Date()).getTime() + ((int) (Math.random() * 9000) + 1000) + "." + type;
+                String filePath = location + newName;
+                File newFile = new File(filePath);
+                if (!temporaryFile.renameTo(newFile)) {
+                    return SendUtil.send(false, ConstStr.ADD_FAILED, "");
+                }
+                // 增加数据到s_file表
+                SFile sFile = new SFile();
+                sFile.setPath(newName);
+                sFile.setSuffix(type);
+                if (fileDao.addFile(sFile) <= 0) {
+                    return SendUtil.send(false, ConstStr.ADD_FAILED, "");
+                }
+                picPathList.add(sFile.getId().toString());
+            }
+            String picPath = String.join(",", picPathList);
+            sRepair.setResultPic(picPath);
+        }
+        return SendUtil.send(true,sRepairDao.update(sRepair)>0);
+    }
 }

+ 12 - 2
nngkxxdp/src/main/java/com/example/nngkxxdp/program/service/Impl/SWorkerServiceImpl.java

@@ -1,15 +1,17 @@
-package com.example.nngkxxdp.service.impl;
+package com.example.nngkxxdp.program.service.Impl;
 
 
 import cn.hutool.core.lang.UUID;
+import cn.hutool.core.util.ObjectUtil;
 import com.example.nngkxxdp.program.dao.AppletUserDao;
 import com.example.nngkxxdp.program.dao.SWorkerDao;
 import com.example.nngkxxdp.program.entity.SWorker;
 import com.example.nngkxxdp.program.service.SWorkerService;
-import org.springframework.stereotype.Service;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageImpl;
 import org.springframework.data.domain.PageRequest;
+import org.springframework.stereotype.Service;
 
 /**
  * (SWorker)表服务实现类
@@ -22,6 +24,9 @@ public class SWorkerServiceImpl implements SWorkerService {
     
     private final SWorkerDao sWorkerDao;
     private final AppletUserDao appletUserDao;
+
+
+
     
     public SWorkerServiceImpl(SWorkerDao sWorkerDao, AppletUserDao appletUserDao) {
         this.sWorkerDao = sWorkerDao;
@@ -48,6 +53,9 @@ public class SWorkerServiceImpl implements SWorkerService {
     @Override
     public Page<SWorker> queryByPage(SWorker sWorker, PageRequest pageRequest) {
         long total = this.sWorkerDao.count(sWorker);
+        if (ObjectUtil.isEmpty(sWorker)){
+            sWorker = new SWorker();
+        }
         return new PageImpl<>(this.sWorkerDao.queryAllByLimit(sWorker, pageRequest), pageRequest, total);
     }
 
@@ -93,4 +101,6 @@ public class SWorkerServiceImpl implements SWorkerService {
         Integer count = appletUserDao.findUser(phoneNum);
         return  count>0;
     }
+
+
 }

+ 12 - 1
nngkxxdp/src/main/java/com/example/nngkxxdp/program/service/SRepairService.java

@@ -4,6 +4,11 @@ package com.example.nngkxxdp.program.service;
 import com.example.nngkxxdp.program.entity.SRepair;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
 
 /**
  * (SRepair)表服务接口
@@ -19,7 +24,7 @@ public interface SRepairService {
      * @param id 主键
      * @return 实例对象
      */
-    SRepair queryById(Integer id);
+    SRepair queryById(String id);
 
     /**
      * 分页查询
@@ -54,5 +59,11 @@ public interface SRepairService {
      */
     boolean deleteById(Integer id);
 
+    Map<String, Object> addEvaluation(MultipartFile[] files, SRepair sRepair) throws IOException;
+
+    List<SRepair> myOrder(String id,Integer status);
+
+    SRepair myOrderInfo(String id);
 
+    Map<String, Object> closeOrder(MultipartFile[] files, SRepair sRepair) throws IOException;
 }

+ 7 - 0
nngkxxdp/src/main/java/com/example/nngkxxdp/program/service/SWorkerService.java

@@ -1,9 +1,15 @@
 package com.example.nngkxxdp.program.service;
 
 
+import com.example.nngkxxdp.entity.SEvaluation;
+import com.example.nngkxxdp.program.entity.SRepair;
 import com.example.nngkxxdp.program.entity.SWorker;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.util.Map;
 
 /**
  * (SWorker)表服务接口
@@ -55,4 +61,5 @@ public interface SWorkerService {
     boolean deleteById(String id);
 
     boolean hasWxUser(String phoneNum);
+
 }

+ 1 - 1
nngkxxdp/src/main/resources/mapper/AppletUserDao.xml

@@ -105,6 +105,6 @@
     </select>
     <select id="findUser" resultType="int">
         select count(*) from applet_user
-        where telephone=#{phoneNum}
+        where phone=#{phoneNum}
     </select>
 </mapper>

+ 35 - 14
nngkxxdp/src/main/resources/mapper/SRepairDao.xml

@@ -3,7 +3,7 @@
 <mapper namespace="com.example.nngkxxdp.program.dao.SRepairDao">
 
     <resultMap type="com.example.nngkxxdp.program.entity.SRepair" id="SRepairMap">
-        <result property="id" column="id" jdbcType="INTEGER"/>
+        <result property="id" column="id" jdbcType="VARCHAR"/>
         <result property="repairType" column="repair_type" jdbcType="INTEGER"/>
         <result property="userDescription" column="user_description" jdbcType="VARCHAR"/>
         <result property="repairPic" column="repair_pic" jdbcType="VARCHAR"/>
@@ -15,12 +15,16 @@
         <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
         <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
         <result property="isDel" column="is_del" jdbcType="INTEGER"/>
+        <result property="userId" column="user_id" jdbcType="VARCHAR"/>
+        <result property="appointmentTime" column="appointment_time" jdbcType="TIMESTAMP"/>
+        <result property="maintenanceAddress" column="maintenance_address" jdbcType="VARCHAR"/>
+
     </resultMap>
 
     <!--查询单个-->
     <select id="queryById" resultMap="SRepairMap">
         select
-          id, repair_type, user_description, repair_pic, phone_num, status, worker_description, result_pic, worker_id, create_time, update_time, is_del
+          id, repair_type, user_description, repair_pic, phone_num, status, worker_description, result_pic, worker_id,user_id,appointment_time,maintenance_address
         from s_repair
         where id = #{id}
     </select>
@@ -28,7 +32,7 @@
     <!--查询指定行数据-->
     <select id="queryAllByLimit" resultMap="SRepairMap">
         select
-          id, repair_type, user_description, repair_pic, phone_num, status, worker_description, result_pic, worker_id, create_time, update_time, is_del
+          id, repair_type, user_description, repair_pic, phone_num, status, worker_description, result_pic, worker_id, create_time, update_time, is_del,user_id,appointment_time,maintenance_address
         from s_repair
         <where>
             <if test="id != null">
@@ -117,8 +121,8 @@
 
     <!--新增所有列-->
     <insert id="insert" keyProperty="id" useGeneratedKeys="true">
-        insert into s_repair(repair_type, user_description, repair_pic, phone_num, status, worker_description, result_pic, worker_id, create_time, update_time, is_del)
-        values (#{repairType}, #{userDescription}, #{repairPic}, #{phoneNum}, #{status}, #{workerDescription}, #{resultPic}, #{workerId}, #{createTime}, #{updateTime}, #{isDel})
+        insert into s_repair(id,repair_type, user_description, repair_pic, phone_num, status, create_time, update_time, is_del,user_id,appointment_time,maintenance_address)
+        values (#{id},#{repairType}, #{userDescription}, #{repairPic}, #{phoneNum}, 0 , now(), now(),0,#{userId},#{appointmentTime},#{maintenanceAddress})
     </insert>
 
     <insert id="insertBatch" keyProperty="id" useGeneratedKeys="true">
@@ -177,15 +181,7 @@
             <if test="workerId != null">
                 worker_id = #{workerId},
             </if>
-            <if test="createTime != null">
-                create_time = #{createTime},
-            </if>
-            <if test="updateTime != null">
-                update_time = #{updateTime},
-            </if>
-            <if test="isDel != null">
-                is_del = #{isDel},
-            </if>
+                update_time = now()
         </set>
         where id = #{id}
     </update>
@@ -195,5 +191,30 @@
         delete from s_repair where id = #{id}
     </delete>
 
+    <select id="getMyOrder" resultMap="SRepairMap">
+        SELECT
+            id,
+            repair_type,
+            user_description,
+            repair_pic,
+            phone_num,
+            `status`,
+            worker_description,
+            result_pic,
+            worker_id,
+            appointment_time,
+            maintenance_address
+        FROM
+            s_repair
+        <where>
+            and user_id = #{userId}
+            and status = #{status}
+            <if test="status2 != null">
+                or status = #{status2}
+            </if>
+        </where>
+
+    </select>
+
 </mapper>
 

+ 12 - 33
nngkxxdp/src/main/resources/mapper/SWorkerDao.xml

@@ -27,42 +27,30 @@
           id, name, region, phone_num, status, create_time, update_time, is_del
         from s_worker
         <where>
-            <if test="id != null and id != ''">
-                and id = #{id}
+            <if test="sWorker.name != null and sWorker.name != ''">
+                and name = #{sWorker.name}
             </if>
-            <if test="name != null and name != ''">
-                and name = #{name}
-            </if>
-            <if test="region != null and region != ''">
-                and region = #{region}
-            </if>
-            <if test="phoneNum != null">
-                and phone_num = #{phoneNum}
-            </if>
-            <if test="status != null">
-                and status = #{status}
+            <if test="sWorker.region != null and sWorker.region != ''">
+                and region = #{sWorker.region}
             </if>
-            <if test="createTime != null">
-                and create_time = #{createTime}
-            </if>
-            <if test="updateTime != null">
-                and update_time = #{updateTime}
+            <if test="sWorker.phoneNum != null">
+                and phone_num = #{sWorker.phoneNum}
             </if>
-            <if test="isDel != null">
-                and is_del = #{isDel}
+            <if test="sWorker.status != null">
+                and status = #{sWorker.status}
             </if>
+            and is_del = 0
         </where>
         limit #{pageable.offset}, #{pageable.pageSize}
+        ORDER BY is_del ,create_time desc
     </select>
 
     <!--统计总行数-->
     <select id="count" resultType="java.lang.Long">
-        select count(1)
+        select count(*)
         from s_worker
         <where>
-            <if test="id != null and id != ''">
-                and id = #{id}
-            </if>
+            and is_del = 0
             <if test="name != null and name != ''">
                 and name = #{name}
             </if>
@@ -75,15 +63,6 @@
             <if test="status != null">
                 and status = #{status}
             </if>
-            <if test="createTime != null">
-                and create_time = #{createTime}
-            </if>
-            <if test="updateTime != null">
-                and update_time = #{updateTime}
-            </if>
-            <if test="isDel != null">
-                and is_del = #{isDel}
-            </if>
         </where>
     </select>
 

+ 31 - 11
nnzwminiapp/pages/index/index.wxml

@@ -60,10 +60,30 @@
 			</view>
 			<!-- 内容top -->
 		</view>
+        
+            <view style="padding: 25rpx 30rpx;background: #ffffff;">
+			<!-- <view class="content-search-tab" style="height: 588rpx;"> -->
+				<view class="content-service">
+					<view bindtap="clickService1" data-item="{{index}}" wx:for="{{ serviceItems1 }}" wx:for-item="item" wx:for-index="index" wx:key="index" class="content-service-item">
+						<view data-item="{{index}}">
+							<image src="{{ item.img }}" style="height:88rpx;width:88rpx"></image>
+						</view>
+						<view data-item="{{index}}">{{ item.name }}</view>
+					</view>
+				</view>
+				<view class="content-service">
+					<view bindtap="clickService1" data-item="{{index}}" wx:for="{{ serviceItems1 }}" wx:for-item="item" wx:for-index="index" wx:key="index" class="content-service-item">
+						<view data-item="{{index}}">
+							<image src="{{ item.img }}" style="height:88rpx;width:88rpx"></image>
+						</view>
+						<view data-item="{{index}}">{{ item.name }}</view>
+					</view>
+				</view>
+			</view>
 
 		<!-- 视频推荐 -->
-		<view class="three" style="height:163rpx;width:100%;padding-left:15rpx;background-color: #F5F5F5;">
-			<image src="{{imgUrl}}index-video-recommend.png" style="height:163rpx;width:720rpx" bindtap="gotoSPTJ"></image>
+		<!-- <view class="three" style="height:163rpx;width:100%;padding-left:15rpx;background-color: #F5F5F5;">
+			<image src="{{imgUrl}}index-video-recommend.png" style="height:163rpx;width:720rpx" bindtap="gotoSPTJ"></image> -->
 			<!-- <swiper current="{{lun}}" indicator-dots="{{true}}" style="height: 100%;width: 720rpx">
 				<swiper-item bindtap="gotoNewsPaper">
 					<image src="{{imgUrl}}index-video-banner.png" style="height:163rpx;width:100%"></image>
@@ -75,7 +95,7 @@
 					<image src="{{imgUrl}}self-service.png" style="height:163rpx;width:100%"></image>
 				</swiper-item>
 			</swiper> -->
-		</view>
+		<!-- </view> -->
 		<!-- 南岸动态 -->
 		<view class="content-na" style="height:512rpx;width:100%;background-color:#F5F5F5;position:relative;overflow: hidden;margin-top: 5rpx;">
 			<!-- 浮动 -->
@@ -92,21 +112,21 @@
 						<view style="height:50rpx;padding-left:10rpx;">南岸动态</view>
 					</view>
 					<!-- 今日重庆 -->
-					<view class="tab-item {{naTab==1?'active':''}}" bindtap="clickNaTilteTab" data-item="1">
+					<!-- <view class="tab-item {{naTab==1?'active':''}}" bindtap="clickNaTilteTab" data-item="1">
 						<view style="position: absolute;width: 0;height: 0;border-left: 10rpx solid transparent;border-right: 10rpx solid transparent;border-top: 10rpx solid #508FF4;bottom: -13rpx;" />
 						<view style="height:50rpx;width:32rpx;display: flex;justify-content:center;align-items:center;">
 							<image wx:if="{{ naTab==1 }}" style="width:32rpx;height:32rpx;" src="{{imgUrl}}na-title-1.png"></image>
 						</view>
 						<view style="height:50rpx;padding-left:10rpx">今日重庆</view>
-					</view>
+					</view> -->
 					<!-- 国务院信息 -->
-					<view class="tab-item-last {{naTab==2?'active':''}}" bindtap="clickNaTilteTab" data-item="2">
+					<!-- <view class="tab-item-last {{naTab==2?'active':''}}" bindtap="clickNaTilteTab" data-item="2">
 						<view style="position: absolute;width: 0;height: 0;border-left: 10rpx solid transparent;border-right: 10rpx solid transparent;border-top: 10rpx solid #508FF4;bottom: -13rpx;" />
 						<view style="height:50rpx;width:32rpx;display: flex;justify-content:center;align-items:center;">
 							<image wx:if="{{ naTab==2 }}" style="width:32rpx;height:32rpx;" src="{{imgUrl}}na-title-1.png"></image>
 						</view>
 						<view style="height:50rpx;padding-left:10rpx">国务院信息</view>
-					</view>
+					</view> -->
 				</view>
 				<!-- 标题 -->
 				<!-- 内容 -->
@@ -123,7 +143,7 @@
 							<include wx:else src="naTitleTab.wxml" />
 						</swiper-item>
 						<!-- 今日重庆 -->
-						<swiper-item>
+						<!-- <swiper-item>
 							<view wx:if="{{isNaLoading}}" style="display: flex;justify-content: center;align-items: center;height: 100%;">
 								<t-loading theme="spinner" size="64rpx" text="加载中..." inheritColor></t-loading>
 							</view>
@@ -131,9 +151,9 @@
 								<t-empty icon="info-circle-filled" description="暂无数据" />
 							</view>
 							<include wx:else src="naTitleTab.wxml" />
-						</swiper-item>
+						</swiper-item> -->
 						<!-- 国务院信息 -->
-						<swiper-item>
+						<!-- <swiper-item>
 							<view wx:if="{{isNaLoading}}" style="display: flex;justify-content: center;align-items: center;height: 100%;">
 								<t-loading theme="spinner" size="64rpx" text="加载中..." inheritColor></t-loading>
 							</view>
@@ -141,7 +161,7 @@
 								<t-empty icon="info-circle-filled" description="暂无数据" />
 							</view>
 							<include wx:else src="naTitleTab.wxml" />
-						</swiper-item>
+						</swiper-item> -->
 					</swiper>
 				</view>
 				<!-- 内容 -->

+ 1 - 1
nnzwminiapp/pages/myCenter/myCenter.js

@@ -28,7 +28,7 @@ Page({
 
     toWorkOrder: function (e) {
         wx.navigateTo({
-            url: '/pagesPublic/pages/work-order/work-order',
+            url: '/pagesPublic/pages/work-order/work-order'
         });
     },
 

+ 1 - 1
nnzwminiapp/pages/myCenter/myCenter.wxml

@@ -92,7 +92,7 @@
             <view class="line"></view>
 			<view class="list-item" bindtap="toWorkOrder">
 				<view class="left">
-					<image src="../images/l-grzl.png" alt=""></image>
+					<image src="../images/l-rwzx.png" alt=""></image>
 					<text>工单维修</text>
 				</view>
 				<view class="arrow">

+ 1 - 0
nnzwminiapp/pages/serve/serve.js

@@ -18,6 +18,7 @@ Page({
 			url: 'https://zwykb.cq.gov.cn/inspur/county/compound?regionCode=500108',
 			method: 'POST',
 			success: res => {
+        console.log(res);
 				res.data.data.DISSSATIS_RATE = Math.floor(res.data.data.DISSSATIS_NUM / (res.data.data.TOTAL_NUM - res.data.data.SATIS_NUM) * 10000) / 100;
 				res.data.data.SATIS_RATE = Math.floor(res.data.data.SATIS_NUM / res.data.data.TOTAL_NUM * 10000) / 100;
 				this.setData({

+ 2 - 2
nnzwminiapp/pages/serve/serve.wxml

@@ -147,7 +147,7 @@
 			</li>
 		</ul>
 	</view>
-	<!-- 住页游乐购 -->
+	<!-- 住页游乐购
 	<view class="view-zyylg cont-width">
 		<view class="title">
 			<view class="line"></view>
@@ -160,7 +160,7 @@
 			<li style="background-image: url({{imgUrl}}bg-le.png);" bindtap="gotol">乐</li>
 			<li style="background-image: url({{imgUrl}}bg-gou.png);" bindtap="gotog">购</li>
 		</ul>
-	</view>
+	</view> -->
 	<view style="height: 160rpx;">
 	</view>
 </scroll-view>

+ 34 - 1
nnzwminiapp/pagesPublic/pages/work-order-detail/work-order-detail.js

@@ -10,7 +10,10 @@ Page({
      */
     data: {
         imgUrl: imgUrl,
-        isWorker: false
+        isWorker: false,
+        colorComplete: '#508FF4',
+        colorIncomplete: '#999999',
+        complete: true,
     },
 
     /**
@@ -69,6 +72,24 @@ Page({
         wx.navigateBack();
     },
 
+    radioChange(e) {
+        console.info(e)
+        // e.detail.value
+        if (e.detail.value == '已完成') {
+            this.setData({
+                colorComplete: '#508FF4',
+                colorIncomplete: '#999999',
+                complete: true
+            });
+        } else {
+            this.setData({
+                colorComplete: '#999999',
+                colorIncomplete: '#508FF4',
+                complete: false
+            });
+        }
+    },
+
     /**
      * 上传报修结果图片
      */
@@ -79,4 +100,16 @@ Page({
             }
         });
     },
+
+    submitReport(e) {
+        console.info(e)
+        let complete = this.data.complete;
+        if (!complete && !e.detail.value.reason) {
+            wx.showToast({
+                title: '请填写失败原因',
+                icon: 'error'
+            });
+            return;
+        }
+    },
 })

+ 11 - 7
nnzwminiapp/pagesPublic/pages/work-order-detail/work-order-detail.wxml

@@ -27,7 +27,7 @@
             <text class="item-label">问题描述:</text>
             <text class="item-value">{{description}}</text>
         </view>
-        <view class="item-row">
+        <view class="item-row" style="align-items: flex-start;">
             <text class="item-label">图片:</text>
             <view class="item-image-box">
                 <image src="" mode="" />
@@ -90,19 +90,23 @@
         <form bindsubmit="submitReport">
             <view class="report-row">
                 <label for="" class="report-label">是否完成维修:</label>
-                <radio-group bindchange="">
-                    <label for="">
-                        <radio value="已完成" checked="true" />已完成
+                <radio-group bindchange="radioChange">
+                    <label for="" style="color: {{colorComplete}};">
+                        <radio value="已完成" checked="true" color="#508FF4" />已完成
                     </label>
-                    <label for="">
-                        <radio value="未完成" />未完成
+                    <label for="" style="color: {{colorIncomplete}};">
+                        <radio value="未完成" color="#508FF4" />未完成
                     </label>
                 </radio-group>
             </view>
-            <view class="report-row" style="align-items: flex-start;">
+            <view class="report-row" style="align-items: flex-start;" wx:if="{{complete}}">
                 <label for="" class="report-label">维修结果:</label>
                 <image class="report-photo" src="/pages/images/photo2.png" mode="" bindtap="uploadImage" />
             </view>
+            <view class="report-row" wx:else="{{complete}}">
+                <label for="" class="report-label">原因:</label>
+                <input class="report-input" type="text" name="reason" maxlength="200" placeholder="请填写失败原因" placeholder-style="color:#999999" />
+            </view>
             <button class="report-submit" form-type="submit">提 交</button>
         </form>
     </view>

+ 5 - 0
nnzwminiapp/pagesPublic/pages/work-order-detail/work-order-detail.wxss

@@ -234,6 +234,11 @@ radio-group label:nth-child(2) {
     padding: 36rpx 35rpx;
 }
 
+.report-input {
+    width: 427rpx;
+    border-bottom: solid 1rpx #999999;
+}
+
 .report-submit {
     position: absolute;
     left: 0;

+ 0 - 56
nnzwminiapp/pagesPublic/pages/work-order/work-order-worker.wxml

@@ -1,56 +0,0 @@
-<!--pagesPublic/pages/work-order/work-order-worker.wxml-->
-<view>
-    <view class="navBox">
-        <view class="titleBox" bindtap="titleClick" data-idx="0">
-            <text class="{{0 == currentIndex ? 'fontColorBox' : ''}}">待维修工单</text>
-            <hr class="{{0 == currentIndex ? 'lineBox' : 'notLineBox'}}" />
-        </view>
-        <view class="titleBox" bindtap="titleClick" data-idx="1">
-            <text class="{{1 == currentIndex ? 'fontColorBox' : ''}}">已完成工单</text>
-            <hr class="{{1 == currentIndex ? 'lineBox' : 'notLineBox'}}" />
-        </view>
-    </view>
-    <swiper class="swiperBox" bindchange="pagechange" current="{{currentIndex}}">
-        <swiper-item class="swiperTtemBox">
-            <scroll-view class="viewBox" wx:for="{{list}}" wx:for-item="item" wx:key="index">
-                <view class="item" bindtap="toDetail">
-                    <view class="item-row">
-                        <text class="item-label">报修类型:</text>
-                        <text class="item-value">{{item.type}}</text>
-                    </view>
-                    <view class="item-row">
-                        <text class="item-label">维修地址:</text>
-                        <text class="item-value">{{item.address}}</text>
-                    </view>
-                    <view class="item-row">
-                        <text class="item-label">预约时间:</text>
-                        <text class="item-value">{{item.time}}</text>
-                    </view>
-                </view>
-            </scroll-view>
-        </swiper-item>
-        <swiper-item class="swiperTtemBox">
-            <scroll-view class="viewBox" wx:for="{{list}}" wx:for-item="item" wx:key="index">
-                <view class="item" bindtap="toDetail">
-                    <image class="item-status" src="/pages/images/status-complete.png" mode="" />
-                    <view class="item-row">
-                        <text class="item-label">报修类型:</text>
-                        <text class="item-value">{{item.type}}</text>
-                    </view>
-                    <view class="item-row">
-                        <text class="item-label">维修地址:</text>
-                        <text class="item-value">{{item.address}}</text>
-                    </view>
-                    <view class="item-row">
-                        <text class="item-label">维修结果:</text>
-                        <text class="item-value">{{item.time}}</text>
-                    </view>
-                    <view class="item-row">
-                        <text class="item-label">原因:</text>
-                        <text class="item-value">{{item.time}}</text>
-                    </view>
-                </view>
-            </scroll-view>
-        </swiper-item>
-    </swiper>
-</view>

+ 119 - 2
nnzwminiapp/pagesPublic/pages/work-order/work-order.js

@@ -1,5 +1,11 @@
 // pagesPublic/pages/work-order/work-order.js
 var dateTimePicker = require('../../../utils/dateTimePicker');
+const FormData = require('../../pages/menu/formData.js');
+
+import {
+    baseUrl,
+    request
+} from "../../../pages/api/canteen-request.js"
 
 Page({
 
@@ -7,7 +13,7 @@ Page({
      * 页面的初始数据
      */
     data: {
-        isWorker: false,
+        isUser: true,
         currentIndex: 0,
         date: '2023-10-01',
         time: '12:00',
@@ -15,7 +21,9 @@ Page({
         dateTime: null,
         startYear: 2000,
         endYear: 2250,
-        list: [{ type: '维修类型一', address: '食堂二楼楼梯地砖', time: '2022-03-15 13:45' }, { type: '维修类型一', address: '食堂二楼楼梯地砖', time: '2022-03-15 13:45' }]
+        typeList: ['报修类型一', '报修类型二', '报修类型三'],
+        list: [{ type: '维修类型一', address: '食堂二楼楼梯地砖', time: '2022-03-15 13:45' }, { type: '维修类型一', address: '食堂二楼楼梯地砖', time: '2022-03-15 13:45' }],
+        tempFileList: []
     },
 
     /**
@@ -105,24 +113,133 @@ Page({
     },
 
     /**
+     * 报修类型选择
+     * @param {*} e 
+     */
+    typePickerChange(e) {
+        console.log('picker发送选择改变,携带值为', e.detail.value)
+        this.setData({
+            index: e.detail.value
+        });
+    },
+
+    /**
      * 提交工单
      * @param {*} e 
      */
     submitWorkOrder(e) {
         console.info(e);
+        if (!e.detail.value.type) {
+            wx.showToast({
+                title: '请选择报修类型',
+                icon: 'error'
+            });
+            return;
+        }
+        if (!e.detail.value.address) {
+            wx.showToast({
+                title: '请输入地址',
+                icon: 'error'
+            });
+            return;
+        }
+        if (!e.detail.value.description) {
+            wx.showToast({
+                title: '请输入问题描述',
+                icon: 'error'
+            });
+            return;
+        }
+        if (!e.detail.value.phone) {
+            wx.showToast({
+                title: '请输入联系电话',
+                icon: 'error'
+            });
+            return;
+        }
+        if (!e.detail.value.arriveTime) {
+            wx.showToast({
+                title: '请选择上门时间',
+                icon: 'error'
+            });
+            return;
+        }
+        let tempList = this.data.tempFileList;
+        if (!tempList || tempList.length == 0) {
+            wx.showToast({
+                title: '请上传报修图片',
+                icon: 'error'
+            });
+            return;
+        }
+
+        let formData = new FormData();
+        formData.append('repairType', e.detail.value.type);
+        formData.append('userDescription', e.detail.value.description);
+        formData.append('phoneNum', e.detail.value.phone);
+        formData.append('appointmentTime', e.detail.value.arriveTime);
+        formData.append('maintenanceAddress', e.detail.value.address);
+        for (let i in tempList) {
+            formData.appendFile('files', tempList[i]);
+        }
+        let data = formData.getData();
+        request({
+            url: '/mini/worker/addOrder',
+            method: 'POST',
+            data: data.buffer,
+            contentType: data.contentType
+        }).then(res => {
+            if (res.data.result) {
+                wx.showToast({
+                    title: '提交成功',
+                    icon: 'success'
+                });
+                wx.navigateBack();
+            } else {
+                wx.showToast({
+                    title: '提交失败',
+                    icon: 'error'
+                });
+            }
+        });
     },
 
     /**
      * 上传报修图片
      */
     uploadImage() {
+        let that = this;
         wx.chooseMedia({
             success(res) {
                 console.info(res);
+                if (res.errMsg == 'chooseMedia:ok') {
+                    let tempList = that.data.tempFileList;
+                    for (let i in res.tempFiles) {
+                        tempList.push(res.tempFiles[i].tempFilePath);
+                    }
+                    that.setData({
+                        tempFileList: tempList
+                    });
+                }
             }
         });
     },
 
+    changeDateTime(e) {
+        this.setData({ dateTime: e.detail.value });
+    },
+    changeDateTimeColumn(e) {
+        var arr = this.data.dateTime, dateArr = this.data.dateTimeArray;
+
+        arr[e.detail.column] = e.detail.value;
+        dateArr[2] = dateTimePicker.getMonthDay(dateArr[0][arr[0]], dateArr[1][arr[1]]);
+
+        this.setData({
+            dateTimeArray: dateArr,
+            dateTime: arr
+        });
+    },
+
     /**
      * 查看工单详情
      * @param {*} e 

+ 14 - 4
nnzwminiapp/pagesPublic/pages/work-order/work-order.wxml

@@ -1,5 +1,5 @@
 <!--pagesPublic/pages/work-order/work-order.wxml-->
-<view wx:if="{{isWorker}}">
+<view wx:if="{{isUser}}">
     <view class="navBox">
         <view class="titleBox" bindtap="titleClick" data-idx="0">
             <text class="{{0 == currentIndex ? 'fontColorBox' : ''}}">发起工单</text>
@@ -16,7 +16,10 @@
                 <view class="formBox">
                     <view class="form-item">
                         <label for="" class="form-item-label">报修类型:</label>
-                        <input type="text" class="form-input" name="type" placeholder="请选择报修类型" placeholder-style="color:#999999" />
+                        <picker mode="selector" class="form-item-picker" range="{{typeList}}" value="{{index}}" bindchange="typePickerChange">
+                            <input type="text" class="form-input" style="width: 100%;" disabled="true" value="{{typeList[index]}}" placeholder="请选择报修类型" placeholder-style="color:#999999" />
+                            <input type="text" style="display: none;" name="type" value="{{index}}" />
+                        </picker>
                         <image class="form-icon" src="/pages/images/arrow.png" alt=""></image>
                     </view>
                     <view class="form-item">
@@ -30,11 +33,14 @@
                     <view class="form-item" style="align-items: flex-start;">
                         <label for="" class="form-item-label">报修物品图片:</label>
                         <image class="form-photo" src="/pages/images/photo2.png" mode="" bindtap="uploadImage" />
+                        <view wx:for="{{tempFileList}}" wx:key="index" wx:for-item="item">
+                            <image class="form-image" src="{{item}}" mode="" />
+                        </view>
                         <input type="text" name="" style="display: none;" />
                     </view>
                     <view class="form-item">
                         <label for="" class="form-item-label">联系电话:</label>
-                        <input type="text" class="form-input" name="phone" confirm-type="next" maxlength="11" placeholder="请输入联系电话" placeholder-style="color:#999999" />
+                        <input type="number" class="form-input" name="phone" confirm-type="next" maxlength="11" placeholder="请输入联系电话" placeholder-style="color:#999999" />
                     </view>
                     <view class="form-item">
                         <label for="" class="form-item-label">预约上门时间:</label>
@@ -113,7 +119,11 @@
                     </view>
                     <view class="item-row">
                         <text class="item-label">维修结果:</text>
-                        <text class="item-value">{{item.time}}</text>
+                        <!-- <text class="item-value"></text> -->
+                        <view class="item-imgbox">
+                            <image class="item-image" src="" mode="" />
+                            <image class="item-image" src="" mode="" />
+                        </view>
                     </view>
                     <view class="item-row">
                         <text class="item-label">原因:</text>

+ 15 - 1
nnzwminiapp/pagesPublic/pages/work-order/work-order.wxss

@@ -95,7 +95,7 @@ Page {
 }
 
 .form-input {
-    border-bottom: solid 1rpx #999999;
+    border-bottom: solid 1rpx #99999980;
     width: 68%;
 }
 
@@ -112,6 +112,12 @@ Page {
     background: #E9E9E9;
 }
 
+.form-image {
+    width: 112rpx;
+    height: 112rpx;
+    margin-left: 10rpx;
+}
+
 .form-button {
     width: 100%;
     height: 97rpx;
@@ -143,6 +149,9 @@ Page {
 
 .item-row {
     margin-top: 30rpx;
+    display: flex;
+    flex-direction: row;
+    align-items: center;
 }
 
 .item-label {
@@ -153,4 +162,9 @@ Page {
 .item-value {
     font-size: 28rpx;
     color: #333333;
+}
+
+.item-image {
+    width: 50rpx;
+    height: 50rpx;
 }