edit.vue 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. <template>
  2. <div class="edit-popup">
  3. <popup
  4. ref="popupRef"
  5. :title="popupTitle"
  6. :async="true"
  7. width="550px"
  8. @confirm="handleSubmit"
  9. @close="handleClose"
  10. >
  11. <el-form ref="formRef" :model="formData" label-width="120px" :rules="formRules">
  12. <el-form-item label="打印机名称" prop="name">
  13. <el-input v-model="formData.name" placeholder="请输入打印机名称" :maxlength="10" clearable/>
  14. </el-form-item>
  15. <el-form-item label="终端号" prop="finalNumber">
  16. <el-input
  17. v-model="formData.finalNumber"
  18. placeholder="请输入打印机终端号"
  19. clearable
  20. />
  21. </el-form-item>
  22. <!-- <el-form-item label="打印机密钥" prop="secret">-->
  23. <!-- <el-input v-model="formData.secret" placeholder="请输入打印机密钥" clearable />-->
  24. <!-- </el-form-item>-->
  25. <el-form-item label="设备类型" prop="type">
  26. <el-select v-model="formData.type" placeholder="请选择设备类型" disabled>
  27. <el-option label="芯烨云" :value="1"/>
  28. </el-select>
  29. </el-form-item>
  30. <el-form-item label="来单语音设置" prop="timbre">
  31. <el-select v-model="formData.timbre" placeholder="请选择来单语音">
  32. <el-option label="真人语音" :value="0"/>
  33. <el-option label="嘀嘀声" :value="3"/>
  34. <el-option label="静音" :value="4"/>
  35. </el-select>
  36. </el-form-item>
  37. <el-form-item label="打印机音量设置" prop="volume">
  38. <el-select v-model="formData.volume" placeholder="请选择打印机音量">
  39. <el-option label="大" :value="0"/>
  40. <el-option label="中" :value="1"/>
  41. <el-option label="小" :value="2"/>
  42. <el-option label="关闭" :value="3"/>
  43. </el-select>
  44. </el-form-item>
  45. <!-- <el-form-item label="小票模板" prop="mode">-->
  46. <!-- <el-select v-model="formData.mode" placeholder="请选择打印模板">-->
  47. <!-- <el-option label="模板01" :value="1" />-->
  48. <!-- </el-select>-->
  49. <!-- </el-form-item>-->
  50. <!-- <el-form-item label="排序" prop="sort">
  51. <div>
  52. <el-input-number v-model="formData.sort" :min="0" :max="9999" />
  53. <div class="form-tips">默认为0, 数值越大越排前</div>
  54. </div>
  55. </el-form-item> -->
  56. <el-form-item label="状态" prop="status">
  57. <el-switch v-model="formData.status" :active-value="1" :inactive-value="0"/>
  58. </el-form-item>
  59. </el-form>
  60. </popup>
  61. </div>
  62. </template>
  63. <script lang="ts" setup>
  64. import type {FormInstance} from 'element-plus'
  65. // import {articleCateEdit} from '@/api/article'
  66. import Popup from '@/components/popup/index.vue'
  67. import feedback from '@/utils/feedback'
  68. import {addPrinter, editPrinter, getPrinterDetail} from '@/api/shop'
  69. const emit = defineEmits(['success', 'close'])
  70. const formRef = shallowRef<FormInstance>()
  71. const popupRef = shallowRef<InstanceType<typeof Popup>>()
  72. const mode = ref('add')
  73. const popupTitle = computed(() => {
  74. return mode.value == 'edit' ? '编辑' : '新增'
  75. })
  76. const formData = reactive({
  77. id: '',
  78. name: '',
  79. type: 1,
  80. finalNumber: '',
  81. timbre: 0,
  82. volume: 0,
  83. secret: '',
  84. mode: '',
  85. status: 1
  86. })
  87. const formRules = {
  88. name: [
  89. {
  90. required: true,
  91. message: '请输入名称',
  92. trigger: ['blur']
  93. }
  94. ],
  95. type: [
  96. {
  97. required: true,
  98. message: '请选择类型',
  99. trigger: ['blur']
  100. }
  101. ],
  102. finalNumber: [
  103. {
  104. required: true,
  105. message: '请输入终端号',
  106. trigger: ['blur']
  107. }
  108. ],
  109. secret: [
  110. {
  111. required: true,
  112. message: '请输入密钥',
  113. trigger: ['blur']
  114. }
  115. ],
  116. mode: [
  117. {
  118. required: true,
  119. message: '请选择模板',
  120. trigger: ['blur']
  121. }
  122. ]
  123. }
  124. const handleSubmit = async () => {
  125. await formRef.value?.validate()
  126. mode.value == 'edit' ? await editPrinter(formData) : await addPrinter(formData)
  127. feedback.msgSuccess('操作成功')
  128. popupRef.value?.close()
  129. emit('success')
  130. }
  131. const open = (type = 'add') => {
  132. mode.value = type
  133. popupRef.value?.open()
  134. }
  135. const setFormData = (data: Record<any, any>) => {
  136. for (const key in formData) {
  137. if (data[key] != null && data[key] != undefined) {
  138. //@ts-ignore
  139. formData[key] = data[key]
  140. }
  141. }
  142. }
  143. const getDetail = async (row: Record<string, any>) => {
  144. const data = await getPrinterDetail({
  145. id: row.id
  146. })
  147. setFormData(data)
  148. }
  149. const handleClose = () => {
  150. emit('close')
  151. }
  152. defineExpose({
  153. open,
  154. setFormData,
  155. getDetail
  156. })
  157. </script>