宅男在线永久免费观看网直播,亚洲欧洲日产国码无码久久99,野花社区在线观看视频,亚洲人交乣女bbw,一本一本久久a久久精品综合不卡

全部
常見(jiàn)問(wèn)題
產(chǎn)品動(dòng)態(tài)
精選推薦

陀螺匠OA系統(tǒng)二次開(kāi)發(fā)實(shí)戰(zhàn)②增加篩選條件

管理 管理 編輯 刪除

本篇實(shí)戰(zhàn)文章通過(guò)給財(cái)務(wù)模塊的收支記賬頁(yè)面增加篩選條件來(lái)教大家怎么進(jìn)行二次開(kāi)發(fā)。你會(huì)學(xué)到前端和后端的修改,以及整個(gè)的思考過(guò)程,而不僅僅是直接給你修改的步驟。

【實(shí)戰(zhàn)目標(biāo)】:在收支記賬列表的頂部增加合同名稱(chēng)和客戶(hù)名稱(chēng)的篩選。

4d7a1202505282126547760.png

【實(shí)戰(zhàn)內(nèi)容】:

1. 首先我們弄清楚篩選的條件是怎么實(shí)現(xiàn)的。

通過(guò)瀏覽器的路徑,定位前端頁(yè)面位置。在這里是/admin/fd/enterprise/list/index。admin對(duì)應(yīng)的是views/目錄下的pc目錄前端代碼。views/pc下的前端代碼起點(diǎn)是src/views。然后順著fd/enterprise/list/index找到對(duì)應(yīng)的前端vue源文件完整路徑就是:views\pc\src\views\fd\enterprise\list\index.vue了。

b6a54202505282131258062.png

64ae8202505082142258117.png

找到源文件后,那我們看看頂部搜索框是怎么實(shí)現(xiàn)的??戳艘蝗ndex.vue代碼似乎沒(méi)有篩選框的相關(guān)文本框,但是可以肯定的是篩選框肯定是在頁(yè)面頂部對(duì)吧,那源代碼頂部只有一個(gè)formBox組件,那大概率篩選框就是封裝在這個(gè)組件里面了。

通過(guò)引入路徑定位到formBox的位置:

 formBox: () => import('./components/formBox'),

我們打開(kāi)它,然后分析一下代碼。ef901202505082149501942.png

分析后發(fā)現(xiàn),里面再次引入了一個(gè)oaFromBox的組件,這個(gè)組件傳入了一個(gè)search參數(shù),search的值就剛好對(duì)應(yīng)了已有篩選框的定義。那么這就是列表定義篩選條件的位置。經(jīng)過(guò)對(duì)比,陀螺匠其他頁(yè)面的篩選框都是通過(guò)頁(yè)面的search參數(shù)來(lái)定義的。

0d91c202505082153233177.png

然后我們看看search的字段是怎么定義的:

       {
          field_name: '支付方式',
          field_name_en: 'type_id',
          form_value: 'select',
          // multiple: true,
          data_dict: []
        }

field_name應(yīng)該是篩選條件中文名,field_name_en是對(duì)應(yīng)的數(shù)據(jù)字段名,form_value應(yīng)該是字段類(lèi)型,select代表下拉列表。最重要的應(yīng)該是data_dict,填充這個(gè)下拉列表的選項(xiàng)。我們需要添加合同名稱(chēng)和客戶(hù)名稱(chēng)實(shí)際上也需要用到這樣的定義,填充data_dict來(lái)做篩選。好的,那第一步就完成了,我們知道了篩選是通過(guò)定義search來(lái)實(shí)現(xiàn)。


2. 修改search的值,添加[客戶(hù)名稱(chēng)]和[合同名稱(chēng)]篩選條件。

在修改之前,我們先分析一下接口和收支表的數(shù)據(jù)結(jié)構(gòu)。可以看到列表是通過(guò)api/ent/bill/list接口一個(gè)POST請(qǐng)求來(lái)獲取數(shù)據(jù)的。

53a6b202505082242052777.pngbe812202505082242257478.png

數(shù)據(jù)結(jié)構(gòu)如下圖:

f9e0f202505082247081096.png

可以看到合同信息是有返回的,存儲(chǔ)在contract字段,只是默認(rèn)沒(méi)有顯示出來(lái)。如果我們要添加合同的篩選,先要確認(rèn)search數(shù)組當(dāng)中field_name_en該用哪個(gè)字段名,這里contract本身是個(gè)對(duì)象,具體用什么字段還不好說(shuō),先看看后端代碼再?zèng)Q定。

前面我們知道了后端接口是api/ent/bill/list,那么我們先定位到接口的后端代碼。陀螺匠的后端用的Laravel框架,按照框架的路由規(guī)則,我們要定位到接口的源代碼,只需要在VSCODE當(dāng)中搜中間部分的路由就好了。比如在這里我們搜ent/bill,可以看到BillController.php實(shí)現(xiàn)了相關(guān)的路由方法,可以確定路由的起點(diǎn)就是這個(gè)類(lèi)。然后我們要找的是list方法,在BillController當(dāng)中l(wèi)ist方法首先通過(guò)getSearchField獲取了搜索參數(shù)字段,然后直接調(diào)用了BillService的getList方法。

9ad922025050900174395.png

e7399202505082303512830.png

getList的第一個(gè)參數(shù)$where就是我們客戶(hù)端提交的search篩選條件,$field是獲取哪些字段*代表全部,$sort是排序,$with相當(dāng)于是聯(lián)表查詢(xún)。根據(jù)下面的代碼,可以分析出來(lái),最終返回結(jié)果當(dāng)中的contract數(shù)據(jù)就是通過(guò)$with定義來(lái)獲取數(shù)據(jù)的。我們既然要添加篩選字段,那就得從$where入手。這里的$where沒(méi)有處理,直接傳給了dao的getList,那我們繼續(xù)打開(kāi)BillDao.php來(lái)繼續(xù)分析。

f656a202505082314557659.png

通過(guò)BillDao的setModel函數(shù),我們知道BillDao關(guān)聯(lián)的數(shù)據(jù)表是eb_bill,我們用數(shù)據(jù)庫(kù)管理工具(寶塔面板的數(shù)據(jù)庫(kù)管理)看一下bill表的數(shù)據(jù)結(jié)構(gòu),發(fā)現(xiàn)這個(gè)表并沒(méi)有存儲(chǔ)實(shí)際的收支數(shù)據(jù),然后通過(guò)對(duì)比,發(fā)現(xiàn)eb_client_bill才是實(shí)際存儲(chǔ)收支數(shù)據(jù)的表,并且bill和client_bill之間是用link_id來(lái)關(guān)聯(lián)的。然后分析client_bill表,可以看到表當(dāng)中有cid字段來(lái)表示收支來(lái)自哪個(gè)合同,eid來(lái)標(biāo)記收支是來(lái)自哪個(gè)客戶(hù),那這就是我們要找的合同篩選、客戶(hù)篩選的實(shí)際的字段。

4345d202505082351162925.png

c7cd6202505090948483410.png

然后我們?cè)倏碆illDao的getList方法,$where最終是傳給了search方法,并且search方法是重寫(xiě)了,針對(duì)篩選條件做了預(yù)處理。

3d34020250508235419775.png

那我們把合同篩選的字段也放到這里。我這里直接給出實(shí)現(xiàn)方案:

①對(duì)于合同篩選,我們實(shí)際傳參是合同ID:前端的field_name_en設(shè)置為contract_id,然后在后端針對(duì)$where做判斷,如果存在contract_id,那么添加一個(gè)限定eb_client_bill表cid的where條件,查詢(xún)出client_bill的記錄,再把查詢(xún)bill列表的link_id限定在查詢(xún)出來(lái)的client_bill范圍內(nèi)。因?yàn)锽illController.php當(dāng)中對(duì)可篩選的字段做了前期處理,還需要在BillController的getSearchField當(dāng)中添加contract_id(默認(rèn)值為空),才能夠獲取到前端傳進(jìn)來(lái)的參數(shù)值。

②對(duì)于客戶(hù)篩選,我們實(shí)際傳參的也是客戶(hù)ID:前端的field_name_en設(shè)置為eid,然后在后端針對(duì)$where做判斷,如果存在eid,那么添加一個(gè)限定eb_client_bill表eid的where條件,查詢(xún)出client_bill的記錄,再把查詢(xún)bill列表的link_id限定在查詢(xún)出來(lái)的client_bill范圍內(nèi)。因?yàn)锽illController.php當(dāng)中對(duì)可篩選的字段做了前期處理,還需要在BillController的getSearchField當(dāng)中添加eid(默認(rèn)值為空),才能夠獲取到前端傳進(jìn)來(lái)的參數(shù)值。

df2eb202505282128337543.png

具體寫(xiě)法如下:

在BillDao當(dāng)中先引入App\Http\Service\Client\ClientBillService;

對(duì)于合同ID,先處理好$where當(dāng)中的contract_id,因?yàn)閑b_bill當(dāng)中并不存在contract_id,所以這里取出來(lái)后,一定要在$where當(dāng)中去掉。然后根據(jù)cid=contract_id來(lái)查詢(xún)client_bill的記錄,取ids。然后限定bill的link_id在ids范圍內(nèi)。

對(duì)于客戶(hù)ID,邏輯是相似的,完整的代碼如下。

1f065202505282129059642.png

好了,到這里后端的代碼就改好了。

接下來(lái),還需要想辦法填充前端下拉列表data_dict的值。對(duì)比其他已有的篩選項(xiàng),和翻看了一下其他列表頁(yè)的實(shí)現(xiàn)方式,我發(fā)現(xiàn)項(xiàng)目列表頁(yè)前端有現(xiàn)成的客戶(hù)列表和合同列表篩選,和我們需求一致,那我們可以直接拿來(lái)用。這里講一下前端的實(shí)現(xiàn)邏輯。因?yàn)樵谕勇萁钞?dāng)中,客戶(hù)和合同是關(guān)聯(lián)的,所以這里實(shí)際上客戶(hù)和合同是聯(lián)動(dòng)的,也就是選擇了客戶(hù),然后再選擇合同,這樣也減少了合同下拉的數(shù)量。

先在tableFrom當(dāng)中增加eid和contract_id定義。

f4222202505091020446301.png

再引入請(qǐng)求接口:

import { selectContractListApi, customerSelectApi } from '@/api/enterprise'

然后我們把views\pc\src\views\program\programList\index.vue的getCustomer方法和getContractList、getContract拷貝過(guò)來(lái)(注意改cid為contract_id)。然后getCustomer是在頁(yè)面創(chuàng)建的時(shí)候created()方法當(dāng)中調(diào)用。getContractList是在tableFrom.eid值變化的時(shí)候調(diào)用。

37fbe202505091201099933.png

7f05c202505091019348188.png

search的新增字段定義如下:

acc45202505091121265345.png

默認(rèn)情況下,列表里是沒(méi)有合同名稱(chēng)和客戶(hù)名稱(chēng)的,這里我們?cè)兕~外添加一下。在pc\src\views\fd\enterprise\list\index.vue頁(yè)面,找到el-table標(biāo)簽,然后增加el-table-column標(biāo)簽行來(lái)顯示合同和客戶(hù)名稱(chēng)。參考下圖。

1babb202505091207271032.png

這樣前端代碼就修改完成。前端打包請(qǐng)參考官方的文檔(地址)。

最終效果如圖:

eff74202505282130091574.png

6dd42202505282130451228.png

然后別忘了代碼修改用Git管理起來(lái)。


個(gè)人水平有限,如果錯(cuò)誤或者更好的實(shí)現(xiàn)方式,歡迎指出和交流。有疑問(wèn)歡迎留言。

最后,介紹一下自己:我是陀螺匠官方服務(wù)商,承接陀螺匠的二次開(kāi)發(fā)業(yè)務(wù),有需要深度定制OA系統(tǒng)的公司歡迎聯(lián)系。目前已收陀螺匠定制開(kāi)發(fā)費(fèi)用2萬(wàn)+。

如果這篇帖子有幫到你,請(qǐng)點(diǎn)個(gè)贊、留個(gè)言讓更多人看到,謝謝!

請(qǐng)登錄后查看

呂林瀟18826500406 最后編輯于2025-05-28 21:41:47

快捷回復(fù)
回復(fù)
回復(fù)
回復(fù)({{post_count}}) {{!is_user ? '我的回復(fù)' :'全部回復(fù)'}}
排序 默認(rèn)正序 回復(fù)倒序 點(diǎn)贊倒序

{{item.user_info.nickname ? item.user_info.nickname : item.user_name}} LV.{{ item.user_info.bbs_level || item.bbs_level }}

作者 管理員 企業(yè)

{{item.floor}}# 同步到gitee 已同步到gitee {{item.is_suggest == 1? '取消推薦': '推薦'}}
{{item.is_suggest == 1? '取消推薦': '推薦'}}
沙發(fā) 板凳 地板 {{item.floor}}#
{{item.user_info.title || '暫無(wú)簡(jiǎn)介'}}
附件

{{itemf.name}}

{{item.created_at}}  {{item.ip_address}}
打賞
已打賞¥{{item.reward_price}}
{{item.like_count}}
{{item.showReply ? '取消回復(fù)' : '回復(fù)'}}
刪除
回復(fù)
回復(fù)

{{itemc.user_info.nickname}}

{{itemc.user_name}}

回復(fù) {{itemc.comment_user_info.nickname}}

附件

{{itemf.name}}

{{itemc.created_at}}
打賞
已打賞¥{{itemc.reward_price}}
{{itemc.like_count}}
{{itemc.showReply ? '取消回復(fù)' : '回復(fù)'}}
刪除
回復(fù)
回復(fù)
查看更多
打賞
已打賞¥{{reward_price}}
968
{{like_count}}
{{collect_count}}
添加回復(fù) ({{post_count}})

相關(guān)推薦

快速安全登錄

使用微信掃碼登錄
{{item.label}} 加精
{{item.label}} {{item.label}} 板塊推薦 常見(jiàn)問(wèn)題 產(chǎn)品動(dòng)態(tài) 精選推薦 首頁(yè)頭條 首頁(yè)動(dòng)態(tài) 首頁(yè)推薦
取 消 確 定
回復(fù)
回復(fù)
問(wèn)題:
問(wèn)題自動(dòng)獲取的帖子內(nèi)容,不準(zhǔn)確時(shí)需要手動(dòng)修改. [獲取答案]
答案:
提交
bug 需求 取 消 確 定
打賞金額
當(dāng)前余額:¥{{rewardUserInfo.reward_price}}
{{item.price}}元
請(qǐng)輸入 0.1-{{reward_max_price}} 范圍內(nèi)的數(shù)值
打賞成功
¥{{price}}
完成 確認(rèn)打賞

微信登錄/注冊(cè)

切換手機(jī)號(hào)登錄

{{ bind_phone ? '綁定手機(jī)' : '手機(jī)登錄'}}

{{codeText}}
切換微信登錄/注冊(cè)
暫不綁定
CRMEB客服

CRMEB咨詢(xún)熱線(xiàn) 咨詢(xún)熱線(xiàn)

400-8888-794

微信掃碼咨詢(xún)

CRMEB開(kāi)源商城下載 源碼下載 CRMEB幫助文檔 幫助文檔
返回頂部 返回頂部
CRMEB客服