sunlupeng 1 год назад
Родитель
Сommit
f9ea3abb54

+ 45 - 41
src/views/oa/expense/DataList.vue

@@ -1,39 +1,42 @@
 <template>
   <div class="container">
     <el-form :model="queryParams" ref="queryForm" v-show="showSearch" :inline="true" label-width="80px">
-      <el-form-item label="申请人" prop="employeeName">
+      <el-form-item label="报销人" prop="employeeName">
         <el-input v-model="queryParams.employeeName" placeholder="请输入申请人" clearable style="width: 250px"
-                  @keyup.enter.native="handleQuery"/>
+          @keyup.enter.native="handleQuery" />
       </el-form-item>
       <el-form-item label="部门" prop="deptId">
-        <treeselect style="width: 250px" :default-expand-level="1" v-model="queryParams.deptId" :options="deptOptions" :normalizer="normalizer" placeholder="选择部门" />
+        <treeselect style="width: 250px" :default-expand-level="1" v-model="queryParams.deptId" :options="deptOptions"
+          :normalizer="normalizer" placeholder="选择部门" />
       </el-form-item>
       <el-form-item label="职位" prop="position">
-        <el-select v-model="queryParams.position" placeholder="请选择"
-        style="width: 250px">
+        <el-select v-model="queryParams.position" placeholder="请选择" style="width: 250px">
           <el-option v-for="item in posOptions" :key="item.value" :label="item.label" :value="item.value">
           </el-option>
         </el-select>
       </el-form-item>
       <el-form-item label="手机号" prop="employeePhone">
         <el-input v-model="queryParams.employeePhone" placeholder="请输入手机号" clearable style="width: 250px"
-                  @keyup.enter.native="handleQuery"/>
+          @keyup.enter.native="handleQuery" />
       </el-form-item>
-      <el-form-item label="供应商" prop="supplier">
-        <el-input v-model="queryParams.supplier" placeholder="请输入预期供应商" clearable style="width: 250px"
-                  @keyup.enter.native="handleQuery"/>
+      <el-form-item label="报销类型" prop="expenseTypeId">
+        <el-select v-model="queryParams.expenseTypeId" placeholder="请选择" style="width: 250px">
+          <el-option v-for="item in posOptions" :key="item.value" :label="item.label" :value="item.value">
+          </el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="申请时间" prop="createTime">
+        <el-date-picker v-model="queryParams.createTime" style="width: 250px" value-format="yyyy-MM-dd HH:mm:ss"
+          type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"
+          :default-time="['00:00:00', '23:59:59']" />
       </el-form-item>
-          <el-form-item label="申请时间" prop="createTime">
-            <el-date-picker v-model="queryParams.createTime" style="width: 250px" value-format="yyyy-MM-dd HH:mm:ss"
-              type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"
-              :default-time="['00:00:00', '23:59:59']" />
-          </el-form-item>
       <el-form-item label="审批状态" prop="auditStatus">
         <el-select v-model="queryParams.auditStatus" placeholder="审批状态" clearable style="width: 250px">
-          <el-option v-for="dict in this.getDictDatas(DICT_TYPE.BPM_TASK_AUDIT_STATUS)" :key="parseInt(dict.value)" :label="dict.label" :value="parseInt(dict.value)"/>
+          <el-option v-for="dict in this.getDictDatas(DICT_TYPE.BPM_TASK_AUDIT_STATUS)" :key="parseInt(dict.value)"
+            :label="dict.label" :value="parseInt(dict.value)" />
         </el-select>
       </el-form-item>
-     
+
       <el-form-item label="">
         <el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
         <el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
@@ -43,33 +46,34 @@
     <el-row :gutter="10" class="mb8">
       <el-col :span="1.5">
         <el-button type="warning" icon="el-icon-download" @click="handleExport" :loading="exportLoading"
-                   v-hasPermi="['system:role:export']">导出</el-button>
+          v-hasPermi="['system:role:export']">导出</el-button>
       </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
     <el-table v-loading="loading" :data="dataList" @row-click="handdle">
-      <el-table-column label="申请人" align="center" prop="employeeName" min-width="100" />
+      <el-table-column label="报销人" align="center" prop="employeeName" min-width="100" />
       <el-table-column label="部门" align="center" prop="deptName" min-width="100" />
       <el-table-column label="职位" align="center" prop="position" min-width="100" />
       <el-table-column label="手机号" align="center" prop="employeePhone" min-width="100" />
-      <el-table-column label="总预算金额(元)" align="center" prop="sunMoney" min-width="100" />
-      <el-table-column label="预期供应商" align="center" prop="supplier" min-width="150" />
-      <el-table-column label="申请时间"  align="center" prop="createTime" min-width="150">
+      <el-table-column label="报销类型" align="center" prop="expenseTypeName" min-width="100" />
+      <el-table-column label="费用所属期间" align="center" prop="expenseMonth" min-width="100" />
+      <el-table-column label="报销总金额(元)" align="center" prop="totalMoney" min-width="100" />
+      <el-table-column label="申请时间" align="center" prop="createTime" min-width="150">
         <template v-slot="scope">
           <span>{{ parseTime(scope.row.createTime) }}</span>
         </template>
       </el-table-column>
       <el-table-column label="审批状态" align="center" prop="auditStatus" min-width="100">
         <template v-slot="scope">
-          <dict-tag :type="DICT_TYPE.BPM_TASK_AUDIT_STATUS" :value="scope.row.auditStatus"/>
+          <dict-tag :type="DICT_TYPE.BPM_TASK_AUDIT_STATUS" :value="scope.row.auditStatus" />
         </template>
       </el-table-column>
       <el-table-column label="当前处理人" align="center" prop="currentAuditEmployeeName" min-width="100" />
     </el-table>
 
-    <pagination v-show="total>0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize"
-                @pagination="getList"/>
+    <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize"
+      @pagination="getList" />
 
     <!-- 修改 -->
     <el-dialog title="报销申请(修改)" :visible.sync="openEdit" width="800px" v-loading="detailLoading">
@@ -83,7 +87,7 @@
 </template>
 
 <script>
-import { getListData,exportList }  from "@/api/oa/receive"
+import { getListData, exportList } from "@/api/oa/expense"
 import detail from "./detail.vue";
 import edit from "./edit.vue";
 import Treeselect from "@riophae/vue-treeselect";
@@ -99,9 +103,9 @@ export default {
   },
   data() {
     return {
-      detailLoading:false,
-        posOptions: [],
-      id:'',
+      detailLoading: false,
+      posOptions: [],
+      id: '',
       // 遮罩层
       loading: true,
       // 导出遮罩层
@@ -124,7 +128,7 @@ export default {
         deptId: undefined,
         position: undefined,
         employeePhone: undefined,
-        supplier: undefined,
+        expenseTypeId: undefined,
         auditStatus: undefined,
         createTime: []
       },
@@ -135,8 +139,8 @@ export default {
     this.getListDept();
   },
   methods: {
-      /** 查询部门列表 */
-      getListDept() {
+    /** 查询部门列表 */
+    getListDept() {
       listDept().then(response => {
         this.deptOptions = this.handleTree(response.data, "id");
       });
@@ -154,9 +158,9 @@ export default {
     },
     handdle(row) {
       this.id = row.id;
-      if(row.auditStatus==0){
+      if (row.auditStatus == 0) {
         this.openEdit = true;
-      }else{
+      } else {
         this.openDetail = true;
       }
     },
@@ -189,20 +193,20 @@ export default {
 
 
 
- 
+
 
 
 
     /** 导出按钮操作 */
     handleExport() {
       const queryParams = this.queryParams;
-      this.$modal.confirm('是否确认导出所有数据项?').then(function() {
-          this.exportLoading = true;
-          return exportList(queryParams);
-        }).then(response => {
-          this.$download.excel(response, '报销申请数据.xls');
-          this.exportLoading = false;
-      }).catch(() => {});
+      this.$modal.confirm('是否确认导出所有数据项?').then(function () {
+        this.exportLoading = true;
+        return exportList(queryParams);
+      }).then(response => {
+        this.$download.excel(response, '报销申请数据.xls');
+        this.exportLoading = false;
+      }).catch(() => { });
     }
   }
 };

+ 27 - 26
src/views/oa/expense/detail.vue

@@ -3,7 +3,7 @@
     <div class="widget-list" v-loading="loading">
       <div class="fx-field x-grid-col-12">
         <div class="field-label">
-          <div class="field-name">申请人</div>
+          <div class="field-name">报销人</div>
         </div>
         <div class="field-component">
           <span :title="form.loginName">{{ form.employeeName }}</span>
@@ -34,46 +34,47 @@
           <span :title="form.employeePhone">{{ form.employeePhone }}</span>
         </div>
       </div>
-      <div class="fx-field x-grid-col-12">
-        <!-- <div class="field-label">
-          <div class="field-name">领用清单</div>
-        </div> -->
-        <el-table border :header-cell-style="{ 'text-align': 'center' }" :cell-style="{ 'text-align': 'center' }"
-          :data="form.oaReceiveObjs" ref="table" style="width: 100%">
-          <el-table-column label="采购物资名称" prop="name" />
-          <el-table-column label="采购数量" prop="amount" width="150" />
-          <el-table-column label="预算金额(元)" prop="money" />
-        </el-table>
-      </div>
-
       <div class="fx-field x-grid-col-12">
         <div class="field-label">
-          <div class="field-name">总预算金额(元)</div>
+          <span class="field-required">*</span>
+          <div class="field-name">报销类型</div>
         </div>
         <div class="field-component">
-          <span :title="form.sunMoney">{{ form.sunMoney }}</span>
+          <span :title="form.expenseTypeName">{{ form.expenseTypeName }}</span>
         </div>
       </div>
-
       <div class="fx-field x-grid-col-12">
         <div class="field-label">
-          <div class="field-name">预期供应商</div>
+          <span class="field-required">*</span>
+          <div class="field-name">费用所属期间</div>
         </div>
         <div class="field-component">
-          <span :title="form.supplier">{{ form.supplier }}</span>
+          <span :title="form.expenseMonth">{{ form.expenseMonth }}</span>
         </div>
-      </div><div class="fx-field x-grid-col-12">
+      </div>
+      <div class="fx-field x-grid-col-12">
+        <!-- <div class="field-label">
+          <div class="field-name">领用清单</div>
+        </div> -->
+        <el-table border :header-cell-style="{ 'text-align': 'center' }" :cell-style="{ 'text-align': 'center' }"
+          :data="form.oaExpenseObj" ref="table" style="width: 100%">
+          <el-table-column label="费用项目" prop="expenseItemName" width="300"/>
+          <el-table-column label="金额(元)" prop="money" />
+          <el-table-column label="开始日期" prop="startDate" width="200" />
+          <el-table-column label="结束日期" prop="endDate" width="200" />
+          <el-table-column label="说明" prop="remarks" width="500" />
+        </el-table>
+      </div>
+
+      <div class="fx-field x-grid-col-12">
         <div class="field-label">
-          <div class="field-name">采购事由</div>
+          <span class="field-required">*</span>
+          <div class="field-name">报销总金额(元)</div>
         </div>
         <div class="field-component">
-          <span :title="form.reason">{{ form.reason }}</span>
+          <span :title="form.totalMoney">{{ form.totalMoney }}</span>
         </div>
       </div>
-
-
-
-
       <div class="fx-field x-grid-col-12">
         <div class="field-label">
           <div class="field-name">附件</div>
@@ -148,7 +149,7 @@
 </template>
 
 <script>
-import { getDetail, agree, disagree, revocation } from "@/api/oa/receive"
+import { getDetail, agree, disagree, revocation } from "@/api/oa/expense"
 import { getDate } from "@/utils/dateUtils";
 export default {
   props: {

+ 84 - 58
src/views/oa/expense/edit.vue

@@ -13,61 +13,86 @@
       <el-form-item label="手机号">
         <el-input v-model="form.employeePhone" disabled></el-input>
       </el-form-item>
+      <el-form-item label="报销类型" prop="expenseTypeId">
+        <el-select v-model="form.expenseTypeId" placeholder="请选择" style="width: 100%;">
+          <el-option v-for="item in posOptions" :key="item.value" :label="item.label"
+            :value="item.value">
+          </el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="费用所属期间" prop="expenseMonth">
+        <el-date-picker value-format="yyyy-MM" v-model="form.expenseMonth" type="month" placeholder="选择日期"
+          style="width: 100%;">
+        </el-date-picker>
+      </el-form-item>
       <el-button style="margin-bottom: 10px;" type="success" size="small" @click="addRow">新增</el-button>
+      <!--表格里面嵌套表单-->
       <el-table border :header-cell-style="{ 'text-align': 'center' }" :cell-style="{ 'text-align': 'center' }"
-        :data="form.oaReceiveObjs" ref="table" style="width: 100%">
+        :data="form.oaExpenseObj" ref="table" style="width: 100%">
+
+       
 
-        <el-table-column label="采购物资名称">
+        <el-table-column label="费用项目" width="300">
           <template slot-scope="scope">
-            <!--表格里面嵌套表单-->
-            <el-form-item  :prop="'oaReceiveObjs.' + scope.$index + '.name'"
-              :rules="{ required: true, message: '采购物资名称不能为空', trigger: 'blur' }">
-              <el-input maxlength="20" v-model="form.oaReceiveObjs[scope.$index].name" autocomplete="off" size="small"
-                placeholder="采购物资名称"></el-input>
+            <el-form-item  :prop="'oaExpenseObj.' + scope.$index + '.expenseItemId'"
+              :rules="{ required: true, message: '费用项目不能为空', trigger: 'blur' }">
+              <el-select v-model="form.oaExpenseObj[scope.$index].expenseItemId" placeholder="请选择费用项目" style="width: 100%;" size="small">
+                <el-option v-for="item in posOptions" :key="item.value" :label="item.label"
+                  :value="item.value">
+                </el-option>
+              </el-select>
             </el-form-item>
           </template>
         </el-table-column>
-
-        <el-table-column label="采购数量" width="150">
+        <el-table-column label="金额(元)" width="200">
           <template slot-scope="scope">
-            <el-form-item  :prop="'oaReceiveObjs.' + scope.$index + '.amount'"
-              :rules="{ required: true, message: '采购数量不能为空', trigger: 'blur' }">
-              <el-input v-model="form.oaReceiveObjs[scope.$index].amount" autocomplete="off" size="small" type='number'
-                placeholder="采购数量"></el-input>
+            <el-form-item  :prop="'oaExpenseObj.' + scope.$index + '.money'"
+              :rules="{ required: true, message: '金额不能为空', trigger: 'blur' }">
+              <el-input v-model="form.oaExpenseObj[scope.$index].money" autocomplete="off" size="small"
+                placeholder="金额" oninput="value=value.match(/\d+\.?\d{0,2}/,'')"  @input="changeMoney(scope.$index)"></el-input>
             </el-form-item>
           </template>
         </el-table-column>
-
-        <el-table-column label="预算金额(元)">
+        <el-table-column label="开始日期" width="200">
           <template slot-scope="scope">
-            <el-form-item  :prop="'oaReceiveObjs.' + scope.$index + '.money'"
-              :rules="{ required: true, message: '预算金额不能为空', trigger: 'blur' }">
-              <el-input v-model="form.oaReceiveObjs[scope.$index].money" autocomplete="off" size="small"
-                placeholder="预算金额" oninput="value=value.match(/\d+\.?\d{0,2}/,'')"  @input="changeMoney(scope.$index)"></el-input>
+            <el-form-item  :prop="'oaExpenseObj.' + scope.$index + '.startDate'"
+              :rules="{ required: true, message: '开始日期不能为空', trigger: 'blur' }">
+              <el-date-picker value-format="yyyy-MM-dd" v-model="form.oaExpenseObj[scope.$index].startDate" type="date" placeholder="选择日期"
+                style="width: 100%;">
+              </el-date-picker>
+            </el-form-item>
+          </template>
+        </el-table-column>
+        <el-table-column label="结束日期" width="200">
+          <template slot-scope="scope">
+            <el-form-item  :prop="'oaExpenseObj.' + scope.$index + '.endDate'"
+              :rules="{ required: true, message: '结束日期不能为空', trigger: 'blur' }">
+              <el-date-picker value-format="yyyy-MM-dd" v-model="form.oaExpenseObj[scope.$index].endDate" type="date" placeholder="选择日期"
+                style="width: 100%;">
+              </el-date-picker>
+            </el-form-item>
+          </template>
+        </el-table-column>
+        <el-table-column label="说明" width="500">
+          <template slot-scope="scope">
+            <el-form-item  :prop="'oaExpenseObj.' + scope.$index + '.remarks'"
+              :rules="{ required: true, message: '说明不能为空', trigger: 'blur' }">
+              <el-input maxlength="20" v-model="form.oaExpenseObj[scope.$index].remarks" autocomplete="off" size="small"
+                placeholder="说明名称"></el-input>
             </el-form-item>
           </template>
         </el-table-column>
-
         <el-table-column fixed="right" label="操作" width="80">
           <template slot-scope="scope">
-            <el-button style="margin-bottom: 22px;" @click="handleDeleteRow(form.oaReceiveObjs[scope.$index])"
+            <el-button :disabled="form.oaExpenseObj.length > 1 ? false : true" style="margin-bottom: 22px;" @click="handleDeleteRow(scope.$index)"
               type="text" size="small">删除</el-button>
           </template>
         </el-table-column>
 
       </el-table>
-      <el-form-item label="总预算金额(元)" prop="sunMoney">
-        <el-input type="number" v-model="form.sunMoney" placeholder='总预算金额' disabled></el-input>
-      </el-form-item>
-      <el-form-item label="预期供应商" prop="supplier">
-        <el-input maxlength="50" show-word-limit type="textarea" v-model="form.supplier"
-        placeholder='请输入预期供应商'></el-input>
+      <el-form-item label="报销总金额(元)" prop="totalMoney">
+        <el-input type="number" v-model="form.totalMoney" placeholder='报销总金额' disabled></el-input>
       </el-form-item>
-      <el-form-item label="采购事由" prop="reason">
-        <el-input maxlength="100" rows="3" show-word-limit type="textarea" v-model="form.reason"
-          placeholder='请输入采购事由'></el-input>
-      </el-form-item>
-      
       <el-form-item label="附件">
         <el-upload :action="fileUrl" :headers="headers" :file-list="files" :on-success="handleFileSuccessCite"
           :before-upload="beforeUploadFile" :on-remove="handleRemove">
@@ -137,7 +162,7 @@
 </template>
 
 <script>
-import { getDetail, create, reCommit, save, deleteById, closeById } from "@/api/oa/receive"
+import { getDetail, create, reCommit, save, deleteById, closeById } from "@/api/oa/expense"
 import { getDate } from "@/utils/dateUtils";
 import { getUserProfile } from "@/api/system/user";
 import { listDept } from "@/api/system/dept";
@@ -181,17 +206,23 @@ export default {
         deptName: undefined,
         position: undefined,
         employeePhone: undefined,
-        oaReceiveObjs: [],
-        sunMoney: undefined,
-        supplier:undefined,
-        reason: undefined,
+        expenseTypeId: undefined,
+        expenseMonth: undefined,
+        oaExpenseObj: [],
+        totalMoney: undefined,
         fileIdList: undefined,
         remarks: undefined,
         peopleList: '',
       },
       rules: {
-        reason: [
-          { required: true, message: '请输入详细描述', trigger: 'blur' }
+        expenseTypeId: [
+          { required: true, message: '请选择报销类型', trigger: 'change' }
+        ],
+        expenseMonth: [
+          { required: true, message: '请选择费用所属期间', trigger: 'change' }
+        ],
+        totalMoney: [
+          { required: true, message: '请输入报销总金额', trigger: 'blur' }
         ],
         peopleList: [
           { required: true, message: '请选择审批人', }
@@ -227,11 +258,11 @@ export default {
   },
   methods: {
     changeMoney(index){
-      if(this.form.oaReceiveObjs[index].money){
-        let money = this.form.oaReceiveObjs[index].money;
-        this.form.oaReceiveObjs[index].money = money;
-        let arr = this.form.oaReceiveObjs;
-        this.form.sunMoney = this.sum(arr);
+      if(this.form.oaExpenseObj[index].money){
+        let money = this.form.oaExpenseObj[index].money;
+        this.form.oaExpenseObj[index].money = money;
+        let arr = this.form.oaExpenseObj;
+        this.form.totalMoney = this.sum(arr);
       }
     },
     //求和
@@ -244,12 +275,12 @@ export default {
   * 新增行
   */
     addRow() {
-      let index = this.form.oaReceiveObjs.length;
-      this.form.oaReceiveObjs.push({
-        key: index,
-        name: '',
-        amount: '',
+      this.form.oaExpenseObj.push({
+        expenseItemId: '',
         money: '',
+        startDate: '',
+        endDate: '',
+        remarks: '',
       });
     },
 
@@ -257,15 +288,10 @@ export default {
      * 删除行
      * @param row
      */
-    handleDeleteRow(row) {
-      let datas = this.form.oaReceiveObjs;
-      for (var i = 0; i < datas.length; i++) {
-        if (datas[i].key == row.key) {
-          datas.splice(i, 1);
-        }
-      }
-      let arr = this.form.oaReceiveObjs;
-        this.form.sunMoney = this.sum(arr);
+    handleDeleteRow(index) {
+      this.form.oaExpenseObj.splice(index, 1);
+      let arr = this.form.oaExpenseObj;
+      this.form.totalMoney = this.sum(arr);
     },
     getDateStar(ms) {
       return getDate(ms);

+ 1 - 1
src/views/oa/purchase/edit.vue

@@ -255,7 +255,7 @@ export default {
     handleDeleteRow(index) {
       this.form.oaPurchaseObjs.splice(index, 1);
       let arr = this.form.oaPurchaseObjs;
-        this.form.totalBudget = this.sum(arr);
+      this.form.totalBudget = this.sum(arr);
     },
     getDateStar(ms) {
       return getDate(ms);