添加发票、费用等功能

master
xcw 2023-03-15 12:59:31 +08:00
parent fb5f442d8a
commit 4c6ede951d
27 changed files with 2374 additions and 68 deletions

2
app.js
View File

@ -6,7 +6,7 @@ require('./common/main.js')
App({
globalData: {
BASE_IMG_URL:"https://crm.hebeidazhe.com/assets/addons/crmx/mini/",
BASE_IMG_URL:"http://crm.scdxtc.cn/assets/addons/crmx/mini/",
BASE_URL:"http://crm.scdxtc.cn",
}
})

View File

@ -20,6 +20,8 @@
"pages/index/groupCompany/contract/addContractPayment",
"pages/index/groupCompany/cost/addCost",
"pages/index/groupCompany/cost/costDetail",
"pages/index/groupCompany/bills/addBills",
"pages/index/groupCompany/bills/billsDetail",
"pages/index/groupCompany/cost/editCost",
"pages/index/groupCompany/contract/editPayment",
"pages/index/groupCompany/contract/paymentDetail",

View File

@ -35,9 +35,9 @@
value: !0
}), t.myRequest = t.BASE_URL = t.BASE_IMG_URL = void 0;
o(n("d47e"));
var a = "https://crm.hebeidazhe.com/addons/crmx/";
var a = "http://crm.scdxtc.cn/addons/crmx/";
t.BASE_URL = a;
t.BASE_IMG_URL = "https://crm.hebeidazhe.com/assets/addons/crmx/mini/";
t.BASE_IMG_URL = "http://crm.scdxtc.cn/assets/addons/crmx/mini/";
t.myRequest = function(t, n, o) {
var r = !(arguments.length > 3 && void 0 !== arguments[3]) || arguments[3],
i = "";
@ -9097,6 +9097,8 @@
return (0, o.myRequest)("contract/addContract", e)
}, t.netCrmContractList = function(e) {
return (0, o.myRequest)("contract/getList", e)
},t.checkHasAmountView = function(e) {
return (0, o.myRequest)("bill/checkHasAmountView", e)
}, t.netDelContact = function(e) {
return (0, o.myRequest)("contacts/delContacts", e)
}, t.netEditContactInfo = function(e) {

View File

@ -1 +1,225 @@
(global["webpackJsonp"]=global["webpackJsonp"]||[]).push([["pages/index/contract/contract"],{"4cae":function(t,i,e){"use strict";(function(t,i){var n=e("4ea4");e("8886");n(e("66fd"));var s=n(e("517f"));t.__webpack_require_UNI_MP_PLUGIN__=e,i(s.default)}).call(this,e("bc2e")["default"],e("543d")["createPage"])},"517f":function(t,i,e){"use strict";e.r(i);var n=e("8df5"),s=e("a0a6");for(var a in s)["default"].indexOf(a)<0&&function(t){e.d(i,t,(function(){return s[t]}))}(a);e("70f7");var o=e("f0c5"),c=Object(o["a"])(s["default"],n["b"],n["c"],!1,null,"e5a6e2f8",null,!1,n["a"],void 0);i["default"]=c.exports},"70f7":function(t,i,e){"use strict";var n=e("73ea"),s=e.n(n);s.a},"73ea":function(t,i,e){},"8df5":function(t,i,e){"use strict";e.d(i,"b",(function(){return s})),e.d(i,"c",(function(){return a})),e.d(i,"a",(function(){return n}));var n={uniPopup:function(){return e.e("uni_modules/uni-popup/components/uni-popup/uni-popup").then(e.bind(null,"6f9d"))},uEmpty:function(){return e.e("uview-ui/components/u-empty/u-empty").then(e.bind(null,"38b8"))}},s=function(){var t=this.$createElement,i=(this._self._c,this.contract_list.length);this.$mp.data=Object.assign({},{$root:{g0:i}})},a=[]},a0a6:function(t,i,e){"use strict";e.r(i);var n=e("cd5d"),s=e.n(n);for(var a in n)["default"].indexOf(a)<0&&function(t){e.d(i,t,(function(){return n[t]}))}(a);i["default"]=s.a},cd5d:function(t,i,e){"use strict";(function(t){Object.defineProperty(i,"__esModule",{value:!0}),i.default=void 0;var n=e("76dd"),s=e("0c59"),a={components:{selectCustomer:function(){Promise.all([e.e("common/vendor"),e.e("components/selectCustomer")]).then(function(){return resolve(e("5bcd"))}.bind(null,e)).catch(e.oe)}},data:function(){return{moneyInfo:{},contract_list:[],page:1,limit:10,totalPage:1,BASE_IMG_URL:s.BASE_IMG_URL,name:"",type:"",typeList:["全部客户","我的客户","下级的客户"],typeIndex:0,statusList:["全部","待审核","待回款","已回款"],status:null,start_time:"",end_time:"",ascripList:[],ascripId:null,ascripIndex:null,customerObj:null,goodsList:["全部客户","我的客户","下级的客户"],info:0,rSelect:[]}},onLoad:function(t){t.startTime&&(this.typeIndex=0==t.type?1:1==t.type?0:2,this.type=this.typeList[this.typeIndex],this.start_time=t.startTime,this.end_time=t.endTime,this.ascripId=t.staffid),t.stime&&(this.typeIndex=t.status,this.start_time=t.stime,this.end_time=t.etime)},onShow:function(){this.init(),this.getGuishu()},onReachBottom:function(){this.page>=this.totalPage||(this.page++,this.getList())},methods:{toSelectCustomer:function(){this.$refs.customerChild.init()},getCustomerinfo:function(t){this.customerObj=t},init:function(){var t=this;this.page=1,this.contract_list=[],setTimeout((function(){t.getList()}),200)},toQuery:function(){this.$refs.screenpopup.open()},lookTotal:function(){this.$refs.popup.open()},removeTotal:function(){this.$refs.popup.close()},changeTab:function(t){this.status=t.detail.value},changeFirTab:function(t){this.typeIndex=t,this.init()},moveStop:function(){},toCreateContract:function(){t.navigateTo({url:"/pagesA/crm/contract/contract"})},tab:function(t){this.info=t},getGuishu:function(){var t=this;(0,n.netSearchStaffList)().then((function(i){t.ascripList=i.data,t.ascripId&&t.ascripList.forEach((function(i,e){i.id==t.ascripId&&(t.ascripIndex=e)}))}))},changeAscrip:function(t){this.ascripIndex=t.detail.value,this.ascripId=this.ascripList[this.ascripIndex].id},getList:function(){var t=this,i={page:this.page,limit:this.limit,createtime:this.start_time&&this.end_time?this.start_time+","+this.end_time:"",type:this.typeIndex,status:this.status,staff_id:this.ascripId,customer_id:this.customerObj?this.customerObj.id:""};(0,n.netCrmContractList)(i).then((function(i){t.contract_list=t.contract_list.concat(i.data.data),t.totalPage=i.data.last_page,t.moneyInfo=i.data.moneyinfo}))},changeType:function(t){this.typeIndex=t},changeStartTime:function(t){this.start_time=t.detail.value,this.end_time||(this.end_time=t.detail.value)},changeEndTime:function(t){this.end_time=t.detail.value,this.start_time||(this.start_time=t.detail.value)},reset:function(){this.type="",this.start_time="",this.end_time="",this.ascripId=null,this.ascripIndex=null,this.status=null,this.customerObj=null},sureQuery:function(){this.$refs.screenpopup.close(),this.init()},toContractDetail:function(i){t.navigateTo({url:"/pages/index/groupCompany/contract/contractDetail?id="+i})}}};i.default=a}).call(this,e("543d")["default"])}},[["4cae","common/runtime","common/vendor"]]]);
(global["webpackJsonp"] = global["webpackJsonp"] || []).push([
["pages/index/contract/contract"], {
"4cae": function(t, i, e) {
"use strict";
(function(t, i) {
var n = e("4ea4");
e("8886");
n(e("66fd"));
var s = n(e("517f"));
t.__webpack_require_UNI_MP_PLUGIN__ = e, i(s.default)
}).call(this, e("bc2e")["default"], e("543d")["createPage"])
},
"517f": function(t, i, e) {
"use strict";
e.r(i);
var n = e("8df5"),
s = e("a0a6");
for (var a in s)["default"].indexOf(a) < 0 && function(t) {
e.d(i, t, (function() {
return s[t]
}))
}(a);
e("70f7");
var o = e("f0c5"),
c = Object(o["a"])(s["default"], n["b"], n["c"], !1, null, "e5a6e2f8", null, !1, n["a"], void 0);
i["default"] = c.exports
},
"70f7": function(t, i, e) {
"use strict";
var n = e("73ea"),
s = e.n(n);
s.a
},
"73ea": function(t, i, e) {},
"8df5": function(t, i, e) {
"use strict";
e.d(i, "b", (function() {
return s
})), e.d(i, "c", (function() {
return a
})), e.d(i, "a", (function() {
return n
}));
var n = {
uniPopup: function() {
return e.e("uni_modules/uni-popup/components/uni-popup/uni-popup").then(e.bind(null, "6f9d"))
},
uEmpty: function() {
return e.e("uview-ui/components/u-empty/u-empty").then(e.bind(null, "38b8"))
}
},
s = function() {
var t = this.$createElement,
i = (this._self._c, this.contract_list.length);
this.$mp.data = Object.assign({}, {
$root: {
g0: i
}
})
},
a = []
},
a0a6: function(t, i, e) {
"use strict";
e.r(i);
var n = e("cd5d"),
s = e.n(n);
for (var a in n)["default"].indexOf(a) < 0 && function(t) {
e.d(i, t, (function() {
return n[t]
}))
}(a);
i["default"] = s.a
},
cd5d: function(t, i, e) {
"use strict";
(function(t) {
Object.defineProperty(i, "__esModule", {
value: !0
}), i.default = void 0;
var n = e("76dd"),
s = e("0c59"),
a = {
components: {
selectCustomer: function() {
Promise.all([e.e("common/vendor"), e.e("components/selectCustomer")]).then(function() {
return resolve(e("5bcd"))
}.bind(null, e)).catch(e.oe)
}
},
data: function() {
return {
moneyInfo: {},
contract_list: [],
page: 1,
limit: 10,
totalPage: 1,
BASE_IMG_URL: s.BASE_IMG_URL,
name: "",
type: "",
typeList: ["全部客户", "我的客户", "下级的客户"],
typeIndex: 0,
statusList: ["全部", "待审核", "待回款", "已回款"],
status: null,
start_time: "",
end_time: "",
ascripList: [],
ascripId: null,
ascripIndex: null,
customerObj: null,
goodsList: ["全部客户", "我的客户", "下级的客户"],
info: 0,
rSelect: [],
has_amount_view:false, //检查是否有查看合同金额的权限
}
},
onLoad: function(t) {
t.startTime && (this.typeIndex = 0 == t.type ? 1 : 1 == t.type ? 0 : 2, this.type = this.typeList[this.typeIndex], this.start_time = t.startTime, this.end_time = t.endTime, this.ascripId = t.staffid), t.stime && (this.typeIndex = t.status, this.start_time = t.stime, this.end_time = t.etime)
},
onShow: function() {
this.init(), this.getGuishu()
},
onReachBottom: function() {
this.page >= this.totalPage || (this.page++, this.getList())
},
methods: {
toSelectCustomer: function() {
this.$refs.customerChild.init()
},
getCustomerinfo: function(t) {
this.customerObj = t
},
init: function() {
var t = this;
this.page = 1, this.contract_list = [], setTimeout((function() {
t.getList()
}), 200)
},
toQuery: function() {
this.$refs.screenpopup.open()
},
lookTotal: function() {
this.$refs.popup.open()
},
removeTotal: function() {
this.$refs.popup.close()
},
changeTab: function(t) {
this.status = t.detail.value
},
changeFirTab: function(t) {
this.typeIndex = t, this.init()
},
moveStop: function() {},
toCreateContract: function() {
t.navigateTo({
url: "/pagesA/crm/contract/contract"
})
},
tab: function(t) {
this.info = t
},
getGuishu: function() {
var t = this;
(0, n.netSearchStaffList)().then((function(i) {
t.ascripList = i.data, t.ascripId && t.ascripList.forEach((function(i, e) {
i.id == t.ascripId && (t.ascripIndex = e)
}))
}))
},
changeAscrip: function(t) {
this.ascripIndex = t.detail.value, this.ascripId = this.ascripList[this.ascripIndex].id
},
getList: function() {
var t = this,
i = {
page: this.page,
limit: this.limit,
createtime: this.start_time && this.end_time ? this.start_time + "," + this.end_time : "",
type: this.typeIndex,
status: this.status,
staff_id: this.ascripId,
customer_id: this.customerObj ? this.customerObj.id : ""
};
// 检查是否查看合同金额的权限
(n.checkHasAmountView)().then((function(i) {
console.log(i.data,'权限')
t.has_amount_view = i.data.has_amount_view;
wx.setStorageSync('has_amount_view', i.data.has_amount_view)
}));
(0, n.netCrmContractList)(i).then((function(i) {
t.contract_list = t.contract_list.concat(i.data.data), t.totalPage = i.data.last_page, t.moneyInfo = i.data.moneyinfo
}))
},
changeType: function(t) {
this.typeIndex = t
},
changeStartTime: function(t) {
this.start_time = t.detail.value, this.end_time || (this.end_time = t.detail.value)
},
changeEndTime: function(t) {
this.end_time = t.detail.value, this.start_time || (this.start_time = t.detail.value)
},
reset: function() {
this.type = "", this.start_time = "", this.end_time = "", this.ascripId = null, this.ascripIndex = null, this.status = null, this.customerObj = null
},
sureQuery: function() {
this.$refs.screenpopup.close(), this.init()
},
toContractDetail: function(i) {
t.navigateTo({
url: "/pages/index/groupCompany/contract/contractDetail?id=" + i
})
},
}
};
i.default = a
}).call(this, e("543d")["default"])
}
},
[
["4cae", "common/runtime", "common/vendor"]
]
]);

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,307 @@
// pages/index/groupCompany/bills/addBills.js
const app = getApp(); //全局app
Page({
/**
* 页面的初始数据
*/
data: {
BASE_IMG_URL: app.globalData.BASE_IMG_URL,
BASE_URL:app.globalData.BASE_URL,
reviseId:'', //修改过来的ID
agreementId:'',//从合同里面过来的ID
corporation:[], //关联公司名称
corporationList:[], //关联公司
corporationIndex:0,
agreement:[], //关联合同名称
agreementList:[],//关联合同
agreementIndex:0,
billsObj:{
corporation_id:'', //开票公司ID
contract_id:'', //关联合同ID
money:'',
remark:''
} //提交的数据
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
console.log(options)
let that = this;
this.getCorporation();
this.getAgreement();
setTimeout(function(){
if(options.id) {
that.setData({
reviseId:options.id
})
that.getRevise();
}
if(options.agreementId) {
that.setData({
agreementId:options.agreementId
})
console.log(that.data.agreementId)
that.getAgreementId();
}
},400)
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
// 获取所有关联公司
getCorporation() {
let that = this;
wx.request({
url: this.data.BASE_URL + '/addons/crmx/bill/getCorporationList',
data: {},
header: {
'content-type': 'application/json', // 默认值
'token': wx.getStorageSync('token'),
},
success (res) {
console.log(res.data,'公司列表')
let corporation = res.data.data.map(item => {
return item.name
})
that.setData({
corporation:corporation,
corporationList:res.data.data,
})
that.data.billsObj.corporation_id = res.data.data[that.data.corporationIndex].id;
}
})
},
// 获取所有关联合同
getAgreement() {
let that = this;
wx.request({
url: this.data.BASE_URL + '/addons/crmx/bill/getContractList',
data: {},
header: {
'content-type': 'application/json', // 默认值
'token': wx.getStorageSync('token'),
},
success (res) {
console.log(res.data,'合同列表')
let agreement = res.data.data.map(item => {
return item.name
})
that.setData({
agreement:agreement,
agreementList:res.data.data,
})
that.data.billsObj.contract_id = that.data.agreementList[that.data.agreementIndex].id;
}
})
},
// 选择关联公司
bindCorporation(e){
let value = e.detail.value;
this.setData({
corporationIndex:value,
})
this.data.billsObj.corporation_id = this.data.corporationList[e.detail.value].id;
},
// 选择关联合同
bindAgreement(e){
let value = e.detail.value;
this.setData({
agreementIndex:value,
})
this.data.billsObj.contract_id = this.data.agreementList[e.detail.value].id;
},
// 发票金额
bindMoney(e) {
let that = this;
that.data.billsObj.money = e.detail.value;
},
// 备注
bindRemark(e) {
let that = this;
that.data.billsObj.remark = e.detail.value;
},
// 添加按钮
addBills() {
console.log(this.data.billsObj,'aaaa')
let that = this;
let pargms = that.data.billsObj;
if(pargms.money == '') {
wx.showToast({
title:"请填写发票金额",
icon: 'error',
duration: 1000,
mask: false,
})
}else {
wx.request({
url: this.data.BASE_URL + '/addons/crmx/bill/addBill',
method:'POST',
data: {
contract_id:pargms.contract_id,
money:pargms.money,
corporation_id:pargms.corporation_id,
remark:pargms.remark
},
header: {
'content-type': 'application/json', // 默认值
'token': wx.getStorageSync('token'),
},
success (res) {
if(res.data.code == 1) {
console.log(res.data,'提交成功')
wx.showToast({
title:"保存成功",
icon: 'success',
duration: 1500,
mask: false,
})
setTimeout(function(){
wx.navigateBack({
delta: 1
});
},1700)
}
}
})
}
},
// 修改的内容
getRevise() {
let that = this;
wx.request({
url: this.data.BASE_URL + '/addons/crmx/bill/billInfo',
data: {
id:that.data.reviseId
},
header: {
'content-type': 'application/json', // 默认值
'token': wx.getStorageSync('token'),
},
success (res) {
console.log(res.data,'修改列表')
let corporation_name = res.data.data.corporation.name;
let agreement_name = res.data.data.contract.name;
let index = that.data.corporation.indexOf(corporation_name);
let index2 = that.data.agreement.indexOf(agreement_name);
that.setData({
corporationIndex:index,
agreementIndex:index2,
billsObj:{
corporation_id:that.data.corporationList[index].id, //开票公司ID
contract_id:that.data.agreementList[index2].id, //关联合同ID
money:res.data.data.money,
remark:res.data.data.remark
}
})
console.log(that.data.corporationIndex,that.data.agreementIndex,'默认')
}
})
},
//修改按钮
reviseBills() {
console.log(this.data.billsObj,'bbb')
let that = this;
let pargms = that.data.billsObj;
wx.request({
url: this.data.BASE_URL + '/addons/crmx/bill/editBill',
method:'POST',
data: {
contract_id:pargms.contract_id,
money:pargms.money,
corporation_id:pargms.corporation_id,
remark:pargms.remark,
id:that.data.reviseId,
},
header: {
'content-type': 'application/json', // 默认值
'token': wx.getStorageSync('token'),
},
success (res) {
if(res.data.code == 1) {
console.log(res.data,'修改成功')
wx.showToast({
title:"修改成功",
icon: 'success',//图标,支持"success"、"loading"
duration: 1200,//提示的延迟时间单位毫秒默认1500
mask: false,//是否显示透明蒙层防止触摸穿透默认false
})
setTimeout(function(){
wx.navigateBack({
delta: 1
});
},1250)
}
}
})
},
// 获取合同过来的合同名称并选中
getAgreementId() {
let that = this;
let agreementId = Number(that.data.agreementId);
let agreementIdList = that.data.agreementList.map(item => {
return item.id
})
let index = agreementIdList.indexOf(agreementId);
that.setData({
agreementIndex:index,
});
that.data.billsObj.corporation_id = that.data.corporationList[that.data.corporationIndex].id; //开票公司ID
that.data.billsObj.contract_id = that.data.agreementList[index].id; //关联合同ID
}
})

View File

@ -0,0 +1,3 @@
{
"navigationBarTitleText": "添加发票"
}

View File

@ -0,0 +1,38 @@
<view class="new_fllow">
<view class="fllow_form">
<view><text>*</text>关联公司</view>
<picker bindchange="bindCorporation" value="{{corporation[corporationIndex]}}" range="{{corporation}}">
<view class="form_right">
<view class="{{[corporation[corporationIndex]?'valueActive':'']}}">{{corporation[corporationIndex]?corporation[corporationIndex]:'点击选择'}}</view>
<view class="iconfont icon-arrows_right"></view>
</view>
</picker>
</view>
<view class="fllow_form">
<view><text>*</text>关联合同</view>
<picker bindchange="bindAgreement" value="{{agreement[agreementIndex].name}}" range="{{agreement}}">
<view class="form_right">
<view class="{{[agreement[agreementIndex]?'valueActive':'']}}">{{agreement[agreementIndex]?agreement[agreementIndex]:'点击选择'}}</view>
<view class="iconfont icon-arrows_right"></view>
</view>
</picker>
</view>
<view class="fllow_form">
<view><text>*</text>发票金额</view>
<input class="weui-input" type="number" value="{{billsObj.money}}" maxlength="10" placeholder="请输入发票金额" bindinput="bindMoney"/>
</view>
<view class="fllow_area">
<view class="area_head">备注</view>
<textarea class="{{[remark?'valueActive':'']}}" placeholder="请输入备注" placeholder-style="color:#999" value="{{billsObj.remark}}" bindinput="bindRemark"></textarea>
</view>
<view class="btn_g bg-blue button-hover round" bindtap="addBills" wx:if="{{!reviseId}}">保存</view>
<view class="btn_g bg-blue button-hover round" bindtap="reviseBills" wx:if="{{reviseId}}">保存</view>
<u-action-sheet vue-id="4b0ab70f-3" list="{{uploadActions}}" value="{{uploadShow}}" data-event-opts="{{[['^click',[['uploadType']]],['^input',[['__set_model',['','uploadShow','$event',[]]]]]]}}" bind:click="__e" bind:input="__e" bind:__l="__l"></u-action-sheet>
<select-customer class="vue-ref" bind:getCustomerinfo="__e" vue-id="4b0ab70f-4" data-ref="customerChild" data-event-opts="{{[['^getCustomerinfo',[['getCustomerinfo']]]]}}" bind:__l="__l"></select-customer>
</view>

View File

@ -0,0 +1,170 @@
.valueActive {
color:#333
}
.new_fllow {
font-size:28rpx
}
.new_fllow .fllow_form {
display:flex;
justify-content:space-between;
align-items:center;
height:100rpx;
line-height:100rpx;
background-color:#fff;
border-bottom:1rpx solid #eaeaea;
padding:0 30rpx;
color:#999;
font-size:32rpx
}
.new_fllow .fllow_form .form_right {
display:flex;
color:#999
}
.new_fllow .fllow_form .form_right image {
width:40rpx;
height:40rpx;
margin:28rpx 5rpx 0 0
}
.new_fllow .fllow_form text {
color:red;
margin-left:10rpx
}
.new_fllow .fllow_form .form_input input {
height:100%;
text-align:right
}
.new_fllow .fllow_form .fllow_button {
margin-top:15rpx
}
.new_fllow .fllow_file_li {
padding:24rpx 34rpx;
background:#fff;
border-bottom:1rpx solid #eaeaea
}
.new_fllow .fllow_file_li .fil_li {
display:flex;
justify-content:space-between;
align-items:center;
margin-bottom:14rpx
}
.new_fllow .fllow_file_li .fil_li .fileimg {
width:20rpx;
height:20rpx
}
.new_fllow .fllow_file_li .fil_li .filename {
width:450rpx;
font-size:24rpx;
color:#999;
white-space:nowrap;
overflow:hidden;
text-overflow:ellipsis
}
.new_fllow .fllow_file_li .fil_li .closeimg {
width:32rpx;
height:32rpx
}
.new_fllow .imglist {
padding:24rpx 34rpx;
background:#fff;
border-bottom:1rpx solid #eaeaea;
display:flex;
justify-content:flex-start;
align-items:center;
flex-wrap:wrap
}
.new_fllow .imglist .imgbox {
width:160rpx;
height:160rpx;
margin-right:14rpx;
position:relative;
margin-bottom:24rpx;
border:1rpx solid #eaeaea
}
.new_fllow .imglist .imgbox .delimg {
width:32rpx;
height:32rpx;
border-radius:50%;
position:absolute;
right:-16rpx;
top:-16rpx;
background:rgba(0,0,0,.5);
z-index:2
}
.new_fllow .imglist .imgbox .selfimg {
width:160rpx;
height:160rpx
}
.new_fllow .fllow_area {
background-color:#fff;
margin-bottom:30rpx;
padding-bottom:30rpx;
color:#999
}
.new_fllow .fllow_area .area_head {
height:100rpx;
line-height:100rpx;
font-size:32rpx;
padding:0 30rpx
}
.new_fllow .fllow_area .area_head text {
color:red
}
.new_fllow .fllow_area textarea {
width:80%;
height:300rpx;
padding:30rpx;
background:#f8f8f8;
border-radius:15rpx;
margin:0 auto
}
.new_fllow .follow_task {
height:80rpx;
line-height:80rpx
}
.imglist {
padding:24rpx 34rpx;
background:#fff;
border-bottom:1rpx solid #eaeaea;
display:flex;
justify-content:flex-start;
align-items:center;
flex-wrap:wrap
}
.imglist .imgbox {
width:160rpx;
height:160rpx;
margin-right:14rpx;
position:relative;
margin-bottom:24rpx;
border:1rpx solid #eaeaea
}
.imglist .imgbox .delimg {
width:32rpx;
height:32rpx;
border-radius:50%;
position:absolute;
right:-16rpx;
top:-16rpx;
background:rgba(0,0,0,.5);
z-index:2
}
.imglist .imgbox .selfimg {
width:160rpx;
height:160rpx
}
#btn {
width:500rpx;
height:88rpx;
background:#03aa96;
border-radius:29rpx;
font-size:34rpx;
color:#fff;
line-height:88rpx
}
.weui-input {
width:50%;
height: 100rpx;
text-align: right;
color: #333;
}

View File

@ -0,0 +1,66 @@
// pages/index/groupCompany/bills/billsDetail.js
Page({
/**
* 页面的初始数据
*/
data: {
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
}
})

View File

@ -0,0 +1,3 @@
{
"usingComponents": {}
}

View File

@ -0,0 +1,2 @@
<!--pages/index/groupCompany/bills/billsDetail.wxml-->
<text>pages/index/groupCompany/bills/billsDetail.wxml</text>

View File

@ -0,0 +1 @@
/* pages/index/groupCompany/bills/billsDetail.wxss */

File diff suppressed because one or more lines are too long

View File

@ -34,16 +34,16 @@
<view class="protext">{{''+(info.receivables.ratio>=100?100:info.receivables.ratio)+'%'}}</view>
</block>
</view>
<view class="li_text">
<view class="li_text" wx:if="{{has_amount_view}}">
<block wx:if="{{info}}">
<view class="protext">{{'合同金额:¥'+(info.money?info.money:'')+''}}</view>
</block>
</view>
<block wx:if="{{info}}">
<view class="content">{{'已回款:¥'+(info.receivables?info.receivables.repayment_money:'')+''}}</view>
<view class="content" wx:if="{{has_amount_view}}">{{'已回款:¥'+(info.receivables?info.receivables.repayment_money:'')+''}}</view>
</block>
<block wx:if="{{info}}">
<view class="content">{{'待回款:¥ '+(info.receivables?info.receivables.be_money:'')+''}}</view>
<view class="content" wx:if="{{has_amount_view}}">{{'待回款:¥ '+(info.receivables?info.receivables.be_money:'')+''}}</view>
</block>
<block wx:if="{{info}}">
<view class="content">{{'签约时间:'+(info.order_date?info.order_date:'')+''}}</view>
@ -103,20 +103,22 @@
<u-popup bind:input="__e" vue-id="a970ea7e-4" mode="bottom" border-radius="20" value="{{show}}" data-event-opts="{{[['^input',[['__set_model',['','show','$event',[]]]]]]}}" bind:__l="__l" vue-slots="{{['default']}}">
<view class="pull_head">更多操作</view>
<view class="pull_con">
<view data-event-opts="{{[['tap',[['toAddBills',['$0'],['info.id']]]]]}}" class="bottom_item" bindtap="__e">
<view style="padding:5rpx 12rpx;border:1px solid #ededed;">发票</view>
</view>
<view data-event-opts="{{[['tap',[['toAddCost',['$0'],['info.id']]]]]}}" class="bottom_item" bindtap="__e">
<view style="padding:5rpx 12rpx;border:1px solid #ededed;">费用</view>
</view>
<view data-event-opts="{{[['tap',[['followClick',['$0',3],['info.id']]]]]}}" class="bottom_item" bindtap="__e">
<view style="padding:5rpx 12rpx;border:1px solid #ededed;">写新跟进</view>
</view>
<view data-event-opts="{{[['tap',[['toAddPlan',['$0'],['info.id']]]]]}}" class="bottom_item" bindtap="__e">
<view style="padding:5rpx 12rpx;border:1px solid #ededed;">回款计划</view>
</view>
<view data-event-opts="{{[['tap',[['toAddPlan',['$0'],['info.id']]]]]}}" class="bottom_item" bindtap="__e">
<view style="padding:5rpx 12rpx;border:1px solid #ededed;">费用</view>
</view>
<view data-event-opts="{{[['tap',[['toAddPlan',['$0'],['info.id']]]]]}}" class="bottom_item" bindtap="__e">
<view style="padding:5rpx 12rpx;border:1px solid #ededed;">发票</view>
</view>
<block wx:if="{{info&&info.check_status==2}}">
<view data-event-opts="{{[['tap',[['toAddPayment',['$0'],['info.id']]]]]}}" class="bottom_item" bindtap="__e">
<view style="padding:5rpx 12rpx;border:1px solid #ededed;">回款</view>

File diff suppressed because one or more lines are too long

View File

@ -1 +1,92 @@
<view class="new_fllow"><view class="top_required">只展示<label style="color:#f00;" class="_span">必填</label>字段<switch checked="{{isRequired}}" color="#03AA96" data-event-opts="{{[['change',[['changeRequired',['$event']]]]]}}" bindchange="__e"></switch></view><view class="fllow_form"><view><text>*</text>关联客户</view><view data-event-opts="{{[['tap',[['changeCustomer',['$event']]]]]}}" class="form_right" bindtap="__e"><view class="{{[customerObj.id?'valueActive':'']}}">{{customerObj.id?customerObj.name:'点击选择'}}</view><view class="iconfont icon-arrows_right"></view></view></view><view class="fllow_form"><view><text>*</text>消费日期</view><picker mode="date" data-event-opts="{{[['change',[['changeTime',['$event']]]]]}}" bindchange="__e"><view class="form_right"><view class="{{[consume_time?'valueActive':'']}}">{{consume_time?consume_time:'点击选择'}}</view><view class="iconfont icon-arrows_right"></view></view></picker></view><view class="fllow_form"><view><text>*</text>消费方式</view><picker value="{{index}}" range="{{typeList}}" data-event-opts="{{[['change',[['changeType',['$event']]]]]}}" bindchange="__e"><view class="form_right"><view class="{{[consume_type?'valueActive':'']}}">{{consume_type?consume_type:'点击选择'}}</view><view class="iconfont icon-arrows_right"></view></view></picker></view><view class="fllow_form"><view><text>*</text>消费金额</view><view class="form_input"><input class="{{[money?'valueActive':'']}}" type="text" placeholder-style="font-size:30rpx;color: #999;" placeholder="请输入消费金额" data-event-opts="{{[['input',[['__set_model',['','money','$event',[]]]]]]}}" value="{{money}}" bindinput="__e"/></view></view><block wx:if="{{!isRequired}}"><view class="fllow_area"><view class="area_head">备注</view><textarea class="{{[remark?'valueActive':'']}}" placeholder="请输入备注" placeholder-style="color:#999" data-event-opts="{{[['input',[['__set_model',['','remark','$event',[]]]]]]}}" value="{{remark}}" bindinput="__e"></textarea></view></block><block wx:if="{{!isRequired}}"><view class="fllow_form"><view style="padding-left:23rpx;">上传附件</view><view data-event-opts="{{[['tap',[['uploadClick',['$event']]]]]}}" class="form_right" bindtap="__e"><view>选择附件</view><view class="iconfont icon-arrows_right"></view></view></view></block><block wx:if="{{$root.g0!=0}}"><view class="imglist"><block wx:for="{{imgList}}" wx:for-item="item" wx:for-index="imgindex" wx:key="imgindex"><view class="imgbox"><image class="delimg" src="{{BASE_IMG_URL+'close.png'}}" mode="scaleToFill" data-event-opts="{{[['tap',[['delImg',[imgindex]]]]]}}" bindtap="__e"></image><image class="selfimg" src="{{item.url}}" mode="scaleToFill" data-event-opts="{{[['tap',[['openCommonImg',['$0',imgindex],['imgList']]]]]}}" bindtap="__e"></image></view></block></view></block><block wx:if="{{$root.g1!=0}}"><view class="fllow_file_li"><block wx:for="{{fileList}}" wx:for-item="item" wx:for-index="fileindex" wx:key="fileindex"><view class="fil_li"><image class="fileimg" src="{{BASE_IMG_URL+'fujian.png'}}" mode="scaleToFill"></image><view data-event-opts="{{[['tap',[['openCommonFile',['$0'],[[['fileList','',fileindex]]]]]]]}}" class="filename" bindtap="__e">{{item.name}}</view><image class="closeimg" src="{{BASE_IMG_URL+'close.png'}}" mode="scaleToFill" data-event-opts="{{[['tap',[['delFile',[fileindex]]]]]}}" bindtap="__e"></image></view></block></view></block><block wx:if="{{approvalPro.status==1}}"><fixed-approval vue-id="4b0ab70f-1" list="{{approvalPro.stepList}}" bind:__l="__l"></fixed-approval></block><block wx:if="{{approvalPro.status==0}}"><examine-template vue-id="4b0ab70f-2" remindPeople="{{remindPeople}}" data-event-opts="{{[['^delExamine',[['delRemind']]]]}}" bind:delExamine="__e" bind:__l="__l"></examine-template></block><view class="btn_g bg-blue button-hover round" id="btn" data-event-opts="{{[['tap',[['$noMultipleClicks',['$0'],['saveFollow']]]]]}}" bindtap="__e">保存</view><u-action-sheet vue-id="4b0ab70f-3" list="{{uploadActions}}" value="{{uploadShow}}" data-event-opts="{{[['^click',[['uploadType']]],['^input',[['__set_model',['','uploadShow','$event',[]]]]]]}}" bind:click="__e" bind:input="__e" bind:__l="__l"></u-action-sheet><select-customer class="vue-ref" bind:getCustomerinfo="__e" vue-id="4b0ab70f-4" data-ref="customerChild" data-event-opts="{{[['^getCustomerinfo',[['getCustomerinfo']]]]}}" bind:__l="__l"></select-customer></view>
<view class="new_fllow">
<view class="top_required">只展示<label style="color:#f00;" class="_span">必填</label>字段
<switch checked="{{isRequired}}" color="#03AA96" data-event-opts="{{[['change',[['changeRequired',['$event']]]]]}}" bindchange="__e"></switch>
</view>
<!-- <view class="fllow_form">
<view><text>*</text>关联客户</view>
<view data-event-opts="{{[['tap',[['changeCustomer',['$event']]]]]}}" class="form_right" bindtap="__e">
<view class="{{[customerObj.id?'valueActive':'']}}">{{customerObj.id?customerObj.name:'点击选择'}}</view>
<view class="iconfont icon-arrows_right"></view>
</view>
</view>
<view class="fllow_form">
<view><text>*</text>消费日期</view>
<picker mode="date" data-event-opts="{{[['change',[['changeTime',['$event']]]]]}}" bindchange="__e">
<view class="form_right">
<view class="{{[consume_time?'valueActive':'']}}">{{consume_time?consume_time:'点击选择'}}</view>
<view class="iconfont icon-arrows_right"></view>
</view>
</picker>
</view>
<view class="fllow_form">
<view><text>*</text>消费方式</view>
<picker value="{{index}}" range="{{typeList}}" data-event-opts="{{[['change',[['changeType',['$event']]]]]}}" bindchange="__e">
<view class="form_right">
<view class="{{[consume_type?'valueActive':'']}}">{{consume_type?consume_type:'点击选择'}}</view>
<view class="iconfont icon-arrows_right"></view>
</view>
</picker>
</view> -->
<view class="fllow_form">
<view><text>*</text>关联合同</view>
<picker data-event-opts="{{[['change',[['bindAgreement',['$event']]]]]}}" bindchange="__e" value="{{agreement[agreementIndex].name}}" range="{{agreement}}">
<view class="form_right">
<view class="{{[agreement[agreementIndex]?'valueActive':'']}}">{{agreement[agreementIndex]?agreement[agreementIndex]:'点击选择'}}</view>
<view class="iconfont icon-arrows_right"></view>
</view>
</picker>
</view>
<view class="fllow_form">
<view><text>*</text>消费金额</view>
<view class="form_input"><input class="{{[money?'valueActive':'']}}" type="text" placeholder-style="font-size:30rpx;color: #999;" placeholder="请输入消费金额" data-event-opts="{{[['input',[['__set_model',['','money','$event',[]]]]]]}}" value="{{money}}" bindinput="__e" /></view>
</view>
<view class="fllow_form">
<view>报销主题</view>
<view class="form_input"><input class="{{[theme?'valueActive':'']}}" type="text" placeholder-style="font-size:30rpx;color: #999;" placeholder="请输入报销主题" data-event-opts="{{[['input',[['__set_model',['','theme','$event',[]]]]]]}}" value="{{theme}}" bindinput="__e" /></view>
</view>
<block wx:if="{{!isRequired}}">
<view class="fllow_area">
<view class="area_head">备注</view><textarea class="{{[remark?'valueActive':'']}}" placeholder="请输入备注" placeholder-style="color:#999" data-event-opts="{{[['input',[['__set_model',['','remark','$event',[]]]]]]}}" value="{{remark}}" bindinput="__e"></textarea></view>
</block>
<block wx:if="{{!isRequired}}">
<view class="fllow_form">
<view style="padding-left:23rpx;">上传附件</view>
<view data-event-opts="{{[['tap',[['uploadClick',['$event']]]]]}}" class="form_right" bindtap="__e">
<view>选择附件</view>
<view class="iconfont icon-arrows_right"></view>
</view>
</view>
</block>
<block wx:if="{{$root.g0!=0}}">
<view class="imglist">
<block wx:for="{{imgList}}" wx:for-item="item" wx:for-index="imgindex" wx:key="imgindex">
<view class="imgbox">
<image class="delimg" src="{{BASE_IMG_URL+'close.png'}}" mode="scaleToFill" data-event-opts="{{[['tap',[['delImg',[imgindex]]]]]}}" bindtap="__e"></image>
<image class="selfimg" src="{{item.url}}" mode="scaleToFill" data-event-opts="{{[['tap',[['openCommonImg',['$0',imgindex],['imgList']]]]]}}" bindtap="__e"></image>
</view>
</block>
</view>
</block>
<block wx:if="{{$root.g1!=0}}">
<view class="fllow_file_li">
<block wx:for="{{fileList}}" wx:for-item="item" wx:for-index="fileindex" wx:key="fileindex">
<view class="fil_li">
<image class="fileimg" src="{{BASE_IMG_URL+'fujian.png'}}" mode="scaleToFill"></image>
<view data-event-opts="{{[['tap',[['openCommonFile',['$0'],[[['fileList','',fileindex]]]]]]]}}" class="filename" bindtap="__e">{{item.name}}</view>
<image class="closeimg" src="{{BASE_IMG_URL+'close.png'}}" mode="scaleToFill" data-event-opts="{{[['tap',[['delFile',[fileindex]]]]]}}" bindtap="__e"></image>
</view>
</block>
</view>
</block>
<block wx:if="{{approvalPro.status==1}}">
<fixed-approval vue-id="4b0ab70f-1" list="{{approvalPro.stepList}}" bind:__l="__l"></fixed-approval>
</block>
<block wx:if="{{approvalPro.status==0}}">
<examine-template vue-id="4b0ab70f-2" remindPeople="{{remindPeople}}" data-event-opts="{{[['^delExamine',[['delRemind']]]]}}" bind:delExamine="__e" bind:__l="__l"></examine-template>
</block>
<view class="btn_g bg-blue button-hover round" id="btn" data-event-opts="{{[['tap',[['$noMultipleClicks',['$0'],['saveFollow']]]]]}}" bindtap="__e">保存</view>
<u-action-sheet vue-id="4b0ab70f-3" list="{{uploadActions}}" value="{{uploadShow}}" data-event-opts="{{[['^click',[['uploadType']]],['^input',[['__set_model',['','uploadShow','$event',[]]]]]]}}" bind:click="__e" bind:input="__e" bind:__l="__l"></u-action-sheet>
<select-customer class="vue-ref" bind:getCustomerinfo="__e" vue-id="4b0ab70f-4" data-ref="customerChild" data-event-opts="{{[['^getCustomerinfo',[['getCustomerinfo']]]]}}" bind:__l="__l"></select-customer>
</view>

View File

@ -1 +1,163 @@
.valueActive{color:#333}.new_fllow{font-size:28rpx}.new_fllow .fllow_form{display:flex;justify-content:space-between;align-items:center;height:100rpx;line-height:100rpx;background-color:#fff;border-bottom:1rpx solid #eaeaea;padding:0 30rpx;color:#999;font-size:32rpx}.new_fllow .fllow_form .form_right{display:flex;color:#999}.new_fllow .fllow_form .form_right image{width:40rpx;height:40rpx;margin:28rpx 5rpx 0 0}.new_fllow .fllow_form text{color:red;margin-left:10rpx}.new_fllow .fllow_form .form_input input{height:100%;text-align:right}.new_fllow .fllow_form .fllow_button{margin-top:15rpx}.new_fllow .fllow_file_li{padding:24rpx 34rpx;background:#fff;border-bottom:1rpx solid #eaeaea}.new_fllow .fllow_file_li .fil_li{display:flex;justify-content:space-between;align-items:center;margin-bottom:14rpx}.new_fllow .fllow_file_li .fil_li .fileimg{width:20rpx;height:20rpx}.new_fllow .fllow_file_li .fil_li .filename{width:450rpx;font-size:24rpx;color:#999;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.new_fllow .fllow_file_li .fil_li .closeimg{width:32rpx;height:32rpx}.new_fllow .imglist{padding:24rpx 34rpx;background:#fff;border-bottom:1rpx solid #eaeaea;display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap}.new_fllow .imglist .imgbox{width:160rpx;height:160rpx;margin-right:14rpx;position:relative;margin-bottom:24rpx;border:1rpx solid #eaeaea}.new_fllow .imglist .imgbox .delimg{width:32rpx;height:32rpx;border-radius:50%;position:absolute;right:-16rpx;top:-16rpx;background:rgba(0,0,0,.5);z-index:2}.new_fllow .imglist .imgbox .selfimg{width:160rpx;height:160rpx}.new_fllow .fllow_area{background-color:#fff;margin-bottom:30rpx;padding-bottom:30rpx;color:#999}.new_fllow .fllow_area .area_head{height:100rpx;line-height:100rpx;font-size:32rpx;padding:0 30rpx}.new_fllow .fllow_area .area_head text{color:red}.new_fllow .fllow_area textarea{width:80%;height:300rpx;padding:30rpx;background:#f8f8f8;border-radius:15rpx;margin:0 auto}.new_fllow .follow_task{height:80rpx;line-height:80rpx}.imglist{padding:24rpx 34rpx;background:#fff;border-bottom:1rpx solid #eaeaea;display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap}.imglist .imgbox{width:160rpx;height:160rpx;margin-right:14rpx;position:relative;margin-bottom:24rpx;border:1rpx solid #eaeaea}.imglist .imgbox .delimg{width:32rpx;height:32rpx;border-radius:50%;position:absolute;right:-16rpx;top:-16rpx;background:rgba(0,0,0,.5);z-index:2}.imglist .imgbox .selfimg{width:160rpx;height:160rpx}#btn{width:500rpx;height:88rpx;background:#03aa96;border-radius:29rpx;font-size:34rpx;color:#fff;line-height:88rpx}
.valueActive {
color:#333
}
.new_fllow {
font-size:28rpx
}
.new_fllow .fllow_form {
display:flex;
justify-content:space-between;
align-items:center;
height:100rpx;
line-height:100rpx;
background-color:#fff;
border-bottom:1rpx solid #eaeaea;
padding:0 30rpx;
color:#999;
font-size:32rpx
}
.new_fllow .fllow_form .form_right {
display:flex;
color:#999
}
.new_fllow .fllow_form .form_right image {
width:40rpx;
height:40rpx;
margin:28rpx 5rpx 0 0
}
.new_fllow .fllow_form text {
color:red;
margin-left:10rpx
}
.new_fllow .fllow_form .form_input input {
height:100%;
text-align:right
}
.new_fllow .fllow_form .fllow_button {
margin-top:15rpx
}
.new_fllow .fllow_file_li {
padding:24rpx 34rpx;
background:#fff;
border-bottom:1rpx solid #eaeaea
}
.new_fllow .fllow_file_li .fil_li {
display:flex;
justify-content:space-between;
align-items:center;
margin-bottom:14rpx
}
.new_fllow .fllow_file_li .fil_li .fileimg {
width:20rpx;
height:20rpx
}
.new_fllow .fllow_file_li .fil_li .filename {
width:450rpx;
font-size:24rpx;
color:#999;
white-space:nowrap;
overflow:hidden;
text-overflow:ellipsis
}
.new_fllow .fllow_file_li .fil_li .closeimg {
width:32rpx;
height:32rpx
}
.new_fllow .imglist {
padding:24rpx 34rpx;
background:#fff;
border-bottom:1rpx solid #eaeaea;
display:flex;
justify-content:flex-start;
align-items:center;
flex-wrap:wrap
}
.new_fllow .imglist .imgbox {
width:160rpx;
height:160rpx;
margin-right:14rpx;
position:relative;
margin-bottom:24rpx;
border:1rpx solid #eaeaea
}
.new_fllow .imglist .imgbox .delimg {
width:32rpx;
height:32rpx;
border-radius:50%;
position:absolute;
right:-16rpx;
top:-16rpx;
background:rgba(0,0,0,.5);
z-index:2
}
.new_fllow .imglist .imgbox .selfimg {
width:160rpx;
height:160rpx
}
.new_fllow .fllow_area {
background-color:#fff;
margin-bottom:30rpx;
padding-bottom:30rpx;
color:#999
}
.new_fllow .fllow_area .area_head {
height:100rpx;
line-height:100rpx;
font-size:32rpx;
padding:0 30rpx
}
.new_fllow .fllow_area .area_head text {
color:red
}
.new_fllow .fllow_area textarea {
width:80%;
height:300rpx;
padding:30rpx;
background:#f8f8f8;
border-radius:15rpx;
margin:0 auto
}
.new_fllow .follow_task {
height:80rpx;
line-height:80rpx
}
.imglist {
padding:24rpx 34rpx;
background:#fff;
border-bottom:1rpx solid #eaeaea;
display:flex;
justify-content:flex-start;
align-items:center;
flex-wrap:wrap
}
.imglist .imgbox {
width:160rpx;
height:160rpx;
margin-right:14rpx;
position:relative;
margin-bottom:24rpx;
border:1rpx solid #eaeaea
}
.imglist .imgbox .delimg {
width:32rpx;
height:32rpx;
border-radius:50%;
position:absolute;
right:-16rpx;
top:-16rpx;
background:rgba(0,0,0,.5);
z-index:2
}
.imglist .imgbox .selfimg {
width:160rpx;
height:160rpx
}
#btn {
width:500rpx;
height:88rpx;
background:#03aa96;
border-radius:29rpx;
font-size:34rpx;
color:#fff;
line-height:88rpx
}

View File

@ -1 +1,152 @@
(global["webpackJsonp"]=global["webpackJsonp"]||[]).push([["pages/index/groupCompany/cost/costDetail"],{2311:function(t,n,e){},"40aa":function(t,n,e){"use strict";var i=e("2311"),a=e.n(i);a.a},7894:function(t,n,e){"use strict";(function(t){Object.defineProperty(n,"__esModule",{value:!0}),n.default=void 0;var i=e("0c59"),a=e("76dd"),o=e("dc92"),u={components:{approvalStatus:function(){e.e("components/approvalStatus").then(function(){return resolve(e("b975"))}.bind(null,e)).catch(e.oe)}},data:function(){return{id:"",customer_id:"",consume_time:"",consume_type:"",money:"",remark:"",file_ids:"",BASE_IMG_URL:i.BASE_IMG_URL,info:{},payment_approval:{}}},onLoad:function(t){this.id=t.id},onShow:function(){this.getDetail(),this.getApprovalList()},onUnload:function(){t.removeStorageSync("remindlist")},methods:{getApprovalList:function(){var t=this,n={type:"consume",relation_id:this.id};(0,o.netApprovalDetail)(n).then((function(n){t.payment_approval=n.data}))},getDetail:function(){var t=this;(0,a.netCostDetail)({id:this.id}).then((function(n){t.info=n.data}))},previewImg:function(n,e){t.previewImage({urls:n,current:e,fail:function(t){console.log(t)}})},toPass:function(){t.navigateTo({url:"/pages/examine/examine?id="+this.id+"&type=consume&status=1"})},toRefuse:function(){t.navigateTo({url:"/pages/examine/examine?id="+this.id+"&type=consume&status=2"})},toEdit:function(){t.navigateTo({url:"/pages/index/groupCompany/cost/editCost?id="+this.id})}}};n.default=u}).call(this,e("543d")["default"])},"919a":function(t,n,e){"use strict";(function(t,n){var i=e("4ea4");e("8886");i(e("66fd"));var a=i(e("d7f1"));t.__webpack_require_UNI_MP_PLUGIN__=e,n(a.default)}).call(this,e("bc2e")["default"],e("543d")["createPage"])},c8a8:function(t,n,e){"use strict";e.r(n);var i=e("7894"),a=e.n(i);for(var o in i)["default"].indexOf(o)<0&&function(t){e.d(n,t,(function(){return i[t]}))}(o);n["default"]=a.a},d7f1:function(t,n,e){"use strict";e.r(n);var i=e("ee61"),a=e("c8a8");for(var o in a)["default"].indexOf(o)<0&&function(t){e.d(n,t,(function(){return a[t]}))}(o);e("40aa");var u=e("f0c5"),c=Object(u["a"])(a["default"],i["b"],i["c"],!1,null,null,null,!1,i["a"],void 0);n["default"]=c.exports},ee61:function(t,n,e){"use strict";e.d(n,"b",(function(){return i})),e.d(n,"c",(function(){return a})),e.d(n,"a",(function(){}));var i=function(){var t=this.$createElement;this._self._c},a=[]}},[["919a","common/runtime","common/vendor"]]]);
(global["webpackJsonp"] = global["webpackJsonp"] || []).push([
["pages/index/groupCompany/cost/costDetail"], {
2311: function(t, n, e) {},
"40aa": function(t, n, e) {
"use strict";
var i = e("2311"),
a = e.n(i);
a.a
},
7894: function(t, n, e) {
"use strict";
(function(t) {
Object.defineProperty(n, "__esModule", {
value: !0
}), n.default = void 0;
var i = e("0c59"),
a = e("76dd"),
o = e("dc92"),
u = {
components: {
approvalStatus: function() {
e.e("components/approvalStatus").then(function() {
return resolve(e("b975"))
}.bind(null, e)).catch(e.oe)
}
},
data: function() {
return {
id: "",
customer_id: "",
consume_time: "",
consume_type: "",
money: "",
remark: "",
file_ids: "",
BASE_IMG_URL: i.BASE_IMG_URL,
info: {},
payment_approval: {}
}
},
onLoad: function(t) {
this.id = t.id
},
onShow: function() {
this.getDetail(), this.getApprovalList()
},
onUnload: function() {
t.removeStorageSync("remindlist")
},
methods: {
getApprovalList: function() {
var t = this,
n = {
type: "consume",
relation_id: this.id
};
(0, o.netApprovalDetail)(n).then((function(n) {
t.payment_approval = n.data
}))
},
getDetail: function() {
var t = this;
(0, a.netCostDetail)({
id: this.id
}).then((function(n) {
t.info = n.data
}))
},
previewImg: function(n, e) {
t.previewImage({
urls: n,
current: e,
fail: function(t) {
console.log(t)
}
})
},
toPass: function() {
t.navigateTo({
url: "/pages/examine/examine?id=" + this.id + "&type=consume&status=1"
})
},
toRefuse: function() {
t.navigateTo({
url: "/pages/examine/examine?id=" + this.id + "&type=consume&status=2"
})
},
toEdit: function() {
t.navigateTo({
url: "/pages/index/groupCompany/cost/editCost?id=" + this.id
})
}
}
};
n.default = u
}).call(this, e("543d")["default"])
},
"919a": function(t, n, e) {
"use strict";
(function(t, n) {
var i = e("4ea4");
e("8886");
i(e("66fd"));
var a = i(e("d7f1"));
t.__webpack_require_UNI_MP_PLUGIN__ = e, n(a.default)
}).call(this, e("bc2e")["default"], e("543d")["createPage"])
},
c8a8: function(t, n, e) {
"use strict";
e.r(n);
var i = e("7894"),
a = e.n(i);
for (var o in i)["default"].indexOf(o) < 0 && function(t) {
e.d(n, t, (function() {
return i[t]
}))
}(o);
n["default"] = a.a
},
d7f1: function(t, n, e) {
"use strict";
e.r(n);
var i = e("ee61"),
a = e("c8a8");
for (var o in a)["default"].indexOf(o) < 0 && function(t) {
e.d(n, t, (function() {
return a[t]
}))
}(o);
e("40aa");
var u = e("f0c5"),
c = Object(u["a"])(a["default"], i["b"], i["c"], !1, null, null, null, !1, i["a"], void 0);
n["default"] = c.exports
},
ee61: function(t, n, e) {
"use strict";
e.d(n, "b", (function() {
return i
})), e.d(n, "c", (function() {
return a
})), e.d(n, "a", (function() {}));
var i = function() {
var t = this.$createElement;
this._self._c
},
a = []
}
},
[
["919a", "common/runtime", "common/vendor"]
]
]);

View File

@ -1 +1,75 @@
<view class="new_fllow"><view class="fllow_form"><view>提交人</view><view class="form_input"><view>{{''+(info.staff&&info.staff.name)+''}}</view></view></view><view class="fllow_form"><view>提交时间</view><view class="form_input"><view>{{''+info.createtime+''}}</view></view></view><view class="fllow_form"><view>关联客户</view><view class="form_input">{{''+(info.customer&&info.customer.name)+''}}</view></view><view class="fllow_form"><view><text>*</text>消费日期</view><picker mode="date" disabled="{{true}}" data-event-opts="{{[['change',[['changeTime',['$event']]]]]}}" bindchange="__e"><view class="form_right"><view>{{info.consume_time}}</view><view class="iconfont icon-arrows_right"></view></view></picker></view><view class="fllow_form"><view><text>*</text>消费方式</view><view class="form_right"><view>{{info.consume_type}}</view><view class="iconfont icon-arrows_right"></view></view></view><view class="fllow_form"><view><text>*</text>消费金额</view><view class="form_input"><input type="text" disabled="{{true}}" placeholder-style="font-size:30rpx;color: #999;" placeholder="消费金额" data-event-opts="{{[['input',[['__set_model',['$0','money','$event',[]],['info']]]]]}}" value="{{info.money}}" bindinput="__e"/></view></view><view class="fllow_area"><view class="area_head">备注</view><textarea disabled="{{true}}" placeholder="请输入备注" placeholder-style="color:#999" data-event-opts="{{[['input',[['__set_model',['$0','remark','$event',[]],['info']]]]]}}" value="{{info.remark}}" bindinput="__e"></textarea></view><view class="fllow_form"><view>附件</view></view><block wx:if="{{info.files!=0}}"><view class="imglist"><block wx:for="{{info.file_text}}" wx:for-item="item" wx:for-index="index" wx:key="index"><view class="imgbox"><image class="selfimg" src="{{item}}" mode="scaleToFill" data-event-opts="{{[['tap',[['previewImg',['$0',index],['info.file_text']]]]]}}" bindtap="__e"></image></view></block></view></block><approval-status vue-id="3476c33e-1" process="{{payment_approval}}" bind:__l="__l"></approval-status><view style="height:100rpx;"></view><block wx:if="{{payment_approval.is_check==1}}"><view class="botbtn"><view data-event-opts="{{[['tap',[['toPass',['$event']]]]]}}" class="btn pass" bindtap="__e">通过</view><view data-event-opts="{{[['tap',[['toRefuse',['$event']]]]]}}" class="btn refuse" bindtap="__e">拒绝</view></view></block><block wx:if="{{info.check_status==3}}"><view class="editbox"><view data-event-opts="{{[['tap',[['toEdit',['$event']]]]]}}" class="editbtn" bindtap="__e">修改费用</view></view></block></view>
<view class="new_fllow">
<view class="fllow_form">
<view>提交人</view>
<view class="form_input">
<view>{{''+(info.staff&&info.staff.name)+''}}</view>
</view>
</view>
<view class="fllow_form">
<view>提交时间</view>
<view class="form_input">
<view>{{''+info.createtime+''}}</view>
</view>
</view>
<!-- <view class="fllow_form">
<view>关联客户</view>
<view class="form_input">{{''+(info.customer&&info.customer.name)+''}}</view>
</view> -->
<view class="fllow_form">
<view>关联合同</view>
<view class="form_input">{{info.contract.name}}</view>
</view>
<view class="fllow_form">
<view>报销主题</view>
<view class="form_input">{{info.theme}}</view>
</view>
<!-- <view class="fllow_form">
<view><text>*</text>消费日期</view>
<picker mode="date" disabled="{{true}}" data-event-opts="{{[['change',[['changeTime',['$event']]]]]}}" bindchange="__e">
<view class="form_right">
<view>{{info.consume_time}}</view>
<view class="iconfont icon-arrows_right"></view>
</view>
</picker>
</view>
<view class="fllow_form">
<view><text>*</text>消费方式</view>
<view class="form_right">
<view>{{info.consume_type}}</view>
<view class="iconfont icon-arrows_right"></view>
</view>
</view> -->
<view class="fllow_form">
<view><text>*</text>消费金额</view>
<view class="form_input"><input type="text" disabled="{{true}}" placeholder-style="font-size:30rpx;color: #999;" placeholder="消费金额" data-event-opts="{{[['input',[['__set_model',['$0','money','$event',[]],['info']]]]]}}" value="{{info.money}}" bindinput="__e" /></view>
</view>
<view class="fllow_area">
<view class="area_head">备注</view><textarea disabled="{{true}}" placeholder="请输入备注" placeholder-style="color:#999" data-event-opts="{{[['input',[['__set_model',['$0','remark','$event',[]],['info']]]]]}}" value="{{info.remark}}" bindinput="__e"></textarea></view>
<view
class="fllow_form">
<view>附件</view>
</view>
<block wx:if="{{info.files!=0}}">
<view class="imglist">
<block wx:for="{{info.file_text}}" wx:for-item="item" wx:for-index="index" wx:key="index">
<view class="imgbox">
<image class="selfimg" src="{{item}}" mode="scaleToFill" data-event-opts="{{[['tap',[['previewImg',['$0',index],['info.file_text']]]]]}}" bindtap="__e"></image>
</view>
</block>
</view>
</block>
<approval-status vue-id="3476c33e-1" process="{{payment_approval}}" bind:__l="__l"></approval-status>
<view style="height:100rpx;"></view>
<block wx:if="{{payment_approval.is_check==1}}">
<view class="botbtn">
<view data-event-opts="{{[['tap',[['toPass',['$event']]]]]}}" class="btn pass" bindtap="__e">通过</view>
<view data-event-opts="{{[['tap',[['toRefuse',['$event']]]]]}}" class="btn refuse" bindtap="__e">拒绝</view>
</view>
</block>
<block wx:if="{{info.check_status==3}}">
<view class="editbox">
<view data-event-opts="{{[['tap',[['toEdit',['$event']]]]]}}" class="editbtn" bindtap="__e">修改费用</view>
</view>
</block>
</view>

View File

@ -10,23 +10,8 @@ Page({
BASE_IMG_URL: app.globalData.BASE_IMG_URL,
BASE_URL:app.globalData.BASE_URL,
page: 1,
totalPage: 1,
list: [
{
check_staff_ids: "126",
check_status: 2,
consume_time: "2023-02-27",
consume_type: "住酒店",
createtime: "2023-02-27 10:25:09"
},
{
check_staff_ids: "122",
check_status: 2,
consume_time: "2023-02-21",
consume_type: "住酒店",
createtime: "2023-02-27 10:25:09"
}
],
total: '',
list: [],
queryParams: {},
moneyInfo: {}
},
@ -35,7 +20,6 @@ Page({
* 生命周期函数--监听页面加载
*/
onLoad(options) {
this.getBillList();
},
/**
@ -48,8 +32,10 @@ Page({
/**
* 生命周期函数--监听页面显示
*/
onShow() {
this.data.page = 1;
this.getBillList();
},
/**
@ -77,29 +63,89 @@ Page({
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
let that = this;
let page = that.data.page;
that.setData({
page: page + 1
});
console.log(that.data.page)
that.getBillList();
},
getBillList() {
console.log(this.data.BASE_URL)
let that = this;
wx.request({
url: this.data.BASE_URL + '/addons/crmx/bill/getContractList',
url: this.data.BASE_URL + '/addons/crmx/bill/getBillList',
data: {
page: this.data.page
page: that.data.page
},
header: {
'content-type': 'application/json', // 默认值
'token': wx.getStorageSync('token'),
},
success (res) {
console.log(res.data)
if(res.data.code == 1) {
console.log(res.data)
let total = res.data.data.total;
if(that.data.page == 1) {
that.setData({
list:[]
})
}
if(res.data.data.list && total > that.data.list.length) {
let list = that.data.list;
list = list.concat(res.data.data.list);
that.setData({
list:list
})
}
}
}
})
},
addBills() {
wx.navigateTo({
url: '/pages/index/groupCompany/bills/addBills',
})
},
// 修改
revise(e) {
console.log(e);
let id = e.currentTarget.dataset.id;
wx.navigateTo({
url: '/pages/index/groupCompany/bills/addBills?id=' + id,
})
},
//删除
delete(e) {
let that = this;
let id = e.currentTarget.dataset.id;
wx.request({
url: this.data.BASE_URL + '/addons/crmx/bill/delBill',
data: {
id: id
},
header: {
'content-type': 'application/json', // 默认值
'token': wx.getStorageSync('token'),
},
success (res) {
console.log(res.data,'删除成功')
wx.showToast({
title:"删除成功",
icon: 'success',//图标,支持"success"、"loading"
duration: 1200,//提示的延迟时间单位毫秒默认1500
mask: false,//是否显示透明蒙层防止触摸穿透默认false
})
setTimeout(function(){
that.setData({
page:1
})
that.getBillList();
},1400)
}
})
}

View File

@ -1,21 +1,27 @@
<view class="data-v-5cad64ad">
<scroll-view class="scrollbox data-v-5cad64ad" scroll-y="{{true}}" data-event-opts="{{[['scrolltolower',[['loodMore',['$event']]]]]}}" bindscrolltolower="__e">
<view class="data-v-5cad64ad" >
<view class="scrollbox data-v-5cad64ad">
<view class="payList data-v-5cad64ad">
<block wx:for="{{list}}" wx:for-item="item" wx:for-index="index" wx:key="index">
<view data-event-opts="{{[['tap',[['toDetail',['$0'],[[['list','',index]]]]]]]}}" class="cost data-v-2a5dec54" bindtap="__e">
<view class="cost data-v-2a5dec54">
<view class="cost_info data-v-2a5dec54">
<view class="cost_left data-v-2a5dec54">
<view class="cost_text data-v-2a5dec54">{{"关联公司:"+item.customer.name}}</view>
<view class="cost_text data-v-2a5dec54">{{"关联合同:"+item.contract.name}}</view>
<view class="cost_text data-v-2a5dec54">{{"关联公司:"+item.corporation.name}}</view>
<view class="cost_text data-v-2a5dec54">{{"发票金额:"+item.money}}</view>
<view class="cost_text data-v-2a5dec54">{{"消费日期:"+item.consume_time}}</view>
<view class="cost_text data-v-2a5dec54">{{"消费日期:"+item.createtime}}</view>
</view>
</view>
<view class="list-btns">
<view bindtap="revise" data-id="{{item.id}}">修改</view>
<view bindtap="delete" data-id="{{item.id}}">删除</view>
</view>
</view>
</block>
</view>
</scroll-view>
</view>
<view data-event-opts="{{[['tap',[['addCost',['$event']]]]]}}" class="icon_creat data-v-5cad64ad" bindtap="__e">
<view class="icon_creat data-v-5cad64ad" bindtap="addBills">
<image src="{{BASE_IMG_URL+'1.png'}}" mode="scaleToFill" class="data-v-5cad64ad"></image>
</view>
<screen-pop bind:sureParams="__e" vue-id="0e7795c2-3" data-ref="screenChild" data-event-opts="{{[['^sureParams',[['surePa']]]]}}" class="data-v-5cad64ad vue-ref" bind:__l="__l"></screen-pop>

View File

@ -79,8 +79,77 @@
color:#03aa96
}
.scrollbox.data-v-5cad64ad {
width:750rpx;
height:calc(100vh - 180rpx)
width:750rpx;
padding-bottom: 60rpx;
}
.cost.data-v-2a5dec54{width:690rpx;margin:0 auto 24rpx;background:#fff;border-radius:20rpx;padding:30rpx;position:relative}.cost .cost_type.data-v-2a5dec54{font-size:28rpx;color:#333;padding-bottom:15rpx;border-bottom:1rpx solid #f5f5f5}.cost .cost_status.data-v-2a5dec54{position:absolute;right:24rpx;top:24rpx;background:rgba(3,170,150,.1);border-radius:5rpx;font-size:26rpx;color:#03aa96;padding:5rpx 12rpx}.cost .cost_info.data-v-2a5dec54{display:flex;justify-content:space-between;align-items:center;padding:10rpx}.cost .cost_info .cost_left .cost_text.data-v-2a5dec54{font-size:24rpx;color:#999;margin-bottom:10rpx}.cost .cost_info .cost_right.data-v-2a5dec54{display:flex;flex-direction:column;align-items:center}.cost .cost_info .cost_right .staffimg.data-v-2a5dec54{width:80rpx;height:80rpx;border-radius:50%;margin-bottom:8rpx}.cost .cost_info .cost_right .staffname.data-v-2a5dec54{font-size:24rpx;color:#999}
.cost.data-v-2a5dec54 {
width:690rpx;
margin:0 auto 24rpx;
background:#fff;
border-radius:20rpx;
padding:30rpx;
position:relative
}
.cost .cost_type.data-v-2a5dec54 {
font-size:28rpx;
color:#333;
padding-bottom:15rpx;
border-bottom:1rpx solid #f5f5f5
}
.cost .cost_status.data-v-2a5dec54 {
position:absolute;
right:24rpx;
top:24rpx;
background:rgba(3,170,150,.1);
border-radius:5rpx;
font-size:26rpx;
color:#03aa96;
padding:5rpx 12rpx
}
.cost .cost_info.data-v-2a5dec54 {
display:flex;
justify-content:space-between;
align-items:center;
padding:10rpx
}
.cost .cost_info .cost_left .cost_text.data-v-2a5dec54 {
font-size:28rpx;
color:#666;
margin-bottom:14rpx
}
.cost .cost_info .cost_right.data-v-2a5dec54 {
display:flex;
flex-direction:column;
align-items:center
}
.cost .cost_info .cost_right .staffimg.data-v-2a5dec54 {
width:80rpx;
height:80rpx;
border-radius:50%;
margin-bottom:8rpx
}
.cost .cost_info .cost_right .staffname.data-v-2a5dec54 {
font-size:24rpx;
color:#999
}
.list-btns {
display: flex;
align-items: center;
}
.list-btns view:nth-child(2) {
background-color: #f5601f;
}
.list-btns view {
width: 150rpx;
margin-right: 20rpx;
height: 50rpx;
border-radius: 50rpx;
display: flex;
color: #fff;
align-items: center;
justify-content: center;
background-color: #1cc8bf;
}

View File

@ -19,9 +19,11 @@
<view class="cost_type data-v-2a5dec54">{{item.consume_type}}</view>
<view class="cost_info data-v-2a5dec54">
<view class="cost_left data-v-2a5dec54">
<view class="cost_text data-v-2a5dec54">{{"关联客户:"+item.customer.name}}</view>
<view class="cost_text data-v-2a5dec54">{{"关联合同:"+item.contract.name}}</view>
<view class="cost_text data-v-2a5dec54">{{"费用金额:"+item.money}}</view>
<view class="cost_text data-v-2a5dec54">{{"消费日期:"+item.consume_time}}</view>
<view class="cost_text data-v-2a5dec54">{{"报销主题:"+item.theme}}</view>
<view class="cost_text data-v-2a5dec54">{{"备注:"+item.remark}}</view>
<!-- <view class="cost_text data-v-2a5dec54">{{"消费日期:"+item.consume_time}}</view> -->
</view>
<view class="cost_right data-v-2a5dec54">
<image class="staffimg data-v-2a5dec54" src="{{item.staff.img}}" mode></image>

View File

@ -1 +1,63 @@
.cost.data-v-2a5dec54{width:690rpx;margin:0 auto 24rpx;background:#fff;border-radius:20rpx;padding:30rpx;position:relative}.cost .cost_type.data-v-2a5dec54{font-size:28rpx;color:#333;padding-bottom:15rpx;border-bottom:1rpx solid #f5f5f5}.cost .cost_status.data-v-2a5dec54{position:absolute;right:24rpx;top:24rpx;background:rgba(3,170,150,.1);border-radius:5rpx;font-size:26rpx;color:#03aa96;padding:5rpx 12rpx}.cost .cost_info.data-v-2a5dec54{display:flex;justify-content:space-between;align-items:center;padding:10rpx}.cost .cost_info .cost_left .cost_text.data-v-2a5dec54{font-size:24rpx;color:#999;margin-bottom:10rpx}.cost .cost_info .cost_right.data-v-2a5dec54{display:flex;flex-direction:column;align-items:center}.cost .cost_info .cost_right .staffimg.data-v-2a5dec54{width:80rpx;height:80rpx;border-radius:50%;margin-bottom:8rpx}.cost .cost_info .cost_right .staffname.data-v-2a5dec54{font-size:24rpx;color:#999}
.cost.data-v-2a5dec54 {
width:690rpx;
margin:0 auto 24rpx;
background:#fff;
border-radius:20rpx;
padding:30rpx;
position:relative
}
.cost .cost_type.data-v-2a5dec54 {
font-size:28rpx;
color:#333;
padding-bottom:15rpx;
border-bottom:1rpx solid #f5f5f5
}
.cost .cost_status.data-v-2a5dec54 {
position:absolute;
right:24rpx;
top:24rpx;
background:rgba(3,170,150,.1);
border-radius:5rpx;
font-size:26rpx;
color:#03aa96;
padding:5rpx 12rpx
}
.cost .cost_info.data-v-2a5dec54 {
display:flex;
justify-content:space-between;
align-items:center;
padding: 28rpx 10rpx 0 10rpx;
text-align: center;
}
.cost .cost_info .cost_left {
width: 75%;
}
.cost .cost_info .cost_left .cost_text.data-v-2a5dec54 {
font-size:24rpx;
color:#999;
margin-bottom:10rpx;
text-align: left;
}
.cost .cost_info .cost_right.data-v-2a5dec54 {
display:flex;
flex-direction:column;
align-items:center;
width: 19%;
justify-content: center;
}
.cost .cost_info .cost_right .staffimg.data-v-2a5dec54 {
width:80rpx;
height:80rpx;
border-radius:50%;
margin-bottom:8rpx
}
.cost .cost_info .cost_right .staffname.data-v-2a5dec54 {
font-size:24rpx;
color:#999;
word-break: break-all;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp:2;
-webkit-box-orient: vertical;
}

View File

@ -16,7 +16,8 @@
"ignore": [],
"disablePlugins": [],
"outputPath": ""
}
},
"enhance": true
},
"compileType": "miniprogram",
"libVersion": "2.30.2",

View File

@ -23,5 +23,6 @@
}
]
}
}
},
"libVersion": "2.30.0"
}