vue組件(25)做一個更好用的查詢控件(一)多種查詢方式

查詢?nèi)?/h1>

查詢功能由三個要素組成:查詢字段烟央、查詢關(guān)鍵字、查詢方式

一般的查詢側(cè)重前兩項歪脏,比如按照手機號查詢疑俭、按照訂單號查詢等等。

但是查詢方式呢婿失?往往都是只設(shè)置了一種钞艇,比如查詢手機號,只能是模糊查詢豪硅,包含要查的數(shù)字就算哩照,不會做更詳細(xì)的區(qū)分。

比如我想查138 開頭的手機號懒浮,那么中間可以能出現(xiàn)138 飘弧,我想查0318結(jié)尾的手機號,那么0318也可能出現(xiàn)在中間砚著。

一般的情況下次伶,如果客戶不是特意強調(diào)需求的話,一個字段只會給出一個查詢方式稽穆,不會提供其他備選的查詢方式冠王。

這個,是不是不夠靈活秧骑?

所以我想做一個更靈活的查詢控件版确,首先就要實現(xiàn)多種查詢方式。

那么有多少種查詢方式呢乎折?簡單的整理了一下

/**
 * 查詢方式
 * * 數(shù)字 =绒疗、<>、>=骂澄、<=吓蘑、between
 * * 字符串 =、不等于、包含磨镶、起始于溃蔫、結(jié)束于
 * * 日期時間 =、between
*/
export const findKindList = {
  // 字符串
  401: { // 等于 字符
    id: 401,
    name: '=',
    where: '{col} = "{key}"'
  },
  402: { // 不等于 字符
    id: 402,
    name: '不等',
    where: '{col} <> "{key}"'
  },
  403: { // 包含 字符
    id: 403,
    name: '包含',
    where: '{col} like "%{key}%"'
  },
  404: { // 不包含 字符
    id: 404,
    name: '不包含',
    where: '{col} not like "%{key}%"'
  },
  405: { // 起始于 字符
    id: 405,
    name: '起始于',
    where: '{col} like "{key}%"'
  },
  406: { // 結(jié)束于 字符
    id: 406,
    name: '結(jié)束于',
    where: '{col} like "%{key}"'
  },
  // 數(shù)字
  411: { // 等于 數(shù)字
    id: 411,
    name: '等于',
    where: '{col} = {key}'
  },
  412: { // 不等于 數(shù)字
    id: 412,
    name: '不等于',
    where: '{col} <> {key}'
  },
  413: { // 大于 數(shù)字
    id: 413,
    name: '>',
    where: '{col} > {key}'
  },
  414: { // 大于等于 數(shù)字
    id: 414,
    name: '>=',
    where: '{col} >= {key}'
  },
  415: { // 小于 數(shù)字
    id: 415,
    name: '<',
    where: '{col} < {key}'
  },
  416: { // 小于等于 數(shù)字
    id: 416,
    name: '<=',
    where: '{col} <= {key}'
  },
  417: { // 范圍 數(shù)字
    id: 417,
    name: '從',
    where: '{col} between {key1} and {key2}'
  },
  // 多選組
  420: {
    id: 420,
    name: 'in',
    where: '{col} in ({key})'
  }
}

基本是這些琳猫,然后就是日期的查詢方式伟叛,這個比較亂。

以前只是“等于日期”脐嫂,日期范圍就可以了统刮,但是現(xiàn)在日期控件不僅可以提供日期,還可以提供“年月”账千、“年”侥蒙、“年周”這類的形式。

而且后端也出現(xiàn)了用int或者char的類型來存放日期數(shù)據(jù)匀奏。

那么綜合起來要如何做查詢呢鞭衩?

似乎排列組合的結(jié)果有點多。

等于
日期娃善、日期+時間论衍、年月、年周

范圍
開始日期 + 結(jié)束日期会放、年月(比如202101)饲齐、年周(比如202104)、年(比如2021)
開始年月+結(jié)束年月咧最、開始年周+結(jié)束年周捂人、開始年份 + 結(jié)束年份

大于小于的情況。

其中年月矢沿,就是指的某一個月份滥搭,比如202101,指的是2021年01月01日到 2021年01月31日

有的時候只是查一個月的范圍捣鲸,那么也就沒必要選擇開始日期+結(jié)束日期的形式瑟匆,或者開始年月+結(jié)束年月這么麻煩。

所以日期的查詢還是很麻煩的栽惶,目前是想用兩個角度的分類愁溜。

首先按照查詢條件來分:等于、范圍外厂、大于冕象、小于
然后按照日期類型來分:日期、日期+時間汁蝶、年月渐扮、年周论悴、年

這樣避免羅列組合的數(shù)量。另外還有一個顯示格式和交給后端的格式的問題墓律。這就要看后端期待什么格式了膀估,是字符串的‘2021-01-01’的形式,還是標(biāo)識的日期格式耻讽,或者是時間戳察纯。

總是很麻煩,那么為啥要考慮這么多呢齐饮?因為就是這些事情捐寥,前端不愛管笤昨,后端也不愛管祖驱,那么誰來管?只能是做控件的來操心了呀瞒窒,要不然豈不是封裝了個寂寞捺僻。。崇裁。

所以還是需要一些時間來完善的匕坯。

目前是這樣的,比較簡陋


0001簡單查詢.png

數(shù)據(jù)格式

如果只是字段和查詢關(guān)鍵字的話拔稳,可以用key-value的對象形式葛峻,但是現(xiàn)在多了一個查詢條件,那么要如何設(shè)計呢巴比?

  • 方案一:
{
   colName: 'title',
   findKind: 401,
   findValue: '某某某'
},
{
  ...
}

比較標(biāo)準(zhǔn)吧术奖,只是太繁瑣,如果項目要求查詢必須用get轻绞,那么這個就太長了采记,很容易超出字符數(shù)的限制。

  • 方案二:
title:[401, '某某某']

這個比較簡潔政勃,字段名稱作為key唧龄,后面跟一個數(shù)組,第一個元素是查詢條件奸远,第二個元素是查詢關(guān)鍵字既棺,如果是范圍查詢,那么第二個元素是數(shù)組懒叛。

缺點就是沒有明確的區(qū)分說明丸冕,不看定義,說知道數(shù)組里面都是啥東東芍瑞。

查詢方式為啥又是數(shù)字晨仑?

這個,個人習(xí)慣吧,我是特別喜歡數(shù)字的形式洪己,因為“好識別”妥凳,當(dāng)然這個不是針對程序員的,而是針對代碼的答捕。其實這一套查詢解決方案逝钥,包括前后端的,都不用程序員去讀去寫拱镐,而是可視化的方式來實現(xiàn)的艘款,所以看到的是數(shù)字對應(yīng)的name。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末沃琅,一起剝皮案震驚了整個濱河市哗咆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌益眉,老刑警劉巖晌柬,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異郭脂,居然都是意外死亡年碘,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進店門展鸡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來屿衅,“玉大人,你說我怎么就攤上這事莹弊〉泳茫” “怎么了?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵箱硕,是天一觀的道長拴竹。 經(jīng)常有香客問我,道長剧罩,這世上最難降的妖魔是什么栓拜? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮惠昔,結(jié)果婚禮上幕与,老公的妹妹穿的比我還像新娘。我一直安慰自己镇防,他們只是感情好啦鸣,可當(dāng)我...
    茶點故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著来氧,像睡著了一般诫给。 火紅的嫁衣襯著肌膚如雪香拉。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天中狂,我揣著相機與錄音凫碌,去河邊找鬼。 笑死胃榕,一個胖子當(dāng)著我的面吹牛盛险,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播勋又,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼苦掘,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了楔壤?” 一聲冷哼從身側(cè)響起鹤啡,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎挺邀,沒想到半個月后揉忘,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡端铛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了疲眷。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片禾蚕。...
    茶點故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖狂丝,靈堂內(nèi)的尸體忽然破棺而出换淆,到底是詐尸還是另有隱情,我是刑警寧澤几颜,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布倍试,位于F島的核電站,受9級特大地震影響蛋哭,放射性物質(zhì)發(fā)生泄漏县习。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一谆趾、第九天 我趴在偏房一處隱蔽的房頂上張望躁愿。 院中可真熱鬧,春花似錦沪蓬、人聲如沸彤钟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽逸雹。三九已至营搅,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間梆砸,已是汗流浹背剧防。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留辫樱,地道東北人峭拘。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像狮暑,于是被迫代替她去往敵國和親鸡挠。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,691評論 2 361

推薦閱讀更多精彩內(nèi)容