金币系统前端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

210 lines
5.9 KiB

3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
  1. <template>
  2. <div class="add-goldenbeen">
  3. <div class="head-top">新增充值</div>
  4. <div class="add-box">
  5. <el-form
  6. :model="beenObj"
  7. ref="ruleFormRef"
  8. :rules="rules"
  9. label-width="auto"
  10. style="max-width: 600px"
  11. class="add-form"
  12. >
  13. <el-form-item prop="jwcode" label="精网号">
  14. <el-input v-model="beenObj.jwcode" style="width: 220px" />
  15. <el-button
  16. type="primary"
  17. @click="getUser(beenObj.jwcode)"
  18. style="margin-left: 20px"
  19. >查询</el-button
  20. >
  21. </el-form-item>
  22. <el-form-item prop="type" label="充值类型">
  23. <el-radio-group v-model="beenObj.type">
  24. <el-radio :value="0">增加</el-radio>
  25. <el-radio :value="1">减少</el-radio>
  26. </el-radio-group>
  27. </el-form-item>
  28. <div style="display: flex">
  29. <el-form-item prop="payBeean" label="付费金豆">
  30. <el-input-number
  31. v-model="beenObj.payBeean"
  32. :controls="false"
  33. :min="0"
  34. />
  35. </el-form-item>
  36. <el-form-item prop="freeBeean" label="免费金豆">
  37. <el-input-number
  38. v-model="beenObj.freeBeean"
  39. :controls="false"
  40. :min="0"
  41. />
  42. </el-form-item>
  43. </div>
  44. <el-form-item prop="remark" label="备注">
  45. <el-input
  46. v-model="beenObj.remark"
  47. style="width: 300px"
  48. :rows="2"
  49. maxlength="100"
  50. show-word-limit
  51. type="textarea"
  52. />
  53. </el-form-item>
  54. <!-- <el-form-item prop="submitter" label="提交人">
  55. <el-input
  56. style="width: 300px"
  57. :value="beenObj.submitter"
  58. disabled
  59. placeholder="提交人姓名"
  60. />
  61. </el-form-item> -->
  62. <el-form-item>
  63. <div class="btn-group">
  64. <el-button @click="resetData(ruleFormRef)">重置</el-button>
  65. <el-button type="primary" @click="addBean(ruleFormRef)">
  66. 提交
  67. </el-button>
  68. </div>
  69. </el-form-item>
  70. </el-form>
  71. <!-- 客户信息栏 -->
  72. <el-card>
  73. <el-text size="large" style="margin-left: 20px">客户信息</el-text>
  74. <div class="custom-box">
  75. <el-text>姓名:{{ user.nickname }}</el-text>
  76. <el-text>当前付费金豆:{{ user.jinbiBuy }}</el-text>
  77. <el-text>精网号:{{ user.jwcode }}</el-text>
  78. <el-text>当前免费金豆:{{ user.jinbiFree }}</el-text>
  79. <!-- <el-text>负责客服:</el-text> -->
  80. <el-text>消费次数:{{ user.number }}</el-text>
  81. <el-text>所属门店:{{ user.masterShop }}</el-text>
  82. </div>
  83. </el-card>
  84. </div>
  85. </div>
  86. </template>
  87. <script setup lang="ts">
  88. import { reactive, ref } from 'vue'
  89. import API from '@/util/http'
  90. import type { FormInstance } from 'element-plus'
  91. import { ElMessage } from 'element-plus'
  92. type userType = {
  93. [key: string]: number | string
  94. }
  95. const ruleFormRef = ref<FormInstance>()
  96. const beenObj = ref({
  97. jwcode: '',
  98. remark: '',
  99. type: 0, //0是加1是减
  100. payBeean: 0,
  101. freeBeean: 0
  102. })
  103. let user: userType = reactive({})
  104. const rules = ref({
  105. jwcode: [{ required: true, message: '请输入精网号', trigger: 'blur' }],
  106. remark: [{ required: true, message: '请输入备注', trigger: 'blur' }],
  107. // submitter: [{ required: true, message: '请输入提交人', trigger: 'blur' }],
  108. type: [{ required: true, message: '请选择充值类型', trigger: 'change' }],
  109. payBeean: [{ required: true, message: '请输入付费金豆', trigger: 'blur' }],
  110. freeBeean: [{ required: true, message: '请输入免费金豆', trigger: 'blur' }]
  111. })
  112. const addBean = (formEl) => {
  113. // 提交表单
  114. try {
  115. formEl.validate(async (valid) => {
  116. if (valid) {
  117. // 处理表单提交逻辑
  118. const result = await API({
  119. url: '/dou/add',
  120. data: {
  121. jwcode: beenObj.value.jwcode,
  122. content: beenObj.value.remark,
  123. moneyFree: Number(beenObj.value.freeBeean),
  124. moneyBuy: Number(beenObj.value.payBeean),
  125. time: Math.floor(Date.now() / 1000),
  126. data: beenObj.value.type
  127. }
  128. })
  129. if (result.code === 200) {
  130. ElMessage.success('充值成功')
  131. beenObj.value.jwcode = ''
  132. beenObj.value.remark = ''
  133. beenObj.value.payBeean = 0
  134. beenObj.value.freeBeean = 0
  135. } else if (result.code === 0) {
  136. ElMessage.error(result.msg)
  137. return
  138. }
  139. console.log('请求成功', result)
  140. } else {
  141. ElMessage.error('表单验证失败')
  142. }
  143. })
  144. } catch (error) {
  145. ElMessage.error('提交失败')
  146. }
  147. }
  148. const resetData = (formEl) => {
  149. if (!formEl) return
  150. formEl.resetFields()
  151. }
  152. const getUser = async function (jwcode) {
  153. try {
  154. // 发送POST请求
  155. const result = await API({
  156. url: '/dou/search',
  157. data: {
  158. jwcode: jwcode
  159. }
  160. })
  161. if (result.code === 0) {
  162. ElMessage.error(result.msg)
  163. } else {
  164. if (!result.data.jwcode) {
  165. ElMessage.error('精网号不存在')
  166. return
  167. }
  168. Object.assign(user, result.data)
  169. }
  170. } catch (error) {
  171. console.log('请求失败', error)
  172. ElMessage.error('查询失败,请检查精网号是否正确')
  173. }
  174. }
  175. </script>
  176. <style scoped>
  177. .add-box {
  178. display: flex;
  179. justify-content: center;
  180. align-items: center;
  181. column-gap: 50px;
  182. }
  183. .btn-group {
  184. display: flex;
  185. justify-content: flex-end;
  186. width: 100%;
  187. }
  188. .custom-box {
  189. padding: 20px;
  190. display: flex;
  191. flex-wrap: wrap;
  192. align-items: center;
  193. row-gap: 20px;
  194. box-sizing: border-box;
  195. .el-text {
  196. width: 200px;
  197. }
  198. }
  199. .el-card {
  200. width: 500px;
  201. }
  202. .head-top {
  203. padding: 20px;
  204. box-sizing: border-box;
  205. box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
  206. margin-bottom: 20px;
  207. border-radius: 5px;
  208. }
  209. </style>