Selaa lähdekoodia

feat: 大司空企业版限期功能

outaozhen 4 vuotta sitten
vanhempi
commit
bc33dc547e

+ 81 - 0
src/pages/Product/Road/Enterprise/components/Detail/DeadlineModal.jsx

@@ -0,0 +1,81 @@
+import { upgradeTypeEnum } from '@/pages/Product/Cloud/components/Detail/UpgradeModal'
+import { dayjsFormat } from '@/utils/utils'
+import { DatePicker, Form, Modal } from 'antd'
+import dayjs from 'dayjs'
+import React, { useEffect, useState } from 'react'
+import { useDispatch } from 'umi'
+
+const DeadlineModal = props => {
+  const {
+    onCancel,
+    onConfirm,
+    companyId,
+    actionPayload,
+    roadPricingDeadline: { loading, visible, deadline, compilationId, upgradeType }
+  } = props
+  const [form] = Form.useForm()
+  const dispatch = useDispatch()
+  const [showDeadline, setShowDeadline] = useState(false)
+  const layout = {
+    layout: 'vertical'
+  }
+  useEffect(() => {
+    if (upgradeType === upgradeTypeEnum.DEADLINE) {
+      form?.setFieldsValue({ deadline: dayjs(deadline) })
+      setShowDeadline(true)
+    }
+  }, [upgradeType])
+  const onChange = value => {
+    setShowDeadline(value)
+  }
+  const disabledDate = current => {
+    return current && current < dayjs().endOf('day')
+  }
+  const handleonOk = () => {
+    form.validateFields().then(values => {
+      const newVal = { ...values }
+      if (values.deadline) {
+        newVal.deadline = dayjs(values.deadline).valueOf()
+      }
+      onConfirm({
+        ...newVal,
+        companyId,
+        compilationId
+      })
+      form.resetFields()
+      dispatch({
+        type: 'refresh/commitAction',
+        payload: actionPayload
+      })
+    })
+  }
+  return (
+    <Modal
+      getContainer={() => document.getElementById('root')}
+      width={800}
+      title="确认限期"
+      visible={visible}
+      confirmLoading={loading}
+      onCancel={() => {
+        setShowDeadline(false)
+        onCancel()
+        form?.resetFields()
+      }}
+      onOk={handleonOk}>
+      <div className="mb-6">
+        {/* 未用户<b>{cloudUser.mobile}</b>,<b>{cloudUser.username}</b> <b>{cloudUser.name}</b>{' '}
+        <b>{compilationListName}</b> 设置延期 */}
+        <div className="pt-5 pb-5">
+          当前限期为 <b>{dayjsFormat(deadline, 'YYYY-MM-DD')}</b>
+        </div>
+      </div>
+      <Form {...layout} form={form}>
+        <Form.Item name="deadline" label="到期时间">
+          <DatePicker style={{ width: '100%' }} disabled={!showDeadline} disabledDate={disabledDate} />
+        </Form.Item>
+      </Form>
+    </Modal>
+  )
+}
+
+export default DeadlineModal

+ 57 - 9
src/pages/Product/Road/Enterprise/components/Detail/TabList.jsx

@@ -1,20 +1,48 @@
 import { Button, Tabs, Tag, message } from 'antd'
-import React, { useRef } from 'react'
+import React, { useRef, useState } from 'react'
 import ProTable from '@ant-design/pro-table'
 import { renderBadge } from '@/pages/Workbench/Dashboard/components/RatioPanels'
 import { useModal } from '@/components/ModalStore'
-import { apiRoadUpdateCompany } from '@/services/product'
+import { apiRoadPricingDeadline, apiRoadUpdateCompany } from '@/services/product'
 import consts from '@/consts'
+import { useDispatch } from 'dva'
 import { dayjsFormat } from '@/utils/utils'
+import DeadlineModal from './DeadlineModal'
+import { upgradeTypeEnum } from '@/pages/Product/Cloud/components/Detail/UpgradeModal'
 
 const EnterpriseTabList = props => {
   const {
     company,
     reload,
-    company: { proCptList, members }
+    company: { proCptList, members },
+    companyId,
+    actionPayload = { main: 'enterprise' }
   } = props
   const { TabPane } = Tabs
+  const dispatch = useDispatch()
   const dispatchModal = useModal()
+  const [roadPricingDeadline, setRoadPricingDeadline] = useState({
+    deadline: '',
+    visible: false,
+    loading: false
+  })
+  const handleRoadPricingDeadline = async values => {
+    setRoadPricingDeadline({ ...roadPricingDeadline, visible: true })
+    const { code = -1 } = await apiRoadPricingDeadline({
+      ...values,
+      companyId
+    })
+    if (code === consts.RET_CODE.SUCCESS) {
+      message.success('更新成功')
+      // 请求完了
+      setRoadPricingDeadline({ ...roadPricingDeadline, loading: false, visible: false })
+      // 刷新数据
+      dispatch({
+        type: 'refresh/commitAction',
+        payload: actionPayload
+      })
+    }
+  }
   const isUpgradeEnum = {
     true: '开通',
     false: '未开通',
@@ -41,16 +69,29 @@ const EnterpriseTabList = props => {
       width: '10%',
       renderText: text => dayjsFormat(text, 'YYYY-MM-DD')
     },
-    {
-      title: '责任人',
-      dataIndex: 'a1',
-      width: '10%'
-    },
+    // {
+    //   title: '责任人',
+    //   dataIndex: 'a1',
+    //   width: '10%'
+    // },
     {
       title: '操作',
       width: '15%',
       render: (_, record) => (
-        <Button type="primary" ghost danger size="small">
+        <Button
+          type="primary"
+          ghost
+          danger
+          size="small"
+          onClick={() =>
+            setRoadPricingDeadline({
+              ...setRoadPricingDeadline,
+              visible: true,
+              deadline: record.deadline,
+              compilationId: record.compilationID,
+              upgradeType: upgradeTypeEnum.DEADLINE
+            })
+          }>
           限期
         </Button>
       )
@@ -127,6 +168,13 @@ const EnterpriseTabList = props => {
           企业版管理
         </Button>
       </div>
+      <DeadlineModal
+        onConfirm={handleRoadPricingDeadline}
+        onCancel={() => setRoadPricingDeadline({ ...roadPricingDeadline, visible: false })}
+        actionPayload={actionPayload}
+        companyId={companyId}
+        roadPricingDeadline={roadPricingDeadline}
+      />
     </div>
   )
 }

+ 5 - 1
src/pages/Product/Road/Enterprise/components/Detail/index.jsx

@@ -128,7 +128,11 @@ const EnterpriseDetail = props => {
               </div>
             </Col>
             <Col span={15} className="sheet-box-right">
-              <EnterpriseTabList company={state.company} reload={refreshDetail} />
+              <EnterpriseTabList
+                company={state.company}
+                reload={refreshDetail}
+                companyId={state.company.ID}
+              />
               <EnterpriseLowerList log={state.log} />
             </Col>
           </Row>

+ 5 - 0
src/services/product.js

@@ -191,6 +191,11 @@ export async function apiRoadUpdateCompany(payload) {
   return request('/RoadPricingv2/company/update', { method: 'POST', data: { ...payload } })
 }
 
+/** 设大司空2.0企业版设置期限 */
+export async function apiRoadPricingDeadline(payload) {
+  return request('/RoadPricingv2/company/set/deadline', { method: 'POST', data: payload })
+}
+
 /** 根据客户id获得云版所有账号信息 */
 export async function queryRoadPricingListByClientId(params) {
   return request('/Roadpricing/all/rp/account', {