uk_job_repository.dart 34 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169
  1. import 'package:get/get.dart';
  2. import 'package:plugin_platform/http/http_provider.dart';
  3. import 'package:plugin_platform/http/http_result.dart';
  4. import 'package:plugin_platform/platform_export.dart';
  5. import 'package:shared/utils/log_utils.dart';
  6. import 'package:shared/utils/util.dart';
  7. import '../constants/api_constants.dart';
  8. import '../entity/response/uk_attendance_review_entity.dart';
  9. import '../entity/response/uk_attendance_review_remark_entity.dart';
  10. import '../entity/response/uk_job_applied_revise_add_detail_entity.dart';
  11. import '../entity/response/uk_job_applied_revise_edit_detail_entity.dart';
  12. import '../entity/response/uk_job_applied_revise_info_entity.dart';
  13. import '../entity/response/uk_job_applied_revise_log_entity.dart';
  14. import '../entity/response/uk_job_applied_staff_list_entity.dart';
  15. import '../entity/response/uk_job_list_applied_staff_search_entity.dart';
  16. import '../entity/response/uk_job_list_applied_staff_selectoptions_entity.dart';
  17. import '../entity/response/uk_job_list_detail_entity.dart';
  18. import '../entity/response/uk_job_template_detail_by_select_title_entity.dart';
  19. import '../entity/response/uk_report_outlet_entity.dart';
  20. import '../entity/response/uk_staff_detail_entity.dart';
  21. import '../entity/response/uk_staff_labour_history_entity.dart';
  22. import '../entity/response/uk_template_detail_entity.dart';
  23. import '../entity/response/uk_template_detail_index_entity.dart';
  24. import '../entity/response/uk_template_table_entity.dart';
  25. import '../entity/response/uk_template_title_option_entity.dart';
  26. /// UK工作相关数据仓库
  27. class UKJobRepository extends GetxService {
  28. HttpProvider httpProvider;
  29. UKJobRepository({required this.httpProvider});
  30. /// 用工模版中的工作标题列表
  31. Future<HttpResult<UkTemplateTableEntity>> fetchJobTemplateList(
  32. String? keyword, {
  33. required int curPage,
  34. CancelToken? cancelToken,
  35. }) async {
  36. //参数
  37. Map<String, String> params = {};
  38. params["cur_page"] = curPage.toString();
  39. params["page_size"] = "10";
  40. if (!Utils.isEmpty(keyword)) {
  41. params["job_title"] = keyword!;
  42. }
  43. final result = await httpProvider.requestNetResult(
  44. ApiConstants.apiJobTemplateListSG,
  45. params: params,
  46. cancelToken: cancelToken,
  47. );
  48. if (result.isSuccess) {
  49. final json = result.getDataJson();
  50. var data = UkTemplateTableEntity.fromJson(json!);
  51. return result.convert<UkTemplateTableEntity>(data: data);
  52. }
  53. return result.convert();
  54. }
  55. /// 添加用工模版 时详情里面的 数据源
  56. Future<HttpResult<UkTemplateDetailIndexEntity>> fetchJobTemplateIndex({
  57. CancelToken? cancelToken,
  58. }) async {
  59. final result = await httpProvider.requestNetResult(
  60. ApiConstants.apiJobTemplateAddIndexUK,
  61. isShowLoadingDialog: true,
  62. cancelToken: cancelToken,
  63. );
  64. if (result.isSuccess) {
  65. final json = result.getDataJson();
  66. var data = UkTemplateDetailIndexEntity.fromJson(json!);
  67. return result.convert<UkTemplateDetailIndexEntity>(data: data);
  68. }
  69. return result.convert();
  70. }
  71. /// 添加用工模版 时详情里面的 数据源
  72. Future<HttpResult> fetchCountryCodeList({
  73. CancelToken? cancelToken,
  74. }) async {
  75. final result = await httpProvider.requestNetResult(
  76. ApiConstants.apiCountryCodeOptionsUK,
  77. isShowLoadingDialog: true,
  78. cancelToken: cancelToken,
  79. );
  80. if (result.isSuccess) {
  81. final json = result.getListJson();
  82. return result.convert(list: json);
  83. }
  84. return result.convert();
  85. }
  86. /// 添加用工模版 时详情里 根据所选template 获取工作标题选项
  87. Future<HttpResult<UkTemplateTitleOptionEntity>> fetchJobTitleOptiosByTemplate(
  88. String templateTitle,
  89. {
  90. CancelToken? cancelToken,
  91. }) async {
  92. Map<String, String> params = {};
  93. params['template_title'] = templateTitle;
  94. final result = await httpProvider.requestNetResult(
  95. ApiConstants.apiJobTemplateTitleOptionsUK,
  96. params: params,
  97. isShowLoadingDialog: true,
  98. cancelToken: cancelToken,
  99. );
  100. if (result.isSuccess) {
  101. final jsonList = result.getListJson();
  102. var list = jsonList?.map((e) {
  103. if (e is Map<String, dynamic>) {
  104. return UkTemplateTitleOptionEntity.fromJson(e);
  105. } else {
  106. return null;
  107. }
  108. }).whereType<UkTemplateTitleOptionEntity>().toList();
  109. return result.convert<UkTemplateTitleOptionEntity>(list: list);
  110. }
  111. return result.convert<UkTemplateTitleOptionEntity>();
  112. }
  113. /// 添加用工模版 时详情里 根据所选国家 获取城市的选项
  114. Future<HttpResult<UkTemplateDetailIndexCountryList>> fetchCityOptiosByCountry(
  115. String countryId,
  116. {
  117. CancelToken? cancelToken,
  118. }) async {
  119. Map<String, String> params = {};
  120. params['country_id'] = countryId;
  121. final result = await httpProvider.requestNetResult(
  122. ApiConstants.apiCityOptionsUK,
  123. params: params,
  124. isShowLoadingDialog: true,
  125. cancelToken: cancelToken,
  126. );
  127. if (result.isSuccess) {
  128. final jsonList = result.getListJson();
  129. var list = jsonList?.map((e) {
  130. if (e is Map<String, dynamic>) {
  131. return UkTemplateDetailIndexCountryList.fromJson(e);
  132. } else {
  133. return null;
  134. }
  135. }).whereType<UkTemplateDetailIndexCountryList>().toList();
  136. return result.convert<UkTemplateDetailIndexCountryList>(list: list);
  137. }
  138. return result.convert<UkTemplateDetailIndexCountryList>();
  139. }
  140. /// 编辑时获取的用工模版中的详情
  141. Future<HttpResult<UkTemplateDetailEntity>> fetchJobTemplateDetail({
  142. required String? templateId,
  143. CancelToken? cancelToken,
  144. }) async {
  145. Map<String, String> params = {};
  146. params['template_id'] = templateId ?? "";
  147. final result = await httpProvider.requestNetResult(
  148. ApiConstants.apiJobTemplateDetailUK,
  149. params: params,
  150. isShowLoadingDialog: true,
  151. cancelToken: cancelToken,
  152. );
  153. if (result.isSuccess) {
  154. final json = result.getDataJson();
  155. var data = UkTemplateDetailEntity.fromJson(json!);
  156. return result.convert<UkTemplateDetailEntity>(data: data);
  157. }
  158. return result.convert();
  159. }
  160. /// 新增时 选择了 jobtitle 后 获取该title对应的模板详情 用于回显当前title 的模板数据
  161. Future<HttpResult<UkJobTemplateDetailBySelectTitleEntity>> fetchSelectJobTitleGetTemplateDetail({
  162. required String? templateId,
  163. CancelToken? cancelToken,
  164. }) async {
  165. Map<String, String> params = {};
  166. params['template_id'] = templateId ?? "";
  167. final result = await httpProvider.requestNetResult(
  168. ApiConstants.apiJobTemplateDetailBySelectTitleUK,
  169. params: params,
  170. isShowLoadingDialog: true,
  171. cancelToken: cancelToken,
  172. );
  173. if (result.isSuccess) {
  174. final json = result.getDataJson();
  175. var data = UkJobTemplateDetailBySelectTitleEntity.fromJson(json!);
  176. return result.convert<UkJobTemplateDetailBySelectTitleEntity>(data: data);
  177. }
  178. return result.convert();
  179. }
  180. /// 工作模板的添加提交
  181. Future<HttpResult> addJobTemplateSubmit({
  182. required String jobTemplateId ,
  183. required String jobTitle,
  184. String? clientName,
  185. String? countryId,
  186. String? cityId,
  187. String? location,
  188. List<String>? certificate,
  189. List<String>? vehicle,
  190. String? challenge25, // 1.yes,0.no
  191. String? note,
  192. String? desc,
  193. String? contactName,
  194. String? contactCountryCode,
  195. String? contactNo,
  196. CancelToken? cancelToken,
  197. }) async {
  198. //参数
  199. Map<String, dynamic> params = {};
  200. params['job_template_id'] = jobTemplateId;
  201. params['job_title'] = jobTitle;
  202. if (Utils.isNotEmpty(clientName)) {
  203. params['client_name'] = clientName ?? "";
  204. }
  205. if (Utils.isNotEmpty(countryId)) {
  206. params['country_id'] = countryId ?? "";
  207. }
  208. if (Utils.isNotEmpty(cityId)) {
  209. params['city_id'] = cityId ?? "";
  210. }
  211. if (Utils.isNotEmpty(location)) {
  212. params['location'] = location ?? "";
  213. }
  214. if (certificate != null && certificate.isNotEmpty) {
  215. params['certificate[]'] = certificate;
  216. }
  217. if (vehicle != null && vehicle.isNotEmpty) {
  218. params['vehicle[]'] = vehicle;
  219. }
  220. if (Utils.isNotEmpty(challenge25)) {
  221. params['challenge_25'] = challenge25 ?? "";
  222. }
  223. if (Utils.isNotEmpty(note)) {
  224. params['note'] = note ?? "";
  225. }
  226. if (Utils.isNotEmpty(contactName)) {
  227. params['contact_name'] = contactName ?? "";
  228. }
  229. if (Utils.isNotEmpty(contactCountryCode)) {
  230. params['contact_country_code'] = contactCountryCode ?? "";
  231. }
  232. if (Utils.isNotEmpty(contactNo)) {
  233. params['contact_no'] = contactNo ?? "";
  234. }
  235. if (Utils.isNotEmpty(desc)) {
  236. params['description'] = desc ?? "";
  237. }
  238. final result = await httpProvider.requestNetResult(
  239. ApiConstants.apiJobTemplateAddSubmitSG,
  240. method: HttpMethod.POST,
  241. params: params,
  242. networkDebounce: true,
  243. isShowLoadingDialog: true,
  244. cancelToken: cancelToken,
  245. );
  246. if (result.isSuccess) {
  247. return result.convert();
  248. }
  249. return result.convert();
  250. }
  251. /// 工作模板的编辑提交
  252. Future<HttpResult> editJobTemplateSubmit({
  253. required String templateId,
  254. required String jobTemplateId,
  255. required String jobTitle,
  256. String? clientName,
  257. String? countryId,
  258. String? cityId,
  259. String? location,
  260. List<String>? certificate,
  261. List<String>? vehicle,
  262. String? challenge25, // 1 yse 0 no
  263. String? note,
  264. String? desc,
  265. String? contactName,
  266. String? contactCountryCode,
  267. String? contactNo,
  268. CancelToken? cancelToken,
  269. }) async {
  270. //参数
  271. Map<String, dynamic> params = {};
  272. params['job_title'] = jobTitle;
  273. params['template_id'] = templateId;
  274. params['job_template_id'] = jobTemplateId;
  275. if (Utils.isNotEmpty(clientName)) {
  276. params['client_name'] = clientName ?? "";
  277. }
  278. if (Utils.isNotEmpty(countryId)) {
  279. params['country_id'] = countryId ?? "";
  280. }
  281. if (Utils.isNotEmpty(cityId)) {
  282. params['city_id'] = cityId ?? "";
  283. }
  284. if (Utils.isNotEmpty(location)) {
  285. params['location'] = location ?? "";
  286. }
  287. if (certificate != null && certificate.isNotEmpty) {
  288. params['certificate[]'] = certificate;
  289. }
  290. if (vehicle != null && vehicle.isNotEmpty) {
  291. params['vehicle[]'] = vehicle;
  292. }
  293. if (Utils.isNotEmpty(challenge25)) {
  294. params['challenge_25'] = challenge25 ?? "";
  295. }
  296. if (Utils.isNotEmpty(note)) {
  297. params['note'] = note ?? "";
  298. }
  299. if (Utils.isNotEmpty(contactName)) {
  300. params['contact_name'] = contactName ?? "";
  301. }
  302. if (Utils.isNotEmpty(contactCountryCode)) {
  303. params['contact_country_code'] = contactCountryCode ?? "";
  304. }
  305. if (Utils.isNotEmpty(contactNo)) {
  306. params['contact_no'] = contactNo ?? "";
  307. }
  308. if (Utils.isNotEmpty(desc)) {
  309. params['description'] = desc ?? "";
  310. }
  311. final result = await httpProvider.requestNetResult(
  312. ApiConstants.apiJobTemplateEditSubmitSG,
  313. method: HttpMethod.POST,
  314. params: params,
  315. networkDebounce: true,
  316. isShowLoadingDialog: true,
  317. cancelToken: cancelToken,
  318. );
  319. if (result.isSuccess) {
  320. return result.convert();
  321. }
  322. return result.convert();
  323. }
  324. ///工作模板的删除
  325. Future<HttpResult> deleteJobTemplate({
  326. required String? templateId,
  327. CancelToken? cancelToken,
  328. }) async {
  329. //参数
  330. Map<String, String> params = {};
  331. params['template_id'] = templateId ?? "";
  332. final result = await httpProvider.requestNetResult(
  333. ApiConstants.apiJobTemplateDeleteSG,
  334. method: HttpMethod.POST,
  335. params: params,
  336. networkDebounce: true,
  337. isShowLoadingDialog: true,
  338. cancelToken: cancelToken,
  339. );
  340. if (result.isSuccess) {
  341. return result.convert();
  342. }
  343. return result.convert();
  344. }
  345. /// 添加用工请求发布
  346. Future<HttpResult> addLabourRequestSubmit({
  347. required String? templateId,
  348. required String? jobDate,
  349. required String? startTime,
  350. required String? endTime,
  351. required String? departmentId,
  352. required String? needNum,
  353. required String? salaryBy,
  354. String? amount,
  355. String? repeatDate,
  356. CancelToken? cancelToken,
  357. }) async {
  358. //参数
  359. Map<String, String> params = {};
  360. params['template_id'] = templateId ?? "";
  361. params['job_date'] = jobDate ?? "";
  362. params['start_time'] = startTime ?? "";
  363. params['end_time'] = endTime ?? "";
  364. params['need_num'] = needNum ?? "";
  365. params['salary_by'] = salaryBy ?? "";
  366. if (!Utils.isEmpty(departmentId)) {
  367. params["co_department_id"] = departmentId!;
  368. }
  369. if (!Utils.isEmpty(amount)) {
  370. params["amount"] = amount!;
  371. }
  372. if (!Utils.isEmpty(repeatDate)) {
  373. params["select"] = repeatDate!;
  374. }
  375. final result = await httpProvider.requestNetResult(
  376. ApiConstants.apiLabourRequestAddSubmit,
  377. method: HttpMethod.POST,
  378. params: params,
  379. networkDebounce: true,
  380. isShowLoadingDialog: true,
  381. cancelToken: cancelToken,
  382. );
  383. //根据返回的结果,封装原始数据为Bean/Entity对象
  384. if (result.isSuccess) {
  385. //重新赋值data或list
  386. return result.convert();
  387. }
  388. return result.convert();
  389. }
  390. // job-list ------------
  391. /// 工作列表的详情
  392. Future<HttpResult<UkJobListDetailEntity>> fetchJobListDetail(
  393. String? jobId, {
  394. CancelToken? cancelToken,
  395. }) async {
  396. //参数
  397. Map<String, String> params = {};
  398. params['job_id'] = jobId ?? "";
  399. final result = await httpProvider.requestNetResult(
  400. ApiConstants.apiJobListDetailUk,
  401. params: params,
  402. isShowLoadingDialog: true,
  403. cancelToken: cancelToken,
  404. );
  405. //根据返回的结果,封装原始数据为Bean/Entity对象
  406. if (result.isSuccess) {
  407. //重新赋值data或list
  408. final json = result.getDataJson();
  409. var data = UkJobListDetailEntity.fromJson(json!);
  410. //重新赋值data或list
  411. return result.convert<UkJobListDetailEntity>(data: data);
  412. }
  413. return result.convert();
  414. }
  415. /// 工作中已申请的成员列表
  416. Future<HttpResult<UkJobAppliedStaffListEntity>> fetchJobAppliedStaffs(
  417. String? jobId,
  418. String? staffName, {
  419. String? appliedId,
  420. required int curPage,
  421. CancelToken? cancelToken,
  422. }) async {
  423. //参数
  424. Map<String, String> params = {};
  425. params["cur_page"] = curPage.toString();
  426. params["page_size"] = "10";
  427. if (!Utils.isEmpty(jobId)) {
  428. params["job_id"] = jobId!;
  429. }
  430. if (!Utils.isEmpty(appliedId)) {
  431. params["applied_id"] = appliedId!;
  432. }
  433. if (!Utils.isEmpty(staffName)) {
  434. params["staff_name"] = staffName!;
  435. }
  436. final result = await httpProvider.requestNetResult(
  437. ApiConstants.apiJobListAppliedStaffList,
  438. params: params,
  439. cancelToken: cancelToken,
  440. );
  441. //根据返回的结果,封装原始数据为Bean/Entity对象
  442. if (result.isSuccess) {
  443. //重新赋值data或list
  444. final json = result.getDataJson();
  445. var data = UkJobAppliedStaffListEntity.fromJson(json!);
  446. //重新赋值data或list
  447. return result.convert<UkJobAppliedStaffListEntity>(data: data);
  448. }
  449. return result.convert();
  450. }
  451. /// 根据ID获取主列表的Item数据,用于刷新Item
  452. Future<HttpResult<UkJobAppliedStaffListEntity>> fetchItemByAppliedIds(
  453. String? jobId,
  454. String? appliedIds, {
  455. CancelToken? cancelToken,
  456. }) async {
  457. //参数
  458. Map<String, String> params = {};
  459. params["cur_page"] = "1";
  460. params["page_size"] = "9999";
  461. if (!Utils.isEmpty(appliedIds)) {
  462. params["applied_ids"] = appliedIds!;
  463. }
  464. if (!Utils.isEmpty(jobId)) {
  465. params["job_id"] = jobId!;
  466. }
  467. final result = await httpProvider.requestNetResult(
  468. ApiConstants.apiJobListAppliedStaffList,
  469. params: params,
  470. isShowLoadingDialog: true,
  471. cancelToken: cancelToken,
  472. );
  473. //根据返回的结果,封装原始数据为Bean/Entity对象
  474. if (result.isSuccess) {
  475. //重新赋值data或list
  476. final json = result.getDataJson();
  477. var data = UkJobAppliedStaffListEntity.fromJson(json!);
  478. //重新赋值data或list
  479. return result.convert<UkJobAppliedStaffListEntity>(data: data);
  480. }
  481. return result.convert();
  482. }
  483. /// 设置小费
  484. Future<HttpResult> appliedStaffBatchSetTipSubmit(
  485. {
  486. // 多个applied_ids 以逗号分隔
  487. String? appliedIds ,
  488. // 设置小费
  489. String? gratuity,
  490. CancelToken? cancelToken,
  491. }) async {
  492. //参数
  493. Map<String, String> params = {};
  494. params['applied_ids'] = appliedIds ?? "";
  495. params['gratuity'] = gratuity ?? "";
  496. final result = await httpProvider.requestNetResult(
  497. ApiConstants.apiAppliedStaffBatchSetTipUK,
  498. method: HttpMethod.POST,
  499. params: params,
  500. networkDebounce: true,
  501. isShowLoadingDialog: true,
  502. cancelToken: cancelToken,
  503. );
  504. //根据返回的结果,封装原始数据为Bean/Entity对象
  505. if (result.isSuccess) {
  506. //重新赋值data或list
  507. return result.convert();
  508. }
  509. return result.convert();
  510. }
  511. /// 获取 添加员工 时的 industry options
  512. Future<HttpResult<UkJobListAppliedStaffSelectoptionsEntity>> fetchAddStaffIndustryOptions(
  513. {
  514. CancelToken? cancelToken,
  515. }
  516. ) async {
  517. //参数
  518. Map<String, String> params = {};
  519. final result = await httpProvider.requestNetResult(
  520. ApiConstants.apiAppliedStaffIndustryListUK,
  521. params: params,
  522. cancelToken: cancelToken,
  523. );
  524. //根据返回的结果,封装原始数据为Bean/Entity对象
  525. if (result.isSuccess) {
  526. //重新赋值data或list
  527. final listJson = result.getListJson();
  528. var list = listJson
  529. ?.map((e) => UkJobListAppliedStaffSelectoptionsEntity.fromJson(e as Map<String, dynamic>))
  530. .toList();
  531. //重新赋值data或list
  532. return result.convert<UkJobListAppliedStaffSelectoptionsEntity>(list: list);
  533. }
  534. return result.convert();
  535. }
  536. /// 获取 添加员工 时的 location options
  537. Future<HttpResult> fetchAddStaffLocationOptions(
  538. {
  539. CancelToken? cancelToken,
  540. }
  541. ) async {
  542. //参数
  543. Map<String, String> params = {};
  544. final result = await httpProvider.requestNetResult(
  545. ApiConstants.apiAppliedStaffLocationListUK,
  546. params: params,
  547. cancelToken: cancelToken,
  548. );
  549. //根据返回的结果,封装原始数据为Bean/Entity对象
  550. if (result.isSuccess) {
  551. //重新赋值data或list
  552. final listJson = result.getListJson();
  553. // var list = listJson
  554. // ?.map((e) => UkJobListAppliedStaffSelectoptionsEntity.fromJson(e as Map<String, dynamic>))
  555. // .toList();
  556. //重新赋值data或list
  557. return result.convert(list: listJson);
  558. }
  559. return result.convert();
  560. }
  561. /// 获取 添加员工 时根据 industry id 获取jobtitle options
  562. Future<HttpResult<UkJobListAppliedStaffSelectoptionsEntity>> fetchAddStaffJobTitleOptions(
  563. String industryId,
  564. {
  565. CancelToken? cancelToken,
  566. }
  567. ) async {
  568. //参数
  569. Map<String, String> params = {};
  570. params["industry_id"] = industryId;
  571. final result = await httpProvider.requestNetResult(
  572. ApiConstants.apiAppliedStaffJobTitleListUK,
  573. params: params,
  574. cancelToken: cancelToken,
  575. );
  576. //根据返回的结果,封装原始数据为Bean/Entity对象
  577. if (result.isSuccess) {
  578. //重新赋值data或list
  579. final listJson = result.getListJson();
  580. var list = listJson
  581. ?.map((e) => UkJobListAppliedStaffSelectoptionsEntity.fromJson(e as Map<String, dynamic>))
  582. .toList();
  583. //重新赋值data或list
  584. return result.convert<UkJobListAppliedStaffSelectoptionsEntity>(list: list);
  585. }
  586. return result.convert();
  587. }
  588. /// 添加员工的全部员工数据列表
  589. Future<HttpResult<UkJobListAppliedStaffSearchEntity>> searchStaffList(
  590. String? jobId,
  591. String? keyword,
  592. String? location,
  593. String? industryId,
  594. String? skillId,
  595. {
  596. required int curPage,
  597. CancelToken? cancelToken,
  598. }) async {
  599. //参数
  600. Map<String, String> params = {};
  601. params["cur_page"] = curPage.toString();
  602. params["page_size"] = "10";
  603. if (!Utils.isEmpty(jobId)) {
  604. params["job_id"] = jobId!;
  605. }
  606. if (!Utils.isEmpty(keyword)) {
  607. params["keyword"] = keyword!;
  608. }
  609. if (!Utils.isEmpty(location)) {
  610. params["location"] = location!;
  611. }
  612. if (!Utils.isEmpty(industryId)) {
  613. params["industry_id"] = industryId!;
  614. }
  615. if (!Utils.isEmpty(skillId)) {
  616. params["skill_id"] = skillId!;
  617. }
  618. final result = await httpProvider.requestNetResult(
  619. ApiConstants.apiJobListAppliedStaffSearch,
  620. params: params,
  621. cancelToken: cancelToken,
  622. );
  623. //根据返回的结果,封装原始数据为Bean/Entity对象
  624. if (result.isSuccess) {
  625. //重新赋值data或list
  626. final json = result.getDataJson();
  627. var data = UkJobListAppliedStaffSearchEntity.fromJson(json!);
  628. //重新赋值data或list
  629. return result.convert<UkJobListAppliedStaffSearchEntity>(data: data);
  630. }
  631. return result.convert();
  632. }
  633. /// 添加员工 时 给员工 打标记
  634. Future<HttpResult> staffSetFavourite(
  635. String? memberId,
  636. String? isFavourite, {
  637. CancelToken? cancelToken,
  638. }) async {
  639. //参数
  640. Map<String, String> params = {};
  641. if (!Utils.isEmpty(memberId)) {
  642. params["member_id"] = memberId!;
  643. }
  644. if (!Utils.isEmpty(isFavourite)) {
  645. params["is_favourite"] = isFavourite!;
  646. }
  647. final result = await httpProvider.requestNetResult(
  648. ApiConstants.apiAppliedStaffSetFavouriteUK,
  649. method: HttpMethod.POST,
  650. params: params,
  651. cancelToken: cancelToken,
  652. );
  653. //根据返回的结果,封装原始数据为Bean/Entity对象
  654. if (result.isSuccess) {
  655. //重新赋值data或list
  656. return result.convert();
  657. }
  658. return result.convert();
  659. }
  660. /// 获取revise 列表
  661. Future<HttpResult<UkJobAppliedReviseInfoEntity>> fetchJobAppliedReviseList(
  662. {
  663. String? appliedId,
  664. required int curPage,
  665. CancelToken? cancelToken,
  666. }) async {
  667. //参数
  668. Map<String, String> params = {};
  669. params["cur_page"] = curPage.toString();
  670. params["page_size"] = "10";
  671. if (!Utils.isEmpty(appliedId)) {
  672. params["applied_id"] = appliedId!;
  673. }
  674. final result = await httpProvider.requestNetResult(
  675. ApiConstants.apiAppliedStaffReviseListUK,
  676. params: params,
  677. cancelToken: cancelToken,
  678. );
  679. //根据返回的结果,封装原始数据为Bean/Entity对象
  680. if (result.isSuccess) {
  681. //重新赋值data或list
  682. final json = result.getDataJson();
  683. var data = UkJobAppliedReviseInfoEntity.fromJson(json!);
  684. //重新赋值data或list
  685. return result.convert<UkJobAppliedReviseInfoEntity>(data: data);
  686. }
  687. return result.convert();
  688. }
  689. /// 根据ID获取主列表的Item数据,用于刷新Item
  690. Future<HttpResult<UkJobAppliedReviseInfoEntity>> fetchJobAppliedReviseListById(
  691. {
  692. String? appliedId,
  693. CancelToken? cancelToken,
  694. }) async {
  695. //参数
  696. Map<String, String> params = {};
  697. params["cur_page"] = "1";
  698. params["page_size"] = "9999";
  699. if (!Utils.isEmpty(appliedId)) {
  700. params["applied_id"] = appliedId!;
  701. }
  702. final result = await httpProvider.requestNetResult(
  703. ApiConstants.apiAppliedStaffReviseListUK,
  704. params: params,
  705. isShowLoadingDialog: true,
  706. cancelToken: cancelToken,
  707. );
  708. //根据返回的结果,封装原始数据为Bean/Entity对象
  709. if (result.isSuccess) {
  710. //重新赋值data或list
  711. final json = result.getDataJson();
  712. var data = UkJobAppliedReviseInfoEntity.fromJson(json!);
  713. //重新赋值data或list
  714. return result.convert<UkJobAppliedReviseInfoEntity>(data: data);
  715. }
  716. return result.convert();
  717. }
  718. /// revise add 时 获取详情
  719. Future<HttpResult<UkJobAppliedReviseEditDetailEntity>> fetchAddReviseDetailInfo(
  720. {
  721. String? appliedId,
  722. CancelToken? cancelToken,
  723. }) async {
  724. //参数
  725. Map<String, String> params = {};
  726. if (!Utils.isEmpty(appliedId)) {
  727. params["applied_id"] = appliedId!;
  728. }
  729. final result = await httpProvider.requestNetResult(
  730. ApiConstants.apiAppliedStaffReviseAddUK,
  731. params: params,
  732. cancelToken: cancelToken,
  733. );
  734. //根据返回的结果,封装原始数据为Bean/Entity对象
  735. if (result.isSuccess) {
  736. //重新赋值data或list
  737. final json = result.getDataJson();
  738. var data = UkJobAppliedReviseEditDetailEntity.fromJson(json!);
  739. //重新赋值data或list
  740. return result.convert<UkJobAppliedReviseEditDetailEntity>(data: data);
  741. }
  742. return result.convert();
  743. }
  744. /// revise edit 时 获取详情
  745. Future<HttpResult<UkJobAppliedReviseEditDetailEntity>> fetchEditReviseDetailInfo(
  746. {
  747. String? reviseId,
  748. CancelToken? cancelToken,
  749. }) async {
  750. //参数
  751. Map<String, String> params = {};
  752. if (!Utils.isEmpty(reviseId)) {
  753. params["revise_id"] = reviseId!;
  754. }
  755. final result = await httpProvider.requestNetResult(
  756. ApiConstants.apiAppliedStaffReviseEditUK,
  757. params: params,
  758. cancelToken: cancelToken,
  759. );
  760. //根据返回的结果,封装原始数据为Bean/Entity对象
  761. if (result.isSuccess) {
  762. //重新赋值data或list
  763. final json = result.getDataJson();
  764. var data = UkJobAppliedReviseEditDetailEntity.fromJson(json!);
  765. //重新赋值data或list
  766. return result.convert<UkJobAppliedReviseEditDetailEntity>(data: data);
  767. }
  768. return result.convert();
  769. }
  770. /// revise add 提交
  771. Future<HttpResult> reviseAddSubmit(
  772. {
  773. String? appliedId,
  774. String? reviseHours,
  775. String? reason,
  776. CancelToken? cancelToken,
  777. }) async {
  778. //参数
  779. Map<String, String> params = {};
  780. params['applied_id'] = appliedId ?? "";
  781. params['revise_hours'] = reviseHours ?? "";
  782. params['reason'] = reason ?? "";
  783. final result = await httpProvider.requestNetResult(
  784. ApiConstants.apiAppliedStaffReviseAddSubmitUK,
  785. method: HttpMethod.POST,
  786. params: params,
  787. networkDebounce: true,
  788. isShowLoadingDialog: true,
  789. cancelToken: cancelToken,
  790. );
  791. //根据返回的结果,封装原始数据为Bean/Entity对象
  792. if (result.isSuccess) {
  793. //重新赋值data或list
  794. return result.convert();
  795. }
  796. return result.convert();
  797. }
  798. /// revise edit 提交
  799. Future<HttpResult> reviseEditSubmit(
  800. {
  801. String? reviseId,
  802. String? reviseHours,
  803. String? reason,
  804. CancelToken? cancelToken,
  805. }) async {
  806. //参数
  807. Map<String, String> params = {};
  808. params['revise_id'] = reviseId ?? "";
  809. params['revise_hours'] = reviseHours ?? "";
  810. params['reason'] = reason ?? "";
  811. final result = await httpProvider.requestNetResult(
  812. ApiConstants.apiAppliedStaffReviseEditSubmitUK,
  813. method: HttpMethod.POST,
  814. params: params,
  815. networkDebounce: true,
  816. isShowLoadingDialog: true,
  817. cancelToken: cancelToken,
  818. );
  819. //根据返回的结果,封装原始数据为Bean/Entity对象
  820. if (result.isSuccess) {
  821. //重新赋值data或list
  822. return result.convert();
  823. }
  824. return result.convert();
  825. }
  826. /// revise recall
  827. Future<HttpResult> reviseRecall(
  828. {
  829. String? reviseId,
  830. CancelToken? cancelToken,
  831. }) async {
  832. //参数
  833. Map<String, String> params = {};
  834. params['revise_id'] = reviseId ?? "";
  835. final result = await httpProvider.requestNetResult(
  836. ApiConstants.apiAppliedStaffReviseRecallUK,
  837. method: HttpMethod.POST,
  838. params: params,
  839. networkDebounce: true,
  840. isShowLoadingDialog: true,
  841. cancelToken: cancelToken,
  842. );
  843. //根据返回的结果,封装原始数据为Bean/Entity对象
  844. if (result.isSuccess) {
  845. //重新赋值data或list
  846. return result.convert();
  847. }
  848. return result.convert();
  849. }
  850. /// revise delete
  851. Future<HttpResult> reviseDelete(
  852. {
  853. String? reviseId,
  854. CancelToken? cancelToken,
  855. }) async {
  856. //参数
  857. Map<String, String> params = {};
  858. params['revise_id'] = reviseId ?? "";
  859. final result = await httpProvider.requestNetResult(
  860. ApiConstants.apiAppliedStaffReviseDeleteUK,
  861. method: HttpMethod.POST,
  862. params: params,
  863. networkDebounce: true,
  864. isShowLoadingDialog: true,
  865. cancelToken: cancelToken,
  866. );
  867. //根据返回的结果,封装原始数据为Bean/Entity对象
  868. if (result.isSuccess) {
  869. //重新赋值data或list
  870. return result.convert();
  871. }
  872. return result.convert();
  873. }
  874. /// revise logs
  875. Future<HttpResult<UkJobAppliedReviseLogEntity>> featchReviseLogs(
  876. {
  877. String? reviseId,
  878. CancelToken? cancelToken,
  879. }) async {
  880. //参数
  881. Map<String, String> params = {};
  882. params['revise_id'] = reviseId ?? "";
  883. final result = await httpProvider.requestNetResult(
  884. ApiConstants.apiAppliedStaffReviseLogsUK,
  885. method: HttpMethod.GET,
  886. params: params,
  887. networkDebounce: true,
  888. isShowLoadingDialog: true,
  889. cancelToken: cancelToken,
  890. );
  891. //根据返回的结果,封装原始数据为Bean/Entity对象
  892. if (result.isSuccess) {
  893. //重新赋值data或list
  894. final json = result.getDataJson();
  895. var data = UkJobAppliedReviseLogEntity.fromJson(json!);
  896. //重新赋值data或list
  897. return result.convert<UkJobAppliedReviseLogEntity>(data: data);
  898. }
  899. return result.convert();
  900. }
  901. // -------staff-------
  902. // 员工的信息
  903. Future<HttpResult<UkStaffDetailEntity>> fetchStaffDetail(
  904. String? memberId, {
  905. CancelToken? cancelToken,
  906. }) async {
  907. //参数
  908. Map<String, String> params = {};
  909. if (!Utils.isEmpty(memberId)) {
  910. params["member_id"] = memberId!;
  911. }
  912. final result = await httpProvider.requestNetResult(
  913. ApiConstants.apiStaffDetailUK,
  914. params: params,
  915. cancelToken: cancelToken,
  916. );
  917. //根据返回的结果,封装原始数据为Bean/Entity对象
  918. if (result.isSuccess) {
  919. //重新赋值data或list
  920. final json = result.getDataJson();
  921. var data = UkStaffDetailEntity.fromJson(json!);
  922. //重新赋值data或list
  923. return result.convert<UkStaffDetailEntity>(data: data);
  924. }
  925. return result.convert();
  926. }
  927. // 员工的历史申请记录
  928. Future<HttpResult<UkStaffLabourHistoryEntity>> fetchStaffLabourHistory(
  929. String? memberId,
  930. String? keyword, {
  931. required int curPage,
  932. CancelToken? cancelToken,
  933. }) async {
  934. //参数
  935. Map<String, String> params = {};
  936. params["cur_page"] = curPage.toString();
  937. params["page_size"] = "10";
  938. if (!Utils.isEmpty(memberId)) {
  939. params["member_id"] = memberId!;
  940. }
  941. if (!Utils.isEmpty(keyword)) {
  942. params["keyword"] = keyword!;
  943. }
  944. final result = await httpProvider.requestNetResult(
  945. ApiConstants.apiStaffLabourHistoryUK,
  946. params: params,
  947. cancelToken: cancelToken,
  948. );
  949. //根据返回的结果,封装原始数据为Bean/Entity对象
  950. if (result.isSuccess) {
  951. //重新赋值data或list
  952. final json = result.getDataJson();
  953. var data = UkStaffLabourHistoryEntity.fromJson(json!);
  954. //重新赋值data或list
  955. return result.convert<UkStaffLabourHistoryEntity>(data: data);
  956. }
  957. return result.convert();
  958. }
  959. // --------attentance review---------
  960. /// 考勤审核列表
  961. Future<HttpResult<UkAttendanceReviewEntity>> fetchAttendanceReviewList(
  962. String? keyword, {
  963. required int curPage,
  964. CancelToken? cancelToken,
  965. }) async {
  966. //参数
  967. Map<String, String> params = {};
  968. params["cur_page"] = curPage.toString();
  969. params["page_size"] = "20";
  970. if (!Utils.isEmpty(keyword)) {
  971. params["job_title"] = keyword!;
  972. }
  973. final result = await httpProvider.requestNetResult(
  974. ApiConstants.apiAttendanceReviewTableUK,
  975. params: params,
  976. cancelToken: cancelToken,
  977. );
  978. //根据返回的结果,封装原始数据为Bean/Entity对象
  979. if (result.isSuccess) {
  980. //重新赋值data或list
  981. final json = result.getDataJson();
  982. var data = UkAttendanceReviewEntity.fromJson(json!);
  983. //重新赋值data或list
  984. return result.convert<UkAttendanceReviewEntity>(data: data);
  985. }
  986. return result.convert();
  987. }
  988. // attendance review 获取Remarks 考勤的批量备注
  989. Future<HttpResult<UkAttendanceReviewRemarkEntity>> fetchAttendanceReviewRemarkInfo(
  990. String? appliedId, {
  991. CancelToken? cancelToken,
  992. }) async {
  993. //参数
  994. Map<String, String> params = {};
  995. if (!Utils.isEmpty(appliedId)) {
  996. params["applied_id"] = appliedId!;
  997. }
  998. final result = await httpProvider.requestNetResult(
  999. ApiConstants.apiAttendanceReviewRemarksUK,
  1000. params: params,
  1001. cancelToken: cancelToken,
  1002. );
  1003. //根据返回的结果,封装原始数据为Bean/Entity对象
  1004. if (result.isSuccess) {
  1005. //重新赋值data或list
  1006. final json = result.getDataJson();
  1007. var data = UkAttendanceReviewRemarkEntity.fromJson(json!);
  1008. //重新赋值data或list
  1009. return result.convert<UkAttendanceReviewRemarkEntity>(data: data);
  1010. }
  1011. return result.convert();
  1012. }
  1013. /// 考勤的批量同意/批量拒绝
  1014. Future<HttpResult> attendanceReviewsBatchSubmit(
  1015. String? recordIds,
  1016. String? type, //审核类型Type【approve|reject】
  1017. String? auditMark, // 拒绝原因
  1018. {
  1019. CancelToken? cancelToken,
  1020. }) async {
  1021. //参数
  1022. Map<String, String> params = {};
  1023. params['record_ids'] = recordIds ?? "";
  1024. params['type'] = type ?? "";
  1025. params['audit_mark'] = auditMark ?? "";
  1026. final result = await httpProvider.requestNetResult(
  1027. ApiConstants.apiAttendanceReviewBatchSubmitUK,
  1028. method: HttpMethod.POST,
  1029. params: params,
  1030. networkDebounce: true,
  1031. isShowLoadingDialog: true,
  1032. cancelToken: cancelToken,
  1033. );
  1034. //根据返回的结果,封装原始数据为Bean/Entity对象
  1035. if (result.isSuccess) {
  1036. //重新赋值data或list
  1037. return result.convert();
  1038. }
  1039. return result.convert();
  1040. }
  1041. }