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. 33
      web/client/src/sections/means/containers/faultInformation.jsx
  7. 36
      web/client/src/sections/means/containers/repairFQA.jsx

16
api/.vscode/launch.json

@ -16,8 +16,8 @@
"-p 4600",
"-f http://localhost:4600",
//
// "-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.32:5432/orational_service",
// "-g postgres://postgres:123@10.8.30.166:5432/POMS_2306",
//
// "-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",
@ -26,9 +26,9 @@
"--redisPort 6379",
"--apMergeDeVeAnxinProjectId 1,2,3",
"--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",
"--apiIotAuth http://localhost:4200",
"--godUrl https://restapi.amap.com/v3",
@ -48,8 +48,8 @@
// "--clickHousePort 30123",
// "--clickHouseUrl https://clickhouse01.anxinyun.cn/play",
// click
"--clickHouseUrl http://10.8.30.156",
"--clickHousePort 8123",
"--clickHouseUrl http://10.8.30.161",
"--clickHousePort 30123",
// * 2
// "--clickHouseUser ",
// "--clickHousePassword ",
@ -61,8 +61,8 @@
// "--clickHouseDataAlarm default",
// "--clickHouseIot iot",
//
"--clickHouseAnxincloud Anxinyun101",
"--clickHousePepEmis pepca10",
"--clickHouseAnxincloud anxinyun1",
"--clickHousePepEmis pepca9",
"--clickHouseProjectManage peppm8",
"--clickHouseVcmp video_access_dev",
"--clickHouseDataAlarm default",

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

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

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

@ -17,7 +17,7 @@ module.exports = dc => {
},
projectId: {
type: DataTypes.INTEGER,
allowNull: false,
allowNull: true,
defaultValue: null,
comment: null,
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 }))
setPomsList(data)
setShowPomsList(data)
setPepProjectId(data[0]?.pepProjectId)
fileList(data[0]?.pepProjectId)
}
}))
// setPepProjectId(data[0]?.pepProjectId)
fileList(null)
}, [])
useEffect(() => {
@ -54,8 +54,8 @@ const Rest = (props) => {
data = pomsList?.filter(v => v.pepProjectName?.indexOf(projectSearch) != -1)
}
setShowPomsList(data)
setPepProjectId(data[0]?.pepProjectId)
fileList(data[0]?.pepProjectId)
setPepProjectId(data[0]?.pepProjectId || null)
fileList(data[0]?.pepProjectId || null)
setDataSource([])
setFileId('')
setFileSearch('')
@ -70,8 +70,8 @@ const Rest = (props) => {
data = pomsList
}
setShowPomsList(data)
setPepProjectId(data[0]?.pepProjectId)
fileList(data[0]?.pepProjectId)
setPepProjectId(data[0]?.pepProjectId || null)
fileList(data[0]?.pepProjectId || null)
setDataSource([])
setFileId('')
setFileSearch('')
@ -152,7 +152,7 @@ const Rest = (props) => {
if (!fileData && !list?.children?.length) {
dispatch(means.delFile(v.id)).then((res => {
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' }}>
<Input placeholder='请输入项目名称' value={projectSearch} onChange={v => setProjectSearch(v)} />
<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 => {
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={() => {
@ -309,14 +319,14 @@ const Rest = (props) => {
<FileModal
editData={editData}
higherFile={higherFile}
pepProjectId={pepProjectId}
pepProjectId={pepProjectId || null}
type={4}
close={() => {
setIsFileModal(false)
setEditData({})
}}
success={() => {
fileList(pepProjectId)
fileList(pepProjectId || null)
}}
/> : ""
}

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

@ -10,7 +10,7 @@ import './style.less'
const Rest = (props) => {
const { dispatch, actions, user, qiniu, loading, clientHeight, overallProjectId ,apiRoot} = props
const { dispatch, actions, user, qiniu, loading, clientHeight, overallProjectId, apiRoot } = props
const { install, means } = actions
const [pomsList, setPomsList] = useState([]); //
const [showPomsList, setShowPomsList] = 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 }))
setPomsList(data)
setShowPomsList(data)
setPepProjectId(data[0]?.pepProjectId)
fileList(data[0]?.pepProjectId)
}
}))
// setPepProjectId(data[0]?.pepProjectId)
fileList(null)
}, [])
useEffect(() => {
@ -54,8 +53,8 @@ const Rest = (props) => {
data = pomsList?.filter(v => v.pepProjectName?.indexOf(projectSearch) != -1)
}
setShowPomsList(data)
setPepProjectId(data[0]?.pepProjectId)
fileList(data[0]?.pepProjectId)
setPepProjectId(data[0]?.pepProjectId || null)
fileList(data[0]?.pepProjectId || null)
setDataSource([])
setFileId('')
setFileSearch('')
@ -70,8 +69,8 @@ const Rest = (props) => {
data = pomsList
}
setShowPomsList(data)
setPepProjectId(data[0]?.pepProjectId)
fileList(data[0]?.pepProjectId)
setPepProjectId(data[0]?.pepProjectId || null)
fileList(data[0]?.pepProjectId || null)
setDataSource([])
setFileId('')
setFileSearch('')
@ -152,7 +151,7 @@ const Rest = (props) => {
if (!fileData && !list?.children?.length) {
dispatch(means.delFile(v.id)).then((res => {
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' }}>
<Input placeholder='请输入项目名称' value={projectSearch} onChange={v => setProjectSearch(v)} />
<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 => {
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={() => {
@ -309,14 +318,14 @@ const Rest = (props) => {
<FileModal
editData={editData}
higherFile={higherFile}
pepProjectId={pepProjectId}
pepProjectId={pepProjectId || null}
type={3}
close={() => {
setIsFileModal(false)
setEditData({})
}}
success={() => {
fileList(pepProjectId)
fileList(pepProjectId || null)
}}
/> : ""
}
@ -559,7 +568,7 @@ function mapStateToProps (state) {
// socket: webSocket.socket
clientHeight: global.clientHeight,
qiniu: global.qiniu?.domain,
apiRoot:global.apiRoot
apiRoot: global.apiRoot
};
}

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

@ -10,11 +10,11 @@ import './style.less'
const Rest = (props) => {
const { dispatch, actions, user, qiniu, loading, clientHeight, overallProjectId ,apiRoot} = props
const { dispatch, actions, user, qiniu, loading, clientHeight, overallProjectId, apiRoot } = props
const { install, means } = actions
const [pomsList, setPomsList] = useState([]); //
const [showPomsList, setShowPomsList] = useState([]); //
const [pepProjectId, setPepProjectId] = useState() //id
const [pepProjectId, setPepProjectId] = useState(null) //id
const [projectSearch, setProjectSearch] = useState() //
const [isFileModal, setIsFileModal] = useState(false) //
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 }))
setPomsList(data)
setShowPomsList(data)
setPepProjectId(data[0]?.pepProjectId)
fileList(data[0]?.pepProjectId)
}
}))
// setPepProjectId(data[0]?.pepProjectId)
fileList(null)
}, [])
useEffect(() => {
@ -54,8 +53,8 @@ const Rest = (props) => {
data = pomsList?.filter(v => v.pepProjectName?.indexOf(projectSearch) != -1)
}
setShowPomsList(data)
setPepProjectId(data[0]?.pepProjectId)
fileList(data[0]?.pepProjectId)
setPepProjectId(data[0]?.pepProjectId || null)
fileList(data[0]?.pepProjectId || null)
setDataSource([])
setFileId('')
setFileSearch('')
@ -70,8 +69,8 @@ const Rest = (props) => {
data = pomsList
}
setShowPomsList(data)
setPepProjectId(data[0]?.pepProjectId)
fileList(data[0]?.pepProjectId)
setPepProjectId(data[0]?.pepProjectId || null)
fileList(data[0]?.pepProjectId || null)
setDataSource([])
setFileId('')
setFileSearch('')
@ -152,7 +151,7 @@ const Rest = (props) => {
if (!fileData && !list?.children?.length) {
dispatch(means.delFile(v.id)).then((res => {
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' }}>
<Input placeholder='请输入项目名称' value={projectSearch} onChange={v => setProjectSearch(v)} />
<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 => {
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={() => {
@ -309,14 +319,14 @@ const Rest = (props) => {
<FileModal
editData={editData}
higherFile={higherFile}
pepProjectId={pepProjectId}
pepProjectId={pepProjectId || null}
type={2}
close={() => {
setIsFileModal(false)
setEditData({})
}}
success={() => {
fileList(pepProjectId)
fileList(pepProjectId || null)
}}
/> : ""
}
@ -559,7 +569,7 @@ function mapStateToProps (state) {
// socket: webSocket.socket
clientHeight: global.clientHeight,
qiniu: global.qiniu?.domain,
apiRoot:global.apiRoot
apiRoot: global.apiRoot
};
}

Loading…
Cancel
Save