|
|
|
@ -11,33 +11,33 @@
|
|
|
|
|
<div class="FormBox">
|
|
|
|
|
<BasicForm @register="registerForm" />
|
|
|
|
|
</div>
|
|
|
|
|
<div class="TableBox">
|
|
|
|
|
<div class="BoxUnit">
|
|
|
|
|
<div class="model-botton-box">
|
|
|
|
|
<a-upload
|
|
|
|
|
:file-list="fileList"
|
|
|
|
|
:before-upload="beforeUpload"
|
|
|
|
|
name="file"
|
|
|
|
|
:custom-request="uploadFile"
|
|
|
|
|
>
|
|
|
|
|
<a-button class="btn" type="primary">导入对账excel</a-button>
|
|
|
|
|
</a-upload>
|
|
|
|
|
<!-- <a-button class="btn" type="primary" @click="Addlist">新增费用字段</a-button> -->
|
|
|
|
|
<!-- <a-button class="btn btn-delete" @click="Dellist">删除费用字段</a-button> -->
|
|
|
|
|
</div>
|
|
|
|
|
<div style="position: relative">
|
|
|
|
|
<a-spin :spinning="TableSpinning">
|
|
|
|
|
<input
|
|
|
|
|
class="ds-tb-check"
|
|
|
|
|
type="checkbox"
|
|
|
|
|
v-model="allCheck"
|
|
|
|
|
:indeterminate="someCheck"
|
|
|
|
|
/>
|
|
|
|
|
<hot-table ref="hotTb" :data="list" :settings="Lsettings"> </hot-table>
|
|
|
|
|
</a-spin>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<BasicTable class="ds-table" @register="registerTable">
|
|
|
|
|
<template #tableTitle>
|
|
|
|
|
<a-upload
|
|
|
|
|
:file-list="fileList"
|
|
|
|
|
:before-upload="beforeUpload"
|
|
|
|
|
name="file"
|
|
|
|
|
:custom-request="uploadFile"
|
|
|
|
|
>
|
|
|
|
|
<a-button type="link">
|
|
|
|
|
<span class="iconfont icon-xiazai"></span>
|
|
|
|
|
导入对账excel
|
|
|
|
|
</a-button>
|
|
|
|
|
</a-upload>
|
|
|
|
|
<a-button type="link">
|
|
|
|
|
<span class="iconfont icon-xiazai" @click="Fnawait"></span>删除明细
|
|
|
|
|
</a-button>
|
|
|
|
|
<a-button type="link"
|
|
|
|
|
><span class="iconfont icon-xiazai" @click="Fnawait"></span>重新匹配</a-button
|
|
|
|
|
>
|
|
|
|
|
<a-button type="link"
|
|
|
|
|
><span class="iconfont icon-xiazai" @click="Fnawait"></span>生成对账单</a-button
|
|
|
|
|
>
|
|
|
|
|
<a-button type="link"
|
|
|
|
|
><span class="iconfont icon-xiazai" @click="Fnawait"></span>生成付费申请</a-button
|
|
|
|
|
>
|
|
|
|
|
</template>
|
|
|
|
|
</BasicTable>
|
|
|
|
|
<template #footer>
|
|
|
|
|
<a-button
|
|
|
|
|
pre-icon="ant-design:close-outlined"
|
|
|
|
@ -71,14 +71,11 @@
|
|
|
|
|
import { ApiEdit, ApiInfo, ApiBasicsList, ApiImport } from './api'
|
|
|
|
|
import { GetClientListByCode } from '/@/api/common'
|
|
|
|
|
import { BasicForm, useForm } from '/@/components/Form/index'
|
|
|
|
|
import { formSchema } from './columns'
|
|
|
|
|
import { BasicTable, useTable, TableAction } from '/@/components/Table'
|
|
|
|
|
import { formSchema, formcolumns, columns } from './columns'
|
|
|
|
|
import { useMessage } from '/@/hooks/web/useMessage'
|
|
|
|
|
const { notification, createMessage } = useMessage()
|
|
|
|
|
import { HotTable } from '@handsontable/vue3'
|
|
|
|
|
import { BasicModal, useModalInner } from '/@/components/Modal'
|
|
|
|
|
import { registerAllModules } from 'handsontable/registry'
|
|
|
|
|
import 'handsontable/dist/handsontable.full.min.css'
|
|
|
|
|
registerAllModules()
|
|
|
|
|
import { useOptionsStore } from '/@/store/modules/options'
|
|
|
|
|
const optionsStore = useOptionsStore()
|
|
|
|
|
// ------------------------------------弹窗------------------------------------------
|
|
|
|
@ -89,8 +86,6 @@
|
|
|
|
|
const rowId = ref('')
|
|
|
|
|
const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
|
|
|
|
|
resetFields()
|
|
|
|
|
allCheck.value = false
|
|
|
|
|
someCheck.value = false
|
|
|
|
|
setModalProps({ confirmLoading: false, loading: true })
|
|
|
|
|
isUpdate.value = !!data?.isUpdate
|
|
|
|
|
if (unref(isUpdate)) {
|
|
|
|
@ -98,10 +93,11 @@
|
|
|
|
|
rowId.value = data.record.id
|
|
|
|
|
const res: API.DataResult = await ApiInfo({ id: unref(rowId) })
|
|
|
|
|
if (res.succeeded) {
|
|
|
|
|
reload()
|
|
|
|
|
setFieldsValue({
|
|
|
|
|
...res.data,
|
|
|
|
|
})
|
|
|
|
|
await GetTableData()
|
|
|
|
|
// await GetTableData()
|
|
|
|
|
}
|
|
|
|
|
setModalProps({ confirmLoading: false })
|
|
|
|
|
} else {
|
|
|
|
@ -109,37 +105,11 @@
|
|
|
|
|
}
|
|
|
|
|
setModalProps({ loading: false })
|
|
|
|
|
})
|
|
|
|
|
const TableSpinning = ref(false)
|
|
|
|
|
async function GetTableData() {
|
|
|
|
|
TableSpinning.value = true
|
|
|
|
|
let ApiData = {
|
|
|
|
|
queryCondition: JSON.stringify([
|
|
|
|
|
{
|
|
|
|
|
FieldName: 'checkId',
|
|
|
|
|
FieldValue: rowId.value,
|
|
|
|
|
ConditionalType: 1,
|
|
|
|
|
},
|
|
|
|
|
]),
|
|
|
|
|
pageCondition: {
|
|
|
|
|
pageIndex: 1,
|
|
|
|
|
pageSize: 9999,
|
|
|
|
|
sortConditions: [],
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
const res: API.DataResult = await ApiBasicsList(ApiData)
|
|
|
|
|
if (res.succeeded) {
|
|
|
|
|
list.value.splice(0)
|
|
|
|
|
list.value.push(...res.data)
|
|
|
|
|
} else {
|
|
|
|
|
setModalProps({ confirmLoading: false })
|
|
|
|
|
}
|
|
|
|
|
TableSpinning.value = false
|
|
|
|
|
}
|
|
|
|
|
// 保存
|
|
|
|
|
async function handleSave(exit) {
|
|
|
|
|
try {
|
|
|
|
|
const values = await validate()
|
|
|
|
|
values.feeList = list.value
|
|
|
|
|
// values.feeList = getRawDataSource()
|
|
|
|
|
setModalProps({ confirmLoading: true, loading: true })
|
|
|
|
|
const res: API.DataResult = await ApiEdit(values)
|
|
|
|
|
console.log(res)
|
|
|
|
@ -167,7 +137,6 @@
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
function FnClose() {
|
|
|
|
|
list.value.splice(0)
|
|
|
|
|
closeModal()
|
|
|
|
|
}
|
|
|
|
|
async function refresh() {
|
|
|
|
@ -184,307 +153,58 @@
|
|
|
|
|
schemas: formSchema,
|
|
|
|
|
showActionButtonGroup: false,
|
|
|
|
|
})
|
|
|
|
|
// ------------------------------------左侧表------------------------------------------
|
|
|
|
|
// 全部勾选
|
|
|
|
|
const allCheck = ref(false)
|
|
|
|
|
// 部分勾选
|
|
|
|
|
const someCheck = ref(false)
|
|
|
|
|
const list = ref<any>([])
|
|
|
|
|
watchEffect(() => {
|
|
|
|
|
// 全选
|
|
|
|
|
if (allCheck.value) {
|
|
|
|
|
list.value.forEach((item) => {
|
|
|
|
|
item.selected = true
|
|
|
|
|
})
|
|
|
|
|
} else {
|
|
|
|
|
// 取消全选
|
|
|
|
|
list.value.forEach((item) => {
|
|
|
|
|
item.selected = false
|
|
|
|
|
// ------------------------------------表------------------------------------------
|
|
|
|
|
const [registerTable, { reload, getRawDataSource }] = useTable({
|
|
|
|
|
title: '',
|
|
|
|
|
api: async (p) => {
|
|
|
|
|
const res: API.DataResult = await ApiBasicsList(p)
|
|
|
|
|
return new Promise((resolve) => {
|
|
|
|
|
resolve({ data: [...res.data], total: res.count })
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
watch(
|
|
|
|
|
list.value,
|
|
|
|
|
(val) => {
|
|
|
|
|
let a = 0
|
|
|
|
|
let b = 0
|
|
|
|
|
val.forEach((item) => {
|
|
|
|
|
if (item.selected) {
|
|
|
|
|
a += 1
|
|
|
|
|
} else {
|
|
|
|
|
b += 1
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
if (a == 0) {
|
|
|
|
|
allCheck.value = false
|
|
|
|
|
}
|
|
|
|
|
if (b == 0) {
|
|
|
|
|
allCheck.value = true
|
|
|
|
|
},
|
|
|
|
|
beforeFetch: (p) => {
|
|
|
|
|
const postParam: API.PageRequest = {
|
|
|
|
|
queryCondition: JSON.stringify([
|
|
|
|
|
{
|
|
|
|
|
FieldName: 'checkId',
|
|
|
|
|
FieldValue: rowId.value,
|
|
|
|
|
ConditionalType: 1,
|
|
|
|
|
},
|
|
|
|
|
]),
|
|
|
|
|
pageCondition: {
|
|
|
|
|
pageIndex: p.current,
|
|
|
|
|
pageSize: p.pageSize,
|
|
|
|
|
sortConditions: [],
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
if (a != 0 && b != 0) {
|
|
|
|
|
someCheck.value = true
|
|
|
|
|
if (p.field) {
|
|
|
|
|
postParam.pageCondition.sortConditions = [
|
|
|
|
|
{
|
|
|
|
|
sortField: p.field,
|
|
|
|
|
listSortDirection: p.order == 'ascend' ? 0 : 1,
|
|
|
|
|
},
|
|
|
|
|
]
|
|
|
|
|
} else {
|
|
|
|
|
someCheck.value = false
|
|
|
|
|
postParam.pageCondition.sortConditions = []
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
deep: true,
|
|
|
|
|
},
|
|
|
|
|
)
|
|
|
|
|
const hotTb = ref()
|
|
|
|
|
// 结算单位字典数据
|
|
|
|
|
const companyDict = ref([])
|
|
|
|
|
// 船名字典数据
|
|
|
|
|
const vesselDict = ref([])
|
|
|
|
|
const isEqualData = ref([
|
|
|
|
|
{
|
|
|
|
|
name: '是',
|
|
|
|
|
value: true,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
name: '否',
|
|
|
|
|
value: false,
|
|
|
|
|
},
|
|
|
|
|
])
|
|
|
|
|
const Columns = [
|
|
|
|
|
{
|
|
|
|
|
data: 'selected',
|
|
|
|
|
type: 'checkbox',
|
|
|
|
|
title: ' ',
|
|
|
|
|
width: 32,
|
|
|
|
|
className: 'htCenter',
|
|
|
|
|
readOnly: false,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '主键Id',
|
|
|
|
|
width: 120,
|
|
|
|
|
data: 'id',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '对账Id',
|
|
|
|
|
width: 120,
|
|
|
|
|
data: 'checkId',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '结算单位Id',
|
|
|
|
|
width: 120,
|
|
|
|
|
data: 'customerId',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '船名Id',
|
|
|
|
|
width: 120,
|
|
|
|
|
data: 'vesselId',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '操作员Id',
|
|
|
|
|
width: 120,
|
|
|
|
|
data: 'operatorId',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '揽货人Id',
|
|
|
|
|
width: 120,
|
|
|
|
|
data: 'saleId',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '主提单号',
|
|
|
|
|
width: 120,
|
|
|
|
|
data: 'mblno',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '本地RMB金额',
|
|
|
|
|
width: 120,
|
|
|
|
|
type: 'numeric',
|
|
|
|
|
data: 'rmbLocalAmount',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '本地USD金额',
|
|
|
|
|
width: 120,
|
|
|
|
|
type: 'numeric',
|
|
|
|
|
data: 'usdLocalAmount',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '对账RMB金额',
|
|
|
|
|
width: 120,
|
|
|
|
|
type: 'numeric',
|
|
|
|
|
data: 'rmbCheckAmount',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '对账USD金额',
|
|
|
|
|
width: 120,
|
|
|
|
|
type: 'numeric',
|
|
|
|
|
data: 'usdCheckAmount',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: 'RMB差异金额',
|
|
|
|
|
width: 120,
|
|
|
|
|
type: 'numeric',
|
|
|
|
|
data: 'rmbDifferenceAmount',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: 'USD差异金额',
|
|
|
|
|
width: 120,
|
|
|
|
|
type: 'numeric',
|
|
|
|
|
data: 'usdDifferenceAmount',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '结算单位',
|
|
|
|
|
width: 130,
|
|
|
|
|
data: 'customerName',
|
|
|
|
|
type: 'dropdown',
|
|
|
|
|
source: async (query, process) => {
|
|
|
|
|
const rowIndex = hotTb.value.hotInstance.getActiveEditor().row
|
|
|
|
|
const code = list.value[rowIndex]?.customerType || null
|
|
|
|
|
GetClientListByCode({ code }).then((res) => {
|
|
|
|
|
const { data } = res
|
|
|
|
|
data.forEach((item) => {
|
|
|
|
|
item['label'] = item.shortName
|
|
|
|
|
item['value'] = item.codeName
|
|
|
|
|
})
|
|
|
|
|
companyDict.value = data
|
|
|
|
|
const dict = data.map((item) => {
|
|
|
|
|
return item.codeName + '-' + item.shortName
|
|
|
|
|
})
|
|
|
|
|
process(dict)
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '开船日期',
|
|
|
|
|
width: 120,
|
|
|
|
|
data: 'etd',
|
|
|
|
|
type: 'date',
|
|
|
|
|
dateFormat: 'YYYY-MM-DD',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '船名',
|
|
|
|
|
width: 120,
|
|
|
|
|
data: 'vessel',
|
|
|
|
|
type: 'dropdown',
|
|
|
|
|
source: async (query, process) => {
|
|
|
|
|
let data = optionsStore.getOptionsByCode('GetVesselSelectList')
|
|
|
|
|
vesselDict.value = data
|
|
|
|
|
const dict = data.map((item) => {
|
|
|
|
|
return item.vesselName
|
|
|
|
|
})
|
|
|
|
|
process(dict)
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '海关航次',
|
|
|
|
|
width: 120,
|
|
|
|
|
data: 'voyno',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '操作员',
|
|
|
|
|
width: 120,
|
|
|
|
|
data: 'operatorName',
|
|
|
|
|
type: 'dropdown',
|
|
|
|
|
source: async (query, process) => {
|
|
|
|
|
let data = optionsStore.getOptionsByCode('GetCustomerServiceList')
|
|
|
|
|
vesselDict.value = data
|
|
|
|
|
const dict = data.map((item) => {
|
|
|
|
|
return item.userName
|
|
|
|
|
})
|
|
|
|
|
process(dict)
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '揽货人',
|
|
|
|
|
width: 120,
|
|
|
|
|
data: 'saleName',
|
|
|
|
|
type: 'dropdown',
|
|
|
|
|
source: async (query, process) => {
|
|
|
|
|
let data = optionsStore.getOptionsByCode('GetSaleList')
|
|
|
|
|
vesselDict.value = data
|
|
|
|
|
const dict = data.map((item) => {
|
|
|
|
|
return item.userName
|
|
|
|
|
})
|
|
|
|
|
process(dict)
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '是否一致',
|
|
|
|
|
width: 80,
|
|
|
|
|
data: 'isEqual',
|
|
|
|
|
type: 'dropdown',
|
|
|
|
|
source: async (query, process) => {
|
|
|
|
|
const dict = isEqualData.value.map((res) => {
|
|
|
|
|
return res.name
|
|
|
|
|
})
|
|
|
|
|
process(dict)
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
]
|
|
|
|
|
const Lsettings = {
|
|
|
|
|
height: '400',
|
|
|
|
|
// width: '100%',
|
|
|
|
|
autoWrapRow: true,
|
|
|
|
|
autoWrapCol: true,
|
|
|
|
|
// 每行的高度
|
|
|
|
|
rowHeights: 32,
|
|
|
|
|
fixedColumnsLeft: 1,
|
|
|
|
|
// 需要隐藏的列
|
|
|
|
|
hiddenColumns: {
|
|
|
|
|
columns: [1, 2, 3, 4, 5, 6],
|
|
|
|
|
indicators: true,
|
|
|
|
|
},
|
|
|
|
|
columnSorting: true,
|
|
|
|
|
// 设置排序的列和方向
|
|
|
|
|
// columnSorting: {
|
|
|
|
|
// column: 2, // 根据第三列排序
|
|
|
|
|
// sortOrder: ['asc', 'desc'] // 允许升序和降序排序
|
|
|
|
|
// },
|
|
|
|
|
// 如果通过复制或者填写校验出现错误,清空输入框
|
|
|
|
|
// afterValidate: function (isValid, value, row, prop, source) {
|
|
|
|
|
// if (!isValid) {
|
|
|
|
|
// hotTb.value.hotInstance.setDataAtRowProp(row, prop, '')
|
|
|
|
|
// }
|
|
|
|
|
// },
|
|
|
|
|
columns: Columns,
|
|
|
|
|
// 此行直接复制,必须(非商用)
|
|
|
|
|
licenseKey: 'non-commercial-and-evaluation',
|
|
|
|
|
enterMoves: 'row',
|
|
|
|
|
// 定义所有单元格发生变化的回调处理
|
|
|
|
|
afterChange(changes, source) {
|
|
|
|
|
if (source === 'edit' || source === 'Autofill.fill' || source === 'CopyPaste.paste') {
|
|
|
|
|
let dict = {}
|
|
|
|
|
changes.forEach((res) => {
|
|
|
|
|
// 修改结算单位
|
|
|
|
|
if (res[1] === 'customerName') {
|
|
|
|
|
const item: any = companyDict.value.filter((item: any) => {
|
|
|
|
|
return changes[0][3].includes(item.codeName + '-' + item.shortName)
|
|
|
|
|
})
|
|
|
|
|
if (item) dict = item[0]
|
|
|
|
|
list.value[res[0]]['customerId'] = dict['id']
|
|
|
|
|
}
|
|
|
|
|
// 修改船名
|
|
|
|
|
if (res[1] === 'vessel') {
|
|
|
|
|
const item: any = vesselDict.value.filter((item: any) => {
|
|
|
|
|
return changes[0][3].includes(item.vesselName)
|
|
|
|
|
})
|
|
|
|
|
if (item) dict = item[0]
|
|
|
|
|
list.value[res[0]]['vesselId'] = dict['id']
|
|
|
|
|
}
|
|
|
|
|
// 修改操作
|
|
|
|
|
if (res[1] === 'operatorName') {
|
|
|
|
|
const item: any = vesselDict.value.filter((item: any) => {
|
|
|
|
|
return changes[0][3].includes(item.userName)
|
|
|
|
|
})
|
|
|
|
|
if (item) dict = item[0]
|
|
|
|
|
list.value[res[0]]['operatorId'] = dict['id']
|
|
|
|
|
}
|
|
|
|
|
// 修改揽货人
|
|
|
|
|
if (res[1] === 'saleName') {
|
|
|
|
|
const item: any = vesselDict.value.filter((item: any) => {
|
|
|
|
|
return changes[0][3].includes(item.userName)
|
|
|
|
|
})
|
|
|
|
|
if (item) dict = item[0]
|
|
|
|
|
list.value[res[0]]['saleId'] = dict['id']
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
return postParam
|
|
|
|
|
},
|
|
|
|
|
columns: formcolumns,
|
|
|
|
|
isTreeTable: false,
|
|
|
|
|
pagination: true,
|
|
|
|
|
striped: true,
|
|
|
|
|
useSearchForm: false,
|
|
|
|
|
showTableSetting: false,
|
|
|
|
|
bordered: true,
|
|
|
|
|
showIndexColumn: true,
|
|
|
|
|
indexColumnProps: {
|
|
|
|
|
width: 60,
|
|
|
|
|
},
|
|
|
|
|
canResize: true,
|
|
|
|
|
resizeHeightOffset: 35,
|
|
|
|
|
immediate: false,
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
// 导入 EXCEL
|
|
|
|
|
const fileList = ref([])
|
|
|
|
|
function beforeUpload(file) {
|
|
|
|
@ -497,64 +217,15 @@
|
|
|
|
|
formData.append('file', file.file)
|
|
|
|
|
ApiImport({
|
|
|
|
|
data: formData,
|
|
|
|
|
// parameter: { LinkId: Did, TypeCode: 'other', TypeName: '其他' },
|
|
|
|
|
}).then(async (res) => {
|
|
|
|
|
if (res.succeeded) {
|
|
|
|
|
await GetTableData()
|
|
|
|
|
await reload()
|
|
|
|
|
} else {
|
|
|
|
|
notification.error({ message: res.message, duration: 3 })
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
function Addlist() {
|
|
|
|
|
list.value.push({})
|
|
|
|
|
}
|
|
|
|
|
async function Dellist() {
|
|
|
|
|
const data = await validate()
|
|
|
|
|
if (data.id) {
|
|
|
|
|
let ApiData: any = { id: data.id, ids: [] }
|
|
|
|
|
list.value.forEach((e, i) => {
|
|
|
|
|
if (e.selected && e.id) {
|
|
|
|
|
ApiData.ids.push(e.id)
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
} else {
|
|
|
|
|
list.value.forEach((e, i) => {
|
|
|
|
|
if (e.selected) {
|
|
|
|
|
list.value.splice(i, 1)
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
function Fnawait() {
|
|
|
|
|
notification.warning({ message: '等待开发', duration: 3 })
|
|
|
|
|
}
|
|
|
|
|
</script>
|
|
|
|
|
<style lang="less" scoped>
|
|
|
|
|
.FormBox {
|
|
|
|
|
// height: 100px;
|
|
|
|
|
}
|
|
|
|
|
.TableBox {
|
|
|
|
|
display: flex;
|
|
|
|
|
.BoxUnit {
|
|
|
|
|
flex: 1;
|
|
|
|
|
.model-botton-box {
|
|
|
|
|
margin: 40px 0 20px 20px;
|
|
|
|
|
|
|
|
|
|
.btn {
|
|
|
|
|
margin-right: 10px;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.btn-delete {
|
|
|
|
|
border: 1px solid #ff6646;
|
|
|
|
|
background: #fdf2f0;
|
|
|
|
|
color: #ff6646;
|
|
|
|
|
|
|
|
|
|
&:hover {
|
|
|
|
|
border: 1px solid #ff6646 !important;
|
|
|
|
|
background: #fdf2f0 !important;
|
|
|
|
|
color: #ff6646 !important;
|
|
|
|
|
opacity: 0.7;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</style>
|
|
|
|
|