Examples of code I've written in PHP, Javascript, SCSS, etc.
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 
 
 
 

83 linhas
1.8 KiB

  1. <template>
  2. <div class="support-section" id="main">
  3. <h2>Support</h2>
  4. <loading v-if="loading"></loading>
  5. <div v-if="!loading && complete" class="dialog">
  6. <img class="icon" src="../../images/checked2.svg" alt="">
  7. <h3>Ticket sent. An administrator will contact you soon.</h3>
  8. </div>
  9. <div v-if="!loading && !complete" id="support-form">
  10. <label for="">Topic</label>
  11. <select id="support-topic" name="" v-model="topic">
  12. <option value="order">Order</option>
  13. <option value="service">Service</option>
  14. <option value="credits">Credits</option>
  15. <option value="payment">Payment</option>
  16. <option value="other">Other</option>
  17. </select>
  18. <label for="">Details</label>
  19. <textarea id="" name="" cols="30" rows="10" v-model="message"></textarea>
  20. <span class="note-grey">Include any relevant information like the order number,
  21. service name, etc</span>
  22. <button @click="send">Submit</button>
  23. <p class="error-message">{{errorMessage}}</p>
  24. </div>
  25. </div>
  26. </template>
  27. <script>
  28. import Loading from '../icons/loading.vue'
  29. function send() {
  30. this.errorMessage = ''
  31. if (!this.topic || !this.message) {
  32. this.errorMessage = 'Topic and details cannot be blank.'
  33. return
  34. }
  35. this.loading = true
  36. fetch("/panel/support", {
  37. method: 'POST',
  38. headers: {'Content-Type': 'application/json',
  39. 'Accept': 'application/json',
  40. 'X-XSRF-TOKEN': this.token},
  41. body: JSON.stringify({'topic': this.topic, 'message': this.message})}).
  42. then(response => {
  43. if (response.ok) {
  44. this.complete = true
  45. } else {
  46. this.complete = false
  47. this.error = true
  48. this.errorMessage = `${response.status}:
  49. ${response.statusText}`
  50. }
  51. this.loading = false
  52. })
  53. }
  54. export default {
  55. components: {Loading},
  56. props: ['user', 'token'],
  57. data() {
  58. return {loading: false, complete: false, error: false, errorMessage:
  59. '', topic: null, message: ''}
  60. },
  61. methods: {send}
  62. }
  63. </script>