Просмотр исходного кода

fix: 产品-已升级锁判断优化

lanjianrong 4 лет назад
Родитель
Сommit
01f9ef992a

+ 39 - 8
src/pages/Product/Lock/LockStore/components/LocksDetail/LockModal.jsx

@@ -35,7 +35,17 @@ const LockModal = props => {
   const [form] = Form.useForm()
   const dispatch = useDispatch()
   const scrollRef = useRef()
-  const { visible, onCancel, onConfirm, loading, type, longleId, keyNum, prodList } = props
+  const {
+    visible,
+    onCancel,
+    onConfirm,
+    loading,
+    type,
+    longleId,
+    keyNum,
+    prodList,
+    upgradeProduct
+  } = props
   const layout = {
     layout: 'vertical'
   }
@@ -54,8 +64,7 @@ const LockModal = props => {
   // 获取软件锁产品列表
   function fetchSoftProducts() {
     dispatch({
-      type: 'lock/fetchProdList',
-      payload: 'longleId'
+      type: 'lock/fetchProdList'
     })
   }
 
@@ -248,7 +257,8 @@ const LockModal = props => {
             </Button>
           </div>
         )
-      }>
+      }
+    >
       {type === lockTypeEnum.SALE ? (
         <div className="text-center mb-6">
           <Radio.Group value={state.sellStatus} buttonStyle="solid" onChange={checkGroupOnChange}>
@@ -263,7 +273,8 @@ const LockModal = props => {
           className={styles.modalContainer}
           ref={scrollRef}
           onScroll={handleListScroll}
-          style={{ paddingBottom: 0 }}>
+          style={{ paddingBottom: 0 }}
+        >
           <div className={styles.modalContent}>
             <Spin spinning={state.loading}>
               {type === lockTypeEnum.SALE &&
@@ -278,7 +289,8 @@ const LockModal = props => {
                         title="确认选择ta"
                         onConfirm={() => connectClient(item.id)}
                         okText="确认"
-                        cancelText="取消">
+                        cancelText="取消"
+                      >
                         <Button type="primary" size="small">
                           选择ta
                         </Button>
@@ -296,7 +308,8 @@ const LockModal = props => {
                         title="确认选择ta"
                         onConfirm={() => connectLongle(item.id)}
                         okText="确认"
-                        cancelText="取消">
+                        cancelText="取消"
+                      >
                         <Button type="primary" size="small">
                           更换
                         </Button>
@@ -313,7 +326,25 @@ const LockModal = props => {
       <Form {...layout} form={form}>
         {type === lockTypeEnum.UPDATE ? (
           <>
-            <Form.Item name="product" label="新增产品">
+            <Form.Item
+              name="product"
+              label="新增产品"
+              required
+              rules={[
+                () => ({
+                  validator(_, value) {
+                    if (!value) {
+                      return Promise.reject(new Error('请选择产品'))
+                    }
+                    // 表示该产品已升级
+                    if (value && upgradeProduct.includes(value)) {
+                      return Promise.reject(new Error('该产品已升级'))
+                    }
+                    return Promise.resolve(value)
+                  }
+                })
+              ]}
+            >
               <Select
                 placeholder="请选择产品"
                 onDropdownVisibleChange={async e => {

+ 2 - 1
src/pages/Product/Lock/LockStore/components/LocksDetail/TabList.jsx

@@ -25,7 +25,7 @@ const RenderLongleCon = ({ longleService }) => {
 }
 
 const LockTabList = props => {
-  const { longleLog, longleId, keyNum, clientId, logStatus } = props
+  const { longleLog, longleId, keyNum, clientId, logStatus, upgradeProduct } = props
   const { toggleDrawer, setDrawerProps } = useModal()
   const dispatch = useDispatch()
   const { TabPane } = Tabs
@@ -180,6 +180,7 @@ const LockTabList = props => {
           onCancel={() => setAddLonglelog({ ...addLonglelog, visible: false })}
           type={addLonglelog.type}
           keyNum={keyNum}
+          upgradeProduct={upgradeProduct}
           longleId={longleId}
           logStatus={logStatus}
         />

+ 1 - 0
src/pages/Product/Lock/LockStore/components/LocksDetail/index.jsx

@@ -98,6 +98,7 @@ const Index = props => {
               longleId={state.longle.id}
               clientId={state.longle.clientId}
               keyNum={state.longle.keyNum}
+              upgradeProduct={state.longle.product?.split('+') || []}
               logStatus={state.longle.status}
             />
             <LockLowerList log={state.log} />