Parcourir la source

✨ feat(【drp-客户消耗单、消耗单明细】): SPD服务费0527需求单

1、在消耗单明细和客户消耗单的列表页添加导出按钮,调用后端接口调试 2、”消耗单明细”界面,支持“单价”字段单独和批量修改,纯前端 3、客户消耗单的“销售月份”在数据库里是yyyy-MM-dd,前端需要在前端将格式转为yyyy-MM,纯前端 4、前端在消耗单明细的详情页加一个按钮,名为“拆单”,调用后端接口调试

20240527103
002390 il y a 1 an
Parent
commit
78b29021ee

+ 10 - 0
src/api/expend/expendMx.js

@@ -54,4 +54,14 @@ export function exportMx(data) {
     method: 'post',
     data: data
   })
+}
+
+// 拆单
+
+export function divideDoc(data) {
+  return request({
+    url: `/pu/doc/divideDoc`,
+    method: 'post',
+    data: data
+  })
 }

+ 5 - 1
src/views/expend/customerExpend/columns.js

@@ -145,7 +145,11 @@ export default function useColumns() {
     },
     {
       item: { key: "saleMonth", title: "销售月份", width: 100, },
-      attr: {}
+      attr: {
+        formatter: (prop) => {
+          return new Date(prop.saleMonth).Format("yyyy-MM")
+        }
+      }
     },
     {
       item: { key: "priceSum", title: "价税合计", width: 120, },

+ 4 - 1
src/views/expend/customerExpend/edit/columns.js

@@ -100,7 +100,10 @@ export default function useColumns() {
     {
       item: { key: "saleMonth", title: "销售月份" },
       attr: {
-        is: "el-input",
+        // is: "el-input",
+        is: "el-date-picker",
+        type: "month",
+        valueFormat: "yyyy-MM-dd",
       }
     },
     {

+ 18 - 0
src/views/expend/customerExpend/index.vue

@@ -1,3 +1,4 @@
+<!-- 客户消耗单 -->
 <script>
 import { dicts } from "./dicts";
 import useColumns from "./columns";
@@ -66,6 +67,18 @@ export default {
     useSelect(prop) {
       this.selectData = prop;
     },
+    // 导出
+    useExport() {
+      let ids = this.selectData.map((item) => item.id);
+      this.download(
+        "pu/ccd/exportCcd",
+        {
+          ids,
+          ...this.params,
+        },
+        `客户消耗单_${new Date().getTime()}.xlsx`
+      );
+    },
   },
   created() {
     this.useQuery(this.params, this.page);
@@ -93,6 +106,11 @@ export default {
     ></el-super-search>
     <el-row class="my-4" style="text-align: right">
       <el-button-group>
+        <el-button :size="size" type="primary" @click="useExport"
+          >批量导出</el-button
+        >
+      </el-button-group>
+      <el-button-group>
         <tj-button
           :dict="dict"
           :size="size"

+ 289 - 213
src/views/expend/expendMx.vue

@@ -1,14 +1,11 @@
 <template>
   <div id="expendMx">
     <div v-if="isList">
-      <el-card
-        v-loading="loading"
-        style="position: relative;"
-      >
-      <el-form class="search_area" label-width="auto">
-        <el-row :gutter="10">
-          <el-col :span="1.5">
-            <el-form-item label="编码">
+      <el-card v-loading="loading" style="position: relative">
+        <el-form class="search_area" label-width="auto">
+          <el-row :gutter="10">
+            <el-col :span="1.5">
+              <el-form-item label="编码">
                 <el-input
                   v-model.trim="params.code"
                   size="mini"
@@ -16,10 +13,10 @@
                   style="width: 200px"
                 />
               </el-form-item>
-          </el-col>
+            </el-col>
 
-          <el-col :span="1.5">
-            <el-form-item label="医院名称">
+            <el-col :span="1.5">
+              <el-form-item label="医院名称">
                 <el-input
                   v-model.trim="params.custName"
                   size="mini"
@@ -27,10 +24,10 @@
                   style="width: 200px"
                 />
               </el-form-item>
-          </el-col>
+            </el-col>
 
-          <el-col :span="1.5">
-            <el-form-item label="医院编码">
+            <el-col :span="1.5">
+              <el-form-item label="医院编码">
                 <el-input
                   v-model.trim="params.custCode"
                   size="mini"
@@ -38,10 +35,10 @@
                   style="width: 200px"
                 />
               </el-form-item>
-          </el-col>
+            </el-col>
 
-          <el-col :span="1.5">
-            <el-form-item label="供应商名称">
+            <el-col :span="1.5">
+              <el-form-item label="供应商名称">
                 <el-input
                   v-model.trim="params.supplierName"
                   size="mini"
@@ -49,10 +46,10 @@
                   style="width: 200px"
                 />
               </el-form-item>
-          </el-col>
+            </el-col>
 
-          <el-col :span="1.5">
-            <el-form-item label="供应商编码">
+            <el-col :span="1.5">
+              <el-form-item label="供应商编码">
                 <el-input
                   v-model.trim="params.supplierCode"
                   size="mini"
@@ -60,38 +57,37 @@
                   style="width: 200px"
                 />
               </el-form-item>
-          </el-col>
+            </el-col>
 
-
-          <el-col :span="1.5">
-            <el-form-item label="结算开始日期">
-              <el-date-picker
-                v-model="params.startDate"
-                clearable
-                type="date"
-                value-format="yyyy-MM-dd"
-                size="mini"
-                style="width: 200px"
-              >
-              </el-date-picker>
+            <el-col :span="1.5">
+              <el-form-item label="结算开始日期">
+                <el-date-picker
+                  v-model="params.startDate"
+                  clearable
+                  type="date"
+                  value-format="yyyy-MM-dd"
+                  size="mini"
+                  style="width: 200px"
+                >
+                </el-date-picker>
               </el-form-item>
-          </el-col>
+            </el-col>
 
-          <el-col :span="1.5">
-            <el-form-item label="结算截止日期">
-              <el-date-picker
-                v-model="params.endDate"
-                clearable
-                type="date"
-                value-format="yyyy-MM-dd"
-                size="mini"
-                style="width: 200px"
-              ></el-date-picker>
+            <el-col :span="1.5">
+              <el-form-item label="结算截止日期">
+                <el-date-picker
+                  v-model="params.endDate"
+                  clearable
+                  type="date"
+                  value-format="yyyy-MM-dd"
+                  size="mini"
+                  style="width: 200px"
+                ></el-date-picker>
               </el-form-item>
-          </el-col>
+            </el-col>
 
-          <el-col :span="1.5">
-            <el-form-item label="结算单号">
+            <el-col :span="1.5">
+              <el-form-item label="结算单号">
                 <el-input
                   v-model.trim="params.settleNo"
                   size="mini"
@@ -99,23 +95,30 @@
                   style="width: 200px"
                 />
               </el-form-item>
-          </el-col>
+            </el-col>
 
-          <el-col :span="1.5">
-            <el-form-item label="是否汇总">
-              <el-select style="width: 200px" size="mini" clearable v-model="params.isSum" placeholder="请选择">
-                <el-option
-                  v-for="item in options"
-                  :key="item.value"
-                  :label="item.label"
-                  :value="item.value">
-                </el-option>
-              </el-select>
+            <el-col :span="1.5">
+              <el-form-item label="是否汇总">
+                <el-select
+                  style="width: 200px"
+                  size="mini"
+                  clearable
+                  v-model="params.isSum"
+                  placeholder="请选择"
+                >
+                  <el-option
+                    v-for="item in options"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value"
+                  >
+                  </el-option>
+                </el-select>
               </el-form-item>
-          </el-col>
+            </el-col>
 
-          <el-col :span="1.5">
-            <el-form-item label="汇总单据号">
+            <el-col :span="1.5">
+              <el-form-item label="汇总单据号">
                 <el-input
                   v-model.trim="params.sumCode"
                   size="mini"
@@ -123,81 +126,122 @@
                   style="width: 200px"
                 />
               </el-form-item>
-          </el-col>
+            </el-col>
 
-          <el-col :span="1.5">
-            <el-form-item label="是否带量">
-              <el-select style="width: 200px" size="mini" clearable v-model="params.isWhether" placeholder="请选择">
-                <el-option
-                  v-for="item in options1"
-                  :key="item.value"
-                  :label="item.label"
-                  :value="item.value">
-                </el-option>
-              </el-select>
+            <el-col :span="1.5">
+              <el-form-item label="是否带量">
+                <el-select
+                  style="width: 200px"
+                  size="mini"
+                  clearable
+                  v-model="params.isWhether"
+                  placeholder="请选择"
+                >
+                  <el-option
+                    v-for="item in options1"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value"
+                  >
+                  </el-option>
+                </el-select>
               </el-form-item>
-          </el-col>
+            </el-col>
 
-          <el-col :span="1.5">
-            <el-form-item label-width="80px">
-              <el-button type="primary" size="mini" icon="el-icon-search" @click="searchList">搜索</el-button>
-              <el-button size="mini" plain icon="el-icon-refresh" @click="resetList">重置</el-button>
-            </el-form-item>
-          </el-col>
-        </el-row>
-      </el-form>
+            <el-col :span="1.5">
+              <el-form-item label-width="80px">
+                <el-button
+                  type="primary"
+                  size="mini"
+                  icon="el-icon-search"
+                  @click="searchList"
+                  >搜索</el-button
+                >
+                <el-button
+                  size="mini"
+                  plain
+                  icon="el-icon-refresh"
+                  @click="resetList"
+                  >重置</el-button
+                >
+              </el-form-item>
+            </el-col>
+          </el-row>
+        </el-form>
 
-      <div class="btn_grooup">
-        <!-- <el-button type="primary" size="mini" @click="submits">提交</el-button> -->
-        <el-button type="primary" size="mini" @click="pulldata">下拉数据</el-button>
-        <el-button type="primary" size="mini" @click="huizong">汇总</el-button>
-      </div>
+        <div class="btn_grooup">
+          <!-- <el-button type="primary" size="mini" @click="submits">提交</el-button> -->
 
-      <el-super-ux-table
-        id="data-table"
-        v-model="tableData"
-        index
-        checkbox
-        :size="size"
-        :dict="dict"
-        :page="pageInfo"
-        :height=500
-        :columns="TableColumns"
-        pagination
-        convenitentOperation
-        storage-key="expendMxList"
-        @row-dblclick="useSee"
-        @row-select="useSelect"
-        @selection-change="handleSelectionChange"
-        @row-click="rowSelect"
-        @pagination="useQuery(params, pageInfo)"
-        ref="tables"
-      >
-        <ux-table-column
-          fixed="right"
-          title="操作"
-          align="center"
-          width="100"
+          <el-button :size="size" type="primary" @click="useExport"
+            >批量导出</el-button
+          >
+          <el-button type="primary" size="mini" @click="pulldata"
+            >下拉数据</el-button
           >
-          <template slot-scope="scope">
-            <!-- <el-button type="text" size="mini" v-if="scope.row.status == '1' && scope.row.flowId" @click="reback(scope.row)">收回</el-button> -->
-            <el-button type="text" size="mini" @click="check(scope.row)">查看</el-button>
-            <el-button type="text" size="mini" @click="edit(scope.row)">编辑</el-button>
-          </template>
-        </ux-table-column>
-      </el-super-ux-table>
+          <el-button
+            type="primary"
+            size="mini"
+            :disabled="!ids.length"
+            @click="huizong"
+            >汇总</el-button
+          >
+        </div>
 
+        <el-super-ux-table
+          id="data-table"
+          v-model="tableData"
+          index
+          checkbox
+          :size="size"
+          :dict="dict"
+          :page="pageInfo"
+          :height="500"
+          :columns="TableColumns"
+          pagination
+          convenitentOperation
+          storage-key="expendMxList"
+          @row-dblclick="useSee"
+          @row-select="useSelect"
+          @selection-change="handleSelectionChange"
+          @row-click="rowSelect"
+          @pagination="useQuery(params, pageInfo)"
+          ref="tables"
+        >
+          <ux-table-column
+            fixed="right"
+            title="操作"
+            align="center"
+            width="100"
+          >
+            <template slot-scope="scope">
+              <!-- <el-button type="text" size="mini" v-if="scope.row.status == '1' && scope.row.flowId" @click="reback(scope.row)">收回</el-button> -->
+              <el-button type="text" size="mini" @click="check(scope.row)"
+                >查看</el-button
+              >
+              <el-button type="text" size="mini" @click="edit(scope.row)"
+                >编辑</el-button
+              >
+            </template>
+          </ux-table-column>
+        </el-super-ux-table>
       </el-card>
     </div>
 
-    <Add v-model="isList" v-if="!isList" :pageStu="page" :disable="disable" :row="rowDetail" @refresh="searchList"/>
+    <Add
+      v-model="isList"
+      v-if="!isList"
+      :pageStu="page"
+      :disable="disable"
+      :row="rowDetail"
+      @refresh="searchList"
+    />
   </div>
 </template>
 
 <script>
-import { mxList, pullMx, huizongMX, exportMx } from '@/api/expend/expendMx.js'
+import { mxList, pullMx, huizongMX, exportMx } from "@/api/expend/expendMx.js";
 export default {
-  dicts: ['sys_status', 'sys_number_yes_no', 'carry_or_not'],
+  dicts: ["sys_status", "sys_number_yes_no", "carry_or_not"],
   components: {
     Add: () => import("./expendMxDetail.vue"),
     ElSuperUxTable: () => import("@/components/super-ux-table/index.vue"),
@@ -207,156 +251,188 @@ export default {
       // 页面配置
       isList: true,
       // 页面状态
-      page: '',
+      page: "",
       disable: false,
       rowDetail: {},
       size: "mini",
       loading: false,
-      options: [{value: '0', label: '是'}, {value: '2', label: '否'}],
-      options1: [{value: '0', label: '否'}, {value: '1', label: '是'}],
+      options: [
+        { value: "0", label: "是" },
+        { value: "2", label: "否" },
+      ],
+      options1: [
+        { value: "0", label: "否" },
+        { value: "1", label: "是" },
+      ],
       params: {
-        code: '',
-        custName: '',
-        custCode: '',
-        supplierName: '',
-        supplierCode: '',
-        startDate: '',
-        endDate: '',
-        settleNo: '',
-        isSum: '',
-        sumCode: '',
-        isWhether: ''
+        code: "",
+        custName: "",
+        custCode: "",
+        supplierName: "",
+        supplierCode: "",
+        startDate: "",
+        endDate: "",
+        settleNo: "",
+        isSum: "",
+        sumCode: "",
+        isWhether: "",
       },
       pageInfo: {
         pageNum: 1,
         pageSize: 20,
-        total: 0
+        total: 0,
       },
       tableData: [],
       selectData: [],
       // SearchColumns: SearchColumns,
       TableColumns: [
-        { item: { key: "code", title: "编码"}, attr: {} },
-        { item: { key: "verifyState", title: "单据状态"}, attr: {
-          is: "el-dict-tag",
-          dictName: "sys_status",
-          }
+        { item: { key: "code", title: "编码" }, attr: {} },
+        {
+          item: { key: "verifyState", title: "单据状态" },
+          attr: {
+            is: "el-dict-tag",
+            dictName: "sys_status",
+          },
         },
         { item: { key: "serviceFee", title: "服务费合计" }, attr: {} },
         { item: { key: "custName", title: "医院名称" }, attr: {} },
         { item: { key: "custCode", title: "医院编码" }, attr: {} },
         { item: { key: "supplierCode", title: "供应商编码" }, attr: {} },
         { item: { key: "supplierName", title: "供应商名称" }, attr: {} },
-        { item: { key: "isSum", title: "是否汇总" }, attr: {
-          is: 'el-dict-tag',
-          dictName: "sys_number_yes_no",
-        } },
-        { item: { key: "sumCode", title: "汇总单据号"}, attr: {} },
-        { item: { key: "isWhether", title: "是否带量" }, attr: {
-          is: 'el-dict-tag',
-          dictName: "carry_or_not",
-        } },
-        { item: { key: "settleNo", title: "结算单号"}, attr: {} },
+        {
+          item: { key: "isSum", title: "是否汇总" },
+          attr: {
+            is: "el-dict-tag",
+            dictName: "sys_number_yes_no",
+          },
+        },
+        { item: { key: "sumCode", title: "汇总单据号" }, attr: {} },
+        {
+          item: { key: "isWhether", title: "是否带量" },
+          attr: {
+            is: "el-dict-tag",
+            dictName: "carry_or_not",
+          },
+        },
+        { item: { key: "settleNo", title: "结算单号" }, attr: {} },
         { item: { key: "startDate", title: "结算开始日期" }, attr: {} },
         { item: { key: "endDate", title: "结算截止日期" }, attr: {} },
         { item: { key: "totalAmount", title: "合计金额" }, attr: {} },
-        { item: { key: "remark", title: "备注"}, attr: {} },
+        { item: { key: "remark", title: "备注" }, attr: {} },
       ].map(({ item, attr }) => ({
-      attr,
-      item: {
-        ...item,
-        sortabled: true,
-        fixedabled: true,
-        filterabled: true,
-        hiddenabled: true,
-      },
+        attr,
+        item: {
+          ...item,
+          sortabled: true,
+          fixedabled: true,
+          filterabled: true,
+          hiddenabled: true,
+        },
       })),
-      ids: []
-    }
+      ids: [],
+    };
   },
   created() {
-    this.useQuery(this.params, this.pageInfo)
+    this.useQuery(this.params, this.pageInfo);
   },
   methods: {
     searchList() {
-      this.useQuery(this.params, this.pageInfo)
+      this.useQuery(this.params, this.pageInfo);
     },
     resetList() {
       this.params = {
-        code: '',
-        custName: '',
-        custCode: '',
-        supplierName: '',
-        supplierCode: '',
-        startDate: '',
-        endDate: '',
-        settleNo: '',
-        sumCode:''
-      }
-      this.useQuery(this.params, this.pageInfo)
+        code: "",
+        custName: "",
+        custCode: "",
+        supplierName: "",
+        supplierCode: "",
+        startDate: "",
+        endDate: "",
+        settleNo: "",
+        sumCode: "",
+      };
+      this.useQuery(this.params, this.pageInfo);
     },
     useSee() {},
     useSelect() {},
     handleSelectionChange(selection) {
-      console.log('选中', selection)
+      console.log("选中", selection);
       // this.ids = selection.map(item => item.id)
       // console.log('选中数组', this.ids)
-      this.ids = selection
+      this.ids = selection;
     },
     rowSelect(row) {
-      this.$refs.tables.toggleRowSelection([{row: row}]);
+      this.$refs.tables.toggleRowSelection([{ row: row }]);
     },
     async useQuery(prop, page) {
-      let params = {...prop, ...page}
-      await mxList(params).then(res => {
-        if( res.code === 200 ) {
-          this.tableData = res.rows
-          this.pageInfo.total = res.total
+      let params = { ...prop, ...page };
+      await mxList(params).then((res) => {
+        if (res.code === 200) {
+          this.tableData = res.rows;
+          this.pageInfo.total = res.total;
         }
-      })
+      });
     },
     submits() {
-      this.isList = false
-      this.page = 'add'
-      this.disable = false
+      this.isList = false;
+      this.page = "add";
+      this.disable = false;
     },
     pulldata() {
       this.$modal.loading("正在下拉数据,请稍后...");
-      pullMx().then(res => {
-        if(res.code === 200) {
+      pullMx()
+        .then((res) => {
+          if (res.code === 200) {
+            this.$modal.closeLoading();
+            this.$modal.notifySuccess(res.msg);
+            this.useQuery(this.params, this.pageInfo);
+          }
+        })
+        .catch((err) => {
           this.$modal.closeLoading();
-          this.$modal.notifySuccess(res.msg);
-          this.useQuery(this.params, this.pageInfo)
-        }
-      }).catch(err => {
-        this.$modal.closeLoading();
-      })
+        });
     },
-    huizong() {
-      console.log('ids', this.ids);
-      if (this.ids.length <= 0) {
-        this.$modal.notifyWarning("至少勾选一条数据");
-      } else {
+    async huizong() {
+      try {
         let map = {
-          ids: this.ids.map(s => s.id)
-        }
-        this.download('/pu/doc/pullToCcd', {...map}, `汇总明细_${new Date().getTime()}.xlsx`)
+          ids: this.ids.map((s) => s.id),
+        };
+        await this.download(
+          "/pu/doc/pullToCcd",
+          { ...map },
+          `汇总明细_${new Date().getTime()}.xlsx`
+        );
+      } catch (error) {
+      } finally {
+        this.useQuery(this.params, this.pageInfo);
       }
     },
     check(row) {
-      this.isList = false
-      this.page = 'check'
-      this.rowDetail = row
-      this.disable = true
+      this.isList = false;
+      this.page = "check";
+      this.rowDetail = row;
+      this.disable = true;
     },
     edit(row) {
-      this.isList = false
-      this.page = 'edit'
-      this.rowDetail = row
-      this.disable = false
+      this.isList = false;
+      this.page = "edit";
+      this.rowDetail = row;
+      this.disable = false;
     },
-  }
-}
+    // 导出
+    useExport() {
+      let ids = this.ids.map((item) => item.id);
+      this.download(
+        "pu/doc/exportScd",
+        {
+          ids,
+          ...this.params,
+        },
+        `消耗单明细_${new Date().getTime()}.xlsx`
+      );
+    },
+  },
+};
 </script>
 
 <style lang="scss" scoped>

+ 377 - 142
src/views/expend/expendMxDetail.vue

@@ -1,56 +1,103 @@
 <template>
   <div id="editExpendMx">
-    <el-card style="position: relative;">
+    <el-card style="position: relative">
       <span>基本信息</span>
-      <el-form :model="basicForm" :rules="basicRules" ref="basic" label-width="auto" :show-message="false">
+      <el-form
+        :model="basicForm"
+        :rules="basicRules"
+        ref="basic"
+        label-width="auto"
+        :show-message="false"
+      >
         <el-row :gutter="10">
-
           <el-col :span="1.5">
             <el-form-item label="编码" prop="code">
-              <el-input style="width: 200px" clearable disabled size="mini" v-model="basicForm.code">
+              <el-input
+                style="width: 200px"
+                clearable
+                disabled
+                :size="size"
+                v-model="basicForm.code"
+              >
               </el-input>
             </el-form-item>
           </el-col>
 
           <el-col :span="1.5">
             <el-form-item label="服务费合计" prop="serviceFee">
-              <el-input style="width: 200px" clearable disabled size="mini" v-model="publishedBooksMessage">
-              <!-- <el-input style="width: 200px" clearable disabled size="mini" v-model="basicForm.serviceFee"> -->
+              <el-input
+                style="width: 200px"
+                clearable
+                disabled
+                :size="size"
+                v-model="publishedBooksMessage"
+              >
+                <!-- <el-input style="width: 200px" clearable disabled :size="size" v-model="basicForm.serviceFee"> -->
               </el-input>
             </el-form-item>
           </el-col>
 
           <el-col :span="1.5">
             <el-form-item label="医院编码" prop="custCode">
-              <el-input style="width: 200px" clearable :disabled="sonDisable" size="mini" v-model="basicForm.custCode">
+              <el-input
+                style="width: 200px"
+                clearable
+                :disabled="sonDisable"
+                :size="size"
+                v-model="basicForm.custCode"
+              >
               </el-input>
             </el-form-item>
           </el-col>
 
           <el-col :span="1.5">
             <el-form-item label="医院名称" prop="custName">
-              <el-input style="width: 200px" clearable :disabled="sonDisable" size="mini" v-model="basicForm.custName">
+              <el-input
+                style="width: 200px"
+                clearable
+                :disabled="sonDisable"
+                :size="size"
+                v-model="basicForm.custName"
+              >
               </el-input>
             </el-form-item>
           </el-col>
 
           <el-col :span="1.5">
             <el-form-item label="供应商编码" prop="supplierCode">
-              <el-input style="width: 200px" clearable :disabled="sonDisable" size="mini" v-model="basicForm.supplierCode">
+              <el-input
+                style="width: 200px"
+                clearable
+                :disabled="sonDisable"
+                :size="size"
+                v-model="basicForm.supplierCode"
+              >
               </el-input>
             </el-form-item>
           </el-col>
 
           <el-col :span="1.5">
             <el-form-item label="供应商名称" prop="supplierName">
-              <el-input style="width: 200px" clearable :disabled="sonDisable" size="mini" v-model="basicForm.supplierName">
+              <el-input
+                style="width: 200px"
+                clearable
+                :disabled="sonDisable"
+                :size="size"
+                v-model="basicForm.supplierName"
+              >
               </el-input>
             </el-form-item>
           </el-col>
 
           <el-col :span="1.5">
             <el-form-item label="结算单号" prop="settleNo">
-              <el-input style="width: 200px" clearable :disabled="sonDisable" size="mini" v-model="basicForm.settleNo">
+              <el-input
+                style="width: 200px"
+                clearable
+                :disabled="sonDisable"
+                :size="size"
+                v-model="basicForm.settleNo"
+              >
               </el-input>
             </el-form-item>
           </el-col>
@@ -63,7 +110,7 @@
                 clearable
                 type="date"
                 value-format="yyyy-MM-dd"
-                size="mini"
+                :size="size"
                 style="width: 200px"
               >
               </el-date-picker>
@@ -78,7 +125,7 @@
                 clearable
                 type="date"
                 value-format="yyyy-MM-dd"
-                size="mini"
+                :size="size"
                 style="width: 200px"
               >
               </el-date-picker>
@@ -87,19 +134,33 @@
 
           <el-col :span="1.5">
             <el-form-item label="合计金额" prop="totalAmount">
-              <el-input style="width: 200px" clearable disabled size="mini" v-model="publishedBooksMessage2">
+              <el-input
+                style="width: 200px"
+                clearable
+                disabled
+                :size="size"
+                v-model="publishedBooksMessage2"
+              >
               </el-input>
             </el-form-item>
           </el-col>
 
           <el-col :span="1.5">
             <el-form-item label="是否汇总" prop="isSum">
-              <el-select style="width: 200px" size="mini" :disabled="sonDisable" clearable v-model="basicForm.isSum" placeholder="请选择">
+              <el-select
+                style="width: 200px"
+                :size="size"
+                :disabled="true"
+                clearable
+                v-model="basicForm.isSum"
+                placeholder="请选择"
+              >
                 <el-option
                   v-for="item in options"
                   :key="item.value"
                   :label="item.label"
-                  :value="item.value">
+                  :value="item.value"
+                >
                 </el-option>
               </el-select>
             </el-form-item>
@@ -107,19 +168,32 @@
 
           <el-col :span="1.5">
             <el-form-item label="汇总单据号" prop="sumCode">
-              <el-input style="width: 200px" disabled size="mini" v-model="basicForm.sumCode">
+              <el-input
+                style="width: 200px"
+                disabled
+                :size="size"
+                v-model="basicForm.sumCode"
+              >
               </el-input>
             </el-form-item>
           </el-col>
 
           <el-col :span="1.5">
             <el-form-item label="是否带量" prop="isWhether">
-              <el-select style="width: 200px" size="mini" :disabled="sonDisable" clearable v-model="basicForm.isWhether" placeholder="请选择">
+              <el-select
+                style="width: 200px"
+                :size="size"
+                :disabled="sonDisable"
+                clearable
+                v-model="basicForm.isWhether"
+                placeholder="请选择"
+              >
                 <el-option
                   v-for="item in options1"
                   :key="item.value"
                   :label="item.label"
-                  :value="item.value">
+                  :value="item.value"
+                >
                 </el-option>
               </el-select>
             </el-form-item>
@@ -127,45 +201,89 @@
 
           <el-col :span="1.5">
             <el-form-item label="备注" prop="remark">
-              <el-input style="width: 200px" clearable :disabled="sonDisable" size="mini" v-model="basicForm.remark">
+              <el-input
+                style="width: 200px"
+                clearable
+                :disabled="sonDisable"
+                :size="size"
+                v-model="basicForm.remark"
+              >
               </el-input>
             </el-form-item>
           </el-col>
-
         </el-row>
       </el-form>
 
       <div class="btn_group">
-        <!-- <el-button type="primary" size="mini"  @click="toOA" v-if="sonPageStu == 'check'">提交</el-button> -->
-        <el-button type="primary" size="mini"  @click="editPage" v-if="sonPageStu == 'check'">编辑</el-button>
-        <el-button type="primary" size="mini"  @click="save" v-if="sonPageStu == 'add' || sonPageStu == 'edit'">保存</el-button>
-        <el-button size="mini" plain @click="back">返回</el-button>
+        <!-- <el-button type="primary" :size="size"  @click="toOA" v-if="sonPageStu == 'check'">提交</el-button> -->
+        <el-button
+          type="primary"
+          :size="size"
+          @click="editPage"
+          v-if="sonPageStu == 'check'"
+          >编辑</el-button
+        >
+        <el-button
+          type="primary"
+          :size="size"
+          @click="save"
+          v-if="sonPageStu == 'add' || sonPageStu == 'edit'"
+          >保存</el-button
+        >
+        <el-button :size="size" plain @click="back">返回</el-button>
       </div>
 
       <div class="btn_grooup">
         <span>明细信息</span>
         <div>
-          <el-button type="primary" size="mini" @click="editLine" v-if="!sonDisable">批量修改</el-button>
-          <!-- <el-button type="primary" size="mini" @click="delLines" v-if="!sonDisable">删行</el-button> -->
+          <el-button
+            type="primary"
+            :size="size"
+            @click="editLine"
+            v-if="!sonDisable"
+            >批量修改</el-button
+          >
+          <el-button
+            v-if="sonPageStu == 'check'"
+            :size="size"
+            :disabled="!ids.length"
+            @click="useDisassembly"
+            >拆 单</el-button
+          >
+          <!-- <el-button type="primary" :size="size" @click="delLines" v-if="!sonDisable">删行</el-button> -->
         </div>
       </div>
 
-      <el-dialog title="批量修改" @close="clearInfo" :visible.sync="dialogFormVisible">
+      <el-dialog
+        title="批量修改"
+        @close="clearInfo"
+        :visible.sync="dialogFormVisible"
+      >
         <el-form :model="dialogForm" label-width="auto">
           <el-form-item label="明细信息">
-            <el-select size="mini" v-model="dialogForm.region">
+            <el-select :size="size" v-model="dialogForm.region">
               <el-option label="服务费率" value="ratio"></el-option>
+              <el-option label="单价" value="price"></el-option>
             </el-select>
           </el-form-item>
           <el-form-item label="修改值">
-            <el-input-number clearable size="mini" :min="0" v-model="dialogForm.info"></el-input-number>
+            <el-input-number
+              clearable
+              :size="size"
+              :min="0"
+              v-model="dialogForm.info"
+            ></el-input-number>
           </el-form-item>
         </el-form>
         <div slot="footer" class="dialog-footer">
-          <el-button size="mini" @click="dialogFormVisible = false">取 消</el-button>
-          <el-button size="mini" type="primary" @click="confirm">确 定</el-button>
+          <el-button :size="size" @click="dialogFormVisible = false"
+            >取 消</el-button
+          >
+          <el-button :size="size" type="primary" @click="confirm"
+            >确 定</el-button
+          >
         </div>
-      </el-dialog>      
+      </el-dialog>
 
       <ux-grid
         :data="basicForm.itemList"
@@ -175,89 +293,177 @@
         class="exporttable"
         height="410"
         max-height="410"
-        style="font-size: 12px;"
+        style="font-size: 12px"
         @selection-change="handleSelectionChange"
         ref="table"
         show-header-overflow="tooltip"
         show-overflow="tooltip"
         keep-source
         beautifyTable
-        :checkbox-config="{highlight: true, trigger: 'row'}"
-        :edit-config="{trigger: 'click', mode: 'row'}">
+        :checkbox-config="{ highlight: true, trigger: 'row' }"
+        :edit-config="{ trigger: 'click', mode: 'row' }"
       >
-        <ux-table-column resizable type="checkbox" width="50px" fixed="left"/>
-        <ux-table-column resizable title="医保编码" field="healthCode" align="center"/>
-        <ux-table-column resizable title="物料编码" field="itemCode" align="center"/>
-        <ux-table-column resizable title="物料名称" field="itemName" align="center"/>
-        <ux-table-column resizable title="规格型号" field="itemSpec" align="center"/>
-        <ux-table-column resizable title="厂家" field="manufactor" align="center"/>
-        <ux-table-column resizable title="单位" field="itemUom" align="center"/>
-        <ux-table-column resizable title="是否带量" field="isWhether" align="center" :formatter="hangStatus" />
-        <ux-table-column resizable title="服务费率(%)" field="ratio" align="center" edit-render>
+        >
+        <ux-table-column resizable type="checkbox" width="50px" fixed="left" />
+        <ux-table-column
+          resizable
+          title="医保编码"
+          field="healthCode"
+          align="center"
+        />
+        <ux-table-column
+          resizable
+          title="物料编码"
+          field="itemCode"
+          align="center"
+        />
+        <ux-table-column
+          resizable
+          title="物料名称"
+          field="itemName"
+          align="center"
+        />
+        <ux-table-column
+          resizable
+          title="规格型号"
+          field="itemSpec"
+          align="center"
+        />
+        <ux-table-column
+          resizable
+          title="厂家"
+          field="manufactor"
+          align="center"
+        />
+        <ux-table-column
+          resizable
+          title="单位"
+          field="itemUom"
+          align="center"
+        />
+        <ux-table-column
+          resizable
+          title="是否带量"
+          field="isWhether"
+          align="center"
+          :formatter="hangStatus"
+        />
+        <ux-table-column
+          resizable
+          title="服务费率(%)"
+          field="ratio"
+          align="center"
+          edit-render
+        >
           <template v-slot:edit="scope">
-            <el-input-number clearable :disabled="sonDisable" :min="0" size="mini" v-model="scope.row.ratio" @input="changeFei(scope.rowIndex, scope.row)"/>
+            <el-input-number
+              clearable
+              :disabled="sonDisable"
+              :min="0"
+              :size="size"
+              v-model="scope.row.ratio"
+              @input="changeFei(scope.rowIndex, scope.row)"
+            />
           </template>
         </ux-table-column>
-        <ux-table-column resizable title="数量" field="qty" align="center"/>
-        <ux-table-column resizable title="单价" field="price" align="center"/>
-        <ux-table-column resizable title="小计" field="amount" align="center"/>
-        <ux-table-column resizable title="备注" field="detailRemark" align="center"/>
-        <ux-table-column resizable title="服务费" field="serviceFee" align="center"/>
+        <ux-table-column resizable title="数量" field="qty" align="center" />
+        <ux-table-column
+          resizable
+          title="单价"
+          field="price"
+          align="center"
+          edit-render
+        >
+          <template v-slot:edit="scope">
+            <el-input-number
+              clearable
+              :disabled="sonDisable"
+              :min="0"
+              :size="size"
+              v-model="scope.row.price"
+              @input="changeFei(scope.rowIndex, scope.row)"
+            />
+          </template>
+        </ux-table-column>
+        <ux-table-column resizable title="小计" field="amount" align="center" />
+        <ux-table-column
+          resizable
+          title="备注"
+          field="detailRemark"
+          align="center"
+        />
+        <ux-table-column
+          resizable
+          title="服务费"
+          field="serviceFee"
+          align="center"
+        />
       </ux-grid>
     </el-card>
   </div>
 </template>
 
 <script>
-import { Mxdetail, editSaveMx, toOAs } from '@/api/expend/expendMx.js'
+import {
+  Mxdetail,
+  editSaveMx,
+  toOAs,
+  divideDoc,
+} from "@/api/expend/expendMx.js";
 export default {
-  props: ['pageStu','row', 'disable'],
+  props: ["pageStu", "row", "disable"],
   model: {
-    prop: 'isList',
-    event: 'jugislist'
+    prop: "isList",
+    event: "jugislist",
   },
   data() {
     return {
+      size: "mini",
       // 不能直接改变props传来的值
       sonPageStu: this.pageStu,
       sonDisable: this.disable,
       basicForm: {
-        id: '',
-        code: '',
+        id: "",
+        code: "",
         serviceFee: 0,
-        custCode: '',
-        custName: '',
-        supplierCode: '',
-        supplierName: '',
-        settleNo: '',
-        startDate: '',
-        endDate: '',
-        totalAmount: '',
-        isSum: '',
-        sumCode: '',
-        isWhether: '',
-        remark: '',
-        itemList: []
+        custCode: "",
+        custName: "",
+        supplierCode: "",
+        supplierName: "",
+        settleNo: "",
+        startDate: "",
+        endDate: "",
+        totalAmount: "",
+        isSum: "",
+        sumCode: "",
+        isWhether: "",
+        remark: "",
+        itemList: [],
       },
-      options: [{value: '0', label: '是'}, {value: '2', label: '否'}],
-      options1: [{value: '0', label: '否'}, {value: '1', label: '是'}],
+      options: [
+        { value: "0", label: "是" },
+        { value: "2", label: "否" },
+      ],
+      options1: [
+        { value: "0", label: "否" },
+        { value: "1", label: "是" },
+      ],
       basicRules: {},
-      ids:[],
-      dialogFormVisible:false,
-      dialogForm:{
-        region: 'ratio',
-        info: ''
-      }
-    }
+      ids: [],
+      dialogFormVisible: false,
+      dialogForm: {
+        region: "ratio",
+        info: "",
+      },
+    };
   },
   created() {
-    if(this.pageStu == 'check') {
-      console.log('数据', this.row)
-      this.getDetails(this.row)
-    } else if(this.pageStu == 'edit') {
-      this.getDetails(this.row)
-    } else if (this.pageStu == 'add') {
-
+    if (this.pageStu == "check") {
+      console.log("数据", this.row);
+      this.getDetails(this.row);
+    } else if (this.pageStu == "edit") {
+      this.getDetails(this.row);
+    } else if (this.pageStu == "add") {
     }
   },
   computed: {
@@ -265,96 +471,125 @@ export default {
     publishedBooksMessage() {
       // `this` 指向当前组件实例
       // var s = 0
-      this.basicForm.serviceFee = 0
-      this.basicForm.itemList.forEach(item => {
-        this.basicForm.serviceFee += Number(item.serviceFee)
-      })
-      return this.basicForm.serviceFee
+      this.basicForm.serviceFee = 0;
+      this.basicForm.itemList.forEach((item) => {
+        this.basicForm.serviceFee += Number(item.serviceFee);
+      });
+      return this.basicForm.serviceFee;
     },
-      publishedBooksMessage2() {
+    publishedBooksMessage2() {
       // `this` 指向当前组件实例
       // var s = 0
-      this.basicForm.totalAmount = 0
-      this.basicForm.itemList.forEach(item => {
-        this.basicForm.totalAmount += Number(item.amount)
-      })
-      return this.basicForm.totalAmount
-    }
+      this.basicForm.totalAmount = 0;
+      this.basicForm.itemList.forEach((item) => {
+        this.basicForm.totalAmount += Number(item.amount);
+      });
+      return this.basicForm.totalAmount;
+    },
   },
   methods: {
     getDetails(row) {
-      Mxdetail(row.id).then(res => {
+      Mxdetail(row.id).then((res) => {
         if (res.code === 200) {
-          this.basicForm = res.data
+          this.basicForm = res.data;
         }
-      })
+      });
     },
     editPage() {
-      this.sonPageStu = 'edit'
-      this.sonDisable = false
+      this.sonPageStu = "edit";
+      this.sonDisable = false;
     },
     save() {
-      editSaveMx(this.basicForm).then(res => {
-        if(res.code === 200) {
+      editSaveMx(this.basicForm).then((res) => {
+        if (res.code === 200) {
           this.$modal.notifySuccess("编辑保存成功");
-          this.sonPageStu = 'check'
-          this.sonDisable = true
-          this.getDetails(this.row)
-          this.ids = []
+          this.sonPageStu = "check";
+          this.sonDisable = true;
+          this.getDetails(this.row);
+          this.ids = [];
         }
-      })
+      });
     },
     back() {
-      this.$emit('jugislist', true)
-      this.$emit('refresh')
+      this.$emit("jugislist", true);
+      this.$emit("refresh");
     },
     handleSelectionChange(selection) {
       // this.ids = selection.map(item =>{
       //   return item.id
       // })
-      this.ids = selection
+      this.ids = selection;
       // console.log('选中数组1', selection)
-      console.log('选中数组', this.ids)
+      console.log("选中数组", this.ids);
     },
     editLine() {
-      if(this.ids.length <= 0) {
+      if (this.ids.length <= 0) {
         this.$modal.notifyWarning("请至少选择一条数据进行操作!");
       } else {
-        this.dialogFormVisible = true
+        this.dialogFormVisible = true;
       }
     },
+    // 拆单
+    async useDisassembly() {
+      try {
+        let ids = this.ids.map((item) => item.id);
+
+        let tableLit = _.cloneDeep(this.basicForm.itemList);
+        tableLit = tableLit.map((item) => {
+          let index = ids.findIndex((i) => i === item.id);
+
+          if (index !== -1) {
+            item.isWhether = "1";
+          }
+          return item;
+        });
+        let { code, msg } = await divideDoc({
+          ...this.basicForm,
+          itemList: tableLit,
+        });
+        if (code === 200) {
+          this.$notify.success(msg);
+          this.back();
+        }
+      } catch (error) {}
+    },
     confirm() {
-      console.log(this.ids)
-      console.log('修改值',this.dialogForm)
-      this.ids.forEach(item => {
-        item[this.dialogForm.region] = this.dialogForm.info
-        item.serviceFee = ((item.ratio*0.01) * item.amount).toFixed(2)
-      })
-      this.dialogFormVisible = false
+      console.log(this.ids);
+      console.log("修改值", this.dialogForm);
+      this.ids.forEach((item) => {
+        item[this.dialogForm.region] = this.dialogForm.info;
+        // 小计 = 数量 * 单价
+        item.amount = item.qty * item.price;
+        item.serviceFee = (item.ratio * 0.01 * item.amount).toFixed(2);
+      });
+      this.dialogFormVisible = false;
     },
     clearInfo() {
       this.dialogForm = {
-        region: 'ratio',
-        info: ''
-      }
+        region: "ratio",
+        info: "",
+      };
     },
     delLines() {},
     toOA() {
       this.$modal.loading("正在提交,请稍后...");
-      toOAs(this.basicForm).then(res => {
-        if (res.code === 200) {
+      toOAs(this.basicForm)
+        .then((res) => {
+          if (res.code === 200) {
+            this.$modal.closeLoading();
+            this.$modal.notifySuccess(res.msg);
+            this.back();
+          }
+        })
+        .catch((err) => {
           this.$modal.closeLoading();
-          this.$modal.notifySuccess(res.msg);
-          this.back()
-        }
-      }).catch(err => {
-        this.$modal.closeLoading();
-      })
+        });
     },
     changeFei(index, row) {
-      console.log(index)
-      console.log(row)
-      row.serviceFee = ((row.ratio*0.01) * row.amount).toFixed(2)
+      console.log(index);
+      console.log(row);
+      row.amount = row.qty * row.price;
+      row.serviceFee = (row.ratio * 0.01 * row.amount).toFixed(2);
       // this.basicForm.serviceFee = this.basicForm.itemList.map(item => {
       //   return item.serviceFee += item.serviceFee
       // })
@@ -369,8 +604,8 @@ export default {
           return "是";
       }
     },
-  }
-}
+  },
+};
 </script>
 
 <style lang="scss" scoped>
@@ -378,12 +613,12 @@ export default {
   display: flex;
   justify-content: space-between;
   position: absolute;
-  top: 10px;right: 20px;
-
+  top: 10px;
+  right: 20px;
 }
 .btn_grooup {
   margin-bottom: 10px;
   display: flex;
   justify-content: space-between;
 }
-</style>
+</style>