提交 4c94e718 作者: 曹云

改-作业服务-列表接口,详情接口,详情-立即租赁接口

上级 d3b8b68b
import request, { Response } from '~/api/request'; import request, { Response } from '~/api/request'
export interface ListPageJobInfoParams { export interface ListPageJobInfoParams {
pageNo:number, pageNo: number
pageSize:number, pageSize: number
appTypeId?:number, appTypeId?: number
industryId?:number, industryId?: number
inspectionName?:string, inspectionName?: string
string?:number, string?: number
regionId?:number, regionId?: number
} }
export interface Job { export interface Job {
id:number, id: number
serviceName:string, serviceName: string
teamName:string, teamName: string
price:number, price: number
} }
export interface ListPageJobInfoResp { export interface ListPageJobInfoResp {
pageNo: 1, pageNo: 1
pageSize: 10, pageSize: 10
list: Array<Job>, list: Array<Job>
totalCount: 0, totalCount: 0
totalPage: 0 totalPage: 0
} }
export default { export default {
//web-作业服务-分页 //web-作业服务-分页
listPageJobServicesInfo: (params: ListPageJobInfoParams,option:{}): Promise<Response<ListPageJobInfoResp>> => { listPageJobServicesInfo: (
return request('/release/work/queryTaskServiceList', 'post', params,option) params: ListPageJobInfoParams,
option: {}
): Promise<Response<ListPageJobInfoResp>> => {
return request(
'/pms/backstage/work/queryWorkServiceList',
'post',
params,
option
)
}, },
} }
\ No newline at end of file
...@@ -11,6 +11,7 @@ import { ...@@ -11,6 +11,7 @@ import {
DatePicker, DatePicker,
Image as AImage, Image as AImage,
Input, Input,
Cascader,
} from 'antd' } from 'antd'
import { RangePickerProps } from 'antd/es/date-picker' import { RangePickerProps } from 'antd/es/date-picker'
import type { TabsProps } from 'antd' import type { TabsProps } from 'antd'
...@@ -18,6 +19,7 @@ import Evaluate from './components/evaluate' ...@@ -18,6 +19,7 @@ import Evaluate from './components/evaluate'
import { useRouter } from 'next/router' import { useRouter } from 'next/router'
import api, { ListPageJobInfoResp } from './api' import api, { ListPageJobInfoResp } from './api'
import Image from 'next/image' import Image from 'next/image'
import { RegionResp } from '~/components/filter/api'
const { RangePicker } = DatePicker const { RangePicker } = DatePicker
const { TextArea } = Input const { TextArea } = Input
export default function JobServicesDetail() { export default function JobServicesDetail() {
...@@ -38,18 +40,19 @@ export default function JobServicesDetail() { ...@@ -38,18 +40,19 @@ export default function JobServicesDetail() {
children: ( children: (
<div className="teamIntroduction"> <div className="teamIntroduction">
{/* <Image width={1100} height={800} src={detail?.teamPoster ? detail?.teamPoster : ''} alt='error'/> */} {/* <Image width={1100} height={800} src={detail?.teamPoster ? detail?.teamPoster : ''} alt='error'/> */}
<img {/* <img
style={{ width: '100%' }} style={{ width: '100%' }}
src={detail?.teamPoster ? detail?.teamPoster : ''} src={detail?.teamPoster ? detail?.teamPoster : ''}
alt="error" alt="error"
/> /> */}
{detail?.serviceIntroduction}
</div> </div>
), ),
}, },
{ {
key: '2', key: '2',
label: `团队评价`, label: `团队评价`,
children: <Evaluate evaluateInfo={detail?.evaluateInfo || []} />, children: <Evaluate evaluateInfo={detail?.inspComtList || []} />,
}, },
] ]
...@@ -75,6 +78,15 @@ export default function JobServicesDetail() { ...@@ -75,6 +78,15 @@ export default function JobServicesDetail() {
const [isModalOpen, setIsModalOpen] = useState(false) const [isModalOpen, setIsModalOpen] = useState(false)
const [loading, setLoading] = useState(false) const [loading, setLoading] = useState(false)
const [areaValue, setAreaValue] = useState<string>() const [areaValue, setAreaValue] = useState<string>()
const [provinceList, setProvinceList] = useState<RegionResp[]>([])
useEffect(() => {
api.region().then((res) => {
console.log(res)
console.log(res?.result?.map((item) => item.childInfo).flat())
setProvinceList(res?.result || [])
})
}, [])
const disabledDate: RangePickerProps['disabledDate'] = (current) => { const disabledDate: RangePickerProps['disabledDate'] = (current) => {
return current && current < moment().endOf('day') return current && current < moment().endOf('day')
} }
...@@ -84,25 +96,30 @@ export default function JobServicesDetail() { ...@@ -84,25 +96,30 @@ export default function JobServicesDetail() {
.validateFields() .validateFields()
.then(async (values) => { .then(async (values) => {
console.log(values) console.log(values)
const res = await api.insertOrderTask({ const res = await api.insertOrderTask({
address: '西丽街道', address: values.address,
city: '深圳', city: values.province[1],
inspectionId: 1, inspectionId: detail?.id || 1,
lat: 30, lat: Number(values.lat),
lon: 120, lon: Number(values.lon),
province: '广东', province: values.province[0],
startTime: moment(new Date(values.dateDetail[0])).format( startTime: moment(new Date(values.dateDetail[0])).format(
'YYYY-MM-DD HH-MM-SS' 'YYYY-MM-DD HH:MM:SS'
), ),
endTime: moment(new Date(values.dateDetail[1])).format( endTime: moment(new Date(values.dateDetail[1])).format(
'YYYY-MM-DD HH-MM-SS' 'YYYY-MM-DD HH:MM:SS'
), ),
}) })
console.log(res) console.log(res)
// formDate.resetFields() if (res.code === '200') {
// setLoading(false) message.success('提交成功')
// setIsModalOpen(false) formDate.resetFields()
setLoading(false)
setIsModalOpen(false)
} else {
message.error(res.message)
setLoading(false)
}
}) })
.catch((err) => { .catch((err) => {
message message
...@@ -134,7 +151,7 @@ export default function JobServicesDetail() { ...@@ -134,7 +151,7 @@ export default function JobServicesDetail() {
<div className="top-image"> <div className="top-image">
<Image <Image
fill fill
src={detail?.pictureUrl ? detail?.pictureUrl : ''} src={detail?.coverPlan ? detail?.coverPlan : ''}
alt="error" alt="error"
/> />
</div> </div>
...@@ -199,7 +216,7 @@ export default function JobServicesDetail() { ...@@ -199,7 +216,7 @@ export default function JobServicesDetail() {
<div className="left"> <div className="left">
<AImage <AImage
preview={{ visible: false }} preview={{ visible: false }}
src={detail?.pictureUrl ? detail?.pictureUrl : ''} src={detail?.coverPlan ? detail?.coverPlan : ''}
onClick={() => setVisible(true)} onClick={() => setVisible(true)}
style={{ width: 58, height: 58 }} style={{ width: 58, height: 58 }}
/> />
...@@ -210,7 +227,7 @@ export default function JobServicesDetail() { ...@@ -210,7 +227,7 @@ export default function JobServicesDetail() {
onVisibleChange: (vis) => setVisible(vis), onVisibleChange: (vis) => setVisible(vis),
}} }}
> >
<AImage src={detail?.pictureUrl ? detail?.pictureUrl : ''} /> <AImage src={detail?.coverPlan ? detail?.coverPlan : ''} />
</AImage.PreviewGroup> </AImage.PreviewGroup>
</div> </div>
</div> </div>
...@@ -224,6 +241,7 @@ export default function JobServicesDetail() { ...@@ -224,6 +241,7 @@ export default function JobServicesDetail() {
className="form-data" className="form-data"
> >
<Form.Item <Form.Item
label="选择日期"
style={{ flex: 1, marginRight: 16 }} style={{ flex: 1, marginRight: 16 }}
name="dateDetail" name="dateDetail"
rules={[{ required: true, message: '请选择日期' }]} rules={[{ required: true, message: '请选择日期' }]}
...@@ -235,6 +253,56 @@ export default function JobServicesDetail() { ...@@ -235,6 +253,56 @@ export default function JobServicesDetail() {
showTime showTime
/> />
</Form.Item> </Form.Item>
<Form.Item
label="经度"
style={{ flex: 1, marginRight: 16 }}
name="lon"
rules={[{ required: true, message: '请输入经度' }]}
>
<Input placeholder="请输入经度" />
</Form.Item>
<Form.Item
label="纬度"
style={{ flex: 1, marginRight: 16 }}
name="lat"
rules={[{ required: true, message: '请输入纬度' }]}
>
<Input placeholder="请输入纬度" />
</Form.Item>
<Form.Item
label="选择省市"
style={{ flex: 1, marginRight: 16 }}
name="province"
rules={[{ required: true, message: '请选择省市' }]}
>
<Cascader
allowClear
placeholder="选择省市"
className="selectItem"
size="large"
fieldNames={{
label: 'name',
value: 'name',
children: 'childInfo',
}}
options={provinceList}
changeOnSelect
/>
</Form.Item>
<Form.Item
label="详细地址"
style={{ flex: 1, marginRight: 16 }}
name="address"
rules={[{ required: true, message: '请输入详情地址' }]}
>
<TextArea
value={areaValue}
onChange={(e) => setAreaValue(e.target.value)}
placeholder="请输入详情地址"
autoSize={{ minRows: 3, maxRows: 5 }}
style={{ width: 385, height: 72 }}
/>
</Form.Item>
<div> <div>
任务描述(选填) 项目号、 业务负责人、 任务描述(选填) 项目号、 业务负责人、
客户名称、演示设备(注明飞机、挂载、地面站)、现场联系人及电话 客户名称、演示设备(注明飞机、挂载、地面站)、现场联系人及电话
......
import request, { Response } from '~/api/request' import request, { Response } from '~/api/request'
import { RegionResp } from '~/components/filter/api'
export interface ListPageJobInfoParams { export interface ListPageJobInfoParams {
pageNo: number pageNo: number
pageSize: number pageSize: number
...@@ -30,6 +30,9 @@ export interface ListPageJobInfoResp { ...@@ -30,6 +30,9 @@ export interface ListPageJobInfoResp {
teamPoster: string teamPoster: string
evaluateInfo: Array<JobDetail> evaluateInfo: Array<JobDetail>
item: number item: number
coverPlan: string
serviceIntroduction: string
inspComtList: []
} }
export interface GetJobServicesDetailParams { export interface GetJobServicesDetailParams {
...@@ -53,10 +56,14 @@ export default { ...@@ -53,10 +56,14 @@ export default {
listDetailJobServicesInfo: ( listDetailJobServicesInfo: (
params: GetJobServicesDetailParams params: GetJobServicesDetailParams
): Promise<Response<ListPageJobInfoResp>> => { ): Promise<Response<ListPageJobInfoResp>> => {
return request('/release/work/selectInspection', 'get', params) return request('/pms/backstage/work/queryWorkService', 'get', params)
}, },
//web-作业服务-详情-立即预约 //web-作业服务-详情-立即预约
insertOrderTask: (params: GetOrderTaskParams): Promise<Response<null>> => { insertOrderTask: (params: GetOrderTaskParams): Promise<Response<null>> => {
return request('/oms/serviceOrderTask/insertOrderTask', 'post', params) return request('/oms/serviceOrderTask/insertOrderTask', 'post', params)
}, },
//区域
region: (): Promise<Response<Array<RegionResp>>> => {
return request('/pms/webDevice/getSecondDistrictInfo')
},
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论