addBlacklist.vue 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. <template>
  2. <div class="system-add-blackList-container">
  3. <el-dialog v-model="state.isShowDialog" width="500px" draggable title="新增黑名单">
  4. <el-form :model="state.ruleForm" ref="blacklistFormRef" label-width="80px" label-position="left">
  5. <el-row :gutter="35">
  6. <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
  7. <el-form-item label="电话号码" prop="phoneNo" :rules="[{ required: true, message: '请输入电话号码', trigger: 'blur' }
  8. ]">
  9. <el-input v-model="state.ruleForm.phoneNo" placeholder="请输入电话号码" clearable></el-input>
  10. </el-form-item>
  11. </el-col>
  12. <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
  13. <el-form-item label="级别" prop="level" :rules="[{ required: true, message: '请选择级别', trigger: 'change' }]">
  14. <template #label>
  15. <p class="flex-center-align">级别
  16. <el-popover :width="500" trigger="hover">
  17. <template #reference>
  18. <SvgIcon name="ele-QuestionFilled" color="var(--el-color-info)" class="ml5"/>
  19. </template>
  20. <div>
  21. <p>呼入限制:接通后直接挂断</p>
  22. <p>坐席限制:可进入IVR,可使用语音导航功能以及智能机器人(如有),不支持转人工服务,语音导航中屏蔽转人工选项</p>
  23. <p>友情提示:接通后,播放礼貌性提示语后挂断(提示语在呼叫中心配置),提示语内容由业务设定</p>
  24. </div>
  25. </el-popover>
  26. </p>
  27. </template>
  28. <el-select v-model="state.ruleForm.level" placeholder="请选择级别" class="w100">
  29. <el-option v-for="item in state.levelList" :key="item.value" :label="item.label"
  30. :value="item.value" />
  31. </el-select>
  32. </el-form-item>
  33. </el-col>
  34. <!-- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
  35. <el-form-item label="黑名单时长(秒)" prop="duration"
  36. :rules="[{ required: true, message: '请输入时间(秒)', trigger: 'blur' }]">
  37. <el-input-number v-model="state.ruleForm.duration" :precision="0" :min="1" class="w100" />
  38. </el-form-item>
  39. </el-col> -->
  40. <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
  41. <el-form-item label="时间" prop="time"
  42. :rules="[{ required: true, message: '请选择时间', trigger: 'change' }]">
  43. <el-date-picker
  44. v-model="state.ruleForm.time"
  45. type="datetimerange"
  46. range-separator="至"
  47. start-placeholder="开始时间"
  48. end-placeholder="结束时间"
  49. value-format="YYYY-MM-DD[T]HH:mm:ss"
  50. />
  51. </el-form-item>
  52. </el-col>
  53. <el-col :xs="24" :sm="12" :md="24" :lg="24" :xl="24">
  54. <el-form-item label="情况说明" prop="remark" :rules="[{ required: true, message: '请输入情况说明', trigger: 'blur' }]">
  55. <el-input v-model="state.ruleForm.remark" type="textarea" :autosize="{ minRows: 4, maxRows: 6 }" placeholder="请输入情况说明" clearable></el-input>
  56. </el-form-item>
  57. </el-col>
  58. </el-row>
  59. </el-form>
  60. <template #footer>
  61. <span class="dialog-footer">
  62. <el-button @click="closeDialog" class="default-button">取 消</el-button>
  63. <el-button type="primary" @click="onSubmit">保 存</el-button>
  64. </span>
  65. </template>
  66. </el-dialog>
  67. </div>
  68. </template>
  69. <script lang="ts" setup name="addBlacklist">
  70. import { ref, reactive} from 'vue';
  71. import { ElMessage } from 'element-plus';
  72. import { addBlacklist } from '/@/api/tels/blacklist';
  73. // 定义接口来定义对象的类型
  74. interface StateBacklist {
  75. ruleForm: {
  76. phoneNo: string; //电话号码
  77. level: string; //级别
  78. time:Array<any>; // 时间
  79. remark:string; //清空说明
  80. }
  81. isShowDialog: boolean;
  82. levelList: Array<any>; // 级别列表
  83. }
  84. // 定义子组件向父组件传值/事件
  85. const emit = defineEmits(['updateList', 'openDialog', 'closeDialog'])
  86. // 定义变量内容
  87. const blacklistFormRef = ref();
  88. const state = reactive<StateBacklist>({
  89. ruleForm: {
  90. phoneNo: "",
  91. level:'',
  92. time:[],
  93. remark:''
  94. },
  95. isShowDialog: false,
  96. levelList: [
  97. {
  98. label: '呼入限制',
  99. value: 0
  100. },
  101. {
  102. label: '坐席限制',
  103. value: 1
  104. },{
  105. label: '友情提示',
  106. value: 2
  107. },
  108. ],
  109. })
  110. // 打开弹窗
  111. const openDialog = () => {
  112. blacklistFormRef.value?.resetFields();
  113. state.isShowDialog = true;
  114. emit('openDialog')
  115. }
  116. // 关闭弹窗
  117. const closeDialog = () => {
  118. state.isShowDialog = false;
  119. emit('closeDialog')
  120. };
  121. // 新增保存
  122. const onSubmit = () => {
  123. blacklistFormRef.value.validate((valid: boolean) => {
  124. if (valid) {
  125. addBlacklist(state.ruleForm).then(() => {
  126. ElMessage.success("新增成功")
  127. emit("updateList");
  128. state.isShowDialog = false;
  129. })
  130. } else {
  131. return false;
  132. }
  133. });
  134. }
  135. //暴漏变量和方法
  136. defineExpose({ closeDialog, openDialog })
  137. </script>