chenjiaxin 4 месяцев назад
Родитель
Сommit
5dd6714a11

+ 9 - 3
src/lang/en.js

@@ -488,8 +488,14 @@ export default {
     promotionMessage: "Promotional Information",
     targetType: "Promotional Application Type",
     useType: "Usage Type",
-    priceSet: 'Sales Price',//销售价格明细
-    paySet: 'Pay Price',//支付价格
-    amountSet: 'Discount Price',//折扣金额明细
+    priceSet: "Sales Price",//销售价格明细
+    paySet: "Pay Price",//支付价格
+    amountSet: "Discount Price",//折扣金额明细
+    logType: "Log Type",
+    executionInfo: "Execution Information",
+    resultInfo: "Result Information",
+    logStatus: "Status",
+    executionTime: "Execution Time",
+    operator: "Operator"
   }
 };

+ 7 - 1
src/lang/es.js

@@ -185,12 +185,18 @@ export default {
     fixedHeader: "Fixed Header",
     sidebarLogo: "Sidebar Logo"
   },
-  shopify: {
+  shopifyPromotion: {
     promotionMessage: "Información promocional",
     targetType: "Tipo de aplicación promocional",
     useType: "Tipo de uso",
     priceSet: 'Precio de venta',//销售价格明细
     paySet: 'Pagar precio',//支付价格
     amountSet: 'Precio de descuento',//折扣金额明细
+    logType: "Tipo de registro",
+    executionInfo: "Información de ejecución",
+    resultInfo: "Información de resultados",
+    logStatus: "Estado",
+    executionTime: "Tiempo de ejecución",
+    operator: "Operador"
   }
 };

+ 8 - 1
src/lang/ja.js

@@ -61,6 +61,7 @@ export default {
   telephone: "固定電話",
   moPhone: "携帯電話",
   orderDetails: "注文詳細",
+  details: "詳細",
   goodsCode: "商品コード",
   onlyCode: "ユニークなコード",
   shippingNo: "出荷物流コード",
@@ -400,12 +401,18 @@ export default {
     fixedHeader: "Fixed Header",
     sidebarLogo: "Sidebar Logo"
   },
-  shopify: {
+  shopifyPromotion: {
     promotionMessage: "プロモーション情報",
     targetType: "プロモーションアプリケーションの種類",
     useType: "使用タイプ",
     priceSet: '販売価格',//销售价格明细
     paySet: '支払い価格',//支付价格
     amountSet: '割引価格',//折扣金额明细
+    logType: "ログタイプ",
+    executionInfo: "実行情報",
+    resultInfo: "結果情報",
+    logStatus: "状態",
+    executionTime: "実行時間",
+    operator: "オペレーター"
   }
 };

+ 12 - 2
src/lang/zh.js

@@ -502,8 +502,18 @@ export default {
     fixedHeader: "固定 Header",
     sidebarLogo: "侧边栏 Logo"
   },
-  shopify: {
+  shopifyPromotion: {
     promotionMessage: "促销信息",
-    targetType: "促销应用类型"
+    targetType: "促销应用类型",
+    useType: "使用类型",
+    priceSet: "销售价格",//销售价格明细
+    paySet: "支付价格",//支付价格
+    amountSet: "折扣金额",//折扣金额明细
+    logType: "日志类型",
+    executionInfo: "执行信息",
+    resultInfo: "结果信息",
+    logStatus: "状态",
+    executionTime: "执行时间",
+    operator: "操作人"
   }
 };

+ 13 - 7
src/router/modules/promotion.js

@@ -21,22 +21,28 @@ const promotionRouter = {
       name: "virtualGoodsList",
       meta: { title: "virtualGifts" }
     },
-    {
-      path: "bagProduct",
-      component: () => import("@/views/oms/promotion/bagProduct/index"),
-      name: "bagProduct",
-      meta: { title: "福袋商品" }
-    },
+    // {
+    //   path: "bagProduct",
+    //   component: () => import("@/views/oms/promotion/bagProduct/index"),
+    //   name: "bagProduct",
+    //   meta: { title: "福袋商品" }
+    // },
     // {
     //   path: "promotion",
     //   component: () => import("@/views/oms/promotion/promotion/index"),
     //   name: "promotion",
     //   meta: { title: "promotionConfig" }
     // },
+    {
+      path: "bagProduct",
+      component: () => import("@/views/oms/promotion/shopifyPromotion/promotionLogList"),
+      name: "bagProduct",
+      meta: { title: "促销设置日志" }
+    },
     {
       path: "promotion",
       component: () =>
-        import("@/views/oms/promotion/shopifyPromotion/index.vue"),
+        import("@/views/oms/promotion/shopifyPromotion/index"),
       name: "promotion",
       meta: { title: "shopifyPromotion" }
     }

+ 105 - 0
src/views/oms/promotion/shopifyPromotion/component/promotionLogDetail.vue

@@ -0,0 +1,105 @@
+<template>
+  <div class="detailContainer">
+    <el-dialog
+      v-loading="pageLoad"
+      element-loading-text="loading..."
+      :title="title"
+      width="600px"
+      top="10vh"
+      :close-on-click-modal="false"
+      :visible="visible"
+      @close="handleCloseDialog"
+    >
+      <div class="dialog-body">
+        <el-form :model="params" label-width="100px">
+          <!--促销名称-->
+          <el-form-item :label="$t('shopifyPromotion.logType')">
+            <el-input v-model.trim="params.remark" :disabled="edit"></el-input>
+          </el-form-item>
+
+          <el-form-item :label="$t('shopifyPromotion.executionInfo')">
+            <el-input
+              type="textarea"
+              :rows="3"
+              v-model.trim="params.remark"
+              :disabled="edit"
+            ></el-input>
+          </el-form-item>
+
+          <el-form-item :label="$t('shopifyPromotion.resultInfo')">
+            <el-input
+              type="textarea"
+              :rows="3"
+              v-model.trim="params.remark"
+              :disabled="edit"
+            ></el-input>
+          </el-form-item>
+
+          <el-form-item :label="$t('shopifyPromotion.logStatus')">
+            <el-input v-model.trim="params.remark" :disabled="edit"></el-input>
+          </el-form-item>
+
+          <el-form-item :label="$t('shopifyPromotion.executionTime')">
+            <el-input v-model.trim="params.remark" :disabled="edit"></el-input>
+          </el-form-item>
+
+          <el-form-item :label="$t('shopifyPromotion.operator')">
+            <el-input v-model.trim="params.remark" :disabled="edit"></el-input>
+          </el-form-item>
+        </el-form>
+      </div>
+
+      <!-- <template slot="footer">
+        <el-button
+          @click="
+            resetData();
+            promotionFormVisible = false;
+          "
+          >{{ $t("view.cancel") }}
+        </el-button>
+      </template> -->
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import waves from "@/directive/waves"; // 水波纹指令
+
+export default {
+  inject: ["reload"], //刷新
+  directives: {
+    waves
+  },
+  name: "DetailDialog",
+  props: {
+    visible: false,
+    params: {
+      type: Object,
+      default: {}
+    }
+  },
+  data() {
+    return {
+      title: "",
+      edit: true,
+      noDataText: "加载中",
+      pageLoad: false
+    };
+  },
+  methods: {
+    async showDialog(id, edit) {
+      this.edit = !edit;
+    },
+    handleCloseDialog() {
+      this.$emit("update:visible", false);
+    }
+  }
+};
+</script>
+
+<style scoped rel="stylesheet/scss" lang="scss">
+.dialog-body {
+  height: 65vh;
+  overflow: auto;
+}
+</style>

+ 33 - 23
src/views/oms/promotion/shopifyPromotion/promotionForm.vue

@@ -24,7 +24,10 @@
             style="width:320px"
             required
           >
-            <el-input v-model.trim="promotion.promotionName" :disabled='edit'></el-input>
+            <el-input
+              v-model.trim="promotion.promotionName"
+              :disabled="edit"
+            ></el-input>
           </el-form-item>
 
           <!--促销描述-->
@@ -34,7 +37,10 @@
             style="width:320px"
             required
           >
-            <el-input v-model.trim="promotion.promotionInfo" :disabled='edit'></el-input>
+            <el-input
+              v-model.trim="promotion.promotionInfo"
+              :disabled="edit"
+            ></el-input>
           </el-form-item>
 
           <!--促销店铺-->
@@ -43,7 +49,7 @@
             prop="promotionStore"
             required
           >
-            <el-select v-model="promotion.promotionStore" :disabled='edit'>
+            <el-select v-model="promotion.promotionStore" :disabled="edit">
               <el-option
                 :key="index"
                 v-for="(item, index) in storeList"
@@ -60,7 +66,7 @@
             required
           >
             <el-date-picker
-              :disabled='edit'
+              :disabled="edit"
               type="datetime"
               placeholder="选择日期"
               value-format="yyyy-MM-dd HH:mm:ss"
@@ -75,7 +81,7 @@
             required
           >
             <el-date-picker
-             :disabled='edit'
+              :disabled="edit"
               type="datetime"
               placeholder="选择日期"
               value-format="yyyy-MM-dd HH:mm:ss"
@@ -90,7 +96,7 @@
             required
           >
             <el-input-number
-            :disabled='edit'
+              :disabled="edit"
               v-model="promotion.participateNum"
               :min="1"
               controls-position="right"
@@ -99,15 +105,19 @@
 
           <!--是否互斥-->
           <el-form-item :label="$t('label.mutual')" prop="mutual" required>
-            <el-radio-group v-model="promotion.mutual" :disabled='edit'>
+            <el-radio-group v-model="promotion.mutual" :disabled="edit">
               <el-radio :label="true">{{ $t("yes") }}</el-radio>
               <el-radio :label="false">{{ $t("no") }}</el-radio>
             </el-radio-group>
           </el-form-item>
 
           <!--是否可叠加,只有当互斥的时候才能选择-->
-          <el-form-item v-if="this.promotion.mutual == true" :label="$t('label.isSuperposition')"
-                        prop="isSuperposition" required>
+          <el-form-item
+            v-if="this.promotion.mutual == true"
+            :label="$t('label.isSuperposition')"
+            prop="isSuperposition"
+            required
+          >
             <el-radio-group v-model="promotion.isSuperposition">
               <el-radio :label="true">{{ $t("yes") }}</el-radio>
               <el-radio :label="false">{{ $t("no") }}</el-radio>
@@ -121,7 +131,7 @@
             required
           >
             <el-input-number
-             :disabled='edit'
+              :disabled="edit"
               v-model="promotion.participateWeight"
               controls-position="right"
             ></el-input-number>
@@ -136,7 +146,7 @@
             <el-select
               v-model="promotion.participateType"
               @change="handleChangeParticipateType"
-              :disabled='edit'
+              :disabled="edit"
             >
               <el-option
                 :key="index"
@@ -154,7 +164,7 @@
             v-if="promotion.participateType !== 'gift_all'"
             required
           >
-            <el-select v-model="promotion.conditionType" :disabled='edit'>
+            <el-select v-model="promotion.conditionType" :disabled="edit">
               <el-option
                 :key="index"
                 v-for="(item, index) in conditionTypeArr"
@@ -174,7 +184,7 @@
                 promotion.participateType !== 'gift_all'
             "
             required
-            :disabled='edit'
+            :disabled="edit"
           >
             <el-input-number
               v-if="promotion.participateType === 'gift_money'"
@@ -183,18 +193,18 @@
               :precision="4"
               :step="1"
               controls-position="right"
-              :disabled='edit'
+              :disabled="edit"
             />
             <el-input-number
               v-if="promotion.participateType === 'gift_qty'"
               v-model="promotion.conditionValue"
               controls-position="right"
-              :disabled='edit'
+              :disabled="edit"
             />
             <el-select
               v-if="promotion.participateType === 'gift_consumer'"
               v-model="promotion.conditionValue"
-              :disabled='edit'
+              :disabled="edit"
             >
               <el-option
                 :key="index"
@@ -211,7 +221,7 @@
             prop="goodsRelation"
             required
           >
-            <el-select v-model="promotion.goodsRelation" :disabled='edit'>
+            <el-select v-model="promotion.goodsRelation" :disabled="edit">
               <el-option
                 :key="index"
                 v-for="(item, index) in $t('label.goodsRelationArr')"
@@ -227,7 +237,7 @@
             prop="goodsScope"
             required
           >
-            <el-select v-model="promotion.goodsScope" :disabled='edit'>
+            <el-select v-model="promotion.goodsScope" :disabled="edit">
               <el-option
                 :key="index"
                 v-for="(item, index) in $t('label.goodsScopeArr')"
@@ -243,7 +253,7 @@
             prop="giftRelation"
             required
           >
-            <el-select v-model="promotion.giftRelation" :disabled='edit'>
+            <el-select v-model="promotion.giftRelation" :disabled="edit">
               <el-option
                 :key="index"
                 v-for="(item, index) in $t('label.giftRelationArr')"
@@ -268,7 +278,7 @@
           type="primary"
           @click="handleSaveOrUpdate"
           v-if="promotion.promotionStatus !== 1"
-          :disabled='edit'
+          :disabled="edit"
           >{{ $t("view.confirm") }}
         </el-button>
       </template>
@@ -314,9 +324,9 @@ export default {
         conditionValue: "",
         goodsRelation: "",
         goodsScope: "",
-        giftRelation: "",
+        giftRelation: ""
       },
-      edit:true,
+      edit: true,
       storeList: [],
       noDataText: "加载中",
       baseRule: {
@@ -353,7 +363,7 @@ export default {
         }
       });
     },
-    async showDialog(id,edit) {
+    async showDialog(id, edit) {
       this.edit = !edit;
       await this.getStoreList();
       if (id) {

+ 145 - 77
src/views/oms/promotion/shopifyPromotion/promotionLogList.vue

@@ -1,95 +1,144 @@
 <template>
-  <div>
-    <el-dialog
-      :title="$t('title.operationLog')"
-      append-to-body
-      top="5vh"
-      width="60%"
-      :visible.sync="dialogFormVisible"
+  <div class="app-container">
+    <div class="filter-container">
+      <el-input
+        :placeholder="$t('label.promotionName')"
+        style="width: 200px;"
+        clearable
+        class="filter-item"
+        v-model="listQuery.keywords"
+        @keyup.enter.native="handleFilter"
+      />
+      <el-button
+        v-waves
+        class="filter-item"
+        type="primary"
+        icon="el-icon-search"
+        @click="handleFilter"
+        >{{ $t("search") }}</el-button
+      >
+    </div>
+    <el-table
+      v-loading="listLoading"
+      :key="tableKey"
+      :data="list"
+      stripe
+      border
+      fit
+      highlight-current-row
+      style="width: 100%;"
     >
-      <div style="height: 72vh; overflow: auto">
-        <el-table
-          v-loading="listLoading"
-          :key="tableKey"
-          :data="list"
-          stripe
-          border
-          fit
-          highlight-current-row
-          style="width: 100%;"
-        >
-          <el-table-column type="index" width="40"></el-table-column>
+      <el-table-column type="index" width="40"></el-table-column>
 
-          <el-table-column
-            :label="$t('label.operator')"
-            align="center"
-            width="220"
-            show-overflow-tooltip
+      <el-table-column
+        :label="$t('shopifyPromotion.logType')"
+        align="center"
+        width="220"
+        visible-overflow-tooltip
+      >
+        <template v-slot="{ row }">
+          <span>{{ row.userName }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column
+        :label="$t('shopifyPromotion.executionInfo')"
+        align="center"
+        width="220"
+      >
+        <template v-slot="{ row }">
+          <el-popover
+            placement="bottom-start"
+            width="400"
+            trigger="hover"
+            :content="row.remark"
           >
-            <template v-slot="{ row }">
-              <span>{{ row.userName }}</span>
-            </template>
-          </el-table-column>
-          <el-table-column
-            :label="$t('label.operationTime')"
-            align="center"
-            width="220"
-            show-overflow-tooltip
-          >
-            <template v-slot="{ row }">
-              <span>{{ row.createTime }}</span>
-            </template>
-          </el-table-column>
+            <span slot="reference" class="tooltip">{{ row.remark }}</span>
+          </el-popover>
+        </template>
+      </el-table-column>
 
-          <el-table-column
-            :label="$t('label.operationMethod')"
-            align="center"
-            show-overflow-tooltip
+      <el-table-column :label="$t('shopifyPromotion.resultInfo')">
+        <template v-slot="{ row }">
+          <el-popover
+            placement="bottom-start"
+            width="400"
+            trigger="hover"
+            :content="row.remark"
           >
-            <template v-slot="{ row }">
-              <span>{{ row.remark }}</span>
-            </template>
-          </el-table-column>
-        </el-table>
-        <!-- 分页 -->
-        <swPage
-          v-if="total > 0"
-          key="2"
-          :listQuery="listQuery"
-          :total="total"
-          pos="btmRight"
-          @retPage="getList"
-        />
-      </div>
-
-      <template slot="footer">
-        <el-button @click="dialogFormVisible = false"
-          >{{ $t("tagsView.close") }}
-        </el-button>
-      </template>
-    </el-dialog>
+            <span slot="reference" class="tooltip">{{ row.remark }}</span>
+          </el-popover>
+        </template>
+      </el-table-column>
+      <el-table-column
+        :label="$t('shopifyPromotion.logStatus')"
+        visible-overflow-tooltip
+      >
+        <template v-slot="{ row }">
+          <span>{{ row.remark }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column
+        :label="$t('shopifyPromotion.executionTime')"
+        visible-overflow-tooltip
+      >
+        <template v-slot="{ row }">
+          <span>{{ row.remark }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column
+        :label="$t('shopifyPromotion.operator')"
+        visible-overflow-tooltip
+      >
+        <template v-slot="{ row }">
+          <span>{{ row.remark }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column
+        :label="$t('label.operation')"
+        align="center"
+        fixed="right"
+      >
+        <template slot-scope="scope">
+          <a
+            class="active"
+            href="javascript:void(0)"
+            @click="visibleDetailDialog(scope.row)"
+            >{{ $t("details") }}</a
+          >
+        </template>
+      </el-table-column>
+    </el-table>
+    <!-- 分页 -->
+    <swPage
+      v-if="total > 0"
+      key="2"
+      :listQuery="listQuery"
+      :total="total"
+      pos="btmRight"
+      @retPage="getList"
+    />
+    <DetailDialog :visible.sync="dialog.visible" :params="dialog.params" />
   </div>
 </template>
 
 <script>
 import waves from "@/directive/waves"; // 水波纹指令
 import SwPage from "@/views/common/swPage.vue";
-import ElContainer from "element-ui/packages/container/src/main";
 import { promotionLogs } from "@/api/oms/order/promotion";
+import DetailDialog from "./component/promotionLogDetail.vue";
 
 export default {
   inject: ["reload"], //刷新
   components: {
     SwPage,
-    ElContainer
+    DetailDialog
   },
-  name: "shopifyPromotionLogList",
+  name: "shopifyPromotionPromotionLogList",
   directives: {
     waves
   },
   data() {
     return {
-      dialogFormVisible: false,
       tableKey: 0,
       list: [],
       total: 0,
@@ -99,23 +148,23 @@ export default {
         keywords: null,
         page: 1,
         limit: 10
+      },
+      dialog: {
+        visible: false,
+        params: {}
       }
     };
   },
-  created() {},
-  computed: {},
+  created() {
+    this.getList();
+  },
   methods: {
-    handleOpen(id) {
-      this.listQuery.promotionId = id;
-      this.dialogFormVisible = true;
-      this.retPage();
-    },
     getList() {
       this.listLoading = true;
       promotionLogs(this.listQuery)
         .then(response => {
           if (response.code === 200) {
-            this.list = response.data.list;
+            this.list = response.data.list || arr;
             this.total = response.data.total;
             setTimeout(() => {
               this.listLoading = false;
@@ -128,6 +177,17 @@ export default {
           }, 0.5 * 1000);
         });
     },
+    handleFilter() {
+      this.listQuery.page = 1;
+      this.getList();
+    },
+    visibleDetailDialog(row) {
+      this.dialog.visible = !this.dialog.visible;
+      this.dialog.params = row;
+    },
+    handleCloseDialog(params) {
+      this.dialog.visible = params;
+    },
     retPage() {
       this.listQuery.page = 1;
       this.getList();
@@ -136,4 +196,12 @@ export default {
 };
 </script>
 
-<style scoped lang="scss"></style>
+<style scoped lang="scss">
+.tooltip {
+  white-space: nowrap;
+  min-width: 50px;
+}
+.active {
+  color: #ae8877;
+}
+</style>

+ 0 - 13
src/views/oms/promotion/shopifyPromotion/test.vue

@@ -1,13 +0,0 @@
-<template>
-  <div>123</div>
-</template>
-
-<script>
-export default {
-
-}
-</script>
-
-<style>
-
-</style>