220 lines
5.6 KiB
Vue
220 lines
5.6 KiB
Vue
<template>
|
|
<div class="page">
|
|
<div class="container">
|
|
<form>
|
|
<div class="form-row">
|
|
<div class="col-3">
|
|
<label for=""> انتخاب بخش:</label>
|
|
<multiselect
|
|
:allow-empty="false"
|
|
:searchable="true"
|
|
:close-on-select="true"
|
|
:show-labels="false"
|
|
:value="value"
|
|
:options="options"
|
|
class="multi"
|
|
@select="select"
|
|
label="label"
|
|
track-by="key"
|
|
placeholder="دسته"
|
|
:hide-selected="false"
|
|
:max-height="200"
|
|
>
|
|
</multiselect>
|
|
</div>
|
|
</div>
|
|
<div class="form-row">
|
|
<div class="col-6">
|
|
<label for="">عنوان سوال:</label>
|
|
<input
|
|
type="text"
|
|
class="form-control"
|
|
placeholder="عنوان سوال را کوتاه و واضح وارد نمایید"
|
|
v-model="title"
|
|
/>
|
|
</div>
|
|
<div class="col-6">
|
|
<label for="">نشانی صفحه:</label>
|
|
<input
|
|
type="text"
|
|
class="form-control"
|
|
placeholder="نشانی از همین سامانه انتخاب کنید"
|
|
v-model="link"
|
|
/>
|
|
</div>
|
|
</div>
|
|
<div class="form-row">
|
|
<div class="col">
|
|
<label for="">توضیح کوتاه:</label>
|
|
<input
|
|
type="text"
|
|
placeholder="توضیح مختصر حداکثر یک خط باشد"
|
|
v-model="description"
|
|
maxlength="500"
|
|
/>
|
|
</div>
|
|
</div>
|
|
<div class="form-row">
|
|
<div class="col">
|
|
<label for="" class="mt-2">توضیح مفصل:</label>
|
|
<VueEditor
|
|
dir="rtl"
|
|
v-model="editorData"
|
|
:editorOptions="editorOptions"
|
|
></VueEditor>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
<button class="btn-save" @click="saveData">ذخیره</button>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
<script>
|
|
import searchApi from "~/apis/searchApi";
|
|
import settingsApi from "~/apis/settingsApi";
|
|
|
|
import { VueEditor } from "vue2-editor";
|
|
import { mapState, mapActions } from "pinia";
|
|
import { useStorage } from "@vueuse/core";
|
|
|
|
export default {
|
|
|
|
beforeMount() {
|
|
this.httpService = new HttpService(import.meta.env.VITE_REPO_BASE_URL);
|
|
},
|
|
computed: {
|
|
...mapState(useSearchStore, ["helpSchemaGetter"]),
|
|
...mapState(["organNameGetter"]),
|
|
},
|
|
mounted() {
|
|
let localStoageHelpSchema = useStorage("settingSchema",undefined).value;
|
|
|
|
if (localStoageHelpSchema) {
|
|
let helpSchema = JSON.parse(localStoageHelpSchema);
|
|
this.helpSchemaSetter(helpSchema);
|
|
this.options = this.helpSchemaGetter[0].category;
|
|
} else this.getSchemas();
|
|
|
|
|
|
},
|
|
data() {
|
|
return {
|
|
value: "",
|
|
editorData: "",
|
|
title: "",
|
|
link: "",
|
|
description: "",
|
|
fullDesc: "",
|
|
httpService: undefined,
|
|
options: [{ name: "جستجو" }, { name: "محتوا" }, { name: "مطالعه" }],
|
|
editorOptions: {
|
|
formats: {
|
|
direction: "rtl",
|
|
align: "right",
|
|
},
|
|
placeholder: "توضیحات...",
|
|
// readOnly: true,
|
|
// theme: "snow",
|
|
},
|
|
};
|
|
},
|
|
methods: {
|
|
...mapActions("search", ["helpSchemaSetter"]),
|
|
select(e) {
|
|
this.value = e;
|
|
},
|
|
getSchemas() {
|
|
this.httpService
|
|
.postRequest(searchApi.schema.list, {
|
|
organ: this.organNameGetter,
|
|
system: "setting",
|
|
build_state: buildState(),
|
|
})
|
|
.then((response) => {
|
|
this.helpSchemaSetter(response.data.setting);
|
|
this.options = this.helpSchemaGetter[0].category;
|
|
// this.options = response;
|
|
});
|
|
},
|
|
saveData() {
|
|
var origin = location.origin;
|
|
|
|
let cleaned = this.link;
|
|
if (this.link.startsWith(origin) || this.link == "") {
|
|
cleaned = this.link.replace(origin, "");
|
|
} else {
|
|
let errorMessage = "نشانی پیوند باید با " + origin + "شروع شود";
|
|
this.mySwalToast({
|
|
title: errorMessage,
|
|
// html: response.data.message,
|
|
|
|
icon: "error",
|
|
timer: 7000,
|
|
});
|
|
return "";
|
|
}
|
|
|
|
let payload = {
|
|
value_key: this.value.key,
|
|
value: this.editorData,
|
|
meta : {
|
|
title: this.title,
|
|
link: cleaned,
|
|
description: this.description,
|
|
|
|
}
|
|
}
|
|
|
|
this.httpService
|
|
.postRequest(settingsApi.help.addItem, payload)
|
|
.then((response) => {
|
|
this.mySwalToast({
|
|
title: "با موفقیت ثبت شد",
|
|
// html: response.data.message,
|
|
icon: "success",
|
|
});
|
|
this.resetItem();
|
|
// this.helpSchemaSetter(response.data.setting);
|
|
// this.options = response;
|
|
});
|
|
},
|
|
resetItem() {
|
|
this.title = "";
|
|
this.link = "";
|
|
this.description = "";
|
|
this.editorData = "";
|
|
},
|
|
},
|
|
};
|
|
</script>
|
|
<style scoped lang="scss">
|
|
input {
|
|
border-radius: 0.5rem;
|
|
border: 2px solid rgb(127, 170, 170);
|
|
font-size: 14px;
|
|
height: 3em;
|
|
width: 100%;
|
|
&::placeholder {
|
|
color: #a7a098;
|
|
}
|
|
}
|
|
|
|
.multi {
|
|
// width: 200px;
|
|
border: 2px solid rgb(127, 170, 170);
|
|
border-radius: 0.5rem;
|
|
}
|
|
.btn-save {
|
|
width: 100px;
|
|
height: 2.5em;
|
|
float: left;
|
|
background-color: white;
|
|
margin-top: 0.8em;
|
|
border-radius: 0.5rem;
|
|
border: 2px solid rgb(127, 170, 170);
|
|
}
|
|
.page {
|
|
height: calc(100vh - 5em);
|
|
}
|
|
</style>
|