model.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. import {
  2. fakeSubmitForm,
  3. getOsType,
  4. createReportCommon,
  5. createTestCase,
  6. getTestCaseList,
  7. getCaseBugList,
  8. getBugInfo,
  9. updateTestCaseList
  10. } from './service';
  11. const Model = {
  12. namespace: 'editReport',
  13. state: {
  14. current: 'info',
  15. osType: [],
  16. step: {
  17. payAccount: 'ant-design@alipay.com',
  18. receiverAccount: 'test@example.com',
  19. receiverName: 'Alex',
  20. amount: '500',
  21. },
  22. reportCommonInfo: {},
  23. testCaseList: [],
  24. caseBugList: [],
  25. },
  26. effects: {
  27. * submitStepForm({ payload }, { call, put }) {
  28. yield call(fakeSubmitForm, payload);
  29. yield put({
  30. type: 'saveStepFormData',
  31. payload,
  32. });
  33. yield put({
  34. type: 'saveCurrentStep',
  35. payload: 'detail',
  36. });
  37. },
  38. * getOsTypeAction({ payload }, { call, put }) {
  39. const { examId } = payload;
  40. let res = yield call(getOsType, examId);
  41. let osType = res?.result?.paper_type;
  42. osType = JSON.parse(osType)['subTitles'][2]?.value;
  43. yield put({
  44. type: 'saveOsType',
  45. payload: osType,
  46. });
  47. },
  48. * getTestCaseList({ payload }, { call, put }) {
  49. const { report_id } = payload;
  50. let res = yield call(getTestCaseList, report_id);
  51. yield put({
  52. type: 'saveTestCaseList',
  53. payload: res.result,
  54. });
  55. },
  56. //todo:保存报告基础信息
  57. * saveReportCommonDetail({ payload }, { call, put }) {
  58. let res = yield call(createReportCommon, payload);
  59. //res拿到报告id,组装生成report对象
  60. let report = { id: res.id };
  61. for (let key of payload.keys()) {
  62. report[key] = payload.get(key);
  63. }
  64. yield put({
  65. type: 'saveReportCommonInfo',
  66. payload: report,
  67. });
  68. yield put({
  69. type: 'saveCurrentStep',
  70. payload: 'detail',
  71. });
  72. },
  73. //todo:创建新用例
  74. * createTestCase({ payload }, { call, put }) {
  75. let { formData , report_id} = payload;
  76. let res = yield call(createTestCase, formData);
  77. yield put({
  78. type: 'getTestCaseList',
  79. payload: { report_id }
  80. })
  81. return res;
  82. },
  83. //todo:更新用例
  84. * updateTestCase({ payload }, { call, put }) {
  85. let { formData,report_id } = payload;
  86. let res = yield call(updateTestCaseList, formData);
  87. yield put({
  88. type: 'getTestCaseList',
  89. payload: { report_id }
  90. })
  91. return res;
  92. },
  93. //todo:获取bug列表
  94. * getCaseBugList({ payload }, { call, put }) {
  95. let bugIdList = yield call(getCaseBugList, payload);//bug id list
  96. let newBugList = [];
  97. for (const item of bugIdList) {
  98. let p = yield put({ type: 'getBugInfo', payload: { item } });
  99. p.then(res=>{
  100. newBugList.push(res)
  101. });
  102. }
  103. yield put({
  104. type:'saveCaseBugList',
  105. payload:newBugList
  106. })
  107. },
  108. //todo:获取bug详情
  109. * getBugInfo({ payload }, { call, put }) {
  110. const {item} = payload;
  111. let bugInfo = yield call(getBugInfo, item);
  112. return bugInfo;
  113. },
  114. },
  115. reducers: {
  116. saveCurrentStep(state, { payload }) {
  117. return { ...state, current: payload };
  118. },
  119. saveStepFormData(state, { payload }) {
  120. return { ...state, step: { ...state.step, ...payload } };
  121. },
  122. saveOsType(state, { payload }) {
  123. return { ...state, osType: payload };
  124. },
  125. saveReportCommonInfo(state, { payload }) {
  126. return { ...state, reportCommonInfo: payload };
  127. },
  128. saveTestCaseList(state, { payload }) {
  129. return { ...state, testCaseList: payload };
  130. },
  131. saveCaseBugList(state, { payload }) {
  132. return { ...state, caseBugList: payload };
  133. },
  134. },
  135. };
  136. export default Model;