diff --git a/knmanage/src/App.js b/knmanage/src/App.js index ca9e979..8dad2ea 100644 --- a/knmanage/src/App.js +++ b/knmanage/src/App.js @@ -1,10 +1,8 @@ -import logo from './logo.svg'; import './App.css'; -import init, { greet } from "knmodel"; -import React, { useEffect, useState, useMemo } from 'react'; +import React, { useState, useMemo } from 'react'; - -var d = { +// 默认规则数据 +window.d = { field: '就诊卡号11', required: 1, chiled: [ @@ -72,18 +70,48 @@ var d = { ], }; -function App() { +// 这里主要用于同步全局对象 +function updateData(index = "", name, value) { + console.log(index,name,value); + let idxs = index.split("-"); + let dStr = ""; + let i = 0; + while (true) { + let idx = idxs.shift() + if (typeof idx == "undefined") { + break + } + if (idx == 0 && i == 0) { + dStr = "window.d" + } + if (idx == 0 && i > 0) { + dStr += `.chiled[${idx}]`; + } + i++; + } - const [data, setData] = useState(d); + if (typeof value == "number") { + dStr += `.${name}=${value}`; + } else if (typeof value == "string") { + dStr += `.${name}="${value}"`; + } else if (typeof value == "object") { + let s = JSON.stringify(value); + dStr += `.${name}= JSON.parse(\`${s}\`)`; + } - useEffect(() => { - init().then(() => { - // greet("Hello Tianya"); - }) - }, []) + console.log(window.d); + console.log(dStr); + + eval(dStr); +} + +function App() { + + const [data, setData] = useState(window.d); function TreeNode(props) { - console.log(props); + console.log("xx"); + // 这里需要把属性分离出状态 const [idHash, setIdHash] = useState(new Date().getTime() + Math.round(Math.random() * 10000)) const [nodeField, setNodeField] = useState(props.data.field) const [nodeRequired, setNodeRequired] = useState(props.data.required) @@ -91,8 +119,8 @@ function App() { // 这里只有子集变化了才更新 const listItems = useMemo(() => { - return nodeChiled.map((item) => - + return nodeChiled.map((item, i) => + ) }, [nodeChiled]) @@ -100,14 +128,30 @@ function App() { function handleOnClick() { if (nodeRequired == 0) { setNodeRequired(1) + updateData(props.index, "required", 1); } else { setNodeRequired(0) + updateData(props.index, "required", 0); } } + // 增加子节点 + function handleOnAdd() { + let newItem = { + field: '未命名', + required: 1, + chiled: [ + ] + }; + + let newNodeChiled = nodeChiled.concat(newItem); + setNodeChiled(newNodeChiled); + updateData(props.index, "chiled", newNodeChiled); + } + return (
-

{nodeField}[{nodeRequired}]

+

{nodeField}[{nodeRequired}] +

{listItems}
); @@ -117,7 +161,7 @@ function App() {

Node


- +
); }