riku
2026-03-05 9465dc404f7e7cd56100e4859ee0946a3fef7b09
pages/mLedger/ledgerupload/ledgerupload.js
@@ -1,75 +1,183 @@
// pages/mLedger/ledgerupload/ledgerupload.js
import bUploadLedger from '../behaviors/bUploadLedger'
import ledgerservice from "../../../service/ledgerservice"
import moment from '../../../utils/moment.min'
import bLoadingToast from '../../../base/behaviors/bLoadingToast'
import bUploadLedger from '../behaviors/bUploadLedger';
import bUploadSelfPatrol from '../behaviors/bUploadSelfPatrol';
import ledgerservice from '../../../service/ledgerservice';
import selfpatrolservice from '../../../service/selfpatrolservice';
import moment from '../../../utils/moment.min';
import bLoadingToast from '../../../base/behaviors/bLoadingToast';
const app = getApp()
const app = getApp();
Page({
  behaviors: [bUploadLedger, bLoadingToast],
  behaviors: [bUploadLedger, bLoadingToast, bUploadSelfPatrol],
  /**
   * 页面的初始数据
   */
  data: {
    barTitle: '上传台账',
    imgFiles: [],
    remark: '',
    remarkDisable: false,
    previewImageUrls:[],
    previewImageUrls: [],
    previewCurrent: 0,
    showPreview: false,
    // 上传模式,0:普通上传;1:不涉及;2:延用复制历史记录
    uploadMode: 0,
    // 类型,0:台账和自巡查;1:应急自巡查
    type: 0,
    // 历史最新记录
    lastLedger: undefined,
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    var that = this
    this.getOpenerEventChannel().on('acceptDataFromOpenerPage', function(data) {
      that.setData({
        ledger: data.ledger,
        indexGroup: data.indexGroup
      })
      if (data.barTitle) {
    var that = this;
    this.getOpenerEventChannel().on(
      'acceptDataFromOpenerPage',
      function (data) {
        data.ledger.description = data.ledger.description?.replaceAll(
          '\\n',
          '\n',
        );
        that.setData({
          ledger: data.ledger,
          time: moment(data.ledger.updateDate).format('YYYY年MM月DD日'),
          indexGroup: data.indexGroup,
          type: data.type,
          taskId: data.taskId,
          reUpload: data.reUpload,
          detail: data.detail,
        });
        if (data.barTitle) {
          that.data.barTitle = data.barTitle;
        }
        wx.setNavigationBarTitle({
          title: data.barTitle,
        })
      }
          title: that.data.barTitle,
        });
      that.checkStatus()
    })
        that.checkStatus();
        // 对于可复制的并且不是重传状态的台账,获取最新的历史记录用于复制
        if (data.ledger.copy && !data.reUpload) {
          that.getLatestLedger();
        }
      },
    );
    this.setData({
      loadingText: '上传中',
      loadCompleteText: '上传完成',
      timeoutText: '上传超时',
    });
  },
  /**
   * 判断当前台账状态,如果有上传记录则显示记录
   */
  checkStatus() {
    if (this.data.ledger.path1) {
      let imgFiles = this.data.ledger.path1
      let remark = this.data.ledger.remark1 == null ? '' : this.data.ledger.remark1
      let remarkDisable = true
      this.setData({imgFiles, remark, remarkDisable})
    }else if (this.data.ledger.upLoad) {
      var that = this
      var userId = app.globalData.accessToken.userId
      var typeId = this.data.ledger.ledgerSubTypeId
      var sceneType = app.globalData.userInfo.extension2
      var time = moment().format('YYYY-MM-DD')
      ledgerservice.getLedgerDetail(userId, typeId, sceneType, time, {
        success (res) {
          if (res.length > 0) {
            let detail = res[0]
            if (detail.upLoad) {
              let imgFiles = detail.path1
              let remark = detail.remark1 == null ? '' : detail.remark1
              let remarkDisable = true
              that.setData({imgFiles, remark, remarkDisable})
    if (this.data.reUpload) {
      //do nothing
      return;
    } else if (this.data.ledger._files) {
      let imgFiles = this.data.ledger._files;
      let remark = this.data.remark;
      if (this.data.ledger.remark1) remark = this.data.ledger.remark1;
      let remarkDisable = true;
      this.setData({
        imgFiles,
        remark,
        remarkDisable,
      });
    } else if (this.data.ledger.upLoad) {
      var that = this;
      var userId = app.globalData.accessToken.userId;
      var typeId = this.data.ledger.ledgerSubTypeId;
      var taskId = this.data.taskId;
      var sceneType = app.globalData.userInfo.extension2;
      var time = moment().format('YYYY-MM-DD');
      if (this.data.type == 0) {
        ledgerservice.getLedgerDetail(userId, typeId, sceneType, time, {
          success(res) {
            if (res.length > 0) {
              let detail = res[0];
              if (detail.upLoad) {
                let imgFiles = detail._files;
                let remark = detail.remark1 ? detail.remark1 : '';
                let remarkDisable = true;
                that.setData({
                  imgFiles,
                  remark,
                  remarkDisable,
                  detail,
                });
              }
            }
          }
          },
        });
      } else {
        selfpatrolservice.getSelfPatrolDetail(userId, typeId, taskId, {
          success(res) {
            if (res.success) {
              let detail = res.data;
              if (detail.upLoad) {
                let imgFiles = detail._files;
                let remark = detail.remark1 ? detail.remark1 : '';
                let remarkDisable = true;
                that.setData({
                  imgFiles,
                  remark,
                  remarkDisable,
                  detail,
                });
              }
            }
          },
        });
      }
    }
  },
  // 获取最新一次的历史记录,用于延用复制功能
  getLatestLedger() {
    var userId = app.globalData.accessToken.userId;
    var typeId = this.data.ledger.ledgerSubTypeId;
    var sceneType = app.globalData.userInfo.extension2;
    this.setData({
      latestLedgerLoading: true,
    });
    ledgerservice.getLedgerDetail(userId, typeId, sceneType, null, {
      success: res => {
        if (res.length > 0) {
          const ledger = res[0];
          this.setData({
            lastLedger: {
              ...ledger,
              _updateTimeStr: moment(ledger.updateDate).format(
                'YYYY年MM月DD日',
              ),
            },
          });
        }
      })
      },
      complete: () => {
        this.setData({
          latestLedgerLoading: false,
        });
      },
    });
  },
  uploadFileFail(e) {
    const { type, index } = e.detail;
    if (type == 1) {
      wx.showToast({
        title: `文件过大`,
        icon: 'error',
      });
    }
  },
@@ -77,14 +185,14 @@
  onSubmit: function () {
    if (this.data.imgFiles.length == 0) {
      wx.showToast({
        title: '请至少选择一张图片',
        title: '请至少选择一个文件',
        icon: 'none',
      })
      });
    } else {
      this.setData({
        showDialog: true,
        uploadMode: 0
      })
        uploadMode: 0,
      });
    }
  },
@@ -92,42 +200,116 @@
  onSubmitNoLedger() {
    this.setData({
      showDialog: true,
      uploadMode: 1
    })
      uploadMode: 1,
    });
  },
  // 延用复制台账
  onCopyLedger() {
    if (this.data.latestLedgerLoading) {
      return;
    } else if (this.data.lastLedger == undefined) {
      wx.showToast({
        title: '没有可延用的记录',
        icon: 'none',
      });
    } else {
      this.setData({
        showDialog: true,
        uploadMode: 2,
      });
    }
  },
  //提交台账
  submitLedger() {
    this.setData({
      showDialog: false,
    })
    if (this.uploadMode == 0) {
      this._uploadLedger()
    } else {
      this._uploadNoLedger()
    });
    switch (this.data.uploadMode) {
      case 0:
        if (this.data.type == 0) {
          this._uploadLedger();
        } else {
          this._uploadSelfPatrol();
        }
        break;
      case 1:
        if (this.data.type == 0) {
          this._uploadNoLedger();
        } else {
          this._uploadNoSelfPatrol();
        }
        break;
      case 2:
        if (this.data.type == 0) {
          const { lastLedger } = this.data;
          const copyLedgerList = [
            {
              subTypeId: lastLedger.ledgerSubTypeId,
              time: `${lastLedger.year}-${lastLedger.month}`,
            },
          ];
          this._uploadCopyLedger(copyLedgerList);
        }
        break;
      default:
        break;
    }
  },
  // 跳转重传界面
  reUpload() {
    wx.navigateTo({
      url: '/pages/mLedger/ledgerupload/ledgerupload',
      success: res => {
        res.eventChannel.emit('acceptDataFromOpenerPage', {
          ledger: this.data.ledger,
          detail: this.data.detail,
          type: this.data.type,
          indexGroup: this.data.indexGroup,
          taskId: this.data.taskId,
          barTitle: `重新${this.data.barTitle}`,
          reUpload: true,
        });
      },
      events: {
        uploadOver: data => {
          this.checkStatus();
        },
      },
    });
  },
  //台账提交成功后
  _success(res) {
    this.getOpenerEventChannel().emit('uploadOver', {
      indexGroup: this.data.indexGroup
    })
      indexGroup: this.data.indexGroup,
    });
    wx.navigateBack({
      delta: 1,
    })
    });
  },
  //图片放大预览
  previewImage(e) {
    const {
      index
    } = e.currentTarget.dataset;
    const previewImageUrls = this.data.imgFiles;
    const { index } = e.currentTarget.dataset;
    const previewImageUrls = this.data.imgFiles
      .filter(f => f.type == 'image')
      .map(f => f.url);
    this.setData({
      previewImageUrls,
      previewCurrent: index,
      showPreview: true
      showPreview: true,
    });
  },
})
  // 台账备注监听
  onRemarkChange(e) {
    const { value } = e.detail;
    this.setData({
      remark: value,
    });
  },
});