Kaynağa Gözat

积分管理

MS-QJVSRANLTYEO\Administrator 4 yıl önce
ebeveyn
işleme
c834df71b0

+ 7 - 0
Yijia-SaaS/pom.xml

@@ -211,6 +211,12 @@
                 <artifactId>yijia-market</artifactId>
                 <version>${yijia.version}</version>
             </dependency>
+            <!-- 积分管理-->
+            <dependency>
+                <groupId>com.yijia</groupId>
+                <artifactId>yijia-integral</artifactId>
+                <version>${yijia.version}</version>
+            </dependency>
             <dependency>
                 <groupId>org.apache.httpcomponents</groupId>
                 <artifactId>httpcore</artifactId>
@@ -239,6 +245,7 @@
         <module>yijia-station</module>
         <module>yijia-customer</module>
         <module>yijia-market</module>
+        <module>yijia-integral</module>
     </modules>
     <packaging>pom</packaging>
     <dependencies>

+ 53 - 0
Yijia-SaaS/yijia-ui/src/api/integral/record.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询客户积分记录列表
+export function listRecord(query) {
+  return request({
+    url: '/integral/record/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询客户积分记录详细
+export function getRecord(id) {
+  return request({
+    url: '/integral/record/' + id,
+    method: 'get'
+  })
+}
+
+// 新增客户积分记录
+export function addRecord(data) {
+  return request({
+    url: '/integral/record',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改客户积分记录
+export function updateRecord(data) {
+  return request({
+    url: '/integral/record',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除客户积分记录
+export function delRecord(id) {
+  return request({
+    url: '/integral/record/' + id,
+    method: 'delete'
+  })
+}
+
+// 导出客户积分记录
+export function exportRecord(query) {
+  return request({
+    url: '/integral/record/export',
+    method: 'get',
+    params: query
+  })
+}

+ 53 - 0
Yijia-SaaS/yijia-ui/src/api/station/noorder.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询订单支付列表
+export function listOrder(query) {
+  return request({
+    url: '/station/noorder/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询订单支付详细
+export function getOrder(orderId) {
+  return request({
+    url: '/station/noorder/' + orderId,
+    method: 'get'
+  })
+}
+
+// 新增订单支付
+export function addOrder(data) {
+  return request({
+    url: '/station/noorder',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改订单支付
+export function updateOrder(data) {
+  return request({
+    url: '/station/noorder',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除订单支付
+export function delOrder(orderId) {
+  return request({
+    url: '/station/noorder/' + orderId,
+    method: 'delete'
+  })
+}
+
+// 导出订单支付
+export function exportOrder(query) {
+  return request({
+    url: '/station/noorder/export',
+    method: 'get',
+    params: query
+  })
+}

+ 228 - 0
Yijia-SaaS/yijia-ui/src/views/integral/record/index.vue

@@ -0,0 +1,228 @@
+<template>
+  <div class="app-container">
+    <el-table v-loading="loading" :data="recordList" @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="unionId" />
+      <el-table-column label="客户名称" align="center" prop="customerName" />
+      <el-table-column label="积分记录类型:-,消耗; +,增加;" align="center" prop="recordType" />
+      <el-table-column label="消耗或增加积分" align="center" prop="integral" />
+      <el-table-column label="油站ID" align="center" prop="stationId" />
+      <el-table-column label="油站名称" align="center" prop="stationName" />
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['integral:record:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['integral:record:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改客户积分记录对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="微信用户唯一标识" prop="unionId">
+          <el-input v-model="form.unionId" placeholder="请输入微信用户唯一标识" />
+        </el-form-item>
+        <el-form-item label="客户名称" prop="customerName">
+          <el-input v-model="form.customerName" placeholder="请输入客户名称" />
+        </el-form-item>
+        <el-form-item label="积分记录类型:-,消耗; +,增加;" prop="recordType">
+          <el-select v-model="form.recordType" placeholder="请选择积分记录类型:-,消耗; +,增加;">
+            <el-option label="请选择字典生成" value="" />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="消耗或增加积分" prop="integral">
+          <el-input v-model="form.integral" placeholder="请输入消耗或增加积分" />
+        </el-form-item>
+        <el-form-item label="油站ID" prop="stationId">
+          <el-input v-model="form.stationId" placeholder="请输入油站ID" />
+        </el-form-item>
+        <el-form-item label="油站名称" prop="stationName">
+          <el-input v-model="form.stationName" placeholder="请输入油站名称" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listRecord, getRecord, delRecord, addRecord, updateRecord, exportRecord } from "@/api/integral/record";
+
+export default {
+  name: "Record",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 客户积分记录表格数据
+      recordList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        unionId: null,
+        customerName: null,
+        recordType: null,
+        integral: null,
+        stationId: null,
+        stationName: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询客户积分记录列表 */
+    getList() {
+      this.loading = true;
+      listRecord(this.queryParams).then(response => {
+        this.recordList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        unionId: null,
+        customerName: null,
+        recordType: null,
+        integral: null,
+        createTime: null,
+        stationId: null,
+        stationName: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加客户积分记录";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getRecord(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改客户积分记录";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateRecord(this.form).then(response => {
+              this.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addRecord(this.form).then(response => {
+              this.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$confirm('是否确认删除客户积分记录编号为"' + ids + '"的数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return delRecord(ids);
+        }).then(() => {
+          this.getList();
+          this.msgSuccess("删除成功");
+        })
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      const queryParams = this.queryParams;
+      this.$confirm('是否确认导出所有客户积分记录数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return exportRecord(queryParams);
+        }).then(response => {
+          this.download(response.msg);
+        })
+    }
+  }
+};
+</script>

+ 280 - 0
Yijia-SaaS/yijia-ui/src/views/station/order/notOil.vue

@@ -0,0 +1,280 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+
+      <el-form-item label="客户姓名" prop="consumer">
+        <el-input
+          v-model="queryParams.likeConsumer"
+          placeholder="请输入客户姓名"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="联系电话" prop="orderNo">
+        <el-input
+          v-model="queryParams.likeCustomerPhone"
+          placeholder="请输入联系电话"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="油站名称" prop="stationId">
+        <el-select
+          v-model="queryParams.stationId"
+          placeholder="请选择油站"
+          clearable
+          size="small"
+        >
+          <el-option
+            v-for="item in stationOptions"
+            :key="item.deptId"
+            :label="item.deptName"
+            :value="item.deptId"
+          ></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="创建时间" prop="createdDate">
+        <el-date-picker style="width: 350px"
+                        v-model="dateRangeCreatedDate" size="mini" value-format="yyyy-MM-dd HH:mm:ss"
+                        type="datetimerange"
+                        range-separator="至"
+                        start-placeholder="开始日期"
+                        end-placeholder="结束日期">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+        <el-button icon="el-icon-download" size="mini" @click="handleExport"  v-hasPermi="['station:order:export']">导出</el-button>
+      </el-form-item>
+    </el-form>
+    <el-table v-loading="loading" :data="orderList" >
+      <el-table-column v-if="false" label="订单id" align="center" prop="orderId" />
+      <el-table-column label="订单号"  width="200" align="center" prop="orderNo" />
+      <el-table-column label="应付金额" align="center" prop="receivableAmt" />
+      <el-table-column label="实付金额" align="center" prop="amt" />
+      <el-table-column label="消费者" width="120" align="center" prop="consumer" />
+      <el-table-column label="加油员" width="120" align="center" prop="oilPersonnel" />
+
+      <el-table-column label="支付类型" align="center" prop="payType" :formatter="payTypeFotmat"/>
+      <el-table-column label="油站名称" width="120" align="center" v-if="false" prop="stationName" />
+      <el-table-column v-if="false" label="用户id(消费者)" align="center" prop="consumerId" />
+      <el-table-column v-if="false" label="油站id" align="center" prop="stationId" />
+      <el-table-column label="状态" align="center" prop="status" :formatter="statusFotmat"/>
+      <el-table-column label="支付方式" align="center" prop="payWay" :formatter="payWayFotmat"/>
+      <el-table-column label="支付时间" align="center" prop="payDate" width="150">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.payDate, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="创建时间" align="center" prop="createdDate" width="150">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.createdDate, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="订单类型" align="center" prop="
+
+" v-if="false" />
+    </el-table>
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+  </div>
+</template>
+<script>
+  import { listOrder, exportOrder } from "@/api/station/noorder";
+  import {stationinfo} from "@/api/station/gun";
+
+  export default {
+    name: "Order",
+    data() {
+      return {
+         //创建订单时间间隔
+        dateRangeCreatedDate:[],
+        // 遮罩层
+        loading: true,
+        // 选中数组
+        ids: [],
+        // 非单个禁用
+        single: true,
+        // 非多个禁用
+        multiple: true,
+        // 显示搜索条件
+        showSearch: true,
+        // 总条数
+        total: 0,
+        // 订单支付表格数据
+        orderList: [],
+        oilNameOptions: [],
+        //字典
+        payTypeOptions:[],
+        payWayOptions:[],
+        //下拉油站
+        stationOptions:[],
+        // 弹出层标题
+        title: "",
+        // 是否显示弹出层
+        open: false,
+        // 查询参数
+        queryParams: {
+          pageNum: 1,
+          pageSize: 10,
+          orderNo: null,
+          oilGun: null,
+          oilName: null,
+          consumerId: null,
+          consumer: null,
+          amt: null,
+          stationId: null,
+          status: null,
+          orderLiters: null,
+          payType: null,
+          payWay: null,
+          stationName: null,
+          payDate: null,
+          payMaxDate: null,
+          payMinDate: null,
+          createdMaxDate: null,
+          createdMinDate: null,
+          oilPersonnel: null,
+          createdDate: null,
+          orderType:2,
+          likeConsumer: null,
+          likeCustomerPhone: null,
+          likeCarNo: null
+        },
+        // 表单参数
+        form: {},
+        // 表单校验
+        rules: {
+        }
+      };
+    },
+    created() {
+      this.getList();
+      //字典
+      this.getDicts("pay_type").then(response => {
+        this.payTypeOptions = response.data;
+      });
+      this.getDicts("pay_way").then(response => {
+        this.payWayOptions = response.data;
+      });
+      stationinfo().then(response => {
+        this.stationOptions = response.rows;
+      });
+      this.getDicts("oil_name").then(response => {
+        this.oilNameOptions = response.data;
+      });
+    },
+    methods: {
+      payTypeFotmat(row, column){
+        if(row.payType === 'wx'){
+          return '微信支付'
+        }else if(row.payType === 'zfb'){
+          return '支付宝'
+        }else if(row.payType === 'xj'){
+          return '现金'
+        }else if(row.payType === 'POS'){
+          return 'POS机支付'
+        }
+      },
+      payWayFotmat(row, column){
+        if(row.payWay === '02'){
+          return '公众号'
+        }else if(row.payWay === '03'){
+          return '小程序'
+        }
+      },
+      statusFotmat(row, column){
+        if(row.status === '0'){
+          return '未支付'
+        }else if(row.status === '1'){
+          return '已支付'
+        }
+      },
+      //orderTypeFotmat
+      // orderTypeFotmat(row, column){
+      //   if(row.orderType === '1'){
+      //     return '柴油'
+      //   }else if(row.orderType === '2'){
+      //     return '汽油'
+      //   }
+      // },
+
+      /** 查询订单支付列表 */
+      getList() {
+        this.loading = true;
+        listOrder(this.addDateRange(this.queryParams, this.dateRangeCreatedDate)).then(response => {
+          this.orderList = response.rows;
+          this.total = response.total;
+          this.loading = false;
+        });
+      },
+      onInstitutionChang(e){
+        let obj = {};
+        obj = this.stationOptions.find((item)=>{//这里的userList就是上面遍历的数据源
+          return item.stationId === e;//筛选出匹配数据
+        })
+        this.form.stationName=obj.stationName;
+      },
+      // 取消按钮
+      cancel() {
+        this.open = false;
+        this.reset();
+      },
+      // 表单重置
+      reset() {
+        this.form = {
+          orderId: null,
+          orderNo: null,
+          oilGun: null,
+          oilName: null,
+          consumerId: null,
+          consumer: null,
+          amt: null,
+          stationId: null,
+          status: "0",
+          orderLiters: null,
+          payType: null,
+          payWay: null,
+          payDate: null,
+          oilPersonnel: null,
+          createdDate: null,
+          orderType: null
+        };
+        this.resetForm("form");
+      },
+      /** 搜索按钮操作 */
+      handleQuery() {
+        this.queryParams.pageNum = 1;
+        this.getList();
+      },
+      /** 重置按钮操作 */
+      resetQuery() {
+        this.dateRangeCreatedDate =[];
+        this.resetForm("queryForm");
+        this.handleQuery();
+      },
+
+      /** 导出按钮操作 */
+      handleExport() {
+        const queryParams = this.queryParams;
+        this.$confirm('是否确认导出所有订单支付数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return exportOrder(queryParams);
+        }).then(response => {
+          this.download(response.msg);
+        })
+      }
+    }
+  };
+</script>