model.js 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333
  1. import {
  2. fakeSubmitForm,
  3. updateReportInfo,
  4. getExamInfo,
  5. createReportCommon,
  6. createTestCase,
  7. getTestCaseList,
  8. getCaseBugList,
  9. getBugInfo,
  10. updateTestCaseList,
  11. getReportInfo,
  12. createCaseBug,
  13. getRecommendList,
  14. getPathInfo,
  15. getRecommendPath,
  16. goodReport,
  17. badReport,
  18. cancelGoodReport,
  19. cancelBadReport,
  20. recordAction,
  21. uploadImage,
  22. getIdByToken,
  23. forkReport,
  24. recordGoodReport,
  25. recordBadReport
  26. } from './service';
  27. const Model = {
  28. namespace: 'editReport',
  29. state: {
  30. current: 'info',
  31. osType: [],
  32. step: {
  33. payAccount: 'ant-design@alipay.com',
  34. receiverAccount: 'test@example.com',
  35. receiverName: 'Alex',
  36. amount: '500',
  37. },
  38. taskName: '',
  39. collaborative_type:'0',
  40. reportCommonInfo: {},
  41. testCaseList: [],
  42. caseBugList: [],
  43. categories: [],
  44. pathInfo: [],
  45. recommendPath: [],
  46. bugRecommendList: [],
  47. commonId:{
  48. result:"success",
  49. roleId:1,
  50. caseId:"3711",
  51. examId:"3711",
  52. beginTime:"1621945823000",
  53. endTime:"1624291200000",
  54. userId:"99222",
  55. case_take_id:"3711_3711",
  56. },
  57. },
  58. effects: {
  59. * submitStepForm({ payload }, { call, put }) {
  60. yield call(fakeSubmitForm, payload);
  61. yield put({
  62. type: 'saveStepFormData',
  63. payload,
  64. });
  65. yield put({
  66. type: 'saveCurrentStep',
  67. payload: 'detail',
  68. });
  69. },
  70. * getOsType({ payload }, { call, put }) {
  71. const { examId } = payload;
  72. const res = yield call(getExamInfo, examId);
  73. let osType = res?.result?.paper_type;
  74. osType = JSON.parse(osType)['subTitles'][2]?.value;
  75. yield put({
  76. type: 'saveOsType',
  77. payload: osType,
  78. });
  79. },
  80. //todo:根据id获取token
  81. * getIdByToken({ payload }, { call, put }) {
  82. const { token } = payload;
  83. let res = yield call(getIdByToken, token)
  84. res['case_take_id'] = res['caseId'] + '-' + res['examId'];
  85. yield put({
  86. type: 'saveCommonId',
  87. payload: res,
  88. });
  89. return res;
  90. },
  91. //todo:更新报告基础信息
  92. * updateReportCommonDetail({ payload }, { call, put }) {
  93. let { formData } = payload;
  94. yield call(updateReportInfo, formData);
  95. let res = yield call(getReportInfo,
  96. formData.get('case_take_id'), formData.get('worker_id'));
  97. yield put({
  98. type: 'saveReportCommonInfo',
  99. payload: res.result,
  100. });
  101. },
  102. //todo:获取三级菜单信息
  103. * getCategories({ payload }, { call, put }) {
  104. const { examId } = payload;
  105. let res = yield call(getExamInfo, examId);
  106. let categories = res?.result?.json;
  107. categories = JSON.parse(categories);
  108. yield put({
  109. type: 'saveCategories',
  110. payload: categories,
  111. });
  112. },
  113. //todo:获取报告用例列表
  114. * getTestCaseList({ payload }, { call, put }) {
  115. const { report_id } = payload;
  116. let res = yield call(getTestCaseList, report_id);
  117. yield put({
  118. type: 'saveTestCaseList',
  119. payload: res.result,
  120. });
  121. return res.result;
  122. },
  123. //todo:获取报告基础信息
  124. * getReportInfo({ payload }, { call, put }) {
  125. const { case_take_id, worker_id } = payload;
  126. let res = yield call(getReportInfo, case_take_id, worker_id);
  127. if (res.status === 200) {
  128. yield put({
  129. type: 'saveReportCommonInfo',
  130. payload: res.result,
  131. });
  132. }
  133. return res;
  134. },
  135. //todo:保存报告基础信息
  136. * saveReportCommonDetail({ payload }, { call, put }) {
  137. let {formData,case_take_id,worker_id} = payload;
  138. yield call(createReportCommon, formData);
  139. //res拿到报告id,组装生成report对象
  140. // let report = { id: res.id };
  141. // for (let key of payload.keys()) {
  142. // report[key] = payload.get(key);
  143. // }
  144. yield put.resolve({
  145. type: 'getReportInfo',
  146. payload: { case_take_id,worker_id },
  147. });
  148. yield put({
  149. type: 'saveCurrentStep',
  150. payload: 'detail',
  151. });
  152. },
  153. //todo:创建新用例
  154. * createTestCase({ payload }, { call, put,select }) {
  155. let { formData, report_id } = payload;
  156. let res = yield call(createTestCase, formData);
  157. yield put.resolve({
  158. type: 'getTestCaseList',
  159. payload: { report_id },
  160. });
  161. const testCaseList = yield select(state => {
  162. return state.editReport.testCaseList;
  163. })
  164. return {res,testCaseList};
  165. },
  166. //todo:更新用例
  167. * updateTestCase({ payload }, { call, put }) {
  168. let { formData, report_id } = payload;
  169. let res = yield call(updateTestCaseList, formData);
  170. yield put({
  171. type: 'getTestCaseList',
  172. payload: { report_id },
  173. });
  174. return res;
  175. },
  176. //todo:获取bug列表
  177. * getCaseBugList({ payload }, { call, put }) {
  178. let bugIdList = yield call(getCaseBugList, payload);//bug id list
  179. yield put({ type: 'getBugInfo', payload: { bugIdList } });
  180. },
  181. //todo:根据bug id获取bug detail
  182. * getBugDetail({ payload }, { call, put }) {
  183. const { id } = payload;
  184. let bugInfo = yield call(getBugInfo, id);//bug id list
  185. return bugInfo;
  186. },
  187. //todo:根据bugIdList获取bug详情
  188. * getBugInfo({ payload }, { call, put }) {
  189. const { bugIdList } = payload;
  190. let newBugList = [];
  191. for (const item of bugIdList) {
  192. let newBugInfo = yield call(getBugInfo, item);
  193. newBugList = [...newBugList, newBugInfo];
  194. }
  195. yield put({
  196. type: 'saveCaseBugList',
  197. payload: newBugList,
  198. });
  199. return newBugList;
  200. },
  201. //todo:保存bug
  202. * createCaseBug({ payload }, { call, put }) {
  203. const { useCase, formData } = payload;
  204. let res = yield call(createCaseBug, formData);
  205. yield put({
  206. type: 'getCaseBugList',
  207. payload: useCase,
  208. });
  209. return res;
  210. },
  211. //todo:获取bug 路径
  212. * getPathInfo({ payload }, { call, put }) {
  213. const { case_take_id, report_id } = payload;
  214. let res = yield call(getPathInfo, case_take_id, report_id);
  215. yield put({
  216. type: 'savePathInfo',
  217. payload: res,
  218. });
  219. },
  220. //todo:获取bug 推荐路径
  221. * getBugRecommendPath({ payload }, { call, put }) {
  222. const { case_take_id, report_id } = payload;
  223. let res = yield call(getRecommendPath, case_take_id, report_id);
  224. yield put({
  225. type: 'saveRecommendPath',
  226. payload: res,
  227. });
  228. return res;
  229. },
  230. //todo:获取bug推荐列表
  231. * getBugRecommendList({ payload }, { call, put }) {
  232. const { case_take_id, report_id } = payload;
  233. let res = yield call(getRecommendList, case_take_id, report_id);
  234. yield put({
  235. type: 'saveBugRecommendList',
  236. payload: res,
  237. });
  238. return res;
  239. },
  240. //todo:点赞bug报告
  241. * goodForReport({ payload }, { call, put }) {
  242. const { id, report_id, user_id, action } = payload;
  243. let res = yield call(goodReport, id, report_id);
  244. if (res.status === 200) {
  245. yield call(recordAction, user_id, id, action);
  246. }
  247. },
  248. //todo:取消点赞bug报告
  249. * cancelGoodForReport({ payload }, { call, put }) {
  250. const { id, report_id } = payload;
  251. yield call(cancelGoodReport, id, report_id);
  252. },
  253. //todo:点踩bug报告
  254. * badForReport({ payload }, { call, put }) {
  255. const { id, report_id, user_id, action } = payload;
  256. let res = yield call(badReport, id, report_id);
  257. if(res.status === 200){
  258. yield call(recordAction, user_id, id, action);
  259. }
  260. },
  261. //todo:取消点踩bug报告
  262. * cancelBadForReport({ payload }, { call, put }) {
  263. const { id, report_id } = payload;
  264. yield call(cancelBadReport, id, report_id);
  265. },
  266. //todo:存储用户行为
  267. * recordAction({ payload }, { call, put }) {
  268. const { user_id, target_id, action } = payload;
  269. yield call(recordAction, user_id, target_id, action);
  270. },
  271. //todo:上传照片
  272. * uploadImg({ payload }, { call, put }) {
  273. const { formData } = payload;
  274. let res = yield call(uploadImage, formData);
  275. return res;
  276. },
  277. //todo:fork report
  278. * forkReport({ payload }, { call, put }) {
  279. const { page1, page2, page3, bug_category, severity, recurrent } = payload;
  280. yield call(forkReport, page1, page2, page3, bug_category, severity, recurrent);
  281. },
  282. //todo:记录点赞行为
  283. * recordGoodReport({ payload }, { call, put }) {
  284. const { user_id, target_id,action } = payload;
  285. yield call(recordGoodReport, user_id, target_id,action);
  286. },
  287. //todo:记录点踩行为
  288. * recordBadReport({ payload }, { call, put }) {
  289. const { user_id, target_id,action } = payload;
  290. yield call(recordBadReport, user_id, target_id,action);
  291. },
  292. },
  293. reducers: {
  294. saveCurrentStep(state, { payload }) {
  295. return { ...state, current: payload };
  296. },
  297. saveStepFormData(state, { payload }) {
  298. return { ...state, step: { ...state.step, ...payload } };
  299. },
  300. saveOsType(state, { payload }) {
  301. return { ...state, osType: payload };
  302. },
  303. saveReportCommonInfo(state, { payload }) {
  304. return { ...state, reportCommonInfo: payload };
  305. },
  306. saveTestCaseList(state, { payload }) {
  307. return { ...state, testCaseList: payload };
  308. },
  309. saveCaseBugList(state, { payload }) {
  310. return { ...state, caseBugList: payload };
  311. },
  312. saveCategories(state, { payload }) {
  313. return { ...state, categories: payload };
  314. },
  315. saveBugRecommendList(state, { payload }) {
  316. return { ...state, bugRecommendList: payload };
  317. },
  318. savePathInfo(state, { payload }) {
  319. return { ...state, pathInfo: payload };
  320. },
  321. saveRecommendPath(state, { payload }) {
  322. return { ...state, recommendPath: payload };
  323. },
  324. saveCommonId(state, { payload }){
  325. return { ...state, commonId: payload };
  326. }
  327. },
  328. };
  329. export default Model;