Re-supply.vue 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. <template>
  2. <el-dialog v-model="state.dialogVisible" draggable title="添加补充发放" @close="close">
  3. <el-form :model="state.ruleForm" label-width="110px" ref="ruleFormRef" :disabled="loading" scroll-to-error>
  4. <el-row :gutter="10">
  5. <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
  6. <el-form-item label="姓名" prop="name" :rules="[{ required: false, message: '请填写姓名', trigger: 'blur' }]">
  7. <el-input v-model="state.ruleForm.name" placeholder="请填写姓名" clearable></el-input>
  8. </el-form-item>
  9. </el-col>
  10. <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
  11. <el-form-item label="卡号" prop="bankCardNo" :rules="[{ required: false, message: '请填写卡号', trigger: 'blur' }]">
  12. <el-input v-model="state.ruleForm.bankCardNo" placeholder="请填写卡号" clearable type="number"></el-input>
  13. </el-form-item>
  14. </el-col>
  15. <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
  16. <el-form-item label="开户行" prop="openBank" :rules="[{ required: false, message: '请填写开户行', trigger: 'blur' }]">
  17. <el-input v-model="state.ruleForm.openBank" placeholder="请填写开户行" clearable></el-input>
  18. </el-form-item>
  19. </el-col>
  20. <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
  21. <el-form-item label="补充金额" prop="replenishAmount" :rules="[{ required: false, message: '请填写补充金额', trigger: 'blur' }]">
  22. <el-input-number v-model="state.ruleForm.replenishAmount" :min="0" :precision="2" class="w100" placeholder="请填写补充金额" />
  23. </el-form-item>
  24. </el-col>
  25. <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
  26. <el-form-item label="补充发放时间" prop="replenishTime" :rules="[{ required: false, message: '请选择补充发放时间', trigger: 'change' }]">
  27. <el-date-picker
  28. v-model="state.ruleForm.replenishTime"
  29. type="datetime"
  30. placeholder="请选择补充发放时间"
  31. class="w100"
  32. value-format="YYYY-MM-DD[T]HH:mm:ss"
  33. />
  34. </el-form-item>
  35. </el-col>
  36. <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
  37. <el-form-item
  38. label="补充奖励类型"
  39. prop="productExpiredTime"
  40. :rules="[{ required: false, message: '请选择补充奖励类型', trigger: 'change' }]"
  41. >
  42. <el-select v-model="state.ruleForm.status" class="w100" placeholder="请选择补充奖励类型">
  43. <el-option v-for="item in state.auditComBox" :label="item.value" :key="item.key" :value="item.key" />
  44. </el-select>
  45. </el-form-item>
  46. </el-col>
  47. <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
  48. <el-form-item label="">
  49. <el-checkbox v-model="state.ruleForm.isSendSMS">发送短信</el-checkbox>
  50. </el-form-item>
  51. </el-col>
  52. <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
  53. <el-form-item label="备注" prop="replenishRemark" :rules="[{ required: true, message: '请填写备注', trigger: 'blur' }]">
  54. <el-input
  55. type="textarea"
  56. :autosize="{ minRows: 6, maxRows: 10 }"
  57. v-model="state.ruleForm.replenishRemark"
  58. placeholder="请填写备注"
  59. maxlength="200"
  60. show-word-limit
  61. ></el-input>
  62. </el-form-item>
  63. </el-col>
  64. </el-row>
  65. </el-form>
  66. <template #footer>
  67. <span class="dialog-footer">
  68. <el-button @click="closeDialog" class="default-button">取 消</el-button>
  69. <el-button type="primary" @click="onSubmit(ruleFormRef)" :loading="loading">确 定</el-button>
  70. </span>
  71. </template>
  72. </el-dialog>
  73. </template>
  74. <script setup lang="tsx" name="noticeDetail">
  75. import { reactive, ref, defineAsyncComponent, computed, unref, FunctionalComponent } from 'vue';
  76. import { throttle } from '@/utils/tools';
  77. import { ElMessage, FormInstance } from 'element-plus';
  78. import { disabledDate } from '@/utils/constants';
  79. import { ElCheckbox } from 'element-plus';
  80. import { addSnapshotBulletin, editSnapshotBulletinBase } from '@/api/snapshot/info';
  81. import { citizenRedEnvelopeApprovalAdditional, getCitizenRedEnvelopeApprovalAdditionalBaseInfo } from '@/api/snapshot/reAudit';
  82. import dayjs from 'dayjs';
  83. // 定义子组件向父组件传值/事件
  84. const emit = defineEmits(['updateList']);
  85. // 定义变量内容
  86. const state = reactive<any>({
  87. dialogVisible: false,
  88. ruleForm: {
  89. name: null, // 姓名
  90. bankCardNo: null, // 卡号
  91. openBank: null, // 开户行
  92. replenishAmount: null, // 补充金额
  93. replenishTime: dayjs().toDate(), // 补充发放时间
  94. productExpiredTime: null, // 补充奖励类型
  95. replenishRemark: null, // 备注
  96. isSendSMS: true, // 发送短信
  97. },
  98. });
  99. let loading = ref<boolean>(false); // 加载状态
  100. // 打开弹窗
  101. const ruleFormRef = ref<RefType>();
  102. const bulletinTypeOptions = ref<EmptyArrayType>([]); // 公告类型
  103. const orgsOptions = ref<EmptyArrayType>([]); // 来源单位
  104. const bulletinSource = ref<EmptyArrayType>([]); // 来源
  105. const openDialog = async (row: any) => {
  106. console.log(row, '测试1231');
  107. loading.value = true;
  108. state.dialogVisible = true;
  109. try {
  110. const responseAnnounce = await editSnapshotBulletinBase();
  111. bulletinTypeOptions.value = responseAnnounce.result?.bulletinType ?? [];
  112. orgsOptions.value = responseAnnounce.result?.orgsOptions ?? [];
  113. bulletinSource.value = responseAnnounce.result?.bulletinSource ?? [];
  114. loading.value = false;
  115. } catch (error) {
  116. console.log(error);
  117. loading.value = true;
  118. }
  119. };
  120. // 获取基础数据
  121. const getBaseData = async () => {
  122. try {
  123. const { result } = await getCitizenRedEnvelopeApprovalAdditionalBaseInfo();
  124. console.log(result, '测试');
  125. } catch (e) {
  126. console.log(e);
  127. }
  128. };
  129. // 保存
  130. const onSubmit = throttle(async (formEl: FormInstance | undefined) => {
  131. if (!formEl) return;
  132. await formEl.validate((valid: boolean) => {
  133. if (!valid) return;
  134. loading.value = true;
  135. const request = {
  136. ...state.ruleForm,
  137. };
  138. citizenRedEnvelopeApprovalAdditional(request)
  139. .then(() => {
  140. loading.value = false;
  141. closeDialog();
  142. emit('updateList');
  143. ElMessage.success('操作成功');
  144. })
  145. .catch(() => {
  146. loading.value = false;
  147. });
  148. });
  149. }, 300);
  150. // 关闭弹窗
  151. const closeDialog = () => {
  152. state.dialogVisible = false;
  153. };
  154. const close = () => {
  155. ruleFormRef.value?.clearValidate();
  156. ruleFormRef.value?.resetFields();
  157. };
  158. // 暴露变量
  159. defineExpose({
  160. openDialog,
  161. closeDialog,
  162. });
  163. </script>