AdvancedSearch.vue 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. <template>
  2. <div class="advancedSearch">
  3. <div>
  4. <el-input type="textarea" v-model="condition" :rows="3" placeholder='高级检索语句,例:TI=(石墨烯 NOT 石墨烯薄膜 OR "graphene film") AND AD=2018 AND GD=20180205~20190101'></el-input>
  5. <div style="display:flex;justify-content: flex-end;margin-top:20px">
  6. <el-button type="danger" plain size="small" style="width:100px" @click="cancel">清空</el-button>
  7. <el-button type="primary" size="small" style="width:100px" @click="search">检索</el-button>
  8. </div>
  9. </div>
  10. <div>
  11. <div>
  12. <div><b>表达式与语法:</b></div>
  13. 检索条件表达式,可支持AND、OR、NOT等逻辑运算符号(不区分大小写)和等于(=)比较符号,其中:<br>
  14. 1、日期栏位的值支持yyyy. yyyyMM、 yyyyMMdd等格式;已知时间的连续范围为“2006-02-02”到“2009-01-01”,应输入:<span class="red">AD=20060202~20090101</span>;注意:日期的范围检索必须精确到日。<br>
  15. 2、专利类型(PT)栏位的值包括:1、8 为发明 检索发明,2、9 为新型,3 为外观(注意:仅中国专利);例:<span class="red">PT=1</span><br>
  16. 3、法律状态(LG)栏位的值包括:1:有效、2:失效、3:审中(注意:仅中国专利);例:<span class="red">LG=1</span><br>
  17. 4、国家〔地区)相关栏位的值为国家地区代码,需要大写,例如:CN代表中国、US代表美国、JP代表日本等;<br>
  18. 5、搜索条件中有空格把整个搜索条件前后加上英文双引号,例如:<span class="red">TI=(石墨烯 NOT 石墨烯薄膜 OR "graphene film") AND AD=2018 AND GD=20180205~20190101</span>;<br>
  19. </div>
  20. <div>
  21. <div><b>检索栏位包括:</b></div>
  22. <div class="field">
  23. <p v-for="item in field.filter(item=>{return item.type != (this.DBType=='WD'?1:2)})" :key="item.label"><span style="color:red">{{ item.value }}</span>:{{ item.label }}</p>
  24. </div>
  25. <div><b>省市代码(仅中国专利):</b></div>
  26. <div v-html="changeRed('province')">
  27. </div>
  28. <div><b>国别代码:</b></div>
  29. <div style="display:flex;flex-wrap:wrap;justify-content: space-between;">
  30. <span v-for="(item) in countryList" :key="item.value"><span class="red">{{ item.value }}</span>&nbsp;{{ item.label }}&nbsp;&nbsp;</span>
  31. </div>
  32. </div>
  33. </div>
  34. </div>
  35. </template>
  36. <script>
  37. export default {
  38. name:'AdvancedSearch',
  39. components: {},
  40. props:['countryList','DBType','editData'],
  41. data() {
  42. return {
  43. condition:'',
  44. field:this.$constants.searchField,
  45. };
  46. },
  47. watch: {
  48. },
  49. computed: {},
  50. created() {},
  51. mounted() {
  52. this.field = [].concat(...this.field.map(item=>{return item.children}))
  53. if(this.editData && this.editData.component == 'AdvancedSearch'){
  54. if(this.editData.data){
  55. this.$set(this,'condition',this.editData.data)
  56. }
  57. }
  58. },
  59. methods: {
  60. changeRed(val){
  61. if(val == 'province'){
  62. var str = ' 北京 12 天津 13 河北 14 山西 15 内蒙 21 辽宁 22 吉林 23 黑龙江 31 上海 32 江苏 33'
  63. +'浙江 34 安徽 35 福建 36 江西 37 山东 41 河南 42 湖北 43 湖南 44 广东 45 广西 51 四'
  64. +'川 52 贵州 53 云南 54 西藏 61 陕西 62 甘肃 63 青海 64 宁夏 65 新疆 66 海南 71 台'
  65. +'湾 81 广州 83 武汉 85 重庆 87 西安 89 沈阳 91 大连 93 哈尔滨 94 深圳 95 青岛 97 宁'
  66. +'波 HK 香港'
  67. var regx = new RegExp("[0-9A-Z]+", "g")
  68. }
  69. return "<span style='color:red'>11 </span>"+str.replace(regx,"<span style='color:red'>&nbsp;&nbsp; $& </span>")
  70. },
  71. cancel(){
  72. this.condition = ''
  73. },
  74. search(){
  75. var a = this.condition
  76. // if(a.trim().indexOf('(')!=0){
  77. // a = `${a}`
  78. // }
  79. var params = {
  80. DBType:this.DBType,
  81. component:'AdvancedSearch'
  82. }
  83. this.$emit('search',a.trim(),params)
  84. },
  85. },
  86. };
  87. </script>
  88. <style lang="scss" scoped>
  89. .advancedSearch{
  90. padding: 10px;
  91. }
  92. .field{
  93. display: flex;
  94. flex-wrap:wrap;
  95. p{
  96. width:200px;
  97. margin:5px;
  98. }
  99. }
  100. .red{
  101. color:red
  102. }
  103. </style>