微信小程序,访客邀约
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。
 
 
 
 
 

165 行
4.4 KiB

  1. // https://pinia.esm.dev/introduction.html
  2. import { defineStore } from 'pinia'
  3. import {GQLRequest, PinyinHelper, Session} from "../utils";
  4. import {gql} from "graphql-tag";
  5. import {ContactData} from "./contacts";
  6. import {ref, Ref, UnwrapRef} from "vue";
  7. import Taro from "@tarojs/taro";
  8. import dayjs from "dayjs";
  9. export interface ContactVisitRecord {
  10. id: number
  11. visitorId: number
  12. userId: number
  13. receiverName?: string
  14. receiverPhone?: string
  15. recordStatus?: number
  16. visitDate: string
  17. visitCode?: string
  18. }
  19. export const useContactVisitRecordStore = defineStore('contact-visit-record', () => {
  20. const visitRecord: Ref<UnwrapRef<ContactVisitRecord|null>> = ref(null)
  21. function reset() {
  22. visitRecord.value = null
  23. }
  24. function setContact(contactItem: ContactData) {
  25. contact.value = contactItem
  26. console.log("setContact", contact.value)
  27. }
  28. function setNewAvatar(avatar: string) {
  29. contactNewAvatar.value = avatar
  30. }
  31. const GET_VISIT_RECORD = gql`
  32. query ($visitorId: ID, $limit: Int ) {
  33. visitRecords(visitorId: $visitorId, limit: $limit) {
  34. id
  35. visitorId
  36. userId
  37. visitDate
  38. visitorCode
  39. }
  40. }
  41. `
  42. const CREATE_VISIT_RECORD = gql`
  43. mutation CreateVisitRecord($staffId: ID!, $visitorId: ID!, $visitDate: Date!) {
  44. createVisitRecord( staffId: $staffId, input: {
  45. visitorId: $visitorId,
  46. visitDate: $visitDate,
  47. } ) {
  48. id
  49. visitorId
  50. userId
  51. visitDate
  52. visitorCode
  53. }
  54. }
  55. `
  56. const UPDATE_VISIT_RECORD = gql`
  57. mutation UpdateVisitRecord($staffId: ID!, $visitRecordId: ID!, $visitorId: ID!, $visitDate: Date!) {
  58. updateVisitRecord( staffId: $staffId, input: {
  59. id: $visitRecordId,
  60. visitorId: $visitorId,
  61. visitDate: $visitDate,
  62. } ) {
  63. id
  64. visitorId
  65. userId
  66. visitDate
  67. visitorCode
  68. }
  69. }
  70. `
  71. function getVisitRecord(visitorId: string) {
  72. reset()
  73. const limit = 1
  74. return new Promise((resolve, reject) => {
  75. GQLRequest.query(GET_VISIT_RECORD, { visitorId, limit })
  76. .then(result=> {
  77. if (result.code == 500) {
  78. reject("Network Error")
  79. } else {
  80. console.log("result", result)
  81. if (result.data.visitRecords.length > 0) {
  82. const item = result.data.visitRecords[0]
  83. createData(item)
  84. }
  85. resolve(visitRecord.value)
  86. }
  87. })
  88. .catch(e => {
  89. reject()
  90. })
  91. })
  92. }
  93. function createData(item: any) {
  94. const todayString = dayjs().format("YYYY-MM-DD")
  95. const dateDiff = dayjs(todayString + " 00:00:00").diff(dayjs(item.visitDate, "YYYY-MM-DD"))
  96. if (dateDiff <= 0) {
  97. visitRecord.value = {
  98. id: item.id,
  99. visitorId: item.visitorId,
  100. userId: item.userId,
  101. receiverName: undefined,
  102. receiverPhone: undefined,
  103. recordStatus: undefined,
  104. visitDate: item.visitDate,
  105. visitCode: undefined,
  106. } as ContactVisitRecord
  107. }
  108. }
  109. function save(visitorId: string, date: string) {
  110. return new Promise((resolve, reject) => {
  111. if (visitRecord.value) {
  112. updateVisitRecord(visitRecord.value.id, visitorId, date).then(r => resolve(r))
  113. .catch(e => reject(e))
  114. }
  115. else {
  116. createVisitRecord(visitorId, date).then(r => resolve(r))
  117. .catch(e => reject(e))
  118. }
  119. })
  120. }
  121. function createVisitRecord(visitorId: string, visitDate: string) {
  122. const staffId = Session.get("staff").id
  123. return new Promise((resolve, reject) => {
  124. GQLRequest.query(CREATE_VISIT_RECORD, { staffId, visitorId, visitDate })
  125. .then(r=> {
  126. if (r.code == 500) reject("Network Error")
  127. else {
  128. console.log(r)
  129. createData(r.data.createVisitRecord)
  130. resolve(r)
  131. }
  132. })
  133. .catch(e=> reject(e))
  134. })
  135. }
  136. function updateVisitRecord(visitRecordId: string, visitorId: string, visitDate: string) {
  137. const staffId = Session.get("staff").id
  138. return new Promise((resolve, reject) => {
  139. GQLRequest.query(UPDATE_VISIT_RECORD, { staffId, visitRecordId, visitorId, visitDate })
  140. .then(r=> {
  141. if (r.code == 500) reject("Network Error")
  142. else resolve(r)
  143. })
  144. .catch(e=> reject(e))
  145. })
  146. }
  147. return { visitRecord, getVisitRecord , save , reset}
  148. })