Browse Source

客户表彰上传

sunlupeng 1 year ago
parent
commit
77d73cbe1e
2 changed files with 96 additions and 21 deletions
  1. 36 0
      src/api/allApi.js
  2. 60 21
      src/views/HomeView/CiteList.vue

+ 36 - 0
src/api/allApi.js

@@ -1,5 +1,41 @@
 import request from '@/utils/request'
 
+// 字典列表
+export function dictList(query) {
+  return request({
+    url: '/system/dict/data/type',
+    method: 'get',
+    params:query
+  })
+}
+
+// 人员列表
+export function allUserList(query) {
+  return request({
+    url: '/sys/user/getAll',
+    method: 'post',
+    params:query
+  })
+}
+
+// 客户表彰列表
+export function citeList(query) {
+  return request({
+    url: '/customer/commend/user/page',
+    method: 'get',
+    params:query
+  })
+}
+
+//客户表彰上传
+export function uploadCite(data) {
+  return request({
+    url: '/customer/commend/upload',
+    method: 'post',
+    data
+  })
+}
+
 // 初始化积分领取
 export function lockStatus(query) {
   return request({

+ 60 - 21
src/views/HomeView/CiteList.vue

@@ -14,12 +14,31 @@
 
               </template>
             </el-table-column>
-            <el-table-column align="center" prop="categoryName" min-width="100" label="表彰类别"></el-table-column>
+            <el-table-column align="center" prop="typeName" min-width="100" label="表彰类型"></el-table-column>
+            <el-table-column align="center" min-width="100" label="表彰人员">
+              <template slot-scope="props">
+                <div v-for="(item, index) in props.row.groupUsers" :key="index">
+                    {{ item.userName }}
+                </div>
+              </template>
+            </el-table-column>
+            <el-table-column align="center" prop="customerName" min-width="100" label="客户名称"></el-table-column>
             <el-table-column align="center" prop="title" min-width="100" label="表彰名称"></el-table-column>
-            <!-- <el-table-column align="center" prop="integral" min-width="100" label="积分"></el-table-column> -->
-            <el-table-column min-width="60" align="center" prop="statusName" label="状态"></el-table-column>
+            <el-table-column min-width="150" align="center" prop="content" label="表彰描述"></el-table-column>
+            <el-table-column min-width="120" align="center" label="状态">
+              <template slot-scope="props">
+                <el-popover trigger="hover">
+                  <el-table :data="props.row.logs" border size="mini">
+                    <el-table-column min-width="80" align="center" prop="auditor" label="处理人"></el-table-column>
+                    <el-table-column min-width="160" align="center" prop="comment" label="处理结果"></el-table-column>
+                    <!-- <el-table-column min-width="120" align="center" prop="statusName" label="状态"></el-table-column> -->
+                    <el-table-column min-width="180" align="center" prop="createTime" label="处理时间"></el-table-column>
+                  </el-table>
+                  <span style="color: #1e80ff;cursor: pointer;" slot="reference">{{ props.row.statusName }}</span>
+                </el-popover>
+              </template>
+            </el-table-column>
             <el-table-column min-width="150" align="center" prop="createTime" label="上传时间"></el-table-column>
-            <el-table-column min-width="150" align="center" prop="content" label="备注"></el-table-column>
           </el-table>
           <!-- 分页 -->
           <div class="myPage">
@@ -38,10 +57,20 @@
     </div>
     <el-dialog title="上传表彰" :visible.sync="dialogVisible" width="40%">
       <el-form :rules="rules" ref="dataForm" :model="dataForm" label-width="100px">
-        <el-form-item label="表彰类别:" prop="type">
-          <el-cascader clearable size="small" style="width: 95%;" v-model="dataForm.type" :options="typeList"
-          :props="{ value: 'id',label: 'typeName',children: 'children'}"
-            @change="handleChange"></el-cascader>
+        <el-form-item label="表彰类型:" prop="type">
+          <el-select clearable size="small" style="width: 95%;" v-model="dataForm.type" placeholder="请选择表彰类型">
+            <el-option v-for="item in typeList" :key="item.dictValue" :label="item.dictLabel" :value="item.dictValue">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item v-if="dataForm.type=='1'" label="集体人员:" prop="groupIds">
+          <el-select size="small" v-model="dataForm.groupIds" multiple filterable placeholder="请选择" style="width: 95%;">
+            <el-option :key="item.loginId" v-for="item in recipientsList" :label="item.userName+'_'+item.employeNo" :value="item.loginId">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="客户名称:" prop="customerName">
+          <el-input clearable style="width: 95%;" size="small" v-model="dataForm.customerName"></el-input>
         </el-form-item>
         <el-form-item label="表彰名称:" prop="title">
           <el-input clearable style="width: 95%;" size="small" v-model="dataForm.title"></el-input>
@@ -64,19 +93,22 @@
   </div>
 </template>
 <script scoped>
-import { certificatePage, certificateUpload, notice, certificatType } from "@/api/allApi";
-import { handleTree } from '@/utils/index'
+import { notice, dictList, allUserList, citeList, uploadCite } from "@/api/allApi";
 export default {
   data() {
     return {
+      gridData: [],
       integralRules: '',
       typeList: [],
+      recipientsList:[],
       activeName: 'first',
       fileUrl: this.baseUrl,
       dataList: [],
       dialogVisible: false,
       rules: {
-        type: [{ required: true, message: "请选择表彰类别", trigger: "blur" }],
+        type: [{ required: true, message: "请选择表彰类型", trigger: "blur" }],
+        groupIds: [{ required: true, message: "请选择集体人员", trigger: "blur" }],
+        customerName: [{ required: true, message: "请填写客户名称", trigger: "blur" }],
         title: [{ required: true, message: "请填写表彰名称", trigger: "blur" }],
         fileIds: [{ required: true, message: "请上传附件", trigger: "blur" }],
         content: [{ required: true, message: "请填写表彰描述", trigger: "blur" }],
@@ -87,7 +119,9 @@ export default {
         limit: 10,
       },
       dataForm: {
-        type: [],
+        type: '',
+        groupIds:[],
+        customerName:'',
         title:'',
         fileIds: '',
         files:[],
@@ -97,16 +131,21 @@ export default {
   },
   created() {
     this.getTypeList();
-    // this.getDataList();
-    this.getIntegralNotice();
+    this.getAllUserList();
+    this.getDataList();
+    // this.getIntegralNotice();
   },
   methods: {
     getTypeList(){
-      certificatType().then(response => {
-          this.typeList = handleTree(response.data.data);
-          console.log(this.typeList);
-        })
-      },
+      dictList({dictType:'customer_treward_type'}).then(response=>{
+                this.typeList = response.data.data; 
+            })
+    },
+    getAllUserList() {
+            allUserList().then(response => {
+                this.recipientsList = response.data.data;
+            }).catch(() => {});
+        },
     handleClick(tab, event) {
       console.log(tab.name, event);
     },
@@ -161,7 +200,7 @@ export default {
     submitForm() {
       this.$refs['dataForm'].validate((valid) => {
         if (valid) {
-          certificateUpload(this.dataForm)
+          uploadCite(this.dataForm)
             .then((response) => {
               this.dialogVisible = false;
               this.$notify({
@@ -182,7 +221,7 @@ export default {
       });
     },
     getDataList() {
-      certificatePage(this.listQuery).then(response => {
+      citeList(this.listQuery).then(response => {
         this.dataList = response.data.data.items;
         this.total = response.data.data.total;
       })