Browse Source

商品管理暂存

qymljy 2 years ago
parent
commit
1992629c3d

+ 33 - 56
src/Form/projectManage/add.vue

@@ -4,26 +4,26 @@
     <el-drawer
         title="新增模板"
         :visible.sync="dialogFormVisible"
-        size="800px"
+        size="35%"
         direction="rtl"
         append-to-body
         @close="onClose">
       <div class="drawer__panel" >
         <el-row :gutter="20" style="border-bottom:1px solid #f1f2f3">
           <el-form :model="stageData" :rules="rules" ref="stageData" label-width="110px" label-position="right" size="mini">
-            <el-col :span="24">
-              <el-form-item label="项目模板名称" prop="stagetempname">
-                <el-input v-model="stageData.stagetempname" placeholder="项目模板名称"></el-input>
+            <el-col :span="12">
+              <el-form-item label="项目模板名称:" prop="stagetempname">
+                <el-input v-model="stageData.stagetempname" placeholder="请输入项目模板名称"></el-input>
               </el-form-item>
             </el-col>
-            <el-col :span="24">
-              <el-form-item label="项目类型">
-                <el-select v-model="stageData.projecttype" style="width:100%">
-                  <el-option v-for="item in sys_options" :key="item.index" :value="item.value" :label="item.value"></el-option>
+            <el-col :span="12">
+              <el-form-item label="项目类型:">
+                <el-select v-model="stageData.projecttype" style="width:100%" placeholder="请选择项目类型">
+                  <el-option v-for="item in sys_options"  :key="item.index" :value="item.value" :label="item.value"></el-option>
                 </el-select>
               </el-form-item>
             </el-col>
-            <el-col :span="10">
+            <el-col :span="12">
               <el-form-item>
                 <div style="display:flex">
                   <el-checkbox :true-label="1" :false-label="0" v-model="stageData.isused" checked="checked">启用</el-checkbox>
@@ -81,6 +81,7 @@
                 <p>设置阶段任务</p>
                 <div>
                   <el-button size="mini" type="default" @click="addNewWork">添加工作</el-button>
+                  <el-button size="mini"  type="default" @click="deleteWork" :disabled="stageData.sa_projstagetempStages[act_stageIndex].sa_projstagetempWorks.length === 1">删除工作</el-button>
                 </div>
               </div>
               <div style="height:calc(100vh - 141px);overflow-y:scroll">
@@ -93,16 +94,12 @@
                      @dragstart="dragstart(windex)"
                      @click="(act_workIndex = windex)"
                      draggable>
-                  <div class="work__panel__operation" >
-                    <i class="el-icon-s-claim" @click="updateWork(work)" ></i>&emsp;
-                    <i class="el-icon-delete" @click="deleteWork(work)"></i>
-                  </div>
                   <div style="margin-top:20px">
                     <el-form class="demo-form-inline" label-position="right" label-width="80px">
-                      <el-form-item label="工作内容">
+                      <el-form-item label="工作内容:">
                         <el-input v-model="work.workname" type="textarea" size="mini" :rows="3"></el-input>
                       </el-form-item>
-                      <el-form-item label="分值">
+                      <el-form-item label="分值:">
                         <el-input style="width:100px" class="normal-margin" v-model="work.score" size="small"></el-input>
                       </el-form-item>
                     </el-form>
@@ -181,35 +178,6 @@ export default {
       this.$store.dispatch('optiontypeselect','projecttype')
       /*this.getStageData()*/
     },
-    onSubmit(){
-      console.log(this.form)
-      this.$refs['form'].validate(async (valid) => {
-        if (!valid) return false
-        const res = await this.$api.requested({
-          "id": "20221019085704",
-          "version":1,
-          "content": this.form
-        })
-        console.log("创建成功")
-        console.log(res)
-        this.form = res.data
-        this.set = true
-        this.setEvent = false
-        this.$emit('onSuccess')
-        this.getStageData(res.data)
-        /*this.tool.showMessage(res,()=>{
-          this.$emit('onSuccess')
-          this.$refs['form'].resetFields();
-          this.dialogFormVisible = false
-          this.set = false
-          this.setEvent = true
-        })*/
-      })
-
-    },
-    onSet(){
-      this.onSubmit()
-    },
     onClose(){
       console.log(this.stageData)
       // this.dialogFormVisible = false
@@ -243,15 +211,18 @@ export default {
     },
 
     // 保存完整数据
-    async saveStageData () {
-      const res = await this.$api.requested({
-        "id": "20221020084204",
-        "content":this.stageData
-      })
-      this.stageData = Object.assign({},this.stageData,res.data)
-      this.tool.showMessage(res,()=>{
-        this.dialogFormVisible = false
-        this.onClose()
+    saveStageData () {
+      this.$refs['stageData'].validate(async (valid) => {
+        if (!valid) return false
+        const res = await this.$api.requested({
+          "id": "20221020084204",
+          "content":this.stageData
+        })
+        this.tool.showMessage(res,()=>{
+          this.stageData = Object.assign({},this.stageData,res.data)
+          this.dialogFormVisible = false
+          this.onClose()
+        })
       })
     },
     // 显示编辑阶段输入框
@@ -281,8 +252,11 @@ export default {
     },
     // 删除阶段
     async deleteStage () {
-      this.act_stageIndex = 0
+      console.log(this.act_stageIndex)
+
+      console.log(this.act_stageIndex)
       this.stageData.sa_projstagetempStages.splice(this.act_stageIndex,1)
+      this.act_stageIndex = 0
     },
     // 新增工作内容
     addNewWork (data) {
@@ -300,9 +274,12 @@ export default {
       // this.updateWork(obj)
     },
     // 删除工作内容
-    async deleteWork (work) {
+    async deleteWork () {
+      console.log(this.act_stageIndex)
+      console.log(this.act_workIndex)
+      console.log(this.stageData.sa_projstagetempStages[this.act_stageIndex].sa_projstagetempWorks)
+      this.stageData.sa_projstagetempStages[this.act_stageIndex].sa_projstagetempWorks.splice(this.act_workIndex,1)
       this.act_workIndex = 0
-      this.stageData.sa_projstagetempStages[this.act_workIndex].splice(this.act_workIndex,1)
     },
 
     dragstart(index) {

+ 68 - 4
src/HDrpManagement/ProductMag/index.vue

@@ -12,11 +12,34 @@
       :apiId="{query:20220923140602,del:20220923152202}"
       :options="options"
       >
-      <div slot="custom"></div>
+      <div slot="custom">
+        <label  class="search__label" style="margin: auto;width: 70px;">是否上架:</label>
+        <el-select class="inline-24" v-model="selectParam.isonsale" placeholder="请选择是否上架" @change="selectChange" size="small" clearable>
+          <el-option
+              v-for="item in isOnSaleData"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value">
+          </el-option>
+        </el-select>
+        <label  class="search__label" style="margin: auto;width: 40px;">状态:</label>
+        <el-select class="inline-24" v-model="selectParam.status" placeholder="请选择状态" @change="selectChange" size="small" clearable>
+          <el-option
+              v-for="item in statusData"
+              :key="item.value"
+              :label="item.value"
+              :value="item.value">
+          </el-option>
+        </el-select>
+      </div>
       <template v-slot:tbList="scope">
         <div>
         <p :style="scope.data.column.data.isonsale === 1?'color:#52c41a':'color:red'" v-if="scope.data.column.columnname === 'isonsale'">
-          {{scope.data.column.data.isonsale === 1?'上架中':'已下架'}}
+<!--          {{scope.data.column.data.isonsale === 1?'上架中':'已下架'}}-->
+          <el-switch
+              v-model="scope.data.column.data.isonsale === 1"
+              @change="isOnSaleChange(scope.data.column.data)">
+          </el-switch>
         </p>
         <p v-else-if="scope.data.column.columnname === 'cover'">
           <previewImage v-if="scope.data.column.data.attinfos[0]"  style="width:80px;height:80px;margin-top:0px" class="image" :image="scope.data.column.data.attinfos[0]" :list="scope.data.column.data.attinfos" :deletebtn="false"></previewImage>
@@ -46,8 +69,31 @@ import editTemp from './modules/edit.vue'
 export default {
   data () {
     return {
-      options:[]
-      
+      options:[],
+      isOnSaleData:[
+        {
+          value:0,
+          label:'否'
+        },
+        {
+          value:1,
+          label:'是'
+        }
+      ],
+      statusData:[
+        {
+          value:'新建',
+          label:'新建'
+        },
+        {
+          value:'审核',
+          label:'审核'
+        }
+      ],
+      selectParam:{
+        isonsale:'',
+        status:''
+      }
     }
   },
   components:{
@@ -55,6 +101,24 @@ export default {
     editTemp
   },
   methods:{
+    async isOnSaleChange(val){
+      console.log("更改状态")
+      console.log(val)
+      const res = await this.$api.requested({
+        "id": 20220923154802,
+        "content": {
+          "itemids": [val.itemid],
+          "isonsale": val.isonsale === 1? 0 : 1 //0:下架,1:上架
+        },
+      })
+      this.tool.showMessage(res,()=>{
+        this.$refs.basicLayout.listData()
+      })
+    },
+    selectChange(){
+      this.$refs.basicLayout.param.content.where = this.selectParam
+      this.$refs.basicLayout.listData()
+    }
   }
 }
 

+ 46 - 0
src/HDrpManagement/ProductMag/modules/add.vue

@@ -125,7 +125,25 @@
               <el-input v-model="form.remarks" type="textarea" placeholder="输入产品备注"></el-input>
             </el-form-item>
           </el-col>
+          <el-col :span="20">
+            <el-form-item  label="产品图">
+              <uploadFile
+                  ref="upload"
+                  v-if="form.attinfos.length === 0"
+                  style="margin-top:10px"
+                  :folderid="folderid"
+                  accept=".JPG,.PNG,.jpg,.png"
+                  btntype="image"
+                  :bindData="{ownertable:'plm_item',ownerid:'10000',usetype:'default'}"
+                  @onSuccess="uploadSuccess">
+              </uploadFile>
+              <previewImage v-else  :image="form.attinfos[0]" :deletebtn="true"
+                            @onSuccess="clearCover"></previewImage>
+              <small style="display:block;margin-top:20px" class="info">注:建议上传图片大小1024x1024,大小不超过2M,格式为JPG/PNG</small>
+            </el-form-item>
+          </el-col>
         </el-form>
+
       </el-row>
       <div class="fixed__btn__panel">
         <el-button size="small" @click="dialogFormVisible = false" class="normal-btn-width">取 消</el-button>
@@ -136,11 +154,16 @@
 </template>
 
 <script>
+import uploadFile from '../../../components/upload/hw_obs_upload.vue'
+import previewImage from '@/components/previewImage/index.vue'
 export default {
+  components:{uploadFile,previewImage},
   data () {
     return {
       dialogFormVisible:false,
+      folderid:JSON.parse(sessionStorage.getItem('folderid')).appfolderid,
       form:{
+        "attinfos":[],
         "itemid":0,
         "isauxunit":0,
         "unitid":'',
@@ -267,6 +290,29 @@ export default {
         "width": '', //可选
         "length": '' //可选
       }
+    },
+    uploadSuccess(res){
+      console.log(res)
+      this.$refs['upload'].dialogUploadVisible = false
+      this.showImage()
+    },
+    clearCover () {
+      console.log("执行删除")
+      this.form.attinfos = []
+    },
+    async showImage(){
+      const res = await this.$api.requested({
+        "classname": "system.attachment.Attachment",
+        "method": "queryFileLink",
+        "content": {
+          "ownertable": "plm_item",
+          "ownerid": '10000',
+          "usetype":"default"//传空返回有所
+        }
+      })
+      console.log("查询上传结果")
+      console.log(res)
+      this.form.attinfos = res.data[0]
     }
   },
   mounted () {

+ 50 - 1
src/HDrpManagement/ProductMag/modules/edit.vue

@@ -4,6 +4,23 @@
     <el-drawer append-to-body title="编辑产品" :visible.sync="dialogFormVisible" size="50%">
       <el-row class="drawer__panel" :gutter="40">
         <el-form label-position="right" label-width="80px" :model="form" :rules="rules" ref="form" size="small">
+          <el-col :span="20">
+            <el-form-item  label="产品图">
+              <uploadFile
+                  ref="upload"
+                  v-if="data.attinfos.length === 0"
+                  style="margin-top:10px"
+                  :folderid="folderid"
+                  accept=".JPG,.PNG,.jpg,.png"
+                  btntype="image"
+                  :bindData="{ownertable:'plm_item',ownerid:form.itemid,usetype:'default'}"
+                  @onSuccess="uploadSuccess">
+              </uploadFile>
+              <previewImage v-else  :image="data.attinfos[0]" :deletebtn="true"
+                            @onSuccess="clearCover"></previewImage>
+              <small style="display:block;margin-top:20px" class="info">注:建议上传图片大小1024x1024,大小不超过2M,格式为JPG/PNG</small>
+            </el-form-item>
+          </el-col>
           <el-col :span="12">
             <el-form-item label="产品编号" prop="itemno">
               <el-input v-model="form.itemno" placeholder="输入产品编号"></el-input>
@@ -129,18 +146,23 @@
       </el-row>
       <div class="fixed__btn__panel">
         <el-button size="small" @click="dialogFormVisible = false" class="normal-btn-width">取 消</el-button>
-        <el-button size="small" type="primary" @click="onSubmit" 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 uploadFile from '../../../components/upload/hw_obs_upload.vue'
+import previewImage from '@/components/previewImage/index.vue'
 export default {
   props:['data'],
+  components:{uploadFile,previewImage},
   data () {
     return {
       dialogFormVisible:false,
+
+      folderid:JSON.parse(sessionStorage.getItem('folderid')).appfolderid,
       form:{
         "itemid":0,
         "isauxunit":0,
@@ -213,6 +235,7 @@ export default {
   methods:{
     onShow () {
       this.dialogFormVisible = true
+      console.log(this.data)
       this.queryMain(()=>{
         this.unitlist()
         this.unitGrouplist()
@@ -278,9 +301,35 @@ export default {
         this.form.orderminqty_auxunit = this.form.orderaddqty_auxunit = 0
         this.form.unitgroupid = ''
       }
+    },
+    uploadSuccess(res){
+      console.log(res)
+      this.form.attinfos = JSON.parse(res.attinfos).data
+      console.log(this.form.attinfos)
+      this.$refs['upload'].dialogUploadVisible = false
+      this.showImage()
+    },
+    clearCover () {
+      console.log("执行删除")
+      this.form.attinfos = []
+    },
+    async showImage(){
+      const res = await this.$api.requested({
+        "classname": "system.attachment.Attachment",
+        "method": "queryFileLink",
+        "content": {
+          "ownertable": "plm_item",
+          "ownerid": this.form.itemid,
+          "usetype":"default"//传空返回有所
+        }
+      })
+      console.log("查询上传结果")
+      console.log(res)
+      this.form.attinfos = res.data[0]
     }
   },
   mounted () {
+
   }
 }
 

+ 1 - 1
src/HDrpManagement/prodectFileData/index.vue

@@ -20,7 +20,7 @@
       </template>
       <template v-slot:tbOpreation="scope">
         <edit v-if="tool.checkAuth($route.name,'update')"  :data="scope.data.data"   :type="'text'" @updateSuccess="$refs.basicLayout.listData()"></edit>
-        <darwerPanel :id="scope.data.data.plm_technicalinfoid" title="关 联 商 品" :detailPath="{path:'/relation'}" class="inline-16"/>
+        <darwerPanel :id="scope.data.data.plm_technicalinfoid" title="关 联 商 品" :detailPath="{path:'/relation'}" class="inline-24"/>
         <file_del v-if="tool.checkAuth($route.name,'delete')" :data="scope.data.data" :type="'text'" @deleteSuccess="$refs.basicLayout.listData()"></file_del>
           
       </template>

+ 1 - 1
src/HDrpManagement/prodectFileData/modules/edit.vue

@@ -1,5 +1,5 @@
 <template>
-  <div class="inline-16">
+  <div class="inline-24">
     <el-button size="small" type="text" @click="onShow">编 辑</el-button>
     <el-drawer
       title="编辑资料"

+ 1 - 1
src/HDrpManagement/prodectFileData/modules/fileDel.vue

@@ -1,5 +1,5 @@
 <template>
-  <div class="inline-16">
+  <div class="inline-24">
     <el-popconfirm
         title="确定删除此产品技术资料档案吗?"
         @confirm="deleteRow()">

+ 369 - 61
src/HDrpManagement/projectStage/detail/index.vue

@@ -1,90 +1,398 @@
 <template>
   <div>
-    <basicDetails
-        ref="details"
-        :titleText="`${mainData.stagetempname}`"
-        formPath="projectManage"
-        :editData="mainData"
-        :mainAreaData="mainAreaData"
-        turnPageId="20221019085604"
-        idname="sa_projstagetempid"
-        ownertable="sa_projstagetemp"
-        tags=""
-        :tabs="['项目阶段与任务','系统信息']"
-        @pageChange="pageChange"
-        @onEditSuccess="queryMainData($route.query.id)">
-      <div slot="tags">
+    <el-button size="mini" type="text" @click="onShow(dialogFormVisible = true)">详 情</el-button>
+    <el-drawer
+        :visible.sync="dialogFormVisible"
+        size="35%"
+        direction="rtl"
+        :withHeader="false"
+        append-to-body
+        @close="dialogFormVisible = false">
+      <div class="flex-align-center flex-between" style="padding:10px">
+        <div style="font-size:20px">{{titleName}}</div>
+        <div>
+          <el-button class="inline-16" size="mini" @click="onEdit" v-if="edit">编 辑</el-button>
+          <!--          <el-button  size="small">作 废</el-button>-->
+          <to_void class="inline-16" v-if="edit" :data="stageData" @onSuccess="toVoidSuccess"></to_void>
+          <is_used class="inline-16" v-if="edit" :data="stageData" @onSuccess="onSuccess"></is_used>
+        </div>
       </div>
-      <div slot="customOperation" >
+      <div class="drawer__panel" >
+        <el-row :gutter="20" style="border-bottom:1px solid #f1f2f3">
+          <el-form :model="stageData" :rules="rules" ref="stageData" label-width="110px" label-position="right" size="mini" :disabled="edit">
+            <el-col :span="12">
+              <el-form-item label="项目模板名称:" prop="stagetempname">
+                <el-input v-model="stageData.stagetempname" placeholder="请输入项目模板名称"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="项目类型:">
+                <el-select v-model="stageData.projecttype" style="width:100%" placeholder="请选择项目类型">
+                  <el-option v-for="item in sys_options"  :key="item.index" :value="item.value" :label="item.value"></el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item>
+                <div style="display:flex">
+                  <el-checkbox :true-label="1" :false-label="0" v-model="stageData.isused" checked="checked">启用</el-checkbox>
+                  <!--                  <el-checkbox :true-label="1" :false-label="0" v-model="form.locked">锁定</el-checkbox>-->
+                </div>
+              </el-form-item>
+            </el-col>
+          </el-form>
+        </el-row>
+        <!-- <el-button size="mini" @click="onSet" v-show="setEvent" style="margin-top: 10px">设置项目阶段</el-button> -->
+        <div class="container"  style="font-size:14px;" >
+          <el-row :gutter="20">
+            <el-col :span="9">
+              <div>
+                <div class="flex-align-center flex-between normal-margin">
+                  <p>项目阶段</p>
+                  <div>
+                    <el-button size="mini" type="default" @click="addStage" :disabled="edit">添加阶段</el-button>
+                    <el-button size="mini"  type="default" @click="deleteStage" :disabled="stageData.sa_projstagetempStages.length === 1 || edit ">删除阶段</el-button>
+                  </div>
+                </div>
+                <div
+                    v-for="(stage,index) in stageData.sa_projstagetempStages"
+                    :key="index"
+                    @click="(act_stageIndex = index,act_workIndex = null)"
+                    @dragenter="dragenter($event, index,dragover,1000)"
+                    @dragover="debounce($event, index)"
+                    @dragstart="dragstart(index)"
+                    draggable
+                >
+                  <div class="stage__panel" :class="act_stageIndex === index?'active__stage':''">
+                    <!-- <div>
+                      {{stage.stagename}}
+                    </div> -->
+                    <div style="padding:0 10px;">
+                      <el-input
+                          class="input-new-tag"
+                          v-if="act_stageIndex === index && inputVisible"
+                          v-model="stage.stagename"
+                          ref="editTagInput"
+                          size="small"
+                          :disabled="edit"
+                      >
+                      </el-input>
+                      <div v-else class="flex-align-center flex-between" >
+                        <p class="button-new-tag" size="small" @click="(inputVisible = false)">{{stage.stagename}}</p>
+                        <i class="el-icon-edit" @click.stop="editStage(index)" >编 辑</i>
+                      </div>
+                    </div>
+                  </div>
+                </div>
+              </div>
+            </el-col>
+            <el-col :span="15">
+              <div class="flex-align-center flex-between normal-margin">
+                <p>设置阶段任务</p>
+                <div>
+                  <el-button size="mini" type="default" @click="addNewWork" :disabled="edit">添加工作</el-button>
+                  <el-button size="mini"  type="default" @click="deleteWork" :disabled="stageData.sa_projstagetempStages[act_stageIndex].sa_projstagetempWorks.length === 1 || edit">删除工作</el-button>
+                </div>
+              </div>
+              <div style="height:calc(100vh - 141px);overflow-y:scroll">
+                <div class="work__panel"
+                     :class="act_workIndex === windex?'active__work':''"
+                     v-for="(work,windex) in stageData.sa_projstagetempStages[act_stageIndex].sa_projstagetempWorks"
+                     :key="windex"
+                     @dragenter="wdragenter($event, windex,dragover,1000)"
+                     @dragover="debounce($event, windex)"
+                     @dragstart="dragstart(windex)"
+                     @click="(act_workIndex = windex)"
+                     draggable>
+                  <div style="margin-top:20px">
+                    <el-form class="demo-form-inline" label-position="right" label-width="80px">
+                      <el-form-item label="工作内容:">
+                        <el-input v-model="work.workname" type="textarea" size="mini" :rows="3" :disabled="edit"></el-input>
+                      </el-form-item>
+                      <el-form-item label="分值:">
+                        <el-input style="width:100px" class="normal-margin" v-model="work.score" size="small" :disabled="edit"></el-input>
+                      </el-form-item>
+                    </el-form>
+                  </div>
+                </div>
+              </div>
+            </el-col>
+          </el-row>
+        </div>
       </div>
-      <div slot="slot0" class="container normal-panel">
+      <div class="fixed__btn__panel" v-if="save">
+        <el-button size="small" @click="onCancel" class="normal-btn-width">取 消</el-button>
+        <el-button size="small" type="warning" @click="saveStageData" class="normal-btn-width">保 存</el-button>
       </div>
-      <div slot="slot1" class="container normal-panel">
-      </div>
-    </basicDetails>
+    </el-drawer>
   </div>
 </template>
 
 <script>
+import {mapGetters} from 'vuex'
+import to_void from '../modules/toVoid';
+import is_used from '../modules/isUsed'
 export default {
-  name: "index",
+  name: "detail",
+  props:["data"],
+  components:{to_void,is_used},
   data(){
     return {
-      mainData:{},
-      mainAreaData:{}
+      dialogFormVisible:false,
+      edit:true,
+      save:false,
+      titleName:'',
+      isordercheck:true,
+      isusedcheck:false,
+      rules:{
+        stagetempname:[
+          { required: true, message: '请输入模板名称', trigger: 'blur'},
+        ],
+        projecttype:[
+          { required: true, message: '请输入项目类型', trigger: 'blur'}
+        ]
+      },
+      inputVisible:false,
+      act_stageIndex:0,
+      act_workIndex:null,
+      stageData: {
+        "sa_projstagetempid": 0,
+        "stagetempname": '',
+        "remarks":'',
+        "projecttype": '',
+        "isused": '',
+        "locked":  '',
+        "sa_projstagetempStages":[
+          {
+            "sa_projstagetemp_stageid": 0,
+            "stagename": "阶段一",
+            "remarks": "",
+            "sequence": 0,
+            "sa_projstagetempWorks": [
+              {
+                "sa_projstagetemp_workid":0,
+                "workname": "工作一",
+                "remarks": "",
+                "sequence": 0,
+                "score": 1
+              }
+            ]
+          },
+        ]
+      },
+      inputValue:'',
+      dragIndex: '',
+      enterIndex: '',
     }
   },
+  computed:{
+    ...mapGetters({
+      sys_options:'sys_options'
+    })
+  },
   methods:{
-    async queryMainData(id) {
+    /*查询模板数据*/
+    async templateData(){
+      console.log("输出")
       const res = await this.$api.requested({
-        "id":"20221019085904",
+        "id": "20221019085904",
         "content": {
-          "sa_projstagetempid":id,
-          "where":{
-            "condition":""
-          }
+          "sa_projstagetempid":this.data.sa_projstagetempid
         }
       })
-      this.mainData = res.data
-      console.log("获取详细信息")
-      console.log(this.mainData)
-      this.changeDataStructure()
-    },
-    changeDataStructure(){
-      this.mainAreaData = [
-        {
-          label:'模板名称',
-          value:this.mainData.stagetempname
-        },
-        {
-          label: '项目类型',
-          value: this.mainData.projecttype
-        },
-        {
-          label: '项目状态',
-          value: this.mainData.isused === 1?'启用':this.mainData.isused === 0?'停用':'其他'
-        }
-      ]
-    },
-    // 监听切换数据,上一页,下一页
-    pageChange (id,rowindex,tabIndex) {
-      this.flag = false
-      tabIndex = this.$route.query.tabIndex
-      this.$router.replace({path:'/projectStageDetail',query:{id:id,rowindex:rowindex,tabIndex:tabIndex}})
-      this.queryMainData(id)
+      console.log("模板数据")
+      console.log(res)
+      this.stageData = res.data
+      this.titleName = this.stageData.stagetempname
     },
     onSuccess(){
-      this.visible = false
-      this.queryMainData(this.$route.query.id)
+      this.templateData()
       this.$emit('onSuccess')
-    }
-  },
-  mounted() {
-    this.queryMainData(this.$route.query.id)
+    },
+    toVoidSuccess(){
+      this.dialogStageVisible = false
+      this.$emit('onSuccess')
+    },
+    onShow () {
+      this.$store.dispatch('optiontypeselect','projecttype')
+      this.edit = true
+      this.save = false
+      this.templateData()
+      /*this.getStageData()*/
+    },
+    // 保存完整数据
+    saveStageData () {
+      console.log(this.stageData)
+      this.$refs['stageData'].validate(async (valid) => {
+        if (!valid) return false
+        const res = await this.$api.requested({
+          "id": "20221020084204",
+          "content":this.stageData
+        })
+        console.log(res)
+        this.tool.showMessage(res,()=>{
+          this.dialogFormVisible = false
+          this.$emit('onSuccess')
+        })
+      })
+
+    },
+    onEdit(){
+      this.titleName = '编辑模板'
+      this.save = true
+      this.edit = false
+    },
+    onCancel(){
+      this.titleName = this.stageData.stagetempname
+      this.save = false
+      this.edit = true
+    },
+    // 显示编辑阶段输入框
+    editStage (index) {
+      this.act_stageIndex = index
+      this.inputVisible = true
+    },
+    // 新增阶段
+    async addStage(data) {
+      this.stageData.sa_projstagetempStages.push(
+          {
+            "sa_projstagetemp_stageid": 0,
+            "stagename": "阶段一",
+            "remarks": "",
+            "sequence": 0,
+            "sa_projstagetempWorks": [
+              {
+                "sa_projstagetemp_workid":0,
+                "workname": "工作一",
+                "remarks": "",
+                "sequence": 0,
+                "score": 1
+              }
+            ]
+          },
+      )
+    },
+    // 删除阶段
+    async deleteStage () {
+      console.log(this.act_stageIndex)
+
+      console.log(this.act_stageIndex)
+      this.stageData.sa_projstagetempStages.splice(this.act_stageIndex,1)
+      this.act_stageIndex = 0
+    },
+    // 新增工作内容
+    addNewWork (data) {
+      data = this.form
+      let stage = this.stageData.sa_projstagetempStages[this.act_stageIndex].sa_projstagetempWorks
+      let obj = {
+        "workname": "新工作",
+        "remarks": "新工作内容",
+        "sequence": 1,
+        "score": 1,
+        "sa_projstagetemp_workid":0,
+
+      }
+      stage.push(obj)
+      // this.updateWork(obj)
+    },
+    // 删除工作内容
+    async deleteWork () {
+      console.log(this.act_stageIndex)
+      console.log(this.act_workIndex)
+      console.log(this.stageData.sa_projstagetempStages[this.act_stageIndex].sa_projstagetempWorks)
+      this.stageData.sa_projstagetempStages[this.act_stageIndex].sa_projstagetempWorks.splice(this.act_workIndex,1)
+      this.act_workIndex = 0
+    },
+
+    dragstart(index) {
+      this.dragIndex = index;
+    },
+    dragenter(e, index) {
+      e.preventDefault();
+      // 避免源对象触发自身的dragenter事件
+      if (this.dragIndex !== index) {
+        const source = this.stageData.sa_projstagetempStages[this.dragIndex];
+        this.stageData.sa_projstagetempStages.splice(this.dragIndex, 1);
+        this.stageData.sa_projstagetempStages.splice(index, 0, source);
+        // 排序变化后目标对象的索引变成源对象的索引
+        this.dragIndex = index;
+        this.stageData.sa_projstagetempStages.forEach((e,idx)=>{
+          e.sequence = idx
+        })
+        this.saveStageData()
+      }
+    },
+    debounce (event,index,fn,delay) {
+      let timerid
+      return function () {
+        clearTimeout(timerid)
+        timerid = setTimeout(fn(event,index),delay)
+      }
+    },
+    dragover(e, index) {
+      e.preventDefault();
+      console.log('end')
+    },
   }
 }
 </script>
 
 <style scoped>
+.stage__panel{
+  height: 42px;
+  line-height: 42px;
+  margin-bottom:10px;
+  text-align: center;
+  cursor: pointer;
+  background: #f1f2f3;
 
+}
+.active__stage {
+  background: #3874f6;
+  color:#fff
+}
+.work__panel{
+  position: relative;
+  /* width:400px; */
+  padding:10px;
+  margin-bottom:10px;
+  border:2px solid #f1f2f3;
+  font-size:14px;
+  border-radius: 4px;
+  cursor: pointer;
+}
+.work__panel:hover{
+  border:2px dashed #3874f6;
+}
+.active__work{
+  margin-bottom:10px;
+  border:2px dashed #3874f6;
+}
+.work__panel__operation{
+  display: none;
+  position: absolute;
+  right:0px;
+  top:0px;
+  padding:2px 10px;
+
+  background: #3874f6;
+  color:#fff;
+  z-index: 999;
+}
+.active__work > .work__panel__operation {
+  display: block;
+}
+.hide{
+  display: none;
+}
+.show{
+  display: block;
+}
+.button-new-tag{
+  flex:1;
+  text-align: left;
+}
+.sort-move {
+  transition: transform 0.3s;
+}
 </style>

+ 37 - 5
src/HDrpManagement/projectStage/index.vue

@@ -10,7 +10,7 @@
       >
       <div slot="custom">
         <label  class="search__label" style="margin: auto;width: 70px;">项目类型:</label>
-        <el-select class="inline-16" v-model="selectParam.projecttype" placeholder="请选择项目类型" @change="selectChange" size="small" clearable>
+        <el-select class="inline-24" v-model="selectParam.projecttype" placeholder="请选择项目类型" @change="selectChange" size="small" clearable>
           <el-option
               v-for="item in projectType"
               :key="item.value"
@@ -18,14 +18,28 @@
               :value="item.value">
           </el-option>
         </el-select>
-        <el-select class="inline-16" v-model="selectParam.isused" placeholder="请选择项目类型" @change="selectChange" size="small" clearable>
+        <label  class="search__label" style="margin: auto;width: 70px;">是否启用:</label>
+        <el-select class="inline-24" v-model="selectParam.isused" placeholder="请选择项目类型" @change="selectChange" size="small" clearable>
           <el-option
-              v-for="item in projectType"
+              v-for="item in isUsedList"
               :key="item.value"
-              :label="item.value"
+              :label="item.label"
               :value="item.value">
           </el-option>
         </el-select>
+        <label class="search__label" style="margin: auto;width: 65px;">创建时间:</label>
+        <el-date-picker
+            style="margin-right: 24px !important;"
+            size="small"
+            @change="selectChange"
+            value-format="yyyy-MM-dd"
+            v-model="dateSelect"
+            type="daterange"
+            range-separator="至"
+            start-placeholder="开始日期"
+            end-placeholder="结束日期"
+            clearable>
+        </el-date-picker>
       </div>
       <template v-slot:tbList="scope">
         <div v-if="scope.data.column.columnname === 'isorder'">
@@ -53,7 +67,7 @@
 </template>
 
 <script>
-import stageDetail from './modules/stageDetail'
+import stageDetail from './detail/index'
 export default {
   components:{stageDetail},
   name: "index",
@@ -62,6 +76,17 @@ export default {
     return {
       options:[],
       projectType:'',
+      isUsedList:[
+        {
+          value:'1',
+          label:'是'
+        },
+        {
+          value:'0',
+          label:'否'
+        }
+      ],
+      dateSelect:'',
       selectParam: {
         projecttype:'',
         isused:'',
@@ -83,6 +108,13 @@ export default {
       this.$refs.basicLayout.listData()
     },
     selectChange(){
+      if (this.dateSelect !== '' && this.dateSelect !== null){
+        this.selectParam.begindate = this.dateSelect[0]
+        this.selectParam.enddate = this.dateSelect[1]
+      }else {
+        this.selectParam.begindate = ''
+        this.selectParam.enddate = ''
+      }
       this.$refs.basicLayout.param.content.where = this.selectParam
       this.$refs.basicLayout.listData()
     }

+ 10 - 10
src/HDrpManagement/projectStage/modules/stageDetail.vue

@@ -10,7 +10,7 @@
       :withHeader="false"
       append-to-body
       @close="onClose"
-      size="50%">
+      size="35%">
       <div class="flex-align-center flex-between" style="border-bottom:1px solid #f1f2f3;padding:10px">
         <div style="font-size:20px">{{data.stagetempname}}</div>
         <div>
@@ -20,17 +20,17 @@
           <is_used class="inline-16" v-if="edit" :data="form" @onSuccess="onSuccess"></is_used>
         </div>
       </div>
-      <div class="container" style="font-size:14px;pointer-events: none" :style="pointerEvents">
+      <div class="container" style="font-size:14px;" >
         <el-row :gutter="20" style="margin-bottom:20px;border-bottom:1px solid #f1f2f3">
           <el-form :model="form" :rules="rules" ref="form" label-width="110px" label-position="right" size="mini"  >
-            <el-col :span="24">
-              <el-form-item label="项目模板名称" prop="stagetempname">
-                <el-input v-model="form.stagetempname" placeholder="项目模板名称"></el-input>
+            <el-col :span="12">
+              <el-form-item label="项目模板名称:" prop="stagetempname">
+                <el-input v-model="form.stagetempname" placeholder="请输入项目模板名称"></el-input>
               </el-form-item>
             </el-col>
-            <el-col :span="24">
-              <el-form-item label="项目类型">
-                <el-select v-model="form.projecttype" style="width:100%">
+            <el-col :span="12">
+              <el-form-item label="项目类型:">
+                <el-select v-model="form.projecttype" style="width:100%" placeholder="请选择项目类型">
                   <el-option v-for="item in sys_options" :key="item.index" :value="item.value" :label="item.value"></el-option>
                 </el-select>
               </el-form-item>
@@ -40,7 +40,7 @@
                             <el-input type="textarea" v-model="form.remarks" placeholder="请输入备注"></el-input>
                           </el-form-item>
                         </el-col>-->
-            <el-col :span="10">
+            <el-col :span="12">
               <el-form-item>
                 <div style="display:flex">
                   <el-checkbox :true-label="1" :false-label="0" v-model="form.isused" checked="checked">启用</el-checkbox>
@@ -133,7 +133,7 @@
       </div>
       <div class="fixed__btn__panel" v-show="save">
         <el-button size="small" @click="onCancel" class="normal-btn-width">取 消</el-button>
-        <el-button size="small" type="primary" @click="onSubmit" class="normal-btn-width">确 定</el-button>
+        <el-button size="small" type="warning" @click="onSubmit" class="normal-btn-width">保 存</el-button>
       </div>
     </el-drawer>
   </div>