110 lines
3.9 KiB
Vue
110 lines
3.9 KiB
Vue
<template>
|
||
<modal-inner aria-label="链接自定义图床账号">
|
||
<div class="modal__content">
|
||
<div class="modal__image">
|
||
<icon-provider provider-id="custom"></icon-provider>
|
||
</div>
|
||
<p>将您的<b>自定义图床</b>账号链接到<b>StackEdit中文版</b>。</p>
|
||
<form-entry label="自定义标识" error="name">
|
||
<input slot="field" class="textfield" type="text" v-model.trim="name" @keydown.enter="resolve()">
|
||
<div class="form-entry__info">
|
||
自定义标识如果一样会覆盖之前的自定义图床账号。
|
||
</div>
|
||
</form-entry>
|
||
<form-entry label="上传图片接口地址" error="uploadUrl">
|
||
<input slot="field" class="textfield" type="text" v-model.trim="uploadUrl" @keydown.enter="resolve()">
|
||
<div class="form-entry__info">
|
||
填入您个人的图床上传接口地址,上传接口仅支持POST提交。
|
||
</div>
|
||
</form-entry>
|
||
<form-entry label="文件参数名" error="fileParamName">
|
||
<input slot="field" class="textfield" type="text" v-model.trim="fileParamName" @keydown.enter="resolve()">
|
||
<div class="form-entry__info">
|
||
文件参数名如:file
|
||
</div>
|
||
</form-entry>
|
||
<form-entry label="自定义请求头配置" error="customHeaders">
|
||
<input slot="field" class="textfield" type="text" v-model.trim="customHeaders" @keydown.enter="resolve()">
|
||
<div class="form-entry__info">
|
||
非必填,自定义请求头是JSON字符串格式,如:{"token": "..."}
|
||
</div>
|
||
</form-entry>
|
||
<form-entry label="自定义FORM参数设置" error="customParams">
|
||
<input slot="field" class="textfield" type="text" v-model.trim="customParams" @keydown.enter="resolve()">
|
||
<div class="form-entry__info">
|
||
非必填,自定义FORM参数是JSON字符串格式,如:{"param1": "..."}
|
||
</div>
|
||
</form-entry>
|
||
<form-entry label="响应图片URL参数" error="resultUrlParam">
|
||
<input slot="field" class="textfield" type="text" v-model.trim="resultUrlParam" @keydown.enter="resolve()">
|
||
<div class="form-entry__info">
|
||
响应JSON中图片URL的路径,如 data.url
|
||
</div>
|
||
</form-entry>
|
||
</div>
|
||
<div class="modal__button-bar">
|
||
<button class="button" @click="config.reject()">取消</button>
|
||
<button class="button button--resolve" @click="resolve()">确认</button>
|
||
</div>
|
||
</modal-inner>
|
||
</template>
|
||
|
||
<script>
|
||
import modalTemplate from '../common/modalTemplate';
|
||
|
||
export default modalTemplate({
|
||
computedLocalSettings: {
|
||
name: 'name',
|
||
uploadUrl: 'uploadUrl',
|
||
fileParamName: 'fileParamName',
|
||
customHeaders: 'customHeaders',
|
||
customParams: 'customParams',
|
||
resultUrlParam: 'resultUrlParam',
|
||
},
|
||
methods: {
|
||
resolve() {
|
||
if (!this.name) {
|
||
this.setError('name');
|
||
}
|
||
if (!this.uploadUrl) {
|
||
this.setError('uploadUrl');
|
||
}
|
||
if (!this.fileParamName) {
|
||
this.setError('fileParamName');
|
||
}
|
||
if (!this.resultUrlParam) {
|
||
this.setError('resultUrlParam');
|
||
}
|
||
let customHeaders = null;
|
||
if (this.customHeaders) {
|
||
try {
|
||
customHeaders = JSON.parse(this.customHeaders);
|
||
} catch (err) {
|
||
this.setError('customHeaders');
|
||
return;
|
||
}
|
||
}
|
||
let customParams = null;
|
||
if (this.customParams) {
|
||
try {
|
||
customParams = JSON.parse(this.customParams);
|
||
} catch (err) {
|
||
this.setError('customParams');
|
||
return;
|
||
}
|
||
}
|
||
if (this.uploadUrl && this.fileParamName) {
|
||
this.config.resolve({
|
||
name: this.name,
|
||
uploadUrl: this.uploadUrl,
|
||
fileParamName: this.fileParamName,
|
||
resultUrlParam: this.resultUrlParam,
|
||
customHeaders,
|
||
customParams,
|
||
});
|
||
}
|
||
},
|
||
},
|
||
});
|
||
</script>
|