gxd-vue-library
Version:
依赖与element Ui插件库,聚福宝福利PC端插件库
438 lines (437 loc) • 17.7 kB
Plain Text
<template>
<div class="xd-base-field">
<el-form
v-if="formStatus"
class="xd-base-field-warpper"
:ref="refID"
:model="form"
:rules="rules"
:label-width="labelWidth"
@submit.native.prevent
>
<template v-for="(item) in uiList">
<div
class="el-title"
:class="[getClass(item),item.extendClass]"
v-if="item.ele === 'title'"
v-show="item.label"
@click="handleGroup(item)"
>
<div v-html="item.label"></div>
<div class="el-title-icon" v-if="isGroupHide">
<i v-if="groupStatus[`group_id_${item.group_id}`]" class="el-icon-arrow-up"></i>
<i v-else class="el-icon-arrow-down"></i>
</div>
</div>
<slot v-else-if="item.ele === 'slot'" :name="item.slot" :form="form" :width="labelWidth"></slot>
<el-form-item
v-else
:label="item.ele === 'line'?'':item.label"
:prop="getProp(item)"
:class="[
getCustomClass(item),
(groupStatus[`group_id_${item.group_id}`] === undefined ? '': (groupStatus[`group_id_${item.group_id}`]?'':'jfb-icon-hidden')),
item.extendClass]"
>
<div
class="xd-base-field__box"
:class="{ is_inline: getInline(item),is_block: !getInline(item)}"
>
<template v-if="item.ele === 'el-input'">
<el-input
v-model="form[item.valueKey]"
:type="item['type']"
:class="item['classNmae'] || item['className'] ? (item['classNmae'] || item['className']): 'input40'"
:placeholder="item['placeholder']"
:disabled="item['disabled'] === undefined ? false: item['disabled']"
:autosize="item['type'] === 'textarea' ? textareaSize: false"
:maxlength="item['max']"
:minlength="item['min']"
@input="handleElInout(item.valueKey)"
clearable
></el-input>
</template>
<template v-if="item.ele === 'el-html'">
<div v-html="item.value"></div>
</template>
<div
v-else-if="item.ele === 'line'"
class="line-x"
:class="{'cus-indent': item.indent}"
><span v-html="item.label"></span></div>
<!--动态表单(公有)-->
{{each files}}
<template v-else-if="item.ele === '{{$value.value}}'">
<{{$value.value}}
v-model="form[item['valueKey']]"
:disabled="item['disabled'] === undefined ? false: item['disabled']"
:placeholder="item['placeholder']"
:default-value="item['value']"
:setting="item['setting']"
:size="item['size']"
:maps="item['maps']"
:key="item['isKey'] ? item['key'] : item['valueKey']"
:cus-refresh="item['refresh'] || 'refresh'"
:use-custom-rule="item['useCustomRules']"
:required="getRequire(item['rules'])"
:handle-custom="item['handleCustom']"
:list="item['list']"
{{if $value.value === 'xd-cascade'}}
:class="((item['className'] && !isPC) ?'input100' : item['className']) || ''"
{{else}}
:class="item['className'] || ''"
{{/if}}
></{{$value.value}}>
</template>
{{/each}}
<!--动态表单(公有) 结束-->
<!--动态表单(私有)-->
{{each privateFiles}}
<template v-else-if="item.ele === '{{$value.value}}'">
<{{$value.value}}
v-model="form[item['valueKey']]"
:disabled="item['disabled'] === undefined ? false: item['disabled']"
:placeholder="item['placeholder']"
:default-value="item['value']"
:setting="item['setting']"
:size="item['size']"
:cus-refresh="item['refresh'] || 'refresh'"
:maps="item['maps']"
:key="item['isKey'] ? item['key'] : item['valueKey']"
:use-custom-rule="item['useCustomRules']"
:required="getRequire(item['rules'])"
:handle-custom="item['handleCustom']"
:list="item['list']"
{{if $value.value === 'xd-cascade'}}
:class="((item['className'] && !isPC) ?'input100' : item['className']) || ''"
{{else}}
:class="item['className'] || ''"
{{/if}}
></{{$value.value}}>
</template>
{{/each}}
<!--动态表单(私有) 结束-->
<template v-else-if="item.ele === 'xd-remote-select'">
<xd-remote-input
:placeholder="item['placeholder']"
:width="item['width'] || '30%'"
:default-value="item['value']"
:multiple="item['multiple']"
:remote-search="item['remoteSearch']"
:disabled="item['disabled'] === undefined ? false: item['disabled']"
:collapse-tags="item['collapseTags']"
:class="item['className'] || ''"
:mode="item['mode'] || false"
v-model="form[item['valueKey']]"
></xd-remote-input>
</template>
<template v-else-if="item.ele === 'xd-select-list'">
<xd-select-list
:clearable="true"
v-model="form[item['valueKey']]"
:placeholder="item['placeholder']"
:default-value="item['value']"
:size="size"
:list="item['list']"
:multiple="item['multiple']"
:collapse-tags="item['collapseTags'] !== undefined ? item['collapseTags']: true"
:class="item['classNmae'] || item['className'] ? (item['classNmae'] || item['className']): 'input20'"
:disabled="item['disabled'] === undefined ? false: item['disabled']"
></xd-select-list>
</template>
<template v-else-if="item.ele === 'xd-select-status'">
<xd-select-status
:default-value="item['value']"
v-model="form[item['valueKey']]"
:placeholder="item['placeholder']"
:type-value="item['backValueType'] || 1"
:type="item['list']"
:is-all="item['isAll']||item['isall']"
:size="size"
:class="item['classNmae'] || item['className'] ? (item['classNmae'] || item['className']): 'input20'"
:disabled="item['disabled'] === undefined ? false: item['disabled']"
></xd-select-status>
</template>
<template v-else-if="item.ele === 'xd-radio-status'">
<xd-radio-status
:key="item['isKey'] ? item['key'] : item['valueKey']"
:default-value="item['value']"
v-model="form[item['valueKey']]"
:placeholder="item['placeholder']"
:type="item['list']"
:type-value="item['backValueType'] || 1"
:disabled="item['disabled'] === undefined ? false: item['disabled']"
></xd-radio-status>
</template>
<template v-else-if="item.ele === 'xd-radio'">
<xd-radio-list
:key="item['isKey'] ? item['key'] : item['valueKey']"
:default-value="item['value']"
v-model="form[item['valueKey']]"
:placeholder="item['placeholder']"
:list="item['list']"
:border="item['border'] || false"
:disabled="item['disabled'] === undefined ? false: item['disabled']"
></xd-radio-list>
</template>
<template v-else-if="item.ele === 'xd-switch'">
<xd-switch
:default-value="item['value']"
v-model="form[item['valueKey']]"
:showTips="item['showTips']"
:list="item['list']"
:type-value="item['backValueType']"
:color="item['color']"
:disabled="item['disabled'] === undefined ? false: item['disabled']"
></xd-switch>
</template>
<template v-else-if="item.ele === 'xd-check'">
<xd-check-list
:key="item['isKey'] ? item['key'] : item['valueKey']"
:default-value="item['value']"
v-model="form[item['valueKey']]"
:list="item['list']"
:size="size"
:disabled="item['disabled'] === undefined ? false: item['disabled']"
></xd-check-list>
</template>
<template v-else-if="item.ele === 'xd-range'">
<xd-range
v-model="form[`xdRange__${item['valueKey'].join('__')}`]"
:placeholder="item['placeholder']"
:size="size"
:width="item['width']"
:disabled="item['disabled'] === undefined ? false: item['disabled']"
></xd-range>
</template>
<template v-else-if="item.ele === 'xd-time-picker'">
<el-time-picker
is-range
v-model="form[item['valueKey']]"
range-separator="至"
:start-placeholder="item['placeholder'][0]"
:end-placeholder="item['placeholder'][1]"
:value-format="item['formatValue']"
:format="item['format']"
:selectableRange="item['selectableRange'] ? item['selectableRange']: []"
></el-time-picker>
</template>
<template v-else-if="item.ele === 'xd-date-range'">
<el-date-picker
v-model="form[`xdDate__${item['valueKey'].join('__')}`]"
type="datetimerange"
class="xd-search__datetimerange"
:picker-options="getTimeOptions(item)"
range-separator="至"
:start-placeholder="item['placeholder'][0]"
:end-placeholder="item['placeholder'][1]"
:value-format="item['formatValue']"
:format="item['format']"
align="right"
:disabled="item['disabled'] === undefined ? false: item['disabled']"
>
</el-date-picker>
</template>
<template v-else-if="item.ele === 'xd-date'">
<el-date-picker
v-model="form[item['valueKey']]"
type="datetime"
:placeholder="item['placeholder']"
:value-format="item['formatValue']"
:format="item['format']"
:disabled="item['disabled'] === undefined ? false: item['disabled']"
:picker-options="getTimeOptions(item, false)"
>
</el-date-picker>
</template>
<template v-else-if="item.ele === 'xd-transfer'">
<xd-transfer
:default-value="item['value']"
:left-default-value="item['left']"
:right-default-value="item['right']"
v-model="form[item['valueKey']]"
:title="item['title']"
:placeholder="item['placeholder']"
:list="item['list']"
></xd-transfer>
</template>
<template v-else-if="item.ele === 'xd-upload'">
<div v-if="item['styleType'] === 'one'" style="width: 100%">
<el-input
v-if="!item['slot']"
class="xd-base-field__upload-input"
disabled
:class="item['elinputClassName']"
v-model="form[item['valueKey']]['url']"
></el-input>
<xd-upload
:disabled="item['disabled'] || false"
v-if="item.styleType === 'one'"
style-type="one"
v-model="form[item['valueKey']]"
:default-value="item['defaultValue']"
:action="item['action']"
:qiniu-cdn="item['qiniuCdn']"
:size="item['size']"
:type="item['type']"
:radius="0.5"
:pixel-size="item['pixelSize']||''"
:upload-type="item['uploadType']"
:tips="item['tipsformet']"
:showtype="true"
:item="item"
@success="handleSuccess"
@onApiSuccessUrl="handleApiSuccessUrl"
@onGetParamsAndHeader="handleGetParamsAndHeader"
>
<template
v-if="item['slot']"
slot-scope="scope"
>
<slot :name="`upload_${item['valueKey']}`">
<div
class="xd-base-field__upload"
:class="{has:scope.image.path}"
:style="{width: getWH(item, true),height: getWH(item, false)}"
>
<xd-font-icon
class="xd-base-field__upload-icon"
icon="iconjia"
:size="getWHIcon(item)"
:color="!scope.image.path?'#999': 'rgba(0,0,0,0)'"
></xd-font-icon>
<img :src="scope.image.path"/>
</div>
</slot>
</template>
</xd-upload>
</div>
<xd-upload
:disabled="item['disabled'] || false"
v-if="item.styleType === 'auth'"
style-type="auth"
v-model="form[item['valueKey']]"
:default-value="item['defaultValue']"
:action="item['action']"
:qiniu-cdn="item['qiniuCdn']"
:size="item['size']"
:pixel-size="item['pixelSize']||''"
:type="item['type']"
:radius="5"
:upload-type="item['uploadType']"
:showtype="true"
:tips="item['tipsformet']"
@success="handleSuccess"
@onApiSuccessUrl="handleApiSuccessUrl"
@onGetParamsAndHeader="handleGetParamsAndHeader"
>
</xd-upload>
<xd-upload
:disabled="item['disabled'] || false"
v-if="item.styleType === 'list'"
style-type="list"
v-model="form[item['valueKey']]"
:default-value="item['defaultValue']"
:action="item['action']"
:qiniu-cdn="item['qiniuCdn']"
:size="item['size']"
:pixel-size="item['pixelSize']||''"
:type="item['type']"
:radius="5"
:upload-type="item['uploadType']"
:showtype="true"
:tips="item['tipsformet']"
:sort="item['sort'] || false"
:maxlen="item['maxlen']"
@success="handleSuccess"
@onApiSuccessUrl="handleApiSuccessUrl"
@onGetParamsAndHeader="handleGetParamsAndHeader"
>
</xd-upload>
</template>
<template v-else-if="item.ele === 'xd-over-add-price'">
<xd-over-add-price
:size="size"
:default-value="item['defaultValue']"
:keys="item['valueKey']"
:list="item['list']"
:unit="item['unit']"
:disabled="item['disabled'] === undefined ? false: item['disabled']"
v-model="form[getItemToFormKey(item, 'xdOverAddPrice')]"
></xd-over-add-price>
</template>
<template v-else-if="item.ele === 'xd-select-week-time'">
<xd-select-week-time
:size="size"
:default-value="item['defaultValue']"
:keys="item['valueKey']"
:list="item['list']"
:collapse="true"
:time-type="timeType"
:disabled="item['disabled'] === undefined ? false: item['disabled']"
v-model="form[getItemToFormKey(item, 'xdSelectWeekTime')]"
></xd-select-week-time>
</template>
<template v-else-if="item.ele === 'xd-remote-cascader'">
<xd-remote-cascader
:placeholder="item['placeholder']"
v-model="form[item['valueKey']]"
:default-value="item['value']"
:disabled="item['disabled'] === undefined ? false: item['disabled']"
:remote-search="item['handleChildren']"
:multiple="item['multiple']"
:notice="item['tips']"
:required="getRequire(item['rules'])"
></xd-remote-cascader>
</template>
<template v-else-if="item.ele === 'xd-cascade-select'">
<xd-cascade-select
v-model="form[item['valueKey']]"
@loadChildren="item['handleChildren']"
:default-value="item['value']"
:disabled="item['disabled'] === undefined ? false: item['disabled']"
:multiple="item['multiple']"
:required="getRequire(item['rules'])"
>
</xd-cascade-select>
</template>
<template v-else-if="item.ele === 'xd-tinymce'">
<xd-tinymce
:disabled="item['disabled'] === undefined ? false: item['disabled']"
v-model="form[item['valueKey']]"
:image-config="item['imageConfig'] || null"
:height="item['height'] || 400"
@success="handleSuccess"
@onApiSuccessUrl="handleApiSuccessUrl"
@onGetParamsAndHeader="handleGetParamsAndHeader"
></xd-tinymce>
</template>
<template v-else-if="item.ele === 'xd-range-group'">
<xd-range-group
:size="size"
:keys="item.keys"
:placeholder="item['placeholder']"
:default-value="item['defaultValue']"
:tip="item['tips']"
v-model="form[item['valueKey']]"
:disabled="item['disabled'] === undefined ? false: item['disabled']"
></xd-range-group>
</template>
<template v-else-if="item.ele === 'xd-set-label'">
<xd-set-label
:disabled="item['disabled'] === undefined ? false: item['disabled']"
:keys="item.keys"
:list="item['list']"
:defaultValue="item.defaultValue"
v-model="form[item['valueKey']]"
></xd-set-label>
</template>
<template v-if="item['unit'] || item['notice']">
<div class="xd-form-notice" v-html="item.unit || item.notice"></div>
</template>
</div>
</el-form-item>
</template>
</el-form>
</div>
</template>