Operator.vue 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <template>
  2. <div>
  3. <a-form-item :label="$t('network_waf_statement.label.operator')" v-bind="formLayout">
  4. <a-select v-if="isEdit" v-model="value">
  5. <a-select-option v-for="item in operatorOptions" :value="item.value" :key="item.value">
  6. {{item.label}}
  7. </a-select-option>
  8. </a-select>
  9. <box-show v-else :value="showValue" />
  10. </a-form-item>
  11. </div>
  12. </template>
  13. <script>
  14. import WafMixin from '../../mixins/waf'
  15. import BoxShow from './BoxShow'
  16. import WindowsMixin from '@/mixins/windows'
  17. export default {
  18. name: 'OperatorStatement',
  19. components: {
  20. BoxShow,
  21. },
  22. mixins: [WindowsMixin, WafMixin],
  23. props: {
  24. type: String,
  25. value: String,
  26. isEdit: Boolean,
  27. },
  28. data () {
  29. return {
  30. formLayout: {
  31. wrapperCol: {
  32. span: 20,
  33. },
  34. labelCol: {
  35. span: 4,
  36. },
  37. },
  38. }
  39. },
  40. computed: {
  41. operatorOptions () {
  42. // 根据不同type返回
  43. if (this.type === 'Size') {
  44. return [
  45. { label: this.$t('network_waf_statement.size.EQ'), value: 'EQ' },
  46. { label: this.$t('network_waf_statement.size.NE'), value: 'NE' },
  47. { label: this.$t('network_waf_statement.size.LE'), value: 'LE' },
  48. { label: this.$t('network_waf_statement.size.LT'), value: 'LT' },
  49. { label: this.$t('network_waf_statement.size.GE'), value: 'GE' },
  50. { label: this.$t('network_waf_statement.size.GT'), value: 'GT' },
  51. ]
  52. }
  53. return [
  54. { label: this.$t('network_waf_statement.operator.Exactly'), value: 'Exactly' },
  55. { label: this.$t('network_waf_statement.operator.StartsWith'), value: 'StartsWith' },
  56. { label: this.$t('network_waf_statement.operator.EndsWith'), value: 'EndsWith' },
  57. { label: this.$t('network_waf_statement.operator.Contains'), value: 'Contains' },
  58. { label: this.$t('network_waf_statement.operator.ContainsWord'), value: 'ContainsWord' },
  59. { label: this.$t('network_waf_statement.operator.Regex'), value: 'Regex' },
  60. ]
  61. },
  62. showValue () {
  63. const operator = this.operatorOptions.filter(item => item.value.toLowerCase() === (this.value || '').toLowerCase())
  64. if (operator && operator.length) {
  65. return operator[0].label
  66. } else {
  67. return this.value
  68. }
  69. },
  70. },
  71. watch: {
  72. },
  73. created () {
  74. },
  75. methods: {
  76. },
  77. }
  78. </script>