|
|
@ -1,327 +1,317 @@ |
|
|
|
<template> |
|
|
|
<div> |
|
|
|
<div class="dialog-h-content scroll-h"> |
|
|
|
<el-form |
|
|
|
v-if="iniLoaded" |
|
|
|
ref="ref_form" |
|
|
|
:model="fmData" |
|
|
|
:inline="true" |
|
|
|
:disabled="formType === 'watch'" |
|
|
|
class="m-fm" |
|
|
|
:class="{ 'z-div': editParamsDiv, 'z-watch': formType === 'watch' }" |
|
|
|
> |
|
|
|
<el-form v-if="iniLoaded" |
|
|
|
ref="ref_form" |
|
|
|
:model="fmData" |
|
|
|
:inline="true" |
|
|
|
:disabled="formType === 'watch'" |
|
|
|
class="m-fm" |
|
|
|
:class="{ 'z-div': editParamsDiv, 'z-watch': formType === 'watch' }"> |
|
|
|
<div class="list"> |
|
|
|
<el-form-item |
|
|
|
v-for="item in editParams" |
|
|
|
class="item" |
|
|
|
label-width="140px" |
|
|
|
style="display: block" |
|
|
|
:key="'edit' + item.keyName" |
|
|
|
:label="item.field" |
|
|
|
:prop="item.keyName" |
|
|
|
:rules="item.rules || []" |
|
|
|
> |
|
|
|
<el-form-item v-for="item in editParams" |
|
|
|
class="item" |
|
|
|
label-width="140px" |
|
|
|
style="display: block" |
|
|
|
:key="'edit' + item.keyName" |
|
|
|
:label="item.field" |
|
|
|
:prop="item.keyName" |
|
|
|
:rules="item.rules || []"> |
|
|
|
<template v-if="item.type == 'switch'"> |
|
|
|
<el-switch |
|
|
|
v-model="fmData[item.keyName]" |
|
|
|
size="small" |
|
|
|
:active-text="item.activeText || ''" |
|
|
|
:inactive-text="item.inactiveText || ''" |
|
|
|
:active-value="item.activeValue || true" |
|
|
|
:inactive-value="item.inactiveValue || false" |
|
|
|
> |
|
|
|
<el-switch v-model="fmData[item.keyName]" |
|
|
|
size="small" |
|
|
|
:active-text="item.activeText || ''" |
|
|
|
:inactive-text="item.inactiveText || ''" |
|
|
|
:active-value="item.activeValue || true" |
|
|
|
:inactive-value="item.inactiveValue || false"> |
|
|
|
</el-switch> |
|
|
|
</template> |
|
|
|
|
|
|
|
<template v-if="item.type == 'input'"> |
|
|
|
<el-input |
|
|
|
v-if=" |
|
|
|
<el-input v-if=" |
|
|
|
formType == 'add' || (formType == 'edit' && !item.editDisable) |
|
|
|
" |
|
|
|
v-model="fmData[item.keyName]" |
|
|
|
class="item-input" |
|
|
|
size="small" |
|
|
|
clearable |
|
|
|
show-word-limit |
|
|
|
:maxlength="item.maxlength || ''" |
|
|
|
:placeholder="item.placeholder || '请输入'" |
|
|
|
> |
|
|
|
v-model="fmData[item.keyName]" |
|
|
|
class="item-input" |
|
|
|
size="small" |
|
|
|
clearable |
|
|
|
show-word-limit |
|
|
|
:maxlength="item.maxlength || ''" |
|
|
|
:placeholder="item.placeholder || '请输入'"> |
|
|
|
</el-input> |
|
|
|
|
|
|
|
<div class="item-show" v-else> |
|
|
|
<div class="item-show" |
|
|
|
v-else> |
|
|
|
{{ fmData[item.keyName] || "--" }} |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
|
|
|
|
<template v-if="item.type == 'textarea'"> |
|
|
|
<el-input |
|
|
|
v-if=" |
|
|
|
<el-input v-if=" |
|
|
|
formType == 'add' || (formType == 'edit' && !item.editDisable) |
|
|
|
" |
|
|
|
v-model="fmData[item.keyName]" |
|
|
|
type="textarea" |
|
|
|
class="item-input" |
|
|
|
size="small" |
|
|
|
clearable |
|
|
|
show-word-limit |
|
|
|
:rows="3" |
|
|
|
:maxlength="item.maxlength || ''" |
|
|
|
:placeholder="item.placeholder || '请输入'" |
|
|
|
> |
|
|
|
v-model="fmData[item.keyName]" |
|
|
|
type="textarea" |
|
|
|
class="item-input" |
|
|
|
size="small" |
|
|
|
clearable |
|
|
|
show-word-limit |
|
|
|
:rows="3" |
|
|
|
:maxlength="item.maxlength || ''" |
|
|
|
:placeholder="item.placeholder || '请输入'"> |
|
|
|
</el-input> |
|
|
|
|
|
|
|
<div class="item-show" v-else> |
|
|
|
<div class="item-show" |
|
|
|
v-else> |
|
|
|
{{ fmData[item.keyName] || "--" }} |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
|
|
|
|
<template v-if="item.type == 'date'"> |
|
|
|
<el-date-picker |
|
|
|
v-if=" |
|
|
|
<el-date-picker v-if=" |
|
|
|
formType == 'add' || (formType == 'edit' && !item.editDisable) |
|
|
|
" |
|
|
|
v-model="fmData[item.keyName]" |
|
|
|
:picker-options="item.pickerOptions" |
|
|
|
class="item-input" |
|
|
|
size="small" |
|
|
|
clearable |
|
|
|
show-word-limit |
|
|
|
:value-format="item.format || 'yyyy-MM-dd'" |
|
|
|
:placeholder="item.placeholder || '请输入'" |
|
|
|
> |
|
|
|
v-model="fmData[item.keyName]" |
|
|
|
:picker-options="item.pickerOptions" |
|
|
|
class="item-input" |
|
|
|
size="small" |
|
|
|
clearable |
|
|
|
show-word-limit |
|
|
|
:value-format="item.format || 'yyyy-MM-dd'" |
|
|
|
:placeholder="item.placeholder || '请输入'"> |
|
|
|
</el-date-picker> |
|
|
|
|
|
|
|
<div class="item-show" v-else> |
|
|
|
<div class="item-show" |
|
|
|
v-else> |
|
|
|
{{ fmData[item.keyName] || "--" }} |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
|
|
|
|
<template v-if="item.type == 'number'"> |
|
|
|
<el-input-number |
|
|
|
v-if=" |
|
|
|
<el-input-number v-if=" |
|
|
|
formType == 'add' || (formType == 'edit' && !item.editDisable) |
|
|
|
" |
|
|
|
v-model="fmData[item.keyName]" |
|
|
|
class="item-number" |
|
|
|
size="small" |
|
|
|
clearable |
|
|
|
:precision="item.precision || 0" |
|
|
|
:step="item.step || 1" |
|
|
|
:min="item.min || 0" |
|
|
|
:max="item.max || 999999999999" |
|
|
|
:placeholder="item.placeholder || '请输入'" |
|
|
|
> |
|
|
|
v-model="fmData[item.keyName]" |
|
|
|
class="item-number" |
|
|
|
size="small" |
|
|
|
clearable |
|
|
|
:precision="item.precision || 0" |
|
|
|
:step="item.step || 1" |
|
|
|
:min="item.min || 0" |
|
|
|
:max="item.max || 999999999999" |
|
|
|
:placeholder="item.placeholder || '请输入'"> |
|
|
|
</el-input-number> |
|
|
|
<span class="item-show" v-else> |
|
|
|
<span class="item-show" |
|
|
|
v-else> |
|
|
|
{{ fmData[item.keyName] || "--" }} |
|
|
|
</span> |
|
|
|
<span v-if="item.unitName">({{ item.unitName }})</span> |
|
|
|
</template> |
|
|
|
|
|
|
|
<template v-else-if="item.type == 'select'"> |
|
|
|
<el-select |
|
|
|
v-model="fmData[item.keyName]" |
|
|
|
:placeholder="item.placeholder || '请选择'" |
|
|
|
size="small" |
|
|
|
clearable |
|
|
|
class="item-select" |
|
|
|
:multiple="item.multiple || false" |
|
|
|
:filterable="item.filterable || false" |
|
|
|
:allowCreate="item.allowCreate || false" |
|
|
|
:collapse-tags="item.collapseTags || false" |
|
|
|
default-first-option |
|
|
|
@change="(e) => handleChangeSelect(e, item)" |
|
|
|
> |
|
|
|
<el-select v-model="fmData[item.keyName]" |
|
|
|
:placeholder="item.placeholder || '请选择'" |
|
|
|
size="small" |
|
|
|
clearable |
|
|
|
class="item-select" |
|
|
|
:multiple="item.multiple || false" |
|
|
|
:filterable="item.filterable || false" |
|
|
|
:allowCreate="item.allowCreate || false" |
|
|
|
:collapse-tags="item.collapseTags || false" |
|
|
|
default-first-option |
|
|
|
@change="(e) => handleChangeSelect(e, item)"> |
|
|
|
<template v-if="item.optionType == 'group'"> |
|
|
|
<el-option-group |
|
|
|
v-for="group in item.optionList" |
|
|
|
:key="group.label" |
|
|
|
:label="group.label" |
|
|
|
> |
|
|
|
<el-option |
|
|
|
v-for="subItem in group.optionList" |
|
|
|
:key="subItem.value" |
|
|
|
:label="subItem.label" |
|
|
|
:value="subItem.value" |
|
|
|
> |
|
|
|
<el-option-group v-for="group in item.optionList" |
|
|
|
:key="group.label" |
|
|
|
:label="group.label"> |
|
|
|
<el-option v-for="subItem in group.optionList" |
|
|
|
:key="subItem.value" |
|
|
|
:label="subItem.label" |
|
|
|
:value="subItem.value"> |
|
|
|
</el-option> |
|
|
|
</el-option-group> |
|
|
|
</template> |
|
|
|
<template v-else> |
|
|
|
<el-option |
|
|
|
v-for="(subItem, subIndex) in item.optionList" |
|
|
|
:key="subItem.value + subIndex" |
|
|
|
:label="subItem.label" |
|
|
|
:value="subItem.value" |
|
|
|
> |
|
|
|
<el-option v-for="(subItem, subIndex) in item.optionList" |
|
|
|
:key="subItem.value + subIndex" |
|
|
|
:label="subItem.label" |
|
|
|
:value="subItem.value"> |
|
|
|
</el-option> |
|
|
|
</template> |
|
|
|
</el-select> |
|
|
|
</template> |
|
|
|
|
|
|
|
<template v-else-if="item.type == 'rich-text'"> |
|
|
|
<div |
|
|
|
v-if=" |
|
|
|
<div v-if=" |
|
|
|
formType == 'add' || (formType == 'edit' && !item.editDisable) |
|
|
|
" |
|
|
|
class="item-rich-text" |
|
|
|
> |
|
|
|
<Tinymce |
|
|
|
:ref="'richText' + item.keyName" |
|
|
|
v-model="fmData[item.keyName]" |
|
|
|
:customerId="customerId" |
|
|
|
:placeholder="item.placeholder || '请输入'" |
|
|
|
:height="500" |
|
|
|
/> |
|
|
|
class="item-rich-text"> |
|
|
|
<Tinymce :ref="'richText' + item.keyName" |
|
|
|
v-model="fmData[item.keyName]" |
|
|
|
:customerId="customerId" |
|
|
|
:placeholder="item.placeholder || '请输入'" |
|
|
|
:height="500" /> |
|
|
|
</div> |
|
|
|
<div |
|
|
|
v-else |
|
|
|
class="item-rich-text z-show" |
|
|
|
@click="handleClickHtmlNode" |
|
|
|
> |
|
|
|
<div v-else |
|
|
|
class="item-rich-text z-show" |
|
|
|
@click="handleClickHtmlNode"> |
|
|
|
<div v-html="fmData[item.keyName]"></div> |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
|
|
|
|
<template v-else-if="item.type == 'cascader'"> |
|
|
|
<el-cascader |
|
|
|
v-model="fmData[item.keyName]" |
|
|
|
:placeholder="item.placeholder || '请选择'" |
|
|
|
:options="item.optionList" |
|
|
|
:props="item.optionProps || {}" |
|
|
|
:show-all-levels="false" |
|
|
|
:collapse-tags="item.collapseTags || false" |
|
|
|
size="small" |
|
|
|
clearable |
|
|
|
class="item-select" |
|
|
|
@change="(e) => handleChangeCascader(e, item)" |
|
|
|
> |
|
|
|
<el-cascader v-model="fmData[item.keyName]" |
|
|
|
:placeholder="item.placeholder || '请选择'" |
|
|
|
:options="item.optionList" |
|
|
|
:props="item.optionProps || {}" |
|
|
|
:show-all-levels="false" |
|
|
|
:collapse-tags="item.collapseTags || false" |
|
|
|
size="small" |
|
|
|
clearable |
|
|
|
class="item-select" |
|
|
|
@change="(e) => handleChangeCascader(e, item)"> |
|
|
|
</el-cascader> |
|
|
|
</template> |
|
|
|
|
|
|
|
<template v-else-if="item.type == 'upload'"> |
|
|
|
<el-upload |
|
|
|
:headers="$getElUploadHeaders()" |
|
|
|
v-if=" |
|
|
|
<el-upload :headers="$getElUploadHeaders()" |
|
|
|
v-if=" |
|
|
|
formType == 'add' || (formType == 'edit' && !item.editDisable) |
|
|
|
" |
|
|
|
ref="upload" |
|
|
|
class="avatar-uploader" |
|
|
|
:class="{ 'z-full': fmData[item.keyName].length >= item.limit }" |
|
|
|
:action="item.uploadUrl || uploadUrl" |
|
|
|
:data="{ customerId: customerId }" |
|
|
|
:show-file-list="true" |
|
|
|
:list-type="item.listType || 'picture'" |
|
|
|
:limit="item.limit || 100" |
|
|
|
:file-list="fmData[item.keyName]" |
|
|
|
:on-success="(res, file) => handleImgSuccess(res, file, item)" |
|
|
|
:on-error="(res, file) => handleImgError(res, file, item)" |
|
|
|
:on-remove="(res) => handleImgRemove(res, item)" |
|
|
|
:on-exceed="(res) => handleImgExceed(res, item)" |
|
|
|
:before-upload="(file) => beforeImgUpload(file, item)" |
|
|
|
> |
|
|
|
ref="upload" |
|
|
|
class="avatar-uploader" |
|
|
|
:class="{ 'z-full': fmData[item.keyName].length >= item.limit }" |
|
|
|
:action="item.uploadUrl || uploadUrl" |
|
|
|
:data="{ customerId: customerId }" |
|
|
|
:show-file-list="true" |
|
|
|
:list-type="item.listType || 'picture'" |
|
|
|
:limit="item.limit || 100" |
|
|
|
:file-list="fmData[item.keyName]" |
|
|
|
:on-success="(res, file) => handleImgSuccess(res, file, item)" |
|
|
|
:on-error="(res, file) => handleImgError(res, file, item)" |
|
|
|
:on-remove="(res) => handleImgRemove(res, item)" |
|
|
|
:on-exceed="(res) => handleImgExceed(res, item)" |
|
|
|
:before-upload="(file) => beforeImgUpload(file, item)"> |
|
|
|
<a><i class="el-icon-plus"></i> 点击上传</a> |
|
|
|
</el-upload> |
|
|
|
<el-image |
|
|
|
v-else-if="fmData[item.keyName].length > 0" |
|
|
|
style="width: 100px; height: 100px" |
|
|
|
:src="fmData[item.keyName][0].url" |
|
|
|
fit="cover" |
|
|
|
:preview-src-list="fmData[item.keyName].map((item) => item.url)" |
|
|
|
></el-image> |
|
|
|
<el-image v-else-if="fmData[item.keyName].length > 0" |
|
|
|
style="width: 100px; height: 100px" |
|
|
|
:src="fmData[item.keyName][0].url" |
|
|
|
fit="cover" |
|
|
|
:preview-src-list="fmData[item.keyName].map((item) => item.url)"></el-image> |
|
|
|
<span v-else>--</span> |
|
|
|
</template> |
|
|
|
|
|
|
|
<template v-else-if="item.type == 'address'"> |
|
|
|
|
|
|
|
<div class="address-item"> |
|
|
|
<el-input |
|
|
|
class="address-item-input" |
|
|
|
:placeholder="item.placeholder || '请输入所在地址'" |
|
|
|
v-model="fmData[item.keyName]" |
|
|
|
:maxlength="item.maxlength || ''" |
|
|
|
show-word-limit |
|
|
|
size="small" |
|
|
|
> |
|
|
|
<!-- <el-input class="address-item-input" |
|
|
|
:placeholder="item.placeholder || '请输入所在地址'" |
|
|
|
v-model="fmData[item.keyName]" |
|
|
|
:maxlength="item.maxlength || ''" |
|
|
|
show-word-limit |
|
|
|
size="small"> |
|
|
|
</el-input> |
|
|
|
<el-button |
|
|
|
style="margin-left: 10px" |
|
|
|
type="default" |
|
|
|
size="small" |
|
|
|
ref="mapSearch" |
|
|
|
@click="handleSearchMap(item)" |
|
|
|
>查询</el-button |
|
|
|
> |
|
|
|
<div id="app" class="div_map"></div> |
|
|
|
<div style="margin-top: 10px" v-show="false"> |
|
|
|
<el-button style="margin-left: 10px" |
|
|
|
type="default" |
|
|
|
size="small" |
|
|
|
ref="mapSearch" |
|
|
|
@click="handleSearchMap(item)">查询</el-button> --> |
|
|
|
<el-select v-model="searchValue" |
|
|
|
filterable |
|
|
|
class="item-input" |
|
|
|
remote |
|
|
|
:reserve-keyword="true" |
|
|
|
placeholder="请输入关键词" |
|
|
|
:remote-method="remoteMethod" |
|
|
|
:loading="loading"> |
|
|
|
<el-option v-for="(item,index) in searchOptions" |
|
|
|
@click.native="handleClickKey(index)" |
|
|
|
:key="item.value" |
|
|
|
:label="item.label" |
|
|
|
:value="item.value"> |
|
|
|
</el-option> |
|
|
|
</el-select> |
|
|
|
<div id="app_base" |
|
|
|
class="div_map"></div> |
|
|
|
<div style="margin-top: 10px" |
|
|
|
v-show="false"> |
|
|
|
<span>经度</span> |
|
|
|
<el-input |
|
|
|
class="address-item-input2" |
|
|
|
maxlength="50" |
|
|
|
placeholder="请输入经度" |
|
|
|
v-model="fmData[item.supKeys[0]]" |
|
|
|
> |
|
|
|
<el-input class="address-item-input2" |
|
|
|
maxlength="50" |
|
|
|
placeholder="请输入经度" |
|
|
|
v-model="fmData[item.supKeys[0]]"> |
|
|
|
</el-input> |
|
|
|
<span style="margin-left: 20px">纬度</span> |
|
|
|
<el-input |
|
|
|
class="address-item-input2" |
|
|
|
maxlength="50" |
|
|
|
placeholder="请输入纬度" |
|
|
|
v-model="fmData[item.supKeys[1]]" |
|
|
|
> |
|
|
|
<el-input class="address-item-input2" |
|
|
|
maxlength="50" |
|
|
|
placeholder="请输入纬度" |
|
|
|
v-model="fmData[item.supKeys[1]]"> |
|
|
|
</el-input> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
<el-input v-if=" |
|
|
|
formType == 'add' || (formType == 'edit' && !item.editDisable) |
|
|
|
" |
|
|
|
v-model="fmData[item.keyName]" |
|
|
|
class="item-input" |
|
|
|
size="small" |
|
|
|
clearable |
|
|
|
show-word-limit |
|
|
|
:maxlength="item.maxlength || ''" |
|
|
|
:placeholder="item.placeholder || '请输入'"> |
|
|
|
</el-input> |
|
|
|
|
|
|
|
<div class="item-show" |
|
|
|
v-else> |
|
|
|
{{ fmData[item.keyName] || "--" }} |
|
|
|
</div> |
|
|
|
|
|
|
|
</template> |
|
|
|
|
|
|
|
</el-form-item> |
|
|
|
</div> |
|
|
|
</el-form> |
|
|
|
|
|
|
|
<div class="div_btn resi-btns" v-if="!formBtnFixed"> |
|
|
|
<el-button size="small" @click="handleCancle">{{ |
|
|
|
<div class="div_btn resi-btns" |
|
|
|
v-if="!formBtnFixed"> |
|
|
|
<el-button size="small" |
|
|
|
@click="handleCancle">{{ |
|
|
|
editConfig.cancelBtnName || "取消" |
|
|
|
}}</el-button> |
|
|
|
<el-button |
|
|
|
v-if="formType != 'watch'" |
|
|
|
type="primary" |
|
|
|
size="small" |
|
|
|
:disabled="btnDisable" |
|
|
|
@click="handleComfirm" |
|
|
|
>{{ editConfig.confirmBtnName || "确定" }}</el-button |
|
|
|
> |
|
|
|
<slot |
|
|
|
name="operateSup" |
|
|
|
v-bind:id="formId" |
|
|
|
v-bind:info="fmData" |
|
|
|
v-bind:formType="formType" |
|
|
|
></slot> |
|
|
|
<el-button v-if="formType != 'watch'" |
|
|
|
type="primary" |
|
|
|
size="small" |
|
|
|
:disabled="btnDisable" |
|
|
|
@click="handleComfirm">{{ editConfig.confirmBtnName || "确定" }}</el-button> |
|
|
|
<slot name="operateSup" |
|
|
|
v-bind:id="formId" |
|
|
|
v-bind:info="fmData" |
|
|
|
v-bind:formType="formType"></slot> |
|
|
|
</div> |
|
|
|
|
|
|
|
<slot |
|
|
|
name="bottomSup" |
|
|
|
v-bind:id="formId" |
|
|
|
v-bind:info="fmData" |
|
|
|
v-bind:formType="formType" |
|
|
|
></slot> |
|
|
|
<slot name="bottomSup" |
|
|
|
v-bind:id="formId" |
|
|
|
v-bind:info="fmData" |
|
|
|
v-bind:formType="formType"></slot> |
|
|
|
</div> |
|
|
|
|
|
|
|
<div class="div_btn resi-btns" v-if="formBtnFixed"> |
|
|
|
<el-button size="small" @click="handleCancle">{{ |
|
|
|
<div class="div_btn resi-btns" |
|
|
|
v-if="formBtnFixed"> |
|
|
|
<el-button size="small" |
|
|
|
@click="handleCancle">{{ |
|
|
|
editConfig.cancelBtnName || "取消" |
|
|
|
}}</el-button> |
|
|
|
<el-button |
|
|
|
v-if="formType != 'watch'" |
|
|
|
type="primary" |
|
|
|
size="small" |
|
|
|
:disabled="btnDisable" |
|
|
|
@click="handleComfirm" |
|
|
|
>{{ editConfig.confirmBtnName || "确定" }}</el-button |
|
|
|
> |
|
|
|
<slot |
|
|
|
name="operateSup" |
|
|
|
v-bind:id="formId" |
|
|
|
v-bind:info="fmData" |
|
|
|
v-bind:formType="formType" |
|
|
|
></slot> |
|
|
|
<el-button v-if="formType != 'watch'" |
|
|
|
type="primary" |
|
|
|
size="small" |
|
|
|
:disabled="btnDisable" |
|
|
|
@click="handleComfirm">{{ editConfig.confirmBtnName || "确定" }}</el-button> |
|
|
|
<slot name="operateSup" |
|
|
|
v-bind:id="formId" |
|
|
|
v-bind:info="fmData" |
|
|
|
v-bind:formType="formType"></slot> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</template> |
|
|
@ -394,10 +384,13 @@ export default { |
|
|
|
}, |
|
|
|
}, |
|
|
|
|
|
|
|
data() { |
|
|
|
data () { |
|
|
|
return { |
|
|
|
iniLoaded: false, |
|
|
|
|
|
|
|
searchOptions: [], |
|
|
|
searchValue: '', |
|
|
|
resultList: [], |
|
|
|
loading: false, |
|
|
|
btnDisable: false, |
|
|
|
|
|
|
|
fmData: {}, |
|
|
@ -407,24 +400,26 @@ export default { |
|
|
|
|
|
|
|
uploadUrl: window.SITE_CONFIG["apiURL"] + "/oss/file/uploadqrcodeV2", |
|
|
|
customerId: localStorage.getItem("customerId"), |
|
|
|
|
|
|
|
addressItem: {} |
|
|
|
}; |
|
|
|
}, |
|
|
|
computed: {}, |
|
|
|
watch: { |
|
|
|
editParams: { |
|
|
|
handler() { |
|
|
|
handler () { |
|
|
|
this.computeFmData(); |
|
|
|
}, |
|
|
|
deep: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
|
|
|
|
async mounted() { |
|
|
|
async mounted () { |
|
|
|
this.initForm(); |
|
|
|
}, |
|
|
|
|
|
|
|
methods: { |
|
|
|
async initForm() { |
|
|
|
async initForm () { |
|
|
|
this.iniFmData(); |
|
|
|
|
|
|
|
if (this.formId && this.formType != "add") { |
|
|
@ -432,11 +427,11 @@ export default { |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
computeFmData() { |
|
|
|
computeFmData () { |
|
|
|
console.log(this.fmData); |
|
|
|
}, |
|
|
|
|
|
|
|
iniFmData() { |
|
|
|
iniFmData () { |
|
|
|
const { editParams, fmData, editParamsDiv } = this; |
|
|
|
editParams.forEach((item, index) => { |
|
|
|
if (typeof item.value == "function") { |
|
|
@ -491,6 +486,8 @@ export default { |
|
|
|
} else if (item.type == "address") { |
|
|
|
this.$nextTick(async () => { |
|
|
|
await nextTick(300); |
|
|
|
|
|
|
|
this.addressItem = item |
|
|
|
this.initMap(item); |
|
|
|
}); |
|
|
|
} |
|
|
@ -507,7 +504,7 @@ export default { |
|
|
|
this.iniLoaded = true; |
|
|
|
}, |
|
|
|
|
|
|
|
handleClickHtmlNode(e) { |
|
|
|
handleClickHtmlNode (e) { |
|
|
|
//在判断事件目标节点的时候,考虑到兼容性应该统一转换成大写或小写进行判断 |
|
|
|
if (e.target.localName.toLowerCase() === "a") { |
|
|
|
// 通过判端目标节点以后,就能在这里对其进行操作啦。 |
|
|
@ -516,7 +513,7 @@ export default { |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
async getFmOptions(index, url, params, cookFn) { |
|
|
|
async getFmOptions (index, url, params, cookFn) { |
|
|
|
const { data, code, msg } = await requestPost(url, { |
|
|
|
...params, |
|
|
|
}); |
|
|
@ -529,13 +526,13 @@ export default { |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
handleChangeCascader(vals, item) { |
|
|
|
handleChangeCascader (vals, item) { |
|
|
|
this.fmData[item["keyName"]] = vals; |
|
|
|
if (typeof item.handleChangeFn == "function") { |
|
|
|
item.handleChangeFn(vals, item, this); |
|
|
|
} |
|
|
|
}, |
|
|
|
handleChangeSelect(vals, item) { |
|
|
|
handleChangeSelect (vals, item) { |
|
|
|
console.log(vals, item); |
|
|
|
this.fmData[item["keyName"]] = vals; |
|
|
|
if (typeof item.handleChangeFn == "function") { |
|
|
@ -543,14 +540,14 @@ export default { |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
beforeImgUpload(file, item) { |
|
|
|
beforeImgUpload (file, item) { |
|
|
|
if (typeof item.beforeImgUpload == "function") { |
|
|
|
if (!item.beforeImgUpload(file, item, this)) return false; |
|
|
|
} |
|
|
|
return true; |
|
|
|
}, |
|
|
|
|
|
|
|
handleImgRemove(file, item) { |
|
|
|
handleImgRemove (file, item) { |
|
|
|
console.log("handleImgRemove", file); |
|
|
|
let url = file.response ? file.response.data.url : file.url; |
|
|
|
if (url) { |
|
|
@ -572,7 +569,7 @@ export default { |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
handleImgExceed(res, item) { |
|
|
|
handleImgExceed (res, item) { |
|
|
|
console.log(res); |
|
|
|
// this.$message({ |
|
|
|
// type: "warning", |
|
|
@ -580,7 +577,7 @@ export default { |
|
|
|
// }); |
|
|
|
}, |
|
|
|
|
|
|
|
handleImgSuccess(res, file, item) { |
|
|
|
handleImgSuccess (res, file, item) { |
|
|
|
console.log("handleImgSuccess", res); |
|
|
|
if (res.code === 0 && res.msg === "success") { |
|
|
|
let { fmData } = this; |
|
|
@ -616,16 +613,16 @@ export default { |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
handleImgError(res, file, item) { |
|
|
|
handleImgError (res, file, item) { |
|
|
|
console.log(res); |
|
|
|
}, |
|
|
|
|
|
|
|
// 地图初始化函数,本例取名为init,开发者可根据实际情况定义 |
|
|
|
initMap(item) { |
|
|
|
initMap (item) { |
|
|
|
let { latitude, longitude } = this.$store.state.user; |
|
|
|
|
|
|
|
map = new daiMap( |
|
|
|
document.getElementById("app"), |
|
|
|
document.getElementById("app_base"), |
|
|
|
{ latitude, longitude }, |
|
|
|
{ |
|
|
|
zoom: 16.2, // 设置地图缩放级别 |
|
|
@ -638,10 +635,13 @@ export default { |
|
|
|
map.on("dragend", (e) => { |
|
|
|
this.handleMoveCenter(item, e); |
|
|
|
}); |
|
|
|
// this.handleMoveCenter(item); |
|
|
|
map.setCenter(latitude, longitude); |
|
|
|
map.setMarker(latitude, longitude); |
|
|
|
}, |
|
|
|
|
|
|
|
async handleSearchMap(item) { |
|
|
|
|
|
|
|
|
|
|
|
async handleSearchMap (item) { |
|
|
|
const { msg, data } = await map.searchNearby(this.fmData[item.keyName]); |
|
|
|
if (msg == "success") { |
|
|
|
const { lat, lng } = data; |
|
|
@ -654,7 +654,7 @@ export default { |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
async handleMoveCenter(item, e) { |
|
|
|
async handleMoveCenter (item, e) { |
|
|
|
console.log("handleMoveCenter", e); |
|
|
|
//修改地图中心点 |
|
|
|
const { lat, lng } = map.getCenter(); |
|
|
@ -666,10 +666,60 @@ export default { |
|
|
|
let { msg, data } = await map.getAddress(lat, lng); |
|
|
|
if (msg == "success") { |
|
|
|
this.fmData[item.keyName] = data.address; |
|
|
|
this.searchValue = data.address |
|
|
|
this.searchOptions = [] |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
async getInfo() { |
|
|
|
async remoteMethod (query) { |
|
|
|
|
|
|
|
if (query !== '') { |
|
|
|
this.loading = true; |
|
|
|
|
|
|
|
const { msg, data } = await map.searchNearby(query); |
|
|
|
this.loading = false; |
|
|
|
this.resultList = [] |
|
|
|
|
|
|
|
if (msg == "success" && data.resultList && data.resultList.length > 0) { |
|
|
|
|
|
|
|
if (data.resultList && data.resultList.length > 0) { |
|
|
|
this.resultList = data.resultList |
|
|
|
this.searchOptions = this.resultList.map(item => { |
|
|
|
return { value: `${item.hotPointID}`, label: `${item.address + item.name}` }; |
|
|
|
|
|
|
|
}); |
|
|
|
} |
|
|
|
} else { |
|
|
|
this.searchOptions = [ |
|
|
|
{ |
|
|
|
value: '0', |
|
|
|
label: '未检索到结果' |
|
|
|
} |
|
|
|
] |
|
|
|
} |
|
|
|
} else { |
|
|
|
this.searchOptions = []; |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
handleClickKey (index) { |
|
|
|
let selPosition = this.resultList[index] |
|
|
|
let lonlat = selPosition.lonlat.split(" ") |
|
|
|
map.setCenter(lonlat[1], lonlat[0]); |
|
|
|
map.setMarker(lonlat[1], lonlat[0]); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
this.fmData[this.addressItem.supKeys[0]] = lonlat[1]; |
|
|
|
this.fmData[this.addressItem.supKeys[1]] = lonlat[0]; |
|
|
|
// this.formData.latitude = lonlat[1]; |
|
|
|
// this.formData.longitude = lonlat[0]; |
|
|
|
// this.formData.address = selPosition.address + selPosition.name |
|
|
|
this.fmData[this.addressItem.keyName] = selPosition.address + selPosition.name |
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
async getInfo () { |
|
|
|
let url = this.infoUrl; |
|
|
|
if (!url) return; |
|
|
|
const { idName, formId } = this; |
|
|
@ -710,12 +760,12 @@ export default { |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
watchImg(src) { |
|
|
|
watchImg (src) { |
|
|
|
window.open(src); |
|
|
|
}, |
|
|
|
|
|
|
|
// 过滤文本 |
|
|
|
dormatHtml(content) { |
|
|
|
dormatHtml (content) { |
|
|
|
if ( |
|
|
|
content.startsWith( |
|
|
|
"<!DOCTYPE html>\n<html>\n<head>\n</head>\n<body>\n" |
|
|
@ -727,7 +777,7 @@ export default { |
|
|
|
return content; |
|
|
|
}, |
|
|
|
|
|
|
|
cookBeforeSubmit(data) { |
|
|
|
cookBeforeSubmit (data) { |
|
|
|
Object.keys(data).forEach((k) => { |
|
|
|
if (typeof data[k] == "string") { |
|
|
|
data[k] = this.dormatHtml(data[k]); |
|
|
@ -736,7 +786,7 @@ export default { |
|
|
|
return data; |
|
|
|
}, |
|
|
|
|
|
|
|
async handleComfirm() { |
|
|
|
async handleComfirm () { |
|
|
|
this.btnDisable = true; |
|
|
|
setTimeout(() => { |
|
|
|
this.btnDisable = false; |
|
|
@ -768,7 +818,7 @@ export default { |
|
|
|
}); |
|
|
|
}, |
|
|
|
|
|
|
|
async submit() { |
|
|
|
async submit () { |
|
|
|
const { editConfig, fmData, formType, editFixedParams } = this; |
|
|
|
if ( |
|
|
|
typeof editConfig.beforeSubmit == "function" && |
|
|
@ -808,7 +858,7 @@ export default { |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
handleCancle() { |
|
|
|
handleCancle () { |
|
|
|
this.$emit("close"); |
|
|
|
}, |
|
|
|
}, |
|
|
|