This commit is contained in:
lyp 2024-12-13 10:13:29 +08:00
parent de8a4a6c70
commit 339f75db23
8 changed files with 145 additions and 107 deletions

View File

@ -1,12 +1,11 @@
import request from './request'
import { appUrl, request } from './request'
// 获取验证码 // 获取验证码
export const GetCode = (phone) => request.get(`/operator/api/verify/code/send/${phone}`) export const GetCode = (phone) => request.get(`/operator/api/verify/code/send/${phone}`)
// 登录 // 登录
export const DoLogin = (params) => request.post('/operator/api/quick/login/phone', params) export const DoLogin = (params) => request.post('/operator/api/quick/login/phone', params)
// 获取列表 // 获取列表
export const GetList = (params) => request.get('/copyright/app/proj/listpage/self',{params}) export const GetList = (params) => request.get('/copyright/app/proj/listpage/self', { params })
// 创建项目 // 创建项目
export const CreateProj = (params) => request.post('/copyright/app/proj/create-quick', params) export const CreateProj = (params) => request.post('/copyright/app/proj/create-quick', params)
@ -17,18 +16,17 @@ export const CreateOwner = (params) => request.post('/copyright/app/proj-owner/s
// 获取随机客服编号 // 获取随机客服编号
export const GetCsa = () => request.get('/copyright/app/csa/get') export const GetCsa = () => request.get('/copyright/app/csa/get')
// 获取所属人列表 // 获取所属人列表
export const GetOwnerList = (params) => request.get('/copyright/app/proj-owner/listpage/self',{params}) export const GetOwnerList = (params) => request.get('/copyright/app/proj-owner/listpage/self', { params })
// 获取联系人列表 // 获取联系人列表
export const GetContactList = (params) => request.get('/copyright/app/proj-contact/listpage/self',{params}) export const GetContactList = (params) => request.get('/copyright/app/proj-contact/listpage/self', { params })
// 返回带 baseURL 的下载网址 // 下载全部
export const GetDownloadUrl = () => { // export const GetDownAll = (projId) => request.get(`/copyright/app/proj/download/all/${projId}`)
// 获取 baseURL export const GetDownAll = (projId) => request.get(`/copyright/app/proj/download/all/${projId}`,{responseType: 'blob'})
const baseURL = appUrl; // 下载申请表
return `${baseURL}/api/contract/management/download/` export const GetDownapply = (projId) => request.get(`/copyright/app/proj/download/apply/${projId}`,{responseType: 'blob'})
// 拼接 baseURL 和 path export const GetDownmanualPdf = (projId) => request.get(`/copyright/app/proj/download/manual/pdf/${projId}`,{responseType: 'blob'})
// const downloadUrl = `${baseURL}/copyright/app/proj-contact/listpage/self/${path}`; //下载源代码
export const GetDowncode = (projId) => request.get(`/copyright/app/proj/download/code-zip/${projId}`,{responseType: 'blob'})
// 返回生成的下载网址
};

0
src/request/downLoad.js Normal file
View File

View File

@ -1,10 +1,11 @@
import axios from "axios"; import axios from "axios";
// export const Axios = axios;
const loginUrl = 'http://192.168.0.15:8091' const loginUrl = 'http://192.168.0.15:8091'
const appUrl = 'http://192.168.0.15:7025' const appUrl = 'http://192.168.0.15:7025'
const request = axios.create({ const request = axios.create({
// baseURL: baseUrl, // baseURL: appUrl,
timeout: 5000, timeout: 5000,
}); });
request.interceptors.request.use( request.interceptors.request.use(
@ -29,5 +30,5 @@ request.interceptors.response.use(
(err) => Promise.reject(err) (err) => Promise.reject(err)
); );
export { appUrl, request }; // export { request };
// export default request export default request

View File

@ -1,16 +1,21 @@
// import React from 'react' // import React from 'react'
import { useEffect } from 'react' import { useEffect, useState } from 'react'
import { useNavigate } from 'react-router-dom' import { useNavigate } from 'react-router-dom'
import { useLocation } from 'react-router-dom' import { useLocation } from 'react-router-dom'
import './detail.less' import './detail.less'
import { GetDownloadUrl } from '../../request/api'
import { import {
Button, Button,
Loading,
Mask,
Space,
} from 'antd-mobile' } from 'antd-mobile'
import { GetDownAll, GetDownapply, GetDownmanualPdf,GetDowncode } from '../../request/api'
import pen from '@/static/images/Detail/pen.png' import pen from '@/static/images/Detail/pen.png'
import center from '@/static/images/Detail/center.png' import center from '@/static/images/Detail/center.png'
import file from '@/static/images/Detail/file.png' import file from '@/static/images/Detail/file.png'
export default function Detail() { export default function Detail() {
const [loading, setLoading] = useState(false);//
const nav = useNavigate() const nav = useNavigate()
const location = useLocation(); const location = useLocation();
const item = location.state; const item = location.state;
@ -26,8 +31,8 @@ export default function Detail() {
} }
console.log(item); console.log(item);
console.log(GetDownloadUrl( item.id)); // console.log(downloadAll(item.projId));
}, []) }, [])
return ( return (
<div className='detailBox'> <div className='detailBox'>
@ -48,26 +53,99 @@ export default function Detail() {
</div> </div>
</div> </div>
<div className='downBox'> <div className='downBox'>
<div className='done'> <div className='done' onClick={async () => {
setLoading(true)
const res = await GetDownapply(item.projId);
setLoading(false)
// console.log(res);
const blob = new Blob([res]);
let url = window.URL.createObjectURL(blob);
const link = document.createElement("a");
link.href = url;
// console.log(url);
link.download = `申请表.docx`;
link.click();
URL.revokeObjectURL(url);
}}>
<div className='penImge'> <div className='penImge'>
<img src={pen} style={{ width: '100%', height: '100%' }} alt="" /> <img src={pen} style={{ width: '100%', height: '100%' }} alt="" />
</div> </div>
<div className='doneName'>申请表</div> <div className='doneName'>申请表</div>
</div> </div>
<div className='done'> <div className='done'
onClick={async () => {
setLoading(true)
const res = await GetDownmanualPdf(item.projId);
setLoading(false)
// console.log(res);
const blob = new Blob([res]);
let url = window.URL.createObjectURL(blob);
const link = document.createElement("a");
link.href = url;
// console.log(url);
link.download = `${item.projName}操作手册.pdf`;
link.click();
URL.revokeObjectURL(url);
}}
>
<div className='centerImge'> <div className='centerImge'>
<img src={center} style={{ width: '100%', height: '100%' }} alt="" /> <img src={center} style={{ width: '100%', height: '100%' }} alt="" />
</div> </div>
<div className='doneName'>操作手册</div> <div className='doneName'>操作手册</div>
</div> </div>
<div className='done'> <div className='done'
onClick={async () => {
setLoading(true)
const res = await GetDowncode(item.projId);
setLoading(false)
// console.log(res);
const blob = new Blob([res]);
let url = window.URL.createObjectURL(blob);
const link = document.createElement("a");
link.href = url;
// console.log(url);
link.download = `${item.projName}源代码.zip`;
link.click();
URL.revokeObjectURL(url);
}}
>
<div className='fileImge'> <div className='fileImge'>
<img src={file} style={{ width: '100%', height: '100%' }} alt="" /> <img src={file} style={{ width: '100%', height: '100%' }} alt="" />
</div> </div>
<div className='doneName'>源代码</div> <div className='doneName'>源代码</div>
</div> </div>
</div> </div>
<div className='downAllBtn'> <div className='downAllBtn' onClick={async () => {
// window.open(`http://192.168.0.15:7025/copyright/app/proj/download/all/${item.projId}`)
// try {
// setLoading(true)
// const res = await GetDownAll(item.projId);
// setLoading(false)
// console.log(res);
// const blob = new Blob([res]);
// let url = window.URL.createObjectURL(blob);
// const link = document.createElement("a");
// link.href = url;
// console.log(url);
// link.download = `${item.projName}.zip`;
// link.click();
// URL.revokeObjectURL(url);
// } catch (error) {
// console.log(error);
// }
setLoading(true)
const res = await GetDownAll(item.projId);
setLoading(false)
console.log(res);
const blob = new Blob([res]);
let url = window.URL.createObjectURL(blob);
const link = document.createElement("a");
link.href = url;
console.log(url);
link.download = `${item.projName}.zip`;
link.click();
URL.revokeObjectURL(url);
}}>
<div className='doneImg'></div> <div className='doneImg'></div>
<div >全部</div> <div >全部</div>
</div> </div>
@ -76,6 +154,18 @@ export default function Detail() {
> >
使用电脑端打开体验全部功能 使用电脑端打开体验全部功能
</Button> </Button>
<Mask visible={loading} color="rgba(0, 0, 0, 0.5)">
<div style={{ display: 'flex', alignItems: 'center', justifyContent: 'center', height: '100vh' }}>
<Space direction="vertical" align="center">
<div style={{ display: 'flex' }}>
<div style={{ color: 'white' }}>
准备下载中
</div>
<Loading color="white" />
</div>
</Space>
</div>
</Mask>
</div> </div>
) )
} }

View File

@ -100,6 +100,8 @@
.done { .done {
display: flex; display: flex;
// background-color: pink;
.doneName { .doneName {
// background-color: pink; // background-color: pink;

View File

@ -84,28 +84,26 @@ export default function Login() {
const login = async () => { const login = async () => {
// code6 // code6
const reg = /^\d{6}$/; const reg = /^\d{6}$/;
// try { try {
// if (!reg.test(code)) { if (!reg.test(code)) {
// Toast.show({ Toast.show({
// icon: 'fail', icon: 'fail',
// content: '', content: '请输入正确的验证码',
// }) })
// return return
// } else { } else {
// var res = await DoLogin({ verifyCode: code, phone: phoneNum }) var res = await DoLogin({ verifyCode: code, phone: phoneNum })
// sessionStorage.setItem('token', res.data); sessionStorage.setItem('token', res.data);
// nav('/list') nav('/list')
// } }
// } catch (error) { } catch (error) {
// Toast.show({ Toast.show({
// icon: 'fail', icon: 'fail',
// content: error.response.data.msg, content: error.response.data.msg,
// }) })
// } }
sessionStorage.setItem('token', 'cVJWWXQ1UWpQWTQ1TDZMbEVtTmxiMlJVNkdvTzUwSTNHYzZaK3VTZmF0RTZLVG1LSUFpUzMrSWsvcVRHay9Wb0xCa3g0elJkWGVwSEw2emREeGdEQldpOEt4TDZPVVNQa3FmK09pazUxblA0K2dHWitHUHFnRnVDU21lOGVyLzdyblJpRUpoQlp4Z1l5aXV3aWE1WFlTdkJXeFhCc0JyMlducHlpV1F2L09JdUNRa082dTZ0T0NzbCs4azZGUTZRZUZMWmc3QXJzSG5mMk53SFNJa01FN3pzSUY1WTViQTBVVmp0T1pnQTNBbz0='); // sessionStorage.setItem('token', 'cVJWWXQ1UWpQWTQ1TDZMbEVtTmxiMlJVNkdvTzUwSTNHYzZaK3VTZmF0RTZLVG1LSUFpUzMrSWsvcVRHay9Wb0xCa3g0elJkWGVwSEw2emREeGdEQldpOEt4TDZPVVNQa3FmK09pazUxblA0K2dHWitHUHFnRnVDU21lOGVyLzdyblJpRUpoQlp4Z1l5aXV3aWE1WFlTdkJXeFhCc0JyMlducHlpV1F2L09JdUNRa082dTZ0T0NzbCs4azZGUTZRZUZMWmc3QXJzSG5mMk53SFNJa01FN3pzSUY1WTViQTBVVmp0T1pnQTNBbz0=');
// // nav('/list')
nav('/list')
} }
return ( return (

View File

@ -35,67 +35,13 @@ export default function Use() {
const [form] = Form.useForm(); const [form] = Form.useForm();
const [cascaberShow, setCascaberShow] = useState(false) const [cascaberShow, setCascaberShow] = useState(false)
const onFinish = (values) => { const onFinish = (values) => {
console.log(values);
createNewOwner(values.name, values.idCardNo, values.provinceCity); createNewOwner(values.name, values.idCardNo, values.provinceCity);
setCreateOwner(false);
}; };
// const [cityvisible, setcityvisible] = useState(false);
// const [selectedProvinceCity, setSelectedProvinceCity] = useState([]);
// const onPickerConfirm = (values) => {
// console.log(values);
// const provinceCode = values[0];
// const cityCode = values[1];
// const province = areaData['86'][provinceCode];
// const city = areaData[provinceCode][cityCode];
// setSelectedProvinceCity([province, city]);
// setcityvisible(false);
// };
// const [cityvisible, setCityvisible] = useState(false);
// const [selectedProvinceCity, setSelectedProvinceCity] = useState([]);
// const [provinceData, setProvinceData] = useState([]);
// //
// useEffect(() => {
// const provinces = Object.keys(areaData['86']).map(provinceCode => ({
// label: areaData['86'][provinceCode],
// value: provinceCode,
// }));
// setProvinceData([provinces, []]);
// }, []);
// //
// useEffect(() => {
// if (selectedProvinceCity.length > 0) {
// const provinceCode = selectedProvinceCity[0];
// const cities = Object.keys(areaData[provinceCode] || {}).map(cityCode => ({
// label: areaData[provinceCode][cityCode],
// value: cityCode,
// }));
// setProvinceData([provinceData[0], cities]);
// }
// }, [selectedProvinceCity]);
// const onPickerConfirm = (values) => {
// const provinceCode = values[0];
// const cityCode = values[1];
// const province = areaData['86'][provinceCode];
// const city = areaData[provinceCode][cityCode];
// setSelectedProvinceCity([provinceCode, cityCode]);
// setCityvisible(false);
// };
// const [form] = Form.useForm();
const nav = useNavigate() const nav = useNavigate()
const [name, setName] = useState('') // const [name, setName] = useState('') //
const [nameToast, setNameTost] = useState(false) // const [nameToast, setNameTost] = useState(false) //
@ -263,6 +209,7 @@ export default function Use() {
content: '创建成功', content: '创建成功',
}) })
getOwnerList(1) getOwnerList(1)
setCreateOwner(false);
} }
} catch (error) { } catch (error) {
@ -507,7 +454,9 @@ export default function Use() {
onClick={() => { onClick={() => {
setCreateOwner(true) setCreateOwner(true)
form.setFieldsValue({ form.setFieldsValue({
provinceCity: '' provinceCity: '',
name: '',
idCardNo: '',
}); });
}} }}
>新建所属者</Button> >新建所属者</Button>

View File

@ -1 +1 @@
{"version":3,"sources":["../Detail/detail.less"],"names":[],"mappings":"AAAA;EACI,YAAA;EACA,aAAA;EACA,uDAAA;EAGA,0BAAA;EACA,aAAA;EACA,sBAAA;EACA,mBAAA;EACA,uBAAA;;AAVJ,UAYI;EACI,gBAAA;EACA,YAAA;EACA,aAAA;EACA,yBAAA;EACA,kBAAA;EACA,eAAA;EACA,sBAAA;EACA,aAAA;EACA,sBAAA;EACA,mBAAA;;AAtBR,UAYI,SAYI;EACI,YAAA;EACA,aAAA;EACA,yDAAA;EAEA,0BAAA;EACA,kBAAA;EACA,WAAA;EACA,WAAA;;AAhCZ,UAYI,SAuBI;EACI,WAAA;EACA,YAAA;EACA,gBAAA;EACA,0DAAA;EAEA,0BAAA;;AAzCZ,UAYI,SAgCI;EACI,wBAAA;EACA,WAAA;EAEA,iBAAA;EACA,eAAA;EACA,cAAA;EACA,gBAAA;EAEA,mBAAA;EAEA,uBAAA;EACA,kBAAA;EACA,gBAAA;;AAzDZ,UAYI,SAgDI;EAGI,eAAA;EACA,cAAA;EAEA,WAAA;EACA,mBAAA;EACA,gBAAA;EACA,uBAAA;EACA,kBAAA;EACA,gBAAA;;AAvEZ,UAYI,SA8DI;EACI,aAAA;EACA,mBAAA;EACA,eAAA;EACA,cAAA;EACA,gBAAA;;AA/EZ,UAYI,SA8DI,SAOI;EAEI,WAAA;EACA,WAAA;EAEA,0DAAA;EAEA,0BAAA;EACA,iBAAA;;AAzFhB,UAYI,SAiFI;EACI,aAAA;EACA,WAAA;EAEA,6BAAA;EACA,gBAAA;;AAlGZ,UAYI,SAiFI,SAOI;EACI,aAAA;;AArGhB,UAYI,SAiFI,SAOI,MAGI;EAEI,eAAA;;AAzGpB,UAYI,SAiFI,SAOI,MASI;EACI,WAAA;EACA,YAAA;EACA,iBAAA;;AAhHpB,UAYI,SAiFI,SAOI,MAgBI;EACI,WAAA;EACA,YAAA;EACA,iBAAA;;AAvHpB,UAYI,SAiFI,SAOI,MAuBI;EACI,WAAA;EACA,YAAA;EACA,iBAAA;;AA9HpB,UAYI,SAwHI;EACI,WAAA;EACA,YAAA;EACA,YAAY,gDAAZ;EACA,kBAAA;EACA,gBAAA;EACA,iBAAA;EACA,eAAA;EACA,cAAA;EACA,aAAA;EACA,uBAAA;EACA,mBAAA;;AA/IZ,UAYI,SAwHI,YAaI;EACI,WAAA;EACA,YAAA;EACA,0DAAA;EAEA,0BAAA;EACA,kBAAA;;AAvJhB,UA8JI;EACI,YAAA;EACA,YAAA;EACA,mBAAA;EACA,kBAAA;EACA,iBAAA;EACA,eAAA;EACA,cAAA;EACA,wBAAA;EACA,gBAAA"} {"version":3,"sources":["../Detail/detail.less"],"names":[],"mappings":"AAAA;EACI,YAAA;EACA,aAAA;EACA,uDAAA;EAGA,0BAAA;EACA,aAAA;EACA,sBAAA;EACA,mBAAA;EACA,uBAAA;;AAVJ,UAYI;EACI,gBAAA;EACA,YAAA;EACA,aAAA;EACA,yBAAA;EACA,kBAAA;EACA,eAAA;EACA,sBAAA;EACA,aAAA;EACA,sBAAA;EACA,mBAAA;;AAtBR,UAYI,SAYI;EACI,YAAA;EACA,aAAA;EACA,yDAAA;EAEA,0BAAA;EACA,kBAAA;EACA,WAAA;EACA,WAAA;;AAhCZ,UAYI,SAuBI;EACI,WAAA;EACA,YAAA;EACA,gBAAA;EACA,0DAAA;EAEA,0BAAA;;AAzCZ,UAYI,SAgCI;EACI,wBAAA;EACA,WAAA;EAEA,iBAAA;EACA,eAAA;EACA,cAAA;EACA,gBAAA;EAEA,mBAAA;EAEA,uBAAA;EACA,kBAAA;EACA,gBAAA;;AAzDZ,UAYI,SAgDI;EAGI,eAAA;EACA,cAAA;EAEA,WAAA;EACA,mBAAA;EACA,gBAAA;EACA,uBAAA;EACA,kBAAA;EACA,gBAAA;;AAvEZ,UAYI,SA8DI;EACI,aAAA;EACA,mBAAA;EACA,eAAA;EACA,cAAA;EACA,gBAAA;;AA/EZ,UAYI,SA8DI,SAOI;EAEI,WAAA;EACA,WAAA;EAEA,0DAAA;EAEA,0BAAA;EACA,iBAAA;;AAzFhB,UAYI,SAiFI;EACI,aAAA;EACA,WAAA;EAEA,6BAAA;EACA,gBAAA;;AAlGZ,UAYI,SAiFI,SAOI;EACI,aAAA;;AArGhB,UAYI,SAiFI,SAOI,MAKI;EAEI,eAAA;;AA3GpB,UAYI,SAiFI,SAOI,MAWI;EACI,WAAA;EACA,YAAA;EACA,iBAAA;;AAlHpB,UAYI,SAiFI,SAOI,MAkBI;EACI,WAAA;EACA,YAAA;EACA,iBAAA;;AAzHpB,UAYI,SAiFI,SAOI,MAyBI;EACI,WAAA;EACA,YAAA;EACA,iBAAA;;AAhIpB,UAYI,SA0HI;EACI,WAAA;EACA,YAAA;EACA,YAAY,gDAAZ;EACA,kBAAA;EACA,gBAAA;EACA,iBAAA;EACA,eAAA;EACA,cAAA;EACA,aAAA;EACA,uBAAA;EACA,mBAAA;;AAjJZ,UAYI,SA0HI,YAaI;EACI,WAAA;EACA,YAAA;EACA,0DAAA;EAEA,0BAAA;EACA,kBAAA;;AAzJhB,UAgKI;EACI,YAAA;EACA,YAAA;EACA,mBAAA;EACA,kBAAA;EACA,iBAAA;EACA,eAAA;EACA,cAAA;EACA,wBAAA;EACA,gBAAA"}