requestDialog.vue 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. <template>
  2. <van-popup v-model:show="visible">
  3. <van-form @submit="on_submit">
  4. <div class="van-doc-block__title">请示领导</div>
  5. <van-cell-group inset>
  6. <van-field
  7. v-model="form.leader_unit"
  8. label="领导单位:"
  9. placeholder="请选择领导所属单位名称"
  10. :rules="[{ required: true, message: '请选择领导所属单位名称' }]"
  11. />
  12. <van-field
  13. v-model="form.leader_name"
  14. label="领导姓名:"
  15. placeholder="请选择领导姓名"
  16. :rules="[{ required: true, message: '请选择领导姓名' }]"
  17. />
  18. <div style="font-size:14px;color:var(--van-field-label-color);margin-top:10px;padding-left: 15px;">请示信息:</div>
  19. <van-field
  20. required
  21. v-model="form.content"
  22. placeholder="请填写请示信息"
  23. :rules="[{ required: true, message: '请填写请示信息' }]"
  24. rows="3"
  25. autosize
  26. type="textarea"
  27. maxlength="150"
  28. show-word-limit
  29. />
  30. </van-cell-group>
  31. <div style="margin: 3.0vmin;display: flex;
  32. flex-direction: row;
  33. justify-content: flex-end;">
  34. <div style="display: flex; flex-direction: row; justify-content: space-between;">
  35. <van-button @click="closeDialog(false)" style="margin-right:10px;">取 消</van-button>
  36. <van-button type="primary" native-type="submit">确 定</van-button>
  37. </div>
  38. </div>
  39. </van-form>
  40. </van-popup>
  41. </template>
  42. <script lang="ts" setup>
  43. import { getCurrentInstance, ref, watch, defineEmits } from 'vue';
  44. import { addLeaderRequest } from '@/api/emergencyCommandMap/JointDuty';
  45. import { showSuccessToast } from 'vant';
  46. const proxy = getCurrentInstance()?.proxy;
  47. interface Form {
  48. task_id: string;
  49. content: string;
  50. processing_status: string;
  51. feeback_type: string;
  52. leader_unit: string;
  53. leader_name: string;
  54. }
  55. interface Props {
  56. modelValue: boolean;
  57. data: Form;
  58. }
  59. const form = ref<Form>({
  60. task_id: "",
  61. content: "",
  62. processing_status: "",
  63. feeback_type: "",
  64. leader_unit: "",
  65. leader_name: ""
  66. });
  67. const props = withDefaults(defineProps<Props>(), {
  68. modelValue: false
  69. });
  70. const emits = defineEmits(['update:modelValue']);
  71. watch(
  72. () => props.modelValue,
  73. () => {
  74. if (props.modelValue) {
  75. form.value = props.data;
  76. }
  77. visible.value = props.modelValue;
  78. }
  79. );
  80. const visible = ref(false);
  81. const on_submit = () => {
  82. console.log('on_submit');
  83. addLeaderRequest(form.value).then((res) => {
  84. showSuccessToast(res.msg);
  85. closeDialog(true)
  86. }).catch((err) => {
  87. });
  88. };
  89. const closeDialog = (t) => {
  90. emits('update:modelValue', t);
  91. };
  92. </script>
  93. <style lang="scss" scoped>
  94. .van-doc-block__title {
  95. color: var(--van-doc-text-color-4);
  96. margin: 0px;
  97. padding: 3vmin;
  98. font-size: 4.6vmin;
  99. font-weight: 600;
  100. line-height: 6.0vmin;
  101. }
  102. </style>