浏览代码

商品管理

Hwf 3 周之前
父节点
当前提交
cf8ce20298

+ 0 - 3
src/assets/styles/element-ui.scss

@@ -454,9 +454,6 @@
 .pagination-container {
   margin-top: 5px !important;
 }
-.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label-wrap>.el-form-item__label:before, .el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label:before {
-  margin-right: 0 !important;
-}
 
 .custom-popper {
   background: #081b41;

+ 14 - 14
src/layout/components/Navbar.vue

@@ -13,20 +13,20 @@
           </div>
         </el-tooltip>
         <!-- 消息 -->
-        <el-tooltip content="消息" effect="dark" placement="bottom">
-          <div style="margin: 12px">
-            <el-popover placement="bottom" trigger="click" transition="el-zoom-in-top" :width="300" :persistent="false">
-              <template #reference>
-                <el-badge :value="newNotice > 0 ? newNotice : ''" :max="99">
-                  <div class="message" />
-                </el-badge>
-              </template>
-              <template #default>
-                <notice></notice>
-              </template>
-            </el-popover>
-          </div>
-        </el-tooltip>
+<!--        <el-tooltip content="消息" effect="dark" placement="bottom">-->
+<!--          <div style="margin: 12px">-->
+<!--            <el-popover placement="bottom" trigger="click" transition="el-zoom-in-top" :width="300" :persistent="false">-->
+<!--              <template #reference>-->
+<!--                <el-badge :value="newNotice > 0 ? newNotice : ''" :max="99">-->
+<!--                  <div class="message" />-->
+<!--                </el-badge>-->
+<!--              </template>-->
+<!--              <template #default>-->
+<!--                <notice></notice>-->
+<!--              </template>-->
+<!--            </el-popover>-->
+<!--          </div>-->
+<!--        </el-tooltip>-->
       </template>
       <div class="avatar-container">
         <el-dropdown class="right-menu-item hover-effect" trigger="click" @command="handleCommand">

+ 10 - 0
src/router/index.js

@@ -63,6 +63,16 @@ export const constantRoutes = [
         name: 'Index',
         meta: { title: '首页', icon: 'sy', affix: true }
       },
+      {
+        path: '/loginInfo',
+        component: () => import('@/views/monitor/loginInfo/index.vue'),
+        hidden: true
+      },
+      {
+        path: '/commodityManage',
+        component: () => import('@/views/commodityManage/index.vue'),
+        hidden: true
+      }
     ]
   },
   {

+ 72 - 0
src/views/commodityManage/CommodityManageForm.vue

@@ -0,0 +1,72 @@
+<template>
+  <div class="common-dialog">
+    <div class="common-dialog-content">
+      <div class="common-dialog-title-box">
+        <h3 class="common-dialog-title">新增商品</h3>
+      </div>
+      <div class="common-dialog-box">
+        <el-form ref="form" :model="formData" :rules="rules" label-width="auto">
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="20">
+              <el-form-item label="商品名称:" prop="name">
+                <el-input v-model="formData.name" placeholder="请输入商品名称" type="textarea" autosize />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="定价:" prop="fixedPrice">
+                <el-input v-model="formData.fixedPrice" placeholder="请输入定价" type="number" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="售价:" prop="price">
+                <el-input v-model="formData.price" placeholder="请输入售价" type="number" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+        </el-form>
+        <div class="common-dialog-footer">
+          <el-button @click="handleCancel">取消</el-button>
+          <el-button type="primary" @click="submitForm">确定</el-button>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script setup name="CommodityManageForm">
+const props = defineProps({
+  id: {
+    type: String,
+    required: true
+  }
+})
+const proxy = getCurrentInstance();
+const emits = defineEmits(['onCancel', 'onConfirm']);
+const formData = ref({
+  name: '',
+  fixedPrice: '',
+  price: ''
+});
+const rules = reactive({
+  name: [{ required: true, message: '商品名称不能为空', trigger: 'blur' }],
+  fixedPrice: [{ required: true, message: '定价不能为空', trigger: 'blur' }],
+  price: [{ required: true, message: '售价不能为空', trigger: 'blur' }],
+})
+// 取消
+const handleCancel = () => {
+  emits('onCancel');
+}
+
+// 提交表单
+const submitForm = () => {
+  const flag = props.id;
+  proxy?.$modal.msgSuccess(flag ? '修改成功' : '新增成功')
+  emits('onConfirm');
+};
+</script>
+
+<style lang="scss" scoped>
+
+</style>

+ 171 - 0
src/views/commodityManage/index.vue

@@ -0,0 +1,171 @@
+<template>
+  <div class="app-container">
+    <div v-show="!commodityManageFormState.show">
+      <transition name="fade">
+        <div>
+          <el-form ref="queryFormRef" :model="queryParams">
+            <el-row :gutter="20">
+              <el-col :span="6">
+                <el-form-item label="输入搜索:" prop="name">
+                  <el-input v-model="queryParams.name" placeholder="请输入报告名称" clearable @keyup.enter="handleQuery" />
+                </el-form-item>
+              </el-col>
+              <el-col :span="6">
+                <el-form-item label="服务分类:" prop="serviceClass">
+                  <el-select v-model="queryParams.serviceClass" clearable>
+                    <!--<el-option v-for="item in mm_event_type" :key="item.value" :label="item.label" :value="item.value"></el-option>-->
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="6">
+                <el-form-item label="服务状态:" prop="serviceStatus">
+                  <el-select v-model="queryParams.serviceStatus" clearable>
+                    <!--<el-option v-for="item in mm_event_type" :key="item.value" :label="item.label" :value="item.value"></el-option>-->
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="6">
+                <el-button type="primary" @click="handleQuery">搜索</el-button>
+                <el-button @click="resetQuery">重置</el-button>
+              </el-col>
+            </el-row>
+          </el-form>
+        </div>
+      </transition>
+      <el-row :gutter="10" class="mb8">
+        <el-col :span="1.5">
+          <el-button type="primary" icon="Plus" @click="handleAdd">新增</el-button>
+        </el-col>
+        <el-col :span="1.5">
+          <el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete(selectedRow)">删除</el-button>
+        </el-col>
+        <el-col :span="1.5">
+          <el-button plain icon="Upload" @click="handleImport">导入</el-button>
+        </el-col>
+        <el-col :span="1.5">
+          <el-button type="warning" plain icon="Download" @click="handleExport">导出</el-button>
+        </el-col>
+      </el-row>
+      <!-- 表格组件 -->
+      <el-table ref="multipleTable" v-loading="loading" :data="dataList" @selection-change="handleSelectionChange">
+        <el-table-column type="selection" width="55" align="center" />
+        <el-table-column label="编号" align="center" prop="id" />
+        <el-table-column label="商品名称" align="center" prop="name" />
+        <el-table-column label="定价" align="center" prop="fixedPrice" />
+        <el-table-column label="售价" align="center" prop="price" />
+        <el-table-column label="访问量" align="center" prop="visit" />
+        <el-table-column label="支付数" align="center" prop="payAmount" />
+        <el-table-column label="销量" align="center" prop="sales" />
+        <el-table-column label="退款数" align="center" prop="refundAmount" />
+        <el-table-column label="接口数" align="center" prop="" />
+        <el-table-column label="调用数" align="center" prop="" />
+        <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+          <template #default="scope">
+            <el-text class="common-btn-text-primary" @click="handleView(scope.row)">查看</el-text>
+            <el-text class="common-btn-text-danger" @click="handleDelete(scope.row)">删除</el-text>
+          </template>
+        </el-table-column>
+      </el-table>
+
+      <pagination v-show="total > 0" v-model:page="queryParams.page" v-model:limit="queryParams.page_size" :total="total" @pagination="getList" />
+    </div>
+    <CommodityManageForm v-if="commodityManageFormState.show" @onCancel="commodityManageFormState.show = false" @onConfirm="handleCommodityManageFormState" />
+  </div>
+</template>
+
+<script setup name="CommodityManage">
+import CommodityManageForm from "@/views/commodityManage/CommodityManageForm.vue";
+
+const { proxy } = getCurrentInstance();
+const queryFormRef = ref();
+// 搜索条件
+const queryParams = reactive({
+  name: '',
+  serviceClass: '',
+  page: '',
+  page_size: ''
+});
+// 表格数据
+const dataList = ref([{}]);
+// 加载中
+const loading = ref(false);
+// 总数
+const total = ref(0);
+// 表格选中的所有id
+const ids = ref([]);
+// 表格选中一个
+const single = ref(true);
+// 表格选中多个
+const multiple = ref(true);
+// 选中行的数据
+const selectedRow = ref(null);
+// 新增弹窗参数
+const commodityManageFormState = ref({
+  show: false,
+  id: ''
+})
+
+// 获取数据
+const getList = () => {
+  loading.value = true;
+  setTimeout(() => {
+    loading.value = false;
+  }, 500)
+}
+// 点击查询
+const handleQuery = () => {
+  commodityManageFormState
+  queryParams.page = 1;
+  getList();
+};
+
+// 重置查询条件
+const resetQuery = () => {
+  if (queryFormRef.value) {
+    queryFormRef.value.resetFields(); // 重置表单并清除校验状态
+  }
+  getList();
+};
+
+// 删除按钮操作
+const handleDelete = (row) => {
+  proxy?.$modal.confirm('是否确认删除名称为"' + row.menuName + '"的数据项?').then(() => {
+    getList();
+    proxy?.$modal.msgSuccess('删除成功');
+  });
+};
+
+// 展示新增修改界面
+const handleAdd = (id) => {
+  commodityManageFormState.value.id = true;
+  commodityManageFormState.value.show = true;
+};
+
+// 新增修改确认回调
+const handleCommodityManageFormState = () => {
+  commodityManageFormState.value.show = false;
+  handleQuery();
+};
+
+const handleView = () => {};
+
+// 多选框选中数据
+const handleSelectionChange = (selection) => {
+  ids.value = selection.map((item) => item.reportId);
+  selectedRow.value = selection.length === 1 ? selection[0] : null;
+  single.value = selection.length != 1;
+  multiple.value = !selection.length;
+};
+
+//导入
+const handleImport = () => {};
+
+// 导出
+const handleExport = () => {};
+
+getList();
+</script>
+
+<style lang="scss" scoped>
+
+</style>

+ 42 - 28
src/views/monitor/logininfo/index.vue

@@ -2,34 +2,48 @@
   <div class="app-container">
     <transition :enter-active-class="proxy?.animate.searchAnimate.enter"
                 :leave-active-class="proxy?.animate.searchAnimate.leave">
-      <div v-show="showSearch" class="mb-[10px]">
-        <el-form ref="queryFormRef" :model="queryParams" :inline="true">
-          <el-form-item label="登录地址" prop="ipaddr">
-            <el-input v-model="queryParams.ipaddr" placeholder="请输入登录地址" clearable @keyup.enter="handleQuery"/>
-          </el-form-item>
-          <el-form-item label="用户名称" prop="userName">
-            <el-input v-model="queryParams.userName" placeholder="请输入用户名称" clearable @keyup.enter="handleQuery"/>
-          </el-form-item>
-          <el-form-item label="状态" prop="status">
-            <el-select v-model="queryParams.status" placeholder="登录状态" clearable>
-              <el-option v-for="dict in sys_common_status" :key="dict.value" :label="dict.label" :value="dict.value"/>
-            </el-select>
-          </el-form-item>
-          <el-form-item label="登录时间" style="width: 308px">
-            <el-date-picker
-              v-model="dateRange"
-              value-format="YYYY-MM-DD HH:mm:ss"
-              type="daterange"
-              range-separator="-"
-              start-placeholder="开始日期"
-              end-placeholder="结束日期"
-              :default-time="[new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 1, 1, 23, 59, 59)]"
-            ></el-date-picker>
-          </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>
+      <div v-show="showSearch">
+        <el-form ref="queryFormRef" :model="queryParams">
+          <el-row :gutter="20">
+            <el-col :span="8">
+              <el-form-item label="登录地址:" prop="ipaddr">
+                <el-input v-model="queryParams.ipaddr" placeholder="请输入登录地址" clearable
+                          @keyup.enter="handleQuery"/>
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="用户名称:" prop="userName">
+                <el-input v-model="queryParams.userName" placeholder="请输入用户名称" clearable @keyup.enter="handleQuery"/>
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="状态:" prop="status">
+                <el-select v-model="queryParams.status" placeholder="登录状态" clearable>
+                  <el-option v-for="dict in sys_common_status" :key="dict.value" :label="dict.label"
+                             :value="dict.value"/>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="登录时间:">
+                <el-date-picker
+                  v-model="dateRange"
+                  value-format="YYYY-MM-DD HH:mm:ss"
+                  type="daterange"
+                  range-separator="-"
+                  start-placeholder="开始日期"
+                  end-placeholder="结束日期"
+                  :default-time="[new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 1, 1, 23, 59, 59)]"
+                ></el-date-picker>
+              </el-form-item>
+            </el-col>
+            <el-col :span="6">
+              <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-col>
+          </el-row>
         </el-form>
       </div>
     </transition>