whj 1 年之前
父节点
当前提交
8cc1e0ce40

+ 13 - 1
src/api/preparation/preparation.js

@@ -48,7 +48,19 @@ export function updatePreparation (parameter) {
     data: parameter
   })
 }
-
+/**
+ * update func
+ * parameter: { }
+ * @param parameter
+ * @returns {*}
+ */
+export function updatePreparationFee (parameter) {
+  return axios({
+    url: '/preparation/preparations/actual/fee/' + parameter.id,
+    method: 'PUT',
+    data: parameter
+  })
+}
 /**
  * fetch single func
  * parameter: { }

+ 3 - 3
src/views/idle-assets/modules/BaseForm.vue

@@ -160,15 +160,15 @@ export default {
     },
     handleSbSelectd (rows) {
       const sbInfoDTOS = rows.map(item => {
-        if (this.sbInfoDTOS.includes(sb => sb.id === item.id)) {
-          console.log(22)
+        if (this.sbInfoDTOS.length > 0 && this.sbInfoDTOS.find(sb => sb.id === item.id)) {
           return
         }
         return {
           id: item.id,
           name: item.name,
           no: item.no,
-          positionNo: item.positionNo
+          positionNo: item.positionNo,
+          sbFileList: []
         }
       })
       this.sbInfoDTOS = [...sbInfoDTOS, ...this.sbInfoDTOS].filter(item => item)

+ 11 - 2
src/views/idle-assets/modules/Detail.vue

@@ -18,7 +18,16 @@
       :data-source="modal.sbUnusedDetailVOS"
     >
       <template #action="record">
-        <a @click="handleView(record)">查看图片</a>
+        <div v-if="record.usedFileList != null && record.usedFileList.length > 0">
+          <viewer :images="record.usedFileList" @inited="inited" ref="viewer" :index="1" >
+            <img
+              v-for="item in record.usedFileList"
+              :src="item.url"
+              :key="item.id"
+              class="image"
+              width="200px"
+              style="margin:10px;">
+          </viewer></div>
       </template>
     </a-table>
     <title-divider title="审核流程" width="90px"></title-divider>
@@ -81,7 +90,7 @@ export default {
           key: 'positionName'
         },
         {
-          title: '操作',
+          title: '图片',
           key: 'action',
           checked: true,
           align: 'center',

+ 1 - 1
src/views/idle-assets/modules/UpLoad.vue

@@ -52,6 +52,7 @@ export default {
           item.id = i
           return item
         }))
+        return
       }
       if (!record.sbFileList) {
         record.sbFileList = []
@@ -94,7 +95,6 @@ export default {
       this.previewVisible = true
     },
     handleCancel () {
-      this.modal = {}
       this.visible = false
     }
   }

+ 0 - 1
src/views/preparation/preparation/Preparation.vue

@@ -277,7 +277,6 @@ export default {
       modal.base(null, this.companyList)
     },
     handleEdit (record) {
-      this.visible = false
       fetchPreparation({ id: record.id }).then(res => {
         const modal = this.$refs.baseModal
         modal.base(res.data, this.companyList)

+ 91 - 5
src/views/preparation/preparation/modules/BaseForm.vue

@@ -89,7 +89,7 @@
             :labelCol="BaseTool.Constant.labelCol"
             :wrapperCol="BaseTool.Constant.wrapperCol"
           >
-            <a-select v-decorator="['applyVerifyUserId', { rules: [{required: true, message: '审批主管不能为空'}]}]" placeholder="请选择">
+            <a-select v-decorator="['applyVerifyUserId']" placeholder="请选择">
               <a-select-option
                 v-for="({realName,userId}) in verifyUserList"
                 :key="userId"
@@ -131,6 +131,20 @@
               v-decorator="['fee']" />
           </a-form-item>
         </row-item>
+        <row-item>
+          <a-form-item
+            label="实际费用"
+            :labelCol="BaseTool.Constant.labelCol"
+            :wrapperCol="BaseTool.Constant.labelCol"
+          >
+            <a-input-number
+              style="width: 100%"
+              :min="0"
+              :formatter="BaseTool.Amount.formatter"
+              :parser="BaseTool.Amount.parser"
+              v-decorator="['actualFee']" />
+          </a-form-item>
+        </row-item>
       </row-list>
       <row-list :col="1">
         <row-item>
@@ -146,6 +160,44 @@
         </row-item>
       </row-list>
       <row-list :col="1">
+        <row-item>
+          <a-form-item
+            label="相关图片"
+            :labelCol="BaseTool.Constant.labelCol2"
+            :wrapperCol="BaseTool.Constant.wrapperCol2"
+          >
+            <a-upload
+              :action="uploadUrl"
+              :multiple="true"
+              list-type="picture"
+              :file-list="defaultRepairFileList"
+              @change="handleRepairFileChange"
+              accept="image/*"
+              :headers="headers"
+            >
+              <a-button> <a-icon type="upload" /> 上传图片 </a-button>
+            </a-upload>
+          </a-form-item>
+        </row-item>
+        <row-item>
+          <a-form-item
+            label="相关文件"
+            :labelCol="BaseTool.Constant.labelCol2"
+            :wrapperCol="BaseTool.Constant.wrapperCol2"
+          >
+            <a-upload
+              :action="uploadUrl"
+              :multiple="true"
+              :file-list="defaultFileList"
+              @change="handleFileChange"
+              :headers="headers"
+            >
+              <a-button> <a-icon type="upload" /> 上传文件 </a-button>
+            </a-upload>
+          </a-form-item>
+        </row-item>
+      </row-list>
+      <!-- <row-list :col="1">
         <row-item>
           <a-form-item
             label="申请原因"
@@ -170,7 +222,7 @@
               v-decorator="['remark']"/>
           </a-form-item>
         </row-item>
-      </row-list>
+      </row-list> -->
     </a-form>
     <template slot="footer">
       <a-popconfirm title="确认要提交?" @confirm="save()">
@@ -186,7 +238,9 @@ import { addPreparation, updatePreparation } from '@/api/preparation/preparation
 import { queryUserByRoleSelfDeptName } from '@/api/upms/user'
 import { getDeptTreePreparation } from '@/api/upms/dept'
 import { queryBuilding } from '@/api/preparation/building'
-
+import { uploadUrl } from '@/api/upms/file'
+import Vue from 'vue'
+import { ACCESS_TOKEN } from '@/store/mutation-types'
 export default {
   name: 'BasePreparation',
   data () {
@@ -199,7 +253,16 @@ export default {
       verifyUserList: [],
       executeDeptList: {},
       saveTitle: null,
-      companyList: []
+      companyList: [],
+      headers: {
+        Authorization: 'Bearer ' + Vue.ls.get(ACCESS_TOKEN)
+      },
+      uploadUrl: uploadUrl,
+      defaultRepairFileList: [],
+      repairFileList: [], // 维修图片,
+      defaultFileList: [], // 维修文件
+      fileList: [],
+      userList: []
       // 下拉框map
     }
   },
@@ -228,6 +291,26 @@ export default {
         this.executeDeptList = res.data
       })
     },
+    handleFileChange (info) {
+      this.defaultFileList = info.fileList
+      this.fileList = this.setFileList(info, 19)
+    },
+    handleRepairFileChange (info) {
+      this.defaultRepairFileList = info.fileList
+      this.repairFileList = this.setFileList(info, 12)
+    },
+    setFileList (info, type) {
+      const file = info.file
+      const fileList = info.fileList
+      if (file.status === 'done') {
+        return this.BaseTool.UPLOAD.getUploadFileDTO(fileList, type)
+      } else if (file.status === 'removed') {
+        return this.BaseTool.UPLOAD.getUploadFileDTO(fileList, type)
+      } else if (file.status === 'error') {
+        this.$message.error('上传失败')
+        return []
+      }
+    },
     base (record, companyList) {
       this.visible = true
       this.companyList = companyList
@@ -270,7 +353,8 @@ export default {
           'applyReason',
           'parentPositionId',
           'applyVerifyUserId',
-          'receiveDept'
+          'receiveDept',
+          'actualFee'
         ])))
       })
     },
@@ -289,6 +373,8 @@ export default {
           return
         }
         // 日期处理
+        values.imageList = this.repairFileList
+        values.fileList = this.fileList // 维修文件
         values.applyTime = this.BaseTool.Date.formatter(values.applyTime, this.BaseTool.Date.PICKER_NORM_DATETIME_PATTERN)
         values.limitHours = this.BaseTool.Date.formatter(values.limitHours, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
         if (this.BaseTool.String.isBlank(values.id)) {

+ 14 - 0
src/views/preparation/preparation/modules/Detail.vue

@@ -25,6 +25,9 @@
       <a-descriptions-item label="执行结束时间">{{ model.repairEndTime }}</a-descriptions-item>
       <a-descriptions-item label="执行时长">{{ model.repairMinutes }}</a-descriptions-item>
       <a-descriptions-item label="费用预算">{{ model.fee }}</a-descriptions-item>
+      <a-descriptions-item label="实际费用">
+        <a-input-number v-model="model.actualFee" @blur="feeChange" />
+      </a-descriptions-item>
       <a-descriptions-item label="费用描述" :span="3"> <span v-html="model.feeContent "></span></a-descriptions-item>
       <a-descriptions-item label="执行描述" :span="3"> <span v-html="model.repairContent "></span></a-descriptions-item>
       <a-descriptions-item label="完成情况" :span="3"> <span v-html="model.finishContent "></span></a-descriptions-item>
@@ -74,6 +77,7 @@
 </template>
 
 <script>
+import { updatePreparationFee } from '@/api/preparation/preparation'
 import DetailList from '@/components/tools/DetailList'
 import DispatchForm from './DispatchForm'
 import FeeForm from './FeeForm'
@@ -155,6 +159,16 @@ export default {
       this.confirmLoading = false
       this.$emit('ok')
     },
+    feeChange () {
+      updatePreparationFee({
+        id: this.model.id,
+        actualFee: this.model.actualFee
+      }).then(res => {
+        this.$message.success('修改成功!')
+      }).catch(() => {
+        this.$message.error('修改失败!')
+      })
+    },
     handleAssign () {
       const modal = this.$refs.feeForm
       modal.base(this.model)

+ 12 - 2
src/views/preparation/preparation/modules/FinishForm.vue

@@ -11,7 +11,16 @@
       <a-form-item v-show="false" >
         <a-input v-decorator="['id']" type="hidden"/>
       </a-form-item>
-
+      <row-item>
+        <a-form-item
+          label="实际费用"
+          :labelCol="BaseTool.Constant.labelCol2"
+          :wrapperCol="BaseTool.Constant.wrapperCol2"
+        >
+          <a-input
+            v-decorator="['actualFee']" />
+        </a-form-item>
+      </row-item>
       <row-list :col="1">
         <row-item>
           <a-form-item
@@ -62,7 +71,8 @@ export default {
       const { form: { setFieldsValue } } = this
       this.$nextTick(() => {
         setFieldsValue(Object.assign(pick(record, [
-          'id'
+          'id',
+          'actualFee'
         ])))
       })
     },

+ 1 - 0
src/views/workplace/backlog/WorkplaceBacklog.vue

@@ -105,6 +105,7 @@
           rowKey="id"
           :columns="columns"
           :data="loadData"
+          :scroll="{x: 1, y: BaseTool.Constant.scrollY }"
           showPagination="auto"
         >
           <span slot="action" slot-scope="record">