|  | @@ -1,33 +1,105 @@
 | 
	
		
			
				|  |  |  <template>
 | 
	
		
			
				|  |  |    <div>
 | 
	
		
			
				|  |  | -    <el-dialog
 | 
	
		
			
				|  |  | -      title="任务单送达"
 | 
	
		
			
				|  |  | -      width="50%"
 | 
	
		
			
				|  |  | -      :close-on-click-modal="false"
 | 
	
		
			
				|  |  | -      :visible.sync="visible">
 | 
	
		
			
				|  |  | +      <div class="my-title">送达</div>
 | 
	
		
			
				|  |  |        <!-- 表单 -->
 | 
	
		
			
				|  |  |        <el-form :model="dataForm" :rules="dataRule" ref="dataForm" label-width="auto">
 | 
	
		
			
				|  |  | -        <el-row class="my-row">
 | 
	
		
			
				|  |  | -          <el-col>
 | 
	
		
			
				|  |  | -            <el-form-item label="送达数量" prop="cnt">
 | 
	
		
			
				|  |  | -              <el-input-number v-model="dataForm.cnt" :min="0" :max="Number(max)"></el-input-number>
 | 
	
		
			
				|  |  | -            </el-form-item>
 | 
	
		
			
				|  |  | -          </el-col>
 | 
	
		
			
				|  |  | -        </el-row>
 | 
	
		
			
				|  |  | -        <el-row class="my-row">
 | 
	
		
			
				|  |  | -          <upload-component :display="false" :title="'签收附件'" :accept="'*'" :file-obj-list="fileList" @uploadSuccess="uploadSuccess"/>
 | 
	
		
			
				|  |  | -        </el-row>
 | 
	
		
			
				|  |  | +        <el-table :data="dataForm.list" border>
 | 
	
		
			
				|  |  | +          <el-table-column
 | 
	
		
			
				|  |  | +            label="序号"
 | 
	
		
			
				|  |  | +            type="index"
 | 
	
		
			
				|  |  | +            width="50"
 | 
	
		
			
				|  |  | +            align="center">
 | 
	
		
			
				|  |  | +          </el-table-column>
 | 
	
		
			
				|  |  | +          <el-table-column
 | 
	
		
			
				|  |  | +            prop="productName"
 | 
	
		
			
				|  |  | +            header-align="center"
 | 
	
		
			
				|  |  | +            align="center"
 | 
	
		
			
				|  |  | +            min-width="140"
 | 
	
		
			
				|  |  | +            :show-tooltip-when-overflow="true"
 | 
	
		
			
				|  |  | +            label="名称">
 | 
	
		
			
				|  |  | +          </el-table-column>
 | 
	
		
			
				|  |  | +          <el-table-column
 | 
	
		
			
				|  |  | +            prop="productSpec"
 | 
	
		
			
				|  |  | +            header-align="center"
 | 
	
		
			
				|  |  | +            align="center"
 | 
	
		
			
				|  |  | +            min-width="140"
 | 
	
		
			
				|  |  | +            :show-tooltip-when-overflow="true"
 | 
	
		
			
				|  |  | +            label="型号/规格">
 | 
	
		
			
				|  |  | +          </el-table-column>
 | 
	
		
			
				|  |  | +          <el-table-column
 | 
	
		
			
				|  |  | +            prop="productNumber"
 | 
	
		
			
				|  |  | +            header-align="center"
 | 
	
		
			
				|  |  | +            align="center"
 | 
	
		
			
				|  |  | +            min-width="140"
 | 
	
		
			
				|  |  | +            :show-tooltip-when-overflow="true"
 | 
	
		
			
				|  |  | +            label="编号">
 | 
	
		
			
				|  |  | +          </el-table-column>
 | 
	
		
			
				|  |  | +          <el-table-column
 | 
	
		
			
				|  |  | +            prop="batchNumber"
 | 
	
		
			
				|  |  | +            header-align="center"
 | 
	
		
			
				|  |  | +            align="center"
 | 
	
		
			
				|  |  | +            min-width="140"
 | 
	
		
			
				|  |  | +            :show-tooltip-when-overflow="true"
 | 
	
		
			
				|  |  | +            label="批次号">
 | 
	
		
			
				|  |  | +          </el-table-column>
 | 
	
		
			
				|  |  | +          <el-table-column
 | 
	
		
			
				|  |  | +            prop="deliverCnt"
 | 
	
		
			
				|  |  | +            header-align="center"
 | 
	
		
			
				|  |  | +            align="center"
 | 
	
		
			
				|  |  | +            min-width="140"
 | 
	
		
			
				|  |  | +            :show-tooltip-when-overflow="true"
 | 
	
		
			
				|  |  | +            label="数量">
 | 
	
		
			
				|  |  | +          </el-table-column>
 | 
	
		
			
				|  |  | +          <el-table-column
 | 
	
		
			
				|  |  | +            prop="price"
 | 
	
		
			
				|  |  | +            header-align="center"
 | 
	
		
			
				|  |  | +            align="center"
 | 
	
		
			
				|  |  | +            min-width="140"
 | 
	
		
			
				|  |  | +            :show-tooltip-when-overflow="true"
 | 
	
		
			
				|  |  | +            label="单价">
 | 
	
		
			
				|  |  | +          </el-table-column>
 | 
	
		
			
				|  |  | +          <el-table-column
 | 
	
		
			
				|  |  | +            prop="amount"
 | 
	
		
			
				|  |  | +            header-align="center"
 | 
	
		
			
				|  |  | +            align="center"
 | 
	
		
			
				|  |  | +            min-width="140"
 | 
	
		
			
				|  |  | +            :show-tooltip-when-overflow="true"
 | 
	
		
			
				|  |  | +            label="总价">
 | 
	
		
			
				|  |  | +          </el-table-column>
 | 
	
		
			
				|  |  | +          <el-table-column
 | 
	
		
			
				|  |  | +            prop="notes"
 | 
	
		
			
				|  |  | +            header-align="center"
 | 
	
		
			
				|  |  | +            align="center"
 | 
	
		
			
				|  |  | +            min-width="140"
 | 
	
		
			
				|  |  | +            :show-tooltip-when-overflow="true"
 | 
	
		
			
				|  |  | +            label="备注">
 | 
	
		
			
				|  |  | +          </el-table-column>
 | 
	
		
			
				|  |  | +          <el-table-column
 | 
	
		
			
				|  |  | +            fixed="right"
 | 
	
		
			
				|  |  | +            prop="arriveCnt"
 | 
	
		
			
				|  |  | +            header-align="center"
 | 
	
		
			
				|  |  | +            align="center"
 | 
	
		
			
				|  |  | +            min-width="140"
 | 
	
		
			
				|  |  | +            :show-tooltip-when-overflow="true"
 | 
	
		
			
				|  |  | +            label="送达数量">
 | 
	
		
			
				|  |  | +            <template slot-scope="scope">
 | 
	
		
			
				|  |  | +              <el-input-number v-model="scope.row.arriveCnt" size="mini"></el-input-number>
 | 
	
		
			
				|  |  | +            </template>
 | 
	
		
			
				|  |  | +          </el-table-column>
 | 
	
		
			
				|  |  | +        </el-table>
 | 
	
		
			
				|  |  | +        <el-form-item label="签收附件" prop="attachList">
 | 
	
		
			
				|  |  | +            <upload-component :accept="'*'" v-model="dataForm.attachList" />
 | 
	
		
			
				|  |  | +          </el-form-item>
 | 
	
		
			
				|  |  |        </el-form>
 | 
	
		
			
				|  |  | -      <span slot="footer">
 | 
	
		
			
				|  |  | -          <el-button @click="onChose">取消</el-button>
 | 
	
		
			
				|  |  | -          <el-button type="primary" @click="dataFormSubmit()" v-reClick>确定</el-button>
 | 
	
		
			
				|  |  | +      <span slot="footer" class="dialog-footer">
 | 
	
		
			
				|  |  | +        <el-button @click="onChose">取消</el-button>
 | 
	
		
			
				|  |  | +        <el-button type="primary" @click="dataFormSubmit()" v-reClick>确定</el-button>
 | 
	
		
			
				|  |  |        </span>
 | 
	
		
			
				|  |  | -    </el-dialog>
 | 
	
		
			
				|  |  |    </div>
 | 
	
		
			
				|  |  |  </template>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  <script>
 | 
	
		
			
				|  |  | -  import UploadComponent from '../common/upload-component'
 | 
	
		
			
				|  |  | +  import UploadComponent from '../common/upload-component-v2'
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  export default {
 | 
	
		
			
				|  |  |      name: 'dispatch-arrived',
 | 
	
	
		
			
				|  | @@ -35,11 +107,15 @@ export default {
 | 
	
		
			
				|  |  |      data () {
 | 
	
		
			
				|  |  |        return {
 | 
	
		
			
				|  |  |          visible: false,
 | 
	
		
			
				|  |  | +        id: 0,
 | 
	
		
			
				|  |  |          fileList: [],
 | 
	
		
			
				|  |  | -        dataForm: {},
 | 
	
		
			
				|  |  | +        dataForm: {
 | 
	
		
			
				|  |  | +          list:[],
 | 
	
		
			
				|  |  | +          attachList:[]
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  |          max: 0,
 | 
	
		
			
				|  |  |          dataRule: {
 | 
	
		
			
				|  |  | -          cnt: [{ required: true, message: '请输入送达数量', trigger: 'change' }]
 | 
	
		
			
				|  |  | +          attachList: [{ required: true, message: '请上传签收附件', trigger: 'blur' }]
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |      },
 | 
	
	
		
			
				|  | @@ -48,14 +124,22 @@ export default {
 | 
	
		
			
				|  |  |          this.visible = false
 | 
	
		
			
				|  |  |          this.$emit('onChose')
 | 
	
		
			
				|  |  |        },
 | 
	
		
			
				|  |  | -      async init (deliverId, max) {
 | 
	
		
			
				|  |  | -        if (!deliverId) return
 | 
	
		
			
				|  |  | -        this.max = max
 | 
	
		
			
				|  |  | -        this.fileList = []
 | 
	
		
			
				|  |  | -        this.dataForm = {
 | 
	
		
			
				|  |  | -          deliverId: deliverId
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        this.visible = true
 | 
	
		
			
				|  |  | +      async init (id) {
 | 
	
		
			
				|  |  | +        this.id = id
 | 
	
		
			
				|  |  | +        this.getDetails()
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      getDetails () {
 | 
	
		
			
				|  |  | +        this.$http({
 | 
	
		
			
				|  |  | +            url: this.$http.adornUrl(`/biz-service/deliver/info/${this.id}`),
 | 
	
		
			
				|  |  | +            method: 'get',
 | 
	
		
			
				|  |  | +          }).then(({data}) => {
 | 
	
		
			
				|  |  | +            if (data && data.code === '200') {
 | 
	
		
			
				|  |  | +                this.dataForm.list = data.data
 | 
	
		
			
				|  |  | +                this.dataForm.list.map(t => t.arriveCnt = t.deliverCnt)
 | 
	
		
			
				|  |  | +            } else {
 | 
	
		
			
				|  |  | +                this.$message.error(data.msg)
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +          })
 | 
	
		
			
				|  |  |        },
 | 
	
		
			
				|  |  |        uploadSuccess (fileList) {
 | 
	
		
			
				|  |  |          this.fileList = fileList
 | 
	
	
		
			
				|  | @@ -67,24 +151,26 @@ export default {
 | 
	
		
			
				|  |  |        dataFormSubmit () {
 | 
	
		
			
				|  |  |          this.$refs['dataForm'].validate((valid) => {
 | 
	
		
			
				|  |  |            if (valid) {
 | 
	
		
			
				|  |  | -            // 附件检查
 | 
	
		
			
				|  |  | -            let fList = this.fileList
 | 
	
		
			
				|  |  | -            if (fList.length > 0) {
 | 
	
		
			
				|  |  | -              this.dataForm.attachList = []
 | 
	
		
			
				|  |  | -              for (let i = 0; i < fList.length; i++) {
 | 
	
		
			
				|  |  | -                this.dataForm.attachList.push({
 | 
	
		
			
				|  |  | -                  fileName: fList[i].name,
 | 
	
		
			
				|  |  | -                  url: fList[i].url
 | 
	
		
			
				|  |  | -                })
 | 
	
		
			
				|  |  | -              }
 | 
	
		
			
				|  |  | -            } else {
 | 
	
		
			
				|  |  | -              this.$message.error('请上传文件')
 | 
	
		
			
				|  |  | -              return
 | 
	
		
			
				|  |  | +            let submitData = this.dataForm.list.map(t => ({
 | 
	
		
			
				|  |  | +              arriveCnt: t.arriveCnt,
 | 
	
		
			
				|  |  | +              deliverId: t.deliverId,
 | 
	
		
			
				|  |  | +              contractId: t.contractId
 | 
	
		
			
				|  |  | +            }))
 | 
	
		
			
				|  |  | +            let attachList = []
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            for (let i = 0; i < this.dataForm.attachList.length; i++) {
 | 
	
		
			
				|  |  | +              attachList.push({
 | 
	
		
			
				|  |  | +                fileName: this.dataForm.attachList[i].name,
 | 
	
		
			
				|  |  | +                url: this.dataForm.attachList[i].url
 | 
	
		
			
				|  |  | +              })
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            submitData.map(t => t.attachList = attachList)
 | 
	
		
			
				|  |  | +   
 | 
	
		
			
				|  |  |              this.$http({
 | 
	
		
			
				|  |  |                url: this.$http.adornUrl(`/biz-service/deliver/arrive`),
 | 
	
		
			
				|  |  |                method: 'post',
 | 
	
		
			
				|  |  | -              data: this.$http.adornData({...this.dataForm})
 | 
	
		
			
				|  |  | +              data: this.$http.adornData(submitData)
 | 
	
		
			
				|  |  |              }).then(({data}) => {
 | 
	
		
			
				|  |  |                if (data && data.code === '200') {
 | 
	
		
			
				|  |  |                  this.$message({
 | 
	
	
		
			
				|  | @@ -107,6 +193,8 @@ export default {
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  </script>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -<style scoped>
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +<style scoped lang="scss">
 | 
	
		
			
				|  |  | +/deep/ .el-input-number--mini {
 | 
	
		
			
				|  |  | +    width:100px;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  |  </style>
 |