_id.vue 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. <template>
  2. <v-container class="spacing-playground" fluid>
  3. <v-row no-gutters>
  4. <v-col cols="8" class="col detail__main pa-6">
  5. <h2 class="mb-5">Редактирование комментария</h2>
  6. <div class="mb-5">
  7. <strong>Дата создания:</strong> {{ created_at }}
  8. </div>
  9. <div class="mb-5">
  10. <strong>Нужна модерация:</strong> {{ need_moderation ? 'Да' : 'Нет' }}
  11. </div>
  12. <div class="mb-5">
  13. <strong>Пользователь:</strong> {{ user_create }}
  14. </div>
  15. <v-textarea
  16. name="input-1"
  17. label="Комментарий"
  18. hint=""
  19. v-model="message"></v-textarea>
  20. <v-btn class="ml-auto mr-0 pa-6 my-6" @click="updateComment">Сохранить комментарий</v-btn>
  21. </v-col>
  22. <div v-if="result.length" class="message-box">
  23. <v-alert
  24. :key="i"
  25. class="message"
  26. :type="messageClass ? messageClass : 'primary'"
  27. >
  28. {{ result }}
  29. </v-alert>
  30. </div>
  31. </v-row>
  32. </v-container>
  33. </template>
  34. <script>
  35. import VueTimepicker from "vue2-timepicker";
  36. import "vue2-timepicker/dist/VueTimepicker.css";
  37. export default {
  38. components: {
  39. VueTimepicker,
  40. },
  41. methods: {
  42. updateComment() {
  43. this.$axios.post("admin/comments/edit", this.commentItem).then((res) => {
  44. this.result = "Комментарий обновлен";
  45. if(res.data.success){
  46. setTimeout(() => {
  47. this.$router.push("/admin/comments");
  48. }, 500);
  49. }else{
  50. this.notificationHandler('Ошибка обновления комментария', true);
  51. return " ";
  52. }
  53. }).catch((err) => {
  54. this.notificationHandler('Ошибка обновления комментария', true);
  55. return " ";
  56. });
  57. },
  58. notificationHandler(message, error) {
  59. this.messageClass = false;
  60. this.result = message;
  61. if (error) {
  62. this.messageClass = "error";
  63. }
  64. const interva = setTimeout(() => {
  65. this.result = "";
  66. }, 10000);
  67. },
  68. },
  69. data() {
  70. return {
  71. messageClass: "",
  72. result: "",
  73. message: "",
  74. id: "",
  75. created_at: "",
  76. need_moderation: "",
  77. user_create: ""
  78. };
  79. },
  80. validations: {},
  81. layout: "admin",
  82. // Компьютед
  83. computed: {
  84. commentItem() {
  85. return {
  86. id: this.$route.params.id,
  87. message: this.message,
  88. };
  89. },
  90. },
  91. mounted() {
  92. this.$axios.$get("/admin/comments/item/" + this.$route.params.id).then((res) => {
  93. return res;
  94. }).then((res) => {
  95. this.message = res.data.message;
  96. this.created_at = res.data.created_at;
  97. this.need_moderation = res.data.need_moderation;
  98. this.user_create = res.data.user_create_for_admin && res.data.user_create_for_admin.first_name.length ? res.data.user_create_for_admin.first_name : 'Гость';
  99. });
  100. },
  101. };
  102. </script>
  103. <style lang="less">
  104. </style>