#
Junjie
2024-07-09 0b86f0390c17ca06758cc436596774e56687a875
zy-asrs-admin/src/views/base/mat/index.vue
@@ -1,11 +1,10 @@
<script setup>
import { getCurrentInstance, ref, computed, reactive } from 'vue';
import { useRouter } from "vue-router";
import { get, post, postBlob } from '@/utils/request.js'
import { get, post, postBlob, postForm } from '@/utils/request.js'
import { message, Modal } from 'ant-design-vue';
import { logout } from '@/config.js';
import EditView from './edit.vue'
import FieldView from './field.vue'
import { formatMessage } from '@/utils/localeUtils.js';
const context = getCurrentInstance()?.appContext.config.globalProperties;
@@ -16,12 +15,31 @@
let pageSize = 10;
const searchInput = ref("")
const editChild = ref(null)
const fieldChild = ref(null)
let tableData = ref([]);
getColumns();
getPage();
const columns = [
const state = reactive({
  selectedRowKeys: [],
  loading: false,
  columns: []
});
const hasSelected = computed(() => state.selectedRowKeys.length > 0);
const start = () => {
  state.loading = true;
  // ajax request after empty completing
  setTimeout(() => {
    state.loading = false;
    state.selectedRowKeys = [];
  }, 1000);
};
const onSelectChange = selectedRowKeys => {
  // console.log('selectedRowKeys changed: ', selectedRowKeys);
  state.selectedRowKeys = selectedRowKeys;
};
state.columns = [
  {
    title: formatMessage('db.man_mat.tag_id', '所属归类'),
    dataIndex: 'tagId$',
@@ -222,34 +240,44 @@
    ellipsis: true,
  },
  {
];
//加载扩展字段
async function getColumns() {
  let fieldResp = await post('/api/matField/list', {})
  let fieldResult = fieldResp.data;
  let tmp = state.columns;
  if (fieldResult.code == 200) {
    let data = fieldResult.data;
    data.forEach((item) => {
      tmp.push({
        title: formatMessage(item.language, item.describe),
        name: item.name,
        dataIndex: item.name,
        key: item.name,
        width: 140,
      })
    })
    tmp.push({
    title: formatMessage('common.operation', '操作'),
    name: 'oper',
    dataIndex: 'oper',
    key: 'oper',
    width: 140,
  },
];
    })
const state = reactive({
  selectedRowKeys: [],
  loading: false,
});
const hasSelected = computed(() => state.selectedRowKeys.length > 0);
const start = () => {
  state.loading = true;
  // ajax request after empty completing
  setTimeout(() => {
    state.loading = false;
    state.selectedRowKeys = [];
  }, 1000);
};
const onSelectChange = selectedRowKeys => {
  // console.log('selectedRowKeys changed: ', selectedRowKeys);
  state.selectedRowKeys = selectedRowKeys;
};
    state.columns = tmp;
  } else if (result.code === 401) {
    message.error(result.msg);
    logout()
  } else {
    message.error(result.msg);
  }
}
function getPage() {
async function getPage() {
  post('/api/mat/page', {
    current: currentPage,
    pageSize: pageSize,
@@ -272,10 +300,6 @@
  editChild.value.open = true;
  editChild.value.formData = item == null ? editChild.value.initFormData : JSON.parse(JSON.stringify(item));
  editChild.value.isSave = item == null;
}
const handleField = () => {
  fieldChild.value.open = true;
}
const handleDel = (rows) => {
@@ -326,6 +350,15 @@
  getPage()
}
const matFieldList = ref(null);
MatFieldQuery();
function MatFieldQuery() {
  post('/api/matField/list', {}).then(resp => {
    let result = resp.data;
    matFieldList.value = result.data;
  })
}
</script>
<script>
@@ -336,21 +369,19 @@
<template>
  <div>
    <FieldView ref="fieldChild" @tableReload="handleTableReload" />
    <EditView ref="editChild" @tableReload="handleTableReload" />
    <div class="table-header">
      <a-input-search v-model:value="searchInput" :placeholder="formatMessage('page.input', '请输入')"
        style="width: 200px;" @search="onSearch" />
      <div class="table-header-right">
        <a-button @click="handleEdit(null)" type="primary">{{ formatMessage('page.add', '添加') }}</a-button>
        <a-button @click="handleField" type="primary">{{ formatMessage('page.add.field', '添加字段') }}</a-button>
        <a-button @click="handleExport">{{ formatMessage('page.export', '导出') }}</a-button>
      </div>
    </div>
    <a-table :row-selection="{ selectedRowKeys: state.selectedRowKeys, onChange: onSelectChange }"
      :data-source="tableData.records" :defaultExpandAllRows="false" :key="TABLE_KEY" rowKey="id"
      :pagination="{ total: tableData.total, onChange: onPageChange }"
      :scroll="{ y: 768, scrollToFirstRowOnChange: true }" :columns="columns">
      :scroll="{ y: 768, scrollToFirstRowOnChange: true }" :columns="state.columns">
      <template #bodyCell="{ column, text, record }">
        <template v-if="column.dataIndex === 'oper'">
          <div style="display: flex;justify-content: space-evenly;">