Bladeren bron

fix:修改bug,下载,状态修改,添加字段

Mcal 1 week geleden
bovenliggende
commit
6bdbf8963f
8 gewijzigde bestanden met toevoegingen van 137 en 30 verwijderingen
  1. 5 0
      src/locales/en.json
  2. 5 0
      src/locales/ru.json
  3. 5 0
      src/locales/sr.json
  4. 5 0
      src/locales/zh.json
  5. 46 5
      src/utils/request.js
  6. 39 24
      src/views/order/index.vue
  7. 1 1
      src/views/staff/list.vue
  8. 31 0
      src/views/store/list.vue

+ 5 - 0
src/locales/en.json

@@ -279,6 +279,11 @@
   },
   "storeList": {
     "list": {
+      "serviceFeeRequired": "Service fee is required",
+      "serviceFee": "Service Fee",
+      "pleaseEnterServiceFee": "Please enter the service fee",
+            "serviceFeeMustBeNumber": "Service fee must be a number",
+      "serviceFeeRangeError": "Service fee must be between 0 and 1",
       "storeName": "Store Name",
       "pleaseEnterStoreName": "Please enter the store name",
       "status": "Status",

+ 5 - 0
src/locales/ru.json

@@ -266,6 +266,11 @@
 
       "storeList": {
         "list": {
+          "serviceFeeRequired":"Стоимость услуги обязательна",
+          "serviceFee": "Стоимость услуги",
+          "pleaseEnterServiceFee": "Пожалуйста, введите стоимость услуги",
+                "serviceFeeMustBeNumber": "Стоимость услуги должна быть числом",
+      "serviceFeeRangeError": "Стоимость услуги должна быть между 0 и 1",
           "storeName": "Название магазина",
           "pleaseEnterStoreName": "Пожалуйста, введите название магазина",
           "status": "Статус",

+ 5 - 0
src/locales/sr.json

@@ -335,6 +335,11 @@
 
   "storeList": {
     "list": {
+      "serviceFeeRequired":"Cena usluge je obavezna",
+      "serviceFee": "Cena usluge",
+      "pleaseEnterServiceFee": "Molimo, unesite cenu usluge",
+            "serviceFeeMustBeNumber": "Cena usluge mora biti broj",
+      "serviceFeeRangeError": "Cena usluge mora biti između 0 i 1",
       "storeName": "Ime prodavnice",
       "pleaseEnterStoreName": "Unesite ime prodavnice",
       "status": "Status",

+ 5 - 0
src/locales/zh.json

@@ -275,6 +275,11 @@
   },
   "storeList":{
     "list":{
+      "serviceFeeRequired":"服务费是必需的",
+      "serviceFee": "服务费",
+      "pleaseEnterServiceFee": "请输入服务费",
+      "serviceFeeMustBeNumber": "服务费必须是数字",
+      "serviceFeeRangeError": "服务费必须在 0 到 1 之间",
       "storeName": "店铺名称",
       "pleaseEnterStoreName": "请输入店铺名称",
       "status": "状态",

+ 46 - 5
src/utils/request.js

@@ -52,8 +52,8 @@ service.interceptors.request.use(config => {
       const interval = 1000;                         // 间隔时间(ms),小于此时间视为重复提交
       if (s_data === requestObj.data && requestObj.time - s_time < interval && s_url === requestObj.url) {
         const message = '数据正在处理,请耐心等待';
-        console.warn(`[${s_url}]: ` + message)
-        return Promise.reject(new Error(message))
+        // console.warn(`[${s_url}]: ` + message)
+        // return Promise.reject(new Error(message))
       } else {
         cache.session.setJSON('sessionObj', requestObj)
       }
@@ -130,11 +130,52 @@ service.interceptors.response.use(res => {
 )
 
 // 通用下载方法
-export function download(url, params) {
-   url = process.env.VUE_APP_BASE_API + url + '?token='+ getToken() + '&'+ param(params)
-   window.open(url, '_blank')
+// export function download(url, params) {
+//    url = process.env.VUE_APP_BASE_API + url + '?token='+ getToken() + '&'+ param(params)
+//    window.open(url, '_blank')
+// }
+export async function download(baseURL, params) {
+  try {
+      // 构建完整的请求参数,包含 Access-Token
+      const fullParams = {
+          ...params,
+          'Access-Token': getToken()
+      };
+
+      // 使用 axios 原生发起 GET 请求
+      const response = await axios({
+          url: process.env.VUE_APP_BASE_API+baseURL,
+          method: 'get',
+          params: fullParams,
+          responseType: 'blob', // 设置响应类型为 blob,用于处理流式数据
+          headers: {
+              "Accept": "*/*",
+              'Access-Token': getToken()
+          }
+      });
+
+      // 创建 Blob 对象
+      const blob = new Blob([response.data], {
+          type: response.headers['content-type']
+      });
+
+      // 创建一个临时的 URL 对象
+      const url = window.URL.createObjectURL(blob);
+
+      // 创建一个 a 标签
+      const a = document.createElement('a');
+      a.href = url;
+      a.download = 'download.xls';
+      a.click();
+
+      // 释放临时的 URL 对象
+      window.URL.revokeObjectURL(url);
+  } catch (error) {
+      console.error('下载失败:', error);
+  }
 }
 
+
 // 组织参数
 export function param(data) {
    let url = ''

+ 39 - 24
src/views/order/index.vue

@@ -74,25 +74,16 @@
         </el-select>
       </el-form-item> -->
       <el-form-item :label="$t('orderList.orderTime')">
-        <el-date-picker
-          v-model="queryParams.startTime"
-          value-format="yyyy-MM-dd HH:mm:ss"
-          type="datetime"
-          style="width: 190px"
-          :placeholder="$t('orderList.startTime')"
-          :picker-options="pickerOptions"
-        ></el-date-picker>
-        <span class="sp">~</span>
-        <el-date-picker
-          v-model="queryParams.endTime"
-          value-format="yyyy-MM-dd HH:mm:ss"
-          type="datetime"
-          style="width: 190px"
-          :placeholder="$t('orderList.endTime')"
-          :picker-options="pickerOptions"
-
-        ></el-date-picker>
-      </el-form-item>
+    <el-date-picker
+      v-model="queryParams.timeRange"
+      value-format="yyyy-MM-dd HH:mm:ss"
+      type="datetimerange"
+      style="width: 400px"
+      :start-placeholder="$t('orderList.startTime')"
+      :end-placeholder="$t('orderList.endTime')"
+      :picker-options="pickerOptions"
+    ></el-date-picker>
+  </el-form-item>
       <el-form-item>
         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery(false)">
           {{ $t('orderList.query') }}
@@ -551,11 +542,25 @@ export default {
   data() {
     return {
         // 配置日期选择器的选项
-      pickerOptions: {
-        // 禁用大于当前日期时间的选项
+        pickerOptions: {
         disabledDate(time) {
+          // 禁止选择当前时间之后的日期
           return time.getTime() > Date.now();
-        }
+        },
+        // 当开始时间改变时,动态更新结束时间的可选范围
+        // onPick: ({ maxDate, minDate }) => {
+        //   if (minDate) {
+        //     this.pickerOptions.disabledDate = (time) => {
+        //       // 禁止选择开始时间之前的日期和当前时间之后的日期
+        //       return time.getTime() < minDate.getTime() || time.getTime() > Date.now();
+        //     };
+        //   } else {
+        //     // 如果没有选择开始时间,恢复默认的禁用规则
+        //     this.pickerOptions.disabledDate = (time) => {
+        //       return time.getTime() > Date.now();
+        //     };
+        //   }
+        // }
       },
       // 遮罩层
       loading: true,
@@ -632,7 +637,8 @@ export default {
         orderMode: '',
         orderSn: '',
         storeIds: '',
-        tableCode: ''
+        tableCode: '',
+        timeRange: [],
       },
       // 表单校验
       rules: {
@@ -695,6 +701,11 @@ export default {
         const app = this;
         app.loading = true;
         app.queryParams.storeIds = app.storeIds ? app.storeIds.join(',') : '';
+        //设置范围
+        if (app.queryParams.timeRange && app.queryParams.timeRange.length > 0) {
+          app.queryParams.startTime = app.queryParams.timeRange[0];
+          app.queryParams.endTime = app.queryParams.timeRange[1];
+        }
         getOrderList(app.queryParams).then((response) => {
             this.list = response.data.paginationResponse.content;
             this.total = response.data.paginationResponse.totalElements;
@@ -740,10 +751,14 @@ export default {
         this.queryParams.orderMode = '';
         this.queryParams.orderSn = '';
         this.queryParams.storeIds = '';
+        this.queryParams.timeRange = [];
+        this.queryParams.startTime = '';
+        this.queryParams.endTime = '';
         this.storeIds = [];
+        
         this.resetForm('queryForm');
         this.$refs.tables.sort(this.defaultSort.prop, this.defaultSort.order);
-        this.handleQuery();
+        this.handleQuery(false);
     },
     // 状态修改
     handleStatusChange(row) {

+ 1 - 1
src/views/staff/list.vue

@@ -65,7 +65,7 @@
           icon="el-icon-plus"
           size="mini"
           @click="handleAdd"
-          v-hasPermi="['staff:list']"
+          v-hasPermi="['staff:add']"
         >
           {{ $t('employee.addEmployee') }}
         </el-button>

+ 31 - 0
src/views/store/list.vue

@@ -237,6 +237,17 @@
                 </el-col>
             </el-row>
             <el-row>
+              <el-col :span="24">
+              <el-form-item :label="$t('storeList.list.serviceFee')" prop="serviceFeeRate">
+                <el-input
+                  v-model="form.serviceFeeRate"
+                  :placeholder="$t('storeList.list.pleaseEnterServiceFee')"
+                  maxlength="30"
+                />
+              </el-form-item>
+            </el-col>
+            </el-row>
+            <el-row>
                 <el-col :span="24">
                     <el-form-item :label="$t('storeList.list.contactPersonName')" prop="contact">
                         <el-input
@@ -547,6 +558,7 @@ export default {
         bankCardNo: "",
         isDefault: "N",
         status: "A",
+        serviceFeeRate: "",
       },
       // 微信支付证书
       wxCertPath: "",
@@ -622,6 +634,25 @@ export default {
                 trigger: "blur" 
             },
         ],
+        serviceFeeRate: [
+            { 
+                required: true, 
+                message: this.$t('storeList.list.serviceFeeRequired'), 
+                trigger: "blur" 
+            },
+            {
+            validator: (rule, value, callback) => {
+              if (isNaN(value)) {
+                callback(new Error(this.$t('storeList.list.serviceFeeMustBeNumber')));
+              } else if (value < 0 || value > 1) {
+                callback(new Error(this.$t('storeList.list.serviceFeeRangeError')));
+              } else {
+                callback();
+              }
+            },
+            trigger: "blur"
+          }
+        ],
     },
     };
   },