gaoluyang
6 天以前 7a0ffb0048adeda9ebfbca1d0b525eb224c173e3
src/pages/sales/invoicingRegistration/add.vue
@@ -4,67 +4,63 @@
    <PageHeader title="新增开票登记" @back="goBack" />
    
    <!-- 表单内容 -->
    <u-form @submit="submitForm" ref="formRef" label-width="110" input-align="right" error-message-align="right">
    <van-form @submit="submitForm" ref="formRef" label-width="110px" input-align="right" error-message-align="right" scroll-to-error scroll-to-error-position="center">
      <!-- 基本信息 -->
      <u-cell-group title="基本信息">
        <u-form-item label="销售合同号" border-bottom>
          <u-input
            v-model="form.salesContractNo"
            readonly
            placeholder="自动填充"
          />
        </u-form-item>
        <u-form-item label="客户名称" border-bottom>
          <u-input
            v-model="form.customerName"
            readonly
            placeholder="自动填充"
          />
        </u-form-item>
        <u-form-item label="业务员" border-bottom>
          <u-input
            v-model="form.salesman"
            readonly
            placeholder="自动填充"
          />
        </u-form-item>
        <u-form-item label="项目名称" border-bottom>
          <u-input
            v-model="form.projectName"
            readonly
            placeholder="自动填充"
          />
        </u-form-item>
        <u-form-item label="录入人" border-bottom>
          <u-input
            v-model="form.createUer"
            readonly
            placeholder="请输入录入人"
          />
        </u-form-item>
        <u-form-item label="录入日期" border-bottom>
          <u-input
            v-model="form.createTime"
            readonly
            placeholder="请选择录入日期"
            @click="showCreateTimePicker = true"
          />
        </u-form-item>
        <u-form-item label="发票号码" prop="invoiceNo" required border-bottom>
          <u-input
            v-model="form.invoiceNo"
            placeholder="请输入发票号码"
          />
        </u-form-item>
        <u-form-item label="开票日期" prop="issueDate" required border-bottom>
          <u-input
            v-model="form.issueDate"
            readonly
            placeholder="请选择开票日期"
            @click="showIssueDatePicker = true"
          />
        </u-form-item>
      </u-cell-group>
      <van-cell-group title="基本信息" inset>
        <van-field
          v-model="form.salesContractNo"
          label="销售合同号"
          readonly
          placeholder="自动填充"
        />
        <van-field
          v-model="form.customerName"
          label="客户名称"
          readonly
          placeholder="自动填充"
        />
        <van-field
          v-model="form.salesman"
          label="业务员"
          readonly
          placeholder="自动填充"
        />
        <van-field
          v-model="form.projectName"
          label="项目名称"
          readonly
          placeholder="自动填充"
        />
        <van-field
          v-model="form.createUer"
          label="录入人"
               readonly
          placeholder="请输入录入人"
        />
            <van-field
               v-model="form.createTime"
               label="录入日期"
               readonly
               placeholder="请选择录入日期"
               @click="showCreateTimePicker = true"
            />
            <van-field
               v-model="form.invoiceNo"
               label="发票号码"
               required
               placeholder="请输入发票号码"
               :rules="[{ required: true, message: '请输入发票号码' }]"
            />
        <van-field
          v-model="form.issueDate"
          label="开票日期"
          readonly
          placeholder="请选择开票日期"
               required
          @click="showIssueDatePicker = true"
          :rules="[{ required: true, message: '请选择开票日期' }]"
        />
      </van-cell-group>
      <!-- 产品信息 -->
      <view class="product-section">
@@ -73,7 +69,7 @@
        </view>
        
        <view v-if="productData.length === 0" class="empty-state">
          <u-empty text="暂无产品数据" />
          <van-empty description="暂无产品数据" />
        </view>
        
        <view v-else class="product-list">
@@ -85,151 +81,120 @@
            <!-- 产品头部 -->
            <view class="product-header">
              <view class="product-title">
                <u-icon name="file-text" color="#2979ff" size="15" />
                <van-icon name="description" color="#2979ff" size="15" />
                <text class="product-productCategory">产品 {{ index + 1 }}</text>
              </view>
            </view>
            
            <!-- 产品信息表单 -->
            <view class="product-form">
              <u-form-item label="产品大类" border-bottom>
                <u-input
                  v-model="item.productCategory"
                  readonly
                />
              </u-form-item>
              <u-form-item label="规格型号" border-bottom>
                <u-input
                  v-model="item.specificationModel"
                  readonly
                />
              </u-form-item>
              <u-form-item label="单位" border-bottom>
                <u-input
                  v-model="item.unit"
                  readonly
                />
              </u-form-item>
              <u-form-item label="数量" border-bottom>
                <u-input
                  v-model="item.quantity"
                  readonly
                />
              </u-form-item>
              <u-form-item label="税率(%)" border-bottom>
                <u-input
                  v-model="item.taxRate"
                  readonly
                />
              </u-form-item>
              <u-form-item label="含税单价(元)" border-bottom>
                <u-input
                  v-model="item.taxInclusiveUnitPrice"
                  readonly
                />
              </u-form-item>
              <u-form-item label="含税总价(元)" border-bottom>
                <u-input
                  v-model="item.taxInclusiveTotalPrice"
                  readonly
                />
              </u-form-item>
              <u-form-item label="不含税总价(元)" border-bottom>
                <u-input
                  v-model="item.taxExclusiveTotalPrice"
                  readonly
                />
              </u-form-item>
              <van-field
                v-model="item.productCategory"
                label="产品大类"
                readonly
              />
              <van-field
                v-model="item.specificationModel"
                label="规格型号"
                readonly
              />
              <van-field
                v-model="item.unit"
                label="单位"
                readonly
              />
              <van-field
                v-model="item.quantity"
                label="数量"
                readonly
              />
              <van-field
                v-model="item.taxRate"
                        label="税率(%)"
                readonly
              />
              <van-field
                v-model="item.taxInclusiveUnitPrice"
                label="含税单价(元)"
                readonly
              />
              <van-field
                v-model="item.taxInclusiveTotalPrice"
                label="含税总价(元)"
                readonly
              />
              <van-field
                v-model="item.taxExclusiveTotalPrice"
                label="不含税总价(元)"
                readonly
              />
              
              <!-- 本次开票信息 -->
              <u-form-item label="本次开票数" border-bottom>
                <u-input
                  v-model="item.currentInvoiceNum"
                  type="number"
                  placeholder="请输入开票数量"
                  @blur="invoiceNumBlur(item)"
                />
              </u-form-item>
              <u-form-item label="本次开票金额(元)" border-bottom>
                <u-input
                  v-model="item.currentInvoiceAmount"
                  type="number"
                  placeholder="请输入开票金额"
                  @blur="invoiceAmountBlur(item)"
                />
              </u-form-item>
              <van-field
                v-model="item.currentInvoiceNum"
                label="本次开票数"
                type="number"
                placeholder="请输入开票数量"
                @blur="invoiceNumBlur(item)"
              />
              <van-field
                v-model="item.currentInvoiceAmount"
                label="本次开票金额(元)"
                type="number"
                placeholder="请输入开票金额"
                @blur="invoiceAmountBlur(item)"
              />
              
              <!-- 未开票信息 -->
              <u-form-item label="未开票数" border-bottom>
                <u-input
                  v-model="item.noInvoiceNum"
                  readonly
                />
              </u-form-item>
              <u-form-item label="未开票金额(元)" border-bottom>
                <u-input
                  v-model="item.noInvoiceAmount"
                  readonly
                />
              </u-form-item>
              <van-field
                v-model="item.noInvoiceNum"
                label="未开票数"
                readonly
              />
              <van-field
                v-model="item.noInvoiceAmount"
                label="未开票金额(元)"
                readonly
              />
            </view>
          </view>
        </view>
      </view>
      <!-- 提交按钮 -->
      <view class="footer-btns">
        <u-button class="cancel-btn" @click="goBack">取消</u-button>
        <u-button class="save-btn" type="primary" @click="submitForm">保存</u-button>
      </view>
    </u-form>
         <view class="footer-btns">
            <van-button class="cancel-btn" @click="goBack">取消</van-button>
            <van-button class="save-btn" native-type="submit" form-type="submit">保存</van-button>
         </view>
    </van-form>
    <!-- 日期选择器 -->
    <u-popup v-model="showIssueDatePicker" mode="bottom">
      <u-datetime-picker
    <van-popup v-model:show="showIssueDatePicker" position="bottom">
      <van-date-picker
        v-model="currentIssueDate"
        title="选择开票日期"
        @confirm="onIssueDateConfirm"
        @cancel="showIssueDatePicker = false"
      />
    </u-popup>
    </van-popup>
    <u-popup v-model="showCreateTimePicker" mode="bottom">
      <u-datetime-picker
    <van-popup v-model:show="showCreateTimePicker" position="bottom">
      <van-date-picker
        v-model="currentCreateTime"
        title="选择录入日期"
        @confirm="onCreateTimeConfirm"
        @cancel="showCreateTimePicker = false"
      />
    </u-popup>
    </van-popup>
  </view>
</template>
<script setup>
import { ref, reactive, onMounted } from 'vue'
// 替换 Vant 的 toast 为 uni 原生或 uview-plus 的方法
// import { showToast, showLoadingToast, closeToast } from 'vant'
import { showToast, showLoadingToast, closeToast } from 'vant'
import { invoiceRegistrationSave } from '@/api/salesManagement/invoiceRegistration'
import useUserStore from '@/store/modules/user'
import {getSalesLedgerWithProducts} from "@/api/salesManagement/salesLedger";
// 替换 toast 方法
const showToast = (message) => {
  uni.showToast({
    title: message,
    icon: 'none'
  })
}
const showLoadingToast = (message) => {
  uni.showLoading({
    title: message || '加载中...'
  })
}
const closeToast = () => {
  uni.hideLoading()
}
const userStore = useUserStore()
const editData = ref(null);