priceAssistant.vue 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. <template>
  2. <div>
  3. <a-button type="primary" @click="showDrawer">调价助手</a-button>
  4. <a-modal
  5. v-model:open="visible"
  6. class="custom-class"
  7. title="调价助手"
  8. placement="right"
  9. :closable="false"
  10. >
  11. <a-form ref="formRef" :model="form" layout="vertical">
  12. <a-row :gutter="16">
  13. <a-col :span="24">
  14. <a-form-item label="调价方式">
  15. <a-radio-group v-model:value="form.manner" name="radioGroup">
  16. <a-radio :value="1">按金额</a-radio>
  17. <a-radio :value="0">按百分比</a-radio>
  18. </a-radio-group>
  19. </a-form-item>
  20. </a-col>
  21. <a-col :span="24">
  22. <a-form-item label="调价规则">
  23. <a-radio-group v-model:value="form.cardinality" name="radioGroup">
  24. <a-radio :value="1">上浮</a-radio>
  25. <a-radio :value="0">下调</a-radio>
  26. </a-radio-group>
  27. </a-form-item>
  28. </a-col>
  29. <a-col :span="12">
  30. <a-form-item label="调整量">
  31. <a-input :suffix="form.manner == 1?'RMB':'%'" v-model:value="form.coefficient" placeholder="输入调整量"></a-input>
  32. </a-form-item>
  33. </a-col>
  34. <a-col :span="24" v-if="form.manner == 0">
  35. <a-slider v-model:value="form.coefficient" :min="-100" :max="100" :step="10" :tipFormatter="tipFormatter" @change="sliderChange">
  36. </a-slider>
  37. </a-col>
  38. </a-row>
  39. </a-form>
  40. <template #footer>
  41. <a-space>
  42. <a-button @click="onClose">关闭</a-button>
  43. <a-button @click="reloadPrice">重置单据价格</a-button>
  44. <a-button type="primary" @click="submit">保存</a-button>
  45. </a-space>
  46. </template>
  47. </a-modal>
  48. </div>
  49. </template>
  50. <script setup>
  51. import {ref,defineProps,defineEmits} from 'vue'
  52. import { message } from 'ant-design-vue';
  53. import Api from '@/api/api'
  54. import utils from '@/utils/utils'
  55. const props = defineProps(['id'])
  56. const emit = defineEmits(['onSuccess'])
  57. const visible = ref(false)
  58. const form = ref({
  59. sa_itempriceadjustid:props.id,
  60. manner:1,
  61. cardinality:1,
  62. coefficient:0
  63. })
  64. const showDrawer = ()=>{
  65. visible.value = true
  66. }
  67. const formRef = ref()
  68. const onClose = () => {
  69. visible.value = false;
  70. formRef.value.resetFields();
  71. };
  72. const reloadPrice = async ()=>{
  73. const res = await Api.post({
  74. "id":202212003011904,
  75. "content":{
  76. "sa_itempriceadjustid":props.id,
  77. }
  78. })
  79. utils.message(res,'重置成功',()=>{
  80. form.value = {
  81. sa_itempriceadjustid:props.id,
  82. manner:1,
  83. cardinality:1,
  84. coefficient:0
  85. }
  86. emit('onSuccess')
  87. onClose()
  88. })
  89. }
  90. const submit = async ()=>{
  91. try {
  92. // const values = await formRef.value.validateFields();
  93. const res = await Api.requested({
  94. id:20221027095504,
  95. content:form.value
  96. })
  97. utils.message(res,'调整成功',()=>{
  98. emit('onSuccess')
  99. onClose()
  100. })
  101. } catch (errorInfo) {
  102. console.log('Failed:', errorInfo);
  103. }
  104. }
  105. const tipFormatter = (val)=>{
  106. if (val > 0)
  107. return '上浮' + val + '%'
  108. if(val == 0)
  109. return '正常价格'
  110. if (val < 0)
  111. return '下调' + val + '%'
  112. }
  113. const sliderChange = (val)=>{
  114. if (val > 0) {
  115. form.value.cardinality = 1
  116. } else {
  117. form.value.cardinality = 0
  118. }
  119. }
  120. </script>
  121. <style>
  122. </style>