1.場景描述
公司主營業(yè)務(wù):成都網(wǎng)站制作、做網(wǎng)站、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)公司是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊有機(jī)會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)公司推出望花免費(fèi)做網(wǎng)站回饋大家。
我們公司是做電商的,運(yùn)營的工作指標(biāo)都是按周來定的,所以他們對周特別敏感,希望我們能在日期選擇器上顯示周數(shù)。剛接到這個需求時,心中很不樂意,因?yàn)镋lement-ui的日期選擇器根本不支持顯示周數(shù)。我只能看看源碼來看看能否有解決的辦法
具體代碼大家可以在github中看到https://github.com/ElemeFE/element/pull/16415/commits/2b810cf73d1127645054265469bbb353d036cb21
2.查看源碼
我們很輕松就能找到DatePicker相關(guān)的代碼,在packages > date-picker 整個目錄都是date-picker的代碼,在date-picker > src > basic > date-table.vue中就是顯示日期的代碼,在這里竟然發(fā)現(xiàn)了一個屬性showWeekNumber,在date-table.vue的第83行。
showWeekNumber: { type: Boolean, default: false },
為了驗(yàn)證這個參數(shù)對我們是否有幫助,我們把showWeekNumber默認(rèn)設(shè)置為true試試,然后把第11行的
<th v-if="showWeekNumber">{{ t('el.datepicker.week') }}</th>
改為
<th v-if="showWeekNumber">周數(shù)</th>
設(shè)置用來設(shè)置國際化的,國際化文件中沒有這個對應(yīng)的翻譯,我們暫時先這么寫,不然會報錯。當(dāng)我們完成這個之后神奇的事情發(fā)生了
周數(shù)展示出來了,而且好像展示的事正確的,7.1-7.6就是2019年的第27周。既然能夠展示周數(shù),那么為什么element不開放出來這個參數(shù)了,是否是有什么問題呢。我們自己來簡單的測試下
3. 發(fā)現(xiàn)并解決問題
問題
(1)切換月時,周數(shù)并不會發(fā)生變化
(2)選中的是29周,輸入框中確展示的是28周
(3)hover選中時,周數(shù)不應(yīng)該展示高亮的樣式
(4)日期區(qū)間選中的樣式也不正確
解決問題
(1)解決周數(shù)不變化的問題,我們找到date-table.vue中第149行到152行
if (this.showWeekNumber) { if (!row[0]) { row[0] = { type: 'week', text: getWeekNumber(nextDate(startDate, i * 7 + 1)) }; } }
當(dāng)showWeekNumber為true時,row[0]就是用來展示周數(shù)的,當(dāng)row[0],存在時,就不在去獲取新的值,顯然不正確,我們把if判斷去掉就行,這樣就會更新周數(shù)
(2)解決選中后周數(shù)展示不正確的問題,我們找到date-table.vue中第14行到18行
<tr class="el-date-table__row" v-for="(row, key) in rows" :class="{ current: isWeekActive(row[1]) }" :key="key">
isWeekActive就是用來獲得當(dāng)前展示的周數(shù)的,當(dāng)展示周數(shù)之后我們要做適當(dāng)?shù)男薷?/p>
<tr class="el-date-table__row" v-for="(row, key) in rows" :class="{ current: isWeekActive(row[showWeekNumber ? 2 : 1]) }" :key="key">
至于第三個問題和第三個問題都是樣式的問題,我們修改下date-table對應(yīng)的樣式即可
最后看下展示效果
4. 最后
我已經(jīng)向element-ui提了pr,但是還沒有merge,具體的代碼大家可以在github中看到https://github.com/ElemeFE/element/pull/16415/commits/2b810cf73d1127645054265469bbb353d036cb21,解決了國際化的問題和增加了參數(shù)展示周數(shù)
5. 問題
代碼是已經(jīng)改好了,但是我們引入餓了么的代碼是直接通過npm下載的,線上環(huán)境也是npm下載的,我們是無法來更改npm的代碼的。那么我們怎么來解決這個問題呢,請看我的下一篇文章,我最近會更新。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。
標(biāo)題名稱:Element-uiDatePicker顯示周數(shù)的方法示例
本文URL:http://www.chinadenli.net/article40/gepceo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供、網(wǎng)站設(shè)計公司、建站公司、微信小程序、網(wǎng)頁設(shè)計公司、網(wǎng)站營銷
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)