<template xmlns:v-slot="http://www.w3.org/1999/XSL/Transform">
  <div>
    <el-form :model="inputForm" ref="inputForm" v-loading="loading" :class="method==='view'?'readonly':''"  :disabled="status === 'audit' || status === 'taskFormDetail'"
             label-width="110px" @submit.native.prevent>

      <el-divider content-position="left"><i class="el-icon-document"></i> 基础信息</el-divider>
      <el-row :gutter="20">
        <el-col :span="12">
          <el-form-item label="采购编号" prop="purchaseNo">
            <el-input placeholder="自动生成" v-model="inputForm.purchaseNo" :disabled="true"></el-input>
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="采购名称" prop="purchaseSketch"
                        :rules="[{required: true, message: '采购名称不能为空', trigger: 'blur'}
                 ]">
            <el-input v-model="inputForm.purchaseSketch" placeholder="请填写采购名称"></el-input>
          </el-form-item>
        </el-col>
      </el-row>
      <el-row :gutter="20">
        <el-col :span="12">
          <el-form-item label="经办人" prop="handledBy">
            <el-input v-model="inputForm.handledBy" :disabled="true"></el-input>
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="经办人部门" prop="handledByOffice">
            <SelectTree
              :disabled="true"
              ref="officeTree"
              :props="{
                  value: 'id',             // ID字段名
                  label: 'name',         // 显示名称
                  children: 'children'    // 子级字段名
                }"

              :url="`/system-server/sys/office/treeData?type=2`"
              :value="inputForm.handledByOffice"
              :accordion="true"
              size="default"
              @getValue="(value) => {inputForm.handledByOffice=value}"/>
<!--            <el-input v-model="inputForm.handledByOffice" :disabled="true"></el-input>-->
          </el-form-item>
        </el-col>
      </el-row>
      <el-row :gutter="20">
        <el-col :span="12">
          <el-form-item label="采购申请时间" prop="purchaseDate" :rules="[{required: true, message:'请选择采购申请时间', trigger:'blur'}]">
            <el-date-picker
              v-model="inputForm.purchaseDate"
              type="date"
              value-format="YYYY-MM-DD"
              placement="bottom-start"
              style="width: 100%"
              placeholder="选择日期">
            </el-date-picker>
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="采购方式" prop="purchaseMode"
                        :rules="[
                          {required: true, message: '采购方式不能为空', trigger: 'blur'},
          ]">
            <el-select v-model="inputForm.purchaseMode" placeholder="请选择采购方式" style="width:100%;">
              <el-option
                v-for="item in $dictUtils.getDictList('material_purchase_mode')"
                :key="item.value"
                :label="item.label"
                :value="item.value">
              </el-option>
            </el-select>
          </el-form-item>
        </el-col>
      </el-row>
      <el-row :gutter="20">
        <el-col :span="24">
          <el-form-item label="备注" prop="remarks">
            <el-input v-model="inputForm.remarks"
                      type="textarea"
                      :rows="5"
                      maxlength="500"
                      placeholder="请填写备注信息"
                      show-word-limit>
            </el-input>
          </el-form-item>
        </el-col>
      </el-row>

      <el-divider content-position="left"><i class="el-icon-document"></i>
        采购详情
        <el-button style="margin-left: 20px" type="primary" :disabled="method==='view' || status === 'audit' || status === 'taskFormDetail'" @click="insertEvent('detail')" plain>
          新增
        </el-button>
      </el-divider>
      <el-row  :gutter="15" >
        <el-col :span="24">
			<vxe-table
				border
				show-footer
				show-overflow
				:footer-method="footerMethod"
				ref="detailTable"
				class="vxe-table-element"
				:data="inputForm.detailInfos"
				:key="clientTableKey"
				style="margin-left: 5em"
				highlight-current-row
				:edit-config="{trigger: 'click', mode: 'row', showStatus: false, autoClear: true, icon: '-'}"
				:edit-rules="validRules"
			>
				<vxe-table-column align="center" field="purchaserAgent" title="采购人" :edit-render="{}" :rules="[{required: true, message:'请选择采购人', trigger:'blur'}]">
					<template #edit="scope">
						<el-input v-model="scope.row.purchaserAgent" @focus="userPullListForm(scope.$rowIndex)"></el-input>
					</template>
				</vxe-table-column>
				<vxe-table-column align="center" field="procurementOffice" title="采购部门" :edit-render="{}">
					<template #edit="scope">
						<el-input :disabled='true' v-model="scope.row.procurementOffice" ></el-input>
					</template>
				</vxe-table-column>
				<vxe-table-column align="center" field="procurementType" title="采购类型" :edit-render="{}" :rules="[{required: true, message:'请选择采购类型', trigger:'blur'}]">
					<template v-slot:edit="scope">
						<el-input v-model="scope.row.procurementType" @focus="typePullForm(scope.$rowIndex)"></el-input>
					</template>
				</vxe-table-column>
				<vxe-table-column align="center" field="tradeName" title="商品名称" :edit-render="{}" :rules="[]">
					<template v-slot:edit="scope">
						<!--              <el-input @change="ifSameValue" v-model="scope.row.tradeName"></el-input>-->
						<vxe-pulldown ref="xDown1" transfer>
							<template #default>
								<vxe-input v-model="scope.row.tradeName" placeholder="请输入商品名称" maxlength="64"
										   @focus="focusEvent1(scope.row)"
										   @input="keyupEvent1(scope.row)"></vxe-input>
							</template>
							<template #dropdown>
								<div class="my-dropdown1">
									<div class="list-item1" v-for="item in scope.row.tradeNameData" :key="item.id" @click="selectEvent1(scope.row, item)">
										<span>{{ item.tradeName }}</span>
									</div>
								</div>
							</template>
						</vxe-pulldown>
					</template>
				</vxe-table-column>
				<vxe-table-column align="center" field="supplierName" title="供应商" :edit-render="{}" :rules="[{required: true, message:'请选择供应商', trigger:'blur'}]">
					<template v-slot:edit="scope">
						<vxe-pulldown ref="xDown4" transfer>
							<template #default>
								<vxe-input v-model="scope.row.supplierName" :readonly="scope.row.isSupplier === '2'" :disabled="status === 'audit' || status === 'taskFormDetail'" placeholder="请填写供应商" @focus="focusEvent4(scope.$rowIndex)" ></vxe-input>
							</template>
							<template #dropdown>
								<div style="width: 600px;
                              height: 300px;
                              background-color: #fff;
                              box-shadow: 0 0 6px 2px rgba(0, 0, 0, 0.1);">
									<vxe-input v-model="suppName" type="search" @search-click="searchClick"  placeholder="请输入供应商名称搜索" style="width: 100%" clearable></vxe-input>
									<vxe-grid
										border
										show-overflow
										auto-resize
										height="auto"
										:row-config="{isHover: true}"
										:loading="loading4"
										:pager-config="tablePage4"
										:data="tableData4"
										:columns="tableColumn4"
										@cell-click="cellClickEvent4"
										@page-change="pageChangeEvent4">
									</vxe-grid>
								</div>
							</template>
						</vxe-pulldown>
					</template>
				</vxe-table-column>
				<vxe-table-column align="center" field="tradePrice" title="商品单价(元)" :edit-render="{}" :rules="[]">
					<template v-slot:edit="scope">
						<!--              <el-input @change="changeValue" maxlength="15" v-model="scope.row.tradePrice" @keyup.native="scope.row.tradePrice = twoDecimalPlaces(scope.row.tradePrice)"></el-input>-->
						<el-input @change="changeValue" maxlength="15" v-model="scope.row.tradePrice" @blur="scope.row.tradePrice = twoDecimalPlaces2(scope.row.tradePrice)"></el-input>
					</template>
				</vxe-table-column>
				<vxe-table-column align="center" field="tradeNumber" title="商品数量" :edit-render="{}">
					<template v-slot:edit="scope">
						<!--              <el-input @change="changeValue" v-model="scope.row.tradeNumber" oninput ="value=value.replace(/\D|^0/g,'')" maxlength="10"></el-input>-->
						<el-input @change="changeValue" v-model="scope.row.tradeNumber" @blur="scope.row.tradeNumber = twoDecimalPlaces2(scope.row.tradeNumber)" maxlength="10"></el-input>
					</template>
				</vxe-table-column>
				<vxe-table-column align="center" field="priceSum" title="商品总价" :edit-render="{}">
					<template v-slot:edit="scope">
						<el-input v-model="scope.row.priceSum" :readonly="true" maxlength="15"></el-input>
						<!--              <el-input v-model="scope.row.priceSum" @blur="scope.row.priceSum = twoDecimalPlaces(scope.row.priceSum, scope.$rowIndex)" maxlength="15"></el-input>-->
					</template>
				</vxe-table-column>
				<vxe-table-column align="center" field="company" title="单位" :edit-render="{}" :rules="[{required: true, message:'请填写单位', trigger:'blur'}]">
					<template v-slot:edit="scope">
						<el-input v-model="scope.row.company"></el-input>
					</template>
				</vxe-table-column>
				<vxe-table-column align="center" field="remarks" title="备注" :edit-render="{}">
					<template v-slot:edit="scope">
						<el-input v-model="scope.row.remarks" ></el-input>
					</template>
				</vxe-table-column>
				<vxe-table-column align="center" title="操作" width="300">
					<template v-slot="scope">
						<vxe-button size="small" :disabled="status === 'audit' || status === 'taskFormDetail'" status="danger" @click="removeEvent(scope.row,scope.$rowIndex,'detail')">删除</vxe-button>
						<vxe-button size="small" status="primary" :disabled="status === 'audit' || status === 'taskFormDetail'" @click="sss(scope.$rowIndex)">上传附件</vxe-button>
						<vxe-button size="small" status="primary" v-if="status === 'audit' || status === 'taskFormDetail'" :disabled="false" @click="seeFileInfo(scope.$rowIndex)">查看文件详情</vxe-button>
					</template>
				</vxe-table-column>
			</vxe-table>
		</el-col>
      </el-row>


    </el-form>
    <!-- 附件 -->
    <MaterialManagementDialog ref="materialManagementDialog" @getUpload="getUpload"></MaterialManagementDialog>
    <UpLoadComponent ref="uploadComponent"></UpLoadComponent>
    <CwProgramPageForm ref="cwProgramPageForm" @getProgram="getProgram"></CwProgramPageForm>
    <MaterialTypePullForm ref="materialTypePullForm" @getProgramForType="getProgramForType"></MaterialTypePullForm>
    <!--      <CwReimbursementTypePullForm ref="cwReimbursementTypePullForm" @getProgramForType="getProgramForType"></CwReimbursementTypePullForm>-->
    <UserPullForm ref="userPullForm" @getProgramForUser="getProgramForUser"></UserPullForm>
  </div>
</template>

<script>
	import CommonApi from '@/api/cw/common/CommonApi'
	import MaterialManagementDialog from '../file/MaterialManagementDialog'
	import MaterialManagementService from '@/api/materialManagement/MaterialManagementService'
	import UpLoadComponent from '@/views/common/UpLoadComponent'
	import SelectTree from '@/components/treeSelect/treeSelect.vue'
	import XEUtils from 'xe-utils'
	import CwProgramPageForm from '@/views/cw/reimbursementApproval/info/CwProgramPageForm'
	import MaterialTypePullForm from '../info/MaterialTypePullForm'
	import UserPullForm from '@/views/finance/invoice/UserPullForm'
	import SupplierService from '@/api/materialManagement/SupplierService'
	import WareHouseService from '@/api/materialManagement/WareHouseService'
	export default {
		data () {
			return {
				validRules: {
					purchaserAgent: [
						{required: true, message: '采购人不能为空'}
					],
					procurementOffice: [
						{required: true, message: '采购部门不能为空'}
					],
					procurementType: [
						{required: true, message: '采购类型不能为空'}
					],
					tradeName: [
						{required: true, message: '商品名称不能为空'}
					]
				},
				title: '',
				method: '',
				visible: false,
				loading: false,
				indexRow: '',
				inputForm: {
					tradeTotalPrice: '',  // 商品总价
					fileInfoLost: [],
					purchaseMode: '',
					handledByOffice: '',
					handledBy: '',
					handledById: '',
					purchaseSketch: '',
					purchaseNo: '', // 采购编号
					userId: '',
					purchaseDate: '',
					remarks: '',
					detailInfos: [],
					procInsId: '',
					// amountInfos: [],
					files: [] // 附件信息
				},
				keyWatch: '',
				clientTableKey: '',
				loading4: false,
				tablePage4: {
					total: 0,
					currentPage: 1,
					pageSize: 10
				},
				tableColumn4: [
					{ field: 'name', title: '名称', align: 'center' },
					{ field: 'address', title: '地址', align: 'center' },
					{ field: 'telPhone', title: '联系电话', align: 'center' }
				],
				tableData4: [],
				suppName: '',
				suppIndex: ''
			}
		},
		MaterialManagementService: null,
		commonApi: null,
		supplierService: null,
		wareHouseService: null,
		created () {
			this.materialManagementService = new MaterialManagementService()
			this.commonApi = new CommonApi()
			this.supplierService = new SupplierService()
			this.wareHouseService = new WareHouseService()
		},
		props: {
			businessId: {
				type: String,
				default: ''
			},
			formReadOnly: {
				type: Boolean,
				default: false
			},
			status: {
				type: String,
				default: ''
			}
		},
		components: {
			MaterialManagementDialog,
			UpLoadComponent,
			SelectTree,
			CwProgramPageForm,
			MaterialTypePullForm,
			UserPullForm
		},
		computed: {
			bus: {
				get () {
					return this.businessId
				},
				set (val) {
					this.businessId = val
				}
			},
			name () {
				return this.$store.state.user.name
			},
			officeName () {
				return this.$store.state.user.office.name
			},
			purchaserAgentId () {
				return this.$store.state.user.id
			},
			procurementTypeId () {
				return ''
			}
		},
		watch: {
			'keyWatch': {
				handler (newVal) {
					if (this.commonJS.isNotEmpty(this.bus)) {
						this.init('', this.bus)
					} else {
						this.$nextTick(() => {
							this.$refs.inputForm.resetFields()
						})
					}
				}
			},
			'loading': {
				handler (newVal) {
					this.$emit('changeLoading', newVal)
					this.$refs.uploadComponent.changeLoading(newVal)
				}
			}
		},
		methods: {
			getKeyWatch (keyWatch) {
				this.keyWatch = keyWatch
			},
			init (method, id) {
				this.method = method
				this.inputForm = {
					tradeTotalPrice: '',  // 商品总价
					fileInfoLost: [],
					purchaseMode: '',
					handledByOffice: '',
					handledBy: this.$store.state.user.name,
					handledById: this.$store.state.user.id,
					purchaseSketch: '',
					purchaseNo: '', // 采购编号
					userId: this.$store.state.user.id,
					purchaseDate: this.moment(new Date()).format('YYYY-MM-DD'),
					remarks: '',
					detailInfos: [],
					procInsId: '',
					// amountInfos: [],
					files: [] // 附件信息
				}
				if (method === 'add') {
					this.title = `新建采购申请`
				} else if (method === 'edit') {
					this.title = '修改采购申请'
				}
				this.inputForm.id = id
				this.visible = true
				this.loading = false
				this.$refs.uploadComponent.clearUpload()
				this.$nextTick(() => {
					if ((this.status === 'audit' || this.status === 'taskFormDetail') && this.businessId !== 'false') {
						method = 'view'
					}
					if (this.commonJS.isEmpty(this.inputForm.handledByOffice)) {
						this.inputForm.handledByOffice = this.$store.state.user.office.id
					}
					if (this.status === 'audit' || this.status === 'taskFormDetail') {
						method = 'view'
					}
					console.log('method', method)
					this.loading = true
					this.$refs.inputForm.resetFields()
					this.materialManagementService.findById(this.inputForm.id).then((data) => {
						if (this.inputForm.id !== 'false') {
							this.inputForm = this.recover(this.inputForm, data)
							if (this.commonJS.isEmpty(this.inputForm.handledByOffice)) {
								this.inputForm.handledByOffice = this.$store.state.user.office.id
							}
							if (this.commonJS.isNotEmpty(data.purchaserAgentId)) {
								this.purchaserAgentId = data.purchaserAgentId
							}
							// if (this.commonJS.isNotEmpty(data.procurementTypeId)) {
							//   this.procurementTypeId = data.procurementTypeId
							// }
							let i = this.inputForm.detailInfos.length
							for (let j = 0; j < i; j++) {
								if (this.commonJS.isNotEmpty(this.inputForm.detailInfos[j].tradePrice)) {
									if (this.commonJS.isNotEmpty(this.inputForm.detailInfos[j].tradeNumber)) {
										this.inputForm.detailInfos[j].priceSum = this.inputForm.detailInfos[j].tradePrice * this.inputForm.detailInfos[j].tradeNumber
									}
								}
							}
							this.$refs.uploadComponent.newUpload(method, this.inputForm.files, 'reimbursement')
							this.inputForm = JSON.parse(JSON.stringify(this.inputForm))
							this.loading = false
						} else {
							if (this.commonJS.isEmpty(this.inputForm.handledByOffice)) {
								this.inputForm.handledByOffice = this.$store.state.user.office.id
							}
							if (this.commonJS.isEmpty(this.inputForm.handledBy)) {
								this.inputForm.handledBy = this.$store.state.user.name
							}
							if (this.commonJS.isEmpty(this.inputForm.handledById)) {
								this.inputForm.handledById = this.$store.state.user.id
							}
							if (this.commonJS.isEmpty(this.inputForm.purchaseDate)) {
								this.inputForm.purchaseDate = this.moment(new Date()).format('YYYY-MM-DD')
							}
							this.inputForm.detailInfos = []
							this.loading = false
						}
					})
					if (method !== 'edit' && method !== 'view') {
						this.$refs.uploadComponent.newUpload(method, [], 'reimbursement')
					}
				})
			},
			getUpload (p, index) {
				p.then((list) => {
					// list为返回数据
					this.inputForm.detailInfos[index].fileInfoLost = list
					this.inputForm.detailInfos[index].fileNumber = list.length
					this.tableKeyClient = Math.random()
				})
			},
			seeFileInfo (index) {
				if (this.commonJS.isEmpty(this.inputForm.detailInfos[index].fileInfoLost)) {
					this.inputForm.detailInfos[index].fileInfoLost = []
				}
				this.$refs.materialManagementDialog.newUpload('view', this.inputForm.detailInfos[index].fileInfoLost, null, null, null, null, null, false, index)
			},
			sss (index) {
				if (this.commonJS.isEmpty(this.inputForm.detailInfos[index].fileInfoLost)) {
					this.inputForm.detailInfos[index].fileInfoLost = []
				}
				this.$refs.materialManagementDialog.newUpload(null, this.inputForm.detailInfos[index].fileInfoLost, null, null, null, null, null, false, index)
			},
			// 表单提交
			doSubmit () {
				this.$refs['inputForm'].validate((valid) => {
					if (valid) {
						this.loading = true
						if (this.$refs.uploadComponent.checkProgress()) {
							this.loading = false
							return
						}
						if (this.commonJS.isEmpty(this.inputForm.files)) {
							this.inputForm.files = []
						}
						this.inputForm.id = this.businessId
						this.inputForm.files = this.$refs.uploadComponent.getDataList()
						this.materialManagementService.save(this.inputForm).then((data) => {
							this.close()
							this.$message.success(data)
							this.$emit('refreshDataList')
							this.loading = false
						}).catch(() => {
							this.loading = false
						})
					}
				})
			},
			close () {
				this.$refs.inputForm.resetFields()
				this.inputForm.detailInfos = []
				// this.inputForm.amountInfos = []
				this.$refs.uploadComponent.clearUpload()
				this.visible = false
			},
			// 删除
			removeEvent (row, rowIndex, type) {
				if (type === 'detail') {
					this.$refs.detailTable.remove(row)
					this.inputForm.detailInfos.splice(rowIndex, 1)
				}
				if (type === 'amount') {
					this.$refs.amountTable.remove(row)
				}
			},
			// 新增
			async insertEvent (type) {
				if (type === 'detail') {
					await this.$refs.detailTable.insert().then((data) => {
						data.purchaserAgentId = this.purchaserAgentId
						data.purchaserAgent = this.name
						data.procurementOffice = this.officeName
						this.inputForm.detailInfos.push(data)
						console.log('this.inputForm.detailInfos', this.inputForm.detailInfos)
						this.clientTableKey = Math.random()
					})
				}
				if (type === 'amount') {
					await this.$refs.amountTable.insert().then((data) => {
						// this.inputForm.amountInfos.push(data)
					})
				}
			},
			reapplyForm (callback) {
				this.loading = true
				this.materialManagementService.findById(this.inputForm.id).then((data) => {
					if (data.status !== '4') { // 审核状态不是“驳回”，就弹出提示
						this.loading = false
						this.$message.error('任务数据已发生改变或不存在，请在待办任务中确认此任务是否存在')
						throw new Error('任务数据已发生改变或不存在，请在待办任务中确认此任务是否存在')
					} else {
						this.startFormTrue(callback)
					}
				})
			},
			// 暂存
			async saveForm (callback) {
				this.loading = true
				if (this.$refs.uploadComponent.checkProgress()) {
					this.loading = false
					return
				}
				if (this.commonJS.isEmpty(this.inputForm.files)) {
					this.inputForm.files = []
				}
				this.inputForm.files = this.$refs.uploadComponent.getDataList()
				this.inputForm.status = '1'
				this.materialManagementService.save(this.inputForm).then((data) => {
					callback()
					this.$refs.inputForm.resetFields()
					this.loading = false
				}).catch(() => {
					this.$refs.inputForm.resetFields()
					this.loading = false
				})
			},
			startForm (callback) {
				this.loading = true
				if (this.commonJS.isNotEmpty(this.inputForm.id)) {
					this.materialManagementService.findById(this.inputForm.id).then((data) => {
						// 审核状态不是“未发起”或“暂存”或“撤回”，就弹出提示
						if (this.commonJS.isNotEmpty(data.status) && data.status !== '0' && data.status !== '1' && data.status !== '3') {
							this.loading = false
							this.$message.error('任务数据已发生改变或不存在，请在待办任务中确认此任务是否存在')
							throw new Error('任务数据已发生改变或不存在，请在待办任务中确认此任务是否存在')
						} else {
							this.startFormTrue(callback)
						}
					})
				} else {
					this.startFormTrue(callback)
				}
			},
			// 送审
			async startFormTrue (callback) {
				this.loading = true
				this.$refs['inputForm'].validate(async (valid) => {
					if (valid) {
						this.loading = true
						if (this.$refs.uploadComponent.checkProgress()) {
							this.loading = false
							return
						}
						if (this.commonJS.isEmpty(this.inputForm.files)) {
							this.inputForm.files = []
						}
						if (this.commonJS.isEmpty(this.inputForm.detailInfos)) {
							this.$message.error('至少填写一条采购详情信息')
							this.loading = false
							return
						} else {
							let i = this.inputForm.detailInfos.length
							for (let j = 0; j < i; j++) {
								let k = j + 1
								if (this.commonJS.isEmpty(this.inputForm.detailInfos[j].purchaserAgent)) {
									this.$message.error('采购详情第' + k + '行请选择采购人')
									this.loading = false
									return
								}
								if (this.commonJS.isEmpty(this.inputForm.detailInfos[j].procurementType)) {
									this.$message.error('采购详情第' + k + '行请选择采购类型')
									this.loading = false
									return
								}
								if (this.commonJS.isEmpty(this.inputForm.detailInfos[j].tradeName)) {
									this.$message.error('采购详情第' + k + '行请填写商品名称')
									this.loading = false
									return
								}
							}
							for (let j = 0; j < i; j++) {
								for (let k = j + 1; k < i; k++) {
									if (this.inputForm.detailInfos[j].procurementType === this.inputForm.detailInfos[k].procurementType) { // 如果采购类型相同
										if (this.inputForm.detailInfos[j].tradeName === this.inputForm.detailInfos[k].tradeName) { // 如果商品名称相同
											if (this.inputForm.detailInfos[j].supplierName === this.inputForm.detailInfos[k].supplierName) {
												this.$message.warning(`采购详情中，同种采购类型、同一供应商的商品名称只能输入一条`)
												this.loading = false
												throw new Error('采购详情中，同种采购类型、同一供应商的商品名称只能输入一条')
											}
										}
									}
								}
							}
						}
						this.inputForm.files = this.$refs.uploadComponent.getDataList()
						this.inputForm.status = '2'
						this.materialManagementService.save(this.inputForm).then((data) => {
							this.inputForm.id = data.businessId
							callback(data.businessTable, data.businessId, this.inputForm)
							this.$refs.inputForm.resetFields()
							this.loading = false
						}).catch(() => {
							this.$refs.inputForm.resetFields()
							this.loading = false
						})
					} else {
						this.loading = false
					}
				})
			},
			// 通过
			async agreeForm (callback) {
				this.loading = true
				this.$refs['inputForm'].validate(async (valid) => {
					if (valid) {
						this.loading = true
						if (this.$refs.uploadComponent.checkProgress()) {
							this.loading = false
							return
						}
						if (this.commonJS.isEmpty(this.inputForm.files)) {
							this.inputForm.files = []
						}
						this.inputForm.files = this.$refs.uploadComponent.getDataList()
						console.log('this.inputForm.procInsId', this.inputForm.procInsId)
						this.commonApi.getTaskNameByProcInsId(this.inputForm.procInsId).then((data) => {
							if (this.commonJS.isNotEmpty(data)) {
								console.log('进来了', data)
								if (data === '公司领导审批') {
									this.inputForm.status = '5'
								}
							}
							this.materialManagementService.save(this.inputForm).then((data) => {
								callback(data.businessTable, data.businessId, this.inputForm)
								this.loading = false
							}).catch(() => {
								this.loading = false
							})
						})
					} else {
						this.loading = false
					}
				})
			},
			async updateStatusById (type, callback) {
				this.loading = true
				if (await this.$refs.uploadComponent.checkProgress()) {
					this.loading = false
					throw new Error()
				} else {
					if (type === 'reject' || type === 'reback') {
						this.materialManagementService.findById(this.inputForm.id).then((data) => {
							if (data.status !== '2') { // status的值不等于“审核中”，就弹出提示
								this.loading = false
								this.$message.error('任务数据已发生改变或不存在，请在待办任务中确认此任务是否存在')
								throw new Error()
							} else {
								if (type === 'reject') {
									// 驳回
									this.inputForm.status = '4'
								}
								if (type === 'reback') {
									// 撤回
									this.inputForm.status = '3'
								}
								if (type === 'reject' || type === 'reback') {
									let param = {status: this.inputForm.status, id: this.inputForm.id}
									this.materialManagementService.updateStatusById(param).then(() => {
										this.loading = false
										callback()
									})
								}
							}
						})
					} else if (type === 'hold') {
						this.materialManagementService.findById(this.inputForm.id).then((data) => {
							if (data.status !== '4') { // status的值不等于“驳回”就弹出提示
								this.loading = false
								this.$message.error('任务数据已发生改变或不存在，请在待办任务中确认此任务是否存在')
								throw new Error()
							} else {
								// 终止
								let param = {status: '1', id: this.inputForm.id}
								this.materialManagementService.updateStatusById(param).then(() => {
									this.loading = false
									callback()
								})
							}
						})
					}
				}
			},
			// 修改状态
			// updateStatusById (type) {
			//   if (type === 'reject') {
			//     this.inputForm.status = '4'
			//     // this.reimbursementApprovalService.updateStatusById(this.inputForm)
			//     this.materialManagementService.updateStatusById(this.inputForm)
			//   }
			// },
			footerMethod ({ columns, data }) {
				const footerData = [
					columns.map((column, columnIndex) => {
						if (columnIndex === 0) {
							return '商品总价'
						}
						if (['priceSum'].includes(column.property)) {
							// eslint-disable-next-line no-undef
							this.inputForm.tradeTotalPrice = XEUtils.sum(data, column.property)
							return XEUtils.sum(data, column.property)
						}
						return null
					})
				]
				return footerData
			},
			twoDecimalPlaces (num, index) {
				let str = num.toString()
				var len1 = str.substr(0, 1)
				var len2 = str.substr(1, 1)
				// eslint-disable-next-line eqeqeq
				if (str.length > 1 && len1 == 0 && len2 != '.') {
					str = str.substr(1, 1)
				}
				// eslint-disable-next-line eqeqeq
				if (len1 == '.') {
					str = ''
				}
				// eslint-disable-next-line eqeqeq
				if (str.indexOf('.') != -1) {
					var str_ = str.substr(str.indexOf('.') + 1)
					// eslint-disable-next-line eqeqeq
					if (str_.indexOf('.') != -1) {
						str = str.substr(0, str.indexOf('.') + str_.indexOf('.') + 1)
					}
					if (str_.length > 2) {
						this.$message.warning(`金额小数点后只能输入两位，请正确输入！`)
						return (str = '')
					}
				}
				// eslint-disable-next-line no-useless-escape
				this.inputForm.detailInfos[index].priceSum = str.replace(/[^\d^\.]+/g, '') // 保留数字和小数点
			},
			twoDecimalPlaces2 (num) {
				let str = num.toString()
				var len1 = str.substr(0, 1)
				var len2 = str.substr(1, 1)
				// eslint-disable-next-line eqeqeq
				if (str.length > 1 && len1 == 0 && len2 != '.') {
					str = str.substr(1, 1)
				}
				// eslint-disable-next-line eqeqeq
				if (len1 == '.') {
					str = ''
				}
				// eslint-disable-next-line eqeqeq
				if (str.indexOf('.') != -1) {
					var str_ = str.substr(str.indexOf('.') + 1)
					// eslint-disable-next-line eqeqeq
					if (str_.indexOf('.') != -1) {
						str = str.substr(0, str.indexOf('.') + str_.indexOf('.') + 1)
					}
					if (str_.length > 2) {
						this.$message.warning(`商品数量小数点后只能输入两位，请正确输入！`)
						return (str = '')
					}
				}
				// eslint-disable-next-line no-useless-escape
				str = str.replace(/[^\d^\.]+/g, '') // 保留数字和小数点
				return str
			},
			countAmount (row) {
				let amount
				let taxAmount
				let count = 0
				if (!this.commonJS.isEmpty(row.amount)) {
					amount = parseFloat(row.amount)
					count = count + amount
				}
				if (!this.commonJS.isEmpty(row.taxAmount)) {
					taxAmount = parseFloat(row.taxAmount)
					count = count + taxAmount
				}
				row.count = parseFloat(count).toFixed(2)
			},
			getProgram (rows) {
				this.inputForm.detailInfos[this.indexRow].projectId = rows[0].id
				this.inputForm.detailInfos[this.indexRow].projectName = rows[0].name
				this.inputForm.detailInfos[this.indexRow].reportNumber = rows[0].reportNo
				this.indexRow = ''
				this.$forceUpdate()
			},
			// 采购类型下拉弹窗
			typePullForm (rowIndex) {
				this.indexRow = rowIndex
				// this.$refs.reimbursementTypePullForm.init()
				// this.$refs.cwReimbursementTypePullForm.init()
				this.$refs.materialTypePullForm.init()
			},
			getProgramForType (rows) {
				this.inputForm.detailInfos[this.indexRow].procurementTypeId = rows.id
				this.inputForm.detailInfos[this.indexRow].procurementType = rows.name
				this.indexRow = ''
				this.$forceUpdate()
			},
			// 采购人下拉弹窗
			userPullListForm (rowIndex) {
				this.indexRow = rowIndex
				this.$refs.userPullForm.init()
			},
			getProgramForUser (rows) {
				console.log('rows', rows)
				this.inputForm.detailInfos[this.indexRow].purchaserAgentId = rows[0].id
				this.inputForm.detailInfos[this.indexRow].purchaserAgent = rows[0].name
				this.inputForm.detailInfos[this.indexRow].deptId = rows[0].parentId
				this.inputForm.detailInfos[this.indexRow].procurementOffice = rows[0].officeName
				this.indexRow = ''
				this.$forceUpdate()
			},
			getUserInfo (rows) {
				console.log('rows', rows)
			},
			// 值改变事件
			changeValue () {
				let i = this.inputForm.detailInfos.length
				for (let j = 0; j < i; j++) {
					if (this.commonJS.isNotEmpty(this.inputForm.detailInfos[j].tradePrice)) {
						if (this.commonJS.isNotEmpty(this.inputForm.detailInfos[j].tradeNumber)) {
							// parseFloat(item.account).toFixed(2)
							this.inputForm.detailInfos[j].priceSum = parseFloat(parseFloat(this.inputForm.detailInfos[j].tradePrice) * parseFloat(this.inputForm.detailInfos[j].tradeNumber)).toFixed(2)
						}
					}
				}
			},
			ifSameValue () {
				let i = this.inputForm.detailInfos.length
				for (let j = 0; j < i; j++) {
					for (let k = j + 1; k < i; k++) {
						if (this.inputForm.detailInfos[j].procurementTypeId === this.inputForm.detailInfos[k].procurementTypeId) {
							if (this.commonJS.isNotEmpty(this.inputForm.detailInfos[j].tradeName) &&
								this.commonJS.isNotEmpty(this.inputForm.detailInfos[k].tradeName) && this.inputForm.detailInfos[j].tradeName === this.inputForm.detailInfos[k].tradeName) {
								// parseFloat(item.account).toFixed(2)
								this.inputForm.detailInfos.splice(k, 1)
								this.$message.warning(`同种采购类型的商品名称只能输入一条信息！`)
							}
						}
					}
				}
			},
			focusEvent4 (rowIndex) {
				this.$refs.xDown4.showPanel()
				this.loading4 = true
				this.suppName = '' // 搜索框的值 清空
				this.suppIndex = rowIndex // 获取当前行下标
				this.tablePage4.currentPage = 1
				this.tablePage4.pageSize = 10
				this.refreshSupplierList()
			},
			suffixClick4 () {
				this.$refs.xDown4.togglePanel()
			},
			searchClick () {
				this.refreshSupplierList()
			},
			cellClickEvent4 ({ row }) {
				this.inputForm.detailInfos[this.suppIndex].supplierName = row.name
				this.inputForm.detailInfos[this.suppIndex].supplierId = row.id
				this.inputForm.detailInfos[this.suppIndex].isSupplier = '2' // isSupplier：手动填写 ‘1’ 选择填写 ‘2’
				this.suppIndex = ''
				this.$refs.xDown4.hidePanel()
			},
			pageChangeEvent4 ({ currentPage, pageSize }) {
				this.tablePage4.currentPage = currentPage
				this.tablePage4.pageSize = pageSize
				this.refreshSupplierList()
			},
			// 刷新供应商
			refreshSupplierList () {
				this.supplierService.list({
					'current': this.tablePage4.currentPage,
					'size': this.tablePage4.pageSize,
					'name': this.suppName
				}).then((data) => {
					this.tableData4 = data.records
					this.tablePage4.total = data.total
					this.loading4 = false
				})
			},
			focusEvent1 (row) {
				row.tradeNameList = []
				row.tradeNameData = []
				if (this.commonJS.isNotEmpty(row.procurementTypeId)) {
					this.materialManagementService.findTradeByTypeId(row.procurementTypeId).then((data) => {
						row.tradeNameList = JSON.parse(JSON.stringify(data))
						row.tradeNameData = JSON.parse(JSON.stringify(data))
						this.$refs.xDown1.showPanel()
					}).catch(() => {
						this.$refs.xDown1.showPanel()
					})
				} else {
					this.$refs.xDown1.showPanel()
				}
			},
			keyupEvent1 (row) {
				row.tradeNameData = this.commonJS.isNotEmpty(row.tradeName) ? row.tradeNameList.filter(item => item.tradeName.indexOf(row.tradeName) > -1) : row.tradeNameList
			},
			selectEvent1 (row, item) {
				row.tradeName = item.tradeName
				this.$refs.xDown1.hidePanel()
			}
		}
	}
</script>
<style scoped>
  .el-divider__text {
    font-size: 16px;
    font-weight: bold;
  }

  /*.my-dropdown1、.list-item1、.list-item1:hover  为商品名称下拉选择框样式*/
  .my-dropdown1 {
    height: 155px;
    overflow: auto;
    border-radius: 4px;
    border: 1px solid #dcdfe6;
    background-color: #fff;
  }
  .list-item1 {
    line-height: 30px;
    text-align: center;
    border-bottom: #c4c7cc73 1px solid;
  }
  .list-item1:hover {
    background-color: #f5f7fa;
  }
</style>
