瀏覽代碼

1. 新增设备管理

MONSTER-ygh 1 年之前
父節點
當前提交
037f9d1028

+ 2 - 2
src/api/device/gateMr.js

@@ -5,7 +5,7 @@ import request from '@/utils/request'
 // 表单模板列表
 export const pageList = (query) => {
   return request({
-    url: '/system/gates/pageList',
+    url: '/system/deviceInfo/pageList',
     method: 'get',
     params: query
   })
@@ -19,7 +19,7 @@ export const pageList = (query) => {
 // 闸机开/关
 export const openOrClose = (data) => {
   return request({
-    url: '/system/gates/openOrClose',
+    url: '/system/deviceInfo/openOrClose',
     method: 'get',
     params: data
   })

+ 4 - 4
src/api/device/pda.js

@@ -5,7 +5,7 @@ import request from '@/utils/request'
 // 表单模板列表
 export const pageList = (query) => {
   return request({
-    url: '/system/agreementInfo/pageList',
+    url: '/system/deviceInfo/pageList',
     method: 'get',
     params: query
   })
@@ -14,7 +14,7 @@ export const pageList = (query) => {
 // 新增
 export const saveAndAdd = (data) => {
   return request({
-    url: '/system/agreementInfo/insertOrUpdate',
+    url: '/system/deviceInfo/save',
     method: 'post',
     data: data
   })
@@ -23,7 +23,7 @@ export const saveAndAdd = (data) => {
 // 修改/更新  保存 
 export const saveAndEdit = (data) => {
   return request({
-    url: '/system/agreementInfo/insertOrUpdate',
+    url: '/system/deviceInfo/save',
     method: 'post',
     data: data
   })
@@ -41,7 +41,7 @@ export const getDetails = (data) => {
 // 删除模板
 export const deleteById = (id) => {
   return request({
-    url: '/system/agreementInfo/deleteById',
+    url: '/system/deviceInfo/deleteById',
     method: 'delete',
     params: {id:id}
   })

+ 169 - 0
src/views/device/IDcard/dialog/dataBox.vue

@@ -0,0 +1,169 @@
+<!--
+ * @Description: 新增/编辑弹框
+ * @Author: 空白格
+ * @Date: 2023-07-04 13:55:00
+ * @LastEditors: 空白格
+ * @LastEditTime: 2023-07-06 09:08:39
+ * @FilePath: \cattle_webui\src\views\system\noticeMgr\Dialog\AddOrEditDialog.vue
+ * @Copyright: Copyright (c) 2016~2023 by 空白格, All Rights Reserved.
+-->
+<template>
+  <el-dialog
+    :title="title"
+    :visible.sync="open"
+    width="700px"
+    :close-on-click-modal="false"
+    @close="cancel"
+  >
+    <div class="dialog"
+    >
+      <el-form 
+      v-loading="loading"
+      :model="form" 
+      ref="form" 
+      :rules="rules" 
+      label-width="120px">
+        <el-form-item label="设备名称:" prop="deviceName">
+          <el-input v-if="type!=3" v-model="form.deviceName" placeholder="请输入设备名称" />
+          <span v-else>{{ form.deviceName }}</span>
+        </el-form-item>
+        <el-form-item label="设备编号:" prop="deviceNo">
+          <el-input v-if="type!=3" v-model="form.deviceNo" placeholder="请输入设备编号" />
+          <span v-else>{{ form.deviceNo }}</span>
+        </el-form-item>
+        <el-form-item label="所在位置:" prop="deviceAddress">
+          <el-input v-model="form.deviceAddress" placeholder="请输入所在位置" />
+        </el-form-item>
+        <el-form-item label="设备类型:" prop="deviceType">
+          <dict-tag :options="dict.type.device_sys_type" :value="form.deviceType"/>
+        </el-form-item>
+      </el-form>
+    </div>
+    <span slot="footer" class="dialog-footer">
+      <el-button @click="cancel">关闭</el-button>
+      <el-button
+        type="primary"
+        @click="submitForm"
+        :loading="loading"
+        element-loading-text="提交中..."
+        v-if="type!=3"
+      >
+      保存
+      </el-button>
+    </span>
+  </el-dialog>
+</template>
+
+<script>
+import { 
+  saveAndAdd,
+  saveAndEdit} from "@/api/device/pda";
+export default {
+  name: "addAndEdit",
+  dicts: ['device_sys_type'],
+  data() {
+    return {
+      title: "编辑",
+      type: 0,
+      model: "EDIT",
+      open: false,
+      loading: false,
+      form: {},
+      rules: {
+        deviceName: [{ required: true, message: "请输入设备名称", trigger: "blur" }],
+        deviceNo: [
+          { required: true, message: "请输入设备编号", trigger: "blur" },
+        ],
+        deviceType: [
+          { required: true, message: "请输入设备类型", trigger: "blur" },
+        ],
+        deviceAddress: [
+          { required: true, message: "请输入所在位置", trigger: "blur" },
+        ],
+      },
+    };
+  },
+  methods: {
+    /**
+     * 打开弹框
+     * @date 2022-09-20
+     * @param {any} obj
+     * @returns {any}
+     */
+    openDialog(title, obj,type) {
+      this.title = title;
+      this.type = type
+      this.open = true;
+      if (obj){
+        this.$nextTick(() => {
+          this.form = Object.assign({},this.form,obj)
+        });
+      }else{
+        this.$nextTick(() => {
+          this.$refs["form"].clearValidate();
+          this.$set(this.form,'deviceType',6)
+        });
+      }
+    },
+    /**
+     * 保存
+     * @date 2022-09-20
+     * @returns {any}
+     */
+    submitForm() {
+      this.$refs["form"].validate(async (valid) => {
+        if (valid) {
+          try {
+            this.loading = true;
+            if(this.form.id) {
+              const { code } = await saveAndEdit({ ...this.form });
+              if (code === 200) {
+                this.$message.success("操作成功!");
+                this.$emit("getList");
+                this.cancel();
+              }
+            }else {
+              const { code } = await saveAndAdd ({ ...this.form });
+              if (code === 200) {
+                this.$message.success("操作成功!");
+                this.$emit("getList");
+                this.cancel();
+              }
+            }
+            
+          } catch (error) {
+          } finally {
+            this.loading = false;
+          }
+        }
+      });
+    },
+    /**
+     * 重置
+     * @date 2022-09-20
+     * @returns {any}
+     */
+    reset() {
+      this.$refs["form"].resetFields();
+      this.form.id = undefined;
+    },
+    /**
+     * 关闭弹框
+     * @date 2022-09-20
+     * @returns {any}
+     */
+    cancel() {
+      this.reset();
+      this.open = false;
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.dialog {
+  padding: 0 30px;
+  max-height: 65vh;
+  overflow-y: auto;
+}
+</style>

+ 167 - 0
src/views/device/IDcard/index.vue

@@ -0,0 +1,167 @@
+<template>
+  <!-- 身份证  -->
+  <div class="app-container">
+    <el-row :gutter="10" class="mb8"  style="margin-left: 0; margin-top: 10px">
+      <el-button
+        type="primary"
+        plain
+        icon="el-icon-plus"
+        size="mini"
+        @click="handleAdd"
+        v-hasPermi="['device:IDcard:add']"
+      >新增</el-button>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table ref="tables" v-loading="loading" :data="dataList" border>
+      <el-table-column label="序号" align="center" type="index" width="60"></el-table-column>
+      <el-table-column label="设备名称" align="center" prop="deviceName" />
+      <el-table-column label="设备编码" align="center" prop="deviceNo" />
+      <el-table-column label="所在位置" align="center" prop="deviceAddress" />
+      <el-table-column label="设备类型" align="center" prop="deviceType">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.device_sys_type" :value="scope.row.deviceType"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="添加时间" align="center" prop="createTime" width="160" >
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.createTime) }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="操作" align="center" width="200" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            @click="openDetails(scope.row)"
+            v-hasPermi="['device:IDcard:details']"
+          >详情</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['device:IDcard:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            @click="handleDelete(scope.row,scope.index)"
+            v-hasPermi="['device:IDcard:delete']"
+          >删除</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"
+    />
+    <!-- 详情 -->
+    <!-- 新增/编辑弹框 -->
+    <data-box
+      ref="addAndEdit"
+      @getList="getList"
+    />
+  </div>
+</template>
+
+<script>
+import { pageList,deleteById } from "@/api/device/pda";
+import dataBox from "./dialog/dataBox.vue";
+export default {
+  name: "Pda",
+  components: { dataBox },
+  dicts: ['device_sys_type'],
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 用户表格数据
+      dataList: null,
+      // 弹出层标题
+      title: "",
+
+      // 是否显示弹出层
+      open: false,
+      // 日期范围
+      dateRange: [],
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+      },
+      handleExportLoading: false,
+      tableData: {}
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询列表 */
+    getList() {
+      this.loading = true;
+      pageList({...this.queryParams,deviceType:6})
+      .then(response => {
+          this.dataList = response.data.rows;
+          this.total = response.data.total;
+          this.loading = false;
+        }
+      );
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.dateRange = [];
+      this.$set(this.queryParams, 'id', '');
+      this.$set(this.queryParams, 'businessType', '');
+      this.$set(this.queryParams, 'incomeExpenses', '');
+      this.queryParams.pageNum = 1;
+      this.handleQuery();
+    },
+    /** 详情按钮操作 */
+    openDetails(row, type) {
+      this.$refs["addAndEdit"].openDialog("详情", row);
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.$refs["addAndEdit"].openDialog("新增数据", null);
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.$refs["addAndEdit"].openDialog("修改数据", row);
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const dataIds = row.id || this.ids;
+      this.$modal.confirm('是否确认删除数据编号为"' + dataIds + '"的数据项?').then(function() {
+        return deleteById(dataIds);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch((e) => {console.log("e====",e) });
+    }
+  }
+};
+</script>

+ 23 - 51
src/views/device/pda/dialog/dataBox.vue

@@ -23,39 +23,27 @@
       ref="form" 
       :rules="rules" 
       label-width="120px">
-        <el-form-item label="设备名称:" prop="name">
-          <el-input v-model="form.name" placeholder="请输入设备名称" disabled />
+        <el-form-item label="设备名称:" prop="deviceName">
+          <el-input v-if="type!=3" v-model="form.deviceName" placeholder="请输入设备名称" />
+          <span v-else>{{ form.deviceName }}</span>
         </el-form-item>
-        <el-form-item label="设备编号:" prop="name">
-          <el-input v-model="form.name" placeholder="请输入设备编号" disabled />
+        <el-form-item label="设备编号:" prop="deviceNo">
+          <el-input v-if="type!=3" v-model="form.deviceNo" placeholder="请输入设备编号" />
+          <span v-else>{{ form.deviceNo }}</span>
         </el-form-item>
-        <el-form-item label="协议类型" prop="type">
-          <el-select
-            disabled
-            v-model="form.type"
-            placeholder="请选择协议类型"
-            style="width: 100%"
-          >
-            <el-option
-              v-for="(item, index) in dict.type.device_sys_type"
-              :key="index"
-              :value="Number(item.value)"
-              :label="item.label"
-            />
-          </el-select>
-        </el-form-item>
-        <el-form-item label="支付终端号:" prop="name">
-          <el-input v-model="form.name" placeholder="请输入支付终端号" disabled />
+        <el-form-item label="设备类型:" prop="deviceType">
+          <dict-tag :options="dict.type.device_sys_type" :value="form.deviceType"/>
         </el-form-item>
       </el-form>
     </div>
     <span slot="footer" class="dialog-footer">
-      <el-button @click="cancel">取消</el-button>
+      <el-button @click="cancel">关闭</el-button>
       <el-button
         type="primary"
         @click="submitForm"
         :loading="loading"
         element-loading-text="提交中..."
+        v-if="type!=3"
       >
       保存
       </el-button>
@@ -66,26 +54,25 @@
 <script>
 import { 
   saveAndAdd,
-  saveAndEdit, 
-  getDetails } from "@/api/device/pda";
+  saveAndEdit} from "@/api/device/pda";
 export default {
   name: "addAndEdit",
   dicts: ['device_sys_type'],
   data() {
     return {
       title: "编辑",
+      type: 0,
       model: "EDIT",
       open: false,
       loading: false,
-      form: {
-        id: undefined,
-        type: "",
-        content: "",
-      },
+      form: {},
       rules: {
-        type: [{ required: true, message: "协议类型", trigger: "blur" }],
-        content: [
-          { required: true, message: "请输入内容详情", trigger: "blur" },
+        deviceName: [{ required: true, message: "请输入设备名称", trigger: "blur" }],
+        deviceNo: [
+          { required: true, message: "请输入设备编号", trigger: "blur" },
+        ],
+        deviceType: [
+          { required: true, message: "请输入设备类型", trigger: "blur" },
         ],
       },
     };
@@ -97,36 +84,21 @@ export default {
      * @param {any} obj
      * @returns {any}
      */
-    openDialog(title, obj) {
+    openDialog(title, obj,type) {
       this.title = title;
+      this.type = type
       this.open = true;
       if (obj){
         this.$nextTick(() => {
-          this.form.id = obj.id;
-          this.form.name = obj.name;
-          this.form.type = obj.type;
-          this.form.content = obj.content;
+          this.form = Object.assign({},this.form,obj)
         });
-        this.getDetailsFun(obj)
       }else{
         this.$nextTick(() => {
           this.$refs["form"].clearValidate();
+          this.$set(this.form,'deviceType',3)
         });
       }
     },
-    /** 
-     * 获取详情
-     */
-    async getDetailsFun(data) {
-      try {
-        this.loading = true;
-        const { res, code } = await getDetails({ ...data });
-      } catch (error) { 
-        console.error("error===",error)
-      } finally {
-        this.loading = false;
-      }
-    },
     /**
      * 保存
      * @date 2022-09-20

+ 15 - 38
src/views/device/pda/index.vue

@@ -14,10 +14,13 @@
 
     <el-table ref="tables" v-loading="loading" :data="dataList" border>
       <el-table-column label="序号" align="center" type="index" width="60"></el-table-column>
-      <el-table-column label="设备名称" align="center" prop="" />
-      <el-table-column label="设备编码" align="center" prop="" />
-      <el-table-column label="支付终端码" align="center" prop="" />
-      <el-table-column label="在线状态" align="center" prop="" />
+      <el-table-column label="设备名称" align="center" prop="deviceName" />
+      <el-table-column label="设备编码" align="center" prop="deviceNo" />
+      <el-table-column label="设备类型" align="center" prop="deviceType">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.device_sys_type" :value="scope.row.deviceType"/>
+        </template>
+      </el-table-column>
       <el-table-column label="添加时间" align="center" prop="createTime" width="160" >
         <template slot-scope="scope">
           <span>{{ parseTime(scope.row.createTime) }}</span>
@@ -35,7 +38,6 @@
             size="mini"
             type="text"
             @click="handleUpdate(scope.row)"
-            v-if="scope.row.status != 0"
             v-hasPermi="['device:pda:edit']"
           >修改</el-button>
           <el-button
@@ -66,12 +68,11 @@
 
 <script>
 import { pageList,deleteById } from "@/api/device/pda";
-import { exportExcel } from '@/utils/exportexcel'
 import dataBox from "./dialog/dataBox.vue";
 export default {
-  name: "agreement",
-  dicts: ['agreement_type'],
+  name: "Pda",
   components: { dataBox },
+  dicts: ['device_sys_type'],
   data() {
     return {
       // 遮罩层
@@ -100,30 +101,6 @@ export default {
         pageNum: 1,
         pageSize: 10,
       },
-      statusList: [
-        {id: 1, name: '申请中', value: 0},
-        {id: 2, name: '退款成功', value: 1},
-        {id: 3, name: '退款失败', value: 2},
-        {id: 4, name: '退款中', value: 3},
-      ],
-      sourceMap: {
-        1: '小程序',
-        2: '美团',
-        3: '携程',
-        4: '公众号',
-        5: '支付宝',
-      },
-      incomeExpensesList: [
-        {id: 1, name: '收入', value: '收入'},
-        {id: 2, name: '支出', value: '支出'},
-      ],
-      businessTypeList: [
-        {id: 1, name: '购买演出票', value: '购买演出票'},
-        {id: 2, name: '票务退款', value: '票务退款'},
-      ],
-      visibleStatus: false,
-      newObj: {},
-      visibleType: '',
       handleExportLoading: false,
       tableData: {}
     };
@@ -135,7 +112,7 @@ export default {
     /** 查询列表 */
     getList() {
       this.loading = true;
-      pageList(this.queryParams)
+      pageList({...this.queryParams,deviceType:3})
       .then(response => {
           this.dataList = response.data.rows;
           this.total = response.data.total;
@@ -163,25 +140,25 @@ export default {
     },
     /** 详情按钮操作 */
     openDetails(row, type) {
-      this.$refs["addAndEdit"].openDialog("详情", row);
+      this.$refs["addAndEdit"].openDialog("详情", row,3);
     },
     /** 新增按钮操作 */
     handleAdd() {
-      this.$refs["addAndEdit"].openDialog("新增数据", null);
+      this.$refs["addAndEdit"].openDialog("新增数据", null,1);
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
-      this.$refs["addAndEdit"].openDialog("修改数据", row);
+      this.$refs["addAndEdit"].openDialog("修改数据", row,2);
     },
     /** 删除按钮操作 */
     handleDelete(row) {
       const dataIds = row.id || this.ids;
       this.$modal.confirm('是否确认删除数据编号为"' + dataIds + '"的数据项?').then(function() {
-        return deleteById(userIds);
+        return deleteById(dataIds);
       }).then(() => {
         this.getList();
         this.$modal.msgSuccess("删除成功");
-      }).catch(() => {});
+      }).catch((e) => {console.log("e====",e) });
     }
   }
 };

+ 169 - 0
src/views/device/printer/dialog/dataBox.vue

@@ -0,0 +1,169 @@
+<!--
+ * @Description: 新增/编辑弹框
+ * @Author: 空白格
+ * @Date: 2023-07-04 13:55:00
+ * @LastEditors: 空白格
+ * @LastEditTime: 2023-07-06 09:08:39
+ * @FilePath: \cattle_webui\src\views\system\noticeMgr\Dialog\AddOrEditDialog.vue
+ * @Copyright: Copyright (c) 2016~2023 by 空白格, All Rights Reserved.
+-->
+<template>
+  <el-dialog
+    :title="title"
+    :visible.sync="open"
+    width="700px"
+    :close-on-click-modal="false"
+    @close="cancel"
+  >
+    <div class="dialog"
+    >
+      <el-form 
+      v-loading="loading"
+      :model="form" 
+      ref="form" 
+      :rules="rules" 
+      label-width="120px">
+        <el-form-item label="设备名称:" prop="deviceName">
+          <el-input v-if="type!=3" v-model="form.deviceName" placeholder="请输入设备名称" />
+          <span v-else>{{ form.deviceName }}</span>
+        </el-form-item>
+        <el-form-item label="设备编号:" prop="deviceNo">
+          <el-input v-if="type!=3" v-model="form.deviceNo" placeholder="请输入设备编号" />
+          <span v-else>{{ form.deviceNo }}</span>
+        </el-form-item>
+        <el-form-item label="所在位置:" prop="deviceAddress">
+          <el-input v-model="form.deviceAddress" placeholder="请输入所在位置" />
+        </el-form-item>
+        <el-form-item label="设备类型:" prop="deviceType">
+          <dict-tag :options="dict.type.device_sys_type" :value="form.deviceType"/>
+        </el-form-item>
+      </el-form>
+    </div>
+    <span slot="footer" class="dialog-footer">
+      <el-button @click="cancel">关闭</el-button>
+      <el-button
+        type="primary"
+        @click="submitForm"
+        :loading="loading"
+        element-loading-text="提交中..."
+        v-if="type!=3"
+      >
+      保存
+      </el-button>
+    </span>
+  </el-dialog>
+</template>
+
+<script>
+import { 
+  saveAndAdd,
+  saveAndEdit} from "@/api/device/pda";
+export default {
+  name: "addAndEdit",
+  dicts: ['device_sys_type'],
+  data() {
+    return {
+      title: "编辑",
+      type: 0,
+      model: "EDIT",
+      open: false,
+      loading: false,
+      form: {},
+      rules: {
+        deviceName: [{ required: true, message: "请输入设备名称", trigger: "blur" }],
+        deviceNo: [
+          { required: true, message: "请输入设备编号", trigger: "blur" },
+        ],
+        deviceType: [
+          { required: true, message: "请输入设备类型", trigger: "blur" },
+        ],
+        deviceAddress: [
+          { required: true, message: "请输入所在位置", trigger: "blur" },
+        ],
+      },
+    };
+  },
+  methods: {
+    /**
+     * 打开弹框
+     * @date 2022-09-20
+     * @param {any} obj
+     * @returns {any}
+     */
+    openDialog(title, obj,type) {
+      this.title = title;
+      this.type = type
+      this.open = true;
+      if (obj){
+        this.$nextTick(() => {
+          this.form = Object.assign({},this.form,obj)
+        });
+      }else{
+        this.$nextTick(() => {
+          this.$refs["form"].clearValidate();
+          this.$set(this.form,'deviceType',5)
+        });
+      }
+    },
+    /**
+     * 保存
+     * @date 2022-09-20
+     * @returns {any}
+     */
+    submitForm() {
+      this.$refs["form"].validate(async (valid) => {
+        if (valid) {
+          try {
+            this.loading = true;
+            if(this.form.id) {
+              const { code } = await saveAndEdit({ ...this.form });
+              if (code === 200) {
+                this.$message.success("操作成功!");
+                this.$emit("getList");
+                this.cancel();
+              }
+            }else {
+              const { code } = await saveAndAdd ({ ...this.form });
+              if (code === 200) {
+                this.$message.success("操作成功!");
+                this.$emit("getList");
+                this.cancel();
+              }
+            }
+            
+          } catch (error) {
+          } finally {
+            this.loading = false;
+          }
+        }
+      });
+    },
+    /**
+     * 重置
+     * @date 2022-09-20
+     * @returns {any}
+     */
+    reset() {
+      this.$refs["form"].resetFields();
+      this.form.id = undefined;
+    },
+    /**
+     * 关闭弹框
+     * @date 2022-09-20
+     * @returns {any}
+     */
+    cancel() {
+      this.reset();
+      this.open = false;
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.dialog {
+  padding: 0 30px;
+  max-height: 65vh;
+  overflow-y: auto;
+}
+</style>

+ 167 - 0
src/views/device/printer/index.vue

@@ -0,0 +1,167 @@
+<template>
+  <!-- 打印机  -->
+  <div class="app-container">
+    <el-row :gutter="10" class="mb8"  style="margin-left: 0; margin-top: 10px">
+      <el-button
+        type="primary"
+        plain
+        icon="el-icon-plus"
+        size="mini"
+        @click="handleAdd"
+        v-hasPermi="['device:printer:add']"
+      >新增</el-button>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table ref="tables" v-loading="loading" :data="dataList" border>
+      <el-table-column label="序号" align="center" type="index" width="60"></el-table-column>
+      <el-table-column label="设备名称" align="center" prop="deviceName" />
+      <el-table-column label="设备编码" align="center" prop="deviceNo" />
+      <el-table-column label="所在位置" align="center" prop="deviceAddress" />
+      <el-table-column label="设备类型" align="center" prop="deviceType">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.device_sys_type" :value="scope.row.deviceType"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="添加时间" align="center" prop="createTime" width="160" >
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.createTime) }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="操作" align="center" width="200" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            @click="openDetails(scope.row)"
+            v-hasPermi="['device:printer:details']"
+          >详情</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['device:printer:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            @click="handleDelete(scope.row,scope.index)"
+            v-hasPermi="['device:printer:delete']"
+          >删除</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"
+    />
+    <!-- 详情 -->
+    <!-- 新增/编辑弹框 -->
+    <data-box
+      ref="addAndEdit"
+      @getList="getList"
+    />
+  </div>
+</template>
+
+<script>
+import { pageList,deleteById } from "@/api/device/pda";
+import dataBox from "./dialog/dataBox.vue";
+export default {
+  name: "Pda",
+  components: { dataBox },
+  dicts: ['device_sys_type'],
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 用户表格数据
+      dataList: null,
+      // 弹出层标题
+      title: "",
+
+      // 是否显示弹出层
+      open: false,
+      // 日期范围
+      dateRange: [],
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+      },
+      handleExportLoading: false,
+      tableData: {}
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询列表 */
+    getList() {
+      this.loading = true;
+      pageList({...this.queryParams,deviceType:5})
+      .then(response => {
+          this.dataList = response.data.rows;
+          this.total = response.data.total;
+          this.loading = false;
+        }
+      );
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.dateRange = [];
+      this.$set(this.queryParams, 'id', '');
+      this.$set(this.queryParams, 'businessType', '');
+      this.$set(this.queryParams, 'incomeExpenses', '');
+      this.queryParams.pageNum = 1;
+      this.handleQuery();
+    },
+    /** 详情按钮操作 */
+    openDetails(row, type) {
+      this.$refs["addAndEdit"].openDialog("详情", row);
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.$refs["addAndEdit"].openDialog("新增数据", null);
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.$refs["addAndEdit"].openDialog("修改数据", row);
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const dataIds = row.id || this.ids;
+      this.$modal.confirm('是否确认删除数据编号为"' + dataIds + '"的数据项?').then(function() {
+        return deleteById(dataIds);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch((e) => {console.log("e====",e) });
+    }
+  }
+};
+</script>

+ 168 - 0
src/views/device/robot/dialog/dataBox.vue

@@ -0,0 +1,168 @@
+<!--
+ * @Description: 新增/编辑弹框
+ * @Author: 空白格
+ * @Date: 2023-07-04 13:55:00
+ * @LastEditors: 空白格
+ * @LastEditTime: 2023-07-06 09:08:39
+ * @FilePath: \cattle_webui\src\views\system\noticeMgr\Dialog\AddOrEditDialog.vue
+ * @Copyright: Copyright (c) 2016~2023 by 空白格, All Rights Reserved.
+-->
+<template>
+  <el-dialog
+    :title="title"
+    :visible.sync="open"
+    width="700px"
+    :close-on-click-modal="false"
+    @close="cancel"
+  >
+    <div class="dialog"
+    >
+      <el-form 
+      v-loading="loading"
+      :model="form" 
+      ref="form" 
+      :rules="rules" 
+      label-width="120px">
+        <el-form-item label="设备名称:" prop="deviceName">
+          <el-input v-model="form.deviceName" placeholder="请输入设备名称" />
+        </el-form-item>
+        <el-form-item label="设备编号:" prop="deviceNo">
+          <el-input v-model="form.deviceNo" placeholder="请输入设备编号" />
+        </el-form-item>
+        <el-form-item label="设备IP:" prop="deviceAddress">
+          <el-input v-model="form.deviceAddress" placeholder="请输入设备IP" />
+        </el-form-item>
+        <el-form-item label="设备类型:" prop="deviceType">
+          <dict-tag :options="dict.type.device_sys_type" :value="form.deviceType"/>
+        </el-form-item>
+      </el-form>
+    </div>
+    <span slot="footer" class="dialog-footer">
+      <el-button @click="cancel">取消</el-button>
+      <el-button
+        type="primary"
+        @click="submitForm"
+        :loading="loading"
+        element-loading-text="提交中..."
+      >
+      保存
+      </el-button>
+    </span>
+  </el-dialog>
+</template>
+
+<script>
+import { 
+  saveAndAdd,
+  saveAndEdit} from "@/api/device/pda";
+export default {
+  name: "addAndEdit",
+  dicts: ['device_sys_type'],
+  data() {
+    return {
+      title: "编辑",
+      model: "EDIT",
+      open: false,
+      loading: false,
+      form: {
+        id: undefined,
+        type: "",
+        content: "",
+      },
+      rules: {
+        deviceName: [{ required: true, message: "请输入设备名称", trigger: "blur" }],
+        deviceNo: [
+          { required: true, message: "请输入设备编号", trigger: "blur" },
+        ],
+        deviceType: [
+          { required: true, message: "请输入设备类型", trigger: "blur" },
+        ],
+        deviceAddress: [
+          { required: true, message: "请输入所在位置", trigger: "blur" },
+        ],
+      },
+    };
+  },
+  methods: {
+    /**
+     * 打开弹框
+     * @date 2022-09-20
+     * @param {any} obj
+     * @returns {any}
+     */
+    openDialog(title, obj) {
+      this.title = title;
+      this.open = true;
+      if (obj){
+        this.$nextTick(() => {
+          this.form = Object.assign({},this.form,obj)
+        });
+      }else{
+        this.$nextTick(() => {
+          this.$refs["form"].clearValidate();
+          this.$set(this.form,'deviceType',2)
+        });
+      }
+    },
+    /**
+     * 保存
+     * @date 2022-09-20
+     * @returns {any}
+     */
+    submitForm() {
+      this.$refs["form"].validate(async (valid) => {
+        if (valid) {
+          try {
+            this.loading = true;
+            if(this.form.id) {
+              const { code } = await saveAndEdit({ ...this.form });
+              if (code === 200) {
+                this.$message.success("操作成功!");
+                this.$emit("getList");
+                this.cancel();
+              }
+            }else {
+              const { code } = await saveAndAdd ({ ...this.form });
+              if (code === 200) {
+                this.$message.success("操作成功!");
+                this.$emit("getList");
+                this.cancel();
+              }
+            }
+            
+          } catch (error) {
+          } finally {
+            this.loading = false;
+          }
+        }
+      });
+    },
+    /**
+     * 重置
+     * @date 2022-09-20
+     * @returns {any}
+     */
+    reset() {
+      this.$refs["form"].resetFields();
+      this.form.id = undefined;
+    },
+    /**
+     * 关闭弹框
+     * @date 2022-09-20
+     * @returns {any}
+     */
+    cancel() {
+      this.reset();
+      this.open = false;
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.dialog {
+  padding: 0 30px;
+  max-height: 65vh;
+  overflow-y: auto;
+}
+</style>

+ 167 - 0
src/views/device/robot/index.vue

@@ -0,0 +1,167 @@
+<template>
+  <!-- 自动售卖机  -->
+  <div class="app-container">
+    <el-row :gutter="10" class="mb8"  style="margin-left: 0; margin-top: 10px">
+      <el-button
+        type="primary"
+        plain
+        icon="el-icon-plus"
+        size="mini"
+        @click="handleAdd"
+        v-hasPermi="['device:robot:list']"
+      >新增</el-button>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table ref="tables" v-loading="loading" :data="dataList" border>
+      <el-table-column label="序号" align="center" type="index" width="60"></el-table-column>
+      <el-table-column label="设备名称" align="center" prop="deviceName" />
+      <el-table-column label="设备编码" align="center" prop="deviceNo" />
+      <el-table-column label="IP" align="center" prop="deviceAddress" />
+      <el-table-column label="设备类型" align="center" prop="deviceType">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.device_sys_type" :value="scope.row.deviceType"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="添加时间" align="center" prop="createTime" width="160" >
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.createTime) }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="操作" align="center" width="200" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            @click="openDetails(scope.row)"
+            v-hasPermi="['device:robot:details']"
+          >详情</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['device:robot:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            @click="handleDelete(scope.row,scope.index)"
+            v-hasPermi="['device:robot:delete']"
+          >删除</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"
+    />
+    <!-- 详情 -->
+    <!-- 新增/编辑弹框 -->
+    <data-box
+      ref="addAndEdit"
+      @getList="getList"
+    />
+  </div>
+</template>
+
+<script>
+import { pageList,deleteById } from "@/api/device/pda";
+import dataBox from "./dialog/dataBox.vue";
+export default {
+  name: "Pda",
+  components: { dataBox },
+  dicts: ['device_sys_type'],
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 用户表格数据
+      dataList: null,
+      // 弹出层标题
+      title: "",
+
+      // 是否显示弹出层
+      open: false,
+      // 日期范围
+      dateRange: [],
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+      },
+      handleExportLoading: false,
+      tableData: {}
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询列表 */
+    getList() {
+      this.loading = true;
+      pageList({...this.queryParams,deviceType:2})
+      .then(response => {
+          this.dataList = response.data.rows;
+          this.total = response.data.total;
+          this.loading = false;
+        }
+      );
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.dateRange = [];
+      this.$set(this.queryParams, 'id', '');
+      this.$set(this.queryParams, 'businessType', '');
+      this.$set(this.queryParams, 'incomeExpenses', '');
+      this.queryParams.pageNum = 1;
+      this.handleQuery();
+    },
+    /** 详情按钮操作 */
+    openDetails(row, type) {
+      this.$refs["addAndEdit"].openDialog("详情", row);
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.$refs["addAndEdit"].openDialog("新增数据", null);
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.$refs["addAndEdit"].openDialog("修改数据", row);
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const dataIds = row.id || this.ids;
+      this.$modal.confirm('是否确认删除数据编号为"' + dataIds + '"的数据项?').then(function() {
+        return deleteById(dataIds);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch((e) => {console.log("e====",e) });
+    }
+  }
+};
+</script>

+ 169 - 0
src/views/device/scanCodeBox/dialog/dataBox.vue

@@ -0,0 +1,169 @@
+<!--
+ * @Description: 新增/编辑弹框
+ * @Author: 空白格
+ * @Date: 2023-07-04 13:55:00
+ * @LastEditors: 空白格
+ * @LastEditTime: 2023-07-06 09:08:39
+ * @FilePath: \cattle_webui\src\views\system\noticeMgr\Dialog\AddOrEditDialog.vue
+ * @Copyright: Copyright (c) 2016~2023 by 空白格, All Rights Reserved.
+-->
+<template>
+  <el-dialog
+    :title="title"
+    :visible.sync="open"
+    width="700px"
+    :close-on-click-modal="false"
+    @close="cancel"
+  >
+    <div class="dialog"
+    >
+      <el-form 
+      v-loading="loading"
+      :model="form" 
+      ref="form" 
+      :rules="rules" 
+      label-width="120px">
+        <el-form-item label="设备名称:" prop="deviceName">
+          <el-input v-if="type!=3" v-model="form.deviceName" placeholder="请输入设备名称" />
+          <span v-else>{{ form.deviceName }}</span>
+        </el-form-item>
+        <el-form-item label="设备编号:" prop="deviceNo">
+          <el-input v-if="type!=3" v-model="form.deviceNo" placeholder="请输入设备编号" />
+          <span v-else>{{ form.deviceNo }}</span>
+        </el-form-item>
+        <el-form-item label="所在位置:" prop="deviceAddress">
+          <el-input v-model="form.deviceAddress" placeholder="请输入所在位置" />
+        </el-form-item>
+        <el-form-item label="设备类型:" prop="deviceType">
+          <dict-tag :options="dict.type.device_sys_type" :value="form.deviceType"/>
+        </el-form-item>
+      </el-form>
+    </div>
+    <span slot="footer" class="dialog-footer">
+      <el-button @click="cancel">关闭</el-button>
+      <el-button
+        type="primary"
+        @click="submitForm"
+        :loading="loading"
+        element-loading-text="提交中..."
+        v-if="type!=3"
+      >
+      保存
+      </el-button>
+    </span>
+  </el-dialog>
+</template>
+
+<script>
+import { 
+  saveAndAdd,
+  saveAndEdit} from "@/api/device/pda";
+export default {
+  name: "addAndEdit",
+  dicts: ['device_sys_type'],
+  data() {
+    return {
+      title: "编辑",
+      type: 0,
+      model: "EDIT",
+      open: false,
+      loading: false,
+      form: {},
+      rules: {
+        deviceName: [{ required: true, message: "请输入设备名称", trigger: "blur" }],
+        deviceNo: [
+          { required: true, message: "请输入设备编号", trigger: "blur" },
+        ],
+        deviceType: [
+          { required: true, message: "请输入设备类型", trigger: "blur" },
+        ],
+        deviceAddress: [
+          { required: true, message: "请输入所在位置", trigger: "blur" },
+        ],
+      },
+    };
+  },
+  methods: {
+    /**
+     * 打开弹框
+     * @date 2022-09-20
+     * @param {any} obj
+     * @returns {any}
+     */
+    openDialog(title, obj,type) {
+      this.title = title;
+      this.type = type
+      this.open = true;
+      if (obj){
+        this.$nextTick(() => {
+          this.form = Object.assign({},this.form,obj)
+        });
+      }else{
+        this.$nextTick(() => {
+          this.$refs["form"].clearValidate();
+          this.$set(this.form,'deviceType',4)
+        });
+      }
+    },
+    /**
+     * 保存
+     * @date 2022-09-20
+     * @returns {any}
+     */
+    submitForm() {
+      this.$refs["form"].validate(async (valid) => {
+        if (valid) {
+          try {
+            this.loading = true;
+            if(this.form.id) {
+              const { code } = await saveAndEdit({ ...this.form });
+              if (code === 200) {
+                this.$message.success("操作成功!");
+                this.$emit("getList");
+                this.cancel();
+              }
+            }else {
+              const { code } = await saveAndAdd ({ ...this.form });
+              if (code === 200) {
+                this.$message.success("操作成功!");
+                this.$emit("getList");
+                this.cancel();
+              }
+            }
+            
+          } catch (error) {
+          } finally {
+            this.loading = false;
+          }
+        }
+      });
+    },
+    /**
+     * 重置
+     * @date 2022-09-20
+     * @returns {any}
+     */
+    reset() {
+      this.$refs["form"].resetFields();
+      this.form.id = undefined;
+    },
+    /**
+     * 关闭弹框
+     * @date 2022-09-20
+     * @returns {any}
+     */
+    cancel() {
+      this.reset();
+      this.open = false;
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.dialog {
+  padding: 0 30px;
+  max-height: 65vh;
+  overflow-y: auto;
+}
+</style>

+ 167 - 0
src/views/device/scanCodeBox/index.vue

@@ -0,0 +1,167 @@
+<template>
+  <!-- 扫码盒子  -->
+  <div class="app-container">
+    <el-row :gutter="10" class="mb8"  style="margin-left: 0; margin-top: 10px">
+      <el-button
+        type="primary"
+        plain
+        icon="el-icon-plus"
+        size="mini"
+        @click="handleAdd"
+        v-hasPermi="['device:scanCodeBox:add']"
+      >新增</el-button>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table ref="tables" v-loading="loading" :data="dataList" border>
+      <el-table-column label="序号" align="center" type="index" width="60"></el-table-column>
+      <el-table-column label="设备名称" align="center" prop="deviceName" />
+      <el-table-column label="设备编码" align="center" prop="deviceNo" />
+      <el-table-column label="所在位置" align="center" prop="deviceAddress" />
+      <el-table-column label="设备类型" align="center" prop="deviceType">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.device_sys_type" :value="scope.row.deviceType"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="添加时间" align="center" prop="createTime" width="160" >
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.createTime) }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="操作" align="center" width="200" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            @click="openDetails(scope.row)"
+            v-hasPermi="['device:scanCodeBox:details']"
+          >详情</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['device:scanCodeBox:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            @click="handleDelete(scope.row,scope.index)"
+            v-hasPermi="['device:scanCodeBox:delete']"
+          >删除</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"
+    />
+    <!-- 详情 -->
+    <!-- 新增/编辑弹框 -->
+    <data-box
+      ref="addAndEdit"
+      @getList="getList"
+    />
+  </div>
+</template>
+
+<script>
+import { pageList,deleteById } from "@/api/device/pda";
+import dataBox from "./dialog/dataBox";
+export default {
+  name: "Pda",
+  components: { dataBox },
+  dicts: ['device_sys_type'],
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 用户表格数据
+      dataList: null,
+      // 弹出层标题
+      title: "",
+
+      // 是否显示弹出层
+      open: false,
+      // 日期范围
+      dateRange: [],
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+      },
+      handleExportLoading: false,
+      tableData: {}
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询列表 */
+    getList() {
+      this.loading = true;
+      pageList({...this.queryParams,deviceType:4})
+      .then(response => {
+          this.dataList = response.data.rows;
+          this.total = response.data.total;
+          this.loading = false;
+        }
+      );
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.dateRange = [];
+      this.$set(this.queryParams, 'id', '');
+      this.$set(this.queryParams, 'businessType', '');
+      this.$set(this.queryParams, 'incomeExpenses', '');
+      this.queryParams.pageNum = 1;
+      this.handleQuery();
+    },
+    /** 详情按钮操作 */
+    openDetails(row, type) {
+      this.$refs["addAndEdit"].openDialog("详情", row);
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.$refs["addAndEdit"].openDialog("新增数据", null);
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.$refs["addAndEdit"].openDialog("修改数据", row);
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const dataIds = row.id || this.ids;
+      this.$modal.confirm('是否确认删除数据编号为"' + dataIds + '"的数据项?').then(function() {
+        return deleteById(dataIds);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch((e) => {console.log("e====",e) });
+    }
+  }
+};
+</script>

+ 49 - 10
src/views/distribution/personnelMr/index.vue

@@ -173,20 +173,22 @@
     <el-dialog
       title="提现设置"
       :visible.sync="setStatus"
-      width="600px"
+      width="650px"
       :destroy-on-close="true"
       :close-on-click-modal="false"
     >
-      <el-form :model="setForm" ref="setForm" label-width="120px">
-        <el-form-item label="类型:">
-          <el-radio v-model="setForm.type" label="1">按实值</el-radio>
-          <el-radio v-model="setForm.type" label="2">按比例</el-radio>
+      <el-form :model="setForm" ref="setForm" :rules="setFormRules" label-width="120px">
+        <el-form-item label="类型:" prop="type">
+          <el-radio-group v-model="setForm.type">
+            <el-radio label="1">按实值</el-radio>
+            <el-radio label="2">按比例</el-radio>
+          </el-radio-group>
         </el-form-item>
-        <el-form-item label="提现手续费">
+        <el-form-item label="提现手续费" prop="serviceCharge">
           <el-input
             type="number"
             v-model="setForm.serviceCharge"
-            placeholder=""
+            placeholder="请输入提现手续费"
             clearable
             @change="changePriceAmount('serviceCharge')"
             style="width: 260px;"
@@ -194,17 +196,17 @@
             <template slot="append">{{ setForm.type == 2 ? '%' : '元' }}</template>
           </el-input>
         </el-form-item>
-        <el-form-item label="提现门槛">
+        <el-form-item label="提现门槛" prop="withdrawMinMoney">
           <el-input
             type="number"
             v-model="setForm.withdrawMinMoney"
-            placeholder=""
+            placeholder="请输入提现门槛,最低0.3元"
             clearable
             @change="changePriceAmount('withdrawMinMoney')"
             style="width: 260px;"
           >
           </el-input>
-          <span style="margin-left: 5px">元以上方可提现</span>
+          <span style="margin-left: 5px">元以上方可提现 <i style="font-size: 12px;color: #333;">(注: 最低为0.3元)</i></span>
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
@@ -244,6 +246,30 @@ export default {
   dicts: ['distribution_type'],
   components: { addAndEdit, promotionCode },
   data() {
+    let validateNumber = (rule, value, callback) => {
+      let regNumber=/^(([1-9]\d*)|([0][.]{1}[0-9]{0,2}[1-9]+)|([1-9]\d*[.]{1}[0-9]+))$/g;
+      if (value === '') {
+        callback(new Error('请输入数值!!!'));
+      }else if (!regNumber.test(value)) {
+        callback(new Error('只能输入大于0.3的数值!!!'));
+      } else if(value < 0.3){
+        callback(new Error('只能输入大于0.3的数值!!!'));
+      }else {
+        callback();
+      }
+    };
+    let validateNumber1 = (rule, value, callback) => {
+      let regNumber=/^(([1-9]\d*)|([0][.]{1}[0-9]{0,2}[1-9]+)|([1-9]\d*[.]{1}[0-9]+))$/g;
+      if (value === '') {
+        callback(new Error('请输入数值!!!'));
+      }  else if (value === 0) {
+        callback();
+      } else if (!regNumber.test(value)) {
+        callback(new Error('只能输入>=0的数值!!!'));
+      }else {
+        callback();
+      }
+    };
     return {
       // 遮罩层
       loading: true,
@@ -282,6 +308,19 @@ export default {
       visibleType: '',
       setStatus: false,
       setForm: {},
+      setFormRules: {
+        type: [
+          { required: true, message: '请选择类型', trigger: ['change','blur'] },
+        ],
+        serviceCharge: [
+          { required: true, message: '请输入提现手续费', trigger: ['change','blur'] },
+          { validator: validateNumber1, trigger: ["blur","change"]},
+        ],
+        withdrawMinMoney: [
+          { required: true, message: '请输入提现门槛,最低0.3元', trigger: ['change','blur'] },
+          { validator: validateNumber, trigger: ["blur","change"]},
+        ],
+      },
       setRules: [],
       setLoading: false,
     };