Browse Source

Merge remote-tracking branch 'origin/mergeBranch' into mergeBranch

# Conflicts:
#	src/HDrpManagement/projectTask/detail/modules/evaluationItems.vue
qymljy 2 years ago
parent
commit
e48307fb9d

+ 0 - 1
src/Form/contractManage/add.vue

@@ -24,7 +24,6 @@
       <el-button ref="btn" slot="reference" size="small" type="primary">新 建</el-button>
     </el-popover> -->
     <el-drawer
-      title="我是标题"
       :visible.sync="drawer"
       :with-header="false"
       direction="rtl"

+ 23 - 17
src/HDrpManagement/projectTask/detail/modules/evaluationItems.vue

@@ -7,7 +7,8 @@
           style="width: 100%"
           size="mini"
           border
-          ref="listItem" :layout="tablecolsItem" :data="listItem" :opwidth="200" :custom="true" @row-click="rowClick"
+          highlight-current-row
+          ref="listItem" :data="listItem" :opwidth="200" :custom="true" @row-click="rowClick"
           >
         <el-table-column
             prop="optionname"
@@ -85,11 +86,11 @@ export default {
       flagStage:true,
       total:0,
       currentPage:0,
+      act_row:null
     }
   },
   methods:{
     rowClick(row){
-      console.log(row,'行数据')
       if (this.data.onparties === 0){
         this.flagObject = false
       }else {
@@ -108,27 +109,32 @@ export default {
         this.flag = true
         this.listObject = row.projtaskmag_optionscore
       }
-      console.log(this.flag,this.flagObject,this.flagStage)
     },
+    setDefault () {
+      this.listItem = this.data.projtaskmag_options
+      if (this.data.onstage === 0 && this.data.onparties === 0){
+        this.listObject = []
+      } else {
+        this.listObject = this.data.projtaskmag_options[0].projtaskmag_optionscore
+        this.rowClick(this.data.projtaskmag_options[0])
+      }
+      this.$nextTick(()=>{
+        this.$refs['listItem'].setCurrentRow(this.listItem[0])
+      })
+    }
   },
-  mounted() {
-    this.$nextTick(()=>{
-      this.$refs['listItem'].setCurrentRow(this.listItem[0])
-    })
-  },
-  created() {
-    this.tablecolsItem = this.tool.tabelCol(this.$route.name).evaluationItems.tablecols
-    this.listItem = this.data.projtaskmag_options
-    console.log(this.data)
-    if (this.data.onstage === 0 && this.data.onparties === 0){
-      this.listObject = []
-    }else {
-      this.listObject = this.data.projtaskmag_options[0].projtaskmag_optionscore
-      this.rowClick(this.data.projtaskmag_options[0])
+  watch: {
+    data (val) {
+      this.setDefault()
     }
   },
+  mounted () {
+    this.setDefault()
+  }
 }
 </script>
+<style>
+</style>
 <style scoped>
 
 </style>

+ 32 - 99
src/HManagement/task/index.vue

@@ -1,118 +1,51 @@
+
 <template>
-  <div class="task__pane;">
-    <normalLayout>
-      <div slot="titleRight">
-        <add-task></add-task>
-      </div>
-      <div class="container" slot="content">
-        <el-tabs v-model="activeName" @tab-click="handleClick">
-          <el-tab-pane label="我创建的" name="5"></el-tab-pane>
-          <el-tab-pane label="我负责的" name="1"></el-tab-pane>
-          <el-tab-pane label="我参与的" name="2"></el-tab-pane>
-          <el-tab-pane label="我下属负责的" name="3"></el-tab-pane>
-          <el-tab-pane label="我下属参与的" name="4"></el-tab-pane>
-        </el-tabs>
+  <div>
+    <basicLayout 
+      ref="basicLayout" 
+      :oldFormPath="{
+        add:'HManagement/task/modules',
+        edit:'HManagement/task/modules'
+      }"
+      tableName="sys_task" 
+      idName="sys_taskid" 
+      :apiId="{query:20220901162901,del:20221211112601}"
+      :options="options"
+      :detailPath="{
+        path:'/task_detail'
+      }">
+      <div slot="custom"></div>
+      <template v-slot:tbList="scope">
         <div>
-         <el-card v-for="item in list" :key="item.index" class="normal-margin" :body-style="{padding:'10px'}">
-          <div slot="header" class="flex-align-center">
-            <p class="avatar">{{item.createby.substr(0, 1)}}</p>&emsp;
-            <p class="task__label">{{item.createby}}</p>&emsp;
-            <el-tag size="small" type="primary">{{item.status}}</el-tag>&emsp;<span class="task__label">{{item.starttime}}</span>
-          </div>
-          <div>
-            <p><span class="task__label">标题:&emsp;</span>{{item.title}}</p>
-            <p><span class="task__label">描述:&emsp;</span>{{item.remaks}}</p>
-          </div>
-         </el-card>
-        </div>
-        <div class="container normal-panel" style="text-align:right">
-          <el-pagination
-            background
-            @size-change="handleSizeChange"
-            @current-change="handleCurrentChange"
-            :current-page="currentPage"
-            :page-sizes="[20, 50, 100, 200]"
-            layout="total,sizes, prev, pager, next, jumper"
-            :total="total">
-          </el-pagination>
+          {{scope.data.column.data[[scope.data.column.columnname]]}}
         </div>
-      </div>
-    </normalLayout>
+      </template>
+      <template v-slot:tbOpreation="scope">
+      </template>
+    </basicLayout>
   </div>
 </template>
 
 <script>
-import addTask from './modules/add.vue'
+/**
+ * @basicLayout 提供this.$ref['basicLayout'].listData()方法查询列表信息
+ * @param {string} formPath 新建,编辑组件所在文件夹名称,以后所有列表新增修改文件统一放入Form文件夹下面,并创建与开发应用相同的名称的子文件夹
+ * @param {string} tableName 开发端配置的表格名称
+ * @param {String} idName 数据主id名称
+ * @param {object} apiId:{query:查询的接口id,del:删除的接口id} 
+ * @param {Array} options:{label:描述,value:值} 
+ */
 export default {
-  components:{
-    addTask
-  },
   data () {
     return {
-      activeName:'5',
-      param:{
-        "id":20220901162901,
-          "content": {
-            "pageNumber": 1,
-            "pageSize": 20,
-            "type":this.activeName,
-            "where":{
-              "condition":"",
-              "status":""
-            }
-          }
-      },
-      list:[],
-      total:0,
-      currentPage:0
+      options:[]
+      
     }
   },
   methods:{
-    handleClick (val) {
-      this.param.content.type = this.activeName
-      this.listData()
-    },
-    async listData () {
-      const res = await this.$api.requested(this.param)
-      this.list = res.data
-      this.total = res.total
-      this.currentPage = res.pageNumber
-    },
-    handleSizeChange(val) {
-      // console.log(`每页 ${val} 条`);
-      this.param.content.pageSize = val
-      this.listData()
-    },
-    handleCurrentChange(val) {
-      // console.log(`当前页: ${val}`);
-      this.param.content.pageNumber = val
-      this.listData()
-    },
-  },
-  mounted () {
-    this.listData()
   }
 }
 
 </script>
 <style>
-</style>
-<style scoped>
-.task__pane{
-  vertical-align:-webkit-baseline-middle;
-}
-.avatar{
-  width: 30px;
-  height: 30px;
-  text-align: center;
-  line-height: 30px;
-  font-size: 1rem;
-  color:#fff;
-  border-radius: 100%;
-  background: #3874F6;
-}
-.task__label{
-  color:rgb(173, 172, 172);
-  font-size: 14px;
-}
 </style>

+ 17 - 4
src/HManagement/task/modules/add.vue

@@ -87,8 +87,8 @@ export default {
 			folderid:JSON.parse(sessionStorage.getItem('folderid')).appfolderid,
 			form:{
 				"sys_taskid":0,
-        "title":"任务标题",
-        "remarks":"任务说明",
+        "title":"",
+        "remarks":"",
         "starttime":"",
         "remindday":0,
         "ownertable":"",
@@ -122,11 +122,24 @@ export default {
           "ownerid": res.data.sys_taskid,
           "usetype": 'default',
         }
-				this.errormsg = ''
-        this.dialogTableVisible = false
         this.$refs['upload'].toUpload()
         this.$emit('onSuccess')
+				this.dialogTableVisible = false
+				this.refresh()
+				this.errormsg = ''
       })
+		},
+		refresh () {
+			this.form = {
+				"sys_taskid":0,
+        "title":"任务标题",
+        "remarks":"任务说明",
+        "starttime":"",
+        "remindday":0,
+        "ownertable":"",
+        "ownerid":0,
+        "endtime":""
+			}
 		}
 	}
 }

+ 121 - 0
src/HManagement/task/modules/detail.vue

@@ -0,0 +1,121 @@
+<template>
+  <div>
+    <basicDetails
+        ref="details"
+        :titleText="`${mainData.title}`"
+        :oldFormPath="{edit:'HManagement/task/modules'}"
+        :editData="mainData"
+        :mainAreaData="mainAreaData"
+        turnPageId="20220901162901"
+        idname="sys_taskid"
+        ownertable="sys_task"
+        tags=""
+        :tabs="['任务信息']"
+        @pageChange="pageChange"
+        @onEditSuccess="queryMainData($route.query.id)">
+      <div slot="tags">
+      </div>
+      <div slot="customOperation" >
+      </div>
+      <div slot="slot0" >
+      </div>
+      <div slot="slot1" >
+      </div>
+    </basicDetails>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "detail",
+  data() {
+    return {
+      mainData:{},
+      mainAreaData:{}
+    }
+  },
+  components:{
+  },
+  methods:{
+    async queryMainData(id) {
+      const res = await this.$api.requested({
+        "id":20221211111901,
+        "content": {
+          "sys_taskid": this.$route.query.id
+        }
+      })
+      this.mainData = res.data
+      this.changeDataStructure()
+    },
+    changeDataStructure() {
+      let that = this
+      this.mainAreaData = [
+        {
+          label:'创建人',
+          value:this.mainData.createby
+        },
+        {
+          label:'创建时间',
+          value:this.mainData.createdate
+        },
+        {
+          label:'开始时间',
+          value:this.mainData.starttime
+        },
+        {
+          label:'结束时间',
+          value:this.mainData.endtime?this.mainData.endtime:'无限'
+        },
+        {
+          label:'提醒时间',
+          value:this.mainData.remindday?`${this.mainData.remindday}天`:'无需提醒'
+        },
+        {
+          label:'状态',
+          value:this.mainData.status,
+          style:()=>{
+            let color = ''
+            switch (this.mainData.status) {
+              case '待执行':
+                color = '#3874f6'
+                break;
+              case '进行中':
+                color = '#52c41a'
+                break;
+              case '已完成':
+                color = '#333333'
+                break;
+              default:
+                break;
+            }
+            return{color:color}
+          }
+        }
+      ]
+    },
+    // 监听切换数据,上一页,下一页
+    pageChange (id,rowindex,tabIndex) {
+
+      this.$refs['details'].param.content.type = this.$route.query.type
+
+      tabIndex = this.$route.query.tabIndex
+
+      this.$router.replace({path:'/taskDetails',query:{id:id,rowindex:rowindex,tabIndex:tabIndex,type:this.$route.query.type}})
+      this.queryMainData(id)
+    },
+    onSuccess(){
+      this.queryMainData(this.$route.query.id)
+      this.$emit('onSuccess')
+    }
+  },
+  mounted () {
+    this.queryMainData(this.$route.query.id)
+  },
+  created() {
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 142 - 0
src/HManagement/task/modules/edit.vue

@@ -0,0 +1,142 @@
+<template>
+  <div>
+    <el-button size="mini" type="primary" @click="onShow(dialogTableVisible = true)">
+        编辑任务
+    </el-button>
+    <el-dialog title="编辑待办" append-to-body :visible.sync="dialogTableVisible" width="700px">
+			<el-alert
+				v-if="errormsg"
+				class="normal-margin"
+				:title="errormsg"
+				type="error">
+			</el-alert>
+			<el-input class="normal-margin" v-model="form.title" placeholder="输入任务标题" type="text" show-word-limit maxlength="40" size="small"></el-input>
+			<el-input  class="normal-margin" v-model="form.remarks" placeholder="输入任务内容" type="textarea" show-word-limit maxlength="100" size="small"></el-input>
+			<div class="flex-align-center flex-between normal-margin">
+				<p class="task__label"><i class="el-icon-time"></i>&emsp;开始:</p>
+				<el-date-picker
+					v-model="form.starttime"
+					type="date"
+					placeholder="选择日期"
+					value-format="yyyy-MM-dd"
+					size="mini">
+				</el-date-picker>
+				&emsp;- &emsp;
+				<p class="task__label">结束:</p>
+				<el-date-picker
+					v-model="form.endtime"
+					type="date"
+					placeholder="选择日期"
+					value-format="yyyy-MM-dd"
+					size="mini">
+				</el-date-picker>
+			</div>
+			<div class="normal-margin flex-align-center">
+				<p class="task__label"><i class="el-icon-bell"></i>&emsp;提醒时间&emsp;</p>
+				<el-input :disabled="!form.endtime" v-model="form.remindday" size="mini" style="width:90px"></el-input>
+				<p>&emsp;天</p>
+			</div>
+			<!-- <div class="normal-margin">
+				<p class="task__label"><i class="el-icon-upload2"></i>&emsp;上传附件</p>
+				<upload
+					ref="upload"
+					:folderid="folderid"
+					:bindData="bindData"
+					type="button">
+				</upload>
+			</div> -->
+			<!-- <div class="normal-margin">
+				<p class="mt-10 task__label">关联项目/客户</p>
+				<el-input placeholder="请输入内容" disabled v-model="input3" class="input-with-select" size="small">
+					<el-select v-model="form.nat" slot="prepend" style="width:100px" placeholder="请选择">
+						<el-option label="不关联" value="1"></el-option>
+						<el-option label="项目" value="2"></el-option>
+						<el-option label="客户" value="3"></el-option>
+					</el-select>
+				</el-input>
+			</div> -->
+			<!-- <div>
+				<p class="mt-10 task__label">执行人员</p>
+				<div class="flex-align-center flex-between">
+					<el-input placeholder="请输入内容" v-model="input3" class="input-with-select" size="small">
+						<p slot="prepend">主 办</p>
+					</el-input>
+					&emsp;
+					<el-input placeholder="请输入内容" v-model="input3" class="input-with-select" size="small">
+						<p slot="prepend">协 办</p>
+					</el-input>
+				</div>
+			</div> -->
+			<div slot="footer" class="dialog-footer">
+        <el-button size="small" style="width:120px" @click="dialogTableVisible = false">取 消</el-button>
+        <el-button type="warning" size="small" style="width:120px" @click="validateInput">保 存</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+<script>
+import upload from '@/components/upload/preview_upload.vue';
+export default {
+	props:['data'],
+	components:{
+		upload
+	},
+	data () {
+		return {
+			dialogTableVisible:false,
+			folderid:JSON.parse(sessionStorage.getItem('folderid')).appfolderid,
+			form:{
+				"sys_taskid":0,
+        "title":"任务标题",
+        "remarks":"任务说明",
+        "starttime":"",
+        "remindday":0,
+        "ownertable":"",
+        "ownerid":0,
+        "endtime":""
+			},
+			errormsg:'',
+			bindData:{}
+		}
+	},
+	methods:{
+		onShow () {
+			this.form = Object.assign({},this.form,this.data)
+		},
+		validateInput () {
+			if (!this.form.title) {
+				this.errormsg = '请输入标题'
+				return false
+			} else if (!this.form.starttime) {
+				this.errormsg = '请选择开始日期'
+				return false
+			} else {
+				this.submit()
+			}
+		},
+		async submit () {
+			const res = await this.$api.requested({
+        "id": 20221211112101,
+        "content":this.form
+      })
+      this.tool.showMessage(res,()=>{
+        this.bindData = {
+          "ownertable": 'sys_task',
+          "ownerid": res.data.sys_taskid,
+          "usetype": 'default',
+        }
+				this.errormsg = ''
+        this.dialogTableVisible = false
+        this.$refs['upload'].toUpload()
+        this.$emit('onSuccess')
+      })
+		}
+	}
+}
+
+</script>
+<style scoped>
+.task__label{
+	color:rgb(173, 172, 172);
+}
+</style>

+ 1 - 1
src/components/dynamic-table/index.vue

@@ -1,7 +1,7 @@
 <template>
   <div>
     <el-table ref="table" :row-class-name="tableClassName" highlight-current-row :data="data" :header-cell-style="{background:'#EEEEEE',color:'#333'}" size="mini" :height="height" @row-click="rowClick" style="width:100%;min-height:300px"  border>
-      <el-table-column v-for="col in layout" :key="col.tablecolid" :prop="col.columnname" :label="col.title" :width="width && col.width === 0 ? 150 : col.width" :fixed="fixedName ? fixedName.indexOf(col.columnname)!= -1?'right':false : false">
+      <el-table-column v-for="col in layout" :key="col.tablecolid" :prop="col.columnname" :label="col.title" :width="width && col.width === 0 ? 150 : col.width" :fixed="fixedName ? fixedName.indexOf(col.columnname)!= -1?'right':false : ''">
         <template slot-scope="scope">
           <!-- 自定义表格显示内容 -->
           <slot v-if="custom" name="customcol" :column="{data:scope.row,columnname:col.columnname}"></slot>

+ 1 - 1
src/components/normal-basic-layout/drawerDetail/drawer.vue

@@ -28,7 +28,7 @@ export default {
   },
   watch:{
     closeDrawerTemp (val) {
-      val===false?this.$emit('onSuccess'):''
+      val === false ? this.$emit('onSuccess'):''
     }
   },
   methods:{

+ 12 - 1
src/router/index.js

@@ -50,7 +50,18 @@ let routes = [
           title: '任务',
           ast_nav:false
         },
-        component: () => import(/* webpackChunkName: "about" */ '@/HManagement/task/index.vue')
+        component: () => import(/* webpackChunkName: "about" */ '@/HManagement/task/index.vue'),
+        children:[
+          {
+            path: '/taskDetails',
+            name: 'task',
+            meta: {
+              title: '工作台',
+              ast_nav:false
+            },
+            component: () => import(/* webpackChunkName: "about" */ '@/HManagement/task/modules/detail.vue')
+          },
+        ]
       },
       {
         path: '/mediaStock',