diff --git a/src/route/CopyrightGgoods/CopyrightGgoods.tsx b/src/route/CopyrightGgoods/CopyrightGgoods.tsx
index 5aa5cfd..0034828 100644
--- a/src/route/CopyrightGgoods/CopyrightGgoods.tsx
+++ b/src/route/CopyrightGgoods/CopyrightGgoods.tsx
@@ -33,7 +33,7 @@ export default function CopyrightGgoods() {
{
name: '智能管理系统',
short: '简称',
- number: '123456789123456789',
+ number: '31234567891234561789',
price: '5.00',
version: '1-1-1',
time: '2020-04-19 15:42:21',
@@ -42,7 +42,7 @@ export default function CopyrightGgoods() {
{
name: '商城管理系统',
short: '简称',
- number: '123456789123456789',
+ number: '1123456789123456789',
price: '5.00',
version: '1-1-1',
time: '2020-04-19 15:42:21',
@@ -51,7 +51,7 @@ export default function CopyrightGgoods() {
{
name: 'xx系统',
short: '简称',
- number: '123456789123456789',
+ number: '2123456789123456789',
price: '5.00',
version: '1-1-1',
time: '2020-04-19 15:42:21',
@@ -133,7 +133,8 @@ export default function CopyrightGgoods() {
description={
'暂无数据'
} />
- ) : (
) : (
+
(
index + 1
@@ -182,7 +183,7 @@ export default function CopyrightGgoods() {
render={(_text, record: any) => (
{
- console.log(record.order);
+ console.log(record.number);
}}>预览
diff --git a/src/route/ProductRelease/ProductRelease.tsx b/src/route/ProductRelease/ProductRelease.tsx
index f13d60e..35f305d 100644
--- a/src/route/ProductRelease/ProductRelease.tsx
+++ b/src/route/ProductRelease/ProductRelease.tsx
@@ -3,15 +3,17 @@ import './product-release.css'
import {
Select, DatePicker, Button,
// message,
- Checkbox, Empty, Switch
+ Checkbox, Empty, Switch, Modal
} from 'antd';
+import EditModal from './components/EditModal/EditModal'
// import type { CheckboxProps } from 'antd';
-import { SearchOutlined,ClearOutlined } from '@ant-design/icons';
+import { SearchOutlined, ClearOutlined } from '@ant-design/icons';
import type { DatePickerProps } from 'antd';
import locale from 'antd/es/date-picker/locale/zh_CN';
import React, { useState } from 'react';
import dayjs, { } from 'dayjs';
export default function ProductRelease() {
+ const height = window.innerHeight - 180;
// const [messageApi, contextHolder] = message.useMessage();
const dateFormat = 'YYYY年MM月DD日';
// 所属人类型
@@ -29,8 +31,17 @@ export default function ProductRelease() {
console.log('日期', dayjs(date).format(dateFormat));
};
- const height = window.innerHeight - 180;
+ // 初始化搜索条件
+ const init = () => {
+ setBelongType(undefined)
+ setDate(undefined)
+ }
+ // 点击清除
+ const clearKeyWords = () => {
+ init()
+ // 重新获取数据
+ }
// 选框选择时触发事件
const checkChange = (e: any, item: any) => {
console.log(`checked = ${e.target.checked}`);
@@ -49,17 +60,28 @@ export default function ProductRelease() {
console.log('关闭', item.order);
}
}
+ // 控制编辑弹窗
+ const [editModalOpen, setEditModalOpen] = useState(false)
// 点击编辑
const edit = (item: any) => {
console.log(item.order);
+ setEditModalOpen(true)
};
+ // 控制删除弹窗
+ const [delModalOpen, setDelModalOpen] = useState(false)
// 点击删除
const del = (item: any) => {
console.log(item.order);
+ setDelModalOpen(true)
};
+ // 删除点击确认
+
+ // 控制出售弹窗
+ const [sellModalOpen, setSellModalOpen] = useState(false)
// 点击出售
const sell = (item: any) => {
console.log(item.order);
+ setSellModalOpen(true)
};
// 点击提交
const submit = (item: any) => {
@@ -154,13 +176,15 @@ export default function ProductRelease() {
icon={}>
搜索
- }>
+ icon={}
+ onClick={clearKeyWords}
+ >
清除
@@ -253,6 +277,73 @@ export default function ProductRelease() {
+
+ {/* 编辑弹窗 */}
+ {
+ setEditModalOpen(false);
+ }}
+ >
+
+
+
+
+ {/* 删除弹窗 */}
+ {
+ setDelModalOpen(false)
+ }}
+ onCancel={() => {
+ setDelModalOpen(false)
+ }}
+ okButtonProps={{ style: { background: 'red', color: 'white' } }}
+ style={{
+ display: 'flex',
+ alignItems: 'center',
+ justifyContent: 'center',
+ height: `${height}px`,
+ }}>
+
+ 删除后这条信息将不被保存,确定删除吗?
+
+
+ {/* 出售弹窗 */}
+ {
+ setSellModalOpen(false)
+ }}
+ onCancel={() => {
+ setSellModalOpen(false)
+ }}
+ okButtonProps={{ style: { background: '#28915A', color: 'white' } }}
+ style={{
+ display: 'flex',
+ alignItems: 'center',
+ justifyContent: 'center',
+ height: `${height}px`,
+ }}>
+
+ 确定出售接口管理系统的软件著作权证吗?
+
+
)
}
diff --git a/src/route/ProductRelease/components/EditModal/EditModal.css b/src/route/ProductRelease/components/EditModal/EditModal.css
new file mode 100644
index 0000000..56c0dee
--- /dev/null
+++ b/src/route/ProductRelease/components/EditModal/EditModal.css
@@ -0,0 +1,31 @@
+.editModal {
+ padding: 32px 32px 58px 33px;
+ box-sizing: border-box;
+
+}
+
+.editModal-title {
+ display: flex;
+ align-items: center;
+}
+
+.editModal-title-box {
+ width: 10px;
+ height: 21px;
+ background: #0072FF;
+ border-radius: 5px;
+}
+
+.editModal-title-name {
+ font-size: 16px;
+ color: #222222;
+ font-weight: 700;
+ margin-left: 9px;
+}
+
+.editModal-img-box {
+ width: 489px;
+ height: 60px;
+ background: #F8F8F8;
+ border-radius: 5px;
+}
\ No newline at end of file
diff --git a/src/route/ProductRelease/components/EditModal/EditModal.tsx b/src/route/ProductRelease/components/EditModal/EditModal.tsx
new file mode 100644
index 0000000..dfcdc4b
--- /dev/null
+++ b/src/route/ProductRelease/components/EditModal/EditModal.tsx
@@ -0,0 +1,188 @@
+// import React from 'react'
+import {
+ Col, Flex, Row,
+ // Select,
+ Button, Form, Input
+} from "antd";
+
+import './EditModal.css'
+// const { TextArea } = Input;
+export default function EditModal() {
+ const [form] = Form.useForm();
+ return (
+
+ )
+}
diff --git a/src/route/index/Index.tsx b/src/route/index/Index.tsx
index 87bef15..852ebc9 100644
--- a/src/route/index/Index.tsx
+++ b/src/route/index/Index.tsx
@@ -4,7 +4,7 @@ import { MouseEvent, Reducer, useEffect, useReducer, useState } from "react";
import { useNavigate, useSearchParams, Outlet } from "react-router-dom";
import { IMenuListItem, IMenuWithTopButton } from "../../interfaces/menu/IMenuWithTopButton.ts";
import MenuWithTopButton from "../../components/menu/MenuWithTopButton.tsx";
-// import MenuWithBottomButtom from '../../components/menu/MenuWithBottomButton.tsx'
+import MenuWithBottomButtom from '../../components/menu/MenuWithBottomButton.tsx'
import MenuTreeWithTopButton from "../../components/menu/MenuTreeWithTopButton.tsx";
// import ListProj from "../../components/list/ListProj.tsx";
// import ListProjAgent from "../../components/list/ListProjAgent.tsx";
diff --git a/src/route/proj/edit/ProjEditStep1.tsx b/src/route/proj/edit/ProjEditStep1.tsx
index 0382015..de32b62 100644
--- a/src/route/proj/edit/ProjEditStep1.tsx
+++ b/src/route/proj/edit/ProjEditStep1.tsx
@@ -1,10 +1,12 @@
import './proj-edit-step.css';
-import { Col, Flex, message, Modal, Row, Select, Spin } from "antd";
+import { Col, Flex, message, Modal, Row, Spin, Pagination, Image } from "antd";
import { useParams } from "react-router-dom";
import { useEffect, useState } from "react";
-import { get, put } from "../../../util/AjaxUtils.ts";
+import { get, put, Axios } from "../../../util/AjaxUtils.ts";
import { Button, Form, Input } from 'antd';
import { AxiosResponse } from "axios";
+import { errorImage } from "../../../util/CommonUtil.ts";
+// import { useRowStyle } from 'antd/es/grid/style/index';
const { TextArea } = Input;
@@ -23,24 +25,83 @@ export default function ProjEditStep1(props: any) {
const [form] = Form.useForm();
const [loading, setLoading] = useState(false);
const [isEditModalOpen, setIsEditModalOpen] = useState(false);
+ const [isPageImgModal, setIsPageImgModal] = useState(false);
+
+
+ // 页面样式相关
+ const [page, setpage] = useState(1)
+ const [total, settotal] = useState(0)
+ const [pageImgArray, setpageImgArray] = useState([])
+ // 页面样式图片
+ const [previewImgs, setpreviewImgs] = useState('')
+ const [codeTypePageId, setcodeTypePageId] = useState('')
const height = window.innerHeight - 200
+
+ // 缓存一个被选中的图品信息 做弹窗选择确定和返回的缓存
+ const [selectedId, setSelectedId] = useState('')
+ const [selectedImg, setSelectedImg] = useState('')
+ // 初始化数据
+ const init = () => {
+ setpage(1)
+ }
+ // 获取页面样式图片等信息
+ const getPageImgData = (page: number) => {
+ get({
+ messageApi,
+ url: `/api/code/type/page/listpage`,
+ config: {
+ params: {
+ page: page,
+ rows: 10
+ }
+ },
+ onSuccess(data: any) {
+ console.log(data);
+ settotal(data.data.total)
+ setpageImgArray(data.data.rows)
+ }
+ })
+ }
+ const openPageImgModal = () => {
+ getPageImgData(page)
+ setIsPageImgModal(true)
+ }
+ // const pageImgArray1 = [
+ // { codeTypePageId: '1', previewImgs: '嘻嘻嘻' },
+ // { codeTypePageId: '2', previewImgs: '呵呵' },
+ // { codeTypePageId: '3', previewImgs: '哈哈' },
+ // { codeTypePageId: '4', previewImgs: '哥哥' },
+ // { codeTypePageId: '5', previewImgs: 'xx' },
+ // { codeTypePageId: '6', previewImgs: '11' }
+ // ]
// 初始化表格数据
- useEffect(() => {
+ const getData = () => {
get({
messageApi,
url: `/api/proj/get/edit-step1/${pathParams.projId}`,
onSuccess({ data }: AxiosResponse) {
+ console.log(data);
+
form.setFieldsValue({
projName: data.projName,
projIntroduction: data.projIntroduction,
- projStyleType: data.projStyleType,
- projCodeType: data.projCodeType,
projDesc: data.projDesc
})
+ // ${Axios.defaults?.baseURL}/route/file/v2/download/true/${item.previewImgs}
+ setpreviewImgs(data.codeTypePage.previewImgs)
+ setcodeTypePageId(data.codeTypePage.codeTypePageId)
+ setSelectedId(data.codeTypePage.codeTypePageId)
+ setSelectedImg(data.codeTypePage.previewImgs)
}
})
+ }
+
+ useEffect(() => {
+ getData()
+
}, [])
+
return (
{contextHolder}
@@ -72,7 +133,7 @@ export default function ProjEditStep1(props: any) {
autoComplete="off"
>
-
+
* 项目名称:
// label="项目名称"
@@ -84,47 +145,26 @@ export default function ProjEditStep1(props: any) {
/>
-
-
* 样式类型:
-
- // label="样式类型"
- name="projStyleType"
- rules={[{ required: true, message: '请选择样式类型' }]}
- >
-
-
-
-
* 代码类型:
-
- // label="代码类型"
- name="projCodeType"
- rules={[{ required: true, message: '请选择代码类型' }]}
- >
-
-
+
+
* 页面样式:
+
+ // label="项目名称"
+ // name="projName"
+ // rules={[{ required: true, message: '请选择页面样式' }]}
+ >
+
+ {/*

*/}
+
+
+ 点击图片选择页面样式
+
+
@@ -179,7 +219,7 @@ export default function ProjEditStep1(props: any) {
size='large'
onClick={() => {
props.closeModal()
-
+
}}>
关闭
@@ -211,9 +251,10 @@ export default function ProjEditStep1(props: any) {
body: {
projName: form.getFieldValue('projName'),
projIntroduction: form.getFieldValue('projIntroduction'),
- projStyleType: form.getFieldValue('projStyleType'),
- projCodeType: form.getFieldValue('projCodeType'),
+ // projStyleType: form.getFieldValue('projStyleType'),
+ // projCodeType: form.getFieldValue('projCodeType'),
projDesc: form.getFieldValue('projDesc'),
+ codeTypePageId
},
onBefore() {
setLoading(true);
@@ -239,6 +280,85 @@ export default function ProjEditStep1(props: any) {
}}>
确定提交吗?
+
+
+ {/* 选择页面样式弹窗 */}
+
{
+ console.log(codeTypePageId);
+
+ init()
+ // getData()
+ setcodeTypePageId(selectedId)
+ setpreviewImgs(selectedImg)
+ setIsPageImgModal(false)
+ }}
+ onCancel={() => {
+ init()
+ setSelectedId(codeTypePageId)
+ setSelectedImg(previewImgs)
+ // getData()
+ setIsPageImgModal(false);
+ }}
+
+ >
+ {/* */}
+
+ {
+ pageImgArray.map((item) => {
+ const imgSrc = `${Axios.defaults?.baseURL}/route/file/v2/download/true/${item.previewImgs}`;
+ return (
+
{
+ setSelectedId(item.codeTypePageId)
+ setSelectedImg(item.previewImgs)
+ }}
+ >
+
+
+
+
+
+ {/*
{props.title ? props.title : '标题'}
*/}
+
+
+ )
+ })
+ }
+
+
+
+ {/* defaultCurrent: 默认当前页数 total:数据总数 defaultPageSize:'页面显示几条' */}
+
{
+ console.log(page);
+ setpage(page)
+ setpageImgArray([])
+ getPageImgData(page)
+ }} />
+
+
+
diff --git a/src/route/proj/edit/ProjEditStep1Show.tsx b/src/route/proj/edit/ProjEditStep1Show.tsx
index abf8dff..6a3b51e 100644
--- a/src/route/proj/edit/ProjEditStep1Show.tsx
+++ b/src/route/proj/edit/ProjEditStep1Show.tsx
@@ -1,10 +1,11 @@
import './proj-edit-step.css';
-import { Col, message, Modal, Row, Select, Spin } from "antd";
-import { useParams } from "react-router-dom";
+import { Col, message, Modal, Row, Spin, Image } from "antd";
+import { useParams } from "react-router-dom";
import { useEffect, useState } from "react";
-import { get, put } from "../../../util/AjaxUtils.ts";
-import { Form, Input } from 'antd';
+import { get, put, Axios } from "../../../util/AjaxUtils.ts";
+import { Form, Input } from 'antd';
import { AxiosResponse } from "axios";
+import { errorImage } from "../../../util/CommonUtil.ts";
const { TextArea } = Input;
@@ -24,6 +25,7 @@ export default function ProjEditStep1() {
const [loading, setLoading] = useState(false);
const [isEditModalOpen, setIsEditModalOpen] = useState(false);
const height = window.innerHeight - 200
+ const [previewImgs, setpreviewImgs] = useState('')
useEffect(() => {
get({
@@ -33,16 +35,17 @@ export default function ProjEditStep1() {
form.setFieldsValue({
projName: data.projName,
projIntroduction: data.projIntroduction,
- projStyleType: data.projStyleType,
- projCodeType: data.projCodeType,
+ // projStyleType: data.projStyleType,
+ // projCodeType: data.projCodeType,
projDesc: data.projDesc
})
+ setpreviewImgs(data.codeTypePage.previewImgs)
+
}
})
}, [])
-
return (
-
+
{contextHolder}
{/*
-
+
* 项目名称:
// label="项目名称"
@@ -85,47 +88,26 @@ export default function ProjEditStep1() {
/>
-
-
* 样式类型:
-
- // label="样式类型"
- name="projStyleType"
- rules={[{ required: true, message: '请选择样式类型' }]}
- >
-
-
-
-
* 代码类型:
-
- // label="代码类型"
- name="projCodeType"
- rules={[{ required: true, message: '请选择代码类型' }]}
- >
-
-
+
+
* 页面样式:
+
+ // label="项目名称"
+ // name="projName"
+ // rules={[{ required: true, message: '请选择页面样式' }]}
+ >
+
+ {/*

*/}
+
+
+
+
+
diff --git a/src/route/proj/edit/proj-edit-step.css b/src/route/proj/edit/proj-edit-step.css
index 2af25ca..b0fd5c5 100644
--- a/src/route/proj/edit/proj-edit-step.css
+++ b/src/route/proj/edit/proj-edit-step.css
@@ -300,4 +300,93 @@
margin-left: 61px;
/* cursor: pointer; */
+}
+/* 选择页面样式 */
+.pageImg{
+ cursor: pointer;
+}
+.page-img-select {
+ /* margin-left: 10px; */
+ width: 500px;
+ display: inline-block;
+ /* padding: 10px; */
+ /* border: 1px solid var(--color-border); */
+ border-radius: 5px;
+ /* transition: border-color linear .3s; */
+ cursor: pointer;
+ position: relative;
+ height: 300px;
+}
+
+
+/* .page-img-select:hover {
+ border:1px solid var(--color-primary);
+} */
+
+.page-img-select .page-title {
+ /* position: relative; */
+}
+
+.page-img-select .page-title .checkbox {
+ width: 20px;
+ height: 20px;
+ position: absolute;
+ left: 15px;
+ top: 15px;
+ border: 1px solid var(--color-border);
+ /* transition: border-color linear .3s; */
+}
+
+.page-img-select .page-title .checkbox:before {
+ margin-top: 4px;
+ margin-left: 2px;
+ content: '';
+ display: block;
+ width: 14px;
+ height: 6px;
+ border-left: 2px solid var(--color-border);
+ border-bottom: 2px solid var(--color-border);
+ transform: rotate(-45deg);
+ /* transition: border-color linear .3s, background-color linear .3s;; */
+}
+
+.page-img-select:hover .page-title .checkbox {
+ border: 1px solid var(--color-primary)
+}
+
+.page-img-select:hover .page-title .checkbox:before {
+ border-left: 2px solid var(--color-primary);
+ border-bottom: 2px solid var(--color-primary);
+}
+
+.page-img-select.page-img-selected {
+ border:1px solid var(--color-primary);
+}
+
+.page-img-select.page-img-selected .page-title .checkbox {
+ border: 1px solid var(--color-primary);
+ background-color: var(--color-primary);
+}
+
+.page-img-select.page-img-selected .page-title .checkbox:before {
+ border-left: 2px solid var(--color-light);
+ border-bottom: 2px solid var(--color-light);
+}
+
+.page-img-select .page-title .text {
+ margin-left: 30px;
+ margin-top: 10px;
+ width: 190px;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ text-align: left;
+}
+.pagination{
+ margin-top: 10px;
+ margin-bottom: 10px;
+ /* background-color: pink; */
+ display: flex;
+ justify-content: flex-end;
+ width: 100%;
}
\ No newline at end of file