Explorar el Código

项目阶段管理

qymljy hace 2 años
padre
commit
382a5f3277

+ 101 - 7
src/Form/projectStageMag/add.vue

@@ -14,28 +14,35 @@
           <el-form :model="form" :rules="rules" ref="form"  size="mini" label-position="right" label-width="100px">
             <el-col :span="24">
               <el-form-item label="阶段名称:"  prop="stagename">
-                <el-input v-model="form.stagename" autocomplete="off" placeholder="输入手机号码"></el-input>
+                <el-input v-model="form.stagename" autocomplete="off" placeholder="输入阶段名称"></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="24">
               <el-form-item label="顺序"  >
-                <el-input  v-model="form.sequence" autocomplete="off" placeholder="输入用户名称"></el-input>
+                <el-input  v-model="form.sequence" autocomplete="off" placeholder="输入阶段顺序"></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="24">
               <el-form-item label="说明:" prop="remarks">
-                <el-input v-model="form.remarks" autocomplete="off" placeholder="输入手机号码"></el-input>
+                <el-input v-model="form.remarks" autocomplete="off" placeholder="输入阶段说明"></el-input>
               </el-form-item>
             </el-col>
-            <el-col :span="18">
+            <el-col :span="17">
               <el-form-item label="请选择适用项目类型:" label-width="160px" prop="remarks">
               </el-form-item>
             </el-col>
             <el-col :span="6">
               <el-form-item >
-                <el-checkbox v-model="checked">适用所有项目类型</el-checkbox>
+                <el-checkbox v-model="checked" @change="checkedChange">适用所有项目类型</el-checkbox>
               </el-form-item>
             </el-col>
+            <el-col :span="24">
+              <layoutTable ref="projectType" :layout="tablecols" :data="list"  :custom="true" :checkbox="true" @checkboxCallBack="checkboxCallBack">
+                <template v-slot:customcol="scope">
+                  <p>{{scope.column.data[scope.column.columnname]}}</p>
+                </template>
+              </layoutTable>
+            </el-col>
           </el-form>
         </el-row>
       </div>
@@ -48,12 +55,20 @@
 </template>
 
 <script>
+import layoutTable from '@/components/table/index2'
 export default {
   name: "add",
+  components:{
+    layoutTable
+  },
   data(){
     return {
       drawer:false,
-      checked:false,
+      checked:true,
+      tablecols:[],
+      list:[],
+      selectType:[],
+      total:0,
       form:{
         "sa_projstagemagid":0,
         "stagename": "",
@@ -69,19 +84,98 @@ export default {
         remarks: [
           { required: true, message: '说明不能为空', trigger: 'blur' },
         ],
+      },
+      param:{
+        "classname": "sysmanage.develop.optiontype.optiontype",
+        "method": "optiontypeselect",
+        "content": {
+          "pageNumber": 1,
+          "pageSize": 20,
+          "typename": "projecttype",
+          "parameter": {
+          }
+        }
       }
     }
   },
   methods:{
     onShow(){
       this.drawer = true
+      this.typeData()
+    },
+    /*获取项目类型*/
+    async typeData(){
+      const res = await this.$api.requested(this.param)
+      console.log(res,"项目类型")
+      this.list = res.data
+      this.total = res.total
+      this.$nextTick(()=>{
+        for (let i=0;i<this.list.length;i++){
+          this.$refs.projectType.$refs.tables.toggleRowSelection(this.list[i],true)
+        }
+      })
     },
     onSubmit(){
-
+      this.form.projecttype = this.selectType
+      if (this.checked){
+        this.form.allprojecttype = 1
+      }else {
+        this.form.allprojecttype = 0
+      }
+      console.log(this.form)
+      this.$refs.form.validate(async (valid) => {
+        if (!valid) return false
+        const res = await this.$api.requested({
+          "id": "20221128143504",
+          "content": this.form
+        })
+        this.tool.showMessage(res,()=>{
+          this.drawer = false
+          this.$refs.form.resetFields()
+          this.form = {
+            "sa_projstagemagid":0,
+            "stagename": "",
+            "remarks": "",
+            "allprojecttype":0,
+            "sequence":'',
+            "projecttype":''
+          }
+          this.selectType = []
+          this.$emit('onSuccess')
+        })
+      })
     },
     onClose(){
 
+    },
+    checkboxCallBack(val){
+      this.selectType = []
+      val.forEach((item,index)=>{
+        this.selectType[index] = item.value
+      })
+      this.$nextTick(()=>{
+        if (this.selectType.length < this.total){
+          this.checked = false
+        }else {
+          this.checked = true
+        }
+      })
+
+    },
+    checkedChange(){
+      if (this.checked){
+        for (let i=0;i<this.list.length;i++){
+          this.$refs.projectType.$refs.tables.toggleRowSelection(this.list[i],true)
+        }
+      }else{
+        for (let i=0;i<this.list.length;i++){
+          this.$refs.projectType.$refs.tables.toggleRowSelection(this.list[i],false)
+        }
+      }
     }
+  },
+  created() {
+    this.tablecols = this.tool.tabelCol(this.$route.name).projectTypeTable.tablecols
   }
 }
 </script>

+ 163 - 0
src/Form/projectStageMag/edit.vue

@@ -0,0 +1,163 @@
+<template>
+  <div>
+    <el-button type="text" size="mini" @click="onShow">编 辑</el-button>
+    <el-drawer
+        title="修改项目阶段"
+        :visible.sync="drawer"
+        size="35%"
+        direction="rtl"
+        append-to-body
+        :show-close="false"
+        @close="onClose">
+      <div class="drawer__panel">
+        <el-row>
+          <el-form :model="form" :rules="rules" ref="form"  size="mini" label-position="right" label-width="100px">
+            <el-col :span="24">
+              <el-form-item label="阶段名称:"  prop="stagename">
+                <el-input v-model="form.stagename" autocomplete="off" placeholder="输入阶段名称"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="顺序"  >
+                <el-input  v-model="form.sequence" autocomplete="off" placeholder="输入阶段顺序"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="说明:" prop="remarks">
+                <el-input v-model="form.remarks" autocomplete="off" placeholder="输入阶段说明"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="17">
+              <el-form-item label="请选择适用项目类型:" label-width="160px" prop="remarks">
+              </el-form-item>
+            </el-col>
+            <el-col :span="6">
+              <el-form-item >
+                <el-checkbox v-model="checked" @change="checkedChange">适用所有项目类型</el-checkbox>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <layoutTable ref="projectType" :layout="tablecols" :data="list"  :custom="true" :checkbox="true" @checkboxCallBack="checkboxCallBack">
+                <template v-slot:customcol="scope">
+                  <p>{{scope.column.data[scope.column.columnname]}}</p>
+                </template>
+              </layoutTable>
+            </el-col>
+          </el-form>
+        </el-row>
+      </div>
+      <div class="fixed__btn__panel">
+        <el-button size="small" @click="drawer = false" class="normal-btn-width">取 消</el-button>
+        <el-button size="small" type="warning" @click="onSubmit" class="normal-btn-width">保 存</el-button>
+      </div>
+    </el-drawer>
+  </div>
+</template>
+
+<script>
+import layoutTable from '@/components/table/index2'
+export default {
+  props:["data"],
+  name: "edit",
+  components:{layoutTable},
+  data(){
+    return {
+      drawer:false,
+      checked:true,
+      tablecols:[],
+      list:[],
+      selectType:[],
+      total:0,
+      form:{},
+      rules:{
+        stagename: [
+          { required: true, message: '阶段名称不能为空', trigger: 'blur' },
+        ],
+        remarks: [
+          { required: true, message: '说明不能为空', trigger: 'blur' },
+        ],
+      },
+      param:{
+        "classname": "sysmanage.develop.optiontype.optiontype",
+        "method": "optiontypeselect",
+        "content": {
+          "pageNumber": 1,
+          "pageSize": 20,
+          "typename": "projecttype",
+          "parameter": {
+          }
+        }
+      }
+    }
+  },
+  methods:{
+    onShow(){
+      console.log(this.data,'获取数据')
+      this.drawer = true
+      this.form = this.data.data
+      this.typeData()
+    },
+    /*获取项目类型*/
+    async typeData(){
+      const res = await this.$api.requested(this.param)
+      console.log(res,"项目类型")
+      this.list = res.data
+      this.total = res.total
+      this.$nextTick(()=>{
+        console.log(this.form)
+        if (this.form.allprojecttype === 0){
+          this.checked = false
+          console.log(this.form.projecttype,"已选内容")
+          // for (let i=0;i<this.form.projecttype.length;i++){
+          //   for (let j=0;j<this.list.length;j++){
+          //     if (this.form.projecttype[i] === this.list.value[j]){
+          //       this.$refs.projectType.$refs.tables.toggleRowSelection(this.list[j],true)
+          //       break
+          //     }
+          //   }
+          // }
+        }else {
+          this.checked = true
+          this.checkedChange()
+        }
+      })
+    },
+    onSubmit(){},
+    onClose(){},
+    checkboxCallBack(val){
+      this.selectType = []
+      val.forEach((item,index)=>{
+        this.selectType[index] = item.value
+      })
+      this.$nextTick(()=>{
+        if (this.selectType.length < this.total){
+          this.checked = false
+        }else {
+          this.checked = true
+        }
+      })
+
+    },
+    checkedChange(){
+      if (this.checked){
+        for (let i=0;i<this.list.length;i++){
+          this.$refs.projectType.$refs.tables.toggleRowSelection(this.list[i],true)
+        }
+      }else{
+        for (let i=0;i<this.list.length;i++){
+          this.$refs.projectType.$refs.tables.toggleRowSelection(this.list[i],false)
+        }
+      }
+    }
+  },
+  mounted() {
+  },
+  created() {
+    this.tablecols = this.tool.tabelCol(this.$route.name).projectTypeTable.tablecols
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 13 - 12
src/HDrpManagement/projectStageMag/index.vue

@@ -42,23 +42,22 @@
         </el-date-picker>-->
       </div>
       <template v-slot:tbList="scope">
-<!--        <div v-if="scope.data.column.columnname === 'isorder'">
-          <span v-if="scope.data.column.data[scope.data.column.columnname] === 1">是</span>
-          <span v-else>否</span>
+        <div v-if="scope.data.column.columnname === 'projecttype'">
+          <span v-for="(item,index) in scope.data.column.data.projecttype">
+            <span v-if="index === scope.data.column.data.projecttype.length -1">
+              {{item}}
+            </span>
+            <span v-else>
+              {{item}}、
+            </span>
+          </span>
         </div>
-        <div v-else-if="scope.data.column.columnname === 'isused'">
-          <span v-if="scope.data.column.data[scope.data.column.columnname] === 1">是</span>
-          <span v-else>否</span>
-        </div>
-        <div v-else-if="scope.data.column.columnname === 'locked'">
-          <span v-if="scope.data.column.data[scope.data.column.columnname] === 1">是</span>
-          <span v-else>否</span>
-        </div>-->
-        <div >
+        <div v-else>
           {{scope.data.column.data[[scope.data.column.columnname]]}}
         </div>
       </template>
       <template v-slot:tbOpreation="scope">
+        <edit v-if="tool.checkAuth($route.name,'update')" :data="scope.data"></edit>
 <!--        <delete-btn v-if="tool.checkAuth($route.name,'delete')" :id="scope.data.data.sa_projstagetempid" @deleteSuccess="$refs.basicLayout.listData()" nameId="20221019085804" nameKey="sa_projstagetempids"/>-->
       </template>
     </basicLayout>
@@ -66,8 +65,10 @@
 </template>
 
 <script>
+import edit from '@/Form/projectStageMag/edit'
 export default {
   name: "index",
+  components:{edit},
   projectType:() => this.projectType,
   data() {
     return {