fix(icc add hls)

This commit is contained in:
wang_yp 2025-08-12 20:25:39 +08:00
parent 854e8562af
commit 5364d1eace
12 changed files with 118 additions and 48 deletions

View File

@ -24,7 +24,8 @@ const BTable = (props: any) => {
config, config,
btnText, btnText,
children, children,
searchConfig searchConfig,
searchCallback,
} = props; } = props;
const [selectedRowKeys, setSelectedRowKeys] = useState<React.Key[]>([]); const [selectedRowKeys, setSelectedRowKeys] = useState<React.Key[]>([]);
const formRef = React.useRef<FormInstance>(null); const formRef = React.useRef<FormInstance>(null);
@ -104,12 +105,27 @@ const BTable = (props: any) => {
const searchWidget = () => { const searchWidget = () => {
return ( return (
<> <>
{searchConfig ? <SimpleForm {searchConfig ?
<Space size="middle" style={{ display: "flex", alignItems: "start" }}>
<SimpleForm
formName={"search_form"} formName={"search_form"}
rowStyle={"form_style4"}
formRef={searchFormRef} formRef={searchFormRef}
colProps={30} colProps={30}
onFinish={() => { }} onFinish={() => {
const dats = searchFormRef.current?.getFieldsValue()
searchCallback && searchCallback(dats)
}}
formDatas={searchConfig} /> formDatas={searchConfig} />
<Button onClick={() => {
searchFormRef.current?.submit()
}}></Button>
<Button onClick={() => {
searchFormRef.current?.resetFields()
searchFormRef.current?.submit()
}}></Button>
</Space>
: null} : null}
</> </>
) )
@ -119,12 +135,12 @@ const BTable = (props: any) => {
return ( return (
<Space direction="vertical" size="middle" style={{ display: "flex" }}> <Space direction="vertical" size="middle" style={{ display: "flex" }}>
{ {
config ? <div> config ? <div className="groups">
<Button type="default" onClick={() => addHandler()}> <Button type="default" onClick={() => addHandler()}>
{btnText ?? "添加部门"} {btnText ?? "添加部门"}
</Button> </Button>
{searchWidget()} {searchWidget()}
</div>: null </div> : null
} }
<Table <Table
style={{ height: "100%", overflow: "auto" }} style={{ height: "100%", overflow: "auto" }}

View File

@ -16,7 +16,7 @@ export const FormCheckBox = (v: FormDatas) => {
}, [v.selectUrl, v.selectList]); }, [v.selectUrl, v.selectList]);
return ( return (
<Form.Item <Form.Item
key={v.label} key={v.name}
label={v.label} label={v.label}
name={v.name} name={v.name}
rules={v.rules} rules={v.rules}

View File

@ -0,0 +1,29 @@
.form_style1 {
display: grid;
grid-template-columns: repeat(1, 1fr);
gap: 10px;
}
.form_style2 {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 10px;
}
.form_style3 {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 10px;
}
.form_style4 {
display: flex;
flex-wrap: wrap;
gap: 10px;
}
.groups {
display: flex;
justify-content: space-between;
}

View File

@ -33,6 +33,7 @@ export interface FormDatas {
rules: Array<rules>, rules: Array<rules>,
model: "multiple" | "tags" | undefined model: "multiple" | "tags" | undefined
treeMultiple?: boolean treeMultiple?: boolean
placeholder?:string
} }
export interface SimpleFormData { export interface SimpleFormData {
@ -48,6 +49,8 @@ export interface SimpleFormData {
createCallback?: Function createCallback?: Function
children?: React.ReactElement children?: React.ReactElement
childrenPosi?: boolean childrenPosi?: boolean
rowStyle?:string
} }

View File

@ -16,14 +16,15 @@ export const FormSelect = (v: FormDatas) => {
}, [v.selectUrl, v.selectList]); }, [v.selectUrl, v.selectList]);
return ( return (
<Form.Item <Form.Item
key={v.label} key={v.name}
label={v.label} label={v.label}
name={v.name} name={v.name}
rules={v.rules} rules={v.rules}
> >
<Select placeholder="" mode={v.model}> <Select placeholder={v.placeholder} mode={v.model}
style={{ width: "100%" ,minWidth:"200px"}} >
{list?.map((item: any, index) => { {list?.map((item: any, index) => {
return <Option key={index} value={item.identity}> return <Option key={item.identity} value={item.identity}>
{item[v.keys ?? "name"]} {item[v.keys ?? "name"]}
</Option> </Option>
})} })}

View File

@ -8,7 +8,7 @@ import MapFrom from "../map/MapFrom";
import { FormTreeSelect } from "./tree_select"; import { FormTreeSelect } from "./tree_select";
import { FormCheckBox } from "./checkbox"; import { FormCheckBox } from "./checkbox";
import DumpSeleft from "./dump_seleft"; import DumpSeleft from "./dump_seleft";
import "./form_style.less"
// import VideoSelect from "../video_select"; // import VideoSelect from "../video_select";
const { TextArea } = Input; const { TextArea } = Input;
@ -28,6 +28,7 @@ const SimpleForm = (props: SimpleFormData) => {
name={props.formName} name={props.formName}
ref={props.formRef} ref={props.formRef}
autoComplete="on" autoComplete="on"
className={props.rowStyle}
form={form} form={form}
labelCol={{ span: props.span ?? 4 }} labelCol={{ span: props.span ?? 4 }}
wrapperCol={{ span: props.colProps }} wrapperCol={{ span: props.colProps }}
@ -40,18 +41,18 @@ const SimpleForm = (props: SimpleFormData) => {
case FormType.input: case FormType.input:
return ( return (
<Form.Item <Form.Item
key={v.label} key={v.name}
label={v.label} label={v.label}
name={v.name} name={v.name}
rules={v.rules} rules={v.rules}
> >
<Input /> <Input placeholder={v.placeholder} />
</Form.Item> </Form.Item>
); );
case FormType.inputNumber: case FormType.inputNumber:
return ( return (
<Form.Item <Form.Item
key={v.label} key={v.name}
label={v.label} label={v.label}
name={v.name} name={v.name}
rules={v.rules} rules={v.rules}
@ -62,7 +63,7 @@ const SimpleForm = (props: SimpleFormData) => {
case FormType.password: case FormType.password:
return ( return (
<Form.Item <Form.Item
key={v.label} key={v.name}
label={v.label} label={v.label}
name={v.name} name={v.name}
rules={v.rules} rules={v.rules}
@ -73,11 +74,11 @@ const SimpleForm = (props: SimpleFormData) => {
case FormType.cehckbox: case FormType.cehckbox:
return <FormCheckBox {...v} /> return <FormCheckBox {...v} />
case FormType.treeSelect: case FormType.treeSelect:
return <FormTreeSelect {...v} key={v.label} /> return <FormTreeSelect {...v} key={v.name} />
case FormType.cehckboxGroup: case FormType.cehckboxGroup:
return ( return (
<Form.Item <Form.Item
key={v.label} key={v.name}
label={v.label} label={v.label}
name={v.name} name={v.name}
rules={v.rules} rules={v.rules}
@ -96,7 +97,7 @@ const SimpleForm = (props: SimpleFormData) => {
return ( return (
<Form.Item <Form.Item
{...v} {...v}
key={v.label} key={v.name}
label={v.label} label={v.label}
valuePropName="fileList" valuePropName="fileList"
name={v.name} name={v.name}
@ -120,7 +121,7 @@ const SimpleForm = (props: SimpleFormData) => {
case FormType.textarea: case FormType.textarea:
return ( return (
<Form.Item <Form.Item
key={v.label} key={v.name}
label={v.label} label={v.label}
name={v.name} name={v.name}
rules={v.rules} rules={v.rules}
@ -135,7 +136,7 @@ const SimpleForm = (props: SimpleFormData) => {
case FormType.editor: case FormType.editor:
return ( return (
<Form.Item <Form.Item
key={v.label} key={v.name}
label={v.label} label={v.label}
name={v.name} name={v.name}
rules={v.rules} rules={v.rules}
@ -151,7 +152,7 @@ const SimpleForm = (props: SimpleFormData) => {
case FormType.radio: case FormType.radio:
return ( return (
<Form.Item <Form.Item
key={v.label} key={v.name}
label={v.label} label={v.label}
name={v.name} name={v.name}
rules={v.rules} rules={v.rules}
@ -168,7 +169,7 @@ const SimpleForm = (props: SimpleFormData) => {
case FormType.date: case FormType.date:
return ( return (
<Form.Item <Form.Item
key={v.label} key={v.name}
label={v.label} label={v.label}
name={v.name} name={v.name}
rules={v.rules} rules={v.rules}
@ -179,7 +180,7 @@ const SimpleForm = (props: SimpleFormData) => {
case FormType.map: case FormType.map:
return ( return (
<Form.Item <Form.Item
key={v.label} key={v.name}
label={v.label} label={v.label}
name={v.name} name={v.name}
rules={v.rules} rules={v.rules}
@ -196,7 +197,7 @@ const SimpleForm = (props: SimpleFormData) => {
case FormType.fetchList: case FormType.fetchList:
return ( return (
<Form.Item <Form.Item
key={v.label} key={v.name}
label={v.label} label={v.label}
name={v.name} name={v.name}
rules={v.rules} rules={v.rules}
@ -207,12 +208,12 @@ const SimpleForm = (props: SimpleFormData) => {
default: default:
return ( return (
<Form.Item <Form.Item
key={v.label} key={v.name}
label={v.label} label={v.label}
name={v.name} name={v.name}
rules={v.rules} rules={v.rules}
> >
<Input defaultValue={v.value} value={v.value} /> <Input defaultValue={v.value} value={v.value} placeholder={v.placeholder} />
</Form.Item> </Form.Item>
); );
} }

View File

@ -16,7 +16,7 @@ export const FormTreeSelect = (v: FormDatas) => {
}, [v.selectUrl, v.selectList]); }, [v.selectUrl, v.selectList]);
return ( return (
<Form.Item <Form.Item
key={v.label} key={v.name}
label={v.label} label={v.label}
name={v.name} name={v.name}
rules={v.rules} rules={v.rules}
@ -30,7 +30,7 @@ export const FormTreeSelect = (v: FormDatas) => {
}} }}
multiple={v.treeMultiple} multiple={v.treeMultiple}
showSearch showSearch
style={{ width: '100%' }} style={{ width: '100%',minWidth: '200px' }}
placeholder="请选择" placeholder="请选择"
allowClear allowClear
treeDefaultExpandAll treeDefaultExpandAll

View File

@ -4,6 +4,18 @@ import SourceConfig from "@/service/source_config";
import { EventTypeConfig } from "@/service/user_config"; import { EventTypeConfig } from "@/service/user_config";
import { ColumnsType } from "antd/es/table"; import { ColumnsType } from "antd/es/table";
export const searchConfig = [
{
type: FormType.select,
label: "",
name: "type_identity",
placeHolder:"事件类型",
keys:"type_name",
value: "",
selectUrl: EventTypeConfig.LIST,
},
]
export const defaultConfig = [ export const defaultConfig = [
{ {
type: FormType.input, type: FormType.input,
@ -159,3 +171,4 @@ export const columns: ColumnsType<UserDataType> = [
}, },
]; ];

View File

@ -2,7 +2,7 @@ import BTable from "@/components/b_table";
import { Store } from "antd/es/form/interface"; import { Store } from "antd/es/form/interface";
import { inject, observer } from "mobx-react"; import { inject, observer } from "mobx-react";
import { useEffect } from "react"; import { useEffect } from "react";
import { columns, defaultConfig } from "./config"; import { columns, defaultConfig, searchConfig } from "./config";
const Event = (props: Store) => { const Event = (props: Store) => {
const { thingStore } = props; const { thingStore } = props;
@ -13,11 +13,15 @@ const Event = (props: Store) => {
return <div className="contentBox"> return <div className="contentBox">
<BTable <BTable
btnText="添加事件" btnText="添加事件"
searchConfig={searchConfig}
store={thingStore} store={thingStore}
scroll={{ x: "max-content" }} scroll={{ x: "max-content" }}
columns={columns} columns={columns}
dataSource={thingStore.list ?? []} dataSource={thingStore.list ?? []}
config={defaultConfig} config={defaultConfig}
searchCallback={(values) => {
thingStore.getlist(values);
}}
> >
</BTable> </BTable>
</div> </div>

View File

@ -3,27 +3,27 @@ import { CompanyConfig, RoleConfig } from "@/service/user_config";
export const searchConfig = [ export const searchConfig = [
{ {
type: FormType.input, type: FormType.input,
label: "用户名", label: "",
name: "user_name", name: "user_name",
value: "", value: "",
rules: [{ required: true, message: "请输入用户名称!" }], placeholder: "请输入用户名",
}, },
{ {
type: FormType.treeSelect, type: FormType.treeSelect,
label: "所属单位", label: "",
name: "company_identity", name: "company_identity",
treeCheckbox: false, treeCheckbox: false,
placeholder: "请选择所属单位",
selectUrl: CompanyConfig.LIST, selectUrl: CompanyConfig.LIST,
value: "", value: "",
keys: "company_id", keys: "company_id",
rules: [{ required: true, message: "所属单位不能为空" }],
}, },
{ {
type: FormType.select, type: FormType.select,
label: "角色", label: "",
name: "role_identity", name: "role_identity",
selectUrl: RoleConfig.LIST, selectUrl: RoleConfig.LIST,
value: "", value: "",
rules: [{ required: true, message: "角色不能为空" }], placeholder: "请选择角色",
}, },
]; ];

View File

@ -16,7 +16,7 @@ const User = (props: Store) => {
const element = list[index]; const element = list[index];
element.menu_id = element.menu.map((item) => item.menu_identity) element.menu_id = element.menu.map((item) => item.menu_identity)
element.column_ids = element.column.map((item) => item.data_name_id) element.column_ids = element.column.map((item) => item.data_name_id)
element.thing_ids = element.thing.map((item) => item.thing_identity) element.thing_type_ids = element.thing_type.map((item) => item.type_identity)
} }
}); });
}, [usrStore, usrStore.isRefresh]); }, [usrStore, usrStore.isRefresh]);
@ -30,6 +30,9 @@ const User = (props: Store) => {
btnText="添加人员" btnText="添加人员"
dataSource={usrStore.list} dataSource={usrStore.list}
searchConfig={searchConfig} searchConfig={searchConfig}
searchCallback={(values) => {
usrStore.getlist(values);
}}
deleteCallback={(record) => { deleteCallback={(record) => {
usrStore.deleteItem(record); usrStore.deleteItem(record);
}} }}

View File

@ -3,7 +3,7 @@ import { UserDataType } from "@/model/userModel";
import { ColumnsType } from "antd/lib/table"; import { ColumnsType } from "antd/lib/table";
import { Image } from "antd"; import { Image } from "antd";
import { getBirthDateAndGender } from "@/util/util"; import { getBirthDateAndGender } from "@/util/util";
import { CompanyConfig, EventConfig, MenuConfig, RoleConfig } from "@/service/user_config"; import { CompanyConfig, EventTypeConfig, MenuConfig, RoleConfig } from "@/service/user_config";
import SourceConfig from "@/service/source_config"; import SourceConfig from "@/service/source_config";
export const defaultConfig = [ export const defaultConfig = [
{ {
@ -47,10 +47,10 @@ export const defaultConfig = [
}, },
{ {
type: FormType.cehckbox, type: FormType.cehckbox,
label: "事件", label: "事件类型",
name: "thing_ids", name: "thing_type_ids",
selectUrl: EventConfig.LIST, selectUrl: EventTypeConfig.LIST,
keys:"name", keys:"type_name",
value: [], value: [],
rules: [{ required: true, message: "请选择默认数据" }], rules: [{ required: true, message: "请选择默认数据" }],
}, },