wangziqian 5 лет назад
Родитель
Сommit
8283cd2bea

+ 11 - 3
src/components/dialog/normalDialog.vue

@@ -11,9 +11,9 @@
     >
       <slot />
       <span v-show="showFooter" slot="footer" class="dialog-footer">
-        <el-button v-show="buttomType ==='danger'" :type="buttomType" @click="confirm()">{{ submitButton }}</el-button>
-        <el-button @click="cancel()">取 消</el-button>
-        <el-button v-show="buttomType !=='danger'" :type="buttomType" @click="confirm()">{{ submitButton }}</el-button>
+        <el-button v-show="buttomType ==='danger'" :type="buttomType" size="small" @click="confirm()">{{ submitButton }}</el-button>
+        <el-button size="small" @click="cancel()">取 消</el-button>
+        <el-button v-show="buttomType !=='danger'" :type="buttomType" size="small" @click="confirm()">{{ submitButton }}</el-button>
       </span>
     </el-dialog>
   </div>
@@ -89,6 +89,14 @@ export default {
 <style scoped lang="scss">
 >>>.el-dialog__header {
   padding: 20px !important;
+  border-bottom:1px solid rgba(238,238,238,1);
+}
+>>>.el-dialog__footer {
+  border-top:1px solid rgba(238,238,238,1);
+  padding: 20px;
+}
+>>>.el-dialog__body {
+  padding: 20px;
 }
 >>>.el-dialog__title{
   padding-left: 10px;

+ 182 - 0
src/views/ToConfigure/components/modifyNotice.vue

@@ -0,0 +1,182 @@
+<template>
+  <normal-dialog
+    :show-dialog.sync="show"
+    :title="title"
+    :is-default-close="false"
+    width="60%"
+    @confirm="confirmForm()"
+    @cancel="cancel()"
+  >
+    <article>
+      <h2 class="form-title">需求范围</h2>
+      <el-form ref="form" :model="formData" label-width="100px" label-position="left">
+        <el-form-item :label="type === 'require'?'需求方向':'任务方向'">
+          <el-select v-model="formData.direction" placeholder="请选择" size="small">
+            <el-option label="区域一" value="shanghai" />
+            <el-option label="区域二" value="beijing" />
+          </el-select>
+        </el-form-item>
+      </el-form>
+      <el-form ref="form" :model="formData" label-width="100px" label-position="left" :inline="true">
+        <el-form-item label="跟版客户端">
+          <el-select v-model="formData.app" placeholder="请选择" size="small">
+            <el-option v-for="item in appClientList" :key="'app'+item.code" :label="item.msg" :value="item.code" />
+          </el-select>
+        </el-form-item>
+        <el-form-item>
+          <el-select v-model="formData.client" placeholder="请选择" size="small">
+            <el-option v-for="item in clientList" :key="'client'+item.code" :label="item.msg" :value="item.code" />
+          </el-select>
+        </el-form-item>
+      </el-form>
+      <h2 class="form-title">通知条件</h2>
+      <el-form ref="form" :model="formData" label-width="100px" label-position="left">
+        <el-form-item v-for="(item,index) in formData.conditionList" :key="'condition'+index" label="条件">
+          <el-select v-model="item.type" placeholder="请选择" size="small" class="condition-select">
+            <el-option v-for="key in requireTypeList" :key="key.label" :label="key.label" :value="key.value" />
+          </el-select>
+          <el-select v-model="item.status" placeholder="请选择" size="small" class="condition-select">
+            <el-option v-for="key in requireTypeList" :key="key.label" :label="key.label" :value="key.value" />
+          </el-select>
+          <el-select v-model="item.delay" placeholder="请选择" size="small" class="condition-select">
+            <el-option v-for="key in requireTypeList" :key="key.label" :label="key.label" :value="key.value" />
+          </el-select>
+          <el-select v-model="item.more" placeholder="请选择" size="small" class="condition-select">
+            <el-option v-for="key in requireTypeList" :key="key.label" :label="key.label" :value="key.value" />
+          </el-select>
+        </el-form-item>
+        <div class="add-condition" @click="addCondition()"><i class="el-icon-circle-plus-outline" /> 添加条件</div>
+      </el-form>
+    </article>
+  </normal-dialog>
+</template>
+<script>
+import { showAppClientEnum } from '@/api/version.js'
+import normalDialog from '@/components/dialog/normalDialog'
+export default {
+  components: { normalDialog },
+  props: {
+    data: {
+      type: Object,
+      default: () => null,
+      required: false
+    },
+    visible: {
+      type: Boolean,
+      default: false,
+      required: true
+    },
+    type: {
+      type: String,
+      default: 'require', // 需求:require,任务:task
+      required: false
+    }
+  },
+  data() {
+    return {
+      title: '新建需求定时通知',
+      formData: {
+        direction: null,
+        app: null,
+        client: null,
+        conditionList: []
+      },
+      show: this.visible, // 显示弹框
+      appClientList: [], // 客户端选择列表
+      requireTypeList: [{ label: '需求状态', value: 0 }, { label: '需求事件', value: 1 }] // 需求条件类型选择列表
+    }
+  },
+  computed: {
+    clientList: { // 版本列表
+      get() {
+        if (this.formData.app !== null) {
+          const obj = this.appClientList.find(item => item.code === this.formData.app)
+          return obj.childEnumInfos || []
+        } else {
+          return []
+        }
+      }
+    }
+  },
+  watch: {
+    data: {
+      handler(newV) {
+        if (newV) {
+          this.formData = newV
+        }
+      },
+      deep: true,
+      immediate: true
+    },
+    visible: {
+      handler(newV) {
+        this.show = newV
+      },
+      deep: true,
+      immediate: true
+    },
+    'formData.app': { // 客户端改变,版本默认取第一个版本
+      handler(newV) {
+        this.formData.client = this.clientList[0] || null
+      }
+    }
+  },
+  created() {
+    this.showAppClientEnum()
+  },
+  methods: {
+    async showAppClientEnum() { // 获取客户端列表
+      const res = await showAppClientEnum()
+      if (res.code === 200) {
+        this.appClientList = res.data.appClient
+      }
+    },
+    addCondition() { // 添加条件
+      this.formData.conditionList.push({
+        type: 0,
+        status: 0,
+        delay: 0,
+        more: 1
+      })
+    },
+    confirmForm() {
+      this.$emit('confirm')
+    },
+    cancel() {
+      this.show = false
+      this.$emit('update:visible', this.show)
+      this.$emit('cancel')
+    }
+  }
+}
+</script>
+<style lang="scss" scoped>
+article{
+  padding: 0 45px;
+  .form-title {
+    margin: 0;
+    padding: 0;
+    font-size: 18px;
+    color: #333333;
+    margin: 20px 0;
+  }
+  .form-title:nth-child(1){
+    margin-top: 0;
+  }
+  /deep/.el-form-item {
+    font-size: 14px;
+    margin-bottom: 10px;
+    label {
+      color: #666666;
+      font-weight: 400;
+    }
+  }
+  .condition-select {
+    width: 22%;
+  }
+  .add-condition {
+    cursor: pointer;
+    color: #409EFF;
+  }
+}
+</style>

+ 18 - 3
src/views/ToConfigure/components/noticeConfig.vue

@@ -14,8 +14,8 @@
         popper-class="notice-config-popper"
       >
         <ul class="add-require-task">
-          <li>需求定时通知</li>
-          <li>任务定时通知</li>
+          <li @click="visibleModify = true">需求定时通知</li>
+          <li @click="visibleModify = true">任务定时通知</li>
         </ul>
         <el-button slot="reference" type="primary" size="medium" class="control-add">
           <i class="el-icon-plus" />新建<i class="el-icon-arrow-down" />
@@ -81,12 +81,20 @@
       <li class="notice-item" />
       <li class="notice-item" />
     </ul>
+    <modify-notice
+      v-if="visibleModify"
+      :visible.sync="visibleModify"
+      :type="modifyType"
+      @confirm="confirmModify"
+    />
   </section>
 </template>
 <script>
+import modifyNotice from './modifyNotice'
 import requireImg from '@/assets/detailPage/需求@2x.png'
 import taskImg from '@/assets/detailPage/任务@2x.png'
 export default {
+  components: { modifyNotice },
   props: {
     bizId: {
       type: Number,
@@ -98,11 +106,18 @@ export default {
     return {
       activeTab: 1,
       requireImg: requireImg,
-      taskImg: taskImg
+      taskImg: taskImg,
+      visibleModify: true, // 添加修改弹框
+      modifyType: 'require'// 弹框类型
     }
   },
   created() {
 
+  },
+  methods: {
+    confirmModify() {
+      this.visibleModify = false
+    }
   }
 }
 </script>

+ 1 - 1
src/views/projectManage/version/list/index.vue

@@ -50,7 +50,7 @@
                   <el-table-column prop="priority" label="优先级" min-width="7%" align="center">
                     <template v-slot="scope">
                       <div class="div_priority" :style="{background: priorityColors[scope.row.priority%priorityColors.length]}">{{ 'P'+scope.row.priority }}</div>
-                      <div :class="[{ active: isActive=='h' }, { active1: isActive=='l' },{ active1: isActive=='l' }]" />
+                      <!-- <div :class="[{ active: isActive=='h' }, { active1: isActive=='l' },{ active1: isActive=='l' }]" /> -->
                     </template>
                   </el-table-column>
                   <el-table-column prop="requirementName" label="需求名称" min-width="33%">