|
@@ -15,6 +15,8 @@ import FlowModal from './FlowModal';
|
|
|
import HistoryModal from './HistoryModal';
|
|
|
import TimeNode from './TimeNode';
|
|
|
import FilesModal from './FilesModal';
|
|
|
+import VersionModal from './VersionModal';
|
|
|
+import CommitAuditModal from './CommitAuditModal';
|
|
|
import { GetTokenFromUrl, getToken } from '@/utils/utils';
|
|
|
|
|
|
const LocalData = localStorage.luckysheet;
|
|
@@ -32,6 +34,8 @@ function Detail(props) {
|
|
|
currentUser,
|
|
|
fileList,
|
|
|
roleList,
|
|
|
+ template,
|
|
|
+ versionList,
|
|
|
match: { params },
|
|
|
} = props;
|
|
|
// const audit_status = 0
|
|
@@ -43,10 +47,13 @@ function Detail(props) {
|
|
|
const [commitVisible, setCommitVisible] = useState(false);
|
|
|
const [auditVisible, setAuditVisible] = useState(false);
|
|
|
const [flowVisible, setFlowVisible] = useState(false);
|
|
|
+ const [versionVisible, setVersionVisible] = useState(false);
|
|
|
+ const [commitAuditVisible, setCommitAuditVisible] = useState(false);
|
|
|
const [sheet, setSheet] = useState({});
|
|
|
const [compareList, setCompareList] = useState([]);
|
|
|
const [edit, setEdit] = useState(false);
|
|
|
const [isMerge, setIsMerge] = useState(false);
|
|
|
+ const [version, setVersion] = useState({});
|
|
|
const [updateCount, setUpdateCount] = useState({
|
|
|
diff: 0,
|
|
|
add: 0,
|
|
@@ -129,7 +136,7 @@ function Detail(props) {
|
|
|
|
|
|
const renderSheetDom = (item, index) => {
|
|
|
return (
|
|
|
- <div key={item.id || 'temp'} className={styles.sheetItem}>
|
|
|
+ <div key={item?.id || 'temp'} className={styles.sheetItem}>
|
|
|
<h3>{item?.name}</h3>
|
|
|
<LuckySheet
|
|
|
className={styles.sheet}
|
|
@@ -171,46 +178,75 @@ function Detail(props) {
|
|
|
}
|
|
|
};
|
|
|
|
|
|
- const onCommit = values => {
|
|
|
- var flowNode = flow.currentNode;
|
|
|
-
|
|
|
- // 获取最新sheet页信息
|
|
|
+ const onCommit = (values, new_version) => {
|
|
|
+ let currentData = sheetRef.current.getSheetJson().data;
|
|
|
+ let params = {
|
|
|
+ ...values,
|
|
|
+ // id: version.id,
|
|
|
+ project_id: version.project_id,
|
|
|
+ name: version.name,
|
|
|
+ guid: version.guid,
|
|
|
+ audit_status: version.audit_status,
|
|
|
+ template_id: version.template_id,
|
|
|
+ template_node_id: version.template_node_id,
|
|
|
+ flow_id: version.flow_id,
|
|
|
+ node_id: version.node_id,
|
|
|
+ new_version: String(new_version),
|
|
|
+ data: JSON.stringify(currentData),
|
|
|
+ };
|
|
|
dispatch({
|
|
|
- type: 'detail/querySheet',
|
|
|
- payload: {
|
|
|
- project_id: projectId,
|
|
|
- flow_id: flowNode.flow_id,
|
|
|
- node_id: flowNode.id,
|
|
|
- },
|
|
|
+ type: 'detail/commitSheet',
|
|
|
+ payload: params,
|
|
|
callback: sheets => {
|
|
|
- let currentData = sheetRef.current.getSheetJson().data;
|
|
|
- currentData.forEach((item, index) => {
|
|
|
- // 使用最新的sheetId 防止多次创建sheet
|
|
|
- item.id = sheets.data[index]?.id;
|
|
|
- console.log(item.data.celldata);
|
|
|
- });
|
|
|
- let newSheet = {
|
|
|
- ...values,
|
|
|
- data: JSON.stringify(currentData),
|
|
|
- id: excelId,
|
|
|
- flow_id: flowNode.flow_id,
|
|
|
- node_id: flowNode.id,
|
|
|
- project_id: projectId,
|
|
|
- };
|
|
|
- dispatch({
|
|
|
- type: 'detail/commitSheet',
|
|
|
- payload: newSheet,
|
|
|
- callback: sheets => {
|
|
|
- onCompare(false);
|
|
|
- setCommitVisible(false);
|
|
|
- setSheet(sheets);
|
|
|
-
|
|
|
- localStorage.luckysheet = JSON.stringify(sheets);
|
|
|
- },
|
|
|
- });
|
|
|
+ onCompare(false);
|
|
|
+ setCommitVisible(false);
|
|
|
+ setVersionVisible(false);
|
|
|
+ // setSheet(sheets);
|
|
|
+
|
|
|
+ // localStorage.luckysheet = JSON.stringify(sheets);
|
|
|
},
|
|
|
});
|
|
|
};
|
|
|
+ // const onCommit = values => {
|
|
|
+ // var flowNode = flow.currentNode;
|
|
|
+
|
|
|
+ // // 获取最新sheet页信息
|
|
|
+ // dispatch({
|
|
|
+ // type: 'detail/querySheet',
|
|
|
+ // payload: {
|
|
|
+ // project_id: projectId,
|
|
|
+ // flow_id: flowNode.flow_id,
|
|
|
+ // node_id: flowNode.id,
|
|
|
+ // },
|
|
|
+ // callback: sheets => {
|
|
|
+ // let currentData = sheetRef.current.getSheetJson().data;
|
|
|
+ // currentData.forEach((item, index) => {
|
|
|
+ // // 使用最新的sheetId 防止多次创建sheet
|
|
|
+ // item.id = sheets.data[index]?.id;
|
|
|
+ // console.log(item.data.celldata);
|
|
|
+ // });
|
|
|
+ // let newSheet = {
|
|
|
+ // ...values,
|
|
|
+ // data: JSON.stringify(currentData),
|
|
|
+ // id: excelId,
|
|
|
+ // flow_id: flowNode.flow_id,
|
|
|
+ // node_id: flowNode.id,
|
|
|
+ // project_id: projectId,
|
|
|
+ // };
|
|
|
+ // dispatch({
|
|
|
+ // type: 'detail/commitSheet',
|
|
|
+ // payload: newSheet,
|
|
|
+ // callback: sheets => {
|
|
|
+ // onCompare(false);
|
|
|
+ // setCommitVisible(false);
|
|
|
+ // setSheet(sheets);
|
|
|
+
|
|
|
+ // localStorage.luckysheet = JSON.stringify(sheets);
|
|
|
+ // },
|
|
|
+ // });
|
|
|
+ // },
|
|
|
+ // });
|
|
|
+ // };
|
|
|
|
|
|
const onAudit = ({ audit_comment }) => {
|
|
|
var flowNode = flow.currentNode;
|
|
@@ -309,8 +345,6 @@ function Detail(props) {
|
|
|
const handleClickCommit = async () => {
|
|
|
const { list } = await queryHistory();
|
|
|
let lastCommit = list[0];
|
|
|
- // setCommitVisible(true);
|
|
|
- // return;
|
|
|
// 判断当前版本是否为最新版本
|
|
|
if (lastCommit && sheet.guid != lastCommit.guid) {
|
|
|
Modal.confirm({
|
|
@@ -376,7 +410,7 @@ function Detail(props) {
|
|
|
return false;
|
|
|
};
|
|
|
|
|
|
- function handleMenuClick(e) {
|
|
|
+ const handleMenuClick = e => {
|
|
|
console.log('click', e);
|
|
|
switch (e.key) {
|
|
|
case 'back':
|
|
@@ -412,10 +446,15 @@ function Detail(props) {
|
|
|
case 'edit':
|
|
|
// 编辑
|
|
|
handleEdit(true);
|
|
|
+ case 'merge':
|
|
|
+ // 同步版本
|
|
|
+
|
|
|
break;
|
|
|
case 'commit':
|
|
|
// 提交
|
|
|
- handleClickCommit();
|
|
|
+ // handleClickCommit();
|
|
|
+ setCommitVisible(true);
|
|
|
+ setCommentVisible(false);
|
|
|
break;
|
|
|
case 'approval':
|
|
|
// 申请审批
|
|
@@ -427,7 +466,7 @@ function Detail(props) {
|
|
|
queryFiles();
|
|
|
break;
|
|
|
}
|
|
|
- }
|
|
|
+ };
|
|
|
|
|
|
const renderBtns = () => {
|
|
|
if (edit) {
|
|
@@ -467,14 +506,15 @@ function Detail(props) {
|
|
|
<Menu.Item key="attachment">附件</Menu.Item>,
|
|
|
];
|
|
|
if (audit_status != 1) {
|
|
|
- menuList.push(<Menu.Item key="version">版本</Menu.Item>);
|
|
|
- menuList.push(<Menu.Item key="template">模板</Menu.Item>);
|
|
|
+ menuList.push(<Menu.Item key="version">历史提交</Menu.Item>);
|
|
|
+ // menuList.push(<Menu.Item key="template">模板</Menu.Item>);
|
|
|
}
|
|
|
if (isAuditor) {
|
|
|
menuList.push(<Menu.Item key="auditSuccess">审批通过</Menu.Item>);
|
|
|
menuList.push(<Menu.Item key="auditFailed">审批拒绝</Menu.Item>);
|
|
|
} else if (canEdit()) {
|
|
|
menuList.push(<Menu.Item key="edit">编辑</Menu.Item>);
|
|
|
+ menuList.push(<Menu.Item key="merge">合并</Menu.Item>);
|
|
|
menuList.push(<Menu.Item key="commit">提交</Menu.Item>);
|
|
|
if (history.list.length > 0) {
|
|
|
menuList.push(<Menu.Item key="approval">申请审批</Menu.Item>);
|
|
@@ -638,7 +678,42 @@ function Detail(props) {
|
|
|
window.location.href = `${record.url}`;
|
|
|
};
|
|
|
|
|
|
+ const onChangeVersion = version => {
|
|
|
+ // TODO 查询version对应内容,渲染到界面上
|
|
|
+ };
|
|
|
+
|
|
|
+ const changeVersion = id => {
|
|
|
+ let version = versionList.find(item => item.id == id);
|
|
|
+ setVersion(version);
|
|
|
+ sheetRef.current.renderSheet([]);
|
|
|
+ dispatch({
|
|
|
+ type: 'detail/queryRecord',
|
|
|
+ payload: {
|
|
|
+ project_id: projectId,
|
|
|
+ template_id: version.template_id,
|
|
|
+ template_node_id: version.template_node_id,
|
|
|
+ version_id: version.id,
|
|
|
+ },
|
|
|
+ callback: sheets => {
|
|
|
+ sheetRef.current.renderSheet(sheets.data);
|
|
|
+ },
|
|
|
+ });
|
|
|
+ };
|
|
|
+
|
|
|
useEffect(() => {
|
|
|
+ dispatch({
|
|
|
+ type: 'detail/queryProjectRecord',
|
|
|
+ payload: {
|
|
|
+ project_id: projectId,
|
|
|
+ },
|
|
|
+ });
|
|
|
+ dispatch({
|
|
|
+ type: 'xflow/queryBoomFlowDetail',
|
|
|
+ payload: {
|
|
|
+ id: 1,
|
|
|
+ },
|
|
|
+ });
|
|
|
+
|
|
|
// 查询节点
|
|
|
// dispatch({
|
|
|
// type: 'detail/queryFlowInfo',
|
|
@@ -704,30 +779,37 @@ function Detail(props) {
|
|
|
查看流程
|
|
|
</Button>
|
|
|
<div className={styles.top}>
|
|
|
- <div>当前节点/当前状态</div>
|
|
|
+ <div>
|
|
|
+ 当前节点: {version.template_node_id}/当前状态:{version.audit_status}
|
|
|
+ </div>
|
|
|
<div className={styles.btns}>
|
|
|
{renderBtns()}
|
|
|
- <Button type="primary" onClick={() => handleClickCommit()}>
|
|
|
+ <Button type="primary" onClick={() => setCommitAuditVisible(true)}>
|
|
|
提交流转
|
|
|
</Button>
|
|
|
- <Button type="primary">创建版本</Button>
|
|
|
- <Select style={{ width: 140 }} defaultValue={1}>
|
|
|
- <Option value={1}>版本1</Option>
|
|
|
- <Option value={2}>版本2</Option>
|
|
|
- <Option value={3}>版本3</Option>
|
|
|
+ <Button type="primary" onClick={() => setVersionVisible(true)}>
|
|
|
+ 创建版本
|
|
|
+ </Button>
|
|
|
+ <Select style={{ width: 140 }} value={version.id} onChange={changeVersion}>
|
|
|
+ {versionList.map(item => (
|
|
|
+ <Option value={item.id} key={item.id}>
|
|
|
+ {item.version_name}
|
|
|
+ </Option>
|
|
|
+ ))}
|
|
|
</Select>
|
|
|
</div>
|
|
|
-
|
|
|
{/* <TimeNode flow={flow}></TimeNode>
|
|
|
- <div style={{ marginTop: 20 }}>{renderAlert()}</div>
|
|
|
+
|
|
|
<div className={styles.btns}>{renderBtns()}</div>
|
|
|
+ */}
|
|
|
<input
|
|
|
type="file"
|
|
|
ref={fileRef}
|
|
|
style={{ display: 'none' }}
|
|
|
onChange={e => exportExcl(e.target.files)}
|
|
|
- /> */}
|
|
|
+ />
|
|
|
</div>
|
|
|
+ <div style={{ marginTop: 20 }}>{renderAlert()}</div>
|
|
|
{/* 判断是否为比对模式 */}
|
|
|
{compareList.length == 2 ? (
|
|
|
<>
|
|
@@ -770,13 +852,15 @@ function Detail(props) {
|
|
|
<CommitModal
|
|
|
loading={getLoading()}
|
|
|
visible={commitVisible}
|
|
|
+ version={version}
|
|
|
onClose={() => setCommitVisible(false)}
|
|
|
- onOk={onCommit}
|
|
|
+ onOk={values => onCommit(values, version.id)}
|
|
|
/>
|
|
|
<FlowModal
|
|
|
visible={flowVisible}
|
|
|
onClose={() => setFlowVisible(false)}
|
|
|
// onOk={onCommit}
|
|
|
+ onChangeVersion={onChangeVersion}
|
|
|
/>
|
|
|
<AuditModal
|
|
|
loading={getLoading()}
|
|
@@ -793,6 +877,19 @@ function Detail(props) {
|
|
|
downloadFile={downloadFile}
|
|
|
data={fileList}
|
|
|
/>
|
|
|
+ <VersionModal
|
|
|
+ loading={getLoading()}
|
|
|
+ visible={versionVisible}
|
|
|
+ onClose={() => setVersionVisible(false)}
|
|
|
+ onOk={values => onCommit(values, 0)}
|
|
|
+ />
|
|
|
+ <CommitAuditModal
|
|
|
+ loading={getLoading()}
|
|
|
+ visible={commitAuditVisible}
|
|
|
+ version={version}
|
|
|
+ onClose={() => setCommitAuditVisible(false)}
|
|
|
+ onOk={() => {}}
|
|
|
+ />
|
|
|
</Spin>
|
|
|
);
|
|
|
}
|
|
@@ -804,5 +901,7 @@ export default connect(({ detail, user, loading }) => ({
|
|
|
comment: detail.comment,
|
|
|
currentUser: user.currentUser,
|
|
|
roleList: detail.roleList,
|
|
|
+ version: detail.version,
|
|
|
+ versionList: detail.versionList,
|
|
|
loading,
|
|
|
}))(Detail);
|