Commit be9630d30f53c73f79fe4ed1ffcdae9551eef6e6
1 parent
b966b1f3
feat: update 课题组模块开发
Showing
4 changed files
with
417 additions
and
261 deletions
src/pages/ResearchGroup/components/ResearchGroupAddModal.tsx
| @@ -3,6 +3,7 @@ import { | @@ -3,6 +3,7 @@ import { | ||
| 3 | postCanrdApiUserAddressList, | 3 | postCanrdApiUserAddressList, |
| 4 | postCanrdApiUserList, | 4 | postCanrdApiUserList, |
| 5 | postResearchGroupsAdd, | 5 | postResearchGroupsAdd, |
| 6 | + postResearchGroupsDetail, | ||
| 6 | } from '@/services'; | 7 | } from '@/services'; |
| 7 | import { getDefaultString, isEmpty } from '@/utils/StringUtil'; | 8 | import { getDefaultString, isEmpty } from '@/utils/StringUtil'; |
| 8 | import { getRandomNumber } from '@/utils/numberUtil'; | 9 | import { getRandomNumber } from '@/utils/numberUtil'; |
| @@ -15,16 +16,34 @@ import { | @@ -15,16 +16,34 @@ import { | ||
| 15 | ProFormSelect, | 16 | ProFormSelect, |
| 16 | ProFormText, | 17 | ProFormText, |
| 17 | } from '@ant-design/pro-components'; | 18 | } from '@ant-design/pro-components'; |
| 18 | -import { Button, Form, message } from 'antd'; | 19 | +import { Button, Form, Spin, message } from 'antd'; |
| 19 | import { useEffect, useState } from 'react'; | 20 | import { useEffect, useState } from 'react'; |
| 20 | import '../index.less'; | 21 | import '../index.less'; |
| 21 | 22 | ||
| 22 | // import { cloneDeep } from 'lodash'; | 23 | // import { cloneDeep } from 'lodash'; |
| 23 | -export default ({ setVisible, onClose }) => { | 24 | +export default ({ setVisible, researchGroupId, onClose }) => { |
| 24 | const [form] = Form.useForm(); | 25 | const [form] = Form.useForm(); |
| 25 | const [salesCodeOptions, setSalesCodeOptions] = useState([]); | 26 | const [salesCodeOptions, setSalesCodeOptions] = useState([]); |
| 26 | const [memberOptions, setMemberOptions] = useState<any[]>([]); | 27 | const [memberOptions, setMemberOptions] = useState<any[]>([]); |
| 27 | const [accountOptions, setAccountOptions] = useState<any[]>([]); | 28 | const [accountOptions, setAccountOptions] = useState<any[]>([]); |
| 29 | + const [researchGroupInfo, setResearchGroupInfo] = useState<any>(null); | ||
| 30 | + const [modalLoading, setModalLoading] = useState(false); | ||
| 31 | + | ||
| 32 | + /** | ||
| 33 | + * 获取课题组信息 | ||
| 34 | + * @returns | ||
| 35 | + */ | ||
| 36 | + const loadResearchGroupInfo = async () => { | ||
| 37 | + if (researchGroupId === null) { | ||
| 38 | + return; | ||
| 39 | + } | ||
| 40 | + setModalLoading(true); | ||
| 41 | + let res = await postResearchGroupsDetail({ data: { id: researchGroupId } }); | ||
| 42 | + if (res && res.result === RESPONSE_CODE.SUCCESS) { | ||
| 43 | + setResearchGroupInfo(res.data); | ||
| 44 | + } | ||
| 45 | + setModalLoading(false); | ||
| 46 | + }; | ||
| 28 | 47 | ||
| 29 | /** | 48 | /** |
| 30 | * 获取销售代码枚举,在复制和编辑的时候判断是否为旧的代码 | 49 | * 获取销售代码枚举,在复制和编辑的时候判断是否为旧的代码 |
| @@ -185,9 +204,62 @@ export default ({ setVisible, onClose }) => { | @@ -185,9 +204,62 @@ export default ({ setVisible, onClose }) => { | ||
| 185 | return values; | 204 | return values; |
| 186 | } | 205 | } |
| 187 | 206 | ||
| 207 | + /** | ||
| 208 | + * 设置表单默认信息 | ||
| 209 | + * @returns | ||
| 210 | + */ | ||
| 211 | + const loadFormDefaultValue = async () => { | ||
| 212 | + if (!researchGroupInfo) { | ||
| 213 | + return; | ||
| 214 | + } | ||
| 215 | + | ||
| 216 | + let members = researchGroupInfo.members; | ||
| 217 | + if (members !== null) { | ||
| 218 | + let newMemberOptions = []; | ||
| 219 | + for (let member of members) { | ||
| 220 | + let name = member.memberName; | ||
| 221 | + let phone = member.memberPhone; | ||
| 222 | + let id = member.id; | ||
| 223 | + newMemberOptions.push({ realName: name, phone: phone, value: id }); | ||
| 224 | + } | ||
| 225 | + setMemberOptions(newMemberOptions); | ||
| 226 | + form.setFieldValue( | ||
| 227 | + 'members', | ||
| 228 | + members?.map((item: any) => { | ||
| 229 | + return item.id; | ||
| 230 | + }), | ||
| 231 | + ); | ||
| 232 | + } | ||
| 233 | + | ||
| 234 | + let accounts = researchGroupInfo.accounts; | ||
| 235 | + if (accounts !== null) { | ||
| 236 | + let accountIds = accounts.map((item: any) => { | ||
| 237 | + return item.id; | ||
| 238 | + }); | ||
| 239 | + let res = await postCanrdApiUserList({ data: { uids: accountIds } }); | ||
| 240 | + if (res && res.result === RESPONSE_CODE.SUCCESS && res.data) { | ||
| 241 | + let newAccountOptions = res?.data?.map((item) => { | ||
| 242 | + item.value = item.id; | ||
| 243 | + return item; | ||
| 244 | + }); | ||
| 245 | + setAccountOptions(newAccountOptions); | ||
| 246 | + form.setFieldValue('accounts', accountIds); | ||
| 247 | + } | ||
| 248 | + } | ||
| 249 | + | ||
| 250 | + form.setFieldValue('group', researchGroupInfo.groupName); | ||
| 251 | + form.setFieldValue('leader', researchGroupInfo.leaderName); | ||
| 252 | + }; | ||
| 253 | + | ||
| 188 | useEffect(() => { | 254 | useEffect(() => { |
| 189 | loadSalesCodeOptions(); | 255 | loadSalesCodeOptions(); |
| 256 | + loadResearchGroupInfo(); | ||
| 190 | }, []); | 257 | }, []); |
| 258 | + | ||
| 259 | + useEffect(() => { | ||
| 260 | + loadFormDefaultValue(); | ||
| 261 | + }, [researchGroupInfo]); | ||
| 262 | + | ||
| 191 | return ( | 263 | return ( |
| 192 | <div className="research-group-index"> | 264 | <div className="research-group-index"> |
| 193 | <ModalForm | 265 | <ModalForm |
| @@ -218,209 +290,215 @@ export default ({ setVisible, onClose }) => { | @@ -218,209 +290,215 @@ export default ({ setVisible, onClose }) => { | ||
| 218 | }} | 290 | }} |
| 219 | onOpenChange={setVisible} | 291 | onOpenChange={setVisible} |
| 220 | > | 292 | > |
| 221 | - <ProForm.Group> | ||
| 222 | - <ProFormText | ||
| 223 | - name="group" | ||
| 224 | - label="课题组名称" | ||
| 225 | - placeholder="请输入课题组名称" | ||
| 226 | - rules={[{ required: true, message: '请输入课题组名称' }]} | 293 | + <Spin spinning={modalLoading} tip="加载中..."> |
| 294 | + <ProForm.Group> | ||
| 295 | + <ProFormText | ||
| 296 | + name="group" | ||
| 297 | + label="课题组名称" | ||
| 298 | + placeholder="请输入课题组名称" | ||
| 299 | + rules={[{ required: true, message: '请输入课题组名称' }]} | ||
| 300 | + /> | ||
| 301 | + <ProFormSelect | ||
| 302 | + name="leader" | ||
| 303 | + key="leader" | ||
| 304 | + width="lg" | ||
| 305 | + showSearch | ||
| 306 | + label="负责人" | ||
| 307 | + placeholder="请输入课题组负责人" | ||
| 308 | + rules={[{ required: true, message: '请输入课题组负责人' }]} | ||
| 309 | + options={salesCodeOptions} | ||
| 310 | + /> | ||
| 311 | + </ProForm.Group> | ||
| 312 | + | ||
| 313 | + <ProFormSelect | ||
| 314 | + name="accounts" | ||
| 315 | + key="accounts" | ||
| 316 | + width="lg" | ||
| 317 | + showSearch | ||
| 318 | + label="绑定预存账号(可多选)" | ||
| 319 | + placeholder="请选择预存账号" | ||
| 320 | + onChange={(_, option) => { | ||
| 321 | + autoAccountSelectOptions(option); | ||
| 322 | + }} | ||
| 323 | + rules={[{ required: true, message: '请至少选择绑定一个预存账号' }]} | ||
| 324 | + fieldProps={{ | ||
| 325 | + mode: 'multiple', | ||
| 326 | + filterOption() { | ||
| 327 | + return true; | ||
| 328 | + }, | ||
| 329 | + optionItemRender(item: any) { | ||
| 330 | + let name = | ||
| 331 | + item.label + | ||
| 332 | + ' | ' + | ||
| 333 | + item.institution + | ||
| 334 | + ' | ' + | ||
| 335 | + item.nowMoney + | ||
| 336 | + '¥' + | ||
| 337 | + ' | ' + | ||
| 338 | + item.phone; | ||
| 339 | + return ( | ||
| 340 | + <div title={name}> | ||
| 341 | + <span style={{ color: '#333333' }}>{name}</span> | ||
| 342 | + </div> | ||
| 343 | + ); | ||
| 344 | + }, | ||
| 345 | + }} | ||
| 346 | + debounceTime={1000} | ||
| 347 | + request={async (value, {}) => { | ||
| 348 | + const keywords = value.keyWords; | ||
| 349 | + const res = await postCanrdApiUserList({ | ||
| 350 | + data: { keywords: keywords, pageSize: 20 }, | ||
| 351 | + }); | ||
| 352 | + let options = res?.data?.data?.map((c: any) => { | ||
| 353 | + return { | ||
| 354 | + ...c, | ||
| 355 | + label: c.realName, | ||
| 356 | + value: c.uid, | ||
| 357 | + key: c.uid, | ||
| 358 | + }; | ||
| 359 | + }); | ||
| 360 | + return options; | ||
| 361 | + }} | ||
| 227 | /> | 362 | /> |
| 363 | + | ||
| 228 | <ProFormSelect | 364 | <ProFormSelect |
| 229 | - name="leader" | ||
| 230 | - key="leader" | 365 | + name="members" |
| 366 | + key="members" | ||
| 231 | width="lg" | 367 | width="lg" |
| 232 | showSearch | 368 | showSearch |
| 233 | - label="负责人" | ||
| 234 | - placeholder="请输入课题组负责人" | ||
| 235 | - rules={[{ required: true, message: '请输入课题组负责人' }]} | ||
| 236 | - options={salesCodeOptions} | 369 | + label="课题组成员" |
| 370 | + placeholder="请添加课题组成员" | ||
| 371 | + fieldProps={{ | ||
| 372 | + mode: 'multiple', | ||
| 373 | + filterOption() { | ||
| 374 | + return true; | ||
| 375 | + }, | ||
| 376 | + optionItemRender(item: any) { | ||
| 377 | + let name = item.realName + ' | ' + item.phone; | ||
| 378 | + return ( | ||
| 379 | + <div title={name}> | ||
| 380 | + <span style={{ color: '#333333' }}>{name}</span> | ||
| 381 | + </div> | ||
| 382 | + ); | ||
| 383 | + }, | ||
| 384 | + }} | ||
| 385 | + options={memberOptions} | ||
| 237 | /> | 386 | /> |
| 238 | - </ProForm.Group> | ||
| 239 | 387 | ||
| 240 | - <ProFormSelect | ||
| 241 | - name="accounts" | ||
| 242 | - key="accounts" | ||
| 243 | - width="lg" | ||
| 244 | - showSearch | ||
| 245 | - label="绑定预存账号(可多选)" | ||
| 246 | - placeholder="请选择预存账号" | ||
| 247 | - onChange={(_, option) => { | ||
| 248 | - autoAccountSelectOptions(option); | ||
| 249 | - }} | ||
| 250 | - rules={[{ required: true, message: '请至少选择绑定一个预存账号' }]} | ||
| 251 | - fieldProps={{ | ||
| 252 | - mode: 'multiple', | ||
| 253 | - filterOption() { | ||
| 254 | - return true; | ||
| 255 | - }, | ||
| 256 | - optionItemRender(item: any) { | ||
| 257 | - let name = | ||
| 258 | - item.label + | ||
| 259 | - ' | ' + | ||
| 260 | - item.institution + | ||
| 261 | - ' | ' + | ||
| 262 | - item.nowMoney + | ||
| 263 | - '¥' + | ||
| 264 | - ' | ' + | ||
| 265 | - item.phone; | ||
| 266 | - return ( | ||
| 267 | - <div title={name}> | ||
| 268 | - <span style={{ color: '#333333' }}>{name}</span> | ||
| 269 | - </div> | ||
| 270 | - ); | ||
| 271 | - }, | ||
| 272 | - }} | ||
| 273 | - debounceTime={1000} | ||
| 274 | - request={async (value, {}) => { | ||
| 275 | - const keywords = value.keyWords; | ||
| 276 | - const res = await postCanrdApiUserList({ | ||
| 277 | - data: { keywords: keywords, pageSize: 20 }, | ||
| 278 | - }); | ||
| 279 | - let options = res?.data?.data?.map((c: any) => { | ||
| 280 | - return { | ||
| 281 | - ...c, | ||
| 282 | - label: c.realName, | ||
| 283 | - value: c.uid, | ||
| 284 | - key: c.uid, | ||
| 285 | - }; | ||
| 286 | - }); | ||
| 287 | - return options; | ||
| 288 | - }} | ||
| 289 | - /> | 388 | + <ProCard |
| 389 | + title="选择或自定义课题组成员信息" | ||
| 390 | + bordered | ||
| 391 | + tooltip="从【客户信息】选择框中可以直接搜索客户,选中后自动添加到【课题组成员】中。也可以自定义输入【客户名称】和【手机号】,点击添加按钮手动添加到【课题组成员】中。" | ||
| 392 | + > | ||
| 393 | + <ProForm.Group> | ||
| 394 | + <ProFormSelect | ||
| 395 | + key="customerName" | ||
| 396 | + label="客户信息(选择)" | ||
| 397 | + width="lg" | ||
| 398 | + showSearch | ||
| 399 | + name="customerName" | ||
| 400 | + placeholder="请选择客户信息" | ||
| 401 | + onChange={(_, option) => { | ||
| 402 | + autoFillCustomerInfo(option); | ||
| 403 | + }} | ||
| 404 | + fieldProps={{ | ||
| 405 | + filterOption() { | ||
| 406 | + return true; | ||
| 407 | + }, | ||
| 408 | + optionItemRender(item: any) { | ||
| 409 | + if (item.type === 'add') { | ||
| 410 | + return ( | ||
| 411 | + <div title={item.name + '(新增客户)'}> | ||
| 412 | + <span style={{ color: '#333333' }}>{item.name}</span> | ||
| 413 | + {' | '} | ||
| 414 | + <span style={{ color: 'orange' }}>自定义</span> | ||
| 415 | + </div> | ||
| 416 | + ); | ||
| 417 | + } | ||
| 290 | 418 | ||
| 291 | - <ProFormSelect | ||
| 292 | - name="members" | ||
| 293 | - key="members" | ||
| 294 | - width="lg" | ||
| 295 | - showSearch | ||
| 296 | - label="课题组成员" | ||
| 297 | - placeholder="请添加课题组成员" | ||
| 298 | - fieldProps={{ | ||
| 299 | - mode: 'multiple', | ||
| 300 | - filterOption() { | ||
| 301 | - return true; | ||
| 302 | - }, | ||
| 303 | - optionItemRender(item: any) { | ||
| 304 | - let name = item.realName + ' | ' + item.phone; | ||
| 305 | - return ( | ||
| 306 | - <div title={name}> | ||
| 307 | - <span style={{ color: '#333333' }}>{name}</span> | ||
| 308 | - </div> | ||
| 309 | - ); | ||
| 310 | - }, | ||
| 311 | - }} | ||
| 312 | - options={memberOptions} | ||
| 313 | - /> | 419 | + let title = ''; |
| 420 | + let spanText = ''; | ||
| 421 | + let realName = item.realName; | ||
| 422 | + let phone = item.phone; | ||
| 314 | 423 | ||
| 315 | - <ProCard | ||
| 316 | - title="选择或自定义课题组成员信息" | ||
| 317 | - bordered | ||
| 318 | - tooltip="从【客户信息】选择框中可以直接搜索客户,选中后自动添加到【课题组成员】中。也可以自定义输入【客户名称】和【手机号】,点击添加按钮手动添加到【课题组成员】中。" | ||
| 319 | - > | ||
| 320 | - <ProForm.Group> | ||
| 321 | - <ProFormSelect | ||
| 322 | - key="customerName" | ||
| 323 | - label="客户信息(选择)" | ||
| 324 | - width="lg" | ||
| 325 | - showSearch | ||
| 326 | - name="customerName" | ||
| 327 | - placeholder="请选择客户信息" | ||
| 328 | - onChange={(_, option) => { | ||
| 329 | - autoFillCustomerInfo(option); | ||
| 330 | - }} | ||
| 331 | - fieldProps={{ | ||
| 332 | - filterOption() { | ||
| 333 | - return true; | ||
| 334 | - }, | ||
| 335 | - optionItemRender(item: any) { | ||
| 336 | - if (item.type === 'add') { | 424 | + title = |
| 425 | + getDefaultString(realName) + | ||
| 426 | + '|' + | ||
| 427 | + getDefaultString(phone); | ||
| 428 | + | ||
| 429 | + spanText = | ||
| 430 | + getDefaultString(realName) + | ||
| 431 | + '|' + | ||
| 432 | + getDefaultString(phone); | ||
| 337 | return ( | 433 | return ( |
| 338 | - <div title={item.name + '(新增客户)'}> | ||
| 339 | - <span style={{ color: '#333333' }}>{item.name}</span> | ||
| 340 | - {' | '} | ||
| 341 | - <span style={{ color: 'orange' }}>自定义</span> | 434 | + <div title={title}> |
| 435 | + <span style={{ color: '#333333' }}>{spanText}</span> | ||
| 342 | </div> | 436 | </div> |
| 343 | ); | 437 | ); |
| 438 | + }, | ||
| 439 | + }} | ||
| 440 | + debounceTime={1000} | ||
| 441 | + request={async (value, {}) => { | ||
| 442 | + const keywords = value.keyWords; | ||
| 443 | + if (keywords === '') { | ||
| 444 | + return []; | ||
| 344 | } | 445 | } |
| 446 | + const res = await postCanrdApiUserAddressList({ | ||
| 447 | + data: { keywords: keywords }, | ||
| 448 | + }); | ||
| 449 | + let options = res?.data?.map((c: any) => { | ||
| 450 | + return { | ||
| 451 | + ...c, | ||
| 452 | + label: c.name, | ||
| 453 | + value: c.id, | ||
| 454 | + key: c.id, | ||
| 455 | + }; | ||
| 456 | + }); | ||
| 345 | 457 | ||
| 346 | - let title = ''; | ||
| 347 | - let spanText = ''; | ||
| 348 | - let realName = item.realName; | ||
| 349 | - let phone = item.phone; | ||
| 350 | - | ||
| 351 | - title = | ||
| 352 | - getDefaultString(realName) + '|' + getDefaultString(phone); | 458 | + //对options去重,realName和phone唯一 |
| 459 | + options = deduplicateOptions(options); | ||
| 353 | 460 | ||
| 354 | - spanText = | ||
| 355 | - getDefaultString(realName) + '|' + getDefaultString(phone); | ||
| 356 | - return ( | ||
| 357 | - <div title={title}> | ||
| 358 | - <span style={{ color: '#333333' }}>{spanText}</span> | ||
| 359 | - </div> | ||
| 360 | - ); | ||
| 361 | - }, | ||
| 362 | - }} | ||
| 363 | - debounceTime={1000} | ||
| 364 | - request={async (value, {}) => { | ||
| 365 | - const keywords = value.keyWords; | ||
| 366 | - if (keywords === '') { | ||
| 367 | - return []; | ||
| 368 | - } | ||
| 369 | - const res = await postCanrdApiUserAddressList({ | ||
| 370 | - data: { keywords: keywords }, | ||
| 371 | - }); | ||
| 372 | - let options = res?.data?.map((c: any) => { | ||
| 373 | - return { | ||
| 374 | - ...c, | ||
| 375 | - label: c.name, | ||
| 376 | - value: c.id, | ||
| 377 | - key: c.id, | ||
| 378 | - }; | ||
| 379 | - }); | 461 | + //第一个商品默认为要新增客户 |
| 462 | + if (keywords.trim() !== '') { | ||
| 463 | + options.unshift({ | ||
| 464 | + name: keywords, | ||
| 465 | + type: 'add', | ||
| 466 | + label: keywords, | ||
| 467 | + value: 3.1415926, | ||
| 468 | + key: keywords, | ||
| 469 | + }); | ||
| 470 | + } | ||
| 380 | 471 | ||
| 381 | - //对options去重,realName和phone唯一 | ||
| 382 | - options = deduplicateOptions(options); | 472 | + return options; |
| 473 | + }} | ||
| 474 | + /> | ||
| 475 | + </ProForm.Group> | ||
| 383 | 476 | ||
| 384 | - //第一个商品默认为要新增客户 | ||
| 385 | - if (keywords.trim() !== '') { | ||
| 386 | - options.unshift({ | ||
| 387 | - name: keywords, | ||
| 388 | - type: 'add', | ||
| 389 | - label: keywords, | ||
| 390 | - value: 3.1415926, | ||
| 391 | - key: keywords, | ||
| 392 | - }); | ||
| 393 | - } | ||
| 394 | - | ||
| 395 | - return options; | 477 | + <ProForm.Group> |
| 478 | + <ProFormText | ||
| 479 | + name="realName" | ||
| 480 | + label="客户名称(自定义)" | ||
| 481 | + placeholder="请输入客户名称" | ||
| 482 | + rules={[{ required: false, message: '请输入客户名称' }]} | ||
| 483 | + /> | ||
| 484 | + <ProFormText | ||
| 485 | + name="phone" | ||
| 486 | + label="手机号(自定义)" | ||
| 487 | + width="md" | ||
| 488 | + placeholder="请输入手机号" | ||
| 489 | + rules={[{ required: false, message: '请输入手机号' }]} | ||
| 490 | + /> | ||
| 491 | + </ProForm.Group> | ||
| 492 | + <Button | ||
| 493 | + type="primary" | ||
| 494 | + onClick={() => { | ||
| 495 | + addCustomMember(); | ||
| 396 | }} | 496 | }} |
| 397 | - /> | ||
| 398 | - </ProForm.Group> | ||
| 399 | - | ||
| 400 | - <ProForm.Group> | ||
| 401 | - <ProFormText | ||
| 402 | - name="realName" | ||
| 403 | - label="客户名称(自定义)" | ||
| 404 | - placeholder="请输入客户名称" | ||
| 405 | - rules={[{ required: false, message: '请输入客户名称' }]} | ||
| 406 | - /> | ||
| 407 | - <ProFormText | ||
| 408 | - name="phone" | ||
| 409 | - label="手机号(自定义)" | ||
| 410 | - width="md" | ||
| 411 | - placeholder="请输入手机号" | ||
| 412 | - rules={[{ required: false, message: '请输入手机号' }]} | ||
| 413 | - /> | ||
| 414 | - </ProForm.Group> | ||
| 415 | - <Button | ||
| 416 | - type="primary" | ||
| 417 | - onClick={() => { | ||
| 418 | - addCustomMember(); | ||
| 419 | - }} | ||
| 420 | - > | ||
| 421 | - 添加 | ||
| 422 | - </Button> | ||
| 423 | - </ProCard> | 497 | + > |
| 498 | + 添加 | ||
| 499 | + </Button> | ||
| 500 | + </ProCard> | ||
| 501 | + </Spin> | ||
| 424 | </ModalForm> | 502 | </ModalForm> |
| 425 | </div> | 503 | </div> |
| 426 | ); | 504 | ); |
src/pages/ResearchGroup/index.tsx
| @@ -4,7 +4,7 @@ import { RESPONSE_CODE } from '@/constants/enum'; | @@ -4,7 +4,7 @@ import { RESPONSE_CODE } from '@/constants/enum'; | ||
| 4 | import {} from '@/pages/Invoice/constant'; | 4 | import {} from '@/pages/Invoice/constant'; |
| 5 | import { | 5 | import { |
| 6 | postCanrdApiUserDetail, | 6 | postCanrdApiUserDetail, |
| 7 | - postPrepaidDelete, | 7 | + postResearchGroupsDelete, |
| 8 | postResearchGroupsList, | 8 | postResearchGroupsList, |
| 9 | } from '@/services'; | 9 | } from '@/services'; |
| 10 | import { formatDateTime } from '@/utils'; | 10 | import { formatDateTime } from '@/utils'; |
| @@ -31,7 +31,7 @@ const PrepaidPage = () => { | @@ -31,7 +31,7 @@ const PrepaidPage = () => { | ||
| 31 | const accountActionRef = useRef<ActionType>(); | 31 | const accountActionRef = useRef<ActionType>(); |
| 32 | const [researchGroupAddModalVisible, setResearchGroupAddModalVisible] = | 32 | const [researchGroupAddModalVisible, setResearchGroupAddModalVisible] = |
| 33 | useState(false); | 33 | useState(false); |
| 34 | - // const [checkVisible, setCheckVisible] = useState(false);; | 34 | + // const [checkVisible, setCheckVisible] = useState(false); |
| 35 | const [accountInfo, setAccountInfo] = useState({ | 35 | const [accountInfo, setAccountInfo] = useState({ |
| 36 | realName: '', | 36 | realName: '', |
| 37 | phone: '', | 37 | phone: '', |
| @@ -39,6 +39,8 @@ const PrepaidPage = () => { | @@ -39,6 +39,8 @@ const PrepaidPage = () => { | ||
| 39 | uid: '', | 39 | uid: '', |
| 40 | }); | 40 | }); |
| 41 | const [accountInfoLoading, setAccountInfoLoading] = useState(false); | 41 | const [accountInfoLoading, setAccountInfoLoading] = useState(false); |
| 42 | + const [perms, setPerms] = useState<string[]>([]); | ||
| 43 | + const [optRecordId, setOptRecordId] = useState<any>(null); | ||
| 42 | 44 | ||
| 43 | const reloadResearchGroupTable = () => { | 45 | const reloadResearchGroupTable = () => { |
| 44 | researchGroupActionRef.current?.reload(); | 46 | researchGroupActionRef.current?.reload(); |
| @@ -256,16 +258,15 @@ const PrepaidPage = () => { | @@ -256,16 +258,15 @@ const PrepaidPage = () => { | ||
| 256 | width: 120, | 258 | width: 120, |
| 257 | render: (text, record) => { | 259 | render: (text, record) => { |
| 258 | let btns = []; | 260 | let btns = []; |
| 259 | - let opts = record.operations; | ||
| 260 | - if (opts?.includes('modify')) { | 261 | + if (perms?.includes('modify')) { |
| 261 | btns.push( | 262 | btns.push( |
| 262 | <Button | 263 | <Button |
| 263 | className="p-0" | 264 | className="p-0" |
| 264 | key="modify" | 265 | key="modify" |
| 265 | type="link" | 266 | type="link" |
| 266 | onClick={() => { | 267 | onClick={() => { |
| 267 | - // setRechargePrepaymentModalVisible(true); | ||
| 268 | - // setCurrentOptPrepaymentObj(cloneDeep(record)); | 268 | + setResearchGroupAddModalVisible(true); |
| 269 | + setOptRecordId(record?.id); | ||
| 269 | }} | 270 | }} |
| 270 | > | 271 | > |
| 271 | 编辑 | 272 | 编辑 |
| @@ -273,31 +274,15 @@ const PrepaidPage = () => { | @@ -273,31 +274,15 @@ const PrepaidPage = () => { | ||
| 273 | ); | 274 | ); |
| 274 | } | 275 | } |
| 275 | 276 | ||
| 276 | - if (opts?.includes('audit')) { | ||
| 277 | - btns.push( | ||
| 278 | - <Button | ||
| 279 | - className="p-0" | ||
| 280 | - key="view" | ||
| 281 | - type="link" | ||
| 282 | - onClick={() => { | ||
| 283 | - // setCurrentOptPrepaymentObj(record); | ||
| 284 | - // setCheckVisible(true); | ||
| 285 | - }} | ||
| 286 | - > | ||
| 287 | - 审核 | ||
| 288 | - </Button>, | ||
| 289 | - ); | ||
| 290 | - } | ||
| 291 | - | ||
| 292 | - if (opts?.includes('delete')) { | 277 | + if (perms?.includes('delete')) { |
| 293 | btns.push( | 278 | btns.push( |
| 294 | <ButtonConfirm | 279 | <ButtonConfirm |
| 295 | key="delete" | 280 | key="delete" |
| 296 | className="p-0" | 281 | className="p-0" |
| 297 | - title={'确认删除这条预存记录吗?'} | 282 | + title={'确认删除这个课题组吗?'} |
| 298 | text="删除" | 283 | text="删除" |
| 299 | onConfirm={async () => { | 284 | onConfirm={async () => { |
| 300 | - let res = await postPrepaidDelete({ | 285 | + let res = await postResearchGroupsDelete({ |
| 301 | data: { ids: [record.id] }, | 286 | data: { ids: [record.id] }, |
| 302 | }); | 287 | }); |
| 303 | if (res && res.result === RESPONSE_CODE.SUCCESS) { | 288 | if (res && res.result === RESPONSE_CODE.SUCCESS) { |
| @@ -331,6 +316,7 @@ const PrepaidPage = () => { | @@ -331,6 +316,7 @@ const PrepaidPage = () => { | ||
| 331 | const res = await postResearchGroupsList({ | 316 | const res = await postResearchGroupsList({ |
| 332 | data: { ...params }, | 317 | data: { ...params }, |
| 333 | }); | 318 | }); |
| 319 | + setPerms(res.data.specialPath); | ||
| 334 | return { | 320 | return { |
| 335 | data: res?.data?.data || [], | 321 | data: res?.data?.data || [], |
| 336 | total: res?.data?.total || 0, | 322 | total: res?.data?.total || 0, |
| @@ -359,19 +345,25 @@ const PrepaidPage = () => { | @@ -359,19 +345,25 @@ const PrepaidPage = () => { | ||
| 359 | dateFormatter="string" | 345 | dateFormatter="string" |
| 360 | headerTitle="课题组列表" | 346 | headerTitle="课题组列表" |
| 361 | scroll={{ x: 1400 }} | 347 | scroll={{ x: 1400 }} |
| 362 | - toolBarRender={() => [ | ||
| 363 | - <Button | ||
| 364 | - key="button" | ||
| 365 | - icon={<PlusOutlined />} | ||
| 366 | - onClick={() => { | ||
| 367 | - setCurrentOptPrepaymentObj(null); | ||
| 368 | - setResearchGroupAddModalVisible(true); | ||
| 369 | - }} | ||
| 370 | - type="primary" | ||
| 371 | - > | ||
| 372 | - 新建 | ||
| 373 | - </Button>, | ||
| 374 | - ]} | 348 | + toolBarRender={() => { |
| 349 | + let btns = []; | ||
| 350 | + if (perms.includes('add')) { | ||
| 351 | + btns.push( | ||
| 352 | + <Button | ||
| 353 | + key="button" | ||
| 354 | + icon={<PlusOutlined />} | ||
| 355 | + onClick={() => { | ||
| 356 | + setResearchGroupAddModalVisible(true); | ||
| 357 | + }} | ||
| 358 | + type="primary" | ||
| 359 | + > | ||
| 360 | + 新建 | ||
| 361 | + </Button>, | ||
| 362 | + ); | ||
| 363 | + } | ||
| 364 | + | ||
| 365 | + return btns; | ||
| 366 | + }} | ||
| 375 | /> | 367 | /> |
| 376 | ), | 368 | ), |
| 377 | }, | 369 | }, |
| @@ -394,9 +386,12 @@ const PrepaidPage = () => { | @@ -394,9 +386,12 @@ const PrepaidPage = () => { | ||
| 394 | <ResearchGroupAddModal | 386 | <ResearchGroupAddModal |
| 395 | setVisible={(val: boolean) => { | 387 | setVisible={(val: boolean) => { |
| 396 | setResearchGroupAddModalVisible(val); | 388 | setResearchGroupAddModalVisible(val); |
| 389 | + setOptRecordId(null); | ||
| 397 | }} | 390 | }} |
| 391 | + researchGroupId={optRecordId} | ||
| 398 | onClose={() => { | 392 | onClose={() => { |
| 399 | setResearchGroupAddModalVisible(false); | 393 | setResearchGroupAddModalVisible(false); |
| 394 | + setOptRecordId(null); | ||
| 400 | }} | 395 | }} |
| 401 | /> | 396 | /> |
| 402 | )} | 397 | )} |
src/services/definition.ts
| @@ -1677,6 +1677,11 @@ export interface ResearchGroupAccountAddRequest { | @@ -1677,6 +1677,11 @@ export interface ResearchGroupAccountAddRequest { | ||
| 1677 | accountId?: number; | 1677 | accountId?: number; |
| 1678 | /** | 1678 | /** |
| 1679 | * @description | 1679 | * @description |
| 1680 | + * 关联的账号名称 | ||
| 1681 | + */ | ||
| 1682 | + accountName?: string; | ||
| 1683 | + /** | ||
| 1684 | + * @description | ||
| 1680 | * 关联的账号手机号 | 1685 | * 关联的账号手机号 |
| 1681 | */ | 1686 | */ |
| 1682 | accountPhone?: string; | 1687 | accountPhone?: string; |
| @@ -1697,6 +1702,11 @@ export interface ResearchGroupAccountEditRequest { | @@ -1697,6 +1702,11 @@ export interface ResearchGroupAccountEditRequest { | ||
| 1697 | accountId?: number; | 1702 | accountId?: number; |
| 1698 | /** | 1703 | /** |
| 1699 | * @description | 1704 | * @description |
| 1705 | + * 关联的账号名称 | ||
| 1706 | + */ | ||
| 1707 | + accountName?: string; | ||
| 1708 | + /** | ||
| 1709 | + * @description | ||
| 1700 | * 关联的账号手机号 | 1710 | * 关联的账号手机号 |
| 1701 | */ | 1711 | */ |
| 1702 | accountPhone?: string; | 1712 | accountPhone?: string; |
| @@ -1737,6 +1747,15 @@ export interface ResearchGroupDeleteRequest { | @@ -1737,6 +1747,15 @@ export interface ResearchGroupDeleteRequest { | ||
| 1737 | ids?: Array<number>; | 1747 | ids?: Array<number>; |
| 1738 | } | 1748 | } |
| 1739 | 1749 | ||
| 1750 | +export interface ResearchGroupDetailRequest { | ||
| 1751 | + /** | ||
| 1752 | + * @description | ||
| 1753 | + * 主键id | ||
| 1754 | + * @format int64 | ||
| 1755 | + */ | ||
| 1756 | + id?: number; | ||
| 1757 | +} | ||
| 1758 | + | ||
| 1740 | export interface ResearchGroupEditRequest { | 1759 | export interface ResearchGroupEditRequest { |
| 1741 | /** | 1760 | /** |
| 1742 | * @description | 1761 | * @description |
| @@ -1767,6 +1786,11 @@ export interface ResearchGroupEditRequest { | @@ -1767,6 +1786,11 @@ export interface ResearchGroupEditRequest { | ||
| 1767 | } | 1786 | } |
| 1768 | 1787 | ||
| 1769 | export interface ResearchGroupListRequest { | 1788 | export interface ResearchGroupListRequest { |
| 1789 | + /** | ||
| 1790 | + * @description | ||
| 1791 | + * 预存账号手机号 | ||
| 1792 | + */ | ||
| 1793 | + accountPhone?: string; | ||
| 1770 | /** @format int32 */ | 1794 | /** @format int32 */ |
| 1771 | current?: number; | 1795 | current?: number; |
| 1772 | /** | 1796 | /** |
src/services/request.ts
| @@ -53,6 +53,7 @@ import type { | @@ -53,6 +53,7 @@ import type { | ||
| 53 | MaterialUnitListRes, | 53 | MaterialUnitListRes, |
| 54 | MeasureUnitListRes, | 54 | MeasureUnitListRes, |
| 55 | MessageQueryDTO, | 55 | MessageQueryDTO, |
| 56 | + ModelAndView, | ||
| 56 | OrderAddVO, | 57 | OrderAddVO, |
| 57 | OrderAuditLogQueryVO, | 58 | OrderAuditLogQueryVO, |
| 58 | OrderBaseInfoQueryVO, | 59 | OrderBaseInfoQueryVO, |
| @@ -76,6 +77,7 @@ import type { | @@ -76,6 +77,7 @@ import type { | ||
| 76 | ReissueInvoiceDto, | 77 | ReissueInvoiceDto, |
| 77 | ResearchGroupAddRequest, | 78 | ResearchGroupAddRequest, |
| 78 | ResearchGroupDeleteRequest, | 79 | ResearchGroupDeleteRequest, |
| 80 | + ResearchGroupDetailRequest, | ||
| 79 | ResearchGroupEditRequest, | 81 | ResearchGroupEditRequest, |
| 80 | ResearchGroupListRequest, | 82 | ResearchGroupListRequest, |
| 81 | ResetPwdVO, | 83 | ResetPwdVO, |
| @@ -1614,9 +1616,7 @@ export interface GetErrorResponse { | @@ -1614,9 +1616,7 @@ export interface GetErrorResponse { | ||
| 1614 | * @description | 1616 | * @description |
| 1615 | * OK | 1617 | * OK |
| 1616 | */ | 1618 | */ |
| 1617 | - 200: { | ||
| 1618 | - [propertyName: string]: any; | ||
| 1619 | - }; | 1619 | + 200: ModelAndView; |
| 1620 | /** | 1620 | /** |
| 1621 | * @description | 1621 | * @description |
| 1622 | * Unauthorized | 1622 | * Unauthorized |
| @@ -1637,9 +1637,9 @@ export interface GetErrorResponse { | @@ -1637,9 +1637,9 @@ export interface GetErrorResponse { | ||
| 1637 | export type GetErrorResponseSuccess = GetErrorResponse[200]; | 1637 | export type GetErrorResponseSuccess = GetErrorResponse[200]; |
| 1638 | /** | 1638 | /** |
| 1639 | * @description | 1639 | * @description |
| 1640 | - * error | 1640 | + * errorHtml |
| 1641 | * @tags basic-error-controller | 1641 | * @tags basic-error-controller |
| 1642 | - * @produces * | 1642 | + * @produces text/html |
| 1643 | */ | 1643 | */ |
| 1644 | export const getError = /* #__PURE__ */ (() => { | 1644 | export const getError = /* #__PURE__ */ (() => { |
| 1645 | const method = 'get'; | 1645 | const method = 'get'; |
| @@ -1663,9 +1663,7 @@ export interface PutErrorResponse { | @@ -1663,9 +1663,7 @@ export interface PutErrorResponse { | ||
| 1663 | * @description | 1663 | * @description |
| 1664 | * OK | 1664 | * OK |
| 1665 | */ | 1665 | */ |
| 1666 | - 200: { | ||
| 1667 | - [propertyName: string]: any; | ||
| 1668 | - }; | 1666 | + 200: ModelAndView; |
| 1669 | /** | 1667 | /** |
| 1670 | * @description | 1668 | * @description |
| 1671 | * Created | 1669 | * Created |
| @@ -1691,9 +1689,9 @@ export interface PutErrorResponse { | @@ -1691,9 +1689,9 @@ export interface PutErrorResponse { | ||
| 1691 | export type PutErrorResponseSuccess = PutErrorResponse[200]; | 1689 | export type PutErrorResponseSuccess = PutErrorResponse[200]; |
| 1692 | /** | 1690 | /** |
| 1693 | * @description | 1691 | * @description |
| 1694 | - * error | 1692 | + * errorHtml |
| 1695 | * @tags basic-error-controller | 1693 | * @tags basic-error-controller |
| 1696 | - * @produces * | 1694 | + * @produces text/html |
| 1697 | * @consumes application/json | 1695 | * @consumes application/json |
| 1698 | */ | 1696 | */ |
| 1699 | export const putError = /* #__PURE__ */ (() => { | 1697 | export const putError = /* #__PURE__ */ (() => { |
| @@ -1718,9 +1716,7 @@ export interface PostErrorResponse { | @@ -1718,9 +1716,7 @@ export interface PostErrorResponse { | ||
| 1718 | * @description | 1716 | * @description |
| 1719 | * OK | 1717 | * OK |
| 1720 | */ | 1718 | */ |
| 1721 | - 200: { | ||
| 1722 | - [propertyName: string]: any; | ||
| 1723 | - }; | 1719 | + 200: ModelAndView; |
| 1724 | /** | 1720 | /** |
| 1725 | * @description | 1721 | * @description |
| 1726 | * Created | 1722 | * Created |
| @@ -1746,9 +1742,9 @@ export interface PostErrorResponse { | @@ -1746,9 +1742,9 @@ export interface PostErrorResponse { | ||
| 1746 | export type PostErrorResponseSuccess = PostErrorResponse[200]; | 1742 | export type PostErrorResponseSuccess = PostErrorResponse[200]; |
| 1747 | /** | 1743 | /** |
| 1748 | * @description | 1744 | * @description |
| 1749 | - * error | 1745 | + * errorHtml |
| 1750 | * @tags basic-error-controller | 1746 | * @tags basic-error-controller |
| 1751 | - * @produces * | 1747 | + * @produces text/html |
| 1752 | * @consumes application/json | 1748 | * @consumes application/json |
| 1753 | */ | 1749 | */ |
| 1754 | export const postError = /* #__PURE__ */ (() => { | 1750 | export const postError = /* #__PURE__ */ (() => { |
| @@ -1773,9 +1769,7 @@ export interface DeleteErrorResponse { | @@ -1773,9 +1769,7 @@ export interface DeleteErrorResponse { | ||
| 1773 | * @description | 1769 | * @description |
| 1774 | * OK | 1770 | * OK |
| 1775 | */ | 1771 | */ |
| 1776 | - 200: { | ||
| 1777 | - [propertyName: string]: any; | ||
| 1778 | - }; | 1772 | + 200: ModelAndView; |
| 1779 | /** | 1773 | /** |
| 1780 | * @description | 1774 | * @description |
| 1781 | * No Content | 1775 | * No Content |
| @@ -1796,9 +1790,9 @@ export interface DeleteErrorResponse { | @@ -1796,9 +1790,9 @@ export interface DeleteErrorResponse { | ||
| 1796 | export type DeleteErrorResponseSuccess = DeleteErrorResponse[200]; | 1790 | export type DeleteErrorResponseSuccess = DeleteErrorResponse[200]; |
| 1797 | /** | 1791 | /** |
| 1798 | * @description | 1792 | * @description |
| 1799 | - * error | 1793 | + * errorHtml |
| 1800 | * @tags basic-error-controller | 1794 | * @tags basic-error-controller |
| 1801 | - * @produces * | 1795 | + * @produces text/html |
| 1802 | */ | 1796 | */ |
| 1803 | export const deleteError = /* #__PURE__ */ (() => { | 1797 | export const deleteError = /* #__PURE__ */ (() => { |
| 1804 | const method = 'delete'; | 1798 | const method = 'delete'; |
| @@ -1822,9 +1816,7 @@ export interface OptionsErrorResponse { | @@ -1822,9 +1816,7 @@ export interface OptionsErrorResponse { | ||
| 1822 | * @description | 1816 | * @description |
| 1823 | * OK | 1817 | * OK |
| 1824 | */ | 1818 | */ |
| 1825 | - 200: { | ||
| 1826 | - [propertyName: string]: any; | ||
| 1827 | - }; | 1819 | + 200: ModelAndView; |
| 1828 | /** | 1820 | /** |
| 1829 | * @description | 1821 | * @description |
| 1830 | * No Content | 1822 | * No Content |
| @@ -1845,9 +1837,9 @@ export interface OptionsErrorResponse { | @@ -1845,9 +1837,9 @@ export interface OptionsErrorResponse { | ||
| 1845 | export type OptionsErrorResponseSuccess = OptionsErrorResponse[200]; | 1837 | export type OptionsErrorResponseSuccess = OptionsErrorResponse[200]; |
| 1846 | /** | 1838 | /** |
| 1847 | * @description | 1839 | * @description |
| 1848 | - * error | 1840 | + * errorHtml |
| 1849 | * @tags basic-error-controller | 1841 | * @tags basic-error-controller |
| 1850 | - * @produces * | 1842 | + * @produces text/html |
| 1851 | * @consumes application/json | 1843 | * @consumes application/json |
| 1852 | */ | 1844 | */ |
| 1853 | export const optionsError = /* #__PURE__ */ (() => { | 1845 | export const optionsError = /* #__PURE__ */ (() => { |
| @@ -1872,9 +1864,7 @@ export interface HeadErrorResponse { | @@ -1872,9 +1864,7 @@ export interface HeadErrorResponse { | ||
| 1872 | * @description | 1864 | * @description |
| 1873 | * OK | 1865 | * OK |
| 1874 | */ | 1866 | */ |
| 1875 | - 200: { | ||
| 1876 | - [propertyName: string]: any; | ||
| 1877 | - }; | 1867 | + 200: ModelAndView; |
| 1878 | /** | 1868 | /** |
| 1879 | * @description | 1869 | * @description |
| 1880 | * No Content | 1870 | * No Content |
| @@ -1895,9 +1885,9 @@ export interface HeadErrorResponse { | @@ -1895,9 +1885,9 @@ export interface HeadErrorResponse { | ||
| 1895 | export type HeadErrorResponseSuccess = HeadErrorResponse[200]; | 1885 | export type HeadErrorResponseSuccess = HeadErrorResponse[200]; |
| 1896 | /** | 1886 | /** |
| 1897 | * @description | 1887 | * @description |
| 1898 | - * error | 1888 | + * errorHtml |
| 1899 | * @tags basic-error-controller | 1889 | * @tags basic-error-controller |
| 1900 | - * @produces * | 1890 | + * @produces text/html |
| 1901 | * @consumes application/json | 1891 | * @consumes application/json |
| 1902 | */ | 1892 | */ |
| 1903 | export const headError = /* #__PURE__ */ (() => { | 1893 | export const headError = /* #__PURE__ */ (() => { |
| @@ -1922,9 +1912,7 @@ export interface PatchErrorResponse { | @@ -1922,9 +1912,7 @@ export interface PatchErrorResponse { | ||
| 1922 | * @description | 1912 | * @description |
| 1923 | * OK | 1913 | * OK |
| 1924 | */ | 1914 | */ |
| 1925 | - 200: { | ||
| 1926 | - [propertyName: string]: any; | ||
| 1927 | - }; | 1915 | + 200: ModelAndView; |
| 1928 | /** | 1916 | /** |
| 1929 | * @description | 1917 | * @description |
| 1930 | * No Content | 1918 | * No Content |
| @@ -1945,9 +1933,9 @@ export interface PatchErrorResponse { | @@ -1945,9 +1933,9 @@ export interface PatchErrorResponse { | ||
| 1945 | export type PatchErrorResponseSuccess = PatchErrorResponse[200]; | 1933 | export type PatchErrorResponseSuccess = PatchErrorResponse[200]; |
| 1946 | /** | 1934 | /** |
| 1947 | * @description | 1935 | * @description |
| 1948 | - * error | 1936 | + * errorHtml |
| 1949 | * @tags basic-error-controller | 1937 | * @tags basic-error-controller |
| 1950 | - * @produces * | 1938 | + * @produces text/html |
| 1951 | * @consumes application/json | 1939 | * @consumes application/json |
| 1952 | */ | 1940 | */ |
| 1953 | export const patchError = /* #__PURE__ */ (() => { | 1941 | export const patchError = /* #__PURE__ */ (() => { |
| @@ -7770,6 +7758,77 @@ export const postResearchGroupsDelete = /* #__PURE__ */ (() => { | @@ -7770,6 +7758,77 @@ export const postResearchGroupsDelete = /* #__PURE__ */ (() => { | ||
| 7770 | return request; | 7758 | return request; |
| 7771 | })(); | 7759 | })(); |
| 7772 | 7760 | ||
| 7761 | +/** @description request parameter type for postResearchGroupsDetail */ | ||
| 7762 | +export interface PostResearchGroupsDetailOption { | ||
| 7763 | + /** | ||
| 7764 | + * @description | ||
| 7765 | + * request | ||
| 7766 | + */ | ||
| 7767 | + body: { | ||
| 7768 | + /** | ||
| 7769 | + @description | ||
| 7770 | + request */ | ||
| 7771 | + request: ResearchGroupDetailRequest; | ||
| 7772 | + }; | ||
| 7773 | +} | ||
| 7774 | + | ||
| 7775 | +/** @description response type for postResearchGroupsDetail */ | ||
| 7776 | +export interface PostResearchGroupsDetailResponse { | ||
| 7777 | + /** | ||
| 7778 | + * @description | ||
| 7779 | + * OK | ||
| 7780 | + */ | ||
| 7781 | + 200: ServerResult; | ||
| 7782 | + /** | ||
| 7783 | + * @description | ||
| 7784 | + * Created | ||
| 7785 | + */ | ||
| 7786 | + 201: any; | ||
| 7787 | + /** | ||
| 7788 | + * @description | ||
| 7789 | + * Unauthorized | ||
| 7790 | + */ | ||
| 7791 | + 401: any; | ||
| 7792 | + /** | ||
| 7793 | + * @description | ||
| 7794 | + * Forbidden | ||
| 7795 | + */ | ||
| 7796 | + 403: any; | ||
| 7797 | + /** | ||
| 7798 | + * @description | ||
| 7799 | + * Not Found | ||
| 7800 | + */ | ||
| 7801 | + 404: any; | ||
| 7802 | +} | ||
| 7803 | + | ||
| 7804 | +export type PostResearchGroupsDetailResponseSuccess = | ||
| 7805 | + PostResearchGroupsDetailResponse[200]; | ||
| 7806 | +/** | ||
| 7807 | + * @description | ||
| 7808 | + * 查询课题组信息 | ||
| 7809 | + * @tags research-groups-controller | ||
| 7810 | + * @produces * | ||
| 7811 | + * @consumes application/json | ||
| 7812 | + */ | ||
| 7813 | +export const postResearchGroupsDetail = /* #__PURE__ */ (() => { | ||
| 7814 | + const method = 'post'; | ||
| 7815 | + const url = '/research/groups/detail'; | ||
| 7816 | + function request( | ||
| 7817 | + option: PostResearchGroupsDetailOption, | ||
| 7818 | + ): Promise<PostResearchGroupsDetailResponseSuccess> { | ||
| 7819 | + return requester(request.url, { | ||
| 7820 | + method: request.method, | ||
| 7821 | + ...option, | ||
| 7822 | + }) as unknown as Promise<PostResearchGroupsDetailResponseSuccess>; | ||
| 7823 | + } | ||
| 7824 | + | ||
| 7825 | + /** http method */ | ||
| 7826 | + request.method = method; | ||
| 7827 | + /** request url */ | ||
| 7828 | + request.url = url; | ||
| 7829 | + return request; | ||
| 7830 | +})(); | ||
| 7831 | + | ||
| 7773 | /** @description request parameter type for postResearchGroupsEdit */ | 7832 | /** @description request parameter type for postResearchGroupsEdit */ |
| 7774 | export interface PostResearchGroupsEditOption { | 7833 | export interface PostResearchGroupsEditOption { |
| 7775 | /** | 7834 | /** |