某掌廳銷戶專案 交接文件

2021-09-17 22:12:09 字數 4434 閱讀 4500

該專案注釋較為詳細,具體函式,變數均有解釋。此文件僅對全域性性的問題進行介紹

1.專案目錄結構

元件內部,採用如下目錄結構放置樣式和

2.關於專案注意事項,見readme.md

安裝

npm i

開發模式

npm run dev

切換環境切換api也類似,可把env換成api,客戶也同理,env換成client,其他也可以根據需求追加配置項(切換客戶暫時只用於換膚系列需求)正式打包

npm run build (檔案打包到dist目錄)

每次打包前請確認config set是否設定正確,最好是每次打包前都重新配置命令過一次開發規則樣式風格,相容css或stylus。stylus 風格遵循格式:可以不帶分號跟冒號,但必須要有大括號,舉例:

html, body
元件開發注意點:

頁面元件需要用到資料共享的(跨頁面的資料狀態保持)請使用 mobx注意:功能性元件不要使用!會增加依賴,且必須在 src/models 中定義對應的資料模型,如 賬號資料可用 account.ts或js,這裡建議使用 ts,即便只加了簡單的屬性型別檢查也可以。一些臨時的資料可以直接用 vue 自帶的即可。

儘量減少使用雙向繫結 v-model(單向資料流可以減少一定的bug產出,如果邏輯不複雜可以使用)

功能性元件盡量不做全域性的事件丟擲,轉由容器元件代發。

元件如果呼叫方法相對複雜的可以在同層放乙個demo目錄,裡面放使用的簡單示例**。

// 舉例,上傳功能元件上傳完畢後,向外丟擲乙個 complete 事件:

this

.$emit

('complete'

, uploadedfile)

;// 容器元件

"onuploadsuccess"

/>

...'@lib/...'

;onuploadsuccess

(uploadedfile)

// 其他元件接收,處理

$on(

'upload_success'

, uploadedfile =>

...)

;

原則:盡量把字段文案變為可配置化,包括一些 input前面的label,即能做到統一也能方便萬一要做成多國語言介面呼叫:

幾個核心庫的選定,同類的不要再引入

非外部引入的庫檔案,命名盡量以駝峰為主

格式化工具 prettier設定 vscode 為例:

"prettier.singlequote": true,
promise部分盡量可以使用 try + catch {} 的方式來代替,減少頁面的邏輯巢狀

meta:
3.介面文件相關

注意:介面的變數名統一採用下劃線命名,本專案做了處理,統一將下劃線轉為駝峰:

所以,涉及到接**互,變數名全部用駝峰處理即可

api.ts

/**

* 批量改駝峰字段

*/const keytransf =

( store: any,

obj: any,

direct:

'tocamel'

|'toname'

='tocamel'

)=>);

} key !=

transfun

(key)

&&delete store[key];}

);return store;

};

this.$refs.toast.info(errorinfo);
對應每種使用者的介面位址在api.ts裡,(切換客戶暫時只用於整體換膚系列需求)

/**

* 所有客戶介面的配置,如果同環境下有多個介面,則陣列後面新增

*/const baseurls: any =

, cfzq:

, zyzq:

};

4.流程控制

本專案主要採用流程控制的方法來適配不同券商的不同流程,具體到方法為如下:

// 流程控制,獲取跳轉的下乙個節點

@observable

nextnode: any =

; firstnodeurl ='';

submitnode=

''/**

* 流程流轉下一步,當且僅當當前路由節點與提交節點一致時才提交審核

* @param nodeid 當前流程節點

* @param currentroute 當前路由節點

* @returns

* @memberof accountmodel

*/async

getnextnode

(nodeid: string,currentroute:string));

}const result =

await

api.

request

('/crh-wt1007',)

;if(result.submitflag==

'1')

runinaction((

)=>);

return result;

}

詳細來說就是每次路由跳轉前都必須傳送1007介面,來獲取下乙個頁面的路由節點位址,從而由後端來進行流程控制。本來這個專案之前是由前端通過npm set config client來控制的,後來發現根本沒法適配多個券商。

注意,根據介面文件,只有當當前頁面的節點與提交節點對應的時候,才可以呼叫1412介面進行最後的提交審核任務

5.配置項控制

適配多個券商的個性化需求,就必須用配置項進行控制。在本專案中,根據1006介面返回值,在basemodel存入configmap注意每個配置項取值必須設定預設值

// 客戶對應的基礎配置資訊

@observable

configmap =

;async

getconfiglist()

; result.

foreach

(cfg =>

);

具體頁面元件直接引用對應值即可,例如:根據配置項來判斷是否需要簽署協議

//獲取是否需要簽署協議

getagreementflag()

}

6.與sdk進行對接

具體介面文件見附件

/**

* ** @param opensinglevideoparams

* @param callback

*/export

function

opensinglevideo

(opensinglevideoparams, callback));

bridge.

callhandler

('opensinglevideo'

, opensinglevideoparams)

;// 註冊函式,給原生呼叫,data為原生端返回的資料

}catch(e

)});

}

7.建議學習

建議學習mobx-vue/vue-class-componentjsbridge官方文件,本專案用到的知識全覆蓋。

THUWC2022 某科學的動態仙人掌

2月24日的模擬賽上的一道題 直接計數是肯定沒法計數的,考試的時候我當時在一直想能不能類似於區間合併,想了好久感覺根本不行,就不會了,聽完題解之後發現這道題十分的nb,lxlnb 居然整體沒法考慮,那就考慮一下每個點對他們的貢獻,如下邊這張圖 很醜的一張 這一坨就代表有乙個聯通塊,我考慮能不能把貢獻...

天津市某生態環境工程研究院 土壤智慧型管理專案

一 客戶及需求 研究院主要從事於濱海濕地種植與工程研究,擁有基地600餘畝,總建築面積2000平方公尺,人工濕地實驗單元由20個構築單元組成,池容為2000立方公尺。為更好的研究土壤含量及改善土壤質量,培育最為合適的農作物,需要一些土壤基數資料變化趨勢和歷史資料用於分析處理。二 應用規模 先期在實驗...