182 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
			
		
		
	
	
			182 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
| <template>
 | ||
|   <div class="normal-container view-cfg-box">
 | ||
|     <div class="header-box">
 | ||
|       <a-space>
 | ||
|         <a-input
 | ||
|           v-model:value="fieldName"
 | ||
|           placeholder="请输入字段名称"
 | ||
|           allow-clear
 | ||
|           style="width: 200px"
 | ||
|           @change="search"
 | ||
|         />
 | ||
|         <a-select
 | ||
|           placeholder="请选择数据表id"
 | ||
|           v-model:value="modularId"
 | ||
|           allow-clear
 | ||
|           style="width: 160px"
 | ||
|           @change="search"
 | ||
|         ></a-select>
 | ||
|         <a-button type="primary" @click="openCreateModal">新建</a-button>
 | ||
|       </a-space>
 | ||
|     </div>
 | ||
|     <div class="content-box">
 | ||
|       <a-table
 | ||
|         :columns="viewCfgCols"
 | ||
|         :data-source="dataList"
 | ||
|         :pagination="false"
 | ||
|         size="small"
 | ||
|         bordered
 | ||
|       >
 | ||
|         <template #bodyCell="{ column, record }">
 | ||
|           <template v-if="column.dataIndex === 'action'">
 | ||
|             <a-space>
 | ||
|               <a-button
 | ||
|                 type="link"
 | ||
|                 size="small"
 | ||
|                 @click="toGetDetail(record.field_id)"
 | ||
|                 >编辑</a-button
 | ||
|               >
 | ||
|               <a-popconfirm
 | ||
|                 title="确定删除?"
 | ||
|                 @confirm="toDelete(record.field_id)"
 | ||
|               >
 | ||
|                 <a-button type="link" size="small">删除</a-button>
 | ||
|               </a-popconfirm>
 | ||
|             </a-space>
 | ||
|           </template>
 | ||
|         </template>
 | ||
|       </a-table>
 | ||
|       <a-pagination
 | ||
|         v-model:current="pageState.page"
 | ||
|         :total="pageState.total"
 | ||
|         :page-size="pageState.perPage"
 | ||
|         :hide-on-single-page="false"
 | ||
|         size="small"
 | ||
|         class="pagination-box"
 | ||
|         @change="toGetFieldList"
 | ||
|       />
 | ||
|     </div>
 | ||
|     <CreateModal
 | ||
|       :width="700"
 | ||
|       :open="modalState.visible"
 | ||
|       :title="modalState.title"
 | ||
|       :type="modalState.type"
 | ||
|       :data="modalState.data"
 | ||
|       @cancel="modalState.visible = false"
 | ||
|       @ok="toSave"
 | ||
|     />
 | ||
|   </div>
 | ||
| </template>
 | ||
| 
 | ||
| <script setup>
 | ||
| import { onMounted, ref, reactive } from "vue";
 | ||
| import { viewCfgCols } from "./config";
 | ||
| import {
 | ||
|   getFieldList,
 | ||
|   deleteField,
 | ||
|   saveField,
 | ||
|   getFieldDetail,
 | ||
| } from "./service";
 | ||
| import CreateModal from "./components/create-modal.vue";
 | ||
| import { message } from "ant-design-vue";
 | ||
| 
 | ||
| const listLoading = ref(false);
 | ||
| const saveLoading = ref(false);
 | ||
| const dataList = ref([]);
 | ||
| const fieldName = ref("");
 | ||
| const modularId = ref("");
 | ||
| const modalState = reactive({
 | ||
|   title: undefined,
 | ||
|   visible: false,
 | ||
|   type: "", // add - 新建,edit - 编辑
 | ||
|   data: {},
 | ||
| });
 | ||
| const pageState = reactive({
 | ||
|   page: 1,
 | ||
|   perPage: 20,
 | ||
|   total: 0,
 | ||
| });
 | ||
| 
 | ||
| onMounted(() => {
 | ||
|   toGetFieldList();
 | ||
| });
 | ||
| 
 | ||
| const toGetFieldList = () => {
 | ||
|   listLoading.value = true;
 | ||
|   getFieldList({
 | ||
|     fieldName: fieldName.value,
 | ||
|     modularId: modularId.value,
 | ||
|     page: pageState.page,
 | ||
|     perPage: pageState.perPage,
 | ||
|   })
 | ||
|     .then((res) => {
 | ||
|       dataList.value = res.data.list;
 | ||
|       pageState.total = res.data.total;
 | ||
|     })
 | ||
|     .finally(() => {
 | ||
|       listLoading.value = false;
 | ||
|     });
 | ||
| };
 | ||
| 
 | ||
| // 保存
 | ||
| const toSave = (data) => {
 | ||
|   saveLoading.value = true;
 | ||
|   saveField(data)
 | ||
|     .then(() => {
 | ||
|       message.success("保存成功");
 | ||
|     })
 | ||
|     .finally(() => {
 | ||
|       saveLoading.value = false;
 | ||
|     });
 | ||
| };
 | ||
| 
 | ||
| // 获取详情
 | ||
| const toGetDetail = (fieldId) => {
 | ||
|   modalState.visible = true;
 | ||
|   modalState.title = "编辑";
 | ||
|   modalState.type = "edit";
 | ||
|   getFieldDetail({ fieldId }).then((res) => {
 | ||
|     modalState.data = res.data;
 | ||
|   });
 | ||
| };
 | ||
| 
 | ||
| // 删除
 | ||
| const toDelete = (fieldId) => {
 | ||
|   deleteField({ field_id: fieldId }).then(() => {
 | ||
|     message.success("删除成功");
 | ||
|     search();
 | ||
|   });
 | ||
| };
 | ||
| 
 | ||
| // 点击新建
 | ||
| const openCreateModal = () => {
 | ||
|   modalState.visible = true;
 | ||
|   modalState.title = "新建";
 | ||
|   modalState.type = "add";
 | ||
|   modalState.data = {};
 | ||
| };
 | ||
| 
 | ||
| const handleEdit = (record) => {
 | ||
|   console.log(record);
 | ||
| };
 | ||
| 
 | ||
| const search = () => {
 | ||
|   pageState.page = 1;
 | ||
|   toGetFieldList();
 | ||
| };
 | ||
| </script>
 | ||
| 
 | ||
| <style lang="less" scoped>
 | ||
| .header-box {
 | ||
|   margin-bottom: 10px;
 | ||
| }
 | ||
| 
 | ||
| .@{ant-prefix}-table-wrapper {
 | ||
|   margin-bottom: 10px;
 | ||
| }
 | ||
| 
 | ||
| .pagination-box {
 | ||
|   text-align: center;
 | ||
| }
 | ||
| </style>
 | 
