Explorar o código

feat(组件): 修改bug

tangning %!s(int64=2) %!d(string=hai) anos
pai
achega
3474f6fcf6

+ 8 - 1
src/views/customer/modal/InfoModal.vue

@@ -42,6 +42,12 @@
       const title = ref('新增客户')
       const schemas: FormSchema[] = [
         {
+          field: 'id',
+          component: 'Input',
+          show:false,
+          label: 'id',
+          required: false,
+        },{
           component: 'Divider',
           label: '基本信息',
           colProps: {
@@ -227,6 +233,7 @@
       const handleSubmit = async () => {
         try {
           const params = await validate();
+          console.log('params',params)
           const apiData = {
             ...params,
             floorLogo: params.floorLogo && params.floorLogo[0],
@@ -236,7 +243,7 @@
           console.log(modelRef.value);
           let tips: string;
           if (modelRef.value) {
-            apiData.id = modelRef.value.id;
+            // apiData.id = modelRef.value.id;
             await companyUpdate(apiData);
             tips = '修改成功。';
           } else {

+ 7 - 0
src/views/operate/components/new/addModal.vue

@@ -49,6 +49,13 @@
           label: 'id',
           required: false,
         },{
+          field: 'language',
+          component: 'Input',
+          show:false,
+          label: 'language',
+          defaultValue:'cn',
+          required: false,
+        },{
             field: 'title',
             component: 'Input',
             required: true,

+ 263 - 235
src/views/operate/newsList.vue

@@ -1,9 +1,19 @@
  <template>
-  <div>
-    <BasicTable @register="registerTable">
-      <template #toolbar>
-        <a-button type="primary" @click="openModal(true,{})" v-if="getCheckPerm('news-add')"> 新增新闻</a-button>
-      </template>
+  <PageWrapper contentBackground>
+    <template #footer>
+      <a-tabs v-model:activeKey="language" @change="changeTable">
+        <a-tab-pane key="cn" tab="中文" />
+        <a-tab-pane key="en" tab="English" />
+      </a-tabs>
+    </template>
+
+    <div class="desc-wrap-BasicTable">
+      <BasicTable @register="registerTable">
+        <template #toolbar>
+          <a-button type="primary" @click="openModal(true, {language})" v-if="getCheckPerm('news-add')">
+            新增新闻</a-button
+          >
+        </template>
         <template #action="{ record }">
           <TableAction
             stopButtonPropagation
@@ -11,22 +21,25 @@
               {
                 label: '撤回',
                 //icon: 'icon-park-outline:folder-withdrawal-one',
-                ifShow:getCheckPerm('news-withdraw') && record.isPublic == 1,
+                ifShow: getCheckPerm('news-withdraw') && record.isPublic == 1,
                 onClick: handleWithdraw.bind(null, record),
-              },{
+              },
+              {
                 label: '发布',
                 //icon: 'arcticons:efa-publish',
-                ifShow:getCheckPerm('news-publish') && record.isPublic == 0,
+                ifShow: getCheckPerm('news-publish') && record.isPublic == 0,
                 onClick: handlePublish.bind(null, record),
-              },{
+              },
+              {
                 label: '编辑',
                 //icon: 'ep:edit',
-                ifShow:getCheckPerm('news-edit') && record.isPublic == 0,
+                ifShow: getCheckPerm('news-edit') && record.isPublic == 0,
                 onClick: handleEdit.bind(null, record),
-              },{
+              },
+              {
                 label: '删除',
                 //icon: 'ic:outline-delete-outline',
-                ifShow:getCheckPerm('news-delete'),
+                ifShow: getCheckPerm('news-delete'),
                 popConfirm: {
                   title: '是否确认删除',
                   confirm: handleDelete.bind(null, record),
@@ -34,244 +47,259 @@
               },
             ]"
           />
-      </template>
-    </BasicTable>
+        </template>
+      </BasicTable>
+    </div>
     <addNewModal @register="register" @update="reload" />
-
-  </div>
+  </PageWrapper>
 </template>
 <script lang="ts">
-  import { defineComponent, h } from 'vue';
-  import { BasicTable, useTable, TableAction, BasicColumn, TableImg, FormProps } from '/@/components/Table';
-  import { PageWrapper } from '/@/components/Page';
-  import { Time } from '/@/components/Time';
-  import { ListApi, NewDisplay, NewPutTop, NewPublicNews, newDelete } from '/@/api/operate'
-  import { useModal } from '/@/components/Modal';
-  import { Descriptions } from 'ant-design-vue';
-  import { useI18n } from '/@/hooks/web/useI18n';
-  import { useMessage } from '/@/hooks/web/useMessage';
-  import { Switch } from 'ant-design-vue';
-  import addNewModal from './components/new/addModal.vue'
-  import { usePermissionStore } from '/@/store/modules/permission';
-  export default defineComponent({
-    components: { 
-      BasicTable, 
-      TableAction, 
-      PageWrapper,
-      TableImg,
-      addNewModal,
-      [Descriptions.name]: Descriptions,
-      [Descriptions.Item.name]: Descriptions.Item,
-    },
-    setup() {
-      const { t } = useI18n();
-      const { createMessage } = useMessage();
-      const permissionStore = usePermissionStore();
-      const { getCheckPerm } = permissionStore;
-      const [register, { openModal }] = useModal();
-      const columns: BasicColumn[] = [
-        
-        {
-          title: '新闻标题',
-          dataIndex: 'title',
-          ellipsis: true,
-          width: 250,
+import { defineComponent, h, ref } from 'vue';
+import {
+  BasicTable,
+  useTable,
+  TableAction,
+  BasicColumn,
+  TableImg,
+  FormProps,
+} from '/@/components/Table';
+import { PageWrapper } from '/@/components/Page';
+import { Time } from '/@/components/Time';
+import { ListApi, NewDisplay, NewPutTop, NewPublicNews, newDelete } from '/@/api/operate';
+import {  Descriptions, Switch, Tabs } from 'ant-design-vue';
+import { useModal } from '/@/components/Modal';
+import { useI18n } from '/@/hooks/web/useI18n';
+import { useMessage } from '/@/hooks/web/useMessage';
+import addNewModal from './components/new/addModal.vue';
+import { usePermissionStore } from '/@/store/modules/permission';
+export default defineComponent({
+  components: {
+    BasicTable,
+    TableAction,
+    PageWrapper,
+    TableImg,
+    addNewModal,
+    [Descriptions.name]: Descriptions,
+    [Descriptions.Item.name]: Descriptions.Item,
+    [Tabs.name]: Tabs,
+    [Tabs.TabPane.name]: Tabs.TabPane,
+  },
+  setup() {
+    const { t } = useI18n();
+    const { createMessage } = useMessage();
+    const permissionStore = usePermissionStore();
+    const { getCheckPerm } = permissionStore;
+    const [register, { openModal }] = useModal();
+    const language = ref<string>('cn'); //未处理,0已处理(默认1)
+    const columns: BasicColumn[] = [
+      {
+        title: '新闻标题',
+        dataIndex: 'title',
+        ellipsis: true,
+        width: 250,
+      },
+      {
+        title: '来源',
+        dataIndex: 'source',
+        ellipsis: true,
+        width: 120,
+      },
+      {
+        title: '类型',
+        dataIndex: 'newType',
+        ellipsis: true,
+        width: 80,
+        customRender: ({ record }) => {
+          return record.newType == 1 ? '链接' : '图文';
         },
-        {
-          title: '来源',
-          dataIndex: 'source',
-          ellipsis: true,
-          width: 120,
+      },
+      {
+        title: '创建人',
+        ellipsis: true,
+        dataIndex: 'creater',
+        width: 80,
+      },
+      {
+        title: '创建时间',
+        dataIndex: 'createTime',
+        width: 150,
+        customRender: ({ record }) => {
+          return (
+            record.createTime &&
+            h(Time, {
+              value: record.createTime,
+              mode: 'datetime',
+            })
+          );
         },
-        {
-          title: '类型',
-          dataIndex: 'newType',
-          ellipsis: true,
-          width: 80,
-          customRender: ({ record }) => {
-            return  record.newType == 1?'链接':'图文'
-          },
+      },
+      {
+        title: '发布时间',
+        dataIndex: 'publicTime',
+        width: 150,
+        customRender: ({ record }) => {
+          return (
+            record.publicTime &&
+            h(Time, {
+              value: record.publicTime,
+              mode: 'datetime',
+            })
+          );
         },
-        {
-          title: '创建人',
-          ellipsis: true,
-          dataIndex: 'creater',
-          width: 80,
+      },
+      {
+        title: '是否显示',
+        dataIndex: 'display',
+        width: 80,
+        customRender: ({ record }) => {
+          if (!Reflect.has(record, 'pendingStatus')) {
+            record.pendingStatus = false;
+          }
+          return h(Switch, {
+            checked: record.display === 1,
+            checkedChildren: '是',
+            unCheckedChildren: '否',
+            loading: false,
+            onChange: async (checked: boolean) => {
+              record.pendingStatus = true;
+              const id: string = record.id || '';
+              const newStatus = checked ? 1 : 0;
+              Reflect.set(record, 'display', newStatus);
+              await NewDisplay({ id: id, display: newStatus });
+              createMessage.success(t('common.optSuccess'));
+              // reload()
+            },
+          });
         },
-        {
-          title: '创建时间',
-          dataIndex: 'createTime',
-          width: 150,
-          customRender: ({ record }) => {
-            return (
-              record.createTime &&
-              h(Time, {
-                value: record.createTime,
-                mode: 'datetime',
-              })
-            );
-          },
+      },
+      {
+        title: '置顶',
+        dataIndex: 'isTop',
+        width: 80,
+        customRender: ({ record }) => {
+          if (!Reflect.has(record, 'pendingStatus')) {
+            record.pendingStatus = false;
+          }
+          return h(Switch, {
+            checked: record.isTop === 1,
+            checkedChildren: '是',
+            unCheckedChildren: '否',
+            loading: false,
+            onChange: async (checked: boolean) => {
+              record.pendingStatus = true;
+              const id: string = record.id || '';
+              const newStatus = checked ? 1 : 0;
+              // Reflect.set(record, 'isOnSale', newStatus);
+              await NewPutTop({ id, isTop: newStatus });
+              createMessage.success(t('common.optSuccess'));
+              reload();
+            },
+          });
         },
+      },
+    ];
+    const searchForm: Partial<FormProps> = {
+      labelWidth: 100,
+      autoSubmitOnEnter: true,
+      schemas: [
         {
-          title: '发布时间',
-          dataIndex: 'publicTime',
-          width: 150,
-          customRender: ({ record }) => {
-            return (
-              record.publicTime &&
-              h(Time, {
-                value: record.publicTime,
-                mode: 'datetime',
-              })
-            );
+          field: 'ctivated',
+          label: t('routes.operate.releaseTime'),
+          component: 'RangePicker',
+          componentProps: {
+            maxLength: 100,
+            format: 'YYYY-MM-DD',
+            valueFormat: 'YYYY-MM-DD',
+            showTime: true,
           },
-        },
-        {
-          title: '是否显示',
-          dataIndex: 'display',
-          width: 80,
-          customRender: ({ record }) => {
-            if (!Reflect.has(record, 'pendingStatus')) {
-              record.pendingStatus = false;
-            }
-            return h(Switch, {
-              checked: record.display === 1,
-              checkedChildren: '是',
-              unCheckedChildren: '否',
-              loading: false,
-              onChange: async (checked: boolean) => {
-                record.pendingStatus = true;
-                const id: string = record.id || '';
-                const newStatus = checked ? 1 : 0;
-                Reflect.set(record, 'display', newStatus);
-                await NewDisplay({id:id,display:newStatus});
-                createMessage.success(t('common.optSuccess'));
-                // reload()
-              },
-            });
+          colProps: {
+            xl: 11,
+            xxl: 11,
           },
         },
         {
-          title: '置顶',
-          dataIndex: 'isTop',
-          width: 80,
-          customRender: ({ record }) => {
-            if (!Reflect.has(record, 'pendingStatus')) {
-              record.pendingStatus = false;
-            }
-            return h(Switch, {
-              checked: record.isTop === 1,
-              checkedChildren: '是',
-              unCheckedChildren: '否',
-              loading: false,
-              onChange: async (checked: boolean) => {
-                record.pendingStatus = true;
-                const id: string = record.id || '';
-                const newStatus = checked ? 1 : 0;
-                // Reflect.set(record, 'isOnSale', newStatus);
-                await NewPutTop({id,isTop:newStatus});
-                createMessage.success(t('common.optSuccess'));
-                reload()
-              },
-            });
-          },
-        },
-      ];
-      const searchForm: Partial<FormProps> = {
-        labelWidth: 100,
-        autoSubmitOnEnter:true,
-        schemas: [
-          {
-            field: 'ctivated',
-            label: t('routes.operate.releaseTime'),
-            component: 'RangePicker',
-            componentProps: {
-              maxLength: 100,
-              format: 'YYYY-MM-DD',
-              valueFormat:'YYYY-MM-DD',
-              showTime: true,
-            },
-            colProps: {
-              xl: 11,
-              xxl: 11,
-            },
-          },
-          {
-            field: 'title',
-            label: t('routes.operate.newsTitle'),
-            component: 'Input',
-            colProps: {
-              xl: 6,
-              xxl: 6,
-            },
+          field: 'title',
+          label: t('routes.operate.newsTitle'),
+          component: 'Input',
+          colProps: {
+            xl: 6,
+            xxl: 6,
           },
-        ],
-      };
-      const [registerTable,{reload}] = useTable({
-        api: ListApi,
-        title: '新闻列表',
-        columns: columns,
-        useSearchForm: true,
-        formConfig: searchForm,
-        showTableSetting: true,
-        showIndexColumn:false,
-        rowKey: 'id',
-        fetchSetting: {
-          pageField: 'pageNum',
-          sizeField: 'pageSize',
-          listField: 'list',
-          totalField: 'total',
         },
-        beforeFetch:(T)=>{
-          if(T.ctivated){
-            T.publicTimeStart = T.ctivated[0]
-            T.publicTimeEnd = T.ctivated[1]
-          }
-          return T
-        },
-        actionColumn: {
-          width: 220,
-          title: '操作',
-          dataIndex: 'action',
-          slots: { customRender: 'action' },
-        },
-        canResize:true,
-      });
-      async function handleDelete(record: Recordable) {
-        await newDelete({id:record.id})
-        createMessage.success(t('common.optSuccess'));
-        reload();
-      }
-      async function handlePublish(record: Recordable) {
-        console.log('点击了发布', record);
-        await NewPublicNews({id:record.id,isPublic:1})
-        createMessage.success(t('common.optSuccess'));
+      ],
+    };
+    const [registerTable, { reload }] = useTable({
+      api: ListApi,
+      title: '新闻列表',
+      columns: columns,
+      useSearchForm: true,
+      formConfig: searchForm,
+      showTableSetting: true,
+      showIndexColumn: false,
+      searchInfo: { language },
+      rowKey: 'id',
+      fetchSetting: {
+        pageField: 'pageNum',
+        sizeField: 'pageSize',
+        listField: 'list',
+        totalField: 'total',
+      },
+      beforeFetch: (T) => {
+        if (T.ctivated) {
+          T.publicTimeStart = T.ctivated[0];
+          T.publicTimeEnd = T.ctivated[1];
+        }
+        return T;
+      },
+      actionColumn: {
+        width: 220,
+        title: '操作',
+        dataIndex: 'action',
+        slots: { customRender: 'action' },
+      },
+      canResize: true,
+    });
+    async function handleDelete(record: Recordable) {
+      await newDelete({ id: record.id });
+      createMessage.success(t('common.optSuccess'));
+      reload();
+    }
+    async function handlePublish(record: Recordable) {
+      console.log('点击了发布', record);
+      await NewPublicNews({ id: record.id, isPublic: 1 });
+      createMessage.success(t('common.optSuccess'));
+      reload();
+    }
+    function handleEdit(record: Recordable) {
+      console.log('点击了编辑', record);
+      openModal(true, {...record,language});
+    }
+    async function handleWithdraw(record: Recordable) {
+      await NewPublicNews({ id: record.id, isPublic: 0 });
+      createMessage.success(t('common.optSuccess'));
+      reload();
+    }
+    function changeTable(val: string) {
+        language.value = val;
         reload();
       }
-      function handleEdit(record: Recordable) {
-        console.log('点击了编辑', record);
-        openModal(true,record)
-      }
-      async function handleWithdraw(record: Recordable) {
-        await NewPublicNews({id:record.id,isPublic:0})
-        createMessage.success(t('common.optSuccess'));
-        reload();
-      }
-      function hendleAddNew(){
-        console.log('新增新闻');
-      }
-      return {
-        registerTable,
-        handleDelete,
-        handleEdit,
-        handleWithdraw,
-        handlePublish,
-        hendleAddNew,
-        reload,
-        register,
-        openModal,
-        getCheckPerm,
-      };
-    },
-  });
+    function hendleAddNew() {
+      console.log('新增新闻');
+    }
+    return {
+      registerTable,
+      handleDelete,
+      handleEdit,
+      handleWithdraw,
+      handlePublish,
+      hendleAddNew,
+      changeTable,
+      reload,
+      language,
+      register,
+      openModal,
+      getCheckPerm,
+    };
+  },
+});
 </script>

+ 5 - 1
src/views/statistics/components/condition.vue

@@ -12,7 +12,7 @@
     </div>
 
     <div class="selct" style="display: inline-block; margin-right: 15px">
-      <RangePicker v-model:value="selectTime" valueFormat="YYYY-MM-DD" format="YYYY-MM-DD" @change="handleTime"/>
+      <RangePicker v-model:value="selectTime" valueFormat="YYYY-MM-DD" :disabled-date="disabledDate" format="YYYY-MM-DD" @change="handleTime"/>
     </div>
 
     <div class="selct" style="display: inline-block">
@@ -62,6 +62,10 @@ const options = ref<SelectProps['options']>([
   },
 ]);
 const type = ref('0');
+const disabledDate = (current: Dayjs) => {
+        // Can not select days before today and today
+        return current && current < dayjs().subtract(2,'year').endOf('day');
+};
 const typeOptions = ref<SelectProps['options']>([
   {
     value: '0',

+ 1 - 1
src/views/sys/error-log/index.vue

@@ -154,7 +154,7 @@ export default defineComponent({
       () => errorLogStore.getErrorLogInfoList,
       (list) => {
         nextTick(() => {
-          setTableData(cloneDeep(list));
+          // setTableData(cloneDeep(list));
         });
       },
       {