|
@@ -1,12 +1,55 @@
|
|
|
import { ZhButton } from '@/components/Button'
|
|
|
import DatePicker from '@/components/DatePicker'
|
|
|
import { tenderStore } from '@/store/mobx'
|
|
|
-import { Form, Input, InputNumber, Modal, Select, Tabs } from 'antd'
|
|
|
+import { dayjsFomrat } from '@/utils/util'
|
|
|
+import { Form, Input, InputNumber, Modal, Select, Tabs, Tag } from 'antd'
|
|
|
import locale from 'antd/es/date-picker/locale/zh_CN'
|
|
|
+import { TweenOneGroup } from 'rc-tween-one'
|
|
|
import React, { useEffect, useState } from 'react'
|
|
|
import styles from './index.module.scss'
|
|
|
const { TabPane } = Tabs
|
|
|
const { Option } = Select
|
|
|
+
|
|
|
+interface iTags {
|
|
|
+ ruleArr: any[]
|
|
|
+ setRuleArr: (arr: any[]) => void
|
|
|
+}
|
|
|
+const RenderTags:React.FC<iTags> = ({ ruleArr, setRuleArr }) => {
|
|
|
+ const handleClose = (removedTag: any) => {
|
|
|
+ const tags = ruleArr.filter(tag => tag !== removedTag)
|
|
|
+ setRuleArr(tags)
|
|
|
+ }
|
|
|
+ return (
|
|
|
+ <div>
|
|
|
+ <TweenOneGroup
|
|
|
+ enter={{
|
|
|
+ scale: 0.8,
|
|
|
+ opacity: 0,
|
|
|
+ type: 'from',
|
|
|
+ duration: 100
|
|
|
+ // onComplete: e => {
|
|
|
+ // e.target.style = ''
|
|
|
+ // }
|
|
|
+ }}
|
|
|
+ leave={{ opacity: 0, width: 0, scale: 0, duration: 200 }}
|
|
|
+ appear={false}
|
|
|
+ >
|
|
|
+ {
|
|
|
+ ruleArr.map((tag, idx) => {
|
|
|
+ return (
|
|
|
+ <span key={idx} style={{ display: 'inline-block' }}>
|
|
|
+ <Tag closable onClose={() => handleClose(tag)}>
|
|
|
+ {tag}
|
|
|
+ </Tag>
|
|
|
+ </span>
|
|
|
+ )
|
|
|
+ })
|
|
|
+ }
|
|
|
+ </TweenOneGroup>
|
|
|
+ </div>
|
|
|
+ )
|
|
|
+}
|
|
|
+
|
|
|
interface iSafeCreateFormProps {
|
|
|
visible: boolean;
|
|
|
type: string;
|
|
@@ -24,10 +67,35 @@ const SafeCreateForm: React.FC<iSafeCreateFormProps> = ({
|
|
|
}) => {
|
|
|
const [ form ] = Form.useForm()
|
|
|
const [ ruleType, setRuleType ] = useState<string>('3')
|
|
|
-
|
|
|
+ const [ ruleArr, setRuleArr ] = useState<any[]>([])
|
|
|
useEffect(() => {
|
|
|
form.setFieldsValue({ bidsectionId: tenderStore.bidsectionId })
|
|
|
}, [ tenderStore.bidsectionId ])
|
|
|
+ const ruleHandler = () => {
|
|
|
+ switch (ruleType) {
|
|
|
+ case '0':
|
|
|
+ setRuleArr([ ...ruleArr, tenderStore.name ])
|
|
|
+ break
|
|
|
+ case '1':
|
|
|
+ setRuleArr([ ...ruleArr, form.getFieldValue('ruleText') ])
|
|
|
+ break
|
|
|
+ case '2':
|
|
|
+ setRuleArr([ ...ruleArr, dayjsFomrat(new Date(), 'YYYYMM') ])
|
|
|
+ break
|
|
|
+ default:
|
|
|
+ setRuleArr([ ...ruleArr, form.getFieldValue('initCode') ])
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 处理自动位数编号 -> 联动起始编号
|
|
|
+ const digitHandler = (value: any) => {
|
|
|
+ if (value) {
|
|
|
+ const length = form.getFieldValue('digits')
|
|
|
+ const code = parseInt(form.getFieldValue('initCode'))
|
|
|
+ const newCode = (Array(length).join('0') + code).slice(-length)
|
|
|
+ form.setFieldsValue({ initCode: newCode })
|
|
|
+ }
|
|
|
+ }
|
|
|
return (
|
|
|
<Modal
|
|
|
getContainer={false}
|
|
@@ -80,6 +148,8 @@ const SafeCreateForm: React.FC<iSafeCreateFormProps> = ({
|
|
|
<>
|
|
|
<Tabs defaultActiveKey="1" type="card" size="small">
|
|
|
<TabPane tab="编号规则设置" key="1">
|
|
|
+ <h5>当前规则:{ruleArr.join('-')}</h5>
|
|
|
+ <div><RenderTags ruleArr={ruleArr} setRuleArr={setRuleArr}></RenderTags></div>
|
|
|
<Form.Item label="添加新组建规则" name="ruleType" initialValue="3">
|
|
|
<Select onChange={(value: string) => setRuleType(value)}>
|
|
|
<Option value="0">标段名</Option>
|
|
@@ -92,10 +162,10 @@ const SafeCreateForm: React.FC<iSafeCreateFormProps> = ({
|
|
|
ruleType === '3' ?
|
|
|
<>
|
|
|
<Form.Item label="自动编号位数" name="digits" initialValue="3">
|
|
|
- <InputNumber size="small" style={{ width: '100%' }}></InputNumber>
|
|
|
+ <InputNumber size="small" min={1} style={{ width: '100%' }} onChange={(value) => digitHandler(value)}></InputNumber>
|
|
|
</Form.Item>
|
|
|
<Form.Item label="起始编号" name="initCode" initialValue="001">
|
|
|
- <Input></Input>
|
|
|
+ <Input type="number"></Input>
|
|
|
</Form.Item>
|
|
|
</>
|
|
|
: ''
|
|
@@ -109,7 +179,7 @@ const SafeCreateForm: React.FC<iSafeCreateFormProps> = ({
|
|
|
</>
|
|
|
: ''
|
|
|
}
|
|
|
- <ZhButton size="small">添加组件</ZhButton>
|
|
|
+ <ZhButton size="small" onClick={() => ruleHandler()}>添加组件</ZhButton>
|
|
|
</TabPane>
|
|
|
<TabPane tab="部位设置" key="2"></TabPane>
|
|
|
</Tabs>
|
|
@@ -120,4 +190,5 @@ const SafeCreateForm: React.FC<iSafeCreateFormProps> = ({
|
|
|
)
|
|
|
}
|
|
|
|
|
|
+
|
|
|
export default SafeCreateForm
|