liwei19941102 %!s(int64=2) %!d(string=hai) anos
pai
achega
1d78179958
Modificáronse 2 ficheiros con 333 adicións e 7 borrados
  1. 317 0
      src/views/miniprogram/index.vue
  2. 16 7
      src/views/yunying/scheduling/index.vue

+ 317 - 0
src/views/miniprogram/index.vue

@@ -0,0 +1,317 @@
+<template>
+  <div class="p-2">
+    <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-item label="名称" prop="name">
+            <el-input v-model="queryParams.name" placeholder="请输入名称" clearable style="width: 240px"
+              @keyup.enter="handleQuery" />
+          </el-form-item>
+          <el-form-item label="图标地址" prop="logo">
+            <el-input v-model="queryParams.logo" placeholder="请输入图标地址" clearable style="width: 240px"
+              @keyup.enter="handleQuery" />
+          </el-form-item>
+          <el-form-item label="链接" prop="url">
+            <el-input v-model="queryParams.url" placeholder="请输入链接" clearable style="width: 240px"
+              @keyup.enter="handleQuery" />
+          </el-form-item>
+          <el-form-item label="描述" prop="desc">
+            <el-input v-model="queryParams.desc" placeholder="请输入描述" clearable style="width: 240px"
+              @keyup.enter="handleQuery" />
+          </el-form-item>
+          <el-form-item>
+            <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
+            <el-button icon="Refresh" @click="resetQuery">重置</el-button>
+          </el-form-item>
+        </el-form>
+      </div>
+    </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:miniprogram:add']">新增</el-button>
+          </el-col>
+          <el-col :span="1.5">
+            <el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()"
+              v-hasPermi="['system:miniprogram:edit']">修改</el-button>
+          </el-col>
+          <el-col :span="1.5">
+            <el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()"
+              v-hasPermi="['system:miniprogram:remove']">删除</el-button>
+          </el-col>
+          <el-col :span="1.5">
+            <el-button type="warning" plain icon="Download" @click="handleExport"
+              v-hasPermi="['system:miniprogram:export']">导出</el-button>
+          </el-col>
+          <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
+        </el-row>
+      </template>
+
+      <el-table v-loading="loading" :data="miniprogramList" @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="name" />
+        <el-table-column label="图标地址" align="center" prop="logo" />
+        <el-table-column label="链接" align="center" prop="url" />
+        <el-table-column label="状态" align="center" prop="status" />
+        <el-table-column label="描述" align="center" prop="desc" />
+        <el-table-column label="扩展1" align="center" prop="ext1" />
+        <el-table-column label="扩展2" align="center" prop="ext2" />
+        <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:miniprogram:edit']"></el-button>
+            </el-tooltip>
+            <el-tooltip content="删除" placement="top">
+              <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)"
+                v-hasPermi="['system:miniprogram: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" />
+    </el-card>
+    <!-- 添加或修改小程序信息对话框 -->
+    <el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
+      <el-form ref="miniprogramFormRef" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="名称" prop="name">
+          <el-input v-model="form.name" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="图标" prop="logo">
+          <el-upload v-model:file-list="fileList" :headers="headers" :action="uploadImgUrl" list-type="picture-card"
+            :on-remove="handleRemove" :on-success="handleUploadSuccess">
+            <el-icon>
+              <Plus />
+            </el-icon>
+          </el-upload>
+        </el-form-item>
+        <el-form-item label="链接" prop="url">
+          <el-input v-model="form.url" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="描述" prop="desc">
+          <el-input v-model="form.desc" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+      </el-form>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
+          <el-button @click="cancel">取 消</el-button>
+        </div>
+      </template>
+    </el-dialog>
+  </div>
+</template>
+
+<script setup name="Miniprogram" lang="ts">
+import { listMiniprogram, getMiniprogram, delMiniprogram, addMiniprogram, updateMiniprogram } from '@/api/miniprogram';
+import { MiniprogramVO, MiniprogramQuery, MiniprogramForm } from '@/api/miniprogram/types';
+import { getToken } from '@/utils/auth';
+import type { UploadProps, UploadUserFile } from 'element-plus'
+
+const { proxy } = getCurrentInstance() as ComponentInternalInstance;
+
+const miniprogramList = ref<MiniprogramVO[]>([]);
+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 miniprogramFormRef = ref<ElFormInstance>();
+const baseUrl = import.meta.env.VITE_APP_BASE_API;
+const uploadImgUrl = ref(baseUrl + "/resource/oss/upload"); // 上传的图片服务器地址
+
+const dialog = reactive<DialogOption>({
+  visible: false,
+  title: ''
+});
+
+const headers = ref({
+  "Authorization": 'Bearer ' + getToken(),
+  "Clientid": 'e5cd7e4891bf95d1d19206ce24a7b32e',
+  "Accept": 'application/json, text/plain, */*'
+});
+
+const fileList = ref<UploadUserFile[]>([
+
+])
+
+const fileData = ref([])
+
+const initFormData: MiniprogramForm = {
+  id: undefined,
+  name: undefined,
+  logo: undefined,
+  url: undefined,
+  status: undefined,
+  desc: undefined,
+  ext1: undefined,
+  ext2: undefined
+}
+const data = reactive<PageData<MiniprogramForm, MiniprogramQuery>>({
+  form: { ...initFormData },
+  queryParams: {
+    pageNum: 1,
+    pageSize: 10,
+    name: undefined,
+    logo: undefined,
+    url: undefined,
+    status: undefined,
+    desc: undefined,
+    ext1: undefined,
+    ext2: undefined,
+    params: {
+    }
+  },
+  rules: {
+    id: [
+      { required: true, message: "编号不能为空", trigger: "blur" }
+    ],
+    name: [
+      { required: true, message: "名称不能为空", trigger: "blur" }
+    ],
+    logo: [
+      { required: true, message: "图标地址不能为空", trigger: "blur" }
+    ],
+    url: [
+      { required: true, message: "链接不能为空", trigger: "blur" }
+    ],
+    status: [
+      { required: true, message: "状态不能为空", trigger: "change" }
+    ],
+    desc: [
+      { required: true, message: "描述不能为空", trigger: "blur" }
+    ]
+  }
+});
+
+const { queryParams, form, rules } = toRefs(data);
+
+/** 查询小程序信息列表 */
+const getList = async () => {
+  loading.value = true;
+  const res = await listMiniprogram(queryParams.value);
+  miniprogramList.value = res.rows;
+  total.value = res.total;
+  loading.value = false;
+}
+
+const handleRemove = (uploadFile, uploadFiles) => {
+  console.log(uploadFile)
+  const arry = fileData.value.filter((item) => item.ossId != fileData.value.ossId)
+  fileData.value = arry;
+  fileList.value = arry;
+}
+
+const handleUploadSuccess = (response, file, fileList) => {
+  console.log(response)
+  console.log(response.data.url)
+  if (response.code == 200) {
+    var obj = {
+      name: response.data.fileName,
+      url: response.data.url.replaceAll("http://127.0.0.1:9000", "https://khy.xiaole.vip/khyfile").split('?')[0],
+      ossId: response.data.ossId
+    }
+  }
+  fileData.value.push(obj)
+}
+
+/** 取消按钮 */
+const cancel = () => {
+  reset();
+  dialog.visible = false;
+}
+
+/** 表单重置 */
+const reset = () => {
+  form.value = { ...initFormData };
+  miniprogramFormRef.value?.resetFields();
+}
+
+/** 搜索按钮操作 */
+const handleQuery = () => {
+  queryParams.value.pageNum = 1;
+  getList();
+}
+
+/** 重置按钮操作 */
+const resetQuery = () => {
+  queryFormRef.value?.resetFields();
+  handleQuery();
+}
+
+/** 多选框选中数据 */
+const handleSelectionChange = (selection: MiniprogramVO[]) => {
+  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 handleUpdate = async (row?: MiniprogramVO) => {
+  reset();
+  const _id = row?.id || ids.value[0]
+  const res = await getMiniprogram(_id);
+  Object.assign(form.value, res.data);
+  dialog.visible = true;
+  dialog.title = "修改小程序信息";
+}
+
+/** 提交按钮 */
+const submitForm = () => {
+  form.value.status = 1
+  form.value.ext1 = 1
+  form.value.ext2 = 1
+  form.value.logo = JSON.stringify(fileData.value)
+  miniprogramFormRef.value?.validate(async (valid: boolean) => {
+    if (valid) {
+      buttonLoading.value = true;
+      if (form.value.id) {
+        await updateMiniprogram(form.value).finally(() => buttonLoading.value = false);
+      } else {
+        await addMiniprogram(form.value).finally(() => buttonLoading.value = false);
+      }
+      proxy?.$modal.msgSuccess("修改成功");
+      dialog.visible = false;
+      await getList();
+    }
+  });
+}
+
+/** 删除按钮操作 */
+const handleDelete = async (row?: MiniprogramVO) => {
+  const _ids = row?.id || ids.value;
+  await proxy?.$modal.confirm('是否确认删除小程序信息编号为"' + _ids + '"的数据项?').finally(() => loading.value = false);
+  await delMiniprogram(_ids);
+  proxy?.$modal.msgSuccess("删除成功");
+  await getList();
+}
+
+/** 导出按钮操作 */
+const handleExport = () => {
+  proxy?.download('system/miniprogram/export', {
+    ...queryParams.value
+  }, `miniprogram_${new Date().getTime()}.xlsx`)
+}
+
+onMounted(() => {
+  getList();
+});
+</script>

+ 16 - 7
src/views/yunying/scheduling/index.vue

@@ -9,22 +9,22 @@
                             <el-input v-model="queryParams.carNum" placeholder="请输入车牌号" clearable style="width: 160px"
                                 @keyup.enter="handleQuery" />
                         </el-form-item>
-                        <el-form-item label="状态" prop="carNum">
+                        <!-- <el-form-item label="状态" prop="carNum">
                             <el-input v-model="queryParams.carNum" placeholder="请输入车牌号" clearable style="width: 160px"
                                 @keyup.enter="handleQuery" />
-                        </el-form-item>
-                        <el-form-item label="站点" prop="carNum">
-                            <el-input v-model="queryParams.carNum" placeholder="请输入车牌号" clearable style="width: 160px"
+                        </el-form-item> -->
+                        <el-form-item label="站点" prop="station">
+                            <el-input v-model="queryParams.station" placeholder="请输入车牌号" clearable style="width: 160px"
                                 @keyup.enter="handleQuery" />
                         </el-form-item>
-                        <el-form-item label="司机" prop="carNum">
+                        <!-- <el-form-item label="司机" prop="carNum">
                             <el-input v-model="queryParams.carNum" placeholder="请输入车牌号" clearable style="width: 160px"
                                 @keyup.enter="handleQuery" />
                         </el-form-item>
                         <el-form-item label="时间" prop="carNum">
                             <el-date-picker v-model="value2" type="datetimerange" :shortcuts="shortcuts"
                                 range-separator="至" start-placeholder="开始时间" end-placeholder="结束时间" />
-                        </el-form-item>
+                        </el-form-item> -->
                     </el-form>
                 </div>
                 <div style="width: 45%;">
@@ -268,11 +268,18 @@ const goadd = () => {
 }
 
 const getScheduleList = async () => {
+    console.log(value2.value)
+    var startTime = moment(value2.value[0]).format('YYYY-MM-DD')
+    var endTime = moment(value2.value[1]).format('YYYY-MM-DD')
     reloadData.value = false;
     var date = new Date();
     var param = {
         params: {
-            scheduleDate: moment(date).format('YYYY-MM-DD')
+            scheduleDate: moment(date).format('YYYY-MM-DD'),
+            carNum:queryParams.value.carNum,
+            station:queryParams.value.station
+            // starttime:startTime,
+            // endtime:endTime
             // scheduleDate: '2024-03-16'
         },
         pageSize: "1000"
@@ -331,6 +338,8 @@ const getAddr = (data) => {
 }
 
 const getList = async () => {
+    console.log(value2.value)
+    // queryParams.value.starttime = value2.value
     const res = await listCarInfo({ pageSize: 1000 });
     carInfoList.value = res.rows
     //   console.log(res);