order-remarks.vue 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. <!-- 编辑弹窗 -->
  2. <template>
  3. <ele-modal form :width="760" v-model="visible" title="回收订单备注" @open="handleOpen">
  4. <el-form ref="formRef" :model="form" :rules="rules" label-width="80px">
  5. <el-form-item label="选择标签" prop="label">
  6. <el-radio-group v-model="form.label">
  7. <el-radio v-for="item in tags" :value="item" :key="item"><el-icon :color="item" :size="18">
  8. <Flag />
  9. </el-icon></el-radio>
  10. </el-radio-group>
  11. </el-form-item>
  12. <el-form-item label="备注信息" prop="remark">
  13. <el-input :rows="4" type="textarea" v-model="form.remark" placeholder="请输入备注" />
  14. </el-form-item>
  15. </el-form>
  16. <orderTimeline title="备注历史记录" :orderId="form.orderId"></orderTimeline>
  17. <template #footer>
  18. <el-button @click="handleCancel">关闭</el-button>
  19. <el-button type="primary" @click="handleSubmit">确定</el-button>
  20. </template>
  21. </ele-modal>
  22. </template>
  23. <script setup>
  24. import { ref, reactive, nextTick } from 'vue';
  25. import { Flag, ChatDotSquare } from '@element-plus/icons-vue';
  26. import { EleMessage } from 'ele-admin-plus';
  27. import orderTimeline from '@/views/recycleOrder/components/order-timeline.vue';
  28. import request from '@/utils/request';
  29. const tags = reactive(['green', 'blue', 'yellow', 'red', 'purple']);
  30. /** 弹窗是否打开 */
  31. const visible = defineModel({ type: Boolean });
  32. /** 关闭弹窗 */
  33. const handleCancel = () => {
  34. visible.value = false;
  35. };
  36. const form = ref({
  37. orderId: '',
  38. label: '',
  39. remark: ''
  40. });
  41. /** 弹窗打开事件 */
  42. const handleOpen = (data) => {
  43. visible.value = true;
  44. nextTick(() => {
  45. data && (form.value.orderId = data.orderId);
  46. });
  47. };
  48. /** 确定 /order/orderInfo/addRemark */
  49. const formRef = ref(null);
  50. const handleSubmit = () => {
  51. formRef.value.validate((valid) => {
  52. if (valid) {
  53. request.post('/order/orderInfo/addRemark', form.value).then((res) => {
  54. if (res.data.code === 200) {
  55. EleMessage.success('操作成功');
  56. handleCancel();
  57. emit('refresh');
  58. } else {
  59. EleMessage.error(res.data.msg);
  60. }
  61. });
  62. }
  63. });
  64. };
  65. /** 表单验证规则 */
  66. const rules = reactive({
  67. label: [
  68. {
  69. required: true,
  70. message: '请选择标签',
  71. type: 'string',
  72. trigger: 'change'
  73. }
  74. ],
  75. remark: [
  76. {
  77. required: true,
  78. message: '请输入备注信息',
  79. type: 'string',
  80. trigger: 'blur'
  81. }
  82. ]
  83. });
  84. defineExpose({
  85. handleOpen
  86. });
  87. </script>