king
2020-03-21 4a18149d7ca9a0ea3ad569297f34e928c59e2025
src/tabviews/zshare/actionList/index.jsx
@@ -225,7 +225,61 @@
      formdata[_data.key] = _data.value
    })
    if (!btn.verify || !btn.verify.Template || !btn.verify.linkUrl) {
    // btn.verify.printFunc = `
    //   let _data = data[0]
    //   _data = JSON.parse(_data)
    //   let socket = new WebSocket(_data.wsaddr)
    //   // 打开Socket
    //   socket.onopen = () => {
    //     notification.success({
    //       top: 92,
    //       message: '打印请求已发出。',
    //       duration: 2
    //     })
    //     socket.send(JSON.stringify(_data.data))
    //   }
    //   // 监听消息
    //   socket.onmessage = (event) => {
    //     let data = ''
    //     if (event.data) {
    //       try {
    //         data = JSON.parse(event.data)
    //       } catch {
    //         notification.warning({
    //           top: 92,
    //           message: event.data,
    //           duration: 10
    //         })
    //         data = ''
    //       }
    //     }
    //     if (data && data.message && !data.status) {
    //       notification.warning({
    //         top: 92,
    //         message: data.message,
    //         duration: 10
    //       })
    //     }
    //   }
    //   socket.onerror = () => {
    //     notification.warning({
    //       top: 92,
    //       message: '无法连接到:' + _data.wsaddr,
    //       duration: 10
    //     })
    //   }
    // `
    if (
      !btn.verify ||
      (btn.verify.printMode === 'normal' && (!btn.verify.Template || !btn.verify.linkUrl)) ||
      (btn.verify.printMode === 'custom' && !btn.verify.printFunc)
    ) {
      notification.warning({
        top: 92,
        message: '请完善打印验证信息!',
@@ -235,7 +289,7 @@
    }
    let printlist = []
    let templates = [btn.verify.Template]
    let templates = [btn.verify.Template || '']
    let printCount = 1
    if (formdata.printCount && typeof(formdata.printCount) === 'number' && formdata.printCount >= 1) {
@@ -263,34 +317,45 @@
            }
          })
        }
        resolve('getTemp')
        if (btn.verify.printMode === 'custom') {
          this.execCustomPrint(btn, printlist)
        } else {
          resolve('getTemp')
        }
      } else {
        this.getprintdata(btn, data, formdata, formlist).then(result => {
          result.list.forEach(item => {
            let _cell = item.data
            if (_cell.TemplateID) {
              templates.push(_cell.TemplateID)
            } else {
              _cell.TemplateID = btn.verify.Template
            }
            let _count = printCount
            if (item.count && typeof(item.count) === 'number' && item.count >= 1) {
              _count = item.count
            }
            for (let i = 0; i < _count; i++) {
              printlist.push({...formdata, ..._cell})
            }
          })
          if (result.next === 'getTemp') {
            result.list.forEach(item => {
              let _cell = item.data
              if (_cell.TemplateID) {
                templates.push(_cell.TemplateID)
              } else {
                _cell.TemplateID = btn.verify.Template
              }
              let _count = printCount
              if (item.count && typeof(item.count) === 'number' && item.count >= 1) {
                _count = item.count
              }
              for (let i = 0; i < _count; i++) {
                printlist.push({...formdata, ..._cell})
              }
            })
          } else if (result.next === 'customPrint') {
            this.execCustomPrint(btn, result.list)
          }
          
          resolve(result.next)
        })
      }
    }).then(res => {
      // 获取打印模板 getTemp
      if (!res) return
      if (res !== 'getTemp') return false
      templates = Array.from(new Set(templates)) // 去重
@@ -345,6 +410,18 @@
        this.execError(errorMsg, btn)
      }
    })
  }
  execCustomPrint = (btn, printdata) => {
    this.setState({loadingUuid: ''})
    try {
      // eslint-disable-next-line
      let func = new Function('data', 'notification', btn.verify.printFunc)  // 最后一个参数当函数体来执行,前面的参数当成函数体的参数。
      func(printdata, notification)
    } catch (e) {
      console.warn(e)
    }
  }
  getprintdata = (btn, data, formdata, formlist) => {
@@ -411,15 +488,20 @@
            let errorMsg = ''
            result.forEach(res => {
              if (res.status) {
                res.data.forEach(_item => {
                  _list.push({data: _item, count: res.printCount})
                })
                if (btn.verify.printMode === 'custom') {
                  // _list.push(res.data)
                  _list.push('{"status": true,"message": "","ErrCode": "","ErrMesg": "", "wsaddr": "ws://127.0.0.1:13529","wstype": "local/server","data": [{"cmd": "print","requestID": "202003091036391803ACEAAE08DF7454599AEA243D8959F","version": "1.0","task": {"taskID": "202003091036391803ACEAAE08DF7454599AEA243D8959F","preview": false,"printer": "Microsoft Print To PDF", "documents": [{"documentID": "05512003090002A243D8959F","contents": [{"data": {"Bill": "05512003090002","ReturnProduct": ""},"templateURL": "http://css.positecgroup.com/template/warespaceprint01/2020010810525789956968_U000000001.srt","ectype": "jdpop"}]}]}}   ]}')
                } else {
                  res.data.forEach(_item => {
                    _list.push({data: _item, count: res.printCount})
                  })
                }
              } else {
                errorMsg = res
              }
            })
            if (!errorMsg) {
              resolve({next: 'getTemp', list: _list})
              resolve({next: btn.verify.printMode === 'custom' ? 'customPrint' : 'getTemp', list: _list})
            } else {
              this.execError(errorMsg, btn)
              resolve({next: false, list: _list})
@@ -507,13 +589,17 @@
        return Api.genericInterface(_callbackparam)
      } else if (response.status) {
        response.data.forEach(_item => {
          _list.push({data: _item, count: response.printCount})
        })
        if (btn.verify.printMode === 'custom') {
          _list.push(response.data)
        } else {
          response.data.forEach(_item => {
            _list.push({data: _item, count: response.printCount})
          })
        }
        // 一次请求成功,进行下一项请求
        if (params.length === 0) {
          _resolve({next: 'getTemp', list: _list})
          _resolve({next: btn.verify.printMode === 'custom' ? 'customPrint' : 'getTemp', list: _list})
        } else {
          this.printOuterLoopRequest(params, btn, _list, _resolve)
        }
@@ -525,13 +611,17 @@
      if (!response) return
      if (response.status) {
        response.data.forEach(_item => {
          _list.push({data: _item, count: response.printCount})
        })
        if (btn.verify.printMode === 'custom') {
          _list.push(response.data)
        } else {
          response.data.forEach(_item => {
            _list.push({data: _item, count: response.printCount})
          })
        }
        // 一次请求成功,进行下一项请求
        if (params.length === 0) {
          _resolve({next: 'getTemp', list: _list})
          _resolve({next: btn.verify.printMode === 'custom' ? 'customPrint' : 'getTemp', list: _list})
        } else {
          this.printOuterLoopRequest(params, btn, _list, _resolve)
        }
@@ -550,12 +640,16 @@
    Api.genericInterface(param).then(res => {
      if (res.status) {
        res.data.forEach(_item => {
          _list.push({data: _item, count: res.printCount})
        })
        if (btn.verify.printMode === 'custom') {
          _list.push(res.data)
        } else {
          res.data.forEach(_item => {
            _list.push({data: _item, count: res.printCount})
          })
        }
        if (params.length === 0) {
          _resolve({next: 'getTemp', list: _list})
          _resolve({next: btn.verify.printMode === 'custom' ? 'customPrint' : 'getTemp', list: _list})
        } else {
          this.printInnerLoopRequest(params, btn, _list, _resolve)
        }
@@ -1353,15 +1447,6 @@
      })
    } else if (res && res.ErrCode === '-1') { // 完成后不提示
    // } else if (res.Relogin === 'true') { // 切换用户功能
    //   sessionStorage.setItem('avatar', res.icon || '')
    //   sessionStorage.setItem('UserID', res.UserID)
    //   sessionStorage.setItem('SessionUid', Utils.getuuid())
    //   sessionStorage.setItem('LoginUID', res.LoginUID)
    //   sessionStorage.setItem('User_Name', res.UserName)
    //   window.location.reload()
    //   return
    }
    
    if (btn.OpenType === 'pop' && btn.setting && btn.setting.finish !== 'unclose') {