Browse Source

feat: 文档列表

ops-management-platform-frontend-dev
wbc 4 weeks ago
parent
commit
30143b6fd2
  1. 105
      src/views/document/addModal.vue
  2. 21
      src/views/document/api.ts
  3. 8
      src/views/document/data.ts
  4. 27
      src/views/document/detailDrawer.vue
  5. 29
      src/views/document/index.vue
  6. 128
      src/views/project/contractManage/addModal.vue
  7. 17
      src/views/project/contractManage/api.ts
  8. 8
      src/views/project/contractManage/detailDrawer.vue
  9. 9
      src/views/project/contractManage/index.vue
  10. 152
      src/views/project/projectManage/addModal.vue
  11. 5
      src/views/project/projectManage/api.ts
  12. 17
      src/views/project/projectManage/detailDrawer.vue
  13. 9
      src/views/project/projectManage/index.vue
  14. 9
      src/views/project/serviceManage/index.vue

105
src/views/document/addModal.vue

@ -1,6 +1,6 @@
<template>
<a-modal v-model:open="visible" :title="title" @ok="handleOk" width="50%">
<a-form :model="form" layout="vertical">
<a-modal v-model:open="visible" :title="title" @ok="handleOk" @cancel="closeModal" width="50%">
<a-form :model="form" layout="vertical" ref="formRef" :rules="rules">
<a-row :gutter="[16, 16]">
<a-col :span="12">
<a-form-item label="文档名称" name="documentName">
@ -11,8 +11,13 @@
<a-form-item label="类型" name="type">
<a-select
v-model:value="form.type"
:options="projectNameOptions"
:options="typeOptions"
placeholder="请选择"
:fieldNames="{
label: 'typeName',
value: 'typeName',
options: 'options',
}"
/>
</a-form-item>
</a-col>
@ -21,8 +26,8 @@
<a-col :span="24">
<a-form-item label="状态" name="status">
<a-radio-group v-model:value="form.status">
<a-radio :value="1">启用</a-radio>
<a-radio :value="0">禁用</a-radio>
<a-radio :value="0">启用</a-radio>
<a-radio :value="1">禁用</a-radio>
</a-radio-group>
</a-form-item>
</a-col>
@ -31,8 +36,10 @@
<a-col :span="24">
<a-form-item label="附件" name="attachment">
<a-upload
v-model:file-list="form.attachment"
action="https://www.mocky.io/v2/5cc8019d300000980a055e76"
:before-upload="beforeUpload"
@change="importChange"
:file-list="filelists"
:maxCount="1"
>
<a-button type="primary"> 上传 </a-button>
</a-upload>
@ -45,55 +52,93 @@
<script>
import { reactive, ref } from 'vue';
import { getInfo, getDocumentType } from './api';
export default {
setup() {
const title = ref('新增');
const formRef = ref();
const visible = ref(false);
const form = reactive({
documentName: '',
type: '',
status: 1,
attachment: [],
status: 0,
attachment: null,
id: null,
});
//
const projectNameOptions = [
{
value: '1',
label: 'a',
},
{
value: '2',
label: 'b',
},
{
value: '3',
label: 'c',
},
];
const showModal = (type, id) => {
const typeOptions = ref([]);
const getOptions = async () => {
const res = await getDocumentType();
typeOptions.value = res.rows;
};
getOptions();
const showModal = async (type, id) => {
if (type == 1) {
title.value = '新增';
} else if (type == 2) {
title.value = '编辑';
console.log(id);
const data = await getInfo(id);
for (let i in form) {
form[i] = data[i];
}
}
visible.value = true;
};
const rules = {
documentName: [{ required: true, message: '请输入' }],
};
const handleOk = () => {
console.log('Form Data:', form);
//
formRef.value.validate().then((valid) => {
if (valid) {
if (title.value == '新增') {
let params = {};
for (let i in form) {
params[i] = form[i];
}
add(params).then((_) => {
message.success('新增成功');
visible.value = false;
});
} else {
let params = {};
for (let i in form) {
params[i] = form[i];
}
update(params).then((_) => {
message.success('编辑成功');
visible.value = false;
});
}
}
});
};
const closeModal = () => {
formRef.value.resetFields();
visible.value = false;
};
//
const filelists = ref([]);
const beforeUpload = async (file) => {
form.attachment = file;
return false;
};
const importChange = ({ fileList }) => {
filelists.value = fileList;
};
return {
visible,
title,
form,
showModal,
handleOk,
projectNameOptions,
typeOptions,
formRef,
closeModal,
rules,
filelists,
beforeUpload,
importChange,
};
},
};

21
src/views/document/api.ts

@ -1,21 +1,16 @@
import { ID, IDS, PageQuery, commonExport } from '@/api/base';
import { defHttp } from '@/utils/http/axios';
enum Api {
root = '/workflow/leave',
list = '/workflow/leave/list',
export = '/workflow/leave/export',
root = '/platform/documentInfo',
list = '/platform/documentInfo/list',
getDocumentType = '/platform/documentType/list',
}
export function list(params?: PageQuery) {
export function list(params: any) {
return defHttp.get({ url: Api.list, params });
}
export function exportExcel(data: any) {
return commonExport(Api.export, data);
}
export function getInfo(id: ID) {
export function getInfo(id: any) {
return defHttp.get({ url: `${Api.root}/${id}` });
}
@ -27,6 +22,10 @@ export function update(data: any) {
return defHttp.put({ url: Api.root, data });
}
export function removeByIds(ids: IDS) {
export function removeByIds(ids: any) {
return defHttp.deleteWithMsg({ url: `${Api.root}/${ids.join(',')}` });
}
export function getDocumentType() {
return defHttp.get({ url: Api.getDocumentType });
}

8
src/views/document/data.ts

@ -3,7 +3,7 @@ import { FormSchema } from '@/components/Form';
export const formSchemas: FormSchema[] = [
{
field: 'ducumentName',
field: 'documentName',
label: '文档名称',
component: 'Input',
componentProps: {
@ -11,11 +11,10 @@ export const formSchemas: FormSchema[] = [
},
},
];
export const columns: BasicColumn[] = [
{
title: '文档名称',
dataIndex: 'ducumentName',
dataIndex: 'documentName',
},
{
title: '类型',
@ -24,6 +23,9 @@ export const columns: BasicColumn[] = [
{
title: '状态',
dataIndex: 'status',
customRender({ value }) {
return value == 0 ? '启用' : '禁用';
},
},
{
title: '创建时间',

27
src/views/document/detailDrawer.vue

@ -13,7 +13,7 @@
<a-tab-pane key="1" tab="详细信息">
<a-row :gutter="[16, 16]">
<a-col :span="24">
<div><span class="titleLabel">名称</span>{{ detail.ducumentName }}</div>
<div><span class="titleLabel">名称</span>{{ detail.documentName }}</div>
</a-col>
</a-row>
<a-row :gutter="[16, 16]">
@ -44,30 +44,29 @@
<script>
import { reactive, ref } from 'vue';
// import { getInfo } from './api';
import { getInfo } from './api';
export default {
setup() {
//
let detail = reactive({
ducumentName: '',
documentName: '',
type: '',
status: '',
status: null,
createTime: '',
attachment: [],
attachment: null,
});
//
const visible = ref(false);
// const showDrawer = async(id) => {
// const data = await getInfo(id)
// for(let i in detail){
// detail[i] = data[i]
// }
// visible.value = true;
// console.log(detail)
// };
const showDrawer = () => {
const showDrawer = async (id) => {
const data = await getInfo(id);
for (let i in detail) {
detail[i] = data[i];
}
detail.status == 0 ? (detail.status = '启用') : (detail.status = '禁用');
visible.value = true;
console.log(detail);
};
//
const onClose = () => {

29
src/views/document/index.vue

@ -3,13 +3,19 @@
<BasicTable @register="registerTable">
<template #toolbar>
<a-button type="primary" @click="handleAdd">新增</a-button>
<a-button type="link" @click="handleDetail">详情</a-button>
</template>
<template #bodyCell="{ column, record }">
<template v-if="column && record && column.key === 'action'">
<!-- <a-button type="link" @click="handleEdit(record.id)">编辑</a-button>
<a-button type="link" @click="handleDelete(record.id)">删除</a-button> -->
<a-button type="link" @click="handleDetail">详情</a-button>
<a-button type="link" @click="handleEdit(record.id)">编辑</a-button>
<a-popconfirm
title="确定要删除吗?"
ok-text="是"
cancel-text="否"
@confirm="handleDelete(record.id)"
>
<a-button type="link">删除</a-button>
</a-popconfirm>
<a-button type="link" @click="handleDetail(record.id)">详情</a-button>
</template>
</template>
</BasicTable>
@ -21,7 +27,7 @@
<script setup lang="ts">
import { PageWrapper } from '@/components/Page';
import { BasicTable, useTable } from '@/components/Table';
import { list } from './api';
import { list, removeByIds } from './api';
import { formSchemas, columns } from './data';
import detailDrawer from './detailDrawer.vue';
import { ref } from 'vue';
@ -29,7 +35,7 @@
defineOptions({ name: 'Document' });
const [registerTable] = useTable({
const [registerTable, { reload }] = useTable({
rowSelection: {
type: 'checkbox',
},
@ -59,14 +65,21 @@
//
const detailDrawerRef = ref();
const handleDetail = () => {
detailDrawerRef.value.showDrawer();
const handleDetail = (id: any) => {
detailDrawerRef.value.showDrawer(id);
};
//
const addModalRef = ref();
const handleAdd = () => {
addModalRef.value.showModal(1);
};
const handleEdit = (id: any) => {
addModalRef.value.showModal(2, id);
};
const handleDelete = async (id: any) => {
await removeByIds([id]);
reload();
};
</script>
<style scoped></style>

128
src/views/project/contractManage/addModal.vue

@ -1,6 +1,22 @@
<template>
<a-modal v-model:open="visible" :title="title" @ok="handleOk" @cancel="closeModal" width="50%">
<a-form ref="formRef" :model="form" layout="vertical">
<a-form ref="formRef" :model="form" layout="vertical" :rules="rules">
<a-row :gutter="[16, 16]">
<a-col :span="24">
<a-form-item label="所属项目" name="projectName">
<a-select
v-model:value="form.projectName"
:options="projectNameOptions"
placeholder="请选择"
:fieldNames="{
label: 'projectName',
value: 'projectName',
options: 'options',
}"
/>
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="[16, 16]">
<a-col :span="24">
<a-form-item label="合同名称" name="contractName">
@ -8,7 +24,7 @@
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="[16, 16]">
<!-- <a-row :gutter="[16, 16]">
<a-col :span="24">
<a-form-item label="父级合同" name="contractParent">
<a-select
@ -18,7 +34,7 @@
/>
</a-form-item>
</a-col>
</a-row>
</a-row> -->
<a-row :gutter="[16, 16]">
<a-col :span="24">
<a-form-item label="合同编号" name="contractCode">
@ -31,8 +47,13 @@
<a-form-item label="合同类别" name="contractType">
<a-select
v-model:value="form.contractType"
:options="projectNameOptions"
:options="contractTypeOptions"
placeholder="请选择"
:fieldNames="{
label: 'typeName',
value: 'id',
options: 'options',
}"
/>
</a-form-item>
</a-col>
@ -40,8 +61,13 @@
<a-form-item label="所属区域" name="district">
<a-select
v-model:value="form.district"
:options="projectNameOptions"
:options="districtOptions"
placeholder="请选择"
:fieldNames="{
label: 'districtName',
value: 'districtName',
options: 'options',
}"
/>
</a-form-item>
</a-col>
@ -75,8 +101,13 @@
<a-form-item label="甲方单位" name="partyA">
<a-select
v-model:value="form.partyA"
:options="projectNameOptions"
:options="partyAOptions"
placeholder="请选择"
:fieldNames="{
label: 'partyName',
value: 'partyName',
options: 'options',
}"
/>
</a-form-item>
</a-col>
@ -91,8 +122,13 @@
<a-form-item label="乙方单位" name="partyB">
<a-select
v-model:value="form.partyB"
:options="projectNameOptions"
:options="partyBOptions"
placeholder="请选择"
:fieldNames="{
label: 'partyName',
value: 'partyName',
options: 'options',
}"
/>
</a-form-item>
</a-col>
@ -136,7 +172,15 @@
<script>
import { reactive, ref } from 'vue';
import { getInfo, add, update } from './api';
import {
getInfo,
add,
update,
getPartyInfo,
getDistrictInfo,
getProjectInfo,
getContractType,
} from './api';
import { message } from 'ant-design-vue';
export default {
@ -146,38 +190,42 @@
const visible = ref(false);
const filelists = ref([]);
let form = reactive({
projectName: null,
contractName: '',
contractCode: '',
contractParent: '',
contractType: '',
district: '',
// contractParent: '',
contractType: null,
district: null,
contractPrice: '',
signDate: '',
contractDuration: [],
partyA: '',
partyA: null,
partyAPerson: '',
partyB: '',
partyB: null,
partyBPerson: '',
contractContent: '',
remark: '',
attachment: [],
attachment: null,
id: null,
});
//
const projectNameOptions = [
{
value: '1',
label: 'a',
},
{
value: '2',
label: 'b',
},
{
value: '3',
label: 'c',
},
];
const projectNameOptions = ref([]);
const contractTypeOptions = ref([]);
const partyAOptions = ref([]);
const districtOptions = ref([]);
const partyBOptions = ref([]);
const getOptions = async () => {
const res1 = await getPartyInfo();
partyAOptions.value = res1.rows.filter((item) => item.partyType == '甲方');
partyBOptions.value = res1.rows.filter((item) => item.partyType == '乙方');
const res2 = await getDistrictInfo();
districtOptions.value = res2;
const res3 = await getProjectInfo();
projectNameOptions.value = res3;
const res4 = await getContractType();
contractTypeOptions.value = res4.rows;
};
getOptions();
const showModal = async (type, id) => {
visible.value = true;
if (type == 1) {
@ -189,7 +237,6 @@
form[i] = data[i];
}
form.contractDuration = [data.startDate, data.endDate];
form.attachment = data.attachment ? data.attachment : [];
}
};
const beforeUpload = async (file) => {
@ -201,6 +248,22 @@
filelists.value = fileList;
console.log(fileList);
};
const rules = {
projectName: [{ required: true, message: '请选择' }],
contractName: [{ required: true, message: '请输入' }],
contractCode: [{ required: true, message: '请输入' }],
contractType: [{ required: true, message: '请选择' }],
district: [{ required: true, message: '请选择' }],
contractPrice: [{ required: true, message: '请输入' }],
signDate: [{ required: true, message: '请选择' }],
contractDuration: [{ required: true, message: '请选择' }],
partyA: [{ required: true, message: '请选择' }],
partyAPerson: [{ required: true, message: '请输入' }],
partyB: [{ required: true, message: '请选择' }],
partyBPerson: [{ required: true, message: '请输入' }],
contractContent: [{ required: true, message: '请输入' }],
remark: [{ required: true, message: '请输入' }],
};
const handleOk = () => {
formRef.value.validate().then((valid) => {
if (valid) {
@ -240,12 +303,17 @@
form,
showModal,
handleOk,
projectNameOptions,
formRef,
closeModal,
beforeUpload,
importChange,
filelists,
projectNameOptions,
contractTypeOptions,
districtOptions,
partyAOptions,
partyBOptions,
rules,
};
},
};

17
src/views/project/contractManage/api.ts

@ -3,6 +3,10 @@ import { defHttp } from '@/utils/http/axios';
enum Api {
root = '/platform/contractInfo',
list = '/platform/contractInfo/list',
getPartyInfo = '/platform/partyInfo/list',
getDistrictInfo = '/platform/districtInfo/queryAll',
getProjectInfo = '/platform/projectInfo/getNames',
getContractType = '/platform/contractType/list',
}
export function list(params: any) {
@ -24,3 +28,16 @@ export function update(data: any) {
export function removeByIds(ids: any) {
return defHttp.deleteWithMsg({ url: `${Api.root}/${ids.join(',')}` });
}
export function getPartyInfo() {
return defHttp.get({ url: Api.getPartyInfo });
}
export function getDistrictInfo() {
return defHttp.get({ url: Api.getDistrictInfo });
}
export function getProjectInfo() {
return defHttp.get({ url: Api.getProjectInfo });
}
export function getContractType() {
return defHttp.get({ url: Api.getContractType });
}

8
src/views/project/contractManage/detailDrawer.vue

@ -60,10 +60,7 @@
</a-row>
<a-row :gutter="[16, 16]">
<a-col :span="24">
<div
><span class="titleLabel">关联合同数量</span
>{{ detail.relatedContractAmount }}</div
>
<div><span class="titleLabel">所属项目名称</span>{{ detail.projectName }}</div>
</a-col>
</a-row>
<a-row :gutter="[16, 16]">
@ -101,11 +98,12 @@
partyA: '',
partyAPerson: '',
partyB: '',
partyBPerson: '',
contractPrice: '',
signDate: '',
startDate: '',
endDate: '',
relatedContractAmount: null,
// relatedContractAmount: null,
contractContent: '',
remark: '',
attachment: [],

9
src/views/project/contractManage/index.vue

@ -7,7 +7,14 @@
<template #bodyCell="{ column, record }">
<template v-if="column && record && column.key === 'action'">
<a-button type="link" @click="handleEdit(record.id)">编辑</a-button>
<a-button type="link" @click="handleDelete(record.id)">删除</a-button>
<a-popconfirm
title="确定要删除吗?"
ok-text="是"
cancel-text="否"
@confirm="handleDelete(record.id)"
>
<a-button type="link">删除</a-button>
</a-popconfirm>
<a-button type="link" @click="handleDetail(record.id)">详情</a-button>
</template>
</template>

152
src/views/project/projectManage/addModal.vue

@ -1,17 +1,6 @@
<template>
<a-modal v-model:open="visible" :title="title" @ok="handleOk" width="50%">
<a-form :model="form" layout="vertical">
<a-row :gutter="[16, 16]">
<a-col :span="24">
<a-form-item label="所属合同" name="contractName">
<a-select
v-model:value="form.contractName"
:options="projectNameOptions"
placeholder="请选择"
/>
</a-form-item>
</a-col>
</a-row>
<a-modal v-model:open="visible" :title="title" @ok="handleOk" @cancel="closeModal" width="50%">
<a-form :model="form" layout="vertical" :rules="rules" ref="formRef">
<a-row :gutter="[16, 16]">
<a-col :span="24">
<a-form-item label="项目名称" name="projectName">
@ -31,7 +20,7 @@
<a-form-item label="项目类别" name="projectType">
<a-select
v-model:value="form.projectType"
:options="projectNameOptions"
:options="projectTypeOptions"
placeholder="请选择"
/>
</a-form-item>
@ -42,7 +31,12 @@
<a-form-item label="故障大类" name="faultCategory">
<a-select
v-model:value="form.faultCategory"
:options="projectNameOptions"
:options="faultCategoryOptions"
:fieldNames="{
label: 'typeName',
value: 'id',
options: 'options',
}"
placeholder="请选择"
/>
</a-form-item>
@ -83,8 +77,10 @@
<a-col :span="24">
<a-form-item label="项目图标" name="icon">
<a-upload
v-model:file-list="form.icon"
action="https://www.mocky.io/v2/5cc8019d300000980a055e76"
:before-upload="beforeUploadIcon"
@change="importChangeIcon"
:file-list="iconLists"
:maxCount="1"
>
<a-button type="primary"> 上传 </a-button>
</a-upload>
@ -95,8 +91,10 @@
<a-col :span="24">
<a-form-item label="附件" name="attachment">
<a-upload
v-model:file-list="form.attachment"
action="https://www.mocky.io/v2/5cc8019d300000980a055e76"
:before-upload="beforeUpload"
@change="importChange"
:file-list="filelists"
:maxCount="1"
>
<a-button type="primary"> 上传 </a-button>
</a-upload>
@ -109,42 +107,54 @@
<script>
import { reactive, ref } from 'vue';
import { getInfo } from './api';
// import { message } from 'ant-design-vue';
import { getInfo, getFaultCategoryType, add, update } from './api';
import { message } from 'ant-design-vue';
export default {
setup() {
const title = ref('新增');
const formRef = ref();
const visible = ref(false);
const form = reactive({
contractName: '',
contractCode: '',
projectName: '',
projectCode: '',
projectType: '',
faultCategory: '',
projectType: null,
faultCategory: null,
orderTakingOverTime: '',
orderTakingCost: '',
handleOverTime: '',
handleCost: '',
projectContent: '',
icon: [],
attachment: [],
icon: null,
attachment: null,
id: null,
});
//
const projectNameOptions = [
const projectTypeOptions = [
{
value: '1',
label: 'a',
value: '交警',
},
{
value: '2',
label: 'b',
value: '公安',
},
{
value: '3',
label: 'c',
value: '环保',
},
{
value: '公路',
},
{
value: '其他',
},
];
const faultCategoryOptions = ref([]);
const getOptions = async () => {
const res = await getFaultCategoryType();
faultCategoryOptions.value = res.rows;
};
getOptions();
//
const showModal = async (type, id) => {
if (type == 1) {
title.value = '新增';
@ -158,12 +168,66 @@
}
visible.value = true;
};
const handleOk = () => {
console.log('Form Data:', form);
//
//
const rules = {
projectName: [{ required: true, message: '请输入' }],
projectCode: [{ required: true, message: '请输入' }],
projectType: [{ required: true, message: '请选择' }],
faultCategory: [{ required: true, message: '请选择' }],
orderTakingOverTime: [{ required: true, message: '请输入' }],
orderTakingCost: [{ required: true, message: '请输入' }],
handleOverTime: [{ required: true, message: '请输入' }],
handleCost: [{ required: true, message: '请输入' }],
projectContent: [{ required: true, message: '请输入' }],
};
//modal
const closeModal = () => {
formRef.value.resetFields();
visible.value = false;
};
//
const filelists = ref([]);
const beforeUpload = async (file) => {
form.attachment = file;
return false;
};
const importChange = ({ fileList }) => {
filelists.value = fileList;
};
const iconLists = ref([]);
const beforeUploadIcon = async (file) => {
form.attachment = file;
return false;
};
const importChangeIcon = ({ fileList }) => {
iconLists.value = fileList;
};
//
const handleOk = () => {
formRef.value.validate().then((valid) => {
if (valid) {
if (title.value == '新增') {
let params = {};
for (let i in form) {
params[i] = form[i];
}
add(params).then((_) => {
message.success('新增成功');
visible.value = false;
});
} else {
let params = {};
for (let i in form) {
params[i] = form[i];
}
update(params).then((_) => {
message.success('编辑成功');
visible.value = false;
});
}
}
});
};
return {
visible,
@ -171,7 +235,17 @@
form,
showModal,
handleOk,
projectNameOptions,
projectTypeOptions,
faultCategoryOptions,
rules,
formRef,
closeModal,
filelists,
iconLists,
beforeUpload,
beforeUploadIcon,
importChange,
importChangeIcon,
};
},
};

5
src/views/project/projectManage/api.ts

@ -3,6 +3,7 @@ import { defHttp } from '@/utils/http/axios';
enum Api {
root = '/platform/projectInfo',
list = '/platform/projectInfo/list',
getFaultCategoryType = '/platform/faultCategoryType/list',
}
export function list(params: any) {
@ -20,7 +21,9 @@ export function add(data: any) {
export function update(data: any) {
return defHttp.put({ url: Api.root, data });
}
export function getFaultCategoryType() {
return defHttp.get({ url: Api.getFaultCategoryType });
}
export function removeByIds(ids: any) {
return defHttp.deleteWithMsg({ url: `${Api.root}/${ids.join(',')}` });
}

17
src/views/project/projectManage/detailDrawer.vue

@ -39,23 +39,32 @@
<a-row :gutter="[16, 16]">
<a-col :span="24">
<div
><span class="titleLabel">接单超期时间</span>{{ detail.orderTakingOverTime }}</div
><span class="titleLabel">接单超期时间(小时)</span
>{{ detail.orderTakingOverTime }}</div
>
</a-col>
</a-row>
<a-row :gutter="[16, 16]">
<a-col :span="24">
<div><span class="titleLabel">接单超期扣款</span>{{ detail.orderTakingCost }}</div>
<div
><span class="titleLabel">接单超期扣款(/小时)</span
>{{ detail.orderTakingCost }}</div
>
</a-col>
</a-row>
<a-row :gutter="[16, 16]">
<a-col :span="24">
<div><span class="titleLabel">处理超期时间</span>{{ detail.handleOverTime }}</div>
<div
><span class="titleLabel">处理超期时间(小时)</span
>{{ detail.handleOverTime }}</div
>
</a-col>
</a-row>
<a-row :gutter="[16, 16]">
<a-col :span="24">
<div><span class="titleLabel">处理超期扣款</span>{{ detail.handleCost }}</div>
<div
><span class="titleLabel">处理超期扣款(/小时)</span>{{ detail.handleCost }}</div
>
</a-col>
</a-row>
<a-row :gutter="[16, 16]">

9
src/views/project/projectManage/index.vue

@ -9,7 +9,14 @@
<template #bodyCell="{ column, record }">
<template v-if="column && record && column.key === 'action'">
<a-button type="link" @click="handleEdit(record.id)">编辑</a-button>
<a-button type="link" @click="handleDelete(record.id)">删除</a-button>
<a-popconfirm
title="确定要删除吗?"
ok-text="是"
cancel-text="否"
@confirm="handleDelete(record.id)"
>
<a-button type="link">删除</a-button>
</a-popconfirm>
<a-button type="link" @click="handleDetail(record.id)">详情</a-button>
</template>
</template>

9
src/views/project/serviceManage/index.vue

@ -54,7 +54,14 @@
<template #bodyCell="{ column, record }">
<template v-if="column && record && column.key === 'action'">
<a-button type="link" @click="handleEdit(record.id)">编辑</a-button>
<a-button type="link" @click="handleDelete(record.id)">删除</a-button>
<a-popconfirm
title="确定要删除吗?"
ok-text="是"
cancel-text="否"
@confirm="handleDelete(record.id)"
>
<a-button type="link">删除</a-button>
</a-popconfirm>
</template>
</template>
</BasicTable>

Loading…
Cancel
Save