<template>
	<view class="jnpf-wrap jnpf-wrap-form" v-if="!loading">
		<u-form :model="dataForm" :rules="rules" ref="dataForm" :errorType="['toast']" label-position="left"
			label-align="left" :label-width="labelwidth" class="jnpf-form">
			<view class="u-p-l-20 u-p-r-20 ">
				<u-form-item>
				<view style="float: left; width:8px; height: 16px;background-color: cadetblue;margin-right: 8px;">
				</view>基本信息
				</u-form-item>
			</view>
			<view class="u-p-l-20 u-p-r-20 form-item-box">
				<u-form-item v-if="judgeShow('code')" :required="requiredList.code" label="单据编号" prop="code">
					<u-input v-model="dataForm.code" disabled @change="changeData('code',-1)" 
						placeholder="系统自动生成" :style='{"width":"100%"}' readonly>
					</u-input>
				</u-form-item>
			</view>
			<view class="u-p-l-20 u-p-r-20 form-item-box">
				<u-form-item v-if="judgeShow('institutionId')" :required="requiredList.institutionId" label="费用归属"
					prop="institutionId">
					<jnpf-com-select v-model="dataForm.institutionId" :disabled="judgeWrite('institutionId')"
						@change="changeData('institutionId',-1)" selectType="all"
						:ableIds="ableAll.institutionIdableIds" clearable placeholder="请选择" type="organize"
						:style='{"width":"100%"}'>
					</jnpf-com-select>
				</u-form-item>
			</view>
			<view class="u-p-l-20 u-p-r-20 form-item-box">
				<u-form-item v-if="judgeShow('subjectId')" :required="requiredList.subjectId" label="往来单位"
					prop="subjectId">
					<jnpf-popup-select v-model="dataForm.subjectId" :disabled="judgeWrite('subjectId')"
						@change="changeData('subjectId',-1)" :rowIndex="null" :formData="dataForm"
						:templateJson="interfaceRes.subjectId" hasPage clearable propsValue="id" popupWidth="800px"
						popupTitle="选择数据" popupType="dialog" relationField='name' vModel='subjectId'
						:columnOptions="subjectIdColumnOptions" interfaceId="542305697765799941" :pageSize="20"
						placeholder="请选择" type="popup" :style='{"width":"100%"}'>
					</jnpf-popup-select>
				</u-form-item>
			</view>

			<view class="u-p-l-20 u-p-r-20 form-item-box">
				<u-form-item v-if="judgeShow('costTime')" :required="requiredList.costTime" label="费用发生时间"
					prop="costTime">
					<jnpf-date-time v-model="dataForm.costTime" :disabled="judgeWrite('costTime')"
						@change="changeData('costTime',-1)" :startTime="dateTime(false,1,1,'','')"
						:endTime="dateTime(false,1,1,'','')" format="yyyy-MM-dd" clearable placeholder="请选择" type="date"
						:style='{"width":"100%"}'>
					</jnpf-date-time>
				</u-form-item>
			</view>
			<view class="u-p-l-20 u-p-r-20 form-item-box">
				<u-form-item v-if="judgeShow('businessCode')" :required="requiredList.businessCode" label="关联数据"
					prop="businessCode">
					<u-input v-model="dataForm.businessCode" :disabled="judgeWrite('businessCode')"
						@change="changeData('businessCode',-1)"  clearable placeholder="请输入"
						:style='{"width":"100%"}'>
					</u-input>
				</u-form-item>
			</view>
			<view class="u-p-l-20 u-p-r-20 form-item-box">
				<u-form-item v-if="judgeShow('costType')" :required="requiredList.costType" label="费用单类型"
					prop="costType">
					<jnpf-select v-model="dataForm.costType" :disabled="judgeWrite('costType')"
						@change="changeData('costType',-1)" clearable placeholder="请选择" :props="costTypeProps"
						:options="costTypeOptions" :style='{"width":"100%"}'>
					</jnpf-select>
				</u-form-item>
			</view>
			<view class="u-p-l-20 u-p-r-20 form-item-box">
				<u-form-item v-if="judgeShow('remark')" :required="requiredList.remark" label="备注" prop="remark">
					<u-input v-model="dataForm.remark" :disabled="judgeWrite('remark')"
						@change="changeData('remark',-1)"  placeholder="请输入" :maxlength="300"
						type="textarea" :style='{"width":"100%"}'>
					</u-input>
				</u-form-item>
			</view>
			<view class="u-p-l-20 u-p-r-20 ">
				<u-form-item>
				
					<view style="float: left; width:8px; height: 16px;background-color: cadetblue;margin-right: 8px;">
					</view>费用信息
				</u-form-item>
			</view>
			<view class="u-p-l-20 u-p-r-20 form-item-box">
				<u-form-item v-if="judgeShow('costProject')" :required="requiredList.costProject" label="费用项目"
					prop="costProject">
					<jnpf-cascader v-model="dataForm.costProject" :disabled="judgeWrite('costProject')"
						@change="changeData('costProject',-1)" clearable placeholder="请选择" :props="costProjectProps"
						:options="costProjectOptions" :style='{"width":"100%"}'>
					</jnpf-cascader>
				</u-form-item>
			</view>
			<view class="u-p-l-20 u-p-r-20 form-item-box">
				<u-form-item v-if="judgeShow('type')" :required="requiredList.type" label="收付类型" prop="type">
					<jnpf-radio v-model="dataForm.type" :disabled="judgeWrite('type')" @change="changeData('type',-1)"
						optionType="default" direction="horizontal" :props="typeProps" :options="typeOptions">
					</jnpf-radio>
				</u-form-item>
			</view>
			<view class="u-p-l-20 u-p-r-20 form-item-box">
				<u-form-item v-if="judgeShow('wayType')" :required="requiredList.wayType" label="付款方式" prop="wayType">
					<jnpf-radio v-model="dataForm.wayType" :disabled="judgeWrite('wayType')"
						@change="changeData('wayType',-1)" optionType="default" direction="horizontal"
						:props="wayTypeProps" :options="wayTypeOptions">
					</jnpf-radio>
				</u-form-item>
			</view>
			<view class="u-p-l-20 u-p-r-20 form-item-box">
				<u-form-item v-if="judgeShow('wayStatus')" :required="requiredList.wayStatus" label="付款状态"
					prop="wayStatus">
					<jnpf-radio v-model="dataForm.wayStatus" :disabled="judgeWrite('wayStatus')"
						@change="changeData('wayStatus',-1)" optionType="default" direction="horizontal"
						:props="wayStatusProps" :options="wayStatusOptions">
					</jnpf-radio>
				</u-form-item>
			</view>
			<view class="u-p-l-20 u-p-r-20 form-item-box">
				<u-form-item v-if="judgeShow('costPrice')" :required="requiredList.costPrice" label="费用金额"
					prop="costPrice">
					<u-input v-model="dataForm.costPrice" :disabled="judgeWrite('costPrice')"
						@change="changeData('costPrice',-1)"  clearable placeholder="请输入"
						:style='{"width":"100%"}'>
					</u-input>
				</u-form-item>
			</view>
			<view class="u-p-l-20 u-p-r-20 form-item-box">
				<u-form-item v-if="judgeShow('payment')" :required="requiredList.payment" label="收付款单号" prop="payment">
					<u-input v-model="dataForm.payment" :disabled="judgeWrite('payment')"
						@change="changeData('payment',-1)"  clearable placeholder="请输入"
						:style='{"width":"100%"}'>
					</u-input>
				</u-form-item>
			</view>
			<view class="u-p-l-20 u-p-r-20 form-item-box">
				<u-form-item v-if="judgeShow('pictures')" :required="requiredList.pictures" label="图片" prop="pictures">
					<jnpf-upload v-model="dataForm.pictures" :disabled="judgeWrite('pictures')"
						@change="changeData('pictures',-1)" sizeUnit="MB" :fileSize="10" :limit="1"
						pathType="defaultPath" :isAccount="0" :value="dataForm.pictures">
					</jnpf-upload>
				</u-form-item>
			</view>
			<view class="u-p-l-20 u-p-r-20 form-item-box">
				<u-form-item v-if="judgeShow('annexFile')" :required="requiredList.annexFile" label="附件文件"
					prop="annexFile">
					<jnpf-file v-model="dataForm.annexFile" :disabled="judgeWrite('annexFile')"
						@change="changeData('annexFile',-1)" :list="dataForm.annexFile" sizeUnit="MB" :fileSize="10"
						:limit="1" pathType="defaultPath" :isAccount="0">
					</jnpf-file>
				</u-form-item>
			</view>
		</u-form>
		<u-modal v-model="show" :content="content" width='70%' border-radius="16"
			:content-style="{fontSize: '28rpx',padding: '20rpx',lineHeight: '44rpx',textAlign: 'left'}"
			:titleStyle="{padding: '20rpx'}" :confirm-style="{height: '80rpx',lineHeight: '80rpx'}" :title="title"
			confirm-text="确定">
		</u-modal>
	</view>
</template>

<script>
	import {
		getDictionaryDataSelector,
		getDataInterfaceRes,
		getDefaultCurrentValueUserId,
		getDefaultCurrentValueDepartmentId
	} from '@/api/common'
	import comMixin from '../../../workFlow/workFlowForm/mixin'
	import {
		getDateDay,
		getLaterData,
		getBeforeData,
		getBeforeTime,
		getLaterTime
	} from '@/components/index.js'
	import request from '@/utils/request'
	export default {
		mixins: [comMixin],
		data() {
			return {
				idList: [],
				index: 0,
				actionList: [],
				actionListLength: false,
				showAction: false,
				btnLoading: false,
				loading: false,
				text: '提示：测试文本',
				tableKey: '',
				dataForm: {
					id: "",
					code: '',
					institutionId: [],
					subjectId: "",
					costTime: "",
					businessCode: '',
					costType: "",
					remark: '',
					costProject: [],
					type: '',
					wayType: '',
					wayStatus: '',
					costPrice: '',
					payment: '',
					pictures: [],
					annexFile: [],
				},
				rules: {
					institutionId: [{
						required: true,
						message: '费用归属请至少选择一个',
						type: 'array',
					}, ],
					subjectId: [{
						required: true,
						message: '往来单位请选择',
					}, ],
					costTime: [{
						required: true,
						message: '费用发生时间请选择',
					}, ],
					costType: [{
						required: true,
						message: '费用单类型请选择',
					}, ],
					remark: [{
						required: true,
						message: '备注请输入',
					}, ],
					costProject: [{
						required: true,
						message: '费用项目请至少选择一个',
						type: 'array',
					}, ],
					type: [{
						required: true,
						message: '收付类型不能为空',
					}, ],
					wayType: [{
						required: true,
						message: '付款方式不能为空',
					}, ],
					wayStatus: [{
						required: true,
						message: '付款状态不能为空',
					}, ],
					costPrice: [{
							required: true,
							message: '费用金额请输入',
						},
						{
							pattern: /^([1-9][\d]*|0)(\.[\d]+)?$/,
							message: '费用金额请输入正确的金额',
						},
					],
					pictures: [{
						required: true,
						message: '图片请至少选择一个',
						type: 'array',
					}, ],
					annexFile: [{
						required: true,
						message: '附件文件请至少选择一个',
						type: 'array',
					}, ],
				},
				subjectIdColumnOptions: [{
						"label": "类型",
						"value": "subjectBasicTypes"
					},
					{
						"label": "名称",
						"value": "name"
					},
				],
				costTypeOptions: [{
					"fullName": "常规费用",
					"id": "1"
				}, {
					"fullName": "抵扣保证金",
					"id": "2"
				}, {
					"fullName": "抵扣利息",
					"id": "3"
				}, {
					"fullName": "抵扣金额",
					"id": "4"
				}, {
					"fullName": "预付款",
					"id": "5"
				}, {
					"fullName": "预付款抵扣",
					"id": "6"
				}],
				costTypeProps: {
					"label": "fullName",
					"value": "id",
					"multiple": false,
					"children": ""
				},
				costProjectOptions: [{
					"children": [{
						"fullName": "交易服务费",
						"id": "E1001"
					}, {
						"fullName": "保险费",
						"id": "E1002"
					}, {
						"fullName": "包装费",
						"id": "E1003"
					}, {
						"fullName": "运费",
						"id": "E1004"
					}, {
						"fullName": "装卸费",
						"id": "E1005"
					}, {
						"fullName": "服务费",
						"id": "E1011"
					}, {
						"fullName": "管理服务费",
						"id": "E1012"
					}, {
						"fullName": "管理服务费退回",
						"id": "E1013"
					}, {
						"fullName": "海关税费",
						"id": "E1014"
					}, {
						"fullName": "技术服务费",
						"id": "E1015"
					}, {
						"fullName": "技术服务费退回",
						"id": "E1016"
					}, {
						"fullName": "交易手续费",
						"id": "E1017"
					}, {
						"fullName": "交易手续费-常规交易",
						"id": "E1018"
					}, {
						"fullName": "交易手续费退回",
						"id": "E1019"
					}, {
						"fullName": "金融服务费-预付回款",
						"id": "E1020"
					}, {
						"fullName": "金融服务费退回-垫资回款",
						"id": "E1021"
					}, {
						"fullName": "金融服务费-垫资回款",
						"id": "E1022"
					}, {
						"fullName": "运费",
						"id": "E1023"
					}, {
						"fullName": "运费退回",
						"id": "E1024"
					}, {
						"fullName": "平台服务费-账户管理费",
						"id": "E1025"
					}, {
						"fullName": "平台服务费-平台分销",
						"id": "E1026"
					}, {
						"fullName": "手续费",
						"id": "E1029"
					}, {
						"fullName": "手续费补贴",
						"id": "E1030"
					}, {
						"fullName": "保障服务费退回-退货运费",
						"id": "E1031"
					}, {
						"fullName": "保障服务费-退货运费",
						"id": "E1032"
					}, {
						"fullName": "保障服务费-担保费",
						"id": "E1033"
					}],
					"fullName": "销售服务",
					"id": "E1000"
				}, {
					"children": [{
						"fullName": "采购保证金",
						"id": "E2000"
					}, {
						"fullName": "质量保证金",
						"id": "E2001"
					}, {
						"fullName": "销售保证金",
						"id": "E2002"
					}, {
						"fullName": "合作保证金",
						"id": "E2003"
					}],
					"fullName": "保证金",
					"id": "E200"
				}, {
					"children": [{
						"fullName": "广告费",
						"id": "E3001"
					}, {
						"fullName": "促销费用",
						"id": "E3002"
					}, {
						"fullName": "节庆费",
						"id": "E3003"
					}, {
						"fullName": "订单返现费用",
						"id": "E3009"
					}],
					"fullName": "营销活动",
					"id": "E3000"
				}, {
					"children": [{
						"fullName": "赔付",
						"id": "E4001"
					}, {
						"fullName": "水费",
						"id": "E4002"
					}, {
						"fullName": "电费",
						"id": "E4003"
					}, {
						"fullName": "气费",
						"id": "E4004"
					}, {
						"fullName": "物业管理费",
						"id": "E4005"
					}, {
						"fullName": "物料消耗",
						"id": "E4006"
					}, {
						"fullName": "信息使用费",
						"id": "E4007"
					}, {
						"fullName": "展览费",
						"id": "E4008"
					}, {
						"fullName": "租赁费",
						"id": "E4009"
					}, {
						"fullName": "修理费",
						"id": "E4010"
					}],
					"fullName": "销售场地",
					"id": "E4000"
				}, {
					"children": [{
						"fullName": "折旧费",
						"id": "E5001"
					}, {
						"fullName": "人员工资",
						"id": "E5002"
					}, {
						"fullName": "职工福利费",
						"id": "E5003"
					}, {
						"fullName": "差旅费",
						"id": "E5004"
					}],
					"fullName": "销售人员",
					"id": "E5000"
				}, {
					"children": [{
						"fullName": "办公费",
						"id": "E6001"
					}, {
						"fullName": "委托代销手续费",
						"id": "E6002"
					}, {
						"fullName": "销售提成",
						"id": "E6003"
					}, {
						"fullName": "采购奖励",
						"id": "E6004"
					}, {
						"fullName": "佣金退回撤销-分销",
						"id": "E6006"
					}, {
						"fullName": "佣金退回-销售员",
						"id": "E6007"
					}, {
						"fullName": "佣金退回-分销",
						"id": "E6008"
					}, {
						"fullName": "佣金-销售员",
						"id": "E6009"
					}, {
						"fullName": "佣金-分销",
						"id": "E6011"
					}, {
						"fullName": "奖励",
						"id": "E6012"
					}],
					"fullName": "委托销售",
					"id": "E6000"
				}],
				costProjectProps: {
					"label": "fullName",
					"value": "id",
					"multiple": false,
					"children": "children"
				},
				typeOptions: [{
					"fullName": "收款",
					"id": "1"
				}, {
					"fullName": "付款",
					"id": "2"
				}],
				typeProps: {
					"label": "fullName",
					"value": "id",
					"multiple": false,
					"children": ""
				},
				wayTypeOptions: [{
					"fullName": "单独收款",
					"id": "1"
				}, {
					"fullName": "账扣",
					"id": "2"
				}, {
					"fullName": "单据付款",
					"id": "3"
				}, {
					"fullName": "账扣",
					"id": "4"
				}],
				wayTypeProps: {
					"label": "fullName",
					"value": "id",
					"multiple": false,
					"children": ""
				},
				wayStatusOptions: [{
					"fullName": "未收款",
					"id": "1"
				}, {
					"fullName": "已收款",
					"id": "2"
				}, {
					"fullName": "未付款",
					"id": "3"
				}, {
					"fullName": "已付款",
					"id": "4"
				}],
				wayStatusProps: {
					"label": "fullName",
					"value": "id",
					"multiple": false,
					"children": ""
				},
				labelwidth: 100 * 1.5,
				menuId: '',
				jurisdictionType: '',
				ruleList: {},
				interfaceRes: {
					code: [],
					institutionId: [],
					subjectId: [],
					costTime: [],
					businessCode: [],
					costType: [],
					remark: [],
					costProject: [],
					type: [],
					wayType: [],
					wayStatus: [],
					costPrice: [],
					payment: [],
					pictures: [],
					annexFile: [],
				},
				regList: {},
				ableAll: {
					institutionIdableIds: [],
				},
				childIndex: -1,
				dataValue: {},
				isEdit: false,
				userInfo: {},
				formatType: {
					"yyyy": "yyyy",
					"yyyy-MM": "yyyy-mm",
					"yyyy-MM-dd": "yyyy-mm-dd",
					"yyyy-MM-dd HH:mm": "yyyy-mm-dd hh:MM",
					"yyyy-MM-dd HH:mm:ss": "yyyy-mm-dd hh:MM:ss",
					"HH:mm:ss": "hh:MM:ss",
					"HH:mm": "hh:MM"
				},
				content: '',
				title: '',
				show: false,
			}
		},
		onLoad(option) {
			uni.$on('linkPageConfirm', (subVal) => {
				if (this.tableKey) {
					for (let i = 0; i < subVal.length; i++) {
						let t = subVal[i]
						if (this['get' + this.tableKey]) {
							this['get' + this.tableKey](t)
						}
					}
					this.childIndex = -1
					this.collapse()
				}
			})
			this.jurisdictionType = option.jurisdictionType
			this.menuId = option.menuId
			this.userInfo = uni.getStorageSync('userInfo') || {}
			this.dataForm.id = option.id || 0
			let _title = ""
			if (option.jurisdictionType == 'btn_edit') {
				_title = "编辑"
			}
			if (option.jurisdictionType == 'btn_detail') {
				_title = "详情"
			}
			if (option.jurisdictionType == 'btn_add') {
				_title = "新增"
			}
			if (_title) {
				uni.setNavigationBarTitle({
					title: _title
				})
			}
			this.selfInit()
			this.initDefaultData()
			this.dataAll()
			this.initData()
			this.dataValue = JSON.parse(JSON.stringify(this.dataForm))
			this.idList = option.idList ? option.idList.split(",") : []
			for (let i = 0; i < this.idList.length; i++) {
				if (this.idList[i] == option.id) {
					this.index = i;
				}
			}
			if (!option.id) {
				this.actionList.push({
					text: '确定并新增',
					id: 'save_add'
				})
			} else {
				let upper = {
					text: '上一条',
					id: 'upper',
					disabled: this.index == 0 ? true : false
				}
				this.actionList.push(upper)
				let lower = {
					text: '下一条',
					id: 'lower',
					disabled: this.index == this.idList.length - 1 ? true : false
				}
				this.actionList.push(lower)
				this.actionList.push({
					text: '确定并继续',
					id: 'save_proceed'
				})
				this.collapse()
			}
		},
		onReady() {
			this.$nextTick(() => {
				setTimeout(() => {
					this.$refs.dataForm.setRules(this.rules);
				}, 100)
			})
		},
		watch: {
			dataForm: {
				handler(val, oldVal) {},
				deep: true
			}
		},
		methods: {
			handleAction(index) {
				if (this.actionList[index].id === 'save_add' || this.actionList[index].id === 'save_proceed') {
					this.submitForm(1)
				} else {
					this.calculation(this.actionList[index].id, index)
				}
			},
			calculation(type, index) {
				if (type === 'upper') {
					this.index--
					this.actionList[index + 1].disabled = false
					if (this.index == 0) this.actionList[index].disabled = true
				} else {
					this.index++
					this.actionList[index - 1].disabled = false
					if (this.index == this.idList.length - 1) this.actionList[index].disabled = true
				}
				this.dataForm.id = this.idList[this.index]
				this.initData()
			},
			changeData(model, index) {
				this.isEdit = false
				this.childIndex = index
				let modelAll = model.split("-");
				let faceMode = "";
				for (let i = 0; i < modelAll.length; i++) {
					faceMode += modelAll[i];
				}
				for (let key in this.interfaceRes) {
					if (key != faceMode) {
						let faceReList = this.interfaceRes[key]
						for (let i = 0; i < faceReList.length; i++) {
							if (faceReList[i].relationField == model) {
								let options = 'get' + key + 'Options';
								if (this[options]) {
									this[options]()
								}
								this.changeData(key, index)
							}
						}
					}
				}
			},
			changeDataFormData(type, data, model, index, defaultValue, edit) {
				if (!edit) {
					if (type == 2) {
						for (let i = 0; i < this.dataForm[data].length; i++) {
							if (index == -1) {
								this.dataForm[data][i][model] = defaultValue
							} else if (index == i) {
								this.dataForm[data][i][model] = defaultValue
							}
						}
					} else {
						this.dataForm[data] = defaultValue
					}
				}
			},
			clickIcon(label, tipLabel) {
				this.content = tipLabel
				this.title = label
				this.show = true
			},
			exist() {
				let title = [];
				let _ruleList = this.ruleList
				for (let k in _ruleList) {
					let childData = this.dataForm[k]
					childData.forEach((item, index) => {
						for (let model in _ruleList[k]) {
							if (item[model] instanceof Array) {
								if (item[model].length == 0) {
									title.push(_ruleList[k][model])
								}
							} else if (!item[model]) {
								title.push(_ruleList[k][model])
							}
						}
					})
				}
				let _regList = this.regList
				for (let k in _regList) {
					let childData = this.dataForm[k]
					for (let n in _regList[k]) {
						for (let i = 0; i < _regList[k][n].length; i++) {
							const element = _regList[k][n][i]
							if (element.pattern) {
								element.pattern = element.pattern.toString()
								let start = element.pattern.indexOf('/')
								let stop = element.pattern.lastIndexOf('/')
								let str = element.pattern.substring(start + 1, stop)
								let reg = new RegExp(str)
								element.pattern = reg
							}
							childData.forEach((item, index) => {
								if (item[n] && !element.pattern.test(item[n])) {
									title.push(element.message)
								}
							})
						}
					}
				}
				if (title.length > 0) {
					return title[0]
				}
			},
			resetForm() {
				uni.navigateBack()
			},
			dataAll() {
				this.collapse()
			},
			dateTime(timeRule, timeType, timeTarget, timeValueData, dataValue) {
				let timeDataValue = null;
				let timeValue = Number(timeValueData)
				if (timeRule) {
					if (timeType == 1) {
						timeDataValue = timeValueData ? timeValue : null
					} else if (timeType == 2) {
						timeDataValue = dataValue
					} else if (timeType == 3) {
						timeDataValue = new Date().getTime()
					} else if (timeType == 4) {
						let previousDate = '';
						if (timeTarget == 1 || timeTarget == 2) {
							previousDate = getDateDay(timeTarget, timeType, timeValue)
							timeDataValue = new Date(previousDate).getTime()
						} else if (timeTarget == 3) {
							previousDate = getBeforeData(timeValue)
							timeDataValue = new Date(previousDate).getTime()
						} else {
							timeDataValue = getBeforeTime(timeTarget, timeValue).getTime()
						}
					} else if (timeType == 5) {
						let previousDate = '';
						if (timeTarget == 1 || timeTarget == 2) {
							previousDate = getDateDay(timeTarget, timeType, timeValue)
							timeDataValue = new Date(previousDate).getTime()
						} else if (timeTarget == 3) {
							previousDate = getLaterData(timeValue)
							timeDataValue = new Date(previousDate).getTime()
						} else {
							timeDataValue = getLaterTime(timeTarget, timeValue).getTime()
						}
					}
				}
				return timeDataValue;
			},
			time(timeRule, timeType, timeTarget, timeValue, formatType, dataValue) {
				let format = formatType == 'HH:mm' ? 'HH:mm:00' : formatType
				let timeDataValue = null
				if (timeRule) {
					if (timeType == 1 && timeValue) {
						timeDataValue = timeValue || '00:00:00'
						if (timeDataValue.split(':').length == 3) {
							timeDataValue = timeDataValue
						} else {
							timeDataValue = timeDataValue + ':00'
						}
					} else if (timeType == 2) {
						timeDataValue = dataValue
					} else if (timeType == 3) {
						timeDataValue = this.jnpf.toDate(new Date(), format)
					} else if (timeType == 4) {
						let previousDate = '';
						previousDate = getBeforeTime(timeTarget, timeValue)
						timeDataValue = this.jnpf.toDate(previousDate, format)
					} else if (timeType == 5) {
						let previousDate = '';
						previousDate = getLaterTime(timeTarget, timeValue)
						timeDataValue = this.jnpf.toDate(previousDate, format)
					}
				}
				return timeDataValue;
			},
			initData() {
				this.$nextTick(function() {
					if (this.dataForm.id) {
						this.loading = true
						request({
							url: '/api/scm/CwCost/' + this.dataForm.id,
							method: 'get',
						}).then(res => {
							this.dataInfo(res.data)
							this.loading = false
						})
					} else {
						this.initDefaultData()
					}
				})
			},
			beforeSubmit() {
				const _data = this.dataList()
				return _data
			},
			initDefaultData() {
				if (this.userInfo.organizeIdList instanceof Array && this.userInfo.organizeIdList.length > 0) {
					this.dataForm.institutionId = this.userInfo.organizeIdList
				}
				this.dataForm.costTime = new Date().getTime()
			},
			selfInit() {
				this.$store.commit('base/UPDATE_RELATION_DATA', {})
				this.dataAll()
				this.initDefaultData()
				this.collapse()
			},
			selfGetInfo(dataForm) {
				this.dataForm.id = this.dataForm.id
				this.dataInfo(dataForm)
			},
			dataList() {
				var _data = this.dataForm;
				return _data;
			},
			dataInfo(dataAll) {
				let _dataAll = dataAll
				this.dataForm = _dataAll
				this.isEdit = true
				this.dataAll()
				this.childIndex = -1
				this.collapse()
			},
			collapse() {
				setTimeout(() => {}, 1000);
			},
		},
	}
</script>
<style>
	page {
		background-color: #f0f2f6;
	}
</style>