Browse Source

资料---添加项目通用文件

dev
wenlele 2 years ago
parent
commit
25543c74a7
  1. 16
      api/.vscode/launch.json
  2. 6
      api/app/lib/controllers/means/index.js
  3. 2
      api/app/lib/models/project_folder.js
  4. 1
      script/0.26/schema/updata_project_folder.sql
  5. 30
      web/client/src/sections/means/containers/devOpsStandard.jsx
  6. 29
      web/client/src/sections/means/containers/faultInformation.jsx
  7. 32
      web/client/src/sections/means/containers/repairFQA.jsx

16
api/.vscode/launch.json

@ -16,8 +16,8 @@
"-p 4600", "-p 4600",
"-f http://localhost:4600", "-f http://localhost:4600",
// //
// "-g postgres://postgres:123@10.8.30.32:5432/orational_service", "-g postgres://postgres:123@10.8.30.32:5432/orational_service",
"-g postgres://postgres:123@10.8.30.166:5432/POMS_2306", // "-g postgres://postgres:123@10.8.30.166:5432/POMS_2306",
// //
// "-g postgres://FashionAdmin:123456@10.8.30.156:5432/POMS", // "-g postgres://FashionAdmin:123456@10.8.30.156:5432/POMS",
"-k 10.8.30.72:29092,10.8.30.73:29092,10.8.30.74:29092", "-k 10.8.30.72:29092,10.8.30.73:29092,10.8.30.74:29092",
@ -26,9 +26,9 @@
"--redisPort 6379", "--redisPort 6379",
"--apMergeDeVeAnxinProjectId 1,2,3", "--apMergeDeVeAnxinProjectId 1,2,3",
"--axyApiUrl http://127.0.0.1:4100", "--axyApiUrl http://127.0.0.1:4100",
// "--apiEmisUrl http://10.8.30.112:14000", "--apiEmisUrl http://10.8.30.112:14000",
// //
"--apiEmisUrl http://10.8.30.161:1111", // "--apiEmisUrl http://10.8.30.161:1111",
"--apiVcmpUrl http://localhost:4000", "--apiVcmpUrl http://localhost:4000",
"--apiIotAuth http://localhost:4200", "--apiIotAuth http://localhost:4200",
"--godUrl https://restapi.amap.com/v3", "--godUrl https://restapi.amap.com/v3",
@ -48,8 +48,8 @@
// "--clickHousePort 30123", // "--clickHousePort 30123",
// "--clickHouseUrl https://clickhouse01.anxinyun.cn/play", // "--clickHouseUrl https://clickhouse01.anxinyun.cn/play",
// click // click
"--clickHouseUrl http://10.8.30.156", "--clickHouseUrl http://10.8.30.161",
"--clickHousePort 8123", "--clickHousePort 30123",
// * 2 // * 2
// "--clickHouseUser ", // "--clickHouseUser ",
// "--clickHousePassword ", // "--clickHousePassword ",
@ -61,8 +61,8 @@
// "--clickHouseDataAlarm default", // "--clickHouseDataAlarm default",
// "--clickHouseIot iot", // "--clickHouseIot iot",
// //
"--clickHouseAnxincloud Anxinyun101", "--clickHouseAnxincloud anxinyun1",
"--clickHousePepEmis pepca10", "--clickHousePepEmis pepca9",
"--clickHouseProjectManage peppm8", "--clickHouseProjectManage peppm8",
"--clickHouseVcmp video_access_dev", "--clickHouseVcmp video_access_dev",
"--clickHouseDataAlarm default", "--clickHouseDataAlarm default",

6
api/app/lib/controllers/means/index.js

@ -48,9 +48,9 @@ async function fileList (ctx, next) {
const { projectId, type } = ctx.query; const { projectId, type } = ctx.query;
let options = { where: {}, } let options = { where: {}, }
if (projectId) {
options.where.projectId = projectId options.where.projectId = projectId || null
}
if (type) { if (type) {
options.where.type = type options.where.type = type
} }

2
api/app/lib/models/project_folder.js

@ -17,7 +17,7 @@ module.exports = dc => {
}, },
projectId: { projectId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: true,
defaultValue: null, defaultValue: null,
comment: null, comment: null,
primaryKey: false, primaryKey: false,

1
script/0.26/schema/updata_project_folder.sql

@ -0,0 +1 @@
alter table project_folder alter column project_id drop not null;

30
web/client/src/sections/means/containers/devOpsStandard.jsx

@ -39,11 +39,11 @@ const Rest = (props) => {
let data = res.payload.data?.rows?.filter(v => v.pepProjectIsDelete !== 1)?.map(v => ({ pepProjectId: v.id, pepProjectName: v.pepProjectName || v.name })) let data = res.payload.data?.rows?.filter(v => v.pepProjectIsDelete !== 1)?.map(v => ({ pepProjectId: v.id, pepProjectName: v.pepProjectName || v.name }))
setPomsList(data) setPomsList(data)
setShowPomsList(data) setShowPomsList(data)
setPepProjectId(data[0]?.pepProjectId)
fileList(data[0]?.pepProjectId)
} }
})) }))
// setPepProjectId(data[0]?.pepProjectId)
fileList(null)
}, []) }, [])
useEffect(() => { useEffect(() => {
@ -54,8 +54,8 @@ const Rest = (props) => {
data = pomsList?.filter(v => v.pepProjectName?.indexOf(projectSearch) != -1) data = pomsList?.filter(v => v.pepProjectName?.indexOf(projectSearch) != -1)
} }
setShowPomsList(data) setShowPomsList(data)
setPepProjectId(data[0]?.pepProjectId) setPepProjectId(data[0]?.pepProjectId || null)
fileList(data[0]?.pepProjectId) fileList(data[0]?.pepProjectId || null)
setDataSource([]) setDataSource([])
setFileId('') setFileId('')
setFileSearch('') setFileSearch('')
@ -70,8 +70,8 @@ const Rest = (props) => {
data = pomsList data = pomsList
} }
setShowPomsList(data) setShowPomsList(data)
setPepProjectId(data[0]?.pepProjectId) setPepProjectId(data[0]?.pepProjectId || null)
fileList(data[0]?.pepProjectId) fileList(data[0]?.pepProjectId || null)
setDataSource([]) setDataSource([])
setFileId('') setFileId('')
setFileSearch('') setFileSearch('')
@ -152,7 +152,7 @@ const Rest = (props) => {
if (!fileData && !list?.children?.length) { if (!fileData && !list?.children?.length) {
dispatch(means.delFile(v.id)).then((res => { dispatch(means.delFile(v.id)).then((res => {
if (res.success) { if (res.success) {
fileList(v.projectId) fileList(v.projectId || null)
} }
})) }))
} }
@ -279,6 +279,16 @@ const Rest = (props) => {
<div style={{ width: 200, height: '100%', padding: '16px 10px', boxShadow: '0 0 4px 2px #0000000d' }}> <div style={{ width: 200, height: '100%', padding: '16px 10px', boxShadow: '0 0 4px 2px #0000000d' }}>
<Input placeholder='请输入项目名称' value={projectSearch} onChange={v => setProjectSearch(v)} /> <Input placeholder='请输入项目名称' value={projectSearch} onChange={v => setProjectSearch(v)} />
<SimpleBar style={{ height: 'calc(100% - 24px', }} forceVisible="y" > <SimpleBar style={{ height: 'calc(100% - 24px', }} forceVisible="y" >
<div style={{ cursor: 'pointer', background: pepProjectId == null ? 'rgb(15 126 251 / 16%)' : '', width: 180, height: 30, display: 'flex', alignItems: 'center' }}
onClick={() => {
setPepProjectId(null)
fileList(null)
setDataSource([])
setFileId('')
}}>
<img src="/assets/images/icon/project-icon.png" style={{ width: 14, marginRight: 8 }} />
<div style={{ fontSize: 14, width: 152, whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis' }}>项目通用</div>
</div>
{showPomsList?.map(v => { {showPomsList?.map(v => {
return <div key={'pepProjectId' + v.pepProjectId} title={v.pepProjectName} style={{ cursor: 'pointer', background: v.pepProjectId == pepProjectId ? 'rgb(15 126 251 / 16%)' : '', width: 180, height: 30, display: 'flex', alignItems: 'center' }} return <div key={'pepProjectId' + v.pepProjectId} title={v.pepProjectName} style={{ cursor: 'pointer', background: v.pepProjectId == pepProjectId ? 'rgb(15 126 251 / 16%)' : '', width: 180, height: 30, display: 'flex', alignItems: 'center' }}
onClick={() => { onClick={() => {
@ -309,14 +319,14 @@ const Rest = (props) => {
<FileModal <FileModal
editData={editData} editData={editData}
higherFile={higherFile} higherFile={higherFile}
pepProjectId={pepProjectId} pepProjectId={pepProjectId || null}
type={4} type={4}
close={() => { close={() => {
setIsFileModal(false) setIsFileModal(false)
setEditData({}) setEditData({})
}} }}
success={() => { success={() => {
fileList(pepProjectId) fileList(pepProjectId || null)
}} }}
/> : "" /> : ""
} }

29
web/client/src/sections/means/containers/faultInformation.jsx

@ -39,11 +39,10 @@ const Rest = (props) => {
let data = res.payload.data?.rows?.filter(v => v.pepProjectIsDelete !== 1)?.map(v => ({ pepProjectId: v.id, pepProjectName: v.pepProjectName || v.name })) let data = res.payload.data?.rows?.filter(v => v.pepProjectIsDelete !== 1)?.map(v => ({ pepProjectId: v.id, pepProjectName: v.pepProjectName || v.name }))
setPomsList(data) setPomsList(data)
setShowPomsList(data) setShowPomsList(data)
setPepProjectId(data[0]?.pepProjectId)
fileList(data[0]?.pepProjectId)
} }
})) }))
// setPepProjectId(data[0]?.pepProjectId)
fileList(null)
}, []) }, [])
useEffect(() => { useEffect(() => {
@ -54,8 +53,8 @@ const Rest = (props) => {
data = pomsList?.filter(v => v.pepProjectName?.indexOf(projectSearch) != -1) data = pomsList?.filter(v => v.pepProjectName?.indexOf(projectSearch) != -1)
} }
setShowPomsList(data) setShowPomsList(data)
setPepProjectId(data[0]?.pepProjectId) setPepProjectId(data[0]?.pepProjectId || null)
fileList(data[0]?.pepProjectId) fileList(data[0]?.pepProjectId || null)
setDataSource([]) setDataSource([])
setFileId('') setFileId('')
setFileSearch('') setFileSearch('')
@ -70,8 +69,8 @@ const Rest = (props) => {
data = pomsList data = pomsList
} }
setShowPomsList(data) setShowPomsList(data)
setPepProjectId(data[0]?.pepProjectId) setPepProjectId(data[0]?.pepProjectId || null)
fileList(data[0]?.pepProjectId) fileList(data[0]?.pepProjectId || null)
setDataSource([]) setDataSource([])
setFileId('') setFileId('')
setFileSearch('') setFileSearch('')
@ -152,7 +151,7 @@ const Rest = (props) => {
if (!fileData && !list?.children?.length) { if (!fileData && !list?.children?.length) {
dispatch(means.delFile(v.id)).then((res => { dispatch(means.delFile(v.id)).then((res => {
if (res.success) { if (res.success) {
fileList(v.projectId) fileList(v.projectId || null)
} }
})) }))
} }
@ -279,6 +278,16 @@ const Rest = (props) => {
<div style={{ width: 200, height: '100%', padding: '16px 10px', boxShadow: '0 0 4px 2px #0000000d' }}> <div style={{ width: 200, height: '100%', padding: '16px 10px', boxShadow: '0 0 4px 2px #0000000d' }}>
<Input placeholder='请输入项目名称' value={projectSearch} onChange={v => setProjectSearch(v)} /> <Input placeholder='请输入项目名称' value={projectSearch} onChange={v => setProjectSearch(v)} />
<SimpleBar style={{ height: 'calc(100% - 24px', }} forceVisible="y" > <SimpleBar style={{ height: 'calc(100% - 24px', }} forceVisible="y" >
<div style={{ cursor: 'pointer', background: pepProjectId == null ? 'rgb(15 126 251 / 16%)' : '', width: 180, height: 30, display: 'flex', alignItems: 'center' }}
onClick={() => {
setPepProjectId(null)
fileList(null)
setDataSource([])
setFileId('')
}}>
<img src="/assets/images/icon/project-icon.png" style={{ width: 14, marginRight: 8 }} />
<div style={{ fontSize: 14, width: 152, whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis' }}>项目通用</div>
</div>
{showPomsList?.map(v => { {showPomsList?.map(v => {
return <div key={'pepProjectId' + v.pepProjectId} title={v.pepProjectName} style={{ cursor: 'pointer', background: v.pepProjectId == pepProjectId ? 'rgb(15 126 251 / 16%)' : '', width: 180, height: 30, display: 'flex', alignItems: 'center' }} return <div key={'pepProjectId' + v.pepProjectId} title={v.pepProjectName} style={{ cursor: 'pointer', background: v.pepProjectId == pepProjectId ? 'rgb(15 126 251 / 16%)' : '', width: 180, height: 30, display: 'flex', alignItems: 'center' }}
onClick={() => { onClick={() => {
@ -309,14 +318,14 @@ const Rest = (props) => {
<FileModal <FileModal
editData={editData} editData={editData}
higherFile={higherFile} higherFile={higherFile}
pepProjectId={pepProjectId} pepProjectId={pepProjectId || null}
type={3} type={3}
close={() => { close={() => {
setIsFileModal(false) setIsFileModal(false)
setEditData({}) setEditData({})
}} }}
success={() => { success={() => {
fileList(pepProjectId) fileList(pepProjectId || null)
}} }}
/> : "" /> : ""
} }

32
web/client/src/sections/means/containers/repairFQA.jsx

@ -14,7 +14,7 @@ const Rest = (props) => {
const { install, means } = actions const { install, means } = actions
const [pomsList, setPomsList] = useState([]); // const [pomsList, setPomsList] = useState([]); //
const [showPomsList, setShowPomsList] = useState([]); // const [showPomsList, setShowPomsList] = useState([]); //
const [pepProjectId, setPepProjectId] = useState() //id const [pepProjectId, setPepProjectId] = useState(null) //id
const [projectSearch, setProjectSearch] = useState() // const [projectSearch, setProjectSearch] = useState() //
const [isFileModal, setIsFileModal] = useState(false) // const [isFileModal, setIsFileModal] = useState(false) //
const [editData, setEditData] = useState({}) // const [editData, setEditData] = useState({}) //
@ -39,11 +39,10 @@ const Rest = (props) => {
let data = res.payload.data?.rows?.filter(v => v.pepProjectIsDelete !== 1)?.map(v => ({ pepProjectId: v.id, pepProjectName: v.pepProjectName || v.name })) let data = res.payload.data?.rows?.filter(v => v.pepProjectIsDelete !== 1)?.map(v => ({ pepProjectId: v.id, pepProjectName: v.pepProjectName || v.name }))
setPomsList(data) setPomsList(data)
setShowPomsList(data) setShowPomsList(data)
setPepProjectId(data[0]?.pepProjectId)
fileList(data[0]?.pepProjectId)
} }
})) }))
// setPepProjectId(data[0]?.pepProjectId)
fileList(null)
}, []) }, [])
useEffect(() => { useEffect(() => {
@ -54,8 +53,8 @@ const Rest = (props) => {
data = pomsList?.filter(v => v.pepProjectName?.indexOf(projectSearch) != -1) data = pomsList?.filter(v => v.pepProjectName?.indexOf(projectSearch) != -1)
} }
setShowPomsList(data) setShowPomsList(data)
setPepProjectId(data[0]?.pepProjectId) setPepProjectId(data[0]?.pepProjectId || null)
fileList(data[0]?.pepProjectId) fileList(data[0]?.pepProjectId || null)
setDataSource([]) setDataSource([])
setFileId('') setFileId('')
setFileSearch('') setFileSearch('')
@ -70,8 +69,8 @@ const Rest = (props) => {
data = pomsList data = pomsList
} }
setShowPomsList(data) setShowPomsList(data)
setPepProjectId(data[0]?.pepProjectId) setPepProjectId(data[0]?.pepProjectId || null)
fileList(data[0]?.pepProjectId) fileList(data[0]?.pepProjectId || null)
setDataSource([]) setDataSource([])
setFileId('') setFileId('')
setFileSearch('') setFileSearch('')
@ -152,7 +151,7 @@ const Rest = (props) => {
if (!fileData && !list?.children?.length) { if (!fileData && !list?.children?.length) {
dispatch(means.delFile(v.id)).then((res => { dispatch(means.delFile(v.id)).then((res => {
if (res.success) { if (res.success) {
fileList(v.projectId) fileList(v.projectId || null)
} }
})) }))
} }
@ -279,6 +278,17 @@ const Rest = (props) => {
<div style={{ width: 200, height: '100%', padding: '16px 10px', boxShadow: '0 0 4px 2px #0000000d' }}> <div style={{ width: 200, height: '100%', padding: '16px 10px', boxShadow: '0 0 4px 2px #0000000d' }}>
<Input placeholder='请输入项目名称' value={projectSearch} onChange={v => setProjectSearch(v)} /> <Input placeholder='请输入项目名称' value={projectSearch} onChange={v => setProjectSearch(v)} />
<SimpleBar style={{ height: 'calc(100% - 24px', }} forceVisible="y" > <SimpleBar style={{ height: 'calc(100% - 24px', }} forceVisible="y" >
<div style={{ cursor: 'pointer', background: pepProjectId == null ? 'rgb(15 126 251 / 16%)' : '', width: 180, height: 30, display: 'flex', alignItems: 'center' }}
onClick={() => {
setPepProjectId(null)
fileList(null)
setDataSource([])
setFileId('')
}}>
<img src="/assets/images/icon/project-icon.png" style={{ width: 14, marginRight: 8 }} />
<div style={{ fontSize: 14, width: 152, whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis' }}>项目通用</div>
</div>
{showPomsList?.map(v => { {showPomsList?.map(v => {
return <div key={'pepProjectId' + v.pepProjectId} title={v.pepProjectName} style={{ cursor: 'pointer', background: v.pepProjectId == pepProjectId ? 'rgb(15 126 251 / 16%)' : '', width: 180, height: 30, display: 'flex', alignItems: 'center' }} return <div key={'pepProjectId' + v.pepProjectId} title={v.pepProjectName} style={{ cursor: 'pointer', background: v.pepProjectId == pepProjectId ? 'rgb(15 126 251 / 16%)' : '', width: 180, height: 30, display: 'flex', alignItems: 'center' }}
onClick={() => { onClick={() => {
@ -309,14 +319,14 @@ const Rest = (props) => {
<FileModal <FileModal
editData={editData} editData={editData}
higherFile={higherFile} higherFile={higherFile}
pepProjectId={pepProjectId} pepProjectId={pepProjectId || null}
type={2} type={2}
close={() => { close={() => {
setIsFileModal(false) setIsFileModal(false)
setEditData({}) setEditData({})
}} }}
success={() => { success={() => {
fileList(pepProjectId) fileList(pepProjectId || null)
}} }}
/> : "" /> : ""
} }

Loading…
Cancel
Save