codeMan před 2 roky
rodič
revize
74cba3a717

+ 28 - 0
src/HDrpManagement/contractManage/components/contractOver.vue

@@ -0,0 +1,28 @@
+<template>
+  <div class="inline-16">
+    <el-popconfirm title="确定终止当前合同吗?" @confirm="deleteRow()">
+      <el-button slot="reference" size="mini">终 止</el-button>
+    </el-popconfirm>
+  </div>
+</template>
+
+<script>
+export default {
+  props: ['id'],
+  methods: {
+    async deleteRow () {
+    let res = await this.$api.requested({
+        "id": "20221212102802",
+        "version": 1,
+        "content": {
+          "sa_contractid": this.id
+        }
+      })
+      this.tool.showMessage(res, () => {
+        this.$emit('onSuccess')
+      })
+    },
+  }
+}
+
+</script>

+ 145 - 0
src/HDrpManagement/contractManage/components/taskTarget/editTarget.vue

@@ -0,0 +1,145 @@
+<template>
+  <div>
+    <el-button  size="mini" type="text" :disabled="disabled" @click="onShow(dialogTableVisible = true)">编 辑</el-button>
+    <el-drawer title="编辑人员目标" append-to-body :visible.sync="dialogTableVisible" size="98%" top="20px">
+      <div class="container">
+        <el-row :gutter="40">
+          <el-form :model="form" :disabled="date.year > year" label-position="right" label-width="80px" size="small">
+            <el-col :span="6">
+              <el-form-item label="年度">
+                <el-input v-model="form.year" disabled autocomplete="off"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="6">
+              <el-form-item label="基本目标">
+                <el-input v-model="form['y1l']" disabled autocomplete="off"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="6">
+              <el-form-item label="挑战目标">
+                <el-input v-model="form['y1h']" disabled autocomplete="off"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="6">
+              <el-form-item label="单位">
+                <p>万元</p>
+              </el-form-item>
+            </el-col>
+            <div v-for="(i,index) in 4" :key="index">
+              <el-col :span="24"><p class="normal-margin normal-title">第{{index+1===1?'一':index+1===2?'二':index+1===3?'三':'四'}}季度</p></el-col>
+              <el-col :span="8">
+                <el-form-item label="基本目标">
+                  <el-input v-model="form[`s${index+1}l`]" disabled autocomplete="off"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item label="挑战目标">
+                  <el-input v-model="form[`s${index+1}l`]" disabled autocomplete="off"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="24"></el-col>
+              <el-col :span="8" class="normal-margin">{{index+1===1?'一月':index+1===2?'四月':index+1===3?'七月':'十月'}}:</el-col>
+              <el-col :span="8" class="normal-margin">{{index+1===1?'二月':index+1===2?'五月':index+1===3?'八月':'十一月'}}:</el-col>
+              <el-col :span="8" class="normal-margin">{{index+1===1?'三月':index+1===2?'六月':index+1===3?'九月':'十二月'}}:</el-col>
+              <el-col :span="8">
+                <el-row :gutter="20">
+                  <el-col :span="12">
+                    <el-form-item label="基本目标">
+                      <el-input type="number" v-model="form[`m${1+index * 3}l`]" :disabled="date.month  > (1+index * 3) && date.year > year" autocomplete="off"></el-input>
+                    </el-form-item>
+                  </el-col>
+                  <el-col :span="12">
+                    <el-form-item label="挑战目标">
+                      <el-input type="number" v-model="form[`m${1+index * 3}h`]" :disabled="date.month  > (1+index * 3) && date.year > year" autocomplete="off"></el-input>
+                    </el-form-item>
+                  </el-col>
+                </el-row>
+              </el-col>
+              <el-col :span="8">
+                <el-row :gutter="20">
+                  <el-col :span="12">
+                    <el-form-item label="基本目标">
+                      <el-input type="number" v-model="form[`m${2+index * 3}l`]" :disabled="date.month  > (1+index * 3) && date.year > year" autocomplete="off"></el-input>
+                    </el-form-item>
+                  </el-col>
+                  <el-col :span="12">
+                    <el-form-item label="挑战目标">
+                      <el-input type="number" v-model="form[`m${2+index * 3}h`]" :disabled="date.month  > (1+index * 3) && date.year > year" autocomplete="off"></el-input>
+                    </el-form-item>
+                  </el-col>
+                </el-row>
+              </el-col>
+              <el-col :span="8">
+                <el-row :gutter="20">
+                  <el-col :span="12">
+                    <el-form-item label="基本目标">
+                      <el-input type="number" v-model="form[`m${3+index * 3}l`]" :disabled="date.month  > (1+index * 3) && date.year > year" autocomplete="off"></el-input>
+                    </el-form-item>
+                  </el-col>
+                  <el-col :span="12">
+                    <el-form-item label="挑战目标">
+                      <el-input type="number" v-model="form[`m${3+index * 3}h`]" :disabled="date.month  > (1+index * 3) && date.year > year" autocomplete="off"></el-input>
+                    </el-form-item>
+                  </el-col>
+                </el-row>
+              </el-col>
+            </div>
+          </el-form>
+        </el-row>
+      </div>
+      
+      <div class="fixed__btn__panel">
+        <el-button size="small" @click="dialogTableVisible = false" class="normal-btn-width">取 消</el-button>
+        <el-button size="small" type="primary" @click="onSubmit" class="normal-btn-width">确 定</el-button>
+      </div>
+    </el-drawer>
+  </div>
+</template>
+
+<script>
+export default {
+  props:['data','year','disabled'],
+  data () {
+    return {
+      dialogTableVisible:false,
+      form:{
+      },
+      date:{
+        year:'',
+        month:''
+      }
+    }
+  },
+  methods:{
+    onShow () {
+      console.log(this.data);
+      
+      this.form = Object.assign({},this.form,this.data)
+      let date = new Date()
+      this.date = {
+        year:date.getFullYear(),
+        month:date.getMonth() + 1
+      }
+    },
+    async onSubmit () {
+      for (var i = 0 ; i< 4 ; i++) {
+        this.form[`s${i + 1}l`] = this.form[`m${1 + i*3}l`] + this.form[`m${2 + i*3}l`] + this.form[`m${3 + i*3}l`]
+        this.form[`s${i + 1}h`] = this.form[`m${1 + i*3}h`] + this.form[`m${2 + i*3}h`] + this.form[`m${3 + i*3}h`]
+      }
+      this.form.y1l = this.form.s1l + this.form.s2l + this.form.s3l + this.form.s4l
+      this.form.y1h = this.form.s1h + this.form.s2h + this.form.s3h + this.form.s4h
+      const res = await this.$api.requested({
+        "id": 20220902162902,
+        "content": this.form
+      })
+      this.tool.showMessage(res,()=>{
+        this.$emit('onSuccess')
+        this.dialogTableVisible = false
+      })
+    }
+  }
+}
+
+</script>
+<style>
+</style>

+ 425 - 0
src/HDrpManagement/contractManage/components/taskTarget/taskTarget.vue

@@ -0,0 +1,425 @@
+<template>
+  <div class="normal-panel">
+    <div class="flex-align-center" style="margin-bottom:10px">
+      <el-date-picker
+          class="inline-16"
+          :clearable=false
+          v-model="year"
+          type="year"
+          size="small"
+          placeholder="选择年"
+          value-format="yyyy"
+          @change="queryData">
+      </el-date-picker>
+      <slot name="addTarget" :data="year"/>
+    </div>
+    <el-table
+        :data="tableData"
+        style="width: 100%"
+        height="calc(100vh - 182px)"
+        size="small">
+      <el-table-column label="年度(万元)">
+        <el-table-column
+            prop="y1l"
+            label="基本"
+            width="120">
+          <template slot-scope="scope">
+            <p class="center d-text">{{scope.row.y1l}}</p>
+          </template>
+        </el-table-column>
+        <el-table-column
+            prop="y1h"
+            label="挑战"
+            width="120">
+          <template slot-scope="scope">
+            <p class="center d-text">{{scope.row.y1h}}</p>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="第一季度(万元)">
+        <el-table-column
+            prop="s1l"
+            label="基本"
+            width="120">
+          <template slot-scope="scope">
+            <p class="center d-text">{{scope.row.s1l}}</p>
+          </template>
+        </el-table-column>
+        <el-table-column
+            prop="s1h"
+            label="挑战"
+            width="120">
+          <template slot-scope="scope">
+            <p class="center d-text">{{scope.row.s1h}}</p>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="一月(万元)">
+        <el-table-column
+            prop="m1l"
+            label="基本"
+            width="120">
+          <template slot-scope="scope">
+            <p class="center d-text">{{scope.row.m1l}}</p>
+          </template>
+        </el-table-column>
+        <el-table-column
+            prop="m1h"
+            label="挑战"
+            width="120">
+          <template slot-scope="scope">
+            <p class="center d-text">{{scope.row.m1h}}</p>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="二月(万元)">
+        <el-table-column
+            prop="m2l"
+            label="基本"
+            width="120">
+          <template slot-scope="scope">
+            <p class="center d-text">{{scope.row.m2l}}</p>
+          </template>
+        </el-table-column>
+        <el-table-column
+            prop="m2h"
+            label="挑战"
+            width="120">
+          <template slot-scope="scope">
+            <p class="center d-text">{{scope.row.m2h}}</p>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="三月(万元)">
+        <el-table-column
+            prop="m3l"
+            label="基本"
+            width="120">
+          <template slot-scope="scope">
+            <p class="center d-text">{{scope.row.m3l}}</p>
+          </template>
+        </el-table-column>
+        <el-table-column
+            prop="m3h"
+            label="挑战"
+            width="120">
+          <template slot-scope="scope">
+            <p class="center d-text">{{scope.row.m3h}}</p>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="第二季度(万元)">
+        <el-table-column
+            prop="s2l"
+            label="基本"
+            width="120">
+          <template slot-scope="scope">
+            <p class="center d-text">{{scope.row.s2l}}</p>
+          </template>
+        </el-table-column>
+        <el-table-column
+            prop="s2h"
+            label="挑战"
+            width="120">
+          <template slot-scope="scope">
+            <p class="center d-text">{{scope.row.s2h}}</p>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="四月(万元)">
+        <el-table-column
+            prop="m4l"
+            label="基本"
+            width="120">
+          <template slot-scope="scope">
+            <p class="center d-text">{{scope.row.m4l}}</p>
+          </template>
+        </el-table-column>
+        <el-table-column
+            prop="m4h"
+            label="挑战"
+            width="120">
+          <template slot-scope="scope">
+            <p class="center d-text">{{scope.row.m4h}}</p>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="五月(万元)">
+        <el-table-column
+            prop="m5l"
+            label="基本"
+            width="120">
+          <template slot-scope="scope">
+            <p class="center d-text">{{scope.row.m5l}}</p>
+          </template>
+        </el-table-column>
+        <el-table-column
+            prop="m5h"
+            label="挑战"
+            width="120">
+          <template slot-scope="scope">
+            <p class="center d-text">{{scope.row.m5h}}</p>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="六月(万元)">
+        <el-table-column
+            prop="m6l"
+            label="基本"
+            width="120">
+          <template slot-scope="scope">
+            <p class="center d-text">{{scope.row.m6l}}</p>
+          </template>
+        </el-table-column>
+        <el-table-column
+            prop="m6h"
+            label="挑战"
+            width="120">
+          <template slot-scope="scope">
+            <p class="center d-text">{{scope.row.m6h}}</p>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="第三季度(万元)">
+        <el-table-column
+            prop="s3l"
+            label="基本"
+            width="120">
+          <template slot-scope="scope">
+            <p class="center d-text">{{scope.row.s3l}}</p>
+          </template>
+        </el-table-column>
+        <el-table-column
+            prop="s3h"
+            label="挑战"
+            width="120">
+          <template slot-scope="scope">
+            <p class="center d-text">{{scope.row.s3h}}</p>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="七月(万元)">
+        <el-table-column
+            prop="m7l"
+            label="基本"
+            width="120">
+          <template slot-scope="scope">
+            <p class="center d-text">{{scope.row.m7l}}</p>
+          </template>
+        </el-table-column>
+        <el-table-column
+            prop="m7h"
+            label="挑战"
+            width="120">
+          <template slot-scope="scope">
+            <p class="center d-text">{{scope.row.m7h}}</p>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="八月(万元)">
+        <el-table-column
+            prop="m8l"
+            label="基本"
+            width="120">
+          <template slot-scope="scope">
+            <p class="center d-text">{{scope.row.m8l}}</p>
+          </template>
+        </el-table-column>
+        <el-table-column
+            prop="m8h"
+            label="挑战"
+            width="120">
+          <template slot-scope="scope">
+            <p class="center d-text">{{scope.row.m8h}}</p>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="九月(万元)">
+        <el-table-column
+            prop="m9l"
+            label="基本"
+            width="120">
+          <template slot-scope="scope">
+            <p class="center d-text">{{scope.row.m9l}}</p>
+          </template>
+        </el-table-column>
+        <el-table-column
+            prop="m9h"
+            label="挑战"
+            width="120">
+          <template slot-scope="scope">
+            <p class="center d-text">{{scope.row.m9h}}</p>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="第四季度(万元)">
+        <el-table-column
+            prop="s4l"
+            label="基本"
+            width="120">
+          <template slot-scope="scope">
+            <p class="center d-text">{{scope.row.s4l}}</p>
+          </template>
+        </el-table-column>
+        <el-table-column
+            prop="s4h"
+            label="挑战"
+            width="120">
+          <template slot-scope="scope">
+            <p class="center d-text">{{scope.row.s4h}}</p>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="十月(万元)">
+        <el-table-column
+            prop="m10l"
+            label="基本"
+            width="120">
+          <template slot-scope="scope">
+            <p class="center d-text">{{scope.row.m10l}}</p>
+          </template>
+        </el-table-column>
+        <el-table-column
+            prop="m10h"
+            label="挑战"
+            width="120">
+          <template slot-scope="scope">
+            <p class="center d-text">{{scope.row.m10h}}</p>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="十一月(万元)">
+        <el-table-column
+            prop="m11l"
+            label="基本"
+            width="120">
+          <template slot-scope="scope">
+            <p class="center d-text">{{scope.row.m11l}}</p>
+          </template>
+        </el-table-column>
+        <el-table-column
+            prop="m11h"
+            label="挑战"
+            width="120">
+          <template slot-scope="scope">
+            <p class="center d-text">{{scope.row.m11h}}</p>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="十二月(万元)">
+        <el-table-column
+            prop="m12l"
+            label="基本"
+            width="120">
+          <template slot-scope="scope">
+            <p class="center d-text">{{scope.row.m12l}}</p>
+          </template>
+        </el-table-column>
+        <el-table-column
+            prop="m12h"
+            label="挑战"
+            width="120">
+          <template slot-scope="scope">
+            <p class="center d-text">{{scope.row.m12h}}</p>
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="操作" fixed="right">
+        <template slot-scope="scope">
+          <slot name="edit" :data="scope.row"></slot>
+        </template>
+      </el-table-column>
+    </el-table>
+    <div  class="container normal-panel" style="text-align:right">
+      <el-pagination
+          background
+          small
+          @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>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  props:['data'],
+  data () {
+    return {
+      tableData:[],
+      currentPage:0,
+      total:0,
+      year:String((new Date()).getFullYear()),
+      param:{
+        "id": 20221209150102,
+        "content": {
+          "nocache":true,
+            "hrid": 25,
+            "where": {
+                "year": 2022
+            }
+        },
+      }
+    }
+  },
+  methods:{
+    inputChange (val) {
+      val == '' && this.queryData()
+    },
+    async queryData () {
+      this.param.content.where.year = this.year
+      this.param.content.hrid = this.data.saler_hrid
+      /*this.param.content.where.condition = this.condition*/
+      const res = await this.$api.requested(this.param)
+      this.tableData = res.data
+      this.total = res.total
+      this.currentPage = res.pageNumber
+      console.log(this.tableData);
+      
+    },
+    handleSizeChange(val) {
+      // console.log(`每页 ${val} 条`);
+      this.param.content.pageSize = val
+      this.queryData()
+    },
+    handleCurrentChange(val) {
+      // console.log(`当前页: ${val}`);
+      this.param.content.pageNumber = val
+      this.queryData()
+    },
+  },
+  mounted () {
+    this.queryData()
+  }
+}
+
+</script>
+<style>
+</style>
+<style scoped>
+.d-text{
+  height: 46px;
+  line-height: 46px;
+}
+.border{
+  border:1px solid #c1bfbf;
+  transform: scale(2,.2);
+}
+.center{
+  text-align: center;
+}
+.red{
+  color:red
+}
+.green{
+  color:green
+}
+>>> .el-form-item__label{
+  font-size: 14px;
+  color:rgb(163, 163, 163)
+}
+</style>

+ 1 - 0
src/HDrpManagement/contractManage/index.vue

@@ -62,6 +62,7 @@
             <el-option label="新建" value="新建" ></el-option>
             <el-option label="审核" value="审核" ></el-option>
             <el-option label="已提交" value="已提交" ></el-option>
+            <el-option label="已终止" value="已终止" ></el-option>
           </el-select>
         </div>
       </div>

+ 18 - 3
src/HDrpManagement/contractManage/modules/detail.vue

@@ -9,15 +9,16 @@
         turnPageId="20221121201502"
         idname="sa_contractid"
         ownertable="sa_contract"
-        :tabs="mainData.type == '项目' ? ['产品清单','合同条款','角色信息'] : mainData.type == '框架' ? ['产品明细折扣','产品类别折扣'] : mainData.type == '居间' ? null : ['工具清单','合同条款']"
+        :tabs="mainData.type == '项目' ? ['产品清单','合同条款','角色信息'] : mainData.type == '框架' ? ['产品明细折扣','产品类别折扣','业绩目标'] : mainData.type == '居间' ? null : ['工具清单','合同条款']"
         @pageChange="pageChange"
         @onEditSuccess="queryMainData($route.query.id)">
       <div slot="tags">
       </div>
       <div slot="customOperation" >
         <editBtn :modelList="modelList" v-if="tool.checkAuth($route.name,'update')" :disabled="mainData.status != '新建' || !isLeader" @onSuccess="queryMainData;$refs.billno.listData()" :data="mainData" class="inline-16"/>
-        <Del :idName="20221121202502" :id="mainData.sa_contractid" idKey="sa_contractids" class="inline-16" v-if="tool.checkAuth($route.name,'delete') && mainData.type == '新建' && isLeader"/>
         <submit-check :disabled="!isLeader" :data="mainData" @onSuccess="queryMainData" />
+        <contractOver v-if="tool.checkAuth($route.name,'contractOver') && mainData.status != '已终止'" :disabled="!isLeader" :id="mainData.sa_contractid" @onSuccess="queryMainData"/>
+        <Del :idName="20221121202502" :id="mainData.sa_contractid" idKey="sa_contractids" class="inline-16" v-if="tool.checkAuth($route.name,'delete') && mainData.type == '新建' && isLeader"/>
       </div>
       <div slot="slot0" >
         <!--产品清单表-->
@@ -121,6 +122,14 @@
           </template>
         </contractClause>
       </div>
+      <div slot="slot2">
+        <!--业绩目标-->
+        <taskTarget ref="taskTarget" v-if="Object.keys(mainData).length > 0" :data="mainData">
+          <template v-slot:edit="scope">
+            <edit-target :disabled="mainData.status != '新建' || !isLeader" v-if="tool.checkAuth($route.name,'update')" :data="scope.data" :salerId="mainData" @onSuccess="$refs.taskTarget.queryData()"/>
+          </template>
+        </taskTarget>
+      </div>
     </basicDetails>
   </div>
 </template>
@@ -138,6 +147,9 @@ import toolList from '../components/toolList/toolList'
 import addClass from '../components/productClassList/addProduct'
 import productClassList from '../components/productClassList/productClassList'
 import contractClause from '../components/contractClause/contractClause'
+import editTarget from '../components/taskTarget/editTarget'
+import taskTarget from '../components/taskTarget//taskTarget'
+import contractOver from '../components/contractOver'
 export default {
   name: "detail",
   data() {
@@ -160,7 +172,10 @@ export default {
     toolList,
     addClass,
     productClassList,
-    contractClause
+    contractClause,
+    editTarget,
+    taskTarget,
+    contractOver
   },
   watch: {
     mainData: {

+ 2 - 0
src/HManagement/personalTarget/personalTargetStatistics/index.vue

@@ -549,6 +549,8 @@ export default {
       this.tableData = res.data
       this.total = res.total
       this.currentPage = res.pageNumber
+      console.log(this.tableData);
+      
     },
     handleSizeChange(val) {
       // console.log(`每页 ${val} 条`);

+ 288 - 0
src/SManagement/archives_admag/index copy.vue

@@ -0,0 +1,288 @@
+<template>
+  <div>
+    <!--新增-->
+    <Header v-if="tool.checkAuth($route.name,'insert')">
+      <add ref="add" />
+    </Header>
+    <div class="normal-card">
+      <div style="display:flex;align-items:center">
+        <div style="display:flex;align-items:center;padding-bottom:15px">
+          <p style="font-size:14px;margin-right:10px;width:50px">范围:</p>
+          <el-select v-model="params.content.where.type" placeholder="请选择素材范围" size="small" @change="getFileList">
+            <el-option
+              label="全部"
+              :value="0">
+            </el-option>
+            <el-option
+              label="我的"
+              :value="1">
+            </el-option>
+          </el-select>
+        </div>
+        <!-- 搜索及分类筛选 -->
+        <filterList @changeTypeId="changeTypeId" @startSearch="startSearch">
+          <span style="flex: 1;display: flex;justify-content: flex-end;">
+            <hot-new-control @sortTypeChange="sortTypeChange" />
+          </span>
+        </filterList>
+      </div>
+      
+      <!--素材列表-->
+      <list :fileData="fileData" @listItemClick="listItemClick"
+        v-if="tool.checkAuth($route.name, 'read')">
+        <template v-slot:edit="scope">
+          <Edit :fileData="scope.data" v-if="tool.checkAuth($route.name, 'update')"></Edit>
+        </template>
+        <template v-slot:delete="scope">
+          <Delete :data="scope.data" @removeSuccess="getFileList" v-if="tool.checkAuth($route.name, 'delete')"></Delete>
+        </template>
+      </list>
+      <pagination :total="total" :pageSize="params.content.pageSize" :currentPage="params.content.pageNumber"
+        @pageChange="pageChange">
+      </pagination>
+      <detail ref="detail" v-if="currentFile && tool.checkAuth($route.name, 'read')" :currentSelectFile="currentFile">
+      </detail>
+    </div>
+    <!--抽屉面板-->
+    <el-drawer
+      title="我是标题"
+      :visible.sync="drawer"
+      :with-header="false"
+      direction="rtl"
+      size="90%"
+      append-to-body
+      @close="closeDrawer">
+      <div class="detail__panel">
+        <router-view/>
+      </div>
+    </el-drawer>
+  </div>
+</template>
+
+<script>
+import filterList from "@/HManagement/archives_ad/modules/filterList.vue";
+import Header from '@/SManagement/archives_upload/components/Header'
+import add from '../archives_ad/components/add'
+import HotNewControl from '@/components/hot-new-control/HotNewControl'
+import CategorySelect from '@/components/category-select/CategorySelect'
+import list from '@/SManagement/archives_ad/components/list'
+import search from '@/components/search/index'
+import detail from '@/SManagement/archives_ad/components/detail'
+import Delete from '@/SManagement/archives_ad/components/delete'
+import Edit from '@/SManagement/archives_ad/components/Edit'
+import Pagination from '@/components/pagination/Pagination'
+
+import matchingFileType from '@/utils/matchingFeilType'
+
+import {mapGetters} from 'vuex'
+export default {
+  name: 'index',
+  data() {
+    return {
+      drawer:false,
+      params: {
+        "classname": "saletool.sharematerial.sharematerial",
+        "method": "selectList",
+        "content": {
+          "pageNumber": 1,
+          "pageSize": 16,
+          "nocache": true,
+          "where": {
+            "condition": "",
+            "sat_sharematerial_classid": null,
+            "type":0,
+          }
+        }
+      },
+      //分类配置
+      select: {
+        "classname": "saletool.sharematerial.sharematerial",
+        "method": "select",
+        "content": {
+          "parentid": 0
+        }
+      },
+      fileData: [],
+      //列表数据
+      list: [],
+      //分类列表
+      selectList: [],
+      total: 0,
+      //当前查看的素材
+      currentFile: ''
+    };
+  },
+  components: {
+    HotNewControl,
+    CategorySelect,
+    Pagination,
+    list,
+    search,
+    detail,
+    Delete,
+    Edit,
+    Header,
+    add,
+    filterList
+  },
+  computed: {
+    ...mapGetters({
+      DrawerShow:'DrawerShow'
+    })
+  },
+  watch: {
+    $route (val) {
+      if (val.path == '/archives_admag') {
+        this.getFileList()
+        this.$refs.add.dialogVisible = false
+      }
+    },
+    DrawerShow (val) {
+      val ? this.drawer = true : this.drawer = false
+    }
+  },
+  created() {
+    this.getFileList()
+    this.getSelectList()
+  },
+  methods: {
+    closeDrawer () {
+      this.$router.push({path:'/archives_admag'})
+      this.$store.dispatch('DrawerShowChange',false)
+    },
+    /* 改变分类ID */
+    changeTypeId(id) {
+      this.params.content.where.sat_sharematerial_classid = id == 0 ? null : id;
+      this.getFileList(true);
+    },
+    /* 开始搜索 */
+    startSearch(value) {
+      this.params.content.pageNumber = 1
+      this.params.content.where.condition = value;
+      this.getFileList(true);
+    },
+    //获取文件数据
+    async getFileList(init = false) {
+      if (init) this.params.content.pageNumber = 1;
+      let res = await this.$api.requested(this.params)
+      let initID = '9999' + JSON.parse(window.sessionStorage.getItem("active_account")).userid;
+      let deleteList = [];
+      res.data.forEach(v => (initID == v.sat_sharematerial_classid && v.title == '') ? deleteList.push(v.sat_sharematerialid) : '');
+      if (deleteList.length != 0) return this.handleDelete(deleteList);
+      this.total = res.total
+      this.fileData = res.data
+      console.log(this.fileData);
+      
+      this.fileData.forEach((item) => {
+        item.attinfos = matchingFileType.fileList(item.attinfos)
+      })
+      this.params.content.sort = res.sort
+    },
+    /* 处理批量删除 */
+    handleDelete(list) {
+      this.$api.requested({
+        "id": 20221102143602,
+        "content": {
+          "sat_sharematerialid": list
+        }
+      }).then(res => {
+        console.log("处理删除", res);
+        if (res.msg == '成功') this.getFileList()
+      })
+    },
+    //获取分类列表
+    async getSelectList() {
+      let res = await this.$api.requested(this.select)
+      this.selectList = res.data
+    },
+    sortTypeChange(name) {
+      for (let i = 0; i < this.params.content.sort.length; i++) {
+        this.params.content.sort[i].sorted = this.params.content.sort[i].sortname == name ? 1 : 0
+      }
+      this.getFileList()
+    },
+    //列表单击事件
+    async listItemClick(data) {
+      let param = {
+        "classname": "saletool.sharematerial.sharematerial",
+        "method": "selectDetail",
+        "content": {
+          "sat_sharematerialid": data.sat_sharematerialid
+        }
+      }
+      let res = await this.$api.requested(param)
+      res.data.attinfos = this.fileType.fileList(res.data.attinfos)
+      this.currentFile = res.data
+      this.$nextTick(() => {
+        this.$refs.detail.isFileInfoPanlShow = true
+      })
+    },
+    itemEdit(data) {
+      this.$router.push({
+        path: '/upload_archives',
+        params: JSON.stringify(data)
+      })
+    },
+    clearData() {
+      this.params.content.where.condition = ''
+      this.getFileList()
+    },
+    pageChange(n) {
+      this.params.content.pageNumber = n
+      this.getFileList()
+    }
+  },
+};
+</script>
+
+<style scoped>
+* {
+  box-sizing: border-box;
+}
+
+.normal-card {
+  min-height: calc(100vh - 190px);
+  box-sizing: border-box;
+  position: relative;
+}
+
+.normal-card .header-panl {
+  display: flex;
+  justify-content: space-between;
+  margin-bottom: 30px;
+}
+
+.normal-card .header-panl .left {
+  display: flex;
+  align-items: center;
+}
+
+.normal-card .header-panl .left .select {
+  margin-right: 16px;
+  display: flex;
+  align-items: center;
+}
+
+.normal-card .header-panl .left .select span {
+  margin-right: 8px;
+}
+
+.normal-card .header-panl .left .search {
+  height: 36px;
+}
+
+/deep/ .input-with-select {
+  height: 34px;
+}
+
+/deep/.el-button span {
+  transform: translateX(-5px) !important;
+}
+
+.el-pagination {
+  position: absolute;
+  right: 16px;
+  bottom: 0;
+  margin-top: 16px;
+}
+</style>

+ 62 - 54
src/SManagement/archives_admag/index.vue

@@ -1,61 +1,65 @@
 <template>
   <div>
     <!--新增-->
-    <Header v-if="tool.checkAuth($route.name,'insert')">
-      <add ref="add" />
-    </Header>
-    <div class="normal-card">
-      <div style="display:flex;align-items:center">
-        <div style="display:flex;align-items:center;padding-bottom:15px">
-          <p style="font-size:14px;margin-right:10px;width:50px">范围:</p>
-          <el-select v-model="params.content.where.type" placeholder="请选择素材范围" size="small" @change="getFileList">
-            <el-option
-              label="全部"
-              :value="0">
-            </el-option>
-            <el-option
-              label="我的"
-              :value="1">
-            </el-option>
-          </el-select>
-        </div>
-        <!-- 搜索及分类筛选 -->
-        <filterList @changeTypeId="changeTypeId" @startSearch="startSearch">
-          <span style="flex: 1;display: flex;justify-content: flex-end;">
-            <hot-new-control @sortTypeChange="sortTypeChange" />
-          </span>
-        </filterList>
+    <normalLayout  @onRefresh="inputChange">
+      <div slot="titleRight">
+        <add ref="add" />
       </div>
-      
-      <!--素材列表-->
-      <list :fileData="fileData" @listItemClick="listItemClick"
-        v-if="tool.checkAuth($route.name, 'read')">
-        <template v-slot:edit="scope">
-          <Edit :fileData="scope.data" v-if="tool.checkAuth($route.name, 'update')"></Edit>
-        </template>
-        <template v-slot:delete="scope">
-          <Delete :data="scope.data" @removeSuccess="getFileList" v-if="tool.checkAuth($route.name, 'delete')"></Delete>
-        </template>
-      </list>
-      <pagination :total="total" :pageSize="params.content.pageSize" :currentPage="params.content.pageNumber"
-        @pageChange="pageChange">
-      </pagination>
-      <detail ref="detail" v-if="currentFile && tool.checkAuth($route.name, 'read')" :currentSelectFile="currentFile">
-      </detail>
-    </div>
-    <!--抽屉面板-->
-    <el-drawer
-      title="我是标题"
-      :visible.sync="drawer"
-      :with-header="false"
-      direction="rtl"
-      size="90%"
-      append-to-body
-      @close="closeDrawer">
-      <div class="detail__panel">
-        <router-view/>
+      <div slot="content">
+        <div class="normal-card">
+          <div style="display:flex;align-items:center">
+            <div style="display:flex;align-items:center;padding-bottom:15px">
+              <p style="font-size:14px;margin-right:10px;width:50px">范围:</p>
+              <el-select v-model="params.content.where.type" placeholder="请选择素材范围" size="small" @change="getFileList">
+                <el-option
+                  label="全部"
+                  :value="0">
+                </el-option>
+                <el-option
+                  label="我的"
+                  :value="1">
+                </el-option>
+              </el-select>
+            </div>
+            <!-- 搜索及分类筛选 -->
+            <filterList @changeTypeId="changeTypeId" @startSearch="startSearch">
+              <!-- <span style="flex: 1;display: flex;justify-content: flex-end;">
+                <hot-new-control @sortTypeChange="sortTypeChange" />
+              </span> -->
+            </filterList>
+          </div>
+          
+          <!--素材列表-->
+          <list :fileData="fileData" @listItemClick="listItemClick"
+            v-if="tool.checkAuth($route.name, 'read')">
+            <template v-slot:edit="scope">
+              <Edit :fileData="scope.data" v-if="tool.checkAuth($route.name, 'update')"></Edit>
+            </template>
+            <template v-slot:delete="scope">
+              <Delete :data="scope.data" @removeSuccess="getFileList" v-if="tool.checkAuth($route.name, 'delete')"></Delete>
+            </template>
+          </list>
+          <pagination :total="total" :pageSize="params.content.pageSize" :currentPage="params.content.pageNumber"
+            @pageChange="pageChange">
+          </pagination>
+          <detail ref="detail" v-if="currentFile && tool.checkAuth($route.name, 'read')" :currentSelectFile="currentFile">
+          </detail>
+        </div>
+        <!--抽屉面板-->
+        <el-drawer
+          title="我是标题"
+          :visible.sync="drawer"
+          :with-header="false"
+          direction="rtl"
+          size="90%"
+          append-to-body
+          @close="closeDrawer">
+          <div class="detail__panel">
+            <router-view/>
+          </div>
+        </el-drawer>
       </div>
-    </el-drawer>
+    </normalLayout>
   </div>
 </template>
 
@@ -75,6 +79,7 @@ import Pagination from '@/components/pagination/Pagination'
 import matchingFileType from '@/utils/matchingFeilType'
 
 import {mapGetters} from 'vuex'
+import { log } from '@antv/g2plot/lib/utils';
 export default {
   name: 'index',
   data() {
@@ -146,6 +151,9 @@ export default {
     this.getSelectList()
   },
   methods: {
+    inputChange () {
+
+    },
     closeDrawer () {
       this.$router.push({path:'/archives_admag'})
       this.$store.dispatch('DrawerShowChange',false)
@@ -183,7 +191,7 @@ export default {
       this.$api.requested({
         "id": 20221102143602,
         "content": {
-          "sat_sharematerialid": list
+          "sat_sharematerialids": list
         }
       }).then(res => {
         console.log("处理删除", res);

+ 34 - 45
src/SManagement/archives_sc/index.vue

@@ -1,35 +1,36 @@
 <template>
-  <div class="normal-card">
-    <p v-if="activeApp" style="font-size:26px;font-weight:300;padding-bottom:16px">{{activeApp.meta.title}}&nbsp;<i @click="addToAsideBar" style="color:#999" :class="showAppCollection()?'el-icon-star-on collection':'el-icon-star-off'"></i></p>
-    <div class="header-panl">
-      <!-- 搜索及分类筛选 -->
-      <filterList @changeTypeId="changeTypeId" @startSearch="startSearch">
-          <hot-new-control @sortTypeChange="sortTypeChange"/>
-      </filterList>
-    </div>
-    <!--课件列表-->
-    <div class="file" v-if="list.length != 0 && tool.checkAuth($route.name,'read')">
-      <div class="file-item" v-for="(item,index) in list" :key="index" @click="itemClick(item)">
-        <div class="top">
-          <el-image style="width: 100%; height: 100%" :src="item.cover || require('@/assets/video.png')" fit="fill">
-          </el-image>
-        </div>
-        <div class="bottom">
-          <p class="title">{{item.title}}</p>
-          <p class="descript">{{item.notes}}</p>
-          <p class="people">{{item.readcount}}人学习</p>
+<normalLayout  @onRefresh="inputChange">
+    <div slot="content">
+      <div class="normal-card">
+        <!-- 搜索及分类筛选 -->
+        <filterList @changeTypeId="changeTypeId" @startSearch="startSearch">
+        </filterList>
+        <!--课件列表-->
+        <div class="file" v-if="list.length != 0 && tool.checkAuth($route.name,'read')">
+          <div class="file-item" v-for="(item,index) in list" :key="index" @click="itemClick(item)">
+            <div class="top">
+              <el-image style="width: 100%; height: 100%" :src="item.cover || require('@/assets/video.png')" fit="fill">
+              </el-image>
+            </div>
+            <div class="bottom">
+              <p class="title">{{item.title}}</p>
+              <p class="descript">{{item.notes}}</p>
+              <p class="people">{{item.readcount}}人学习</p>
+            </div>
+          </div>
         </div>
+        <el-empty description="暂无数据" v-else></el-empty>
+        <!--分页-->
+        <pagination :total="total" :pageSize="param.content.pageSize" :currentPage="param.content.pageNumber"
+          @pageChange="pageChange">
+        </pagination>
+        <!--课程详情-->
+        <detail ref="detail" :currentSelectFile="currentSelectFile"
+          v-if="currentSelectFile"></detail>
       </div>
     </div>
-    <el-empty description="暂无数据" v-else></el-empty>
-    <!--分页-->
-    <pagination :total="total" :pageSize="param.content.pageSize" :currentPage="param.content.pageNumber"
-      @pageChange="pageChange">
-    </pagination>
-    <!--课程详情-->
-    <detail ref="detail" :currentSelectFile="currentSelectFile"
-      v-if="currentSelectFile && tool.checkAuth($route.name,'read')"></detail>
-  </div>
+</normalLayout>
+  
 </template>
 
 <script>
@@ -106,22 +107,8 @@ export default {
     this.getFileData()
   },
   methods: {
-    showAppCollection () {
-			let _isSame = this.menuApp.some(m=>this.activeApp.name === m.systemapp)
-			return _isSame
-    },
-    // 创建快捷应用
-    async addToAsideBar () {
-      const res = await this.$api.requested({
-        "classname": "sysmanage.develop.userauthforweb.userauth",
-        "method": "create_usershortcuts",
-        "content": {
-          "systemappid":this.activeApp.systemappid
-        }
-      })
-      console.log(res);
-      
-      this.$store.dispatch('setAppMenu')
+    inputChange () {
+
     },
     //获取列表数据
     async getFileData () {
@@ -148,6 +135,8 @@ export default {
       this.detail.content.sat_coursewareid = item.sat_coursewareid
       let res = await this.$api.requested(this.detail)
       this.currentSelectFile = res.data
+      console.log(this.currentSelectFile);
+      
       this.$nextTick(() => {
         this.$refs.detail.isFileInfoPanlShow = true
       })
@@ -173,7 +162,7 @@ export default {
   box-sizing: border-box;
 }
 .normal-card {
-  min-height: 100vh;
+  min-height: calc(100vh - 190px);
   box-sizing: border-box;
   position: relative;
 }