You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
483 lines
14 KiB
483 lines
14 KiB
<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 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)" input-align='right'
|
|
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('name')" :required="requiredList.name" label="名称" prop="name">
|
|
<u-input v-model="dataForm.name" :disabled="judgeWrite('name')" @change="changeData('name',-1)"
|
|
input-align='right' 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('monthTime')" :required="requiredList.monthTime" label="隶属月份"
|
|
prop="monthTime">
|
|
<jnpf-date-time v-model="dataForm.monthTime" :disabled="judgeWrite('monthTime')"
|
|
@change="changeData('monthTime',-1)" :startTime="dateTime(false,1,1,'','')"
|
|
:endTime="dateTime(false,1,1,'','')" format="yyyy-MM" 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('type')" :required="requiredList.type" label="单据类型" prop="type">
|
|
<jnpf-radio v-model="dataForm.type" :disabled="judgeWrite('type')" @change="changeData('type',-1)"
|
|
optionType="button" 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('cost')" :required="requiredList.cost" label="费用信息" prop="cost">
|
|
<u-input v-model="dataForm.cost" :disabled="judgeWrite('cost')" @change="changeData('cost',-1)"
|
|
input-align='right' 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('remark')" :required="requiredList.remark" label="备注" prop="remark">
|
|
<u-input v-model="dataForm.remark" :disabled="judgeWrite('remark')"
|
|
@change="changeData('remark',-1)" input-align='right' clearable placeholder="请输入"
|
|
:style='{"width":"100%"}'>
|
|
</u-input>
|
|
</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: '',
|
|
name: '',
|
|
monthTime: '',
|
|
type: '',
|
|
cost: '',
|
|
remark: '',
|
|
creatorTime: "",
|
|
creatorUserId: "",
|
|
lastModifyTime: "",
|
|
lastModifyUserId: "",
|
|
},
|
|
rules: {
|
|
name: [{
|
|
required: true,
|
|
message: '名称请输入',
|
|
}, ],
|
|
monthTime: [{
|
|
required: true,
|
|
message: '隶属月份请选择',
|
|
}, ],
|
|
type: [{
|
|
required: true,
|
|
message: '单据类型不能为空',
|
|
}, ],
|
|
cost: [{
|
|
required: true,
|
|
message: '费用信息请输入',
|
|
}, ],
|
|
},
|
|
typeOptions: [{
|
|
"fullName": "电费",
|
|
"id": "1"
|
|
}, {
|
|
"fullName": "水费",
|
|
"id": "2"
|
|
}, {
|
|
"fullName": "煤气费",
|
|
"id": "3"
|
|
}],
|
|
typeProps: {
|
|
"label": "fullName",
|
|
"value": "id",
|
|
"multiple": false,
|
|
"children": ""
|
|
},
|
|
labelwidth: 210 * 1.5,
|
|
menuId: '',
|
|
jurisdictionType: '',
|
|
ruleList: {},
|
|
interfaceRes: {
|
|
code: [],
|
|
name: [],
|
|
monthTime: [],
|
|
type: [],
|
|
cost: [],
|
|
remark: [],
|
|
creatorTime: [],
|
|
creatorUserId: [],
|
|
lastModifyTime: [],
|
|
lastModifyUserId: [],
|
|
},
|
|
regList: {},
|
|
ableAll: {},
|
|
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/EnergyConsumption/' + 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() {},
|
|
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> |