132 lines
3.2 KiB
Vue
132 lines
3.2 KiB
Vue
<template>
|
|
<div class="position-relative">
|
|
<form>
|
|
<div class="menu-multiselect">
|
|
<multiselect
|
|
v-model="value"
|
|
id="crition-list"
|
|
track-by="entity_id"
|
|
label="entity_title"
|
|
placeholder="جستجو بر اساس عناوین"
|
|
:options="critions"
|
|
:allow-empty="true"
|
|
:searchable="true"
|
|
:clear-on-select="false"
|
|
:close-on-select="true"
|
|
:options-limit="300"
|
|
:limit="10"
|
|
:max-height="600"
|
|
@select="updateValue"
|
|
>
|
|
</multiselect>
|
|
</div>
|
|
|
|
<div class="form-row form-group p-0">
|
|
<label class="col-md-12" for="description">توضیحات</label>
|
|
<textarea
|
|
class="col-md-12 h-auto"
|
|
v-model="value.description"
|
|
name="description"
|
|
cols="30"
|
|
rows="5"
|
|
placeholder="توضیحات را وارد کنید"
|
|
></textarea>
|
|
</div>
|
|
|
|
<div class="popUp-tab__buttons">
|
|
<div class="d-flex justify-content-between flex-grow-1">
|
|
<span> </span>
|
|
|
|
<div class="d-flex">
|
|
<button-component
|
|
classes="btn-outline-primary"
|
|
buttonText="افزودن"
|
|
@click="saveProperty()"
|
|
></button-component>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
|
|
import repoApi from "~/apis/repoApi";
|
|
import { mapState, mapActions } from "pinia";
|
|
import { propertyMixin } from "~/entity/mixins/propertyMixin";
|
|
|
|
export default {
|
|
mixins: [propertyMixin],
|
|
props: {
|
|
data: { type: Object, default: () => ({}) },
|
|
},
|
|
mounted() {
|
|
this.httpService = useNuxtApp()["$http"];
|
|
|
|
const value = this.getPropertyValue(
|
|
this.data.entity,
|
|
this.data.keyName,
|
|
this.data.index
|
|
);
|
|
if (value) this.value = value;
|
|
|
|
this.getCritions();
|
|
},
|
|
data() {
|
|
return {
|
|
value: {
|
|
entity_id: null,
|
|
entity_title: null,
|
|
description: null,
|
|
},
|
|
critions: [],
|
|
httpService: undefined,
|
|
entityType: 3,
|
|
pagination: {
|
|
page: 1,
|
|
pages: 0,
|
|
total: 0,
|
|
offset: 0,
|
|
limit: 500,
|
|
},
|
|
};
|
|
},
|
|
computed: {
|
|
...mapState("list", ["selectedProjectGetter", "selectedItemGetter"]),
|
|
},
|
|
|
|
methods: {
|
|
...mapActions("list", ["SET_SELECTED_PROJECT"]),
|
|
getCritions() {
|
|
if (this.fetchingData) return;
|
|
this.fetchingData = true;
|
|
|
|
let url = repoUrl()+ "crition" +
|
|
repoApi.entity.list.replace("{{type}}", this.entityType) +
|
|
`/${this.pagination.offset}/${this.pagination.limit}`;
|
|
url += "/date_create/desc";
|
|
|
|
this.httpService.getRequest(url).then((res) => {
|
|
const list = [];
|
|
res.hits.hits.forEach((item, key) => {
|
|
list.push({
|
|
entity_id: item._source.id,
|
|
entity_title: item._source.title,
|
|
});
|
|
});
|
|
this.critions = list;
|
|
|
|
this.fetchingData = false;
|
|
});
|
|
},
|
|
|
|
updateValue(selectedCrition) {
|
|
// this.value.entity_id = selectedCrition.id;
|
|
// this.value.entity_title = selectedCrition.title;
|
|
},
|
|
},
|
|
|
|
};
|
|
</script>
|