Showing
13 changed files
with
217 additions
and
234 deletions
src/api/apiConfig.ts
0 → 100644
1 | +import { post, get } from '@/utils/request.tsx' | |
2 | + | |
3 | + | |
4 | +/**生产线信息-获取所有生产线信息 | |
5 | + * **/ | |
6 | +export function getProductLine() { | |
7 | + return post( | |
8 | + '/open/qx-apaas-lowcode/getProductLine', | |
9 | + { | |
10 | + select_dcouji: 'ENABLE' | |
11 | + }, | |
12 | + {}, | |
13 | + {} | |
14 | + ); | |
15 | +} | |
16 | + | |
17 | +/**生产线信息--获取生产线下所有作业指导书信息 | |
18 | + * **/ | |
19 | +export function getProductBook(data: {pro_line: string}) { | |
20 | + return post( | |
21 | + '/open/qx-apaas-lowcode/getProductBook', | |
22 | + { | |
23 | + }, | |
24 | + { | |
25 | + ...data | |
26 | + }, | |
27 | + {} | |
28 | + ); | |
29 | +} | |
30 | + | |
31 | +/**获取文件预览地址 | |
32 | + * **/ | |
33 | +export function getFilePreview(fileId: string) { | |
34 | + return get( | |
35 | + `/open/qgyun-service-fs-manager/file/p/origin/${fileId}`, | |
36 | + { | |
37 | + }, | |
38 | + { | |
39 | + } | |
40 | + ); | |
41 | +} | |
\ No newline at end of file | ... | ... |
src/pages/production-list/index.tsx
deleted
100644 → 0
1 | -import React, {useEffect, useState} from 'react' | |
2 | -import './style.less' | |
3 | -import NavBar from '@/components/nav-bar' | |
4 | -import {baseColorPrimary} from "@/utils/common"; | |
5 | -import {hexToRgba} from "@/utils/utils"; | |
6 | -import _mp4 from './mp4.png'; | |
7 | -import _pdf from './pdf.png'; | |
8 | - | |
9 | -import { useSearchParams } from "react-router-dom"; | |
10 | - | |
11 | - | |
12 | -const ProductionList: React.FC = () => { | |
13 | - const [title, setTitle] = useState<string>(''); | |
14 | - // 因是hook,必须写在组件的顶部执行,useSearchParams() 返回的是数组 | |
15 | - const [params] = useSearchParams(); | |
16 | - console.log('ProductionList===params', params) | |
17 | - // 通过 get 方法获取目标参数 | |
18 | - const name = params.get("name") || ""; | |
19 | - | |
20 | - useEffect(() => { | |
21 | - if (name) { | |
22 | - setTitle(name) | |
23 | - } | |
24 | - }, [name]) | |
25 | - | |
26 | - const list = [ | |
27 | - { | |
28 | - id: '1', | |
29 | - name: '工艺流程指导文件', | |
30 | - type: 'pdf' | |
31 | - }, | |
32 | - { | |
33 | - id: '2', | |
34 | - name: '设备操作指导文件', | |
35 | - type: 'mp4' | |
36 | - }, | |
37 | - { | |
38 | - id: '3', | |
39 | - name: '工艺流程指导文件2', | |
40 | - type: 'pdf' | |
41 | - }, | |
42 | - { | |
43 | - id: '4', | |
44 | - name: '工艺流程指导文件3', | |
45 | - type: 'pdf' | |
46 | - }, | |
47 | - { | |
48 | - id: '5', | |
49 | - name: '工艺流程指导文件4', | |
50 | - type: 'pdf' | |
51 | - }, | |
52 | - { | |
53 | - id: '6', | |
54 | - name: '工艺流程指导文件5', | |
55 | - type: 'pdf' | |
56 | - }, | |
57 | - { | |
58 | - id: '7', | |
59 | - name: '设备操作指导文件2', | |
60 | - type: 'mp4' | |
61 | - }, | |
62 | - { | |
63 | - id: '8', | |
64 | - name: '设备设备设备设备设备设备设备操作指导文件3', | |
65 | - type: 'mp4' | |
66 | - }, | |
67 | - { | |
68 | - id: '9', | |
69 | - name: '设备操作指导文件4', | |
70 | - type: 'mp4' | |
71 | - }, | |
72 | - { | |
73 | - id: '10', | |
74 | - name: '设备操作指导文件5', | |
75 | - type: 'mp4' | |
76 | - }, | |
77 | - { | |
78 | - id: '11', | |
79 | - name: '设备操作指导文件6', | |
80 | - type: 'mp4' | |
81 | - }, | |
82 | - { | |
83 | - id: '12', | |
84 | - name: '设备操作指导文件7', | |
85 | - type: 'mp4' | |
86 | - }, | |
87 | - { | |
88 | - id: '13', | |
89 | - name: '设备操作指导文件8', | |
90 | - type: 'mp4' | |
91 | - }, | |
92 | - { | |
93 | - id: '14', | |
94 | - name: '设备操作指导文件9', | |
95 | - type: 'mp4' | |
96 | - }, | |
97 | - { | |
98 | - id: '15', | |
99 | - name: '设备操作指导文件10', | |
100 | - type: 'mp4' | |
101 | - } | |
102 | - ] | |
103 | - | |
104 | - | |
105 | - return ( | |
106 | - <div className={'sxjx-content-main sxjx-layout-main-unfoot'}> | |
107 | - <div className={'production-list'}> | |
108 | - <NavBar title={title} showBack={true}/> | |
109 | - <div className={'production-list_list'}> | |
110 | - { | |
111 | - list?.map((item: any) => { | |
112 | - return <div | |
113 | - key={item?.id} | |
114 | - className={'production-list_list-item'} | |
115 | - style={{backgroundColor: hexToRgba(baseColorPrimary, 0.6)}} | |
116 | - > | |
117 | - <img className={'production-list_list-item-img'} src={item?.type === 'mp4' ? _mp4 : _pdf}/> | |
118 | - <div className={'omit2 production-list_list-item-name'}> | |
119 | - {item?.name} | |
120 | - </div> | |
121 | - </div> | |
122 | - }) | |
123 | - } | |
124 | - </div> | |
125 | - </div> | |
126 | - </div> | |
127 | - ) | |
128 | -} | |
129 | - | |
130 | -export default ProductionList; |
src/pages/production-management/index.tsx
deleted
100644 → 0
1 | -import React from 'react' | |
2 | -import './style.less' | |
3 | -import NavBar from "@/components/nav-bar" | |
4 | -import {baseColorPrimary} from "@/utils/common"; | |
5 | -import {hexToRgba} from "@/utils/utils"; | |
6 | -import { useNavigate } from "react-router-dom"; | |
7 | - | |
8 | - | |
9 | -const ProductionManagement: React.FC = () => { | |
10 | - const navigate = useNavigate(); | |
11 | - | |
12 | - const list = [ | |
13 | - { | |
14 | - id: '1', | |
15 | - name: '车顶生产线A' | |
16 | - }, | |
17 | - { | |
18 | - id: '2', | |
19 | - name: '车顶生产线B' | |
20 | - }, | |
21 | - { | |
22 | - id: '3', | |
23 | - name: '车顶生产线C' | |
24 | - }, | |
25 | - { | |
26 | - id: '4', | |
27 | - name: '车顶生产线D' | |
28 | - }, | |
29 | - { | |
30 | - id: '5', | |
31 | - name: '车顶生产线E' | |
32 | - }, | |
33 | - { | |
34 | - id: '6', | |
35 | - name: '车顶生产线F' | |
36 | - }, | |
37 | - { | |
38 | - id: '7', | |
39 | - name: '车顶生产线G' | |
40 | - }, | |
41 | - { | |
42 | - id: '8', | |
43 | - name: '车顶生产线H' | |
44 | - }, | |
45 | - { | |
46 | - id: '9', | |
47 | - name: '车顶生产线I' | |
48 | - }, | |
49 | - { | |
50 | - id: '10', | |
51 | - name: '车顶生产线J' | |
52 | - }, | |
53 | - { | |
54 | - id: '11', | |
55 | - name: '车顶生产线K' | |
56 | - }, | |
57 | - { | |
58 | - id: '12', | |
59 | - name: '车顶生车顶生车顶生产线L' | |
60 | - }, | |
61 | - { | |
62 | - id: '13', | |
63 | - name: '车顶生产线M' | |
64 | - }, | |
65 | - { | |
66 | - id: '14', | |
67 | - name: '车顶生产线N' | |
68 | - } | |
69 | - ]; | |
70 | - | |
71 | - const toProductionList = (item: any) => { | |
72 | - console.log('toProductionList-item', item) | |
73 | - navigate(`/production/list?id=${item?.id}&name=${item?.name}`); | |
74 | - } | |
75 | - | |
76 | - | |
77 | - return ( | |
78 | - <div className={'sxjx-content-main sxjx-layout-main-unfoot'}> | |
79 | - <div className={'production-management'}> | |
80 | - <NavBar title={'生产线管理'}/> | |
81 | - <div className={'production-management_list'}> | |
82 | - { | |
83 | - list?.map((item: any) => { | |
84 | - return <div | |
85 | - key={item?.id} | |
86 | - className={'production-management_list-item'} | |
87 | - style={{backgroundColor: hexToRgba(baseColorPrimary, 0.6)}} | |
88 | - onClick={() => toProductionList(item)} | |
89 | - > | |
90 | - {item?.name} | |
91 | - </div> | |
92 | - }) | |
93 | - } | |
94 | - </div> | |
95 | - </div> | |
96 | - </div> | |
97 | - ) | |
98 | -} | |
99 | - | |
100 | -export default ProductionManagement; |
src/pages/production/detail/index.tsx
renamed from
src/pages/production-detail/index.tsx
src/pages/production/detail/style.less
renamed from
src/pages/production-detail/style.less
src/pages/production/list/index.tsx
0 → 100644
1 | +import React, {useEffect, useState} from 'react' | |
2 | +import './style.less' | |
3 | +import NavBar from '@/components/nav-bar' | |
4 | +import {baseColorPrimary} from "@/utils/common"; | |
5 | +import {hexToRgba} from "@/utils/utils"; | |
6 | +import _mp4 from './mp4.png'; | |
7 | +import _pdf from './pdf.png'; | |
8 | + | |
9 | +import {useSearchParams} from "react-router-dom"; | |
10 | +import {getProductBook} from "@/api/apiConfig"; | |
11 | +import {SpinLoading} from 'antd-mobile' | |
12 | + | |
13 | +interface ListType { | |
14 | + id: string; | |
15 | + name: string; | |
16 | + type: 'pdf' | 'mp4' | string | |
17 | +} | |
18 | + | |
19 | +const ProductionList: React.FC = () => { | |
20 | + const [title, setTitle] = useState<string>(''); | |
21 | + const [list, setList] = useState<ListType[]>([]); | |
22 | + const [show, setShow] = useState<boolean>(false); | |
23 | + | |
24 | + | |
25 | + // 因是hook,必须写在组件的顶部执行,useSearchParams() 返回的是数组 | |
26 | + const [params] = useSearchParams(); | |
27 | + console.log('ProductionList===params', params) | |
28 | + // 通过 get 方法获取目标参数 | |
29 | + const name = params.get("name") || ""; | |
30 | + const id = params.get("id") || ""; | |
31 | + | |
32 | + useEffect(() => { | |
33 | + if (name) { | |
34 | + setTitle(name) | |
35 | + } | |
36 | + }, [name]) | |
37 | + | |
38 | + useEffect(() => { | |
39 | + if (id) { | |
40 | + setShow(false); | |
41 | + getProductBook({pro_line: id}).then((res: any) => { | |
42 | + setShow(true); | |
43 | + const _list = res?.product_book?.map((item: any) => { | |
44 | + const _arr = item?.guide_book_file_info_?.[0]?.name?.split('.') || []; | |
45 | + return { | |
46 | + id: item?.id || '', | |
47 | + name: _arr?.[0] || '', | |
48 | + type: _arr?.[1] || '', | |
49 | + } | |
50 | + }) || []; | |
51 | + setList(_list) | |
52 | + }).catch((e: any) => { | |
53 | + setShow(true); | |
54 | + setList([]) | |
55 | + }) | |
56 | + } | |
57 | + }, [id]) | |
58 | + | |
59 | + | |
60 | + return ( | |
61 | + <div className={'sxjx-content-main sxjx-layout-main-unfoot'}> | |
62 | + <div className={'production-list'}> | |
63 | + <NavBar title={title} showBack={true}/> | |
64 | + { | |
65 | + !show ? <SpinLoading color='primary'/> : | |
66 | + <div className={'production-list_list'}> | |
67 | + { | |
68 | + list?.map((item: any) => { | |
69 | + return <div | |
70 | + key={item?.id} | |
71 | + className={'production-list_list-item'} | |
72 | + style={{backgroundColor: hexToRgba(baseColorPrimary, 0.55)}} | |
73 | + > | |
74 | + <img className={'production-list_list-item-img'} | |
75 | + src={item?.type === 'mp4' ? _mp4 : _pdf}/> | |
76 | + <div className={'omit2 production-list_list-item-name'}> | |
77 | + {item?.name} | |
78 | + </div> | |
79 | + </div> | |
80 | + }) | |
81 | + } | |
82 | + | |
83 | + </div> | |
84 | + } | |
85 | + </div> | |
86 | + </div> | |
87 | + ) | |
88 | +} | |
89 | + | |
90 | +export default ProductionList; | ... | ... |
src/pages/production/list/mp4.png
renamed from
src/pages/production-list/mp4.png
8.72 KB
src/pages/production/list/pdf.png
renamed from
src/pages/production-list/pdf.png
10.4 KB
src/pages/production/list/style.less
renamed from
src/pages/production-list/style.less
src/pages/production/management/index.tsx
0 → 100644
1 | +import React, {useEffect, useState} from 'react' | |
2 | +import './style.less' | |
3 | +import NavBar from "@/components/nav-bar" | |
4 | +import {baseColorPrimary} from "@/utils/common"; | |
5 | +import {hexToRgba} from "@/utils/utils"; | |
6 | +import { useNavigate } from "react-router-dom"; | |
7 | +import {getProductLine} from "@/api/apiConfig"; | |
8 | +import { SpinLoading } from 'antd-mobile' | |
9 | + | |
10 | +interface ListType { | |
11 | + id: string; | |
12 | + name: string; | |
13 | +} | |
14 | + | |
15 | +const ProductionManagement: React.FC = () => { | |
16 | + const navigate = useNavigate(); | |
17 | + const [list, setList] = useState<ListType[]>([]); | |
18 | + const [show, setShow] = useState<boolean>(false); | |
19 | + | |
20 | + useEffect(() => { | |
21 | + setShow(false); | |
22 | + getProductLine().then((res: any) => { | |
23 | + setShow(true); | |
24 | + const _list = res?.product_line?.map((item: any) => { | |
25 | + return { | |
26 | + id: item?.id || '', | |
27 | + name: item?.name || '', | |
28 | + } | |
29 | + }) || []; | |
30 | + setList(_list) | |
31 | + | |
32 | + }).catch((e: any) => { | |
33 | + setShow(true); | |
34 | + setList([]) | |
35 | + }) | |
36 | + }, []) | |
37 | + | |
38 | + const toProductionList = (item: any) => { | |
39 | + console.log('toProductionList-item', item) | |
40 | + navigate(`/production/list?id=${item?.id}&name=${item?.name}`); | |
41 | + } | |
42 | + | |
43 | + | |
44 | + return ( | |
45 | + <div className={'sxjx-content-main sxjx-layout-main-unfoot'}> | |
46 | + <div className={'production-management'}> | |
47 | + <NavBar title={'生产线管理'}/> | |
48 | + { | |
49 | + !show ? <SpinLoading color='primary' /> : | |
50 | + <div className={'production-management_list'}> | |
51 | + { | |
52 | + list?.map((item: any) => { | |
53 | + return <div | |
54 | + key={item?.id} | |
55 | + className={'production-management_list-item'} | |
56 | + style={{backgroundColor: hexToRgba(baseColorPrimary, 0.6)}} | |
57 | + onClick={() => toProductionList(item)} | |
58 | + > | |
59 | + {item?.name} | |
60 | + </div> | |
61 | + }) | |
62 | + } | |
63 | + </div> | |
64 | + } | |
65 | + | |
66 | + </div> | |
67 | + </div> | |
68 | + ) | |
69 | +} | |
70 | + | |
71 | +export default ProductionManagement; | ... | ... |
src/pages/production/management/style.less
renamed from
src/pages/production-management/style.less
1 | 1 | import {createHashRouter} from 'react-router-dom'; |
2 | 2 | import ErrorPage from "./pages/errorPage"; |
3 | -import ProductionManagement from "./pages/production-management"; | |
4 | -import ProductionList from "./pages/production-list"; | |
5 | -import ProductionDetail from "./pages/production-detail"; | |
3 | +import ProductionManagement from "./pages/production/management"; | |
4 | +import ProductionList from "./pages/production/list"; | |
5 | +import ProductionDetail from "./pages/production/detail"; | |
6 | 6 | |
7 | 7 | |
8 | 8 | const routers = [ | ... | ... |