Stackedit/src/components/modals/providers/CustomAccountModal.vue
2022-07-26 17:14:49 +08:00

110 lines
3.9 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<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>