Explorar el Código

线上问题,月报

洪海涛 hace 4 años
padre
commit
49ad788f42

+ 11 - 0
src/components/formInput/index.vue

@@ -76,10 +76,21 @@
       :style="itemStyles"
       @change="(e) => $emit('onChange', e)"
     />
+    <!-- 团队选择 -->
+    <selectCascader
+      v-else-if="type === 'cascader'"
+      v-model="val"
+      :size="size"
+      :placeholder="placeholder"
+      :style="itemStyles"
+      @change="(e) => $emit('onChange', e)"
+    />
   </div>
 </template>
 <script>
+import selectCascader from '@/components/select/selectCascader'
 export default {
+  components: { selectCascader },
   props: {
     value: defaultStatus,
     title: {

+ 36 - 9
src/components/select/selectCascader.vue

@@ -4,10 +4,10 @@
     :multiple="multiple"
     filterable
     remote
-    size="small"
+    :size="size"
     clearable
     collapse-tags
-    style="width: 100%"
+    :style="itemStyles"
     :placeholder="placeholder"
     :remote-method="remoteMethod"
     @change="changeCascader"
@@ -19,9 +19,25 @@
 </template>
 
 <script>
-
+/**
+ * 提炼自月报的团队选择器
+ * 使用前,需要在组件渲染前,配合 vuex 中的获取部门数据的 actions 的方法来使页面自动获取数据
+ * 在 created 或者 mounted 中 放入下面这句函数即可
+ * 示例:获取部门数据
+ * this.$store.dispatch('monthlyReportEdit/setSelectEnum')
+ * 模版中的用法
+ *  <!-- 团队选择 -->
+ *  <selectCascader
+ *  v-else-if="type === 'cascader'"
+ *  v-model="val"
+ *  :size="size"
+ *  :placeholder="placeholder"
+ *  :style="itemStyles"
+ *  @change="(e) => $emit('onChange', e)"
+ *  />
+ */
 export default {
-  name: 'CascaderInfo',
+  name: 'SelectCascader',
   props: {
     multiple: {
       type: Boolean,
@@ -33,6 +49,16 @@ export default {
       required: false,
       default: () => []
     },
+    itemStyles: {
+      type: Object,
+      default: () => ({ width: '100%' }),
+      required: false
+    },
+    size: {
+      type: String,
+      required: false,
+      default: 'small'
+    },
     placeholder: {
       type: String,
       required: false,
@@ -50,11 +76,11 @@ export default {
       return this.$store.state.monthlyReportEdit.selectEnum
     }
   },
-  // watch: {
-  //   value() {
-  //     this.init()
-  //   }
-  // },
+  watch: {
+    selectEnum() {
+      this.init()
+    }
+  },
   mounted() {
     // this.selectValue = this.value
     this.init()
@@ -112,6 +138,7 @@ export default {
     },
     changeCascader(value) {
       this.$emit('input', value)
+      console.log(141, value)
       this.$emit('change', value)
     }
   }

+ 1 - 1
src/views/monthlyReport/childrenPage/editReport/components/MrTable/index.vue

@@ -295,7 +295,7 @@ import _ from 'lodash'
 import { uuid10 } from '@/utils'
 import Analysis from './Analysis'
 import LinkEdit from './LinkEdit'
-import Cascader from '../Cascader'
+import Cascader from '@/components/select/selectCascader'
 import CascaderInfo from '../CascaderInfo'
 import TextInfo from '../TextInfo'
 import MultiplePeopleInfo from '../MultiplePeopleInfo'

+ 1 - 1
src/views/monthlyReport/childrenPage/editReport/components/ReadOnlyTable.vue

@@ -76,7 +76,7 @@ import _ from 'lodash'
 import { uuid10 } from '@/utils'
 import drawerAll from '@/views/quality/components/drawerAll'
 import Clickoutside from 'element-ui/src/utils/clickoutside'
-// import Cascader from '../Cascader'
+// import Cascader from '@/components/select/selectCascader'
 import CascaderInfo from './CascaderInfo'
 
 export default {

+ 1 - 1
src/views/monthlyReport/childrenPage/editReport/components/markingIssues.vue

@@ -39,7 +39,7 @@
 </template>
 <script>
 import { uuid10 } from '@/utils'
-import Cascader from './Cascader'
+import Cascader from '@/components/select/selectCascader'
 import normalDialog from '@/components/dialog/normalDialog'
 import Clickoutside from 'element-ui/src/utils/clickoutside'
 import searchPeople from '@/components/select/searchPeople'

+ 1 - 1
src/views/monthlyReport/childrenPage/setReport/components/nodeTreeSet.vue

@@ -44,7 +44,7 @@
 
 <script>
 import normalDialog from '@/components/dialog/normalDialog'
-import Cascader from '@/views/monthlyReport/childrenPage/editReport/components/Cascader'
+import Cascader from '@/components/select/selectCascader'
 import { getDeptByKeyWord, createOdinDeptRel, deleteOdinBizRel, getOdinTree, getOdinNodeByParentId, addShowOdinNode } from '@/api/qualityMonthlyReport'
 export default {
   components: { normalDialog, Cascader },

+ 1 - 1
src/views/monthlyReport/index.vue

@@ -13,8 +13,8 @@
 
       <template slot="content">
         <div v-if="reportData.roleCode !== 30">
-          <el-button type="primary" size="small" @click="createReport">新建月报</el-button>
           <el-button plain size="small" @click="jump('report_home_set', '/monthlyReport/set', {})">月报设置</el-button>
+          <el-button type="primary" size="small" @click="createReport">新建月报</el-button>
         </div>
       </template>
     </headerCom>

+ 11 - 2
src/views/projectManage/onlineproblem/create/component/renderBase.js

@@ -1,4 +1,3 @@
-
 const data = [
   [{
     name: '名称',
@@ -42,7 +41,7 @@ const data = [
     key: 'happenDate',
     type: 'date',
     requried: true
-  }, {
+  }, /* {
     name: '责任团队',
     key: 'teamId',
     type: 'remoteSelect',
@@ -51,6 +50,16 @@ const data = [
     value: '',
     utilName: 'getTeam',
     option: []
+  },*/
+  {
+    name: '责任团队',
+    key: 'deptIds',
+    type: 'cascader',
+    multiple: true,
+    placeholder: '请选择责任团队',
+    value: '',
+    utilName: 'getDept',
+    option: []
   }],
   [{
     name: '影响面',

+ 15 - 2
src/views/projectManage/onlineproblem/detial/component/base.vue

@@ -61,15 +61,24 @@
       <el-form-item label="责任团队:">
         <over-click id="teamId-select" @overMouse="changeArea">
           <template slot="active">
+            {{ data.teamId }}-{{ data.deptId }}
             <selectTeam
+              v-if="data.teamId"
               :value="data.teamId"
               :name="data.teamName"
               :biz-id-flag="false"
               @onChange="(e) => onChange('teamId', e)"
             />
+            <selectCascader
+              v-else
+              :value="data.deptIds"
+              placeholder="请选择责任团队"
+              @change="(e) => onChange('deptIds', e)"
+            />
           </template>
           <template slot="overMouse">
-            <span :class="!data.teamName && 'showPlacehodler'">{{ data.teamName ? data.teamName : '请选择' }}</span>
+            <span v-if="data.teamId" :class="!data.teamName && 'showPlacehodler'">{{ data.teamName ? data.teamName : '请选择' }}</span>
+            <selectCascaderInfo v-else :team-data="data.deptIds" />
           </template>
         </over-click>
       </el-form-item>
@@ -166,11 +175,15 @@
 </template>
 <script>
 import selectTeam from '@/components/select/selectTeam'
+import selectCascader from '@/components/select/selectCascader'
+import selectCascaderInfo from '@/components/select/selectCascaderInfo'
 import overClick from '@/components/click/overClick'
 export default {
   components: {
     overClick,
-    selectTeam
+    selectTeam,
+    selectCascader,
+    selectCascaderInfo
   },
   props: {
     data: {

+ 2 - 0
src/views/projectManage/onlineproblem/detial/index.vue

@@ -172,6 +172,8 @@ export default {
     }
   },
   async mounted() {
+    // 获取部门数据
+    this.$store.dispatch('monthlyReportEdit/setSelectEnum')
     if (this.id) {
       await this.search()
       this.getCommentList()