no message

This commit is contained in:
DESKTOP-369JRHT\12997 2024-05-29 15:15:33 +08:00
parent d36c077bea
commit 3ab8bb27d5
21 changed files with 1189 additions and 49 deletions

View File

@ -81,6 +81,13 @@ public class HandoverRecordController extends BaseController {
return getSuccessResult(this.handoverRecordService.insert(handoverRecord));
}
@PostMapping("addByPos")
public ResponseObject addByPos(@RequestBody HandoverRecord handoverRecord) {
AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo();
handoverRecord.setStaffId(nowAccountInfo.getStaffId());
return getSuccessResult(this.handoverRecordService.insert(handoverRecord));
}
/**
* 编辑数据
*

View File

@ -28,6 +28,7 @@ public class HandoverRecord extends BaseEntity {
* 交班数据记录
*/
private String recordData;
@TableField(exist = false)
private String totalPayMoney;
private String staffName;

View File

@ -319,7 +319,16 @@
SUM(CASE WHEN aoi.content = '储值卡订单' THEN pay_money ELSE 0 END) AS userBalance,
COUNT(CASE WHEN aoi.content = '储值卡订单' THEN 0 END) AS userBalanceCount,
SUM(CASE WHEN aoi.content = '油品充值' THEN pay_money ELSE 0 END) AS oilBalance,
COUNT(CASE WHEN aoi.content = '油品充值' THEN 0 END) AS oilBalanceCount
COUNT(CASE WHEN aoi.content = '油品充值' THEN 0 END) AS oilBalanceCount,
SUM(CASE WHEN aoi.content = '储值卡订单' and pay_type = 'WECHAT' THEN pay_money ELSE 0 END) AS userBalanceByWechat,
COUNT(CASE WHEN aoi.content = '储值卡订单' and pay_type = 'WECHAT' THEN 0 END) AS userBalanceCountByWechat,
SUM(CASE WHEN aoi.content = '储值卡订单' and pay_type = 'ALIPAY' THEN pay_money ELSE 0 END) AS userBalanceByAli,
COUNT(CASE WHEN aoi.content = '储值卡订单' and pay_type = 'ALIPAY' THEN 0 END) AS userBalanceCountByali
from all_order_info aoi
left join mt_user mu ON aoi.user_id = mu.id
<where>
@ -376,21 +385,29 @@
all_order_info
<where>
staff_id = #{staffId}
<if test="startTime != null and startTime != ''">
AND start_time >= #{startTime} -- 开始时间检索
</if>
<if test="endTime != null and endTime != ''">
AND end_time &lt;= #{endTime} -- 结束时间检索
</if>
<if test="startTime != null "><!-- 开始时间检索 -->
and date_format(pay_time,'%y%m%d') &gt;= date_format(#{startTime},'%y%m%d')
</if>
<if test="endTime != null "><!-- 结束时间检索 -->
and date_format(pay_time,'%y%m%d') &lt;= date_format(#{endTime},'%y%m%d')
</if>
</where>
</select>
<!-- WHERE-->
<!-- DATE(pay_time) = CURDATE();-->
<!-- <if test="startTime != null and startTime != ''">&lt;!&ndash; 开始时间检索 &ndash;&gt;-->
<!-- and date_format(start_time,'%y%m%d') &gt;= date_format(#{startTime},'%y%m%d')-->
<!-- <if test="startTime != null ">&lt;!&ndash; 开始时间检索 &ndash;&gt;-->
<!-- and date_format(pay_time,'%y%m%d') &gt;= date_format(#{startTime},'%y%m%d')-->
<!-- </if>-->
<!-- <if test="endTime != null and endTime != ''">&lt;!&ndash; 结束时间检索 &ndash;&gt;-->
<!-- and date_format(end_time,'%y%m%d') &lt;= date_format(#{endTime},'%y%m%d')-->
<!-- <if test="endTime != null ">&lt;!&ndash; 结束时间检索 &ndash;&gt;-->
<!-- and date_format(pay_time,'%y%m%d') &lt;= date_format(#{endTime},'%y%m%d')-->
<!-- </if>-->
<!-- <if test="startTime1 != null and startTime1 != ''">-->
<!-- AND pay_time >= #{startTime1} &#45;&#45; 开始时间检索-->
<!-- </if>-->
<!-- <if test="endTime1 != null and endTime1 != ''">-->
<!-- AND pay_time &lt;= #{endTime} &#45;&#45; 结束时间检索-->
<!-- </if>-->
</mapper>

View File

@ -100,6 +100,11 @@ public class AllOrderInfoServiceImpl extends ServiceImpl<AllOrderInfoMapper,AllO
record.setOilName(oilName.getOilName());
record.setShengshu(oilOrder.getOilNum());
}
//
if (ObjectUtil.isNotEmpty(record.getUserId())) {
MtUser mtUser = mtUserMapper.queryMemberById(record.getUserId());
record.setAvatar(mtUser.getAvatar());
}
}
return pageList;
}
@ -938,7 +943,12 @@ public class AllOrderInfoServiceImpl extends ServiceImpl<AllOrderInfoMapper,AllO
@Override
// 获取经营数据
public AllOrderInfoVo getOperatingDataPos(AllOrderInfoDto allOrderInfo){
AllOrderInfoVo tradingData = allOrderInfoMapper.getTradingData(allOrderInfo);
Integer storeId = TokenUtil.getNowAccountInfo().getStoreId();
long l = Long.parseLong(storeId.toString());
ArrayList<Long> longs = new ArrayList<>();
longs.add(l);
allOrderInfo.setStoreIds(longs);
// AllOrderInfoVo tradingData = allOrderInfoMapper.getTradingData(allOrderInfo);
return allOrderInfoMapper.getTradingData(allOrderInfo);
}

View File

@ -11,6 +11,7 @@ import com.fuint.business.order.mapper.AllOrderInfoMapper;
import com.fuint.business.order.mapper.HandoverRecordMapper;
import com.fuint.business.order.service.AllOrderInfoService;
import com.fuint.business.order.service.HandoverRecordService;
import com.fuint.business.order.vo.AllOrderInfoVo;
import com.fuint.business.store.entity.MtStore;
import com.fuint.business.store.service.StoreService;
import com.fuint.business.userManager.mapper.LJUserMapper;
@ -83,14 +84,14 @@ public class HandoverRecordServiceImpl implements HandoverRecordService {
for (HandoverRecord record : handoverRecordIPage.getRecords()) {
DateTime dateTime = DateTime.of(record.getStartTime());
DateTime dateTime1 = DateTime.of(record.getEndTime());
record.setEndTime1(dateTime.toString());
record.setStartTime1(dateTime1.toString());
allOrderInfoMapper.getHandOverList(record);
record.setTotalPayMoney(record.getTotalPayMoney());
// DateTime dateTime = DateTime.of(record.getStartTime());
// DateTime dateTime1 = DateTime.of(record.getEndTime());
// record.setEndTime1(dateTime.toString());
// record.setStartTime1(dateTime1.toString());
AllOrderInfoVo handOverList = allOrderInfoMapper.getHandOverList(record);
record.setTotalPayMoney(handOverList.getTotalPayMoney());
}
return this.handoverRecordMapper.queryAllByLimit(page, handoverRecord);
return handoverRecordIPage;
}
@Override

View File

@ -24,6 +24,7 @@ public class AllOrderInfoVo extends AllOrderInfo {
private String strokesPerDay;
private String storeCount ;
private String inertiaStore;
private String avatar;
@ -55,6 +56,11 @@ public class AllOrderInfoVo extends AllOrderInfo {
private String totalCount;
private String totalRefund;
private String userBalanceByWechat;
private String userBalanceCountByWechat;
private String userBalanceByAli;
private String userBalanceCountByali;

View File

@ -303,4 +303,17 @@ public class printerController extends BaseController {
printerService.printIntegralReport(integral,TokenUtil.getNowAccountInfo().getStoreId());
}
@GetMapping("posPrinter")
public void posPrinter() {
// printRegisterReceiver();
// Intent intent=new Intent();
//
// new ComponentName();
}
}

View File

@ -51,6 +51,7 @@ public class MtUser implements Serializable {
@ApiModelProperty("证件号码")
private String idcard;
@TableField(exist = false)
@ApiModelProperty("等级ID")
private String gradeId;
//
@ -81,7 +82,7 @@ public class MtUser implements Serializable {
@ApiModelProperty("来源渠道")
private String source;
@TableField(exist = false)
@ApiModelProperty("密码")
private String password;

BIN
fuintBackend/lib/M1AIDL.jar Normal file

Binary file not shown.

Binary file not shown.

View File

@ -5,7 +5,10 @@
<slot></slot>
</view>
<view class="my-text">{{titles}}</view>
<view class="my-icons"></view>
<view class="my-icons" @click="clickChild()">
{{type?'筛选':''}}
</view>
</view>
</template>
@ -18,7 +21,8 @@
}
},
props: {
titles: String
titles: String,
type: String
},
mounted() {
@ -26,10 +30,13 @@
methods: {
gobock() {
uni.navigateBack()
},
clickChild() {
console.log("2222222222222222222222222")
this.$emit('chiledEvent', 123);
}
}
}
</script>
@ -51,7 +58,7 @@
top: 0px;
.my-icons {
width: 20px;
width: 50px;
}

View File

@ -92,6 +92,27 @@
"navigationStyle": "custom"
}
},
{
"path": "outher/serviceList",
"style": {
"navigationBarTitleText": "服务条款",
"navigationStyle": "custom"
}
},
{
"path": "outher/my",
"style": {
"navigationBarTitleText": "关于我们",
"navigationStyle": "custom"
}
},
{
"path": "outher/yinsi",
"style": {
"navigationBarTitleText": "隐私协议",
"navigationStyle": "custom"
}
},
{
"path": "PaymentCode/PaymentCode",
"style": {

View File

@ -21,15 +21,15 @@
<view class="">消息通知</view>
<u-icon name="arrow-right" size="18"></u-icon>
</view>
<view class="h-box">
<view class="h-box" @click="goServiceList()">
<view class="">服务条款</view>
<u-icon name="arrow-right" size="18"></u-icon>
</view>
<view class="h-box">
<view class="h-box" @click="goMyList()">
<view class="">关于我们</view>
<u-icon name="arrow-right" size="18"></u-icon>
</view>
<view class="h-box">
<view class="h-box" @click="goYinsi()">
<view class="">隐私协议</view>
<u-icon name="arrow-right" size="18"></u-icon>
</view>
@ -107,6 +107,23 @@
},
goback() {
uni.navigateBack()
},
goServiceList() {
uni.navigateTo({
url: '/pagesHome/outher/serviceList'
})
},
goMyList() {
uni.navigateTo({
url: '/pagesHome/outher/my'
})
},
goYinsi() {
uni.navigateTo({
url: '/pagesHome/outher/yinsi'
})
}
}
}

View File

@ -25,6 +25,8 @@
</template>
<script>
import request from "../../utils/request";
import headers from '../../components/header/headers.vue'
import UQRCode from '../../uni_modules/Sansnn-uQRCode/js_sdk/uqrcode/uqrcode.js';
export default {
@ -35,9 +37,10 @@
}
},
onShow() {
this.onReady()
// this.actList = ["1", "1", "1", "1", "1", ]
// this.status = "nomore"
this.onReady()
},
onPullDownRefresh() {
console.log("刷新");

View File

@ -50,11 +50,12 @@
<view class="h-b-box">
<view class="">
<view class="hui-">营业额/笔数</view>
<view class="lan-">{{dataForm.cash}}/{{dataForm.cashcount}}</view>
<view class="lan-">{{dataForm.wechat}}/{{dataForm.wechatcount}}</view>
</view>
<view class="">
<view class="hui-">会员充值/笔数</view>
<view class="lan-">0.00/0</view>
<view class="lan-">{{dataForm.userBalanceByWechat }}/{{dataForm.userBalanceCountByWechat}}
</view>
</view>
</view>
<view class="d-s" style="margin-bottom: 10px;">
@ -66,14 +67,14 @@
<view class="h-b-box">
<view class="">
<view class="hui-">营业额/笔数</view>
<view class="lan-">0.00/0</view>
<view class="lan-">{{dataForm.alipay}}/{{dataForm.alipaycount}}</view>
</view>
<view class="">
<view class="hui-">会员充值/笔数</view>
<view class="lan-">0.00/0</view>
<view class="lan-">{{dataForm.userBalanceByAli}}/{{dataForm.userBalanceCountByali}}</view>
</view>
</view>
<view class="d-s" style="margin-bottom: 10px;">
<!-- <view class="d-s" style="margin-bottom: 10px;">
<view class="icon-img">
<image src="../../static/imgs/yl.png" mode=""></image>
</view>
@ -88,7 +89,7 @@
<view class="hui-">会员充值/笔数</view>
<view class="lan-">0.00/0</view>
</view>
</view>
</view> -->
</view>
@ -113,9 +114,24 @@
showStartTime: false,
showEndTime: false,
dataForm: {
sumBalance: '0',
countBalance: '0',
userBalance: '0',
userBalanceCount: '0',
refBalance: '0',
refBalanceCount: '0',
wechat: '0',
wechatcount: '0',
userBalanceByWechat: '0',
userBalanceCountByWechat: '0',
alipay: '0',
alipaycount: '0',
userBalanceByAli: '0',
userBalanceCountByali: '0',
},
form: {
}
}
},
onShow() {
@ -165,14 +181,22 @@
console.log('123123', e)
this.showStartTime = false
this.startTime = this.formatDateToYYMMDDHHMM(new Date(e.value));
this.getIndexData()
},
clickEnd(e) {
this.showEndTime = false
this.startTime = this.formatDateToYYMMDDHHMM(new Date(e.value));
this.endTime = this.formatDateToYYMMDDHHMM(new Date(e.value));
this.getIndexData()
},
//
getIndexData() {
if (this.startTime && this.endTime) {
this.form.params = {
beginTime: this.startTime,
endTime: this.endTime
}
}
request({
url: 'business/allOrderInfo/getOperatingDataPos',
method: 'get',

View File

@ -43,7 +43,7 @@
</view>
</view>
<view style="width: 100%; height: 78px; "></view>
<view class="bottom-d">
<view class="bottom-d" @click="shift">
<view class="anniu">
交班
</view>
@ -131,6 +131,32 @@
})
}
})
},
//
shift() {
let recordData = this.handoverList
let handoverRecord = {
startTime: this.handoverList.baseInfo.startTime,
recordData: JSON.stringify(recordData),
type: 0,
status: this.handoverList.baseInfo.handoverType,
staffId: this.staff.staffId
}
request({
url: 'business/handoverRecord/addByPos',
method: 'post',
data: handoverRecord
}).then((res) => {
if (res.code == 200) {
this.indexData = res.data
} else {
uni.showToast({
title: res.data,
icon: "none"
})
}
})
}
}
}

View File

@ -3,18 +3,22 @@
<view class="container">
<headers :titles="titles"><u-icon name="arrow-left" color="#fff" size="22"></u-icon></headers>
<view class="time-bs">
<view class="time-box" @click="show = true">开始日期</view>
<view class="time-box" @click="showStartTime = true">{{form.startTime?form.startTime:'开始日期'}}</view>
<view class="">-</view>
<view class="time-box" @click="show = true">结束日期</view>
<view class="time-box" @click="showEndTime = true">{{form.endTime?form.endTime:'结束日期'}}</view>
</view>
<view class="box_" v-for="item,index in listData">
<view class="top-title">
<view class="name_">{{item.staffName}}</view>
<view class="price_">400.00</view>
<view class="price_">{{item.totalPayMoney}}</view>
</view>
<view class="time">2024-05-11 07:10-2024-05-13 16:45</view>
<view class="time">{{item.startTime}}-{{item.endTime}}</view>
</view>
<u-datetime-picker :show="show" v-model="value1" mode="datetime"></u-datetime-picker>
<u-datetime-picker :show="showStartTime" v-model="startTimeValue" mode="datetime" @confirm="clickStart"
@close="showStartTime = false" @cancel="showStartTime = false"></u-datetime-picker>
<u-datetime-picker :show="showEndTime" v-model="endTimeValue" mode="datetime" @confirm="clickEnd"
@close="showEndTime = false" @cancel="showEndTime = false"></u-datetime-picker>
</view>
</view>
@ -32,10 +36,18 @@
show: false,
value1: Number(new Date()),
listData: [],
dateRange: [],
startTime: "",
endTime: "",
startTimeValue: "",
endTimeValue: "",
showStartTime: false,
showEndTime: false,
form: {
page: 1,
pageSize: 10000,
beginTime: '',
startTime: '',
endTime: ''
}
}
@ -62,8 +74,42 @@
goback() {
uni.navigateBack()
},
clickStartTime(e) {
this.showStartTime = true
console.log(123, e)
// const date = new Date(timestamp);
},
clickEndTime(e) {
this.showEndTime = true
},
clickStart(e) {
console.log('123123', e)
this.showStartTime = false
this.form.startTime = this.formatDateToYYMMDDHHMM(new Date(e.value));
this.getIndexData();
},
clickEnd(e) {
this.showEndTime = false
this.form.endTime = this.formatDateToYYMMDDHHMM(new Date(e.value));
this.getIndexData();
},
//
getIndexData() {
if (this.form.startTime && this.form.endTime) {
this.form.params = {
beginTime: this.form.startTime,
endTime: this.form.endTime
}
}
request({
url: 'business/handoverRecord/queryByPage',
method: 'get',
@ -78,6 +124,16 @@
})
}
})
},
formatDateToYYMMDDHHMM(date) {
const year = String(date.getFullYear()); //
const month = String(date.getMonth() + 1).padStart(2, '0'); //
const day = String(date.getDate()).padStart(2, '0'); //
const hours = String(date.getHours()).padStart(2, '0'); //
const minutes = String(date.getMinutes()).padStart(2, '0'); //
// return `${year}/${month}/${day} ${hours}:${minutes}`;
return `${year}/${month}/${day}`;
}
}
}

View File

@ -1,7 +1,12 @@
<template>
<view class="content">
<view class="container">
<headers :titles="titles"><u-icon name="arrow-left" color="#fff" size="22"></u-icon></headers>
<headers :titles="titles" :type="titles" @chiledEvent="clickChild()">
<u-icon name="arrow-left" color="#fff" size="22">
</u-icon>
</headers>
<view class="tablist">
<view class="tabbox" v-for="(item,index) in tablist" :key="index" @click="getindex(index)">
<view class="">{{item}}</view>
@ -17,7 +22,10 @@
<view class="zt-size" v-if="item.orderStatus == 'unpaid'">未支付</view>
</view>
<view class="centne">
<view class="touxiang"></view>
<view class="touxiang">
<!-- <u-avatar :src="src"></u-avatar> -->
<image class="touxiang" :src="baseUrl+item.avatar"></image>
</view>
<view class="right-centne">
<view class="h_">订单号:{{item.orderNo}}</view>
<view class="h_">油号:{{item.oilName}}</view>
@ -33,11 +41,42 @@
</view>
<view style="width: 100%; height: 20px; "></view>
<u-popup :show="showPop" mode="right" @close="closePop" @open="openPop" customStyle="width: 300px;">
<view style="margin-top: 100px;">
<view class="time-bs">
<view class="time-box" @click="showStartTime = true">{{form.startTime?form.startTime:'开始日期'}}
</view>
<view class="">-</view>
<view class="time-box" @click="showEndTime = true">{{form.endTime?form.endTime:'结束日期'}}</view>
</view>
<view class="time-bs2">
<view class="time-box2" @click="showType = true">{{payType?payType:'选择交易类型'}}
</view>
</view>
<!-- <u--input class="time-bs2" placeholder="选择交易类型" border="surround" v-model="form.type"
@click="showType = true" disabled></u--input> -->
<u-button style="width: 100px;" type="primary" text="确定" @click="clickBu"></u-button>
</view>
</u-popup>
<u-datetime-picker :show="showStartTime" v-model="startTimeValue" mode="datetime" @confirm="clickStart"
@close="showStartTime = false" @cancel="showStartTime = false"></u-datetime-picker>
<u-datetime-picker :show="showEndTime" v-model="endTimeValue" mode="datetime" @confirm="clickEnd"
@close="showEndTime = false" @cancel="showEndTime = false"></u-datetime-picker>
<u-picker :show="showType" :columns="columns" keyName="label" @confirm="clickType"
@cancel="showType = false"></u-picker>
</view>
</view>
</template>
<script>
import config from '@/config'
import request from "../../utils/request";
import headers from '../../components/header/headers.vue'
@ -46,6 +85,7 @@
return {
titles: "订单列表",
tabindex: 0,
showPop: false,
tablist: [
"全部",
"已完成",
@ -53,12 +93,42 @@
"支付失败",
],
orderList: [],
baseUrl: config.baseUrl,
// baseUrl: 'https://www.tuofeng.cc/oilAdmin/static/uploadImages/20240529/e776bf37b3f843028846cbdf3fbd958d.jpg',
form: {
page: 1,
pageSize: 10,
status: ''
}
status: '',
startTime: '',
endTime: '',
payType: ''
},
showType: false,
payType: '',
columns: [
[{
label: '无',
id: '0'
},
{
label: '支付宝',
id: 'ALIPAY'
}, {
label: '微信',
id: 'WECHAT'
}, {
label: '现金',
id: 'CASH'
}
]
],
startTime: "",
endTime: "",
startTimeValue: "",
endTimeValue: "",
showStartTime: false,
showEndTime: false,
}
},
onShow() {
@ -103,6 +173,13 @@
uni.navigateBack()
},
getPageListByPos() {
if (this.form.startTime && this.form.endTime) {
this.form.params = {
beginTime: this.form.startTime,
endTime: this.form.endTime
}
}
request({
url: 'business/allOrderInfo/getPageListByPos',
method: 'get',
@ -118,6 +195,68 @@
}
})
},
clickChild() {
this.showPop = true
},
clickBu() {
this.showPop = false
this.getPageListByPos()
},
closePop() {},
openPop() {},
clickType(e) {
this.showType = false
let data = e.value[0]
if (data.id == 0) {
this.payType = ''
this.form.payType = ''
} else {
this.payType = data.label
this.form.payType = data.id
}
console.log(data)
},
// changeType(e) {
// console.log(e)
// this.showType = false
// },
clickStartTime(e) {
this.showStartTime = true
console.log(123, e)
// const date = new Date(timestamp);
},
clickEndTime(e) {
this.showEndTime = true
},
clickStart(e) {
this.showStartTime = false
this.form.startTime = this.formatDateToYYMMDDHHMM(new Date(e.value));
this.getIndexData();
},
clickEnd(e) {
this.showEndTime = false
this.form.endTime = this.formatDateToYYMMDDHHMM(new Date(e.value));
this.getIndexData();
},
formatDateToYYMMDDHHMM(date) {
const year = String(date.getFullYear()); //
const month = String(date.getMonth() + 1).padStart(2, '0'); //
const day = String(date.getDate()).padStart(2, '0'); //
const hours = String(date.getHours()).padStart(2, '0'); //
const minutes = String(date.getMinutes()).padStart(2, '0'); //
// return `${year}/${month}/${day} ${hours}:${minutes}`;
return `${year}/${month}/${day}`;
}
}
}
</script>
@ -224,4 +363,56 @@
font-size: 16px;
color: #0864E9;
}
.time {
font-weight: 500;
font-size: 14px;
color: #333333;
margin: 0px auto;
margin-top: 15px;
}
.time-bs {
width: 100%;
box-sizing: border-box;
background: #FFFFFF;
padding: 15px;
display: flex;
align-items: center;
justify-content: space-around;
}
.time-bs2 {
width: 100%;
box-sizing: border-box;
background: #FFFFFF;
padding: 30px;
// display: flex;
align-items: center;
justify-content: space-around;
}
.time-box {
border: 1px solid #0864E9;
box-sizing: border-box;
padding: 5px 15px;
border-radius: 8px;
font-size: 14px;
color: #333;
display: flex;
align-items: center;
justify-content: center;
}
.time-box2 {
border: 1px solid #0864E9;
box-sizing: border-box;
padding: 5px 15px;
border-radius: 8px;
font-size: 14px;
color: #333;
display: flex;
align-items: center;
justify-content: center;
}
</style>

View File

@ -0,0 +1,247 @@
<template>
<view class="content">
<view class="container">
<headers :titles="titles"><u-icon name="arrow-left" color="#fff" size="22"></u-icon></headers>
<view class="box_">
<view class="title_">关于我们</view>
<view class="size_">委托方甲方
法定代表人
注册地址
联系电话
电子邮箱
受托方乙方
联系地址
联系电话
电子邮箱
双方经友好协商依据中华人民共和国合同法的有关规定就委托乙方开发APP(一下简称本软件)的事宜达成如下协议以资共同遵守
第一条 定义
本协议所使用的下列词语具有如下含义
交付文件指在本软件开发完成后乙方需要交付给甲方的文件包括但不限于程序文件编译前的源代码数据库文件操作手册产品制作原型图技术开发文档等
第二条 项目内容
甲方委托乙方开发可以在阿里云操作系统下运行的软件软件需求APP应用开发的栏目架构及相关功能开发细节由双方协商确定作为本合同附件
第三条 履行期限
乙方应在本合同签订之日的次日起 40 个工作日内完成本软件开发并交付软件和相关文件乙方可提前交付并协助甲方进行软件的测试鉴定工作
第四条 费用及支付
本次项目开发费用合计人民币 350000 大写 叁拾伍万元整甲方按以下方式分期支付
1在合同签订之日起 3 日内支付人民币 150000 大写 拾伍万元整
2甲方应在第一笔款项交付完成后的第十个工作日支付乙方人民币 100000 大写壹拾万元整
3乙方实现软件测试鉴定交付程序软件源代码数据文件操作手册技术开发文档后当日结清剩余尾款人民币 100000 大写 壹拾万元整
4乙方收款账号信息如下
开户名称
第五条 验收
乙方完成本软件开发工作后甲方应在 3 个工作日内完成验收逾期验收的视为验收合格
第六条 双方权利义务
1甲方的权利义务
1 甲方保证提出的本软件需求及内容不含有反动黄色及违反国家法律规定的内容
2 按时向乙方支付开发费用逾期支付需负违约责任
3 支付完成所需款项后即获得本软件的全部所有权
4 按照合同约定的标准进行开发成功验收
2乙方的权利义务
1 按照双方确定的功能需求独立完成软件开发保证不侵犯他人知识产权
2 乙方应向甲方提供加盖企业公章的书面执行报告
3 当甲方增加或者修改需求时乙方有权利增收开发费用具体数额及开发时间由双方另行协商
4 文件交付后提供 12 个月的免费维护服务此维护仅包括软件bug的修复及相关代码技术支持但是甲方未经乙方私自修改代码致使软件运行出问题除外
5 乙方在文件交付后提供1年的免费技术咨询服务技术支持确保甲方应用程序访问畅通
6 乙方不得未经甲方允许将甲方的营业数据及提供的任何材料项目创意项目整个文件以任何方式泄露给第三方
第七条 知识产权约定
1甲方与乙方未结算本合同费用之前本合同乙方开发的APP软件包括但不限于包括源代码程序文件文档资料等所有权和版权属于乙方甲方对该APP软件包括但不限于包括源代码程序文件文档资料等不享有任何权利
2甲方将
本合同费用结算完毕后乙方将APP软件包括但不限于包括源代码程序文件文档资料等转让给甲方未经许可乙方不得公布文件源代码不得复制传播反编译出售出租或者许可他人使用其相关的程序文件源代码和反编译等
第八条 保密条款
1甲乙双方应对在履行过程中获悉的对方之商业秘密及技术秘密承担保密义务该保密义务不受本合同期限的约束一直有效
2未经对方书面许可任何一方不得私自复制出售或以任何形式泄露给第三方
第九条 合同的解除
1因项目开发存在技术障碍或者市场障碍双方可以协商解除本协议
2任一方想提前解除本合同的应提前7天通知对方经双方协商签字同意后方可解除甲方要求解除合同无权要求乙方返还甲方已支付的费用并应对乙方遭受的损失承担赔偿责任乙方要求解除合同应返还甲方已支付的费用
第十条 违约责任
1甲方每逾期付款一天应按照乙方开发费用的5%支付逾期付款违约金
2如因甲方未提供相关技术资料调试环境支撑需求沟通不明确等原因致使乙方延期交付的乙方不承担违约责任
3任何一方不履行或不妥善履行本协议下任何条款被视为违约守约方有权要求违约方赔偿另一方因违约而造成的一切损失本合同对违约责任另有约定的从其约定
第十一条 纠纷解决
本合同履行过程中所发生的争议双方协商解决协商不成的任何一方可向双方所在地法院起诉
第十二条 通知与送达
1甲方乙方确认双方履行本合同的沟通可采取面谈电话传真和电邮的方式本协议所载的双方联系地址电话和电子邮箱均为真实有效的联系方式双方确认一经向对方发出电邮即视为收到通知一方按本协议载明地址所发出的书面文件自发出之日起七日内视为送达无论是否签收或拒收
2甲方指定本协议的联系认为 联系电话
乙方指定本协议的联系人为 联系电话
甲方乙方指定的联系人为履行本协议所作出的意思表示和行为均分别代表甲方乙方
3如任一方的联系方式有改变应在3天内书面通知对方
第十三条 其他事项
1本合同自双方签字盖章之日起生效一式两份双方各执一份
2本协议一方延迟或未能行驶本协议下的权力权利或救济不应当作为对任何该等权力权利或救济的弃权
3如果本协议的任何条款或规定在任何适用法律下被认定为全部或部分无效或不可强制执行其应在该等无效或不可强制执行的范围内从本协议中被排除但本协议的所有其他条款和规定均保持全部有效
本页一下无正文
签约时间 签约时间
签订地点 签订地点</view>
<!-- <view class="size_">这是各条款</view>
<view class="size_">这是各条款</view>
<view class="size_">这是各条款</view> -->
</view>
</view>
</view>
</template>
<script>
import headers from '../../components/header/headers.vue'
export default {
data() {
return {
titles: "关于我们",
}
},
onShow() {
// this.actList = ["1", "1", "1", "1", "1", ]
// this.status = "nomore"
},
onPullDownRefresh() {
console.log("刷新");
uni.stopPullDownRefresh()
},
onReachBottom() {
// this.show = true
setTimeout(() => {
console.log("加载执行");
}, 2000)
},
components: {
headers
},
methods: {
goback() {
uni.navigateBack()
}
}
}
</script>
<style scoped lang="scss">
.content {
background: #f8f8f8;
// background: linear-gradient(180deg, #B2D2FC 0%, #B2D2FC 14%, rgba(255, 255, 255, 0.84) 24%, rgba(255, 255, 255, 0.84) 100%);
height: 100vh;
}
.container {
width: 100%;
background: #f8f8f8;
box-sizing: border-box;
padding-top: 88px;
}
.img-box {
image {
width: 100%;
height: 100%;
}
}
.box_ {
width: 95%;
background: #FFFFFF;
border-radius: 8px;
box-sizing: border-box;
margin: 10px auto;
box-sizing: border-box;
padding: 15px;
}
.title_ {
font-weight: bold;
font-size: 16px;
color: #333333;
margin-bottom: 10px;
}
.size_ {
font-weight: 500;
font-size: 14px;
color: #333333;
margin-bottom: 10px;
}
.bottom_ {
border-top: 1px solid #E8E8E8;
width: 100%;
box-sizing: border-box;
padding-top: 10px;
display: flex;
align-items: center;
justify-content: space-between;
}
</style>

View File

@ -0,0 +1,245 @@
<template>
<view class="content">
<view class="container">
<headers :titles="titles"><u-icon name="arrow-left" color="#fff" size="22"></u-icon></headers>
<view class="box_">
<view class="title_">服务条款</view>
<view class="size_">委托方甲方
法定代表人
注册地址
联系电话
电子邮箱
受托方乙方
联系地址
联系电话
电子邮箱
双方经友好协商依据中华人民共和国合同法的有关规定就委托乙方开发APP(一下简称本软件)的事宜达成如下协议以资共同遵守
第一条 定义
本协议所使用的下列词语具有如下含义
交付文件指在本软件开发完成后乙方需要交付给甲方的文件包括但不限于程序文件编译前的源代码数据库文件操作手册产品制作原型图技术开发文档等
第二条 项目内容
甲方委托乙方开发可以在阿里云操作系统下运行的软件软件需求APP应用开发的栏目架构及相关功能开发细节由双方协商确定作为本合同附件
第三条 履行期限
乙方应在本合同签订之日的次日起 40 个工作日内完成本软件开发并交付软件和相关文件乙方可提前交付并协助甲方进行软件的测试鉴定工作
第四条 费用及支付
本次项目开发费用合计人民币 350000 大写 叁拾伍万元整甲方按以下方式分期支付
1在合同签订之日起 3 日内支付人民币 150000 大写 拾伍万元整
2甲方应在第一笔款项交付完成后的第十个工作日支付乙方人民币 100000 大写壹拾万元整
3乙方实现软件测试鉴定交付程序软件源代码数据文件操作手册技术开发文档后当日结清剩余尾款人民币 100000 大写 壹拾万元整
4乙方收款账号信息如下
开户名称
第五条 验收
乙方完成本软件开发工作后甲方应在 3 个工作日内完成验收逾期验收的视为验收合格
第六条 双方权利义务
1甲方的权利义务
1 甲方保证提出的本软件需求及内容不含有反动黄色及违反国家法律规定的内容
2 按时向乙方支付开发费用逾期支付需负违约责任
3 支付完成所需款项后即获得本软件的全部所有权
4 按照合同约定的标准进行开发成功验收
2乙方的权利义务
1 按照双方确定的功能需求独立完成软件开发保证不侵犯他人知识产权
2 乙方应向甲方提供加盖企业公章的书面执行报告
3 当甲方增加或者修改需求时乙方有权利增收开发费用具体数额及开发时间由双方另行协商
4 文件交付后提供 12 个月的免费维护服务此维护仅包括软件bug的修复及相关代码技术支持但是甲方未经乙方私自修改代码致使软件运行出问题除外
5 乙方在文件交付后提供1年的免费技术咨询服务技术支持确保甲方应用程序访问畅通
6 乙方不得未经甲方允许将甲方的营业数据及提供的任何材料项目创意项目整个文件以任何方式泄露给第三方
第七条 知识产权约定
1甲方与乙方未结算本合同费用之前本合同乙方开发的APP软件包括但不限于包括源代码程序文件文档资料等所有权和版权属于乙方甲方对该APP软件包括但不限于包括源代码程序文件文档资料等不享有任何权利
2甲方将
本合同费用结算完毕后乙方将APP软件包括但不限于包括源代码程序文件文档资料等转让给甲方未经许可乙方不得公布文件源代码不得复制传播反编译出售出租或者许可他人使用其相关的程序文件源代码和反编译等
第八条 保密条款
1甲乙双方应对在履行过程中获悉的对方之商业秘密及技术秘密承担保密义务该保密义务不受本合同期限的约束一直有效
2未经对方书面许可任何一方不得私自复制出售或以任何形式泄露给第三方
第九条 合同的解除
1因项目开发存在技术障碍或者市场障碍双方可以协商解除本协议
2任一方想提前解除本合同的应提前7天通知对方经双方协商签字同意后方可解除甲方要求解除合同无权要求乙方返还甲方已支付的费用并应对乙方遭受的损失承担赔偿责任乙方要求解除合同应返还甲方已支付的费用
第十条 违约责任
1甲方每逾期付款一天应按照乙方开发费用的5%支付逾期付款违约金
2如因甲方未提供相关技术资料调试环境支撑需求沟通不明确等原因致使乙方延期交付的乙方不承担违约责任
3任何一方不履行或不妥善履行本协议下任何条款被视为违约守约方有权要求违约方赔偿另一方因违约而造成的一切损失本合同对违约责任另有约定的从其约定
第十一条 纠纷解决
本合同履行过程中所发生的争议双方协商解决协商不成的任何一方可向双方所在地法院起诉
第十二条 通知与送达
1甲方乙方确认双方履行本合同的沟通可采取面谈电话传真和电邮的方式本协议所载的双方联系地址电话和电子邮箱均为真实有效的联系方式双方确认一经向对方发出电邮即视为收到通知一方按本协议载明地址所发出的书面文件自发出之日起七日内视为送达无论是否签收或拒收
2甲方指定本协议的联系认为 联系电话
乙方指定本协议的联系人为 联系电话
甲方乙方指定的联系人为履行本协议所作出的意思表示和行为均分别代表甲方乙方
3如任一方的联系方式有改变应在3天内书面通知对方
第十三条 其他事项
1本合同自双方签字盖章之日起生效一式两份双方各执一份
2本协议一方延迟或未能行驶本协议下的权力权利或救济不应当作为对任何该等权力权利或救济的弃权
3如果本协议的任何条款或规定在任何适用法律下被认定为全部或部分无效或不可强制执行其应在该等无效或不可强制执行的范围内从本协议中被排除但本协议的所有其他条款和规定均保持全部有效
本页一下无正文
签约时间 签约时间
签订地点 签订地点</view>
</view>
</view>
</view>
</template>
<script>
import headers from '../../components/header/headers.vue'
export default {
data() {
return {
titles: "服务条款",
}
},
onShow() {
// this.actList = ["1", "1", "1", "1", "1", ]
// this.status = "nomore"
},
onPullDownRefresh() {
console.log("刷新");
uni.stopPullDownRefresh()
},
onReachBottom() {
// this.show = true
setTimeout(() => {
console.log("加载执行");
}, 2000)
},
components: {
headers
},
methods: {
goback() {
uni.navigateBack()
}
}
}
</script>
<style scoped lang="scss">
.content {
background: #f8f8f8;
// background: linear-gradient(180deg, #B2D2FC 0%, #B2D2FC 14%, rgba(255, 255, 255, 0.84) 24%, rgba(255, 255, 255, 0.84) 100%);
height: 100vh;
}
.container {
width: 100%;
background: #f8f8f8;
box-sizing: border-box;
padding-top: 88px;
}
.img-box {
image {
width: 100%;
height: 100%;
}
}
.box_ {
width: 95%;
background: #FFFFFF;
border-radius: 8px;
box-sizing: border-box;
margin: 10px auto;
box-sizing: border-box;
padding: 15px;
}
.title_ {
font-weight: bold;
font-size: 16px;
color: #333333;
margin-bottom: 10px;
}
.size_ {
font-weight: 500;
font-size: 14px;
color: #333333;
margin-bottom: 10px;
}
.bottom_ {
border-top: 1px solid #E8E8E8;
width: 100%;
box-sizing: border-box;
padding-top: 10px;
display: flex;
align-items: center;
justify-content: space-between;
}
</style>

View File

@ -0,0 +1,247 @@
<template>
<view class="content">
<view class="container">
<headers :titles="titles"><u-icon name="arrow-left" color="#fff" size="22"></u-icon></headers>
<view class="box_">
<view class="title_">隐私协议</view>
<view class="size_">委托方甲方
法定代表人
注册地址
联系电话
电子邮箱
受托方乙方
联系地址
联系电话
电子邮箱
双方经友好协商依据中华人民共和国合同法的有关规定就委托乙方开发APP(一下简称本软件)的事宜达成如下协议以资共同遵守
第一条 定义
本协议所使用的下列词语具有如下含义
交付文件指在本软件开发完成后乙方需要交付给甲方的文件包括但不限于程序文件编译前的源代码数据库文件操作手册产品制作原型图技术开发文档等
第二条 项目内容
甲方委托乙方开发可以在阿里云操作系统下运行的软件软件需求APP应用开发的栏目架构及相关功能开发细节由双方协商确定作为本合同附件
第三条 履行期限
乙方应在本合同签订之日的次日起 40 个工作日内完成本软件开发并交付软件和相关文件乙方可提前交付并协助甲方进行软件的测试鉴定工作
第四条 费用及支付
本次项目开发费用合计人民币 350000 大写 叁拾伍万元整甲方按以下方式分期支付
1在合同签订之日起 3 日内支付人民币 150000 大写 拾伍万元整
2甲方应在第一笔款项交付完成后的第十个工作日支付乙方人民币 100000 大写壹拾万元整
3乙方实现软件测试鉴定交付程序软件源代码数据文件操作手册技术开发文档后当日结清剩余尾款人民币 100000 大写 壹拾万元整
4乙方收款账号信息如下
开户名称
第五条 验收
乙方完成本软件开发工作后甲方应在 3 个工作日内完成验收逾期验收的视为验收合格
第六条 双方权利义务
1甲方的权利义务
1 甲方保证提出的本软件需求及内容不含有反动黄色及违反国家法律规定的内容
2 按时向乙方支付开发费用逾期支付需负违约责任
3 支付完成所需款项后即获得本软件的全部所有权
4 按照合同约定的标准进行开发成功验收
2乙方的权利义务
1 按照双方确定的功能需求独立完成软件开发保证不侵犯他人知识产权
2 乙方应向甲方提供加盖企业公章的书面执行报告
3 当甲方增加或者修改需求时乙方有权利增收开发费用具体数额及开发时间由双方另行协商
4 文件交付后提供 12 个月的免费维护服务此维护仅包括软件bug的修复及相关代码技术支持但是甲方未经乙方私自修改代码致使软件运行出问题除外
5 乙方在文件交付后提供1年的免费技术咨询服务技术支持确保甲方应用程序访问畅通
6 乙方不得未经甲方允许将甲方的营业数据及提供的任何材料项目创意项目整个文件以任何方式泄露给第三方
第七条 知识产权约定
1甲方与乙方未结算本合同费用之前本合同乙方开发的APP软件包括但不限于包括源代码程序文件文档资料等所有权和版权属于乙方甲方对该APP软件包括但不限于包括源代码程序文件文档资料等不享有任何权利
2甲方将
本合同费用结算完毕后乙方将APP软件包括但不限于包括源代码程序文件文档资料等转让给甲方未经许可乙方不得公布文件源代码不得复制传播反编译出售出租或者许可他人使用其相关的程序文件源代码和反编译等
第八条 保密条款
1甲乙双方应对在履行过程中获悉的对方之商业秘密及技术秘密承担保密义务该保密义务不受本合同期限的约束一直有效
2未经对方书面许可任何一方不得私自复制出售或以任何形式泄露给第三方
第九条 合同的解除
1因项目开发存在技术障碍或者市场障碍双方可以协商解除本协议
2任一方想提前解除本合同的应提前7天通知对方经双方协商签字同意后方可解除甲方要求解除合同无权要求乙方返还甲方已支付的费用并应对乙方遭受的损失承担赔偿责任乙方要求解除合同应返还甲方已支付的费用
第十条 违约责任
1甲方每逾期付款一天应按照乙方开发费用的5%支付逾期付款违约金
2如因甲方未提供相关技术资料调试环境支撑需求沟通不明确等原因致使乙方延期交付的乙方不承担违约责任
3任何一方不履行或不妥善履行本协议下任何条款被视为违约守约方有权要求违约方赔偿另一方因违约而造成的一切损失本合同对违约责任另有约定的从其约定
第十一条 纠纷解决
本合同履行过程中所发生的争议双方协商解决协商不成的任何一方可向双方所在地法院起诉
第十二条 通知与送达
1甲方乙方确认双方履行本合同的沟通可采取面谈电话传真和电邮的方式本协议所载的双方联系地址电话和电子邮箱均为真实有效的联系方式双方确认一经向对方发出电邮即视为收到通知一方按本协议载明地址所发出的书面文件自发出之日起七日内视为送达无论是否签收或拒收
2甲方指定本协议的联系认为 联系电话
乙方指定本协议的联系人为 联系电话
甲方乙方指定的联系人为履行本协议所作出的意思表示和行为均分别代表甲方乙方
3如任一方的联系方式有改变应在3天内书面通知对方
第十三条 其他事项
1本合同自双方签字盖章之日起生效一式两份双方各执一份
2本协议一方延迟或未能行驶本协议下的权力权利或救济不应当作为对任何该等权力权利或救济的弃权
3如果本协议的任何条款或规定在任何适用法律下被认定为全部或部分无效或不可强制执行其应在该等无效或不可强制执行的范围内从本协议中被排除但本协议的所有其他条款和规定均保持全部有效
本页一下无正文
签约时间 签约时间
签订地点 签订地点</view>
<!-- <view class="size_">这是各条款</view>
<view class="size_">这是各条款</view>
<view class="size_">这是各条款</view> -->
</view>
</view>
</view>
</template>
<script>
import headers from '../../components/header/headers.vue'
export default {
data() {
return {
titles: "隐私协议",
}
},
onShow() {
// this.actList = ["1", "1", "1", "1", "1", ]
// this.status = "nomore"
},
onPullDownRefresh() {
console.log("刷新");
uni.stopPullDownRefresh()
},
onReachBottom() {
// this.show = true
setTimeout(() => {
console.log("加载执行");
}, 2000)
},
components: {
headers
},
methods: {
goback() {
uni.navigateBack()
}
}
}
</script>
<style scoped lang="scss">
.content {
background: #f8f8f8;
// background: linear-gradient(180deg, #B2D2FC 0%, #B2D2FC 14%, rgba(255, 255, 255, 0.84) 24%, rgba(255, 255, 255, 0.84) 100%);
height: 100vh;
}
.container {
width: 100%;
background: #f8f8f8;
box-sizing: border-box;
padding-top: 88px;
}
.img-box {
image {
width: 100%;
height: 100%;
}
}
.box_ {
width: 95%;
background: #FFFFFF;
border-radius: 8px;
box-sizing: border-box;
margin: 10px auto;
box-sizing: border-box;
padding: 15px;
}
.title_ {
font-weight: bold;
font-size: 16px;
color: #333333;
margin-bottom: 10px;
}
.size_ {
font-weight: 500;
font-size: 14px;
color: #333333;
margin-bottom: 10px;
}
.bottom_ {
border-top: 1px solid #E8E8E8;
width: 100%;
box-sizing: border-box;
padding-top: 10px;
display: flex;
align-items: center;
justify-content: space-between;
}
</style>