Z 1 anno fa
parent
commit
351dda8305

+ 6 - 1
lib/vue-form-making/src/components/WidgetConfig.vue

@@ -154,7 +154,12 @@
         <el-form-item :label="$t('fm.config.widget.checkStrictly')" v-if="Object.keys(data.options).indexOf('checkStrictly')>=0">
           <el-switch v-model="data.options.checkStrictly"></el-switch>
         </el-form-item>
-        <el-form-item v-if="(data.type=='deptCascader'||data.type=='userSelect')&&!data.options.multiple" :label="$t('fm.config.widget.isDefaultLoginUser')">
+        <el-form-item v-if="(data.type=='deptCascader')&&!data.options.multiple" :label="$t('fm.config.widget.isDefaultLoginDept')">
+          <el-switch
+            v-model="data.options.isDefaultLoginUser">
+          </el-switch>
+        </el-form-item>
+        <el-form-item v-if="(data.type=='userSelect')&&!data.options.multiple" :label="$t('fm.config.widget.isDefaultLoginUser')">
           <el-switch
             v-model="data.options.isDefaultLoginUser">
           </el-switch>

+ 1 - 0
lib/vue-form-making/src/lang/zh-CN.js

@@ -318,6 +318,7 @@ export default {
         acceptPlaceholder: '为空表示不限制;多种格式以逗号分隔',
         selection: '多选',
         isDefaultLoginUser: '是否默认当前登录人',
+        isDefaultLoginDept: '是否默认当前登录人所属部门',
       }
     },
     upload: {

+ 1 - 0
src/BIZComponents/processSubmitDialog/processSubmitDialog.vue

@@ -635,6 +635,7 @@ this.postOptions.push(...response.data);
     max-height: 500px;
     min-width: 400px;
     overflow: auto;
+    background: #4298fd0d;
   }
   ::v-deep .el-dialog {
     min-width: 400px;

+ 107 - 29
src/views/bpm/collaborative/index.vue

@@ -16,7 +16,7 @@
                 className="svg-icon-set"
               ></svg-icon>
               <span>
-              {{ v.name.length>3?v.name[0]+v.name[1]+v.name[2]+'...':v.name }}
+              {{ v.name.length > 3 ? v.name[0] + v.name[1] + v.name[2] + '...' : v.name }}
             </span>
             </div>
           </div>
@@ -43,10 +43,20 @@
                     @submit.native.prevent
                   >
                     <el-row :gutter="15" style="display: flex;align-items: center">
-                      <el-col v-bind="{ span: 3 }">
+                      <el-col v-bind="{ span: 4 }">
                         <el-form-item label="分类:" label-width="60px">
+                          <el-select v-model="params.dictType">
+                            <el-option v-for="(item,index) in dictList['collaborative_type']" :key="index"
+                                       :value="item.value"
+                                       :label="item.label"></el-option>
+                          </el-select>
+                        </el-form-item>
+                      </el-col>
+                      <el-col v-bind="{ span: 4 }">
+                        <el-form-item label="单据:" label-width="60px">
                           <el-select v-model="params.formId">
-                            <el-option v-for="(item,index) in defaultTemplateList" :key="index" :value="item.id"
+                            <el-option v-for="(item,index) in templateList[params.dictType]" :key="index"
+                                       :value="item.id"
                                        :label="item.name"></el-option>
                           </el-select>
                         </el-form-item>
@@ -73,7 +83,7 @@
                           </DictSelection>
                         </el-form-item>
                       </el-col>
-                      <el-col v-bind="styleResponsive ? { lg: 8, md: 12 } : { span: 10 }">
+                      <el-col v-bind="{ span: 10 }">
                         <el-form-item label="创建时间:" prop="createTime" label-width="90px">
                           <el-date-picker
                             v-model="params.createTime"
@@ -113,6 +123,9 @@
                 </el-tag>
 
               </template>
+              <template v-slot:dictType="{ row }">
+                {{getDictV('collaborative_type',row.dictType)}}
+              </template>
               <template v-slot:durationInMillis="{ row }">
                 {{ getDateTime(row.durationInMillis) }}
               </template>
@@ -133,7 +146,8 @@
                   </el-image>
                 </div>
                 <div v-else-if="item.type=='fileupload'">
-                  <el-button type="text" @click="getFiles(row[item.model])">下载</el-button>
+                  <el-button type="text" v-if="row[item.model]?.length" @click="getFiles(row[item.model])">下载
+                  </el-button>
                 </div>
 
                 <div v-else-if="item.type=='userSelect'">
@@ -183,8 +197,18 @@
                     @submit.native.prevent
                   >
                     <el-row :gutter="15" style="display: flex;align-items: center">
-                      <el-col v-bind="{ span: 3 }">
+
+                      <el-col v-bind="{ span: 4 }">
                         <el-form-item label="分类:" label-width="60px">
+                          <el-select v-model="params.dictType">
+                            <el-option v-for="(item,index) in dictList['collaborative_type']" :key="index"
+                                       :value="item.value"
+                                       :label="item.label"></el-option>
+                          </el-select>
+                        </el-form-item>
+                      </el-col>
+                      <el-col v-bind="{ span: 4 }">
+                        <el-form-item label="单据:" label-width="60px">
                           <el-select v-model="params.formId">
                             <el-option v-for="(item,index) in defaultTemplateList" :key="index" :value="item.id"
                                        :label="item.name"></el-option>
@@ -218,7 +242,7 @@
                           <el-input v-model="params.startUserName"></el-input>
                         </el-form-item>
                       </el-col>
-                      <el-col v-bind="{ span: 10 }">
+                      <el-col v-bind="{ span: 6 }">
                         <el-form-item label="创建时间:" prop="createTime" label-width="90px">
                           <el-date-picker
                             v-model="params.createTime"
@@ -252,6 +276,9 @@
                   </div>
                 </div>
               </template>
+              <template v-slot:dictType="{ row }">
+                {{getDictV('collaborative_type',row.dictType)}}
+              </template>
               <template v-if="formColumnList.length" v-for="(item,index) in formColumnList"
                         v-slot:[item.model]="{ row }">
                 <div v-if="item.type=='imgupload'">
@@ -263,7 +290,8 @@
                   </el-image>
                 </div>
                 <div v-else-if="item.type=='fileupload'">
-                  <el-button type="text" @click="getFiles(row[item.model])">下载</el-button>
+                  <el-button type="text" v-if="row[item.model]?.length" @click="getFiles(row[item.model])">下载
+                  </el-button>
                 </div>
                 <div v-else-if="item.type=='userSelect'">
                   {{ getUserName(row[item.model]) }}
@@ -326,7 +354,16 @@
                     @submit.native.prevent
                   >
                     <el-row :gutter="15" style="display: flex;align-items: center">
-                      <el-col v-bind="{ span: 3 }">
+                      <el-col v-bind="{ span: 4 }">
+                        <el-form-item label="单据:" label-width="60px">
+                          <el-select v-model="params.dictType">
+                            <el-option v-for="(item,index) in dictList['collaborative_type']" :key="index"
+                                       :value="item.value"
+                                       :label="item.label"></el-option>
+                          </el-select>
+                        </el-form-item>
+                      </el-col>
+                      <el-col v-bind="{ span: 4 }">
                         <el-form-item label="分类:" label-width="60px">
                           <el-select v-model="params.formId">
                             <el-option v-for="(item,index) in defaultTemplateList" :key="index" :value="item.id"
@@ -361,7 +398,7 @@
                           <el-input v-model="params.startUserName"></el-input>
                         </el-form-item>
                       </el-col>
-                      <el-col v-bind="{ span: 10 }">
+                      <el-col v-bind="{ span: 6 }">
                         <el-form-item label="创建时间:" prop="createTime" label-width="90px">
                           <el-date-picker
                             v-model="params.createTime"
@@ -395,6 +432,9 @@
                   </div>
                 </div>
               </template>
+              <template v-slot:dictType="{ row }">
+                {{getDictV('collaborative_type',row.dictType)}}
+              </template>
               <template v-if="formColumnList.length" v-for="(item,index) in formColumnList"
                         v-slot:[item.model]="{ row }">
                 <div v-if="item.type=='imgupload'">
@@ -406,7 +446,8 @@
                   </el-image>
                 </div>
                 <div v-else-if="item.type=='fileupload'">
-                  <el-button type="text" @click="getFiles(row[item.model])">下载</el-button>
+                  <el-button type="text" v-if="row[item.model]?.length" @click="getFiles(row[item.model])">下载
+                  </el-button>
                 </div>
                 <div v-else-if="item.type=='userSelect'">
                   {{ getUserName(row[item.model]) }}
@@ -458,7 +499,8 @@
                            ref="processSubmitDialogRef" @reload="reload"></process-submit-dialog>
 
     <detail ref="detailRef"></detail>
-    <formDetail v-if="formDetailDialogFlag" ref="formDetailDialogRef" :form-detail-dialog-flag.sync="formDetailDialogFlag"></formDetail>
+    <formDetail v-if="formDetailDialogFlag" ref="formDetailDialogRef"
+                :form-detail-dialog-flag.sync="formDetailDialogFlag"></formDetail>
   </div>
 </template>
 <script>
@@ -479,6 +521,7 @@ import {getUserPage} from '@/api/tickets';
 import {listOrganizations} from "@/api/system/organization";
 // 默认表单数据
 const defaultParams = {
+  dictType: '',
   status: '',
   name: '',
   formId: ''
@@ -532,12 +575,20 @@ export default {
           fixed: 'left'
         },
         {
-          prop: 'formName',
+          prop: 'dictType',
           label: '分类',
           align: 'center',
+          slot: 'dictType',
+          showOverflowTooltip: true,
+          minWidth: 70
+        },
+        {
+          prop: 'formName',
+          label: '单据',
+          align: 'center',
           slot: 'formName',
           showOverflowTooltip: true,
-          minWidth: 100
+          minWidth: 70
         },
         {
           prop: 'name',
@@ -545,7 +596,7 @@ export default {
           align: 'center',
           slot: 'name',
           showOverflowTooltip: true,
-          minWidth: 100
+          minWidth: 80
         },
         ...list,
         {
@@ -554,21 +605,21 @@ export default {
           label: '结果',
           align: 'center',
           showOverflowTooltip: true,
-          minWidth: 100
+          minWidth: 80
         },
         {
           prop: 'endTime',
           label: '审批时间',
           align: 'center',
           showOverflowTooltip: true,
-          minWidth: 180
+          minWidth: 120
         },
         {
           prop: 'createTime',
           label: '创建时间',
           align: 'center',
           showOverflowTooltip: true,
-          minWidth: 180
+          minWidth: 120
         },
 
         // {
@@ -613,12 +664,20 @@ export default {
           fixed: 'left'
         },
         {
-          prop: 'formName',
+          prop: 'dictType',
           label: '分类',
           align: 'center',
+          slot: 'dictType',
+          showOverflowTooltip: true,
+          minWidth: 70
+        },
+        {
+          prop: 'formName',
+          label: '单据',
+          align: 'center',
           slot: 'formName',
           showOverflowTooltip: true,
-          minWidth: 150
+          minWidth: 70
         },
         {
           prop: 'name',
@@ -689,16 +748,16 @@ export default {
     getDeptAndUserName() {
       return (id = []) => {
         if (!id.length) return ''
+        id = Array.isArray(id) ? id : [id]
         let find = this.userList.find(item => item.id == id[id.length - 1]) || {}
         return find.name
       }
     },
     getDeptName() {
       return (id = []) => {
-
         if (!id.length) return ''
+        id =  Array.isArray(id) ? id : [id]
         let find = this.deptList.find(item => item.id == id[id.length - 1]) || {}
-        console.log(find.name,'===========');
         return find.name
       }
     },
@@ -712,7 +771,16 @@ export default {
         this.reload()
         this.noticeReload()
       }
-    }
+    },
+    'params.dictType': {
+      handler(val) {
+        this.params.formId = this.templateList[val][0].id
+        this.reload()
+        this.deptReload()
+        this.reload()
+        this.noticeReload()
+      }
+    },
   },
   async created() {
     await this.getDictList('collaborative_type')
@@ -744,7 +812,6 @@ export default {
     //获取部门数据
     async getDeptList() {
       this.deptList = await listOrganizations()
-      console.log(this.deptList);
     },
     getFiles(row = []) {
       row.forEach(item => {
@@ -753,9 +820,10 @@ export default {
 
     },
     async getTemplateList() {
-      this.defaultTemplateList = await getBpmCustomFormList({status:1})
+      this.defaultTemplateList = await getBpmCustomFormList({status: 1})
       this.templateList = _.groupBy(this.defaultTemplateList, 'dictType');
-      this.params.formId = this.defaultTemplateList[0]?.id
+      this.params.dictType = this.dictList['collaborative_type'][0].value;
+      this.params.formId = this.defaultTemplateList[0]?.id;
       let makingJson = JSON.parse(this.defaultTemplateList[0].formJson.makingJson) || {}
       this.formColumnList = makingJson.list
       console.log(this.formColumnList);
@@ -789,7 +857,6 @@ export default {
       let find = this.defaultTemplateList.find(item => item.id == this.params.formId) || {};
       let makingJson = JSON.parse(find.formJson.makingJson) || {}
       this.formColumnList = makingJson.list
-      console.log(this.formColumnList);
       this.$refs.table.reload({page: 1, where});
       this.$refs.table.reRenderTable()
     },
@@ -798,6 +865,7 @@ export default {
     reset() {
       this.params = {...defaultParams};
       this.params.formId = this.defaultTemplateList[0]?.id
+      this.params.dictType = this.dictList['collaborative_type'][0].value;
       this.reload();
     },
     /* 表格数据源 */
@@ -829,6 +897,7 @@ export default {
     deptReset() {
       this.params = {...defaultParams};
       this.params.formId = this.defaultTemplateList[0]?.id
+      this.params.dictType = this.dictList['collaborative_type'][0].value;
       this.deptReload();
     },
     /* 表格数据源 */
@@ -860,6 +929,7 @@ export default {
     noticeReset() {
       this.params = {...defaultParams};
       this.params.formId = this.defaultTemplateList[0]?.id
+      this.params.dictType = this.dictList['collaborative_type'][0].value;
       this.noticeReload();
     },
     /**  */
@@ -869,7 +939,7 @@ export default {
     /**  */
     handleDetail(row) {
       this.formDetailDialogFlag = true
-      this.$nextTick(()=>{
+      this.$nextTick(() => {
         this.$refs.formDetailDialogRef.open(row);
       })
 
@@ -918,6 +988,7 @@ export default {
     flex: 1 0 25%;
     margin-top: 5px;
     overflow: auto;
+
     .category_box_title {
       font-size: 14px;
       font-weight: bold;
@@ -936,6 +1007,7 @@ export default {
       flex-wrap: wrap;
       height: 60px;
       overflow: auto;
+
       .category_content {
         min-width: 60px;
         min-height: 60px;
@@ -946,7 +1018,7 @@ export default {
         border-bottom: 1px solid #e1e1e1;
         align-items: center;
         justify-content: center;
-      //  font-weight: bold;
+        //  font-weight: bold;
 
         &:nth-child(n) {
           span:nth-child(1) {
@@ -967,6 +1039,7 @@ export default {
     }
 
   }
+
   .category_box:last-child {
     border-right: 1px solid #e1e1e1;
   }
@@ -991,4 +1064,9 @@ export default {
   }
 }
 
+::v-deep .ele-table-tool {
+  display: flex;
+  flex-direction: row;
+  flex-wrap: nowrap !important;
+}
 </style>