NULL1222 1 неделя назад
Родитель
Сommit
63ee77bf21

+ 117 - 87
app.js

@@ -10,31 +10,42 @@ App({
     const token = wx.getStorageSync('userMsg').token
     // 没 token
     if (!token) {
-        return wx.reLaunch({
-            url: '/pages/login/phone'
-        })
+      return wx.reLaunch({
+        url: '/pages/login/phone'
+      })
     }
-    // 延时执行
     this.globalData.http.basic({
-      "classname": "sysmanage.develop.querytemplet.querytemplet",
-      "method": "query",
-      "content": {}
+      "classname": "sysmanage.develop.optiontype.optiontype",
+      "method": "optiontypeselect",
+      "content": {
+        "typename": "statuscolors"
+      }
     }).then(res => {
       // token 有效
+      // let obj = {}
+      // res.data.forEach(v => {
+      //   obj[v.value] = v.remarks
+      // })
+      // wx.setClipboardData({
+      //   data: JSON.stringify(obj),
+      // })
       if (res.code == '1') {
+        res.data.forEach(v => {
+          getApp().globalData.sColors[v.value] = v.remarks
+        })
         return wx.switchTab({
-            url: '/pages/tabbar/home/index'
+          url: '/pages/tabbar/home/index'
         })
       }
       // token 失效
       wx.removeStorageSync('userMsg')
       wx.reLaunch({
-          url: '/pages/login/phone'
+        url: '/pages/login/phone'
       })
     }).catch(err => {
       wx.removeStorageSync('userMsg')
       wx.reLaunch({
-          url: '/pages/login/phone'
+        url: '/pages/login/phone'
       })
     })
   },
@@ -94,99 +105,118 @@ App({
   }),
   globalData: {
     sColors: {
-      "ACTIVE": "#67C23A",
-      "上架": "#67C23A",
-      "下架": "#F56C6C",
-      "交期待确认": "#F56C6C",
-      "交期确认": "#3874f6",
-      "代开始": "#3874f6",
-      "借出": "#e6a23c",
+      "待执行": "#3874f6",
+      "进行中": "#67C23A",
+      "启用": "#67C23A",
       "停用": "#999999",
-      "关闭": "#999999",
-      "历史售后": "#999999",
+      "在职": "#67C23A",
+      "离职": "#999999",
+      "待跟进": "#3874f6",
+      "跟进中": "#67C23A",
+      "已转化": "#e6a23c",
+      "已无效": "#999999",
+      "已过期": "#999999",
+      "新建": "#3874f6",
       "发布": "#67C23A",
-      "发放": "#67C23A",
+      "置顶": "#F56C6C",
+      "已读": "#999999",
+      "结束": "#999999",
+      "待审核": "#3874f6",
+      "已审核": "#67C23A",
+      "待分配": "#3874f6",
+      "已分配": "#333333",
+      "潜在": "#3874f6",
       "合作中": "#67C23A",
-      "否": "#999999",
-      "启用": "#67C23A",
-      "售中": "#e6a23c",
-      "售出": "#67C23A",
-      "售前": "#3874f6",
-      "售后": "#67C23A",
-      "在库": "#3874f6",
-      "在职": "#67C23A",
-      "复核": "#F56C6C",
+      "暂缓": "#e6a23c",
+      "已终止": "#999999",
+      "未成交": "#3874f6",
+      "已成交": "#67C23A",
       "多次成交": "#67C23A",
-      "审核": "#e6a23c",
-      "已下达": "#67C23A",
-      "已使用": "#67C23A",
-      "已入账(人工)": "#3874f6",
-      "已入账(系统)": "#67C23A",
-      "已入账(非贷款)": "#e6a23c",
-      "已入账(人工)": "#3874f6",
-      "已入账(系统)": "#67C23A",
-      "已入账(非贷款)": "#e6a23c",
-      "已分配": "#333333",
-      "已备货": "#3874f6",
       "已失败": "#F56C6C",
-      "已完成": "#e6a23c",
-      "已审核": "#67C23A",
-      "已开票": "#67C23A",
-      "已成交": "#67C23A",
-      "已截止": "#999999",
-      "已截至": "#999999",
+      "已结案": "#999999",
+      "未报备": "#3874f6",
+      "报备中": "#e6a23c",
       "已报备": "#67C23A",
+      "提交": "#67C23A",
+      "审核": "#e6a23c",
+      "复核": "#F56C6C",
       "已提交": "#67C23A",
-      "已无效": "#999999",
-      "已核销": "#67C23A",
-      "已确认(非货款)": "#e6a23c",
-      "已终止": "#999999",
-      "已结案": "#999999",
-      "已读": "#999999",
-      "已转化": "#e6a23c",
-      "已过期": "#999999",
       "开启": "#67C23A",
-      "待分配": "#3874f6",
-      "待处理": "#F56C6C",
-      "待审核": "#3874f6",
-      "待执行": "#3874f6",
-      "待指派": "#3874f6",
-      "待接单": "#999999",
-      "待评审": "#3874f6",
-      "待跟进": "#3874f6",
+      "已截止": "#999999",
+      "已下达": "#67C23A",
+      "上架": "#67C23A",
+      "下架": "#F56C6C",
+      "正式": "#67C23A",
       "意向": "#3874f6",
-      "报备中": "#e6a23c",
+      "交期待确认": "#F56C6C",
+      "交期确认": "#3874f6",
+      "已核销": "#67C23A",
+      "部分核销": "#e6a23c",
+      "未核销": "#F56C6C",
+      "已开票": "#67C23A",
+      "部分开票": "#e6a23c",
+      "未开票": "#F56C6C",
+      "是": "#F56C6C",
+      "否": "#999999",
+      "关闭": "#999999",
+      "已入账(人工)": "#3874f6",
+      "已入账(系统)": "#67C23A",
+      "已入账(非贷款)": "#e6a23c",
+      "未入账": "#F56C6C",
+      "在库": "#3874f6",
+      "借出": "#e6a23c",
+      "售出": "#67C23A",
       "报废": "#999999",
-      "提交": "#67C23A",
+      "已使用": "#67C23A",
+      "未使用": "#999999",
       "收货": "#67C23A",
-      "新建": "#3874f6",
-      "无需评审": "#67C23A",
-      "是": "#F56C6C",
+      "发放": "#67C23A",
+      "待指派": "#3874f6",
+      "待处理": "#F56C6C",
+      "已完成": "#e6a23c",
+      "售前": "#3874f6",
+      "售后": "#67C23A",
+      "历史售后": "#999999",
+      "售中": "#e6a23c",
+      "待接单": "#999999",
+      "代开始": "#3874f6",
       "暂停": "#F56C6C",
-      "暂缓": "#e6a23c",
-      "未使用": "#999999",
-      "未入账": "#F56C6C",
-      "未备货": "#F56C6C",
-      "未开票": "#F56C6C",
-      "未成交": "#3874f6",
-      "未报备": "#3874f6",
-      "未核销": "#F56C6C",
-      "正式": "#67C23A",
-      "潜在": "#3874f6",
-      "禁用": "#999999",
-      "离职": "#999999",
-      "结束": "#999999",
-      "置顶": "#F56C6C",
+      "无需评审": "#67C23A",
+      "待评审": "#3874f6",
       "评审中": "#e6a23c",
       "评审拒绝": "#F56C6C",
-      "评审通过-已有成品": "rgba(103,194,58,0.5)",
       "评审通过-暂无成品": "#67C23A",
-      "跟进中": "#67C23A",
-      "进行中": "#67C23A",
+      "评审通过-已有成品": "rgba(103,194,58,0.5)",
+      "已入账(非贷款)": "#e6a23c",
+      "已入账(系统)": "#67C23A",
+      "已入账(人工)": "#3874f6",
+      "禁用": "#999999",
+      "已确认(非货款)": "#e6a23c",
+      "预提交": "#e6a23c",
+      "ACTIVE": "#67C23A",
+      "已备货": "#3874f6",
       "部分备货": "#67C23A",
-      "部分开票": "#e6a23c",
-      "部分核销": "#e6a23c",
-      "预提交": "#e6a23c"
+      "未备货": "#F56C6C",
+      "部分出货": "#e6a23c",
+      "未出货": "#F56C6C",
+      "已出货": "#67C23A",
+      "已结束": "#999999",
+      "紧急": "#F56C6C",
+      "常规": "#3874f6",
+      "已受理": "#e6a23c",
+      "已中止": "#999999",
+      "待开始": "#F56C6C",
+      "已发布": "#F56C6C",
+      "发货中": "#67C23A",
+      "已发货": "#3874f6",
+      "未完成": "#F56C6C",
+      "有效": "#3874f6",
+      "无效": "#F56C6C",
+      "分析已提交": "#F56C6C",
+      "方案已发布": "#e6a23c",
+      "部分完成": "#67C23A",
+      "生效中": "#67C23A",
+      "已到期": "#F56C6C"
     },
     http: new ApiModel(), //接口文件
     Language: new Language(), //语言包

+ 4 - 1
app.json

@@ -35,7 +35,9 @@
                 "handling/linkWork/link",
                 "workOrder/detail",
                 "workOrder/nodes/index",
-                "workOrder/nodeDetail/index"
+                "workOrder/nodeDetail/index",
+                "workOrder/components/autoUpload/upload",
+                "workOrder/components/signName/index"
             ]
         }
     ],
@@ -88,6 +90,7 @@
         "van-checkbox-group": "@vant/weapp/checkbox-group/index",
         "van-transition": "@vant/weapp/transition/index",
         "van-dialog": "@vant/weapp/dialog/index",
+        "van-uploader": "@vant/weapp/uploader/index",
         "viewDate": "/components/viewDate/index",
         "filtrate": "/components/filtrate/filtrate"
     },

+ 193 - 0
bgj/workOrder/components/autoUpload/upload.js

@@ -0,0 +1,193 @@
+import api from '../../api/api.js'
+let waitBindings = []; //等待绑定的附件
+Component({
+  /**
+   * 组件的属性列表
+   */
+  properties: {
+    source: {
+      value: 'media',
+      type: String
+    },
+    bindData: {
+      value: {},
+      type: Object
+    },
+    /* 文件夹ID */
+    parentid: {
+      type: String,
+      value: wx.getStorageSync('siteP').appfolderid
+    }
+  },
+  data: {
+    originFiles: [],
+    gridConfig: {
+      column: 5,
+      width: 120,
+      height: 120,
+    }
+  },
+  lifetimes: {
+    attached() {
+      setTimeout(() => {
+        this.fileData()
+        getApp().globalData.Language.getLanguagePackage(this)
+      }, 1000);
+    }
+  },
+  methods: {
+    handleAdd(file) {
+      // van-uploader after-read: {detail: {file, index}} 单文件
+      // handleClick 手动调用: {detail: {files: [...]}} 多文件
+      const files = file.detail.files || [file.detail.file]
+      this.toSetFileData(files.map(e => {
+        e.status = 'uploading'
+        return e
+      }))
+    },
+    toSetFileData(files) {
+      this.setData({
+        originFiles: this.data.originFiles.concat(files)
+      })
+      for (let i = 0; i < files.length; i++) {
+        // 初始化数据
+        let that = this,
+          data = this.requestType(files[i]);
+        data.content.filename = data.content.filename ? data.content.filename : `${Date.now()}.${data.content.filetype}`;
+        //发送请求
+        wx.getFileSystemManager().readFile({
+          filePath: files[i].url,
+          success: result => {
+            //返回临时文件路径
+            const fileData = result.data;
+            api._post(data).then(res => {
+              console.log("文件上传", res)
+              if (res.code == '1') {
+                that.uploadFile(res.data, fileData, files.length);
+              }
+            })
+          },
+          fail: console.error
+        });
+      }
+    },
+    /* 上传成功反馈 */
+    uploadFile(res, data, count) {
+      var that = this;
+      wx.request({
+        url: res.uploadurl,
+        method: "PUT",
+        data: data,
+        header: {
+          'content-type': 'application/octet-stream'
+        },
+        success(a) {
+          api._post({
+            "classname": "system.attachment.huawei.OBS",
+            "method": "uploadSuccess",
+            "content": {
+              "serialfilename": res.serialfilename
+            }
+          }).then(rs => {
+            console.log('上传成功反馈', rs)
+            waitBindings.push(rs.data.attachmentids[0] || "");
+            let data = that.data.originFiles.find(e => e.name === res.filename);
+            if (data) {
+              data.status = 'done';
+              data.attachmentids = rs.data.attachmentids[0]
+            }
+            if (waitBindings.length == count) {
+              that.filebindData();
+              that.setData({
+                originFiles: that.data.originFiles
+              })
+            }
+
+          }).catch(err => {
+            console.log(err)
+          })
+        }
+      })
+    },
+    handleClick() {
+      let that = this
+      wx.chooseMessageFile({
+        count: 10,
+        type: 'file',
+        success(res) {
+          let arr = res.tempFiles.map(e => {
+            return {
+              name: e.name,
+              url: e.path,
+              type: e.type,
+            }
+          })
+          that.handleAdd({
+            detail: {
+              files: arr
+            }
+          })
+        }
+      })
+    },
+    handleRemove(data) {
+      let file = {
+        currentTarget: {
+          dataset: {
+            item: data.detail.file
+          }
+        }
+      }
+      this.deleteFile(file)
+    },
+    /* 请求类型 */
+    requestType(file) {
+      var index = file.url.lastIndexOf(".");
+      var ext = file.url.substr(index + 1);
+      //文件名称
+      return {
+        "classname": "system.attachment.huawei.OBS",
+        "method": "getFileName",
+        "content": {
+          "filename": file.name || Date.now() + '.' + ext,
+          "filetype": ext,
+          "parentid": this.data.parentid
+        }
+      }
+    },
+    async filebindData() {
+      this.data.bindData.attachmentids = JSON.parse(JSON.stringify(waitBindings));
+      const res = await api._post({
+        "classname": "system.attachment.Attachment",
+        "method": "createFileLink",
+        "content": this.data.bindData
+      })
+      console.log("绑定", res)
+      if (res.code != '1') return;
+      this.fileData()
+      waitBindings = [];
+    },
+    async fileData() {
+      const res = await api._post({
+        "classname": "system.attachment.Attachment",
+        "method": "queryFileLink",
+        "content": this.data.bindData
+      })
+      console.log('获取文件', res)
+      this.setData({
+        originFiles: res.data
+      });
+    },
+    async deleteFile(data) {
+      let item = data.currentTarget.dataset.item
+      const res = await api._post({
+        "classname": "system.attachment.Attachment",
+        "method": "deleteFileLink",
+        "content": {
+          "linksids": [item.linksid]
+        }
+      })
+      this.fileData()
+    }
+  }
+})

+ 6 - 0
bgj/workOrder/components/autoUpload/upload.json

@@ -0,0 +1,6 @@
+{
+  "component": true,
+  "usingComponents": {
+
+  }
+}

+ 9 - 0
bgj/workOrder/components/autoUpload/upload.scss

@@ -0,0 +1,9 @@
+/* components/upload/upload.wxss */
+.small{
+  font-size: 22rpx;
+  line-height: 20px;
+  margin-left:10px
+}
+.colorError{
+  color:#e34d59 !important;
+}

+ 22 - 0
bgj/workOrder/components/autoUpload/upload.wxml

@@ -0,0 +1,22 @@
+<!--components/upload/upload.wxml-->
+<view >
+  <view wx:if="{{source === 'messageFile'}}">
+    <van-button size="small" bind:click="handleClick">{{language['选择文件']||'选择文件'}}</van-button>
+
+    <van-cell wx:for="{{originFiles}}" wx:key="attachmentid" title="{{language['合同']||'合同'}}" label="{{item.document}}" border="{{true}}">
+     <view class="small colorError" data-item="{{item}}" bindtap="deleteFile">
+        {{language['删除']||'删 除'}}
+     </view>
+    </van-cell>
+  </view>
+  <van-uploader
+    wx:else
+    file-list="{{originFiles}}"
+    max-count="99"
+    preview-size="120rpx"
+    deletable="{{true}}"
+    bind:after-read="handleAdd"
+    bind:delete="handleRemove"
+  />
+</view>
+<!-- bindtap="handleClick" -->

+ 72 - 0
bgj/workOrder/components/signName/index.js

@@ -0,0 +1,72 @@
+// components/signName/index.js
+import api from '../../api/api'
+Component({
+  /**
+   * 组件的属性列表
+   */
+  properties: {
+    bindData: {
+      value: {},
+      type: Object
+    },
+    showBut: {
+      type: Boolean,
+      value: true
+    }
+  },
+
+  /**
+   * 组件的初始数据
+   */
+  data: {
+
+  },
+
+  /**
+   * 组件生命周期
+   */
+  lifetimes: {
+    attached() {
+      this.fileData()
+    }
+  },
+
+  /**
+   * 组件的方法列表
+   */
+  methods: {
+    async fileData() {
+      let page = getCurrentPages()[getCurrentPages().length - 1]
+      if (page.data.bindSignNameData) {
+        const res = await api._post({
+          "classname": "system.attachment.Attachment",
+          "method": "queryFileLink",
+          "content": page.data.bindSignNameData
+        })
+        console.log("res.data", res.data)
+        this.setData({
+          originFiles: res.data,
+          showBut: res.data.length == 0
+        })
+      }
+    },
+    async deleteFile(data) {
+      let item = data.detail.file
+      const res = await api._post({
+        "classname": "system.attachment.Attachment",
+        "method": "deleteFileLink",
+        "content": {
+          "linksids": [item.linksid]
+        }
+      })
+      this.fileData()
+    },
+    // 签字
+    signName() {
+
+      wx.navigateTo({
+        url: '/Eservice/signName/index?id=' + this.data.bindData.ownerid,
+      })
+    },
+  }
+})

+ 5 - 0
bgj/workOrder/components/signName/index.json

@@ -0,0 +1,5 @@
+{
+  "component": true,
+  "usingComponents": {
+  }
+}

+ 1 - 0
bgj/workOrder/components/signName/index.scss

@@ -0,0 +1 @@
+/* bgj/workOrder/components/signName/index.wxss */

+ 11 - 0
bgj/workOrder/components/signName/index.wxml

@@ -0,0 +1,11 @@
+<view>
+  <t-button wx:if="{{showBut}}" style="margin-bottom:10px" size="small" bindtap="signName">点击签字</t-button>
+  <t-upload
+    wx:if="{{originFiles.length > 0}}"
+    mediaType="{{['video','image']}}"
+    max="{{originFiles.length}}"
+    files="{{originFiles}}"
+    bind:add="handleAdd"
+    bind:remove="deleteFile"
+  />
+</view>

+ 1 - 1
bgj/workOrder/detail.wxml

@@ -20,7 +20,7 @@
 <view style="height: 20rpx;" />
 <Yl_FunTabs list='{{tabsList}}' showIcon='{{false}}' active='{{tabsActive}}' bind:onChenge="tabsChange">
   <Preview slot='工单信息' list1='{{list1}}' list2='{{list2}}' />
-  <Nodes slot='工序信息' id='Nodes' wx:if="{{detail.nodes}}" nodes='{{detail.nodes}}' sc_workorderid='{{detail.sc_workorderid}}' status="已完结" />
+  <Nodes slot='工序信息' id='Nodes' wx:if="{{detail.nodes}}" nodes='{{detail.nodes}}' sc_workorderid='{{detail.sc_workorderid}}' status="{{detail.status}}" />
   <Record slot='操作记录' id="Record" ownertable='sc_serviceform' ownerid='{{detail.sc_workorderid}}' />
   <Files slot='附件' id="Files" ownertable='sc_serviceform' ownerid='{{detail.sc_workorderid}}' />
   <view style="height: 180rpx;" />

+ 46 - 110
bgj/workOrder/nodeDetail/index.js

@@ -1,6 +1,5 @@
 import api from '../api/api';
 const _Http = getApp().globalData.http;
-let deleteUsers = [];
 Page({
   data: {
     stopClick: '',
@@ -8,8 +7,8 @@ Page({
     timerid: null,
     act_confirm_value: '是',
     form: {
-      "sa_workorderid": 0,
-      "sa_workorder_nodeid": 0,
+      "sc_workorderid": 0,
+      "sc_workorder_nodeid": 0,
       "remarks": "",
       "textcontent": "",
       "confirm_value": "",
@@ -18,19 +17,20 @@ Page({
       "team": [],
       "trainers": [],
       "traintitem": [],
+      "ispasscheck":1,
     },
     bindNormalData: {
-      ownertable: 'sa_workorder_node',
+      ownertable: 'sc_workorder_node',
       ownerid: 0,
       usetype: 'default'
     },
     bindContractData: {
-      "ownertable": "sa_workorder_node",
+      "ownertable": "sc_workorder_node",
       "ownerid": 0,
       "usetype": "contract",
     },
     bindSignNameData: {
-      "ownertable": "sa_workorder_node",
+      "ownertable": "sc_workorder_node",
       "ownerid": 0,
       "usetype": "signature",
     },
@@ -38,7 +38,8 @@ Page({
     additemBadge: {},
     addpersonLabel: '',
     additemLabel: '',
-    activeTab: 0
+    activeTab: 0,
+    selectedTeamUserid: '' // 操作人员radio选中项
   },
   onTabChange(e) {
     const value = parseInt(e.currentTarget.dataset.value)
@@ -48,22 +49,27 @@ Page({
   },
   async nodeDetail() {
     const res = await api._post({
-      "id": "20230209091103",
+      "id": "2026052615161102",
       "version": 1,
       "content": {
         nocache: true,
-        "sa_workorderid": this.data.sa_workorderid,
-        "sa_workorder_nodeid": this.data.sa_workorder_nodeid
+        "sc_workorderid": this.data.sc_workorderid,
+        "sc_workorder_nodeid": this.data.sc_workorder_nodeid
       }
     })
     console.log("详情", res.data)
-    const language = getApp().globalData.Language.getMapText('E-订单') || {}
-    const isAddpersonRequired = res.data[0].workpresetjson.addperson == 11
-    const isAdditemRequired = res.data[0].workpresetjson.additem == 11
+    // 取出详情对象
+    const detail = res.data
+    const language = getApp().globalData.Language.getMapText('工序详情') || {}
+    const isAddpersonRequired = detail.workpresetjson.addperson == 11
+    const isAdditemRequired = detail.workpresetjson.additem == 11
+    
+    // 默认选中第一个人
+    const selectedTeamUserid = (detail.team || []).length > 0 ? detail.team[0].userid : '';
+
     this.setData({
-      mainData: res.data[0],
-      teams: res.data[0].team.map(v => v.userid),
-      titems: res.data[0].titems,
+      mainData: detail,
+      titems: detail.titems || [],
       addpersonBadge: isAddpersonRequired ? {
         count: '*',
         color: '#e34d59',
@@ -78,14 +84,10 @@ Page({
       } : {},
       addpersonLabel: language['培训人员'] || '培训人员',
       additemLabel: language['工单物料'] || '工单物料',
-      activeTab: res.data[0].workpresetjson.addperson !== 0 ? 0 : 1
+      activeTab: detail.workpresetjson.addperson !== 0 ? 0 : 1,
+      selectedTeamUserid
     })
     this.setDefaultData()
-    try {
-      this.selectComponent("#signName").fileData()
-    } catch (error) {
-
-    }
   },
   // 是否确认
   confirmValue(data) {
@@ -203,29 +205,18 @@ Page({
     }
 
     this.data.form.traintitem = this.data.titems
-    this.data.form.sa_workorderid = this.data.sa_workorderid
-    this.data.form.sa_workorder_nodeid = this.data.sa_workorder_nodeid
+    this.data.form.sc_workorderid = this.data.sc_workorderid
+    this.data.form.sc_workorder_nodeid = this.data.sc_workorder_nodeid
     this.data.form.team = []
     const res = await api._post({
       "id": "20230209094203",
       "content": this.data.form
     });
-    if (!this.data.form.team.some(v => v.userid == wx.getStorageSync('userMsg').userid)) {
-      this.setData({
-        teams: [wx.getStorageSync('userMsg').userid]
-      })
-      this.addUser(false);
-    }
     if (e && e.currentTarget && e.currentTarget.dataset.info === 'needBack') {
       wx.navigateBack()
     } else {
       this.nodeDetail()
     }
-    try {
-      this.selectComponent("#signName").fileData()
-    } catch (error) {
-
-    }
   },
   // 获取输入的数据
   setDefaultData() {
@@ -252,15 +243,15 @@ Page({
     this.data.form.trainers.push(data)
     this.data.mainData.trainers = this.data.form.trainers
     this.setData({
-      // form:this.data.form,
       mainData: this.data.mainData
     })
     this.updateNode()
   },
   // 删除人员
   deleteMenber(data) {
+    const teamid = data.detail ? data.detail.sc_workorder_node_teamid : data.currentTarget.dataset.sc_workorder_node_teamid;
     this.data.mainData.trainers = this.data.mainData.trainers.filter(e => {
-      return e.sa_workorder_node_teamid !== data.detail.sa_workorder_node_teamid
+      return e.sc_workorder_node_teamid !== teamid
     })
     this.data.form.trainers = this.data.mainData.trainers
     this.setData({
@@ -281,8 +272,8 @@ Page({
     wx.navigateTo({
       url: `/E-service/serviceBillList/product/select?params=${JSON.stringify({
         "content": {
-          "sa_workorderid": this.data.sa_workorderid,
-          "type": type, // 1档案, 2:申请单
+          "sc_workorderid": this.data.sc_workorderid,
+          "type": type,
           "pageNumber": 1,
           "pageSize": 20,
           "where": {
@@ -315,11 +306,13 @@ Page({
   },
   // 修改物料数量
   qtyChange(data) {
+    const itemid = data.currentTarget.dataset.itemid;
+    const qty = data.detail.value;
     clearTimeout(this.data.timerid)
     this.data.timerid = setTimeout(() => {
       this.data.titems.forEach(e => {
-        if (e.itemid == data.detail.itemid) {
-          e.qty = data.detail.qty
+        if (e.itemid == itemid) {
+          e.qty = qty
         }
       })
 
@@ -331,22 +324,23 @@ Page({
     this.setData({
       timerid: this.data.timerid
     })
-
   },
   // 删除物料
   deleteMaterial(data) {
+    const itemid = data.detail ? data.detail.itemid : data.currentTarget.dataset.itemid;
     this.setData({
       titems: this.data.titems.filter(e => {
-        return e.itemid !== data.detail.itemid
+        return e.itemid !== itemid
       })
     })
-
     this.updateNode()
   },
   /**
    * 生命周期函数--监听页面加载
    */
   onLoad(options) {
+    getApp().globalData.Language.getLanguagePackage(this,'工序详情');
+    console.log("options------",options)
     this.data.bindContractData.ownerid = options.id
     this.data.bindNormalData.ownerid = options.id
     this.data.bindSignNameData.ownerid = options.id
@@ -354,16 +348,12 @@ Page({
       bindContractData: this.data.bindContractData,
       bindNormalData: this.data.bindNormalData,
       bindSignNameData: this.data.bindSignNameData,
-      sa_workorder_nodeid: options.id,
-      sa_workorderid: options.wid,
+      sc_workorder_nodeid: options.id,
+      sc_workorderid: options.wid,
       stopClick: options.class
     })
+    console.log("this.data.bindNormalData---",this.data.bindNormalData)
     this.nodeDetail();
-    let page = getCurrentPages()[getCurrentPages().length - 2];
-    if (page.__route__ == 'E-service/workOrder/detail') this.setData({
-      workers: page.data.detail.team
-    })
-    getApp().globalData.Language.getLanguagePackage(this, 'E-订单');
   },
   onShow() {
     this.setData({
@@ -375,67 +365,13 @@ Page({
       SignName: false
     })
   },
-  /**
-   * 开始添加成员或者取消添加
-   */
-  showTeamDialog() {
+  onTeamRadioChange(e) {
     this.setData({
-      showTeams: !this.data.showTeams
+      selectedTeamUserid: e.detail
     })
   },
-  /**
-   * 选择添加成员
-   */
-  selectTeams(e) {
-    const {
-      userid
-    } = e.currentTarget.dataset.item;
-    let teams = this.data.teams;
-    if (teams.some(v => v == userid)) {
-      teams = teams.filter(v => v != userid)
-      deleteUsers.push(userid);
-    } else {
-      teams.push(userid)
-    }
-    this.setData({
-      teams
-    })
-  },
-  addUser(init = true) {
-    api._post({
-      "id": 20220930103803,
-      "content": {
-        ownertable: 'sa_workorder_node',
-        ownerid: this.data.mainData.sa_workorder_nodeid,
-        "userids": deleteUsers
-      }
-    }).then(s => {
-      console.log("先删除", s)
-      deleteUsers = [];
-      api._post({
-        "id": 20220930103603,
-        "content": {
-          ownertable: 'sa_workorder_node',
-          ownerid: this.data.mainData.sa_workorder_nodeid,
-          "userids": this.data.teams
-        }
-      }).then(res => {
-        console.log("添加成员", res)
-        wx.showToast({
-          title: res.code == '1' ? getApp().globalData.Language.getMapText('修改成功') : res.msg,
-          icon: "none",
-          mask: true
-        });
-        if (res.code == '1') {
-          this.nodeDetail();
-          if (init) this.showTeamDialog();
-        }
-      })
-    })
-
-  },
-
   onUnload() {
-    getCurrentPages().find(v => v.__route__ == 'E-service/workOrder/detail').getDetail()
+    const page = getCurrentPages().find(v => v.__route__ == 'bgj/workOrder/detail');
+    if (page) page.getDetail();
   }
-})
+})

+ 5 - 1
bgj/workOrder/nodeDetail/index.json

@@ -1,5 +1,9 @@
 {
   "usingComponents": {
-
+    "My_upload": "/components/My_upload/index",
+    "van-radio": "@vant/weapp/radio/index",
+    "van-radio-group": "@vant/weapp/radio-group/index",
+    "upload":"../components/autoUpload/upload",
+    "sign-name":"../components/signName/index"
   }
 }

+ 116 - 14
bgj/workOrder/nodeDetail/index.scss

@@ -1,50 +1,119 @@
-
 page {
   background-color: #f1f2f3;
 }
-.panel{
-  padding:10px;
+
+.panel {
+  padding: 20rpx 30rpx;
   background-color: #fff;
-  
+  border-radius: 8rpx;
+  margin-bottom: 10px;
+}
+
+.section-title {
+  margin-bottom: 16rpx;
+  font-family: PingFang SC, PingFang SC;
+  font-weight: 500;
+  font-size: 28rpx;
+  color: #333333;
+  text-align: left;
+  font-style: normal;
+}
+
+.section-text {
+  font-family: PingFang SC, PingFang SC;
+  font-weight: 400;
+  font-size: 28rpx;
+  color: #666666;
+  text-align: left;
+  font-style: normal;
+  text-transform: none;
+}
+
+.section-label {
+  padding-bottom: 16rpx;
+  font-family: PingFang SC, PingFang SC;
+  font-weight: 400;
+  font-size: 28rpx;
+  color: #333333;
+  text-align: left;
+  font-style: normal;
 }
-.mt-10{
+
+.input-box {
+  flex: 1;
+  font-size: 28rpx;
+  border: 2rpx solid #CCCCCC;
+  padding: 26rpx 32rpx;
+  margin-bottom: 16rpx;
+}
+
+.wl-title {
+  font-family: PingFang SC, PingFang SC;
+  font-weight: 500;
+  font-size: 28rpx;
+  color: #333333;
+  text-align: left;
+  font-style: normal;
+}
+
+.wl-btn {
+  width: 176rpx;
+  line-height: 60rpx;
+  background: #3874F6;
+  border-radius: 8rpx;
+  font-family: PingFang SC, PingFang SC;
+  font-weight: 500;
+  font-size: 28rpx;
+  color: #FFFFFF;
+  text-align: center;
+  font-style: normal;
+}
+
+.mt-10 {
   margin-bottom: 10px;
 }
+
 .small {
   font-size: 26rpx;
   color: #333;
   line-height: 25px;
 }
-.mr-5{
+
+.mr-5 {
   margin-right: 5px;
 }
-.mt-5{
+
+.mt-5 {
   margin-bottom: 5px;
 }
-.flex-around{
+
+.flex-around {
   justify-content: space-around;
 }
 
-.stuta {
+.status-tag {
   margin-top: 20rpx;
   display: flex;
 
   .tag {
-      border-radius: 8rpx;
-      padding: 8rpx 12rpx;
-      font-size: 22rpx;
-      color: #fff;
-      margin-right: 10rpx;
+    border-radius: 8rpx;
+    padding: 8rpx 12rpx;
+    font-size: 22rpx;
+    color: #fff;
+    margin-right: 10rpx;
   }
 }
+
 .required-star {
   color: #e34d59;
 }
+
 .custom-tab-header {
   display: flex;
   border-bottom: 1px solid #e7e7e7;
   margin-bottom: 10px;
 }
+
 .custom-tab-item {
   flex: 1;
   text-align: center;
@@ -55,10 +124,12 @@ page {
   cursor: pointer;
   font-weight: bold;
 }
+
 .custom-tab-item.active {
   color: #0052D9;
   font-weight: bold;
 }
+
 .custom-tab-item.active::after {
   content: '';
   position: absolute;
@@ -70,6 +141,37 @@ page {
   background-color: #0052D9;
   border-radius: 2rpx;
 }
+
 .custom-tab-content {
   min-height: 200rpx;
+}
+
+/* 成员/物料列表项 */
+.member-item {
+  display: flex;
+  align-items: center;
+  padding: 16rpx 0;
+  border-bottom: 1rpx solid #f0f0f0;
+}
+
+.member-name {
+  font-size: 28rpx;
+  color: #333;
+}
+
+.member-role {
+  font-size: 24rpx;
+  color: #999;
+  margin-top: 4rpx;
+}
+
+.add-btn-wrap {
+  display: flex;
+  justify-content: center;
+  padding: 20rpx 0;
+}
+
+.team-radio-item {
+  display: block;
+  padding: 12rpx 0;
 }

+ 86 - 153
bgj/workOrder/nodeDetail/index.wxml

@@ -1,178 +1,111 @@
 <view class="{{stopClick}}" style="padding:10px">
-  <card>
-    <view slot="content">
-      {{mainData.workpresetjson.workname}}
-      <view class="stuta">
-        <view class="tag" style="background-color:{{sColors['未完成']}};" wx:if="{{mainData.status == '0'}}">未完成</view>
-        <view class="tag" style="background-color:{{sColors['已完成']}};" wx:if="{{mainData.status == '1'}}">已完成</view>
-        <view class="tag" style="background-color:{{sColors['进行中']}};" wx:if="{{mainData.status == '2'}}">进行中</view>
-        <view class="tag" style="background-color:#0052D9;" wx:if="{{mainData.finishby}}" >{{mainData.finishby}}</view>
-      </view>
-    </view>
-  </card>
-  <view style="margin-bottom: 5px;" class="small"><text class="label">{{language['工序说明']||'工序说明'}}</text></view>
-  <card>
-    <view slot="content">
-      {{mainData.workpresetjson.remarks?mainData.workpresetjson.remarks:language['暂无说明']||'暂无说明'}}
+  <!-- 工序名称 + 状态 -->
+  <view class="panel">
+    {{mainData.sequence}}.{{mainData.workpresetjson.workname}}
+    <view class="status-tag">
+      <view class="tag" style="background-color:{{sColors['待开始']}};" wx:if="{{mainData.status == '0'}}">待开始</view>
+      <view class="tag" style="background-color:{{sColors['已完成']}};" wx:if="{{mainData.status == '1'}}">已完成</view>
+      <view class="tag" style="background-color:{{sColors['进行中']}};" wx:if="{{mainData.status == '2'}}">进行中</view>
+      <view class="tag" style="background-color:#0052D9;" wx:if="{{mainData.finishby}}">{{mainData.finishby}}</view>
     </view>
-  </card>
-  <view style="margin-bottom: 5px;" class="small"><text class="label">{{language['参与人']||'参与人'}}</text></view>
-  <card bindtap="showTeamDialog">
-    <text class="label">{{language['参与人']||'参与人'}}:</text>
-    <view slot="content">
-      <view wx:if="{{mainData.team.length === 0}}">
-        <text class="small">{{language['暂无参与人']||'暂无参与人'}}</text>
-      </view>
-      <view wx:else>
-        <t-tag class="mr-5 mt-5" wx:for="{{mainData.team}}" wx:key="userid" variant="{{item.isleader === 1?'dark':'outline'}}" theme="{{item.isleader === 1?'primary':''}}">{{item.name}}</t-tag>
-      </view>
-    </view>
-  </card>
-  <t-dialog visible="{{showTeams}}" title="{{language['参与成员']||'参与成员'}}" confirm-btn="{{language['确定']||'确定'}}" cancel-btn="{{language['取消']||'取消'}}" bind:confirm="addUser" bind:cancel="showTeamDialog">
-    <view slot="content">
-      <view style="height: 40rpx;" />
-      <view>
-        <block wx:for="{{workers}}" wx:key="userid">
-          <t-tag class="mr-5 mt-5" variant="{{wqp.query(teams,item.userid)?'dark':'outline'}}" theme="primary" data-item="{{item}}" bindtap="selectTeams">{{ item.position?item.position + '-':'' }}{{ item.name }}</t-tag>
-        </block>
-      </view>
+  </view>
+  <!-- 操作说明 -->
+  <view class="panel">
+    <view class="section-title">{{language['操作说明']||'操作说明'}}</view>
+    <view class="section-text"> {{mainData.workpresetjson.remarks ? mainData.workpresetjson.remarks : language['暂无说明']||'暂无说明'}}</view>
+  </view>
+  <!-- 操作人员 -->
+  <view class="panel">
+    <view class="section-title">{{language['操作人员']||'操作人员'}}</view>
+    <view wx:if="{{mainData.team.length === 0}}">
+      <text class="small">{{language['暂无操作人员']||'暂无操作人员'}}</text>
     </view>
-  </t-dialog>
-  <wxs src="../../utils/wxmlQueryPer.wxs" module="wqp" />
-
-  <!-- 是否确认 -->
-  <view wx:if="{{mainData.workpresetjson.confirm}}">
-    <view style="margin-bottom: 5px;" class="small">
-      <text class="label">{{language['是否确认']||'是否确认'}}</text>
-      <text wx:if="{{mainData.workpresetjson.confirm == 11}}" style="color:#e34d59">*</text>
+    <view wx:else>
+      <van-radio-group value="{{selectedTeamUserid}}" bind:change="onTeamRadioChange" direction="horizontal">
+        <van-radio wx:for="{{mainData.team}}" wx:key="userid" name="{{item.userid}}" icon-size="16px" class="team-radio-item">
+          {{item.position ? item.position + '-' : ''}}{{item.name}}
+        </van-radio>
+      </van-radio-group>
     </view>
-    <card>
-      <view style="flex:1" slot="content">
-        <t-tag bindtap="confirmValue" data-item="{{item}}" class="mr-5 mt-5" wx:for="{{mainData.workpresetjson.confirm_options}}" variant="{{item === form.confirm_value?'dark':'outline'}}" theme="{{item === form.confirm_value?'primary':''}}">{{language[item]||item}}</t-tag>
-      </view>
-    </card>
   </view>
   <!-- 上传附件 -->
   <view wx:if="{{mainData.workpresetjson.fileupload !== 0}}">
-    <view style="margin-bottom: 5px;" class="small">
-      <text class="label">{{language['上传附件']||'上传附件'}}</text>
-      <text wx:if="{{mainData.workpresetjson.fileupload == 11}}" style="color:#e34d59">*</text>
-    </view>
-    <card>
-      <view style="flex:1" slot="content">
-        <upload id="fileUpload" bindData="{{bindNormalData}}"></upload>
-        <!-- <image-viewer list="{{list}}"></image-viewer> -->
+    <view class="panel">
+      <view class="section-title">
+        <text wx:if="{{mainData.workpresetjson.fileupload == 11}}" class="required-star">*</text>
+        <text>{{language['上传附件']||'上传附件'}}</text>
       </view>
-    </card>
-  </view>
-  <!-- 文本信息 -->
-  <view wx:if="{{mainData.workpresetjson.textedit !== 0}}">
-    <view style="margin-bottom: 5px;" class="small">
-      <text class="label">{{language['文本信息']||'文本信息'}}</text>
-      <text wx:if="{{mainData.workpresetjson.textedit == 11}}" style="color:#e34d59">*</text>
+      <!-- <Files ownertable="sa_workorder_node" ownerid="{{mainData.sa_workorder_nodeid}}" disabled="{{stopClick != 'stopClick'}}" /> -->
+      <upload id="fileUpload" bindData="{{bindNormalData}}"></upload>
     </view>
-    <card>
-      <view style="flex:1" slot="content">
-        <t-textarea custom-style="padding:0" disabled="{{stopClick == 'stopClick'}}" value="{{form.textcontent}}" t-class="external-class" placeholder="{{language['请输入']||'请输入文字'}}" disableDefaultPadding="{{true}}" bind:blur="textContent" autosize />
-      </view>
-    </card>
   </view>
-  <!-- 上传合同 -->
-  <view wx:if="{{mainData.workpresetjson.contractupload !== 0}}">
-    <view style="margin-bottom: 5px;" class="small">
-      <text class="label">{{language['上传合同']||'上传合同'}}</text>
-      <text wx:if="{{mainData.workpresetjson.contractupload == 11}}" style="color:#e34d59">*</text>
+  <!-- 物料添加 -->
+  <view class="panel" style="display:flex;justify-content: space-between;align-items: center;">
+    <view class="wl-title">
+      {{language['物料添加']||'物料添加'}}
     </view>
-    <card>
-      <view style="flex:1" slot="content">
-        <upload id="contractUpload" source="messageFile" bindData="{{bindContractData}}"></upload>
-      </view>
-    </card>
-  </view>
-  <!-- 是否有偿 -->
-  <view wx:if="{{mainData.workpresetjson.amountpay !== 0}}">
-    <view style="margin-bottom: 5px;" class="small">
-      <text class="label">{{language['是否有偿']||'是否有偿'}}</text>
-      <text wx:if="{{mainData.workpresetjson.amountpay == 11}}" style="color:#e34d59">*</text>
+    <view class="wl-btn">
+      {{language['添加物料']||'添加物料'}}
     </view>
-    <card>
-      <view style="flex:1" slot="content">
-        <t-input default-value="{{form.amount}}" value='{{form.amount||0}}' label="{{language['输入金额']||'输入金额'}}" placeholder="{{language['输入金额']||'输入金额'}}" bind:blur="amountPay" borderless></t-input>
+  </view>
+  <!-- 全景影像 -->
+  <view wx:if="{{mainData.workpresetjson.panorama !== 0}}">
+    <view class="panel">
+      <view class="section-title">
+        <text wx:if="{{mainData.workpresetjson.panorama == 11}}" class="required-star">*</text>
+        <text>{{language['全景影像']||'全景影像'}}</text>
+      </view>
+      <view class="section-label" >
+        {{ language['全景影像链接']||'全景影像链接'}}:
       </view>
-    </card>
+      <input value="{{form.panoramaurl || ''}}" placeholder="{{language['请填写全景影像链接']||'请填写全景影像链接'}}" bind:blur="amountPay" class="input-box" />
+      <view class="section-label">
+        {{ language['全景影像二维码']||'全景影像二维码'}}:
+      </view>
+      <input value="{{form.amount || ''}}" placeholder="{{language['输入金额']||'输入金额'}}" bind:blur="amountPay" class="input-box" />
+    </view>
   </view>
-  <!-- 客户签字 -->
-  <view wx:if="{{mainData.workpresetjson.signature !== 0 && SignName}}">
-    <view style="margin-bottom: 5px;" class="small">
-      <text class="label">{{language['客户签字']||'客户签字'}}</text>
-      <text wx:if="{{mainData.workpresetjson.signature == 11}}" style="color:#e34d59">*</text>
+  <!-- 是否合格 -->
+  <view class="panel" style="display:flex;justify-content: space-between;align-items: center;">
+    <view class="wl-title">
+      <text wx:if="{{mainData.workpresetjson.passcheck == 1}}" class="required-star">*</text>
+      {{language['是否合格']||'是否合格'}}
     </view>
-    <card>
-      <view style="flex:1" slot="content">
-        <!-- <upload id="upload"></upload> -->
-        <sign-name id='signName' bindData="{{bindSignNameData}}"></sign-name>
+    <van-radio-group direction='horizontal' value="{{ form.ispasscheck }}" bind:change="changeIspasscheck">
+      <van-radio icon-size='14px' custom-class='label-class' name="1">{{language['合格']||'合格'}}</van-radio>
+      <van-radio icon-size='14px' custom-class='label-class' name="0">{{language['不合格']||'不合格'}}</van-radio>
+    </van-radio-group>
+    <view wx:if="{{form.ispasscheck== 1}}">
+      <view class="section-label">
+        {{ language['不合格原因']||'不合格原因'}}:
       </view>
-    </card>
+      <input value="{{form.amount || ''}}" placeholder="{{language['请填写不合格原因']||'请填写不合格原因'}}" bind:blur="amountPay" class="input-box" />
+      <view class="section-label">
+        <text class="required-star">*</text>
+        {{ language['上传不合格附件']||'上传不合格附件'}}:
+      </view>
+      <input value="{{form.amount || ''}}" placeholder="{{language['请填写不合格原因']||'请填写不合格原因'}}" bind:blur="amountPay" class="input-box" />
+    </view>
   </view>
 
-  <!-- 物料及人员 -->
-  <view wx:if="{{mainData.workpresetjson.additem !== 0 || mainData.workpresetjson.addperson !== 0}}">
-    <view style="margin-bottom: 5px;" class="small"><text class="label">{{language['物料及人员']||'物料及人员'}}</text></view>
-    <card>
-      <view style="flex:1" slot="content">
-        <view class="custom-tab-header">
-          <view 
-            class="custom-tab-item {{activeTab === 0 ? 'active' : ''}}" 
-            wx:if="{{mainData.workpresetjson.addperson !== 0}}"
-            bindtap="onTabChange"
-            data-value="0"
-          >
-            <text>{{language['培训人员']||'培训人员'}}</text>
-            <text wx:if="{{mainData.workpresetjson.addperson == 11}}" style="color:#e34d59;margin-left:4rpx">*</text>
-          </view>
-          <view 
-            class="custom-tab-item {{activeTab === 1 ? 'active' : ''}}" 
-            wx:if="{{mainData.workpresetjson.additem !== 0}}"
-            bindtap="onTabChange"
-            data-value="1"
-          >
-            <text>{{language['工单物料']||'工单物料'}}</text>
-            <text wx:if="{{mainData.workpresetjson.additem == 11}}" style="color:#e34d59;margin-left:4rpx">*</text>
-          </view>
-        </view>
-        <view class="custom-tab-content">
-          <view wx:if="{{activeTab === 0 && mainData.workpresetjson.addperson !== 0}}">
-            <card wx:for="{{mainData.trainers}}">
-              <menber-card style="flex:1" slot="content" data="{{item}}" bind:delete="deleteMenber"></menber-card>
-            </card>
-            <view class="flex-align-center flex-around panel">
-              <t-button size="extra-small" variant="primary" bind:tap="addTrainers">{{language['添加人员']||'添加人员'}}</t-button>
-            </view>
-          </view>
-          <view wx:if="{{activeTab === 1 && mainData.workpresetjson.additem !== 0}}">
-            <card style="margin-top:10px" wx:for="{{titems}}" wx:key="itemid">
-              <product-card isdelete="{{stopClick != 'stopClick'}}" changeQty="{{stopClick != 'stopClick'}}" style="flex:1" slot="content" data="{{item}}" bind:delete="deleteMaterial" bind:input="qtyChange"></product-card>
-            </card>
-            <view class="flex-align-center flex-around panel">
-              <t-button size="extra-small" variant="primary" bind:tap="addProduct">{{language['添加物料']||'添加物料'}}</t-button>
-            </view>
-          </view>
-        </view>
+  <!-- 客户签名 -->
+  <view wx:if="{{mainData.workpresetjson.signature !== 0 && SignName}}">
+    <view class="panel">
+      <view class="section-title">
+        <text wx:if="{{mainData.workpresetjson.signature == 11}}" class="required-star">*</text>
+        <text>{{language['客户签名']||'客户签名'}}</text>
       </view>
-    </card>
+      <sign-name id='signName' bindData="{{bindSignNameData}}"></sign-name>
+    </view>
   </view>
-
   <!-- 备注 -->
-  <view>
-    <view style="margin-bottom: 5px;" class="small"><text class="label">{{language['备注']||'备注'}}</text></view>
-    <card>
-      <view style="flex:1" slot="content">
-        <t-textarea custom-style="padding:0" disabled="{{stopClick == 'stopClick'}}" value="{{form.remarks}}" t-class="external-class" placeholder="{{language['请输入备注']||'请输入备注'}}" disableDefaultPadding="{{true}}" bind:blur="remarkEdit" autosize />
-      </view>
-    </card>
+  <view class="panel">
+    <view class="section-title">{{language['备注']||'备注'}}</view>
+    <textarea disabled="{{stopClick == 'stopClick'}}" value="{{form.remarks}}" placeholder="{{language['请输入备注']||'请输入备注'}}" bind:blur="remarkEdit" auto-height style="width:100%;min-height:80rpx;padding:10rpx 0;" />
   </view>
+  <!-- 操作按钮 -->
   <view wx:if="{{stopClick != 'stopClick'}}">
-    <t-button style="margin-bottom:10px" theme="primary" size="large" bind:tap="confirmBill" block>{{language['确认完成']||'确认完成'}}</t-button>
-    <t-button theme="primary" size="large" bind:tap="saveNode" data-info="needBack" block>{{language['保存']||'保存'}}</t-button>
+    <van-button type="primary" size="large" bind:tap="saveNode" data-info="needBack" block>{{language['保存']||'保存'}}</van-button>
+    <van-button style="margin-bottom:10px" type="primary" size="large" bind:tap="confirmBill" block>{{language['确认完成']||'确认完成'}}</van-button>
   </view>
 </view>

+ 1 - 1
bgj/workOrder/nodes/index.js

@@ -49,7 +49,7 @@ Component({
       _Http.data = item;
       let isleader = true;
       wx.navigateTo({
-        url: (isleader ? '/bgj/workOrder/nodeDetail/index?id=' : '/bgj/workOrder/nodeDetail/index?class=stopClick&id=') + item.sa_workorder_nodeid + '&wid=' + item.sc_workorderid + (this.data.status != '进行中' ? '&class=stopClick' : '')
+        url: (isleader ? '/bgj/workOrder/nodeDetail/index?id=' : '/bgj/workOrder/nodeDetail/index?class=stopClick&id=') + item.sc_workorder_nodeid + '&wid=' + item.sc_workorderid + (this.data.status != '进行中' ? '&class=stopClick' : '')
       })
     },
   }

+ 3 - 3
bgj/workOrder/nodes/index.wxml

@@ -1,16 +1,16 @@
 <navigator url="#" class="{{prefix ? 'node child' : 'node'}}" hover-class="node-hover" hover-start-time="50" hover-stay-time="100" wx:for="{{nodes}}" key="sc_workorder_nodeid" data-item="{{item}}" catch:tap="toWork">
 	<view class="number">
-		{{ (prefix ? prefix + '-' : '') + item.rowindex }}.
+		{{ (prefix ? prefix + '-' : '') + (index + 1) }}.
 	</view>
 	<view style="flex: 1;">
 		<view class="label">
 			{{ item.workpresetjson.workname }}
 		</view>
-		<Process wx:if="{{!prefix && item.child.length}}" status='{{status}}' nodes="{{item.child}}" prefix="{{(prefix ? prefix + '-' : '') + item.rowindex}}" />
+		<Nodes wx:if="{{!prefix && item.child.length}}" status='{{status}}' nodes="{{item.child}}" prefix="{{(prefix ? prefix + '-' : '') + (index + 1)}}" />
 		<block wx:else>
 			<Yl_Files id="Yl_Files" attinfos='{{item.attinfos}}' />
 			<view class="stuta">
-				<view class="tag" style="background-color:{{sColors['未完成']}};" wx:if="{{item.status == '0'}}">未完成</view>
+				<view class="tag"  style="background-color:{{sColors['待开始']}};" wx:if="{{item.status == '0'}}">待开始</view>
 				<view class="tag" style="background-color:{{sColors['已完成']}};" wx:if="{{item.status == '1'}}">已完成</view>
 				<view class="tag" style="background-color:{{sColors['进行中']}};" wx:if="{{item.status == '2'}}">进行中</view>
 			</view>