wenhongquan 1 год назад
Родитель
Сommit
3611801f1b

+ 1 - 1
src/components/HomeComponents/lineEcharts.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="lineEchartsClass">
     <div class="titleBg">
-      <div class="titleFont">驿站库存量</div>
+      <div class="titleFont">驿站出入库</div>
     </div>
     <div
       class="divContent"

+ 1 - 1
src/components/HomeStatics/lineEcharts.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="lineEchartsClass" style="padding-left: 1vw; padding-top: 1.5vh">
-    <div class="title">驿站库存量</div>
+    <div class="title">驿站出入库</div>
     <div ref="linechart" style="width: 100%; height: 90%"></div>
   </div>
 </template>

+ 350 - 243
src/views/system/bag/index.vue

@@ -1,21 +1,55 @@
 <template>
   <div class="p-2">
-    <transition :enter-active-class="proxy?.animate.searchAnimate.enter"
-      :leave-active-class="proxy?.animate.searchAnimate.leave">
+    <transition
+      :enter-active-class="proxy?.animate.searchAnimate.enter"
+      :leave-active-class="proxy?.animate.searchAnimate.leave"
+    >
       <div class="search" v-show="showSearch">
-        <el-form :model="queryParams" ref="queryFormRef" :inline="true" label-width="68px">
+        <el-form
+          :model="queryParams"
+          ref="queryFormRef"
+          :inline="true"
+          label-width="68px"
+        >
           <el-form-item label="快递单号" prop="bagNumber">
-            <el-input v-model="queryParams.bagNumber" placeholder="请输入快递单号" clearable style="width: 240px"
-              @keyup.enter="handleQuery" />
+            <el-input
+              v-model="queryParams.bagNumber"
+              placeholder="请输入快递单号"
+              clearable
+              style="width: 240px"
+              @keyup.enter="handleQuery"
+            />
           </el-form-item>
           <el-form-item label="出库状态" prop="bagOutTime">
-            <el-select v-model="queryParams.bagStatus" placeholder="出库状态" clearable size="default" style="width: 240px">
-              <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
+            <el-select
+              v-model="queryParams.bagStatus"
+              placeholder="出库状态"
+              clearable
+              size="default"
+              style="width: 240px"
+            >
+              <el-option
+                v-for="item in options"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value"
+              />
             </el-select>
           </el-form-item>
           <el-form-item label="所在站点" prop="bagSite">
-            <el-select v-model="queryParams.bagSite" placeholder="所在站点" clearable size="default" style="width: 240px">
-              <el-option v-for="item in siteList" :key="item.id" :label="item.siteName" :value="item.id" />
+            <el-select
+              v-model="queryParams.bagSite"
+              placeholder="所在站点"
+              clearable
+              size="default"
+              style="width: 240px"
+            >
+              <el-option
+                v-for="item in siteList"
+                :key="item.id"
+                :label="item.siteName"
+                :value="item.id"
+              />
             </el-select>
           </el-form-item>
           <el-form-item>
@@ -30,26 +64,59 @@
       <template #header>
         <el-row :gutter="10" class="mb8">
           <el-col :span="1.5">
-            <el-button type="primary" plain icon="Plus" @click="handleAdd"
-              v-hasPermi="['system:bag:add']">新增</el-button>
+            <el-button
+              type="primary"
+              plain
+              icon="Plus"
+              @click="handleAdd"
+              v-hasPermi="['system:bag:add']"
+              >新增</el-button
+            >
           </el-col>
           <el-col :span="1.5">
-            <el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()"
-              v-hasPermi="['system:bag:edit']">修改</el-button>
+            <el-button
+              type="success"
+              plain
+              icon="Edit"
+              :disabled="single"
+              @click="handleUpdate()"
+              v-hasPermi="['system:bag:edit']"
+              >修改</el-button
+            >
           </el-col>
           <el-col :span="1.5">
-            <el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()"
-              v-hasPermi="['system:bag:remove']">删除</el-button>
+            <el-button
+              type="danger"
+              plain
+              icon="Delete"
+              :disabled="multiple"
+              @click="handleDelete()"
+              v-hasPermi="['system:bag:remove']"
+              >删除</el-button
+            >
           </el-col>
           <el-col :span="1.5">
-            <el-button type="warning" plain icon="Download" @click="handleExport"
-              v-hasPermi="['system:bag:export']">导出</el-button>
+            <el-button
+              type="warning"
+              plain
+              icon="Download"
+              @click="handleExport"
+              v-hasPermi="['system:bag:export']"
+              >导出</el-button
+            >
           </el-col>
-          <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
+          <right-toolbar
+            v-model:showSearch="showSearch"
+            @queryTable="getList"
+          ></right-toolbar>
         </el-row>
       </template>
 
-      <el-table v-loading="loading" :data="bagList" @selection-change="handleSelectionChange">
+      <el-table
+        v-loading="loading"
+        :data="bagList"
+        @selection-change="handleSelectionChange"
+      >
         <el-table-column type="selection" width="55" align="center" />
         <el-table-column label="id" align="center" prop="id" v-if="true" />
         <el-table-column label="快递公司" align="center" prop="bagCompany" />
@@ -68,34 +135,58 @@
         </el-table-column>
         <el-table-column label="入库时间" align="center" prop="createdAt" width="180">
           <template #default="scope">
-            <span>{{ parseTime(scope.row.createdAt, '{y}-{m}-{d}') }}</span>
+            <span>{{ parseTime(scope.row.createdAt, "{y}-{m}-{d}") }}</span>
           </template>
         </el-table-column>
         <el-table-column label="出库时间" align="center" prop="bagOutTime" width="180">
           <template #default="scope">
-            <span>{{ parseTime(scope.row.bagOutTime, '{y}-{m}-{d}') }}</span>
+            <span>{{ parseTime(scope.row.bagOutTime, "{y}-{m}-{d}") }}</span>
           </template>
         </el-table-column>
         <el-table-column label="异常原因" align="center" prop="bagReason" />
-        <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <el-table-column
+          label="操作"
+          align="center"
+          class-name="small-padding fixed-width"
+        >
           <template #default="scope">
             <el-tooltip content="修改" placement="top">
-              <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)"
-                v-hasPermi="['system:bag:edit']"></el-button>
+              <el-button
+                link
+                type="primary"
+                icon="Edit"
+                @click="handleUpdate(scope.row)"
+                v-hasPermi="['system:bag:edit']"
+              ></el-button>
             </el-tooltip>
             <el-tooltip content="删除" placement="top">
-              <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)"
-                v-hasPermi="['system:bag:remove']"></el-button>
+              <el-button
+                link
+                type="primary"
+                icon="Delete"
+                @click="handleDelete(scope.row)"
+                v-hasPermi="['system:bag:remove']"
+              ></el-button>
             </el-tooltip>
           </template>
         </el-table-column>
       </el-table>
 
-      <pagination v-show="total>0" :total="total" v-model:page="queryParams.pageNum"
-        v-model:limit="queryParams.pageSize" @pagination="getList" />
+      <pagination
+        v-show="total > 0"
+        :total="total"
+        v-model:page="queryParams.pageNum"
+        v-model:limit="queryParams.pageSize"
+        @pagination="getList"
+      />
     </el-card>
     <!-- 添加或修改【请填写功能名称】对话框 -->
-    <el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
+    <el-dialog
+      :title="dialog.title"
+      v-model="dialog.visible"
+      width="500px"
+      append-to-body
+    >
       <el-form ref="bagFormRef" :model="form" :rules="rules" label-width="80px">
         <el-form-item label="快递公司" prop="bagCompany">
           <el-input v-model="form.bagCompany" placeholder="请输入快递公司" />
@@ -104,8 +195,13 @@
           <el-input v-model="form.bagNumber" placeholder="请输入快递单号" />
         </el-form-item>
         <el-form-item label="出库时间" prop="bagOutTime">
-          <el-date-picker clearable v-model="form.bagOutTime" type="datetime" value-format="YYYY-MM-DD HH:mm:ss"
-            placeholder="请选择出库时间">
+          <el-date-picker
+            clearable
+            v-model="form.bagOutTime"
+            type="datetime"
+            value-format="YYYY-MM-DD HH:mm:ss"
+            placeholder="请选择出库时间"
+          >
           </el-date-picker>
         </el-form-item>
         <el-form-item label="货架号" prop="bagLocal">
@@ -115,30 +211,50 @@
           <el-input v-model="form.bagLocal2" placeholder="请输入层号" />
         </el-form-item>
         <el-form-item label="入库时间,停用" prop="bagInTime">
-          <el-date-picker clearable v-model="form.bagInTime" type="datetime" value-format="YYYY-MM-DD HH:mm:ss"
-            placeholder="请选择入库时间,停用">
+          <el-date-picker
+            clearable
+            v-model="form.bagInTime"
+            type="datetime"
+            value-format="YYYY-MM-DD HH:mm:ss"
+            placeholder="请选择入库时间,停用"
+          >
           </el-date-picker>
         </el-form-item>
         <el-form-item label="异常原因,如退件、损坏等" prop="bagReason">
-          <el-input v-model="form.bagReason" placeholder="请输入异常原因,如退件、损坏等" />
+          <el-input
+            v-model="form.bagReason"
+            placeholder="请输入异常原因,如退件、损坏等"
+          />
         </el-form-item>
         <el-form-item label="所在站点" prop="bagSite">
           <el-input v-model="form.bagSite" placeholder="请输入所在站点" />
         </el-form-item>
         <el-form-item label="修改时间" prop="updatedAt">
-          <el-date-picker clearable v-model="form.updatedAt" type="datetime" value-format="YYYY-MM-DD HH:mm:ss"
-            placeholder="请选择修改时间">
+          <el-date-picker
+            clearable
+            v-model="form.updatedAt"
+            type="datetime"
+            value-format="YYYY-MM-DD HH:mm:ss"
+            placeholder="请选择修改时间"
+          >
           </el-date-picker>
         </el-form-item>
         <el-form-item label="创建时间,入库时间" prop="createdAt">
-          <el-date-picker clearable v-model="form.createdAt" type="datetime" value-format="YYYY-MM-DD HH:mm:ss"
-            placeholder="请选择创建时间,入库时间">
+          <el-date-picker
+            clearable
+            v-model="form.createdAt"
+            type="datetime"
+            value-format="YYYY-MM-DD HH:mm:ss"
+            placeholder="请选择创建时间,入库时间"
+          >
           </el-date-picker>
         </el-form-item>
       </el-form>
       <template #footer>
         <div class="dialog-footer">
-          <el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
+          <el-button :loading="buttonLoading" type="primary" @click="submitForm"
+            >确 定</el-button
+          >
           <el-button @click="cancel">取 消</el-button>
         </div>
       </template>
@@ -147,32 +263,49 @@
 </template>
 
 <script setup name="Bag" lang="ts">
-  import { listBag, getBag, delBag, addBag, updateBag } from '@/api/system/bag';
-  import { BagVO, BagQuery, BagForm } from '@/api/system/bag/types';
-  import { listSite, getSite, delSite, addSite, updateSite } from '@/api/system/site';
-  import { SiteVO, SiteQuery, SiteForm } from '@/api/system/site/types';
+import { listBag, getBag, delBag, addBag, updateBag } from "@/api/system/bag";
+import { BagVO, BagQuery, BagForm } from "@/api/system/bag/types";
+import { listSite, getSite, delSite, addSite, updateSite } from "@/api/system/site";
+import { SiteVO, SiteQuery, SiteForm } from "@/api/system/site/types";
 
-  const { proxy } = getCurrentInstance() as ComponentInternalInstance;
+const { proxy } = getCurrentInstance() as ComponentInternalInstance;
 
-  const bagList = ref < BagVO[] > ([]);
-  const buttonLoading = ref(false);
-  const loading = ref(true);
-  const showSearch = ref(true);
-  const ids = ref < Array < string | number >> ([]);
-  const single = ref(true);
-  const multiple = ref(true);
-  const total = ref(0);
+const bagList = ref<BagVO[]>([]);
+const buttonLoading = ref(false);
+const loading = ref(true);
+const showSearch = ref(true);
+const ids = ref<Array<string | number>>([]);
+const single = ref(true);
+const multiple = ref(true);
+const total = ref(0);
 
-  const queryFormRef = ref < ElFormInstance > ();
-  const bagFormRef = ref < ElFormInstance > ();
+const queryFormRef = ref<ElFormInstance>();
+const bagFormRef = ref<ElFormInstance>();
 
-  const dialog = reactive < DialogOption > ({
-    visible: false,
-    title: ''
-  });
+const dialog = reactive<DialogOption>({
+  visible: false,
+  title: "",
+});
 
-  const initFormData: BagForm = {
-    id: undefined,
+const initFormData: BagForm = {
+  id: undefined,
+  bagCompany: undefined,
+  bagNumber: undefined,
+  bagStatus: undefined,
+  bagOutTime: undefined,
+  bagLocal: undefined,
+  bagLocal2: undefined,
+  bagInTime: undefined,
+  bagReason: undefined,
+  bagSite: undefined,
+  updatedAt: undefined,
+  createdAt: undefined,
+};
+const data = reactive<PageData<BagForm, BagQuery>>({
+  form: { ...initFormData },
+  queryParams: {
+    pageNum: 1,
+    pageSize: 10,
     bagCompany: undefined,
     bagNumber: undefined,
     bagStatus: undefined,
@@ -183,208 +316,182 @@
     bagReason: undefined,
     bagSite: undefined,
     updatedAt: undefined,
-    createdAt: undefined
-  }
-  const data = reactive < PageData < BagForm, BagQuery>> ({
-    form: { ...initFormData },
-    queryParams: {
-      pageNum: 1,
-      pageSize: 10,
-      bagCompany: undefined,
-      bagNumber: undefined,
-      bagStatus: undefined,
-      bagOutTime: undefined,
-      bagLocal: undefined,
-      bagLocal2: undefined,
-      bagInTime: undefined,
-      bagReason: undefined,
-      bagSite: undefined,
-      updatedAt: undefined,
-      createdAt: undefined,
-      params: {
-      }
-    },
-    rules: {
-      id: [
-        { required: true, message: "id不能为空", trigger: "blur" }
-      ],
-      bagCompany: [
-        { required: true, message: "快递公司不能为空", trigger: "blur" }
-      ],
-      bagNumber: [
-        { required: true, message: "快递单号不能为空", trigger: "blur" }
-      ],
-      bagStatus: [
-        { required: true, message: "出库状态,待取件0,出库1,异常2,异常已处理3不能为空", trigger: "change" }
-      ],
-      bagOutTime: [
-        { required: true, message: "出库时间不能为空", trigger: "blur" }
-      ],
-      bagLocal: [
-        { required: true, message: "货架号不能为空", trigger: "blur" }
-      ],
-      bagLocal2: [
-        { required: true, message: "层号不能为空", trigger: "blur" }
-      ],
-      bagInTime: [
-        { required: true, message: "入库时间,停用不能为空", trigger: "blur" }
-      ],
-      bagReason: [
-        { required: true, message: "异常原因,如退件、损坏等不能为空", trigger: "blur" }
-      ],
-      bagSite: [
-        { required: true, message: "所在站点不能为空", trigger: "blur" }
-      ],
-      updatedAt: [
-        { required: true, message: "修改时间不能为空", trigger: "blur" }
-      ],
-      createdAt: [
-        { required: true, message: "创建时间,入库时间不能为空", trigger: "blur" }
-      ]
-    }
-  });
+    createdAt: undefined,
+    params: {},
+  },
+  rules: {
+    id: [{ required: true, message: "id不能为空", trigger: "blur" }],
+    bagCompany: [{ required: true, message: "快递公司不能为空", trigger: "blur" }],
+    bagNumber: [{ required: true, message: "快递单号不能为空", trigger: "blur" }],
+    bagStatus: [
+      {
+        required: true,
+        message: "出库状态,待取件0,出库1,异常2,异常已处理3不能为空",
+        trigger: "change",
+      },
+    ],
+    bagOutTime: [{ required: true, message: "出库时间不能为空", trigger: "blur" }],
+    bagLocal: [{ required: true, message: "货架号不能为空", trigger: "blur" }],
+    bagLocal2: [{ required: true, message: "层号不能为空", trigger: "blur" }],
+    bagInTime: [{ required: true, message: "入库时间,停用不能为空", trigger: "blur" }],
+    bagReason: [
+      { required: true, message: "异常原因,如退件、损坏等不能为空", trigger: "blur" },
+    ],
+    bagSite: [{ required: true, message: "所在站点不能为空", trigger: "blur" }],
+    updatedAt: [{ required: true, message: "修改时间不能为空", trigger: "blur" }],
+    createdAt: [
+      { required: true, message: "创建时间,入库时间不能为空", trigger: "blur" },
+    ],
+  },
+});
 
-  const { queryParams, form, rules } = toRefs(data);
+const { queryParams, form, rules } = toRefs(data);
 
-  const options = [
-    {
-      value: '0',
-      label: '待入库',
-    },
-    {
-      value: '1',
-      label: '出库',
-    },
-    {
-      value: '2',
-      label: '异常',
-    },
-    {
-      value: '3',
-      label: '异常已处理',
-    }
-  ]
+const options = [
+  {
+    value: "0",
+    label: "待取件",
+  },
+  {
+    value: "1",
+    label: "出库",
+  },
+  {
+    value: "2",
+    label: "异常",
+  },
+  {
+    value: "3",
+    label: "异常已处理",
+  },
+];
 
-  const siteList = ref([])
+const siteList = ref([]);
 
-  /** 查询【请填写功能名称】列表 */
-  const getList = async () => {
-    loading.value = true;
-    const res = await listBag(queryParams.value);
-    bagList.value = res.rows;
-    total.value = res.total;
-    loading.value = false;
-  }
+/** 查询【请填写功能名称】列表 */
+const getList = async () => {
+  loading.value = true;
+  const res = await listBag(queryParams.value);
+  bagList.value = res.rows;
+  total.value = res.total;
+  loading.value = false;
+};
 
-  /** 取消按钮 */
-  const cancel = () => {
-    reset();
-    dialog.visible = false;
-  }
+/** 取消按钮 */
+const cancel = () => {
+  reset();
+  dialog.visible = false;
+};
 
-  const getStatus = (status) => {
-    if (status == 0) {
-      return "待取件"
-    } else if (status == 1) {
-      return "已出库"
-    } else if (status == 2) {
-      return "异常"
-    } else {
-      return "异常已处理"
-    }
+const getStatus = (status) => {
+  if (status == 0) {
+    return "待取件";
+  } else if (status == 1) {
+    return "已出库";
+  } else if (status == 2) {
+    return "异常";
+  } else {
+    return "异常已处理";
   }
+};
 
-  const getSiteData = () => {
-    listSite({ pageSize: 1000 }).then(res => {
-      siteList.value = res.rows
-    })
-  }
+const getSiteData = () => {
+  listSite({ pageSize: 1000 }).then((res) => {
+    siteList.value = res.rows;
+  });
+};
 
-  const getSiteName = (id) => {
-    for (var index in siteList.value) {
-      if (siteList.value[index].id == id) {
-        return siteList.value[index].siteName
-      }
+const getSiteName = (id) => {
+  for (var index in siteList.value) {
+    if (siteList.value[index].id == id) {
+      return siteList.value[index].siteName;
     }
   }
+};
 
-  /** 表单重置 */
-  const reset = () => {
-    form.value = { ...initFormData };
-    bagFormRef.value?.resetFields();
-  }
+/** 表单重置 */
+const reset = () => {
+  form.value = { ...initFormData };
+  bagFormRef.value?.resetFields();
+};
 
-  /** 搜索按钮操作 */
-  const handleQuery = () => {
-    queryParams.value.pageNum = 1;
-    getList();
-  }
+/** 搜索按钮操作 */
+const handleQuery = () => {
+  queryParams.value.pageNum = 1;
+  getList();
+};
 
-  /** 重置按钮操作 */
-  const resetQuery = () => {
-    queryFormRef.value?.resetFields();
-    handleQuery();
-  }
+/** 重置按钮操作 */
+const resetQuery = () => {
+  queryFormRef.value?.resetFields();
+  handleQuery();
+};
 
-  /** 多选框选中数据 */
-  const handleSelectionChange = (selection: BagVO[]) => {
-    ids.value = selection.map(item => item.id);
-    single.value = selection.length != 1;
-    multiple.value = !selection.length;
-  }
+/** 多选框选中数据 */
+const handleSelectionChange = (selection: BagVO[]) => {
+  ids.value = selection.map((item) => item.id);
+  single.value = selection.length != 1;
+  multiple.value = !selection.length;
+};
 
-  /** 新增按钮操作 */
-  const handleAdd = () => {
-    reset();
-    dialog.visible = true;
-    dialog.title = "添加【请填写功能名称】";
-  }
+/** 新增按钮操作 */
+const handleAdd = () => {
+  reset();
+  dialog.visible = true;
+  dialog.title = "添加【请填写功能名称】";
+};
 
-  /** 修改按钮操作 */
-  const handleUpdate = async (row?: BagVO) => {
-    reset();
-    const _id = row?.id || ids.value[0]
-    const res = await getBag(_id);
-    Object.assign(form.value, res.data);
-    dialog.visible = true;
-    dialog.title = "修改【请填写功能名称】";
-  }
+/** 修改按钮操作 */
+const handleUpdate = async (row?: BagVO) => {
+  reset();
+  const _id = row?.id || ids.value[0];
+  const res = await getBag(_id);
+  Object.assign(form.value, res.data);
+  dialog.visible = true;
+  dialog.title = "修改【请填写功能名称】";
+};
 
-  /** 提交按钮 */
-  const submitForm = () => {
-    bagFormRef.value?.validate(async (valid: boolean) => {
-      if (valid) {
-        buttonLoading.value = true;
-        if (form.value.id) {
-          await updateBag(form.value).finally(() => buttonLoading.value = false);
-        } else {
-          await addBag(form.value).finally(() => buttonLoading.value = false);
-        }
-        proxy?.$modal.msgSuccess("修改成功");
-        dialog.visible = false;
-        await getList();
+/** 提交按钮 */
+const submitForm = () => {
+  bagFormRef.value?.validate(async (valid: boolean) => {
+    if (valid) {
+      buttonLoading.value = true;
+      if (form.value.id) {
+        await updateBag(form.value).finally(() => (buttonLoading.value = false));
+      } else {
+        await addBag(form.value).finally(() => (buttonLoading.value = false));
       }
-    });
-  }
+      proxy?.$modal.msgSuccess("修改成功");
+      dialog.visible = false;
+      await getList();
+    }
+  });
+};
 
-  /** 删除按钮操作 */
-  const handleDelete = async (row?: BagVO) => {
-    const _ids = row?.id || ids.value;
-    await proxy?.$modal.confirm('是否确认删除【请填写功能名称】编号为"' + _ids + '"的数据项?').finally(() => loading.value = false);
-    await delBag(_ids);
-    proxy?.$modal.msgSuccess("删除成功");
-    await getList();
-  }
+/** 删除按钮操作 */
+const handleDelete = async (row?: BagVO) => {
+  const _ids = row?.id || ids.value;
+  await proxy?.$modal
+    .confirm('是否确认删除【请填写功能名称】编号为"' + _ids + '"的数据项?')
+    .finally(() => (loading.value = false));
+  await delBag(_ids);
+  proxy?.$modal.msgSuccess("删除成功");
+  await getList();
+};
 
-  /** 导出按钮操作 */
-  const handleExport = () => {
-    proxy?.download('system/bag/export', {
-      ...queryParams.value
-    }, `bag_${new Date().getTime()}.xlsx`)
-  }
+/** 导出按钮操作 */
+const handleExport = () => {
+  proxy?.download(
+    "system/bag/export",
+    {
+      ...queryParams.value,
+    },
+    `bag_${new Date().getTime()}.xlsx`
+  );
+};
 
-  onMounted(() => {
-    getSiteData();
-    getList();
-  });
-</script>
+onMounted(() => {
+  getSiteData();
+  getList();
+});
+</script>

+ 230 - 194
src/views/system/expressStatics/index.vue

@@ -1,14 +1,39 @@
 <template>
   <div class="p-2">
-    <transition :enter-active-class="proxy?.animate.searchAnimate.enter"
-      :leave-active-class="proxy?.animate.searchAnimate.leave">
+    <transition
+      :enter-active-class="proxy?.animate.searchAnimate.enter"
+      :leave-active-class="proxy?.animate.searchAnimate.leave"
+    >
       <div class="search" v-show="showSearch">
-        <el-form :model="queryParams" ref="queryFormRef" :inline="true" label-width="68px">
+        <el-form
+          :model="queryParams"
+          ref="queryFormRef"
+          :inline="true"
+          label-width="68px"
+        >
           <el-form-item label="名称" prop="userId">
-            <el-select v-model="queryParams.userId" clearable placeholder="请选择快递员" style="width: 240px">
-              <el-option v-for="item in userList" :key="item.userId" :label="item.nickName" :value="item.userId" />
+            <el-select
+              v-model="queryParams.userId"
+              clearable
+              placeholder="请选择快递员"
+              style="width: 240px"
+            >
+              <el-option
+                v-for="item in userList"
+                :key="item.userId"
+                :label="item.nickName"
+                :value="item.userId"
+              />
             </el-select>
           </el-form-item>
+          <el-form-item label="月份" prop="userId">
+            <el-date-picker
+              v-model="queryParams.params.ctime"
+              type="month"
+              placeholder="选择月份"
+            />
+          </el-form-item>
+
           <el-form-item>
             <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
             <el-button icon="Refresh" @click="resetQuery">重置</el-button>
@@ -18,29 +43,11 @@
     </transition>
 
     <el-card shadow="never">
-      <template #header>
-        <el-row :gutter="10" class="mb8">
-          <el-col :span="1.5">
-            <el-button type="primary" plain icon="Plus" @click="handleAdd"
-              v-hasPermi="['system:expressStatics:add']">新增</el-button>
-          </el-col>
-          <el-col :span="1.5">
-            <el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()"
-              v-hasPermi="['system:expressStatics:edit']">修改</el-button>
-          </el-col>
-          <el-col :span="1.5">
-            <el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()"
-              v-hasPermi="['system:expressStatics:remove']">删除</el-button>
-          </el-col>
-          <el-col :span="1.5">
-            <el-button type="warning" plain icon="Download" @click="handleExport"
-              v-hasPermi="['system:expressStatics:export']">导出</el-button>
-          </el-col>
-          <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
-        </el-row>
-      </template>
-
-      <el-table v-loading="loading" :data="expressStaticsList" @selection-change="handleSelectionChange">
+      <el-table
+        v-loading="loading"
+        :data="expressStaticsList"
+        @selection-change="handleSelectionChange"
+      >
         <el-table-column type="selection" width="55" align="center" />
         <!-- <el-table-column label="" align="center" prop="id" v-if="true" /> -->
         <el-table-column label="用户" align="center" prop="userId">
@@ -68,12 +75,27 @@
         </el-table-column> -->
       </el-table>
 
-      <pagination v-show="total>0" :total="total" v-model:page="queryParams.pageNum"
-        v-model:limit="queryParams.pageSize" @pagination="getList" />
+      <pagination
+        v-show="total > 0"
+        :total="total"
+        v-model:page="queryParams.pageNum"
+        v-model:limit="queryParams.pageSize"
+        @pagination="getList"
+      />
     </el-card>
     <!-- 添加或修改【请填写功能名称】对话框 -->
-    <el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
-      <el-form ref="expressStaticsFormRef" :model="form" :rules="rules" label-width="80px">
+    <el-dialog
+      :title="dialog.title"
+      v-model="dialog.visible"
+      width="500px"
+      append-to-body
+    >
+      <el-form
+        ref="expressStaticsFormRef"
+        :model="form"
+        :rules="rules"
+        label-width="80px"
+      >
         <el-form-item label="" prop="userId">
           <el-input v-model="form.userId" placeholder="请输入" />
         </el-form-item>
@@ -86,7 +108,9 @@
       </el-form>
       <template #footer>
         <div class="dialog-footer">
-          <el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
+          <el-button :loading="buttonLoading" type="primary" @click="submitForm"
+            >确 定</el-button
+          >
           <el-button @click="cancel">取 消</el-button>
         </div>
       </template>
@@ -95,194 +119,206 @@
 </template>
 
 <script setup name="ExpressStatics" lang="ts">
-  import { listExpressStatics, getExpressStatics, delExpressStatics, addExpressStatics, updateExpressStatics } from '@/api/system/expressStatics';
-  import { ExpressStaticsVO, ExpressStaticsQuery, ExpressStaticsForm } from '@/api/system/expressStatics/types';
-  import api from "@/api/system/user"
-  import { UserForm, UserQuery, UserVO } from '@/api/system/user/types';
+import {
+  listExpressStatics,
+  getExpressStatics,
+  delExpressStatics,
+  addExpressStatics,
+  updateExpressStatics,
+} from "@/api/system/expressStatics";
+import {
+  ExpressStaticsVO,
+  ExpressStaticsQuery,
+  ExpressStaticsForm,
+} from "@/api/system/expressStatics/types";
+import api from "@/api/system/user";
+import { UserForm, UserQuery, UserVO } from "@/api/system/user/types";
+import moment from "moment";
 
-  const { proxy } = getCurrentInstance() as ComponentInternalInstance;
+const { proxy } = getCurrentInstance() as ComponentInternalInstance;
 
-  const expressStaticsList = ref < ExpressStaticsVO[] > ([]);
-  const buttonLoading = ref(false);
-  const loading = ref(true);
-  const showSearch = ref(true);
-  const ids = ref < Array < string | number >> ([]);
-  const single = ref(true);
-  const multiple = ref(true);
-  const total = ref(0);
-  const userList = ref([]);
+const expressStaticsList = ref<ExpressStaticsVO[]>([]);
+const buttonLoading = ref(false);
+const loading = ref(true);
+const showSearch = ref(true);
+const ids = ref<Array<string | number>>([]);
+const single = ref(true);
+const multiple = ref(true);
+const total = ref(0);
+const userList = ref([]);
 
-  const queryFormRef = ref < ElFormInstance > ();
-  const expressStaticsFormRef = ref < ElFormInstance > ();
+const queryFormRef = ref<ElFormInstance>();
+const expressStaticsFormRef = ref<ElFormInstance>();
 
-  const dialog = reactive < DialogOption > ({
-    visible: false,
-    title: ''
-  });
+const dialog = reactive<DialogOption>({
+  visible: false,
+  title: "",
+});
 
-  const initFormData: ExpressStaticsForm = {
-    id: undefined,
+const initFormData: ExpressStaticsForm = {
+  id: undefined,
+  userId: undefined,
+  month: undefined,
+  data: undefined,
+};
+const data = reactive<PageData<ExpressStaticsForm, ExpressStaticsQuery>>({
+  form: { ...initFormData },
+  queryParams: {
+    pageNum: 1,
+    pageSize: 10,
     userId: undefined,
     month: undefined,
     data: undefined,
-  }
-  const data = reactive < PageData < ExpressStaticsForm, ExpressStaticsQuery>> ({
-    form: { ...initFormData },
-    queryParams: {
-      pageNum: 1,
-      pageSize: 10,
-      userId: undefined,
-      month: undefined,
-      data: undefined,
-      params: {
-      }
+    params: {
+      ctime: moment().format("YYYY-MM"),
     },
-    userParams: {
-      pageNum: 1,
-      pageSize: 1000,
-      userName: '',
-      phonenumber: '',
-      status: '',
-      deptId: '',
-      params: {
-        roleNames: '司机'
-      }
+  },
+  userParams: {
+    pageNum: 1,
+    pageSize: 1000,
+    userName: "",
+    phonenumber: "",
+    status: "",
+    deptId: "",
+    params: {
+      roleNames: "司机",
     },
-    rules: {
-      id: [
-        { required: true, message: "不能为空", trigger: "blur" }
-      ],
-      userId: [
-        { required: true, message: "不能为空", trigger: "blur" }
-      ],
-      month: [
-        { required: true, message: "不能为空", trigger: "blur" }
-      ],
-      data: [
-        { required: true, message: "不能为空", trigger: "blur" }
-      ],
-    }
-  });
+  },
+  rules: {
+    id: [{ required: true, message: "不能为空", trigger: "blur" }],
+    userId: [{ required: true, message: "不能为空", trigger: "blur" }],
+    month: [{ required: true, message: "不能为空", trigger: "blur" }],
+    data: [{ required: true, message: "不能为空", trigger: "blur" }],
+  },
+});
 
-  const { queryParams,userParams,form, rules } = toRefs(data);
+const { queryParams, userParams, form, rules } = toRefs(data);
 
-  const getData = (data) => {
-    console.log(data.data)
-    var jsonData = JSON.parse(data.data)
-    if (jsonData.code == 0) {
-      console.log(jsonData.data.delivery_count)
-      return jsonData.data.delivery_count
-    }
+const getData = (data) => {
+  console.log(data.data);
+  var jsonData = JSON.parse(data.data);
+  if (jsonData.code == 0) {
+    console.log(jsonData.data.delivery_count);
+    return jsonData.data.delivery_count;
   }
+};
 
-  /** 查询【请填写功能名称】列表 */
-  const getList = async () => {
-    loading.value = true;
-    const res = await listExpressStatics(queryParams.value);
-    expressStaticsList.value = res.rows;
-    total.value = res.total;
-    loading.value = false;
-  }
+/** 查询【请填写功能名称】列表 */
+const getList = async () => {
+  loading.value = true;
+  const res = await listExpressStatics(queryParams.value);
+  expressStaticsList.value = res.rows;
+  total.value = res.total;
+  loading.value = false;
+};
 
-  const getUserList = async () => {
-    const res = await api.listUser(userParams.value);
-    console.log(res)
-    userList.value = res.rows;
-    getList();
-  }
+const getUserList = async () => {
+  const res = await api.listUser(userParams.value);
+  console.log(res);
+  userList.value = res.rows;
+  getList();
+};
 
-  /** 取消按钮 */
-  const cancel = () => {
-    reset();
-    dialog.visible = false;
-  }
+/** 取消按钮 */
+const cancel = () => {
+  reset();
+  dialog.visible = false;
+};
 
-  /** 表单重置 */
-  const reset = () => {
-    form.value = { ...initFormData };
-    expressStaticsFormRef.value?.resetFields();
-  }
+/** 表单重置 */
+const reset = () => {
+  form.value = { ...initFormData };
+  expressStaticsFormRef.value?.resetFields();
+};
 
-  /** 搜索按钮操作 */
-  const handleQuery = () => {
-    queryParams.value.pageNum = 1;
-    getList();
-  }
+/** 搜索按钮操作 */
+const handleQuery = () => {
+  queryParams.value.pageNum = 1;
+  getList();
+};
 
-  /** 重置按钮操作 */
-  const resetQuery = () => {
-    queryFormRef.value?.resetFields();
-    handleQuery();
-  }
+/** 重置按钮操作 */
+const resetQuery = () => {
+  queryFormRef.value?.resetFields();
+  handleQuery();
+};
 
-  /** 多选框选中数据 */
-  const handleSelectionChange = (selection: ExpressStaticsVO[]) => {
-    ids.value = selection.map(item => item.id);
-    single.value = selection.length != 1;
-    multiple.value = !selection.length;
-  }
+/** 多选框选中数据 */
+const handleSelectionChange = (selection: ExpressStaticsVO[]) => {
+  ids.value = selection.map((item) => item.id);
+  single.value = selection.length != 1;
+  multiple.value = !selection.length;
+};
 
-  /** 新增按钮操作 */
-  const handleAdd = () => {
-    reset();
-    dialog.visible = true;
-    dialog.title = "添加【请填写功能名称】";
-  }
+/** 新增按钮操作 */
+const handleAdd = () => {
+  reset();
+  dialog.visible = true;
+  dialog.title = "添加【请填写功能名称】";
+};
 
-  /** 修改按钮操作 */
-  const handleUpdate = async (row?: ExpressStaticsVO) => {
-    reset();
-    const _id = row?.id || ids.value[0]
-    const res = await getExpressStatics(_id);
-    Object.assign(form.value, res.data);
-    dialog.visible = true;
-    dialog.title = "修改【请填写功能名称】";
-  }
+/** 修改按钮操作 */
+const handleUpdate = async (row?: ExpressStaticsVO) => {
+  reset();
+  const _id = row?.id || ids.value[0];
+  const res = await getExpressStatics(_id);
+  Object.assign(form.value, res.data);
+  dialog.visible = true;
+  dialog.title = "修改【请填写功能名称】";
+};
 
-  /** 提交按钮 */
-  const submitForm = () => {
-    expressStaticsFormRef.value?.validate(async (valid: boolean) => {
-      if (valid) {
-        buttonLoading.value = true;
-        if (form.value.id) {
-          await updateExpressStatics(form.value).finally(() => buttonLoading.value = false);
-        } else {
-          await addExpressStatics(form.value).finally(() => buttonLoading.value = false);
-        }
-        proxy?.$modal.msgSuccess("修改成功");
-        dialog.visible = false;
-        await getList();
+/** 提交按钮 */
+const submitForm = () => {
+  expressStaticsFormRef.value?.validate(async (valid: boolean) => {
+    if (valid) {
+      buttonLoading.value = true;
+      if (form.value.id) {
+        await updateExpressStatics(form.value).finally(
+          () => (buttonLoading.value = false)
+        );
+      } else {
+        await addExpressStatics(form.value).finally(() => (buttonLoading.value = false));
       }
-    });
-  }
+      proxy?.$modal.msgSuccess("修改成功");
+      dialog.visible = false;
+      await getList();
+    }
+  });
+};
 
-  const getUserName = (item) => {
-    console.log(item.userId)
-    for(var index in userList.value){
-       if(userList.value[index].userId == item.userId){
-        // console.log(userList.value[index])
-           return userList.value[index].nickName;
-       }
+const getUserName = (item) => {
+  console.log(item.userId);
+  for (var index in userList.value) {
+    if (userList.value[index].userId == item.userId) {
+      // console.log(userList.value[index])
+      return userList.value[index].nickName;
     }
   }
+};
 
-  /** 删除按钮操作 */
-  const handleDelete = async (row?: ExpressStaticsVO) => {
-    const _ids = row?.id || ids.value;
-    await proxy?.$modal.confirm('是否确认删除【请填写功能名称】编号为"' + _ids + '"的数据项?').finally(() => loading.value = false);
-    await delExpressStatics(_ids);
-    proxy?.$modal.msgSuccess("删除成功");
-    await getList();
-  }
+/** 删除按钮操作 */
+const handleDelete = async (row?: ExpressStaticsVO) => {
+  const _ids = row?.id || ids.value;
+  await proxy?.$modal
+    .confirm('是否确认删除【请填写功能名称】编号为"' + _ids + '"的数据项?')
+    .finally(() => (loading.value = false));
+  await delExpressStatics(_ids);
+  proxy?.$modal.msgSuccess("删除成功");
+  await getList();
+};
 
-  /** 导出按钮操作 */
-  const handleExport = () => {
-    proxy?.download('system/expressStatics/export', {
-      ...queryParams.value
-    }, `expressStatics_${new Date().getTime()}.xlsx`)
-  }
+/** 导出按钮操作 */
+const handleExport = () => {
+  proxy?.download(
+    "system/expressStatics/export",
+    {
+      ...queryParams.value,
+    },
+    `expressStatics_${new Date().getTime()}.xlsx`
+  );
+};
 
-  onMounted(() => {
-    getUserList();
-  });
-</script>
+onMounted(() => {
+  getUserList();
+});
+</script>