Browse Source

修改 bug

master
王泽彦 7 months ago
parent
commit
122a740e8e
  1. 101
      niucloud/app/api/controller/apiController/Contract.php
  2. 4
      uniapp/common/config.js

101
niucloud/app/api/controller/apiController/Contract.php

@ -15,6 +15,8 @@ use app\Request;
use app\service\api\apiService\ContractService;
use app\service\api\apiService\ContractSignFormService;
use core\base\BaseApiService;
use think\facade\Db;
use think\facade\Log;
/**
* 合同管理控制器
@ -426,8 +428,107 @@ class Contract extends BaseApiService
}
}
/**
* 确认生成合同文档
* @param Request $request
* @return mixed
*/
public function confirmGenerateContract(Request $request)
{
$contract_sign_id = $request->param('contract_sign_id', 0);
if (empty($contract_sign_id)) {
return fail('合同签署记录ID不能为空');
}
try {
// 获取合同签署记录信息
$contractSign = Db::table('school_contract_sign')
->where('id', $contract_sign_id)
->where('deleted_at', 0)
->find();
if (!$contractSign) {
return fail('合同签署记录不存在');
}
// 检查状态是否允许生成文档
if ($contractSign['status'] == 3) {
return fail('合同文档已生成,无需重复生成');
}
// 获取合同模板信息
$contract = Db::table('school_contract')
->where('id', $contractSign['contract_id'])
->where('deleted_at', 0)
->find();
if (!$contract) {
return fail('合同模板不存在');
}
// 使用ContractSignFormService的公共方法获取完整的表单数据(包括处理后的default_value)
$contractSignFormService = new ContractSignFormService();
$signFormData = $contractSignFormService->getStudentContractSignFormBySignId($contract_sign_id, $contractSign['student_id']);
if (empty($signFormData) || empty($signFormData['form_fields'])) {
return fail('未找到合同字段配置数据');
}
// 准备填充数据 - 使用处理后的default_value
$fillData = [];
foreach ($signFormData['form_fields'] as $field) {
$placeholder = $field['placeholder'];
$defaultValue = $field['default_value'] ?? '';
$fillData[$placeholder] = $defaultValue;
}
// 调用DocumentTemplateService生成Word文档
$documentService = new \app\service\admin\document\DocumentTemplateService();
$generateData = [
'template_id' => $contractSign['contract_id'],
'fill_data' => $fillData,
'output_filename' => $contract['contract_name'] . '_' . $contractSign['student_id'] . '_' . date('YmdHis') . '.docx'
];
$result = $documentService->generateDocument($generateData);
// 更新school_contract_sign表的sign_file字段和status字段
$updateResult = Db::table('school_contract_sign')
->where('id', $contract_sign_id)
->update([
'sign_file' => $result['file_path'],
'status' => 3,
'updated_at' => time()
]);
if (!$updateResult) {
return fail('更新合同签署记录失败');
}
// 记录日志
Log::info('合同文档生成成功', [
'contract_sign_id' => $contract_sign_id,
'contract_id' => $contractSign['contract_id'],
'student_id' => $contractSign['student_id'],
'file_path' => $result['file_path']
]);
return success([
'file_path' => $result['file_path'],
'file_name' => $result['file_name'],
'download_url' => $result['download_url']
], '合同文档生成成功');
} catch (\Exception $e) {
// 记录错误日志
Log::error('合同文档生成失败', [
'contract_sign_id' => $contract_sign_id,
'error' => $e->getMessage(),
'trace' => $e->getTraceAsString()
]);
return fail('合同文档生成失败:' . $e->getMessage());
}
}
}

4
uniapp/common/config.js

@ -1,6 +1,6 @@
// 环境变量配置
const env = 'development'
// const env = 'prod'
// const env = 'development'
const env = 'prod'
const isMockEnabled = false // 默认禁用Mock优先模式,仅作为回退
const isDebug = false // 默认启用调试模式
const devurl = 'http://localhost:20080/api'

Loading…
Cancel
Save