diff --git a/components/ai-chat/ai-chat.vue b/components/ai-chat/ai-chat.vue
new file mode 100644
index 0000000..20f91b5
--- /dev/null
+++ b/components/ai-chat/ai-chat.vue
@@ -0,0 +1,217 @@
+
+
+
+
+
+
+
+
+
+ 您好!我是金久信签约宝AI智能客服,可以帮您解答金久信签约宝使用过程中注册、操作、适用场景等问题。请问有什么可以帮您?
+
+ 注册准备资料事项
+ 关键字无法识别
+ 金久信签约宝法律效力
+ 电子签约不适用场景
+
+
+
+
+
+
+
+
+ 思考中...
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/components/right-bar/right-bar.vue b/components/right-bar/right-bar.vue
index 2ff85c4..7e535b6 100644
--- a/components/right-bar/right-bar.vue
+++ b/components/right-bar/right-bar.vue
@@ -22,13 +22,11 @@
-
-
-

-
- 在线客服
+
+
+

+
+ AI 客服
@@ -66,6 +64,7 @@
+
diff --git a/pages.json b/pages.json
index 463de07..239c21d 100644
--- a/pages.json
+++ b/pages.json
@@ -424,7 +424,7 @@
"navigationBarTitleText": "加工商信息",
"enablePullDownRefresh": false
}
- }
+ }
],
"globalStyle": {
"navigationBarTextStyle": "black",
diff --git a/pages/contract/index.vue b/pages/contract/index.vue
index d2140a5..5c0881a 100644
--- a/pages/contract/index.vue
+++ b/pages/contract/index.vue
@@ -1,1902 +1,2168 @@
-
-
-
-
-
-
-
-
-
-
-
-
- 金久信签约宝
-
-
-
-
-
- 金久信签约宝简介
-
-
-
-
-
- 金久信签约宝消费明细
-
-
-
-
-
- 金久信签约宝重要提示
-
-
-
-
-
- {{ signFlowTitle }}
-
-
-
-
-
- 认证信息变更
-
-
-
-
-
- 使用明细
-
- 付费明细
-
-
-
-
-
-
-
- {{ parseInt(scope.row.contract.signType) === 1 ? '单据签约' : '合同签约' }}
-
-
-
-
-
- {{
+
+
+
+
+
+
+
+
+
+
+
+
+ 金久信签约宝
+
+
+
+
+
+ 金久信签约宝简介
+
+
+
+
+
+ 金久信签约宝消费明细
+
+
+
+
+
+ 金久信签约宝重要提示
+
+
+
+
+
+ {{ signFlowTitle }}
+
+
+
+
+
+ 认证信息变更
+
+
+
+
+
+
+
+
+ 使用明细
+
+ 付费明细
+
+
+
+
+
+
+
+ {{ parseInt(scope.row.contract.signType) === 1 ? '单据签约' : '合同签约' }}
+
+
+
+
+
+ {{
scope.row.mineContract ? (scope.row.mineContract.role === 'third' ? '第三方' : (scope.row.mineContract.userId === scope.row.userId ? '发起方' : '接收方')) : ''
}}
-
-
-
-
- 扣除次数:1次
-
- 剩余次数:{{ scope.row.remainNum }}次
-
-
-
-
-
-
-
-
-
-
-
-
- {{ scope.row.type === 12 ? '合同司法调证' : '金久信签约宝续费' }}
-
-
-
-
-
- {{ scope.row.type === 12 ? scope.row.amount : scope.row.payAmount }}
-
-
-
-
- {{ scope.row.goods[0].goodsName }}
- 剩余{{ scope.row.remainNum }}次
-
-
-
-
-
- 申请发票
-
-
- 开票中
- 下载
-
-
- 查看支付凭证
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 金久信签约宝
-
-
-
-
-
- 合同签约
- 单据签约
-
-
-
-
- 搜索
-
-
-
-
-
-
- 询价单
-
- 加工单
-
- 金久信签约宝
-
- 旧货交易
-
- 自营询价
-
-
-
- 自主交易
-
- 金久信公证
-
-
-
- 标准合同
-
- 双方协商合同
-
- 线下合同
-
-
-
- 金久信公证
-
-
- {{ item.contract.docTitle }}
-
-
-
- {{ item.sheet.title }}
-
-
-
-
-
- 待交易方签署
-
- 待第三方签署
-
- 待我签署
-
-
-
-
-
-
- (订单状态:{{
+
+
+
+
+ 扣除次数:1次
+
+ 剩余次数:{{ scope.row.remainNum }}次
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.type === 12 ? '合同司法调证' : '金久信签约宝续费' }}
+
+
+
+
+
+ {{ scope.row.type === 12 ? scope.row.amount : scope.row.payAmount }}
+
+
+
+
+ {{ scope.row.goods[0].goodsName }}
+ 剩余{{ scope.row.remainNum }}次
+
+
+
+
+
+ 申请发票
+
+
+ 开票中
+ 下载
+
+
+ 查看支付凭证
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 金久信签约宝
+
+
+
+
+
+ 合同签约
+ 单据签约
+
+
+
+
+ 搜索
+
+
+
+
+
+
+ 询价单
+
+ 加工单
+
+ 金久信签约宝
+
+ 旧货交易
+
+ 自营询价
+
+
+
+ 自主交易
+
+ 金久信公证
+
+
+
+ 标准合同
+
+ 双方协商合同
+
+ 线下合同
+
+
+
+ 金久信公证
+
+
+ {{ item.contract.docTitle }}
+
+
+
+ {{ item.sheet.title }}
+
+
+
+
+
+ 待交易方签署
+
+ 待第三方签署
+
+ 待我签署
+
+
+
+
+
+
+ (订单状态:{{
item.order.orderStatus === 4 ? '已完成' : ([5, 6].includes(item.order.orderStatus) ? '订单终止' : '执行中')
}})
-
-
-
-
- 合同编码:{{ item.contract.transactionId }}
-
-
- 交易编码:{{
+
+
+
+
+ 合同编码:{{ item.contract.transactionId }}
+
+
+ 交易编码:{{
item.contract.type === 'enquiry' ? item.sheet.enquiryNo : item.sheet.orderNo
}}
-
-
- 创建时间:{{ item.contract._add_time_str }}
-
-
- 签订截止时间:{{
+
+
+ 创建时间:{{ item.contract._add_time_str }}
+
+
+ 签订截止时间:{{
dayjs(item.contract.signEndDate).format('YYYY-MM-DD HH:mm:ss')
}}
-
-
- 费用承担方:{{
+
+
+ 费用承担方:{{
item.contract.payUser.user.accountType === 2 ?
item.contract.payUser.user.company.companyName : item.contract.payUser.user.person.personName
}}
-
-
-
-
- 发起方签订完成时间:{{
+
+
+
+
+ 发起方签订完成时间:{{
party.signedAt ? dayjs(party.signedAt).format('YYYY-MM-DD HH:mm:ss') : ''
}}
-
-
- 接收方签订完成时间:{{
+
+
+ 接收方签订完成时间:{{
party.signedAt ? dayjs(party.signedAt).format('YYYY-MM-DD HH:mm:ss') : ''
}}
-
-
- 第三方签订完成时间:{{
+
+
+ 第三方签订完成时间:{{
party.signedAt ? dayjs(party.signedAt).format('YYYY-MM-DD HH:mm:ss') : ''
}}
-
-
-
- 第{{ numToChForThird[partyIndex] }}方签订完成时间:{{
+
+
+
+ 第{{ numToChForThird[partyIndex] }}方签订完成时间:{{
party.signedAt ? dayjs(party.signedAt).format('YYYY-MM-DD HH:mm:ss') : ''
}}
-
-
-
-
-
- 查看交易方
-
- 创建合同
-
-
- 删除合同
-
-
-
- {{ item.sign ? '已签署' : '签署文件' }}
-
-
-
-
- {{ parseInt(item.contract.signType) === 1 ? '查看单据' : '查看合同' }}
-
-
- {{ parseInt(item.contract.signType) === 1 ? '下载单据' : '下载合同' }}
-
-
- {{
+
+
+
+
+
+ 查看交易方
+
+ 创建合同
+
+
+ 删除合同
+
+
+
+ {{ item.sign ? '已签署' : '签署文件' }}
+
+
+
+
+ {{ parseInt(item.contract.signType) === 1 ? '查看单据' : '查看合同' }}
+
+
+ {{ parseInt(item.contract.signType) === 1 ? '下载单据' : '下载合同' }}
+
+
+ {{
parseInt(item.contract.signType) === 1 ? '下载单据(付费司法调证)' : '下载合同(付费司法调证)'
}}
-
-
-
- {{
+
+
+
+ {{
(item.order && item.order.orderStatus === 4) ? '订单已结束' : ([5, 6].includes(item.order.orderStatus) ? '订单已终止' : (item.role === 'buyer' ? '去付款' : '去请款'))
}}
-
- 查看附件
-
-
-
-
-
-
- 修改合同内容
-
-
-
-
-
-
-
-
-
-
- 您剩余金久信签约宝次数: {{ userInfo.qybNum }}次
- 立即购买
-
-
- 温馨提示:尊敬的用户如果您的剩余金久信签约宝次数为0次,请先进行购买,再进行签约。
-
-
- 点击下载
-
-
-
-
-
- 预览:
- {{ form2.data.contractFile[form2.data.contractFile.length - 1].split('-').pop() }}
-
-
- 仅支持PDF文件,如有其他附件或多个单据签约请合并成一个PDF文档上传。且仅支持纵向文档上传,横向文档显示不完整。电子签署文件中需添加以下内容以增强双方约束力和文件法律效力:签约双方均自愿通过以“电子签约”形式进行签约,电子签名和加盖电子印章双方均予以认可具有法律效力。
-
-
-
-
-
-
-
- 注意事项(电子签名不适用文件):
- 1.婚姻、继承、收养等人身关系的;
- 2.涉及停止供水、供热、供气等公用事业服务的;
- 3.其他法律、行政法规规定的不适用电子文书的其他形式;
-
-
-
-
第{{ numToChForThird[index] }}方
-
-
-
-
-
-
-
-
-
-
-
-
-
- 如无第三方签约可忽略,签章关键字使用方法同下。
- 手机号请连续输入,请勿添加空格和断开输入,系统无法准确识别。
-
-
-
- 提交
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+ 修改合同内容
+
+
+
+
+
+
+
+
+
+
+ 您剩余金久信签约宝次数: {{ userInfo.qybNum }}次
+ 立即购买
+
+
+ 温馨提示:尊敬的用户如果您的剩余金久信签约宝次数为0次,请先进行购买,再进行签约。
+
+
+ 点击下载
+
+
+
+
+
+ 预览:
+ {{ form2.data.contractFile[form2.data.contractFile.length - 1].split('-').pop() }}
+
+
+ 仅支持PDF文件,如有其他附件或多个单据签约请合并成一个PDF文档上传。且仅支持纵向文档上传,横向文档显示不完整。电子签署文件中需添加以下内容以增强双方约束力和文件法律效力:签约双方均自愿通过以“电子签约”形式进行签约,电子签名和加盖电子印章双方均予以认可具有法律效力。
+
+
+
+
+
+
+
+ 注意事项(电子签名不适用文件):
+ 1.婚姻、继承、收养等人身关系的;
+ 2.涉及停止供水、供热、供气等公用事业服务的;
+ 3.其他法律、行政法规规定的不适用电子文书的其他形式;
+
+
+
+
第{{ numToChForThird[index] }}方
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 如无第三方签约可忽略,签章关键字使用方法同下。
+ 手机号请连续输入,请勿添加空格和断开输入,系统无法准确识别。
+
+
+
+ 提交
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 🤖
+
+ 您好!我是金久信签约宝AI智能客服,可以帮您解答金久信签约宝使用过程中注册、操作、适用场景等问题。请问有什么可以帮您?
+
+ 注册准备资料事项
+ 关键字无法识别
+ 金久信签约宝法律效力
+ 电子签约不适用场景
+
+
+
+
+ 🤖
+
+
+
+ 🤖
+ 思考中...
+
+
+
+
+ 发送
+
+
+
+
-
-
+
+
-
-
-
-
-
- 预览:
- {{ form1.data.contractFile[form1.data.contractFile.length - 1].split('-').pop() }}
-
-
- 仅支持PDF文件,如有其他附件或多个单据签约请合并成一个PDF文档上传。且仅支持纵向文档上传,横向文档显示不完整。电子签署文件中需添加以下内容以增强双方约束力和文件法律效力:签约双方均自愿通过以“电子签约”形式进行签约,电子签名和加盖电子印章双方均予以认可具有法律效力。
-
-
-
- 点击下载
-
-
-
-
第{{ numToChForThird[index] }}方
-
-
-
-
-
-
-
-
-
-
-
-
-
- 如无第三方签约可忽略,签章关键字使用方法同下。
- 手机号请连续输入,请勿添加空格和断开输入,系统无法准确识别。
-
-
-
- 提交
-
-
-
-
+
+
+
+
+
+ 预览:
+ {{ form1.data.contractFile[form1.data.contractFile.length - 1].split('-').pop() }}
+
+
+ 仅支持PDF文件,如有其他附件或多个单据签约请合并成一个PDF文档上传。且仅支持纵向文档上传,横向文档显示不完整。电子签署文件中需添加以下内容以增强双方约束力和文件法律效力:签约双方均自愿通过以“电子签约”形式进行签约,电子签名和加盖电子印章双方均予以认可具有法律效力。
+
+
+
+ 点击下载
+
+
+
+
第{{ numToChForThird[index] }}方
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 如无第三方签约可忽略,签章关键字使用方法同下。
+ 手机号请连续输入,请勿添加空格和断开输入,系统无法准确识别。
+
+
+
+ 提交
+
+
+
+
-
- 请选择购买次数
-
-
-
{{ item.amount }}元
-
可获得{{ item.getNum }}次
-
-
-
- 剩余金久信签约宝次数:{{ userInfo.qybNum }}次
-
-
- 确定
- 取消
-
-
+
+ 请选择购买次数
+
+
+
{{ item.amount }}元
+
可获得{{ item.getNum }}次
+
+
+
+ 剩余金久信签约宝次数:{{ userInfo.qybNum }}次
+
+
+ 确定
+ 取消
+
+
-
- 请输入开票信息
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+ 请输入开票信息
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
- 确定
- 取消
-
-
-
-
-
-
+
+
+ 确定
+ 取消
+
+
+
+
+
+
+
+
+
+ .buy-quote-mode-active {
+ border: 1px solid #a92924;
+ background-color: #f1c7c7;
+ color: #333;
+ }
+
+ /* ===== 右侧悬浮工具栏 ===== */
+ .float-toolbar {
+ position: fixed;
+ right: 20px;
+ top: 50%;
+ transform: translateY(-50%);
+ background: #fff;
+ border-radius: 12px;
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.12);
+ padding: 12px 0;
+ z-index: 100;
+ width: 72px;
+ }
+
+ .float-toolbar .tool-item {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ padding: 10px 8px;
+ cursor: pointer;
+ transition: all 0.2s;
+ }
+
+ .float-toolbar .tool-item:hover {
+ background: #f6eae9;
+ }
+
+ .float-toolbar .tool-item .tool-icon {
+ font-size: 22px;
+ margin-bottom: 4px;
+ }
+
+ .float-toolbar .tool-item .tool-label {
+ font-size: 10px;
+ color: #666;
+ text-align: center;
+ line-height: 1.3;
+ }
+
+ .float-toolbar .tool-divider {
+ height: 1px;
+ background: #eee;
+ margin: 4px 12px;
+ }
+
+ .float-toolbar .tool-item.ai-hot {
+ position: relative;
+ }
+
+ .float-toolbar .tool-item.ai-hot::after {
+ content: "AI";
+ position: absolute;
+ top: 4px;
+ right: 8px;
+ background: #a92924;
+ color: #fff;
+ font-size: 8px;
+ padding: 1px 4px;
+ border-radius: 6px;
+ }
+
+ /* ===== 新增AI功能菜单组 ===== */
+ .menu-group-title {
+ padding: 8px 20px 4px;
+ font-size: 11px;
+ color: #999;
+ letter-spacing: 2px;
+ text-transform: uppercase;
+ }
+
+ /* AI 客服嵌入样式 */
+ .ai-chat-embed {
+ background: #fff;
+ border-radius: 8px;
+ display: flex;
+ flex-direction: column;
+ height: calc(100vh - 260px);
+ overflow: hidden;
+ }
+ .chat-header-bar {
+ padding: 14px 20px;
+ border-bottom: 1px solid #eee;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ }
+ .chat-title { font-size: 15px; font-weight: 600; }
+ .chat-subtitle { font-size: 12px; color: #999; }
+ .chat-msg-list { flex: 1; padding: 16px 20px; background: #f7f8fa; }
+ .chat-row { display: flex; gap: 10px; margin-bottom: 12px; }
+ .chat-row.right { flex-direction: row-reverse; }
+ .chat-avatar {
+ width: 32px; height: 32px; border-radius: 50%;
+ background: linear-gradient(135deg, #a92924, #d4574e);
+ display: flex; align-items: center; justify-content: center;
+ color: #fff; font-size: 14px; flex-shrink: 0;
+ }
+ .chat-bubble {
+ max-width: 65%; padding: 10px 14px; border-radius: 12px;
+ font-size: 13px; line-height: 1.6; word-break: break-word;
+ }
+ .chat-row:not(.right) .chat-bubble { background: #fff; border: 1px solid #eee; border-top-left-radius: 4px; }
+ .chat-row.right .chat-bubble { background: #a92924; color: #fff; border-top-right-radius: 4px; }
+ .chat-bubble.typing { color: #999; }
+ .quick-btns { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
+ .quick-btn {
+ padding: 5px 12px; border-radius: 14px; font-size: 12px; cursor: pointer;
+ border: 1px solid #a92924; color: #a92924; background: #fff; transition: all 0.2s;
+ }
+ .quick-btn:hover { background: #a92924; color: #fff; }
+ .chat-input-bar {
+ padding: 12px 20px; border-top: 1px solid #eee;
+ display: flex; gap: 10px; background: #fff;
+ }
+ .chat-input-bar input {
+ flex: 1; height: 38px; border: 1px solid #ddd; border-radius: 8px;
+ padding: 0 12px; font-size: 13px; outline: none;
+ }
+ .chat-input-bar input:focus { border-color: #a92924; }
+ .chat-send-btn {
+ padding: 0 20px; height: 38px; line-height: 38px;
+ background: #a92924; color: #fff; border-radius: 8px;
+ font-size: 13px; cursor: pointer;
+ }
+ .chat-send-btn:hover { background: #982520; }
+
\ No newline at end of file