添加在线客服修改合同等

This commit is contained in:
lyp 2025-01-19 10:19:11 +08:00
parent 10803f293c
commit db9af2af4f
13 changed files with 182 additions and 77 deletions

View File

@ -12,7 +12,7 @@ export default function ContractText(props: any) {
</div> </div>
<div className='contractBox'> <div className='contractBox'>
<div><span className='contractLine'>西AI秒著引擎平台</span></div> <div><span className='contractLine'>西AI秒著引擎平台</span></div>
<div><span className='contractLine'>西西909B6号楼9层0910室</span></div> <div><span className='contractLine'>西西909B6号楼9层0910室</span></div>
<div><span className='contractLine'>400-086-1633</span></div> <div><span className='contractLine'>400-086-1633</span></div>
</div> </div>
@ -176,7 +176,7 @@ export default function ContractText(props: any) {
<div className='contractText'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </div> <div className='contractText'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </div>
</div> </div>
<div className='contractBox'> <div className='contractBox'>
<div className='contractText' >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span className='contractLine'>西</span></div> <div className='contractText' >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span className='contractLine'>西</span></div>
<div className='contractText signBox'> <div className='contractText signBox'>
<div></div> <div></div>
<div className='sign'></div> <div className='sign'></div>

View File

@ -285,7 +285,12 @@ export default function RefunModal(props: any) {
</Form.Item> </Form.Item>
</div> </div>
</div> </div>
<div
style={{
color: '#FF0000',
marginLeft: 10
}}
>*</div>
<Form.Item> <Form.Item>
<div className='refunModal-btn'> <div className='refunModal-btn'>
<Button type="primary" htmlType="submit" style={{ <Button type="primary" htmlType="submit" style={{

View File

@ -5,7 +5,7 @@ import { del, get, post, put, websocketUrl, Axios } from "../../util/AjaxUtils.t
import { import {
// Col, Divider, Row, // Col, Divider, Row,
Spin, Image, Pagination, Spin, Image, Pagination,
Button, Dropdown, notification Button, notification
} from "antd"; } from "antd";
const close = () => { const close = () => {
console.log( console.log(
@ -284,15 +284,15 @@ export default function AiHelper(props: PropsType) {
// } // }
// }) // })
// } // }
const generateProjIntroduction = () => { // const generateProjIntroduction = () => {
ws.current?.send(JSON.stringify({ // ws.current?.send(JSON.stringify({
type: 'REFRESH_PROJ_INTRODUCTION', // type: 'REFRESH_PROJ_INTRODUCTION',
projId: props.projId // projId: props.projId
})); // }));
ping(); // ping();
setIsProjIntroductionLoading(true); // setIsProjIntroductionLoading(true);
} // }
const xixi = () => { const xixi = () => {
setIsFast(true) setIsFast(true)
ws.current?.send(JSON.stringify({ ws.current?.send(JSON.stringify({
@ -342,7 +342,7 @@ export default function AiHelper(props: PropsType) {
setIsProjIntroductionLoading(true); setIsProjIntroductionLoading(true);
}, },
onSuccess(data) { onSuccess(data) {
messageApi.success('项目简介保存成功,点击编辑按钮可继续修改项目简介'); messageApi.success('系统简介保存成功,点击编辑按钮可继续修改系统简介');
setProjIntroduction(content); setProjIntroduction(content);
setNewProjIntroduction(''); setNewProjIntroduction('');
console.log('更新成功', data); console.log('更新成功', data);
@ -369,7 +369,7 @@ export default function AiHelper(props: PropsType) {
setIsProjDescLoading(true); setIsProjDescLoading(true);
}, },
onSuccess() { onSuccess() {
messageApi.success('项目详情保存成功,点击编辑按钮可继续修改项目详情').then(); messageApi.success('系统详情保存成功,点击编辑按钮可继续修改系统详情').then();
setProjDesc(content); setProjDesc(content);
setNewProjDesc(''); setNewProjDesc('');
}, },
@ -753,7 +753,7 @@ export default function AiHelper(props: PropsType) {
nav(`/proj-edit/config-mod-edit/${props.projId}/${projModId}`) nav(`/proj-edit/config-mod-edit/${props.projId}/${projModId}`)
} }
}} }}
handleRemove={(_index, projModId, item) => { handleRemove={(_index, projModId) => {
// if (item.aiFieldStatus != 'SUCCESS') { // if (item.aiFieldStatus != 'SUCCESS') {
// messageApi.error('模块未处理完毕不能删除'); // messageApi.error('模块未处理完毕不能删除');
// return; // return;

View File

@ -246,7 +246,7 @@ export default function AiHelperMod(props: PropsType) {
<div <div
style={{ style={{
cursor: 'pointer', cursor: 'pointer',
marginLeft: 19, marginLeft: 5,
color: '#FF4040', color: '#FF4040',
width: 40, width: 40,
@ -291,27 +291,7 @@ export default function AiHelperMod(props: PropsType) {
></div> ></div>
</div> </div>
// <Dropdown menu={{
// items: [
// {
// key: 'edit',
// label: '编辑',
// onClick: () => {
// // props.handleEdit(index, record.projModId, record);
// setId(record.projModId)
// setEditModal(true)
// }
// }, {
// key: 'remove',
// label: '删除',
// onClick: () => {
// props.handleRemove(index, record.projModId, record);
// }
// },
// ]
// }} placement="bottom" arrow>
// <Button>…</Button>
// </Dropdown>
) )
} }
// if (record.aiFieldStatus == 'GENERATING') { // if (record.aiFieldStatus == 'GENERATING') {
@ -571,7 +551,12 @@ export default function AiHelperMod(props: PropsType) {
}} }}
disabled={status == 'SUCCESS' || status == 'GENERATING' || props.isFast ? true : false} disabled={status == 'SUCCESS' || status == 'GENERATING' || props.isFast ? true : false}
onClick={() => { onClick={() => {
if(props.projIntroduction){
props.handleGenerate() props.handleGenerate()
}else{
props.xixi()
}
// props.handleGenerate()
}} }}
>AI生成</Button> >AI生成</Button>
</div> </div>

View File

@ -360,7 +360,17 @@ export default function AiHelperText(props: PropsType) {
</div> </div>
</div> </div>
</div> </div>
<div style={{ height: 42, background: " #EFEFEF" }}></div> <div style={{ height: 42, background: " #EFEFEF",
display:'flex',justifyContent:'center',alignItems:'center',
}}>
<div style={{
color:'red',
fontSize:14,
display: props.title == '系统简介'? 'block' : 'none'
}}>
*使使AI生成系统详情和功能列表
</div>
</div>
<div className="aiText-bot"> <div className="aiText-bot">
<div className="aiText-bot-text"> <div className="aiText-bot-text">
{newText ? <> {newText ? <>

View File

@ -1,6 +1,6 @@
/* eslint-disable @typescript-eslint/no-unused-vars */ /* eslint-disable @typescript-eslint/no-unused-vars */
import './card-proj.css'; import './card-proj.css';
import { useDispatch } from 'react-redux' // import { useDispatch } from 'react-redux'
import { import {
CheckOutlined, CheckOutlined,
ClockCircleOutlined, ClockCircleOutlined,
@ -238,39 +238,49 @@ export default function CardProj(props: any) {
} }
return <Tag color="red"><CloseCircleOutlined /> </Tag> return <Tag color="red"><CloseCircleOutlined /> </Tag>
} }
const dispath = useDispatch() // const dispath = useDispatch()
const goEdit = () => { const goEdit = () => {
if (data.projStatus == 'NORMAL' || data.projStatus == 'EXPIRED' || data.pay.payStatus == 'CORRECTION2_REFUND' || data.pay.payStatus == 'CORRECTION1_REFUND') { if (data.projStatus == 'NORMAL' || data.projStatus == 'EXPIRED' || data.pay.payStatus == 'CORRECTION2_REFUND' || data.pay.payStatus == 'CORRECTION1_REFUND') {
if (data.pay.chargeType == 'ALL') { if (data.pay.chargeType == 'ALL') {
nav(`/proj-eall/${data.projId}`); nav(`/proj-eall/${data.projId}`);
dispath({ // dispath({
type: 'upProjName', // type: 'upProjName',
val: data.projName // val: data.projName
}) // })
dispath({ // dispath({
type: 'upProjStatus', // type: 'upProjStatus',
val: data.generate.generateStatus == GenerateStatus.SUCCESS ? '查看' : '编辑' // val: data.generate.generateStatus == GenerateStatus.SUCCESS ? '查看' : '编辑'
}) // })
sessionStorage.setItem('projName', data.projName);
sessionStorage.setItem('projStatus', data.generate.generateStatus == GenerateStatus.SUCCESS ? '查看' : '编辑');
// sessionStorage.setItem('projStatus', '查看' );
} else if (data.pay.chargeType == 'FREE') { } else if (data.pay.chargeType == 'FREE') {
nav(`/proj-efree/${data.projId}`); nav(`/proj-efree/${data.projId}`);
dispath({ // dispath({
type: 'upProjName', // type: 'upProjName',
val: data.projName // val: data.projName
}) // })
dispath({ // dispath({
type: 'upProjStatus', // type: 'upProjStatus',
val: data.generate.generateStatus == GenerateStatus.SUCCESS ? '查看' : '编辑' // val: data.generate.generateStatus == GenerateStatus.SUCCESS ? '查看' : '编辑'
}) // })
sessionStorage.setItem('projName', data.projName);
sessionStorage.setItem('projStatus', data.generate.generateStatus == GenerateStatus.SUCCESS ? '查看' : '编辑');
} else { } else {
nav(`/proj-edit/${data.projId}`); nav(`/proj-edit/${data.projId}`);
dispath({ // dispath({
type: 'upProjName', // type: 'upProjName',
val: data.projName // val: data.projName
}) // })
dispath({ // dispath({
type: 'upProjStatus', // type: 'upProjStatus',
val: data.generate.generateStatus == GenerateStatus.SUCCESS ? '查看' : '编辑' // val: data.generate.generateStatus == GenerateStatus.SUCCESS ? '查看' : '编辑'
}) // })
//将data.projName储存到缓sessionStorage存里面 key为projName
sessionStorage.setItem('projName', data.projName);
sessionStorage.setItem('projStatus', data.generate.generateStatus == GenerateStatus.SUCCESS ? '查看' : '编辑');
} }
} }

View File

@ -246,6 +246,7 @@ export default function CardProjType(props: ICardProj) {
return ( return (
<div className="proj" style={{ display: props.isShow == 1 ? 'block' : 'none', }}> <div className="proj" style={{ display: props.isShow == 1 ? 'block' : 'none', }}>
{/* <div className="proj" style={{ display: props.isShow ? 'block' : 'none', }}> */}
<div className='projTop'> <div className='projTop'>
{/* <div className="proj-head" style={{ backgroundImage: `url(${ProjCardHeadBg})` }}> */} {/* <div className="proj-head" style={{ backgroundImage: `url(${ProjCardHeadBg})` }}> */}
<div className="proj-head"> <div className="proj-head">

View File

@ -4,7 +4,7 @@ import { useDispatch } from 'react-redux'
import BalanceHead from '../../components/balance/BalanceHead.tsx'; import BalanceHead from '../../components/balance/BalanceHead.tsx';
import RechargeHead from '../../components/recharge/RechargeHead.tsx'; import RechargeHead from '../../components/recharge/RechargeHead.tsx';
import { Dropdown, MenuProps, message, Modal, Space, Spin, Input } from "antd"; import { Dropdown, MenuProps, message, Modal, Space, Spin, Input } from "antd";
import { DownOutlined, UserOutlined, QuestionCircleOutlined, BellOutlined, KeyOutlined, LogoutOutlined, GiftOutlined, AccountBookOutlined, ContainerOutlined, MenuFoldOutlined, UsergroupAddOutlined } from "@ant-design/icons"; import { DownOutlined, UserOutlined, QuestionCircleOutlined, BellOutlined, KeyOutlined, LogoutOutlined, GiftOutlined, AccountBookOutlined, ContainerOutlined, MenuFoldOutlined, UsergroupAddOutlined, } from "@ant-design/icons";
import { useContext, useEffect, useState } from "react"; import { useContext, useEffect, useState } from "react";
import { put, get, post, getUseUrl } from "../../util/AjaxUtils.ts"; import { put, get, post, getUseUrl } from "../../util/AjaxUtils.ts";
import { GlobalContext, GlobalDispatchContext, reloadUser } from "../../context/GlobalContext.ts"; import { GlobalContext, GlobalDispatchContext, reloadUser } from "../../context/GlobalContext.ts";
@ -14,6 +14,8 @@ import PasswordChange from "../../components/password/PasswordChange.tsx";
import InvoiceList from "../../components/invoice/InvoiceList.tsx"; import InvoiceList from "../../components/invoice/InvoiceList.tsx";
import logoImg from '../../static/head/logo.png' import logoImg from '../../static/head/logo.png'
import userImg from '../../static/homeimg/userimg.png' import userImg from '../../static/homeimg/userimg.png'
import kf from '../../static/head/kf.png'
import kfImg from '../../static/head/kfImg.png'
import { reMenuActive } from '../../util/cache'; import { reMenuActive } from '../../util/cache';
// import BelongPeople from '../../components/BelongPeople/BelongPeople.tsx' // import BelongPeople from '../../components/BelongPeople/BelongPeople.tsx'
import BelongPeople from '../../components/BelongPeople/BelongPeople.tsx' import BelongPeople from '../../components/BelongPeople/BelongPeople.tsx'
@ -27,6 +29,8 @@ export default function Head() {
// const couponModal = redxuState.couponModal // const couponModal = redxuState.couponModal
// 消息通知弹窗 // 消息通知弹窗
const [noticeModal, setNoticeModal] = useState(false) const [noticeModal, setNoticeModal] = useState(false)
// 客服弹窗
const [kfModal, setkfModal] = useState(false)
// 未读消息数 // 未读消息数
const [unRead, setUnRead] = useState(0) const [unRead, setUnRead] = useState(0)
// 获取未读消息总数 // 获取未读消息总数
@ -435,7 +439,18 @@ export default function Head() {
{/* <div className="right" style={{backgroundImage: `url(${headRightBg})`}}> */} {/* <div className="right" style={{backgroundImage: `url(${headRightBg})`}}> */}
<div className="right"> <div className="right">
<div className='kf' onClick={() => {
setkfModal(true)
}}>
<div className='kfIcon'>
<img src={kf} width={20} alt="" />
</div>
<div className='kfText'>
线
</div>
</div>
<div className='headLine'></div>
{/* <div className='head-nav' onClick={() => { {/* <div className='head-nav' onClick={() => {
window.open('https://www.aimzhu.com/operator/route/agreementportal/view?agreementId=c0c5683a-bef3-40c3-8395-900a362ea234&title=系统操作流程') window.open('https://www.aimzhu.com/operator/route/agreementportal/view?agreementId=c0c5683a-bef3-40c3-8395-900a362ea234&title=系统操作流程')
}}> }}>
@ -771,6 +786,31 @@ export default function Head() {
}}> }}>
<NoticeModal></NoticeModal> <NoticeModal></NoticeModal>
</Modal> </Modal>
<Modal title="在线客服"
footer={null}
destroyOnClose
open={kfModal}
centered
width={450}
onCancel={() => {
setkfModal(false)
}}>
<div className='kfBox'>
<div className='kfTitle'></div>
<div className='kfImg'>
<img src={kfImg} width={300} alt="" />
</div>
<div className='kfHttp' >
<span></span><span className='kfHttpText' onClick={
() => {
window.open('https://work.weixin.qq.com/kfid/kfc599f9d40b65ac392')
}
}></span>
</div>
</div>
</Modal>
{/* <Modal title="" {/* <Modal title=""
footer={null} footer={null}

View File

@ -48,7 +48,22 @@
justify-content: right; justify-content: right;
align-items: center; align-items: center;
} }
.head .center .right .kf {
/* margin-right: 20px; */
display: flex;
/* background-color: pink; */
justify-content: center;
cursor: pointer;
}
.head .center .right .kf .kfText {
margin-left: 5px;
font-size: 16px;
font-weight: 700;
}
.head .center .right .kf .kfIcon {
font-size: 16px;
color: #FF9F08;
}
/* /*
.head .center .left .logo { .head .center .left .logo {
width: 38px; width: 38px;
@ -307,3 +322,32 @@
text-align: center; text-align: center;
line-height: 20px; line-height: 20px;
} }
.kfBox{
/* background-color: pink; */
/* border: 1px solid rgb(209, 209, 209); */
/* border-radius: 5px; */
display: flex;
flex-direction: column;
align-items: center;
padding: 20px 10px;
}
.kfTitle{
font-size: 25px;
font-weight: 700;
}
.kfImg{
border: 1px solid rgb(226, 226, 226);
border-radius: 5px;
padding: 10px;
margin-top: 20px;
}
.kfHttp{
font-size: 16px;
margin-top: 20px;
color: rgb(124, 124, 124);
}
.kfHttpText{
cursor: pointer;
color: #5980B5;
}

View File

@ -144,9 +144,12 @@ export default function Index() {
const couponModal = redxuState.couponModal const couponModal = redxuState.couponModal
// 编辑项目得项目名 // 编辑项目得项目名
const projName = redxuState.projName // const projName = redxuState.projName
// 从sessionStorage缓存获取项目名
const projName = sessionStorage.getItem('projName')
// 项目状态 查看还是编辑 // 项目状态 查看还是编辑
const projStatus = redxuState.projStatus // const projStatus = redxuState.projStatus
const projStatus = sessionStorage.getItem('projStatus')
// 获取所属者表格储存至redux 更新表格 // 获取所属者表格储存至redux 更新表格
const getProjOwnerList = () => { const getProjOwnerList = () => {
get({ get({

View File

@ -63,9 +63,16 @@ export default function ProjCreate() {
setCharge(data.additional); setCharge(data.additional);
// console.log("创建数据", data); // console.log("创建数据", data);
// console.log(charge.projTypes[0].price); // console.log(charge.projTypes[0].price);
setAllInfo(data.projTypes[0]) // setAllInfo(data.projTypes[0])
setMaterialInfo(data.projTypes[1]) // setMaterialInfo(data.projTypes[1])
setFreeInfo(data.projTypes[2]) // setFreeInfo(data.projTypes[2])
// 找到ata.projTypes数组种type == all的对象付给 info
setAllInfo(data.projTypes.find((item: any) => item.type == 'ALL'))
setMaterialInfo(data.projTypes.find((item: any) => item.type == 'MATERIAL'))
setFreeInfo(data.projTypes.find((item: any) => item.type == 'FREE'))
// MATERIAL FREE
// console.log('后面的price',data.proj.materialAgent); // console.log('后面的price',data.proj.materialAgent);
setFreeCount(data.freeCount) setFreeCount(data.freeCount)
} }

BIN
src/static/head/kf.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

BIN
src/static/head/kfImg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB