往来单位 调整
commit
bb2fc22263
@ -1,129 +0,0 @@
|
|||||||
<template>
|
|
||||||
<BasicModal
|
|
||||||
v-bind="$attrs"
|
|
||||||
:use-wrapper="true"
|
|
||||||
:title="getTitle"
|
|
||||||
width="50%"
|
|
||||||
@register="registerModal"
|
|
||||||
@ok="handleSave"
|
|
||||||
>
|
|
||||||
<BasicForm @register="registerForm" />
|
|
||||||
<!--右下角按钮-->
|
|
||||||
<template #footer>
|
|
||||||
<a-button
|
|
||||||
pre-icon="ant-design:close-outlined"
|
|
||||||
type="warning"
|
|
||||||
:loading="loading"
|
|
||||||
ghost
|
|
||||||
style="margin-right: 0.8rem"
|
|
||||||
@click="closeModal"
|
|
||||||
>取消</a-button
|
|
||||||
>
|
|
||||||
<a-button
|
|
||||||
type="success"
|
|
||||||
:loading="loading"
|
|
||||||
pre-icon="ant-design:check-outlined"
|
|
||||||
style="margin-right: 0.8rem"
|
|
||||||
@click="handleSave(false)"
|
|
||||||
>仅保存</a-button
|
|
||||||
>
|
|
||||||
<a-button
|
|
||||||
pre-icon="ant-design:check-circle-outlined"
|
|
||||||
type="primary"
|
|
||||||
:loading="loading"
|
|
||||||
@click="handleSave(true)"
|
|
||||||
>保存并关闭</a-button
|
|
||||||
>
|
|
||||||
</template>
|
|
||||||
</BasicModal>
|
|
||||||
</template>
|
|
||||||
<script lang="ts" setup>
|
|
||||||
import { ref, computed, unref } from 'vue'
|
|
||||||
import { BasicModal, useModalInner } from '/@/components/Modal'
|
|
||||||
import { BasicForm, useForm } from '/@/components/Form/index'
|
|
||||||
import { formSchema } from './columns'
|
|
||||||
import { ApiEdit, ApiInfo } from './api'
|
|
||||||
import { useMessage } from '/@/hooks/web/useMessage'
|
|
||||||
// 声明Emits
|
|
||||||
const emit = defineEmits(['success', 'register'])
|
|
||||||
const isUpdate = ref(true)
|
|
||||||
const loading = ref(false)
|
|
||||||
const rowId = ref('')
|
|
||||||
const { notification } = useMessage()
|
|
||||||
const [registerForm, { resetFields, setFieldsValue, validate }] = useForm({
|
|
||||||
labelWidth: 100,
|
|
||||||
schemas: formSchema,
|
|
||||||
showActionButtonGroup: false,
|
|
||||||
})
|
|
||||||
|
|
||||||
const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
|
|
||||||
resetFields()
|
|
||||||
setModalProps({ confirmLoading: false, loading: true })
|
|
||||||
isUpdate.value = !!data?.isUpdate
|
|
||||||
if (unref(isUpdate)) {
|
|
||||||
// setModalProps({ confirmLoading: true });
|
|
||||||
rowId.value = data.record.id
|
|
||||||
const res: API.DataResult = await ApiInfo({ id: unref(rowId) })
|
|
||||||
if (res.succeeded) {
|
|
||||||
let RshipperType = []
|
|
||||||
res.data.shipperType.split(',').forEach((e) => {
|
|
||||||
RshipperType.push(parseInt(e))
|
|
||||||
})
|
|
||||||
res.data.shipperType = RshipperType
|
|
||||||
|
|
||||||
setFieldsValue({
|
|
||||||
...res.data,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
setFieldsValue({ permissionIdentity: unref(2), clientId: data.clientId })
|
|
||||||
}
|
|
||||||
setModalProps({ loading: false })
|
|
||||||
})
|
|
||||||
|
|
||||||
const getTitle = computed(() => (!unref(isUpdate) ? '新增费用模板' : '编辑费用模板'))
|
|
||||||
|
|
||||||
async function handleSave(exit) {
|
|
||||||
try {
|
|
||||||
const values = await validate()
|
|
||||||
let shipperTypeS = ''
|
|
||||||
values.shipperType.forEach((item) => {
|
|
||||||
if (shipperTypeS == '') {
|
|
||||||
shipperTypeS = item
|
|
||||||
} else {
|
|
||||||
shipperTypeS = `${shipperTypeS},${item}`
|
|
||||||
}
|
|
||||||
})
|
|
||||||
values.shipperType = shipperTypeS
|
|
||||||
setModalProps({ confirmLoading: true, loading: true })
|
|
||||||
const res: API.DataResult = await ApiEdit(values)
|
|
||||||
if (res.succeeded) {
|
|
||||||
notification.success({ message: res.message, duration: 3 })
|
|
||||||
emit('success')
|
|
||||||
//刷新页面
|
|
||||||
if (!exit) {
|
|
||||||
if (unref(isUpdate)) {
|
|
||||||
await refresh()
|
|
||||||
} else {
|
|
||||||
rowId.value = res.data
|
|
||||||
isUpdate.value = true
|
|
||||||
await refresh()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
setModalProps({ confirmLoading: false, loading: false })
|
|
||||||
exit && closeModal()
|
|
||||||
} finally {
|
|
||||||
// loading.value = false;
|
|
||||||
setModalProps({ confirmLoading: false, loading: false })
|
|
||||||
}
|
|
||||||
}
|
|
||||||
async function refresh() {
|
|
||||||
const res: API.DataResult = await ApiInfo({ id: unref(rowId) })
|
|
||||||
if (res.succeeded) {
|
|
||||||
await setFieldsValue({
|
|
||||||
...res.data,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
@ -1,41 +0,0 @@
|
|||||||
// @ts-ignore
|
|
||||||
import { request } from '/@/utils/request'
|
|
||||||
import { DataResult, PageRequest } from '/@/api/model/baseModel'
|
|
||||||
enum Api {
|
|
||||||
list = '/feeApi/FeeCustTemplate/GetList',
|
|
||||||
edit = '/feeApi/FeeCustTemplate/Edit',
|
|
||||||
info = '/feeApi/FeeCustTemplate/Edit',
|
|
||||||
del = '/feeApi/FeeCustTemplate/Delete',
|
|
||||||
}
|
|
||||||
// 列表 (Auth)
|
|
||||||
export function ApiList(data: PageRequest) {
|
|
||||||
return request<DataResult>({
|
|
||||||
url: Api.list,
|
|
||||||
method: 'post',
|
|
||||||
data,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
// 编辑 (Auth)
|
|
||||||
export function ApiEdit(data: PageRequest) {
|
|
||||||
return request<DataResult>({
|
|
||||||
url: Api.edit,
|
|
||||||
method: 'post',
|
|
||||||
data,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
// 详情 (Auth)
|
|
||||||
export function ApiInfo(query) {
|
|
||||||
return request<DataResult>({
|
|
||||||
url: Api.info,
|
|
||||||
method: 'get',
|
|
||||||
params: query,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
// 批量删除 (Auth)
|
|
||||||
export function ApiDel(data: PageRequest) {
|
|
||||||
return request<DataResult>({
|
|
||||||
url: Api.del,
|
|
||||||
method: 'post',
|
|
||||||
data,
|
|
||||||
})
|
|
||||||
}
|
|
@ -1,171 +0,0 @@
|
|||||||
import { BasicColumn, FormSchema } from '/@/components/Table'
|
|
||||||
import { Tag } from 'ant-design-vue'
|
|
||||||
import { getDictDropDown } from '/@/api/common'
|
|
||||||
let shipperTypeList: any = []
|
|
||||||
const res2: API.DataResult = await getDictDropDown({ code: 'shipper_type' })
|
|
||||||
if (res2.succeeded) {
|
|
||||||
shipperTypeList = []
|
|
||||||
res2.data.forEach((e) => {
|
|
||||||
shipperTypeList.push({ label: e.name, value: Number(e.value) })
|
|
||||||
})
|
|
||||||
}
|
|
||||||
export const columns: BasicColumn[] = [
|
|
||||||
{
|
|
||||||
title: '名称',
|
|
||||||
dataIndex: 'name',
|
|
||||||
width: 150,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: '业务类型',
|
|
||||||
dataIndex: 'businessTypeText',
|
|
||||||
width: 150,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: '费用类型',
|
|
||||||
dataIndex: 'feeTypeText',
|
|
||||||
width: 150,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: '说明',
|
|
||||||
dataIndex: 'description',
|
|
||||||
width: 150,
|
|
||||||
},
|
|
||||||
]
|
|
||||||
|
|
||||||
export const searchFormSchema: FormSchema[] = [
|
|
||||||
{
|
|
||||||
field: 'ShortName',
|
|
||||||
label: '简称',
|
|
||||||
component: 'Input',
|
|
||||||
colProps: { span: 6 },
|
|
||||||
},
|
|
||||||
]
|
|
||||||
export const formSchema: FormSchema[] = [
|
|
||||||
{
|
|
||||||
label: '主键Id',
|
|
||||||
field: 'id',
|
|
||||||
component: 'Input',
|
|
||||||
defaultValue: '',
|
|
||||||
show: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: '客户id',
|
|
||||||
field: 'clientId',
|
|
||||||
component: 'Input',
|
|
||||||
defaultValue: '',
|
|
||||||
show: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
field: 'codeName',
|
|
||||||
label: '代码',
|
|
||||||
required: true,
|
|
||||||
component: 'Input',
|
|
||||||
colProps: { span: 12 },
|
|
||||||
},
|
|
||||||
{
|
|
||||||
field: 'shortName',
|
|
||||||
label: '简称',
|
|
||||||
required: true,
|
|
||||||
component: 'Input',
|
|
||||||
colProps: { span: 12 },
|
|
||||||
},
|
|
||||||
{
|
|
||||||
field: 'name',
|
|
||||||
label: '公司全称',
|
|
||||||
component: 'Input',
|
|
||||||
colProps: { span: 12 },
|
|
||||||
},
|
|
||||||
{
|
|
||||||
field: 'address',
|
|
||||||
label: '地址',
|
|
||||||
component: 'Input',
|
|
||||||
colProps: { span: 12 },
|
|
||||||
},
|
|
||||||
{
|
|
||||||
field: 'shipperType',
|
|
||||||
label: '类型',
|
|
||||||
required: true,
|
|
||||||
component: 'Select',
|
|
||||||
colProps: { span: 12 },
|
|
||||||
componentProps: {
|
|
||||||
options: shipperTypeList,
|
|
||||||
allowClear: true,
|
|
||||||
showSearch: true,
|
|
||||||
mode: 'multiple',
|
|
||||||
class: 'NoLimitHeight',
|
|
||||||
filterOption: (input: string, option: any) => {
|
|
||||||
return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
field: 'attn',
|
|
||||||
label: '联系人',
|
|
||||||
component: 'Input',
|
|
||||||
colProps: { span: 12 },
|
|
||||||
defaultValue: '',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
field: 'email',
|
|
||||||
label: '邮箱',
|
|
||||||
component: 'Input',
|
|
||||||
colProps: { span: 12 },
|
|
||||||
defaultValue: '',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
field: 'tel',
|
|
||||||
label: '电话',
|
|
||||||
component: 'Input',
|
|
||||||
colProps: { span: 12 },
|
|
||||||
defaultValue: '',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
field: 'companyNo',
|
|
||||||
label: '公司代码',
|
|
||||||
component: 'Input',
|
|
||||||
colProps: { span: 12 },
|
|
||||||
defaultValue: 0,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
field: 'isPublic',
|
|
||||||
label: '是否公共标识',
|
|
||||||
component: 'Switch',
|
|
||||||
defaultValue: false,
|
|
||||||
colProps: { span: 6 },
|
|
||||||
componentProps: {
|
|
||||||
checkedChildren: '是',
|
|
||||||
unCheckedChildren: '否',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
field: 'status',
|
|
||||||
label: '是否可用',
|
|
||||||
component: 'Switch',
|
|
||||||
defaultValue: 0,
|
|
||||||
colProps: { span: 6 },
|
|
||||||
componentProps: {
|
|
||||||
checkedChildren: '是',
|
|
||||||
checkedValue: 0,
|
|
||||||
unCheckedChildren: '否',
|
|
||||||
unCheckedValue: 1,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
field: 'note',
|
|
||||||
label: '备注',
|
|
||||||
component: 'InputTextArea',
|
|
||||||
colProps: { span: 12 },
|
|
||||||
componentProps: {
|
|
||||||
rows: 2,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
field: 'shortDetail',
|
|
||||||
label: '详细信息',
|
|
||||||
component: 'InputTextArea',
|
|
||||||
colProps: { span: 12 },
|
|
||||||
componentProps: {
|
|
||||||
rows: 2,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
]
|
|
@ -1,148 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div>
|
|
||||||
<BasicTable class="ds-table-detail" @register="registerTable" @row-dbClick="handleAudit">
|
|
||||||
<template #toolbar>
|
|
||||||
<a-button type="link" @click="handleCreate">
|
|
||||||
<span class="iconfont icon-new_document"></span>
|
|
||||||
添加费用模板
|
|
||||||
</a-button>
|
|
||||||
</template>
|
|
||||||
<template #bodyCell="{ column, record }">
|
|
||||||
<template v-if="column.key === 'action'">
|
|
||||||
<TableAction
|
|
||||||
:actions="[
|
|
||||||
{
|
|
||||||
icon: 'clarity:note-edit-line',
|
|
||||||
tooltip: '编辑',
|
|
||||||
onClick: handleAudit.bind(null, record),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
icon: 'ant-design:delete-outlined',
|
|
||||||
tooltip: '删除',
|
|
||||||
color: 'error',
|
|
||||||
popConfirm: {
|
|
||||||
title: '是否要删除此条数据?',
|
|
||||||
okText: '是',
|
|
||||||
cancelText: '否',
|
|
||||||
confirm: handleDelete.bind(null, record),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
]"
|
|
||||||
/>
|
|
||||||
</template>
|
|
||||||
</template>
|
|
||||||
</BasicTable>
|
|
||||||
<TenantAuditStepModal @register="registerModal" @success="handleSuccess" />
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
<script lang="ts" setup>
|
|
||||||
import { defineComponent, onMounted, ref } from 'vue'
|
|
||||||
import { BasicTable, useTable, TableAction, SorterResult } from '/@/components/Table'
|
|
||||||
import { ApiList, ApiDel } from './api'
|
|
||||||
import { useModal } from '/@/components/Modal'
|
|
||||||
import TenantAuditStepModal from './TenantAuditStepModal.vue'
|
|
||||||
import { columns, searchFormSchema } from './columns'
|
|
||||||
import { useMessage } from '/@/hooks/web/useMessage'
|
|
||||||
const { notification } = useMessage()
|
|
||||||
const props = defineProps({
|
|
||||||
clientId: { type: String },
|
|
||||||
})
|
|
||||||
const [registerModal, { openModal }] = useModal()
|
|
||||||
const [registerTable, { reload, getForm, getPaginationRef }] = useTable({
|
|
||||||
title: '费用模板列表',
|
|
||||||
api: async (p) => {
|
|
||||||
const res: API.DataResult = await ApiList(p)
|
|
||||||
return new Promise((resolve) => {
|
|
||||||
resolve({ data: [...res.data], total: res.count })
|
|
||||||
})
|
|
||||||
},
|
|
||||||
beforeFetch: () => {
|
|
||||||
var currentPageInfo: any = getPaginationRef()
|
|
||||||
var data = getForm().getFieldsValue()
|
|
||||||
const postParam: API.PageRequest = {
|
|
||||||
queryCondition: '',
|
|
||||||
pageCondition: {
|
|
||||||
pageIndex: currentPageInfo.current,
|
|
||||||
pageSize: currentPageInfo.pageSize,
|
|
||||||
sortConditions: [],
|
|
||||||
},
|
|
||||||
}
|
|
||||||
let condition: API.ConditionItem[] = []
|
|
||||||
// if (!!data.ShortName) {
|
|
||||||
// condition.push({
|
|
||||||
// FieldName: 'ShortName',
|
|
||||||
// FieldValue: data.ShortName,
|
|
||||||
// ConditionalType: 1,
|
|
||||||
// })
|
|
||||||
// }
|
|
||||||
condition.push({
|
|
||||||
FieldName: 'ClientId',
|
|
||||||
FieldValue: props.clientId,
|
|
||||||
ConditionalType: 1,
|
|
||||||
})
|
|
||||||
postParam.queryCondition = JSON.stringify(condition)
|
|
||||||
return postParam
|
|
||||||
},
|
|
||||||
columns,
|
|
||||||
// useSearchForm: true,
|
|
||||||
// formConfig: {
|
|
||||||
// labelWidth: 120,
|
|
||||||
// schemas: searchFormSchema,
|
|
||||||
// },
|
|
||||||
pagination: true,
|
|
||||||
bordered: true,
|
|
||||||
showTableSetting: false,
|
|
||||||
canResize: true,
|
|
||||||
resizeHeightOffset: 35,
|
|
||||||
actionColumn: {
|
|
||||||
width: 80,
|
|
||||||
title: '操作',
|
|
||||||
dataIndex: 'action',
|
|
||||||
fixed: 'right',
|
|
||||||
},
|
|
||||||
})
|
|
||||||
function handleCreate() {
|
|
||||||
openModal(true, {
|
|
||||||
clientId: props.clientId,
|
|
||||||
isParent: false,
|
|
||||||
isUpdate: false,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
function handleAudit(record: Recordable) {
|
|
||||||
openModal(true, {
|
|
||||||
record,
|
|
||||||
// record: { clientId: props.clientId, ...record },
|
|
||||||
isUpdate: true,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
// 删除
|
|
||||||
async function handleDelete(record: Recordable) {
|
|
||||||
const res: API.DataResult = await ApiDel({
|
|
||||||
id: '',
|
|
||||||
ids: [record.id],
|
|
||||||
})
|
|
||||||
if (res.succeeded) {
|
|
||||||
notification.success({ message: res.message, duration: 3 })
|
|
||||||
reload()
|
|
||||||
} else {
|
|
||||||
notification.error({ message: res.message, duration: 3 })
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function handleSuccess() {
|
|
||||||
reload()
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
<style lang="less" scoped>
|
|
||||||
.ds-table-detail {
|
|
||||||
margin-top: -16px;
|
|
||||||
.title {
|
|
||||||
font-size: 12px;
|
|
||||||
font-weight: 700;
|
|
||||||
letter-spacing: 1px;
|
|
||||||
line-height: 15.84px;
|
|
||||||
color: rgba(51, 56, 61, 1);
|
|
||||||
text-align: left;
|
|
||||||
vertical-align: bottom;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue