order-remarks.vue 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  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 :records="activities" 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. } else {
  58. EleMessage.error(res.data.msg);
  59. }
  60. });
  61. }
  62. });
  63. };
  64. /** 表单验证规则 */
  65. const rules = reactive({
  66. label: [
  67. {
  68. required: true,
  69. message: '请选择标签',
  70. type: 'string',
  71. trigger: 'change'
  72. }
  73. ],
  74. remark: [
  75. {
  76. required: true,
  77. message: '请输入备注信息',
  78. type: 'string',
  79. trigger: 'blur'
  80. }
  81. ]
  82. });
  83. const activities = [
  84. {
  85. content: 'Event start',
  86. timestamp: '2018-04-15',
  87. color: '#0bbd87',
  88. icon: ChatDotSquare
  89. },
  90. {
  91. content: 'Approved',
  92. timestamp: '2018-04-13',
  93. color: '#0bbd87',
  94. icon: ChatDotSquare
  95. },
  96. {
  97. content: 'Success',
  98. timestamp: '2018-04-11',
  99. color: '#0bbd87',
  100. icon: ChatDotSquare
  101. }
  102. ];
  103. defineExpose({
  104. handleOpen
  105. });
  106. </script>