Преглед на файлове

7.1,新高级策略,编辑搜索

yangfan преди 2 години
родител
ревизия
4278fc92bb

+ 37 - 0
purchase_ao/src/router/index.js

@@ -140,6 +140,43 @@ export const constantRoutes = [{
     component: () => import('@/views/schemeV2/schemeAdd')
   }]
 },
+
+{
+  path: '/newSchemeProinfo',
+  component: Layout,
+  redirect: '/newSchemeProinfo/',
+  name: '高级策略',
+  meta: {
+    title: '新高级策略',
+    icon: 'el-icon-s-claim'
+  },
+  children:[
+    {
+      path: '/newSchemeProinfo/index',
+      name: '高级策略',
+      component: () => import('@/views/newSchemeProinfo/index'),
+      meta: {
+        title: '高级策略',
+      },
+    },
+    {
+      path: '/newSchemeProinfo/schemeAb',
+      name: '高级策略添加',
+      component: () => import('@/views/newSchemeProinfo/schemeAb'),
+      meta: {
+        title: '高级策略添加',
+      },
+    },      
+    {
+      path: '/newSchemeProinfo/schemType',
+      name: '高级策略类型',
+      component: () => import('@/views/newSchemeProinfo/schemType'),
+      meta: {
+        title: '高级策略类型',
+      },
+    },
+  ]
+},
 // 高级策略
 {
   path: '/schemeProinfo',

+ 40 - 0
purchase_ao/src/utils/index.js

@@ -51,6 +51,46 @@ export function parseTime(time, cFormat) {
   return time_str
 }
 
+export function parseTimee(time, cFormat) {
+  if (arguments.length === 0) {
+    return ""
+  }
+  if (!arguments[0]) {
+    return ""
+  }
+  const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'
+  let date
+  if (typeof time === 'object') {
+    date = time
+  } else {
+    if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {
+      time = parseInt(time)
+    }
+    if ((typeof time === 'number') && (time.toString().length === 10)) {
+      time = time * 1000
+    }
+    date = new Date(time)
+  }
+  const formatObj = {
+    y: date.getFullYear(),
+    m: date.getMonth() + 1,
+    d: date.getDate(),
+    h: date.getHours(),
+    i: date.getMinutes(),
+    s: date.getSeconds(),
+    a: date.getDay()
+  }
+  const time_str = format.replace(/{([ymdhisa])+}/g, (result, key) => {
+    const value = formatObj[key]
+    // Note: getDay() returns 0 on Sunday
+    if (key === 'a') {
+      return ['日', '一', '二', '三', '四', '五', '六'][value]
+    }
+    return value.toString().padStart(2, '0')
+  })
+  return time_str
+}
+
 /**
  * @param {number} time
  * @param {string} option

+ 186 - 0
purchase_ao/src/views/newSchemeProinfo/index.vue

@@ -0,0 +1,186 @@
+<template>
+  <div>
+    <el-container>
+      <!--搜索-->
+      <el-header class="searchBox">
+        <el-form :inline="true" :model="searchForm" ref="searchForm" class="demo-form-inline">
+          <el-form-item label="策略名称">
+            <el-input v-model="searchForm.name" placeholder="策略名称" />
+          </el-form-item>
+          <el-form-item label="生效状态">
+            <el-select v-model="searchForm.state" filterable placeholder="请选择">
+              <el-option label="生效中" :value="1" />
+              <el-option label="未生效" :value="0" />
+            </el-select>
+          </el-form-item>
+          <el-form-item label="类型">
+            <el-select v-model="searchForm.type" filterable placeholder="请选择">
+              <el-option label="A/B策略" :value="0" />
+              <el-option label="活动投放" :value="1" />
+              <el-option label="智能投放" :value="2" />
+              <el-option label="地域投放" :value="3" />
+            </el-select>
+          </el-form-item>
+          <el-form-item style="float: right">
+            <el-button type="primary" @click="init()">搜索</el-button>
+            <el-button @click="reset('searchForm')">重置</el-button>
+          </el-form-item>
+        </el-form>
+      </el-header>
+      <!--表格-->
+      <el-main class="tableBox">
+        <vxe-toolbar>
+          <template #buttons>
+            <vxe-button icon="fa fa-plus" @click="toAdd">新增</vxe-button>
+            <vxe-button @click="init()">刷新</vxe-button>
+          </template>
+        </vxe-toolbar>
+        <vxe-table border resizable keep-source show-overflow highlight-hover-row ref="xTable" :data="tableData" :edit-config="{trigger: 'click', mode: 'cell', showStatus: true, }">
+          <vxe-table-column field="name" title="策略名称" width="230" />
+          <vxe-table-column field="content" title="策略备注" width="230" />
+          <vxe-table-column field="type" title="策略类型" width="250">
+            <template #default="{ row }">
+              <span v-if="row.type === 1">ab策略</span>
+              <span v-if="row.type === 3">活动投放</span>
+              <span v-if="row.type === 4">智能投放</span>
+              <span v-if="row.type === 2">地域投放</span>
+            </template>
+          </vxe-table-column>
+          <vxe-table-column title="状态" width="200">
+            <template #default="{ row }">
+              <span v-if="row.state === 1">生效中</span>
+              <span v-if="row.state === 0">未生效</span>
+            </template>
+          </vxe-table-column>
+          <vxe-table-column field="createTime" title="创建时间" />
+          <vxe-table-column title="操作" width="240">
+            <template #default="{ row }">
+              <vxe-button @click="toAdd(row)">编辑</vxe-button>
+              <vxe-button @click="del(row)">删除</vxe-button>
+            </template>
+          </vxe-table-column>
+        </vxe-table>
+        <vxe-pager :loading="loading" :current-page="searchForm.pageNum" :page-size="searchForm.pageSize" :total="searchForm.totalResult" :layouts="['PrevPage', 'JumpNumber', 'NextPage', 'FullJump', 'Sizes', 'Total']" @page-change="handlePageChange" />
+      </el-main>
+    </el-container>
+  </div>
+</template>
+
+<script>
+import { post, get } from '@/api/common'
+
+
+export default {
+  name: 'Index',
+  data () {
+    return {
+      //  搜索相关内容
+      searchForm: {
+        name: '',
+        state: null,
+        pageNum: 1,
+        pageSize: 10,
+        type: ""
+      },
+      // 表格数据
+      loading: false,
+      tableData: [],
+      templateList: [],
+    }
+  },
+  mounted () {
+    get('/templateInfo/page', { 'pageSize': 100, 'pageNum': 1 }).then(res => {
+      res.data.list.map(res => {
+        res.templatePhoto = process.env.VUE_APP_BASE_IMG_URL + res.templatePhoto
+        res.label = res.templateName
+        res.value = res.id
+      })
+      this.templateList = res.data.list
+    })
+    this.init()
+  },
+  methods: {
+    init () { // 列表搜索
+      get('/strategysenior/list', this.searchForm).then(res => {
+        if (res.data) {
+          this.tableData = res.data.list
+          this.searchForm.totalResult = res.data.total
+        } else {
+          this.tableData = []
+          this.searchForm.totalResult = 0
+        }
+
+      })
+    },
+
+    reset (formName) { // 重置
+      this.searchForm = {
+        name: '',
+        state: null,
+        pageNum: 1,
+        pageSize: 10,
+        totalResult: 0
+      }
+      this.init()
+    },
+    toAdd (e) {
+      const routeUrl = this.$router.resolve({ path: '/newSchemeProinfo/schemeAb', query: { id: e.id, type: e.type } })
+      window.open(routeUrl.href, '_blank')
+    },
+    del (row) {
+      this.$confirm('此操作将永久删除该策略, 是否继续?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        const $table = this.$refs.xTable
+        $table.remove(row)
+        post('/strategysenior/delete', { 'ids': [row.id] }).then(res => {
+        })
+      }).catch(() => {
+        this.$message({
+          type: 'info',
+          message: '已取消删除'
+        });
+      });
+    },
+    handlePageChange ({ currentPage, pageSize }) {
+      this.searchForm.pageNum = currentPage
+      this.searchForm.pageSize = pageSize
+      this.init()
+    }
+  }
+}
+</script>
+7
+<style lang="scss">
+.searchBox {
+  background-color: #fff;
+  border-radius: 4px;
+  box-shadow: #bfbfbf 0 0 2px;
+  height: unset !important;
+  padding: 10px 10px;
+
+  form {
+    margin: auto;
+
+    .el-form-item {
+      margin: 5px 5px;
+    }
+  }
+}
+
+.tableBox {
+  margin-top: 10px;
+  background-color: #fff;
+  border-radius: 4px;
+  box-shadow: #bfbfbf 0 0 2px;
+
+  .block {
+    .el-pagination {
+      margin-top: 30px;
+      float: right;
+    }
+  }
+}
+</style>

+ 254 - 0
purchase_ao/src/views/newSchemeProinfo/schemType.vue

@@ -0,0 +1,254 @@
+<template>
+  <div>
+    <el-container>
+      <!--搜索-->
+      <el-header class="searchBox">
+        <el-form :inline="true" :model="searchForm" ref="searchForm" class="demo-form-inline">
+          <el-form-item label="策略名称">
+            <el-input v-model="searchForm.name" placeholder="策略名称" />
+          </el-form-item>
+          <el-form-item label="生效状态">
+            <el-select v-model="searchForm.state" filterable placeholder="请选择">
+              <el-option label="生效中" :value="1" />
+              <el-option label="未生效" :value="0" />
+            </el-select>
+          </el-form-item>
+
+          <el-form-item style="float: right">
+            <el-button type="primary" @click="init()">搜索</el-button>
+            <el-button @click="reset('searchForm')">重置</el-button>
+          </el-form-item>
+        </el-form>
+      </el-header>
+      <!--表格-->
+      <el-main class="tableBox">
+        <vxe-toolbar>
+          <template #buttons>
+            <vxe-button icon="fa fa-plus" @click="addShow = true">新增</vxe-button>
+            <vxe-button @click="init()">刷新</vxe-button>
+          </template>
+        </vxe-toolbar>
+        <vxe-table border resizable keep-source show-overflow highlight-hover-row ref="xTable" :data="tableData" :edit-config="{trigger: 'click', mode: 'cell', showStatus: true, }" @edit-closed="editClosedEvent">
+          <vxe-table-column field="name" title="策略名称" />
+          <vxe-table-column field="state" title="状态" width="100">
+            <template #default="{ row }">
+              <span>{{row.state==0 ?'未生效':'生效中'  }}</span>
+            </template>
+          </vxe-table-column>
+
+          </vxe-table-column>
+          <vxe-table-column field="createTime" title="创建时间" />
+          <vxe-table-column title="操作" width="220">
+            <template #default="{ row }">
+              <vxe-button @click="editList(row)">编辑</vxe-button>
+              <vxe-button @click="del(row)">删除</vxe-button>
+            </template>
+          </vxe-table-column>
+        </vxe-table>
+        <vxe-pager :loading="loading" :current-page="searchForm.pageNum" :page-size="searchForm.pageSize" :total="searchForm.totalResult" :layouts="['PrevPage', 'JumpNumber', 'NextPage', 'FullJump', 'Sizes', 'Total']" @page-change="handlePageChange" />
+      </el-main>
+    </el-container>
+    <!-- 新增弹窗 -->
+    <el-dialog title="新增" :visible.sync="addShow" @close="closeDialog">
+      <el-form :model="addForm">
+        <el-form-item label="类型名称" label-width="80px">
+          <el-input v-model="addForm.name" autocomplete="off" />
+        </el-form-item>
+        <el-form-item label="生效状态">
+          <el-radio v-model="addForm.state" :label="0">失效</el-radio>
+          <el-radio v-model="addForm.state" :label="1">生效</el-radio>
+        </el-form-item>
+      </el-form>
+
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="addShow = false">取 消</el-button>
+        <el-button type="primary" @click="addList">确 定</el-button>
+      </div>
+    </el-dialog>
+
+    <!-- 编辑弹窗 -->
+    <el-dialog title="新增" :visible.sync="editShow">
+      <el-form :model="editForm">
+        <el-form-item label="类型名称" label-width="80px">
+          <el-input v-model="editForm.name" autocomplete="off" />
+        </el-form-item>
+        <el-form-item label="生效状态">
+          <el-radio v-model="editForm.state" :label="0">失效</el-radio>
+          <el-radio v-model="editForm.state" :label="1">生效</el-radio>
+        </el-form-item>
+      </el-form>
+
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="editShow = false">取 消</el-button>
+        <el-button type="primary" @click="editClick">编辑</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { post, get } from '@/api/common'
+
+export default {
+  name: 'Index',
+  data () {
+    return {
+      //  搜索相关内容
+      searchForm: {
+        name: '',
+        state: null,
+        pageNum: 1,
+        pageSize: 10,
+        totalResult: 0
+      },
+      // 表格数据
+      loading: false,
+      tableData: [],
+      addShow: false,
+      editShow: false,
+      strategyStatus: [
+        { label: '生效中', value: 1 },
+        { label: '未生效', value: 0 }
+      ],
+      editForm: {},
+      addForm: {
+        name: "",
+        state: "",
+
+      }
+    }
+  },
+  mounted () {
+    this.init()
+  },
+  methods: {
+    init () { // 列表搜索
+      // get('/strategytype/list', this.searchForm).then(res => {
+      //   if (res.data) {
+      //     this.tableData = res.data.list
+      //     this.searchForm.totalResult = res.data.total
+      //   } else {
+      //     this.tableData = []
+      //     this.searchForm.totalResult = 0
+      //   }
+      // })
+    },
+    //   编辑数据
+    editList (item) {
+      this.editShow = true
+      this.editForm = item
+    },
+    editClick () {
+      delete this.editForm._X_ROW_KEY;
+
+      post('/strategytype/update/' + this.editForm.id, this.editForm).then(res => {
+
+        if (res.code === 10000) {
+          this.editShow = false
+          this.$message.success(res.data)
+          this.init()
+        }
+      })
+    },
+
+    editClosedEvent ({ row, column }) {  // 列表修改
+      const $table = this.$refs.xTable
+      const field = column.property
+      const cellValue = row[field]
+      // 判断单元格值是否被修改
+      if ($table.isUpdateByRow(row, field)) {
+        setTimeout(() => {
+          let param = {}
+          param[field] = cellValue
+          post('/strategytype/update/' + row.id, row).then(res => {
+            this.$message({
+              message: res.message,
+              type: 'success'
+            });
+          })
+          // 局部更新单元格为已保存状态
+          $table.reloadRow(row, null, field)
+        }, 300)
+      }
+    },
+    reset (formName) { // 重置
+      this.searchForm = {
+        name: '',
+        state: null,
+        pageNum: 1,
+        pageSize: 10,
+        totalResult: 0
+      }
+      this.init()
+    },
+    addList () {
+
+      post('/strategytype/create', this.addForm).then(res => {
+        if (res.code === 10000) {
+          this.addShow = false
+          this.addForm.name = "";
+          this.$message.success(res.data)
+          this.init()
+          this.addShow = false
+        }
+
+      })
+    },
+    del (row) {
+      let {
+        id
+      } = row
+      let ids = []
+      ids.push(id)
+      post('/strategytype/delete', { ids: ids }).then(res => {
+        if (res.code === 10000) {
+          this.$message.success('删除成功')
+          this.init()
+        }
+
+      })
+    },
+    closeDialog () {
+      this.addForm.name = ""
+      this.addForm.id = ""
+    },
+    handlePageChange ({ currentPage, pageSize }) {
+      this.searchForm.pageNum = currentPage
+      this.searchForm.pageSize = pageSize
+      this.init()
+    }
+  }
+}
+</script>
+
+<style lang="scss">
+.searchBox {
+  background-color: #fff;
+  border-radius: 4px;
+  box-shadow: #bfbfbf 0 0 2px;
+  height: unset !important;
+  padding: 10px 10px;
+
+  form {
+    margin: auto;
+
+    .el-form-item {
+      margin: 5px 5px;
+    }
+  }
+}
+
+.tableBox {
+  margin-top: 10px;
+  background-color: #fff;
+  border-radius: 4px;
+  box-shadow: #bfbfbf 0 0 2px;
+
+  .block {
+    .el-pagination {
+      margin-top: 30px;
+      float: right;
+    }
+  }
+}
+</style>

+ 508 - 0
purchase_ao/src/views/newSchemeProinfo/schemeAb.vue

@@ -0,0 +1,508 @@
+<template>
+  <div>
+    <el-container>
+      <el-main>
+        <el-form :model="form" :rules="rules" ref="ruleForm" label-width="100px">
+          <el-divider content-position="left">编辑基本信息</el-divider>
+          <el-row :gutter="10">
+            <el-col :span="17">
+              <el-form-item label="策略名称" prop="name">
+                <el-input style="width: 300px" v-model="form.name" @change="changeInputer" />
+              </el-form-item>
+              <el-row :gutter="20">
+                <el-col :span="20">
+                  <el-form-item label="策略描述" prop="maskText">
+                    <el-input type="textarea" :autosize="{ minRows: 2, maxRows: 4 }" v-model="form.content" />
+                  </el-form-item>
+                </el-col>
+              </el-row>
+              <el-form-item label="策略类型">
+                <el-select style="width: 300px" v-model="form.type" placeholder="请选择策略类型">
+                  <el-option label="A/B策略" :value="1" />
+                  <el-option label="地域投放" :value="2" />
+                  <el-option label="活动投放" :value="3" />
+                  <el-option label="智能投放" :value="4">
+                    <span style="float:left">智能投放</span>
+                    <span style="float:right;color:#F56C6C">内测中</span>
+                  </el-option>
+
+                </el-select>
+              </el-form-item>
+              <el-form-item label="生效状态">
+                <el-select style="width: 300px" v-model="form.state" placeholder="请选择生效状态">
+                  <el-option label="有效" :value="1" />
+                  <el-option label="无效" :value="0" />
+                </el-select>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-divider content-position="left">规则配置 </el-divider>
+          <!-- ab策略-->
+          <div v-if="form.type==1">
+            <el-form-item label="日期选择">
+              <el-date-picker type="datetimerange" clearable v-model="datetimerange" start-placeholder="开始日期" end-placeholder="结束日期" range-separator="至" value-format="yyyy-MM-dd HH:mm:ss">
+              </el-date-picker>
+            </el-form-item>
+
+            <el-tabs v-model="editableTabsValue" type="card" closable @tab-click="clickTab">
+              <el-tab-pane v-for="(item, index) in abform.groupInfo" :key='item.groupName' :label="item.groupName" :name='item.groupName'>
+                <div>
+                  <el-form-item label="选择策略">
+                    <el-select v-model="item.strategyTemplateId" style="width: 40%" clearable filterable placeholder="请选择">
+                      <el-option v-for="item in strategyList" :key="item.id" :label="item.strategyName" :value="item.id">
+                      </el-option>
+                    </el-select>
+                  </el-form-item>
+
+                  <el-form-item label="分流占比" prop="flowPercent">
+                    <el-input style="width: 40%" v-model="item.flowPercent" placeholder="请输入小数" />
+                  </el-form-item>
+                </div>
+              </el-tab-pane>
+            </el-tabs>
+          </div>
+          <div v-if="form.type==2">
+            <el-form-item label="地域选择">
+              <el-select v-model="locationForm.locatioName" style="width: 40%" clearable filterable placeholder="请选择">
+                <el-option v-for="item in provinceListAll" :key="item" :value="item" :label="item" />
+                </el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item label="选用策略">
+              <el-select v-model="locationForm.strategyTemplateId" style="width: 40%" clearable filterable placeholder="请选择">
+                <el-option v-for="item in strategyList" :key="item.id" :label="item.strategyName" :value="item.id">
+                </el-option>
+              </el-select>
+            </el-form-item>
+          </div>
+          <div v-if="form.type==3">
+            <el-form-item label="日期选择">
+              <el-date-picker type="datetimerange" clearable v-model="datetimerange" start-placeholder="开始日期" end-placeholder="结束日期" range-separator="至" value-format="yyyy-MM-dd">
+              </el-date-picker>
+            </el-form-item>
+            <el-form-item label="星期选择">
+              <el-checkbox :indeterminate="isIndeterminate" v-model="checkAll" @change="handleCheckAllChange">
+                全选
+              </el-checkbox>
+              <div style="margin: 15px 0"></div>
+              <el-checkbox-group v-model="checkedWeeks" @change="handleCheckedCitiesChange">
+                <el-checkbox v-for="item in weeksList" :label="item" :key="item">{{ item }}</el-checkbox>
+              </el-checkbox-group>
+            </el-form-item>
+            <el-form-item label="时间选择">
+              <el-time-picker v-model="activeForm.startTime" :picker-options="{ start: '00:00', end: '18:30' }" format="HH:mm:ss" value-format="HH:mm:ss" placeholder="开始时间">
+              </el-time-picker>
+              -
+              <el-time-picker v-model="activeForm.endTime" format="HH:mm:ss" value-format="HH:mm:ss" placeholder="结束时间">
+              </el-time-picker>
+            </el-form-item>
+            <el-form-item label="投放策略">
+              <el-select v-model="activeForm.strategyTemplateId" style="width: 40%" clearable filterable placeholder="请选择">
+                <el-option v-for="item in strategyList" :key="item.id" :label="item.strategyName" :value="item.id">
+                </el-option>
+              </el-select>
+            </el-form-item>
+          </div>
+          <div v-if="form.type==4">
+            <el-form-item>
+              <el-checkbox-group v-model="checkVideo">
+                <el-checkbox v-for="item in checkList" :label="item">{{ item }}</el-checkbox>
+              </el-checkbox-group>
+            </el-form-item>
+            <el-form-item label="投放策略">
+              <el-select v-model="form.strategyTemplateId" style="width: 40%" clearable filterable placeholder="请选择">
+                <el-option v-for="item in strategyList" :key="item.id" :label="item.strategyName" :value="item.id">
+                </el-option>
+              </el-select>
+            </el-form-item>
+          </div>
+
+        </el-form>
+      </el-main>
+      <el-footer style="z-index: 9999">
+        <div class="bodyBox" style="display: flex;justify-content: flex-end">
+          <el-button>
+            清空
+          </el-button>
+          <el-button style="display: flex;justify-content: flex-end" type="primary" @click="onSubmit">
+            保存
+          </el-button>
+        </div>
+      </el-footer>
+    </el-container>
+  </div>
+</template>
+<script>
+import { post, get } from '@/api/common'
+const weekOptions = ["周日", "周一", "周二 ", "周三", "周四", "周五", "周六"];
+import { parseTimee } from "@/utils";
+export default {
+  data () {
+    return {
+      form: {
+        id: null,
+        strategyTemplateId: null,
+        name: "",
+        content: "",
+        type: 1,
+        state: "",
+      },
+
+      abform: { //ab表单
+        effectBeginTime: "00:00:00",
+        effectEndTime: "23:59:59",
+        groupInfo: [
+          {
+            "flowPercent": null,
+            "groupName": "对照组",
+            "state": 1,
+            "strategyTemplateId": "",
+          },
+          {
+
+            "flowPercent": null,
+            "groupName": "控制组",
+            "state": 1,
+            "strategyTemplateId": "",
+
+          }
+        ],
+      },
+      idd: "",
+      activeForm: {//活动表单
+        weeks: "0,1,2,3,4,5,6",
+        startDate: "",
+        endDate: "",
+        startTime: "00:00:00",
+        endTime: "23:59:59",
+        strategyTemplateId: "",
+
+      },
+      locationForm: {//地域表单
+        strategyTemplateId: "",
+        locatioName: "",
+      },
+
+      checkList: ["爱奇艺视频", "腾讯视频", "优酷视频", "B站视频", "投诉风险", "黑名单"],
+      time: [],
+      datetimerange: [],
+      timerange: [],
+      checkedWeeks: [],
+      checkVideo: [],
+      //策略列表
+      strategyList: {},
+      weeksList: weekOptions,
+      rules: {
+        strategyName: [
+          {
+            required: true,
+            message: "请输入策略名称",
+            trigger: "blur",
+          },
+        ],
+        testTypeId: [
+          {
+            required: true,
+            message: "请选择测试类型",
+            trigger: "change",
+          },
+        ],
+      },
+      editableTabsValue: '对照组',
+      isIndeterminate: true,
+      //全选
+      checkAll: false,
+      provinceListAll: [
+        "北京",
+        "上海",
+        "天津",
+        "重庆",
+        "黑龙江",
+        "吉林",
+        "辽宁",
+        "内蒙古",
+        "河北",
+        "新疆",
+        "甘肃",
+        "青海",
+        "陕西",
+        "宁夏",
+        "河南",
+        "山东",
+        "山西",
+        "安徽",
+        "湖北",
+        "湖南",
+        "江苏",
+        "四川",
+        "贵州",
+        "云南",
+        "广西",
+        "西藏",
+        "浙江",
+        "江西",
+        "广东",
+        "福建",
+        "台湾",
+        "海南",
+        "香港",
+        "澳门",
+      ]
+
+    }
+  },
+  created () {
+    // console.log(this.$store.state.user.name)
+    //获取策略
+    get('/strategyInfoNew/page', { 'pageSize': 9999, 'pageNum': 1, 'strategyType': 2 }).then(res => {
+      this.strategyList = res.data.list
+    })
+
+  },
+  mounted () {
+    //数据回显
+    if (this.$route.query.id) {
+      post('/strategysenior/' + this.$route.query.id, { id: this.$route.query.id }).then(res => {
+        res = res.data;
+        this.form = {
+          name: res.name,
+          content: res.content,
+          type: res.type,
+          state: res.state,
+        };
+
+        if (res.type === 1) {//ab回显
+          if (res.groupInfo) {
+            res.groupInfo = JSON.parse(res.groupInfo);
+          }
+
+
+          this.idd = res.abId
+          console.log(this.idd)
+
+          this.abform = {
+            groupInfo: [
+              {
+                "flowPercent": res.groupInfo[0].flowPercent,
+                "groupName": "对照组",
+                "state": 1,
+                "strategyTemplateId": res.groupInfo[0].strategyTemplateId,
+              },
+              {
+                "flowPercent": res.groupInfo[1].flowPercent,
+                "groupName": "控制组",
+                "state": 1,
+                "strategyTemplateId": res.groupInfo[1].strategyTemplateId,
+
+              }
+            ],
+
+          }
+          if (res.effectBeginTime) {
+            let effectBeginTime = parseTimee(res.effectBeginTime, "{y}-{m}-{d} {h}:{i}:{s}")
+            let effectEndTime = parseTimee(res.effectEndTime, "{y}-{m}-{d} {h}:{i}:{s}")
+            this.datetimerange = [effectBeginTime, effectEndTime];
+          }
+        }
+        if (res.type === 2) {//地域回显
+          this.locationForm = {
+            locatioName: res.locatioName,
+            strategyTemplateId: res.strategyTemplateId
+          }
+          this.idd = res.locationId
+          console.log(this.locationForm)
+          let checkedWeeks = res.weeks.split(",");
+          checkedWeeks.forEach((item) => {
+            this.checkedWeeks.push(weekOptions[item]);
+          });
+          console.log(checkedWeeks)
+        }
+        if (res.type === 3) {//活动回显
+          if (res.weeks) {
+            let checkedWeeks = res.weeks.split(",");
+            checkedWeeks.forEach((item) => {
+              this.checkedWeeks.push(weekOptions[item]);
+            });
+          }
+          if (res.startDate) {
+            let startDate = res.startDate
+            let endDate = res.endDate
+            this.datetimerange = [startDate, endDate];
+          }
+
+          this.idd = res.activityId
+          console.log(this.idd)
+          this.activeForm = {//活动表单
+            weeks: res.weeks,
+            startTime: res.startTime,
+            endTime: res.endTime,
+            strategyTemplateId: res.strategyTemplateId,
+
+          }
+          console.log(this.activeForm)
+
+
+        }
+
+      })
+    }
+  },
+  watch: {
+    datetimerange (val) {
+      if (val) {
+        //ab
+        this.abform.effectBeginTime = val[0];
+        this.abform.effectEndTime = val[1];
+        //活动
+        this.activeForm.startDate = val[0];
+        this.activeForm.endDate = val[1];
+
+      } else {
+        //ab
+        this.abform.effectBeginTime = "";
+        this.abform.effectEndTime = "";
+        //活动
+        this.activeForm.startDate = "";
+        this.activeForm.endDate = "";
+      }
+    },
+    checkedWeeks (val) {
+      this.activeForm.weeks = val
+        .map((i) => weekOptions.findIndex((j) => j == i))
+        .sort()
+        .toString();
+      // console.log(this.activeForm.weeks)
+    },
+  },
+  methods: {
+    //提交
+    onSubmit () {
+      if (this.$route.query.id) {//修改
+        this.form.id = this.$route.query.id
+        if (this.form.type === 1) {//ab修改
+          this.abform.abId = this.idd
+
+          let upform1 = { ...this.form, ...this.abform }
+          console.log(upform1)
+          post("/strategysenior/update/ab", upform1).then(res => {
+            // console.log(res)
+          })
+        }
+        if (this.form.type === 2) {//地域修改
+          this.locationForm.locationId = this.idd
+          let upform2 = { ...this.form, ...this.locationForm }
+          post("/strategysenior/update/location/", upform2).then(res => {
+            // console.log(res)
+          })
+        }
+        if (this.form.type === 3) {//活动修改
+          this.activeForm.activityId = this.idd
+          let upform3 = { ...this.form, ...this.activeForm }
+          post("/strategysenior/update/activity", upform3).then(res => {
+            // console.log(res)
+          })
+
+        }
+
+      }
+      else {//新增
+        if (this.form.type == 1) { //ab策略
+          // console.log(this.abform.groupInfo)
+
+          let form1 = { ...this.form, ...this.abform }
+          post("/strategysenior/create/abtest", form1).then(res => {
+            this.$message({
+              message: res.message,
+              type: "success",
+              duration: 3000,
+              offset: 360,
+            });
+            // setTimeout(() => {
+            //   window.close()
+            // }, 1200)
+
+          })
+        }
+        if (this.form.type == 3) {//活动策略
+          let form2 = { ...this.form, ...this.activeForm }
+          post("/strategysenior/create/activity", form2).then(res => {
+            this.$message({
+              message: res.message,
+              type: "success",
+              duration: 3000,
+              offset: 360,
+            });
+            // setTimeout(() => {
+            //   window.close()
+            // }, 1200)
+          })
+
+        }
+        if (this.form.type == 2) {//地域投放
+          let form3 = { ...this.form, ...this.locationForm }
+          console.log(form3)
+          post("/strategysenior/create/location", form3).then((res) => {
+            this.$message({
+              message: res.message,
+              type: "success",
+              duration: 3000,
+              offset: 360,
+            });
+            // setTimeout(() => { 
+            //   window.close()
+            // }, 1200)
+          })
+
+
+        }
+      }
+    },
+    changeInputer () {
+      //新增自动添加名字
+      if (!this.$route.query.id) {
+        this.form.name = `${this.$store.state.user.name}--${this.form.name}`
+      }
+
+    },
+    clickTab (tab) {
+      console.log(this.abform.groupInfo[tab.index])
+    },
+    handleCheckAllChange (val) {
+      this.checkedWeeks = val ? weekOptions : [];
+      this.isIndeterminate = false;
+    },
+    handleCheckedCitiesChange (value) {
+      let checkedCount = value.length;
+      this.checkAll = checkedCount === this.weeksList.length;
+      this.isIndeterminate =
+        checkedCount > 0 && checkedCount < this.weeksList.length;
+    },
+  }
+
+}
+</script>
+<style lang="scss">
+.bodyBox {
+  position: fixed;
+  bottom: 20px;
+  right: 20px;
+}
+.el-main {
+  height: 93vh;
+  padding-bottom: 100px;
+}
+
+.avatar {
+  width: 100%;
+  max-width: 500px;
+}
+
+.el-divider {
+  margin-bottom: 40px !important;
+
+  .el-divider__text {
+    font-size: 17px !important;
+    font-weight: bold !important;
+  }
+}
+</style>