This commit is contained in:
weipengfei 2023-11-08 18:02:35 +08:00
commit f5d480798b
13 changed files with 2841 additions and 1864 deletions

View File

@ -37,7 +37,7 @@
shop_token: info.referrerInfo?.extraData?.token
});
this.$store.commit('SET_USERINFO', {
user: data,
user: {},
token: res.data.token
})
this.$store.dispatch('initConfig');

View File

@ -65,3 +65,14 @@ export const marketTask10Commit = (data) => oahttp.post('/task/commit_town_task_
* 任务:提交村公司任务-信息平台铺设任务接口
*/
export const villageTask6Commit = (data) => oahttp.post('/task/commit_village_task_type_6', data)
/**
* 任务:提交村镇公司收集任务列表
*/
export const townMasterTask3List = (data) => oahttp.get('/task/service_task_detail', data)
/**
* 任务:提交村镇公司收集任务提交
*/
export const townMasterTask3Commit = (data) => oahttp.post('/task/commit_town_master_task_type_3', data)

View File

@ -65,8 +65,7 @@
</block>
<block v-else>进行中</block>
</block>
<block
v-else-if="townService(datas.type)">
<block v-else-if="townService(datas.type)">
<block v-if="datas.type == 44">
{{extend.total-extend.not_done_count||0}}/{{extend.total||0}}
</block>
@ -122,10 +121,10 @@
extend: {},
// : ,,
taskRoleTypeList: ['town_task_type', 'town_task_type_marketing_director', 'town_task_type_master'],
townServiceList: [44,45,46,47,48,49,50], //
navToTownServiceList: [44,45,46,48,49,50], // /subpkg/townTask/townTask 0
navToTownMarketList: [51,52,53,54,55,57,58,59], // /subpkg/townTask/townTask 1
navToVillageList: [62,63,64,65,66,68] // /subpkg/townTask/townTask 1
townServiceList: [44, 45, 46, 47, 48, 49, 50], //
navToTownServiceList: [44, 45, 46, 48, 49, 50], // /subpkg/townTask/townTask 0
navToTownMarketList: [51, 52, 53, 54, 55, 57, 58, 59], // /subpkg/townTask/townTask 1
navToVillageList: [62, 63, 64, 65, 66, 68] // /subpkg/townTask/townTask 1
};
},
mounted() {
@ -151,12 +150,18 @@
// if ((this.$props.datas.type != 31) && this.$props.datas.status !== 2 && this.$props.datas.status !== 1) {
// return this.$props.datas.status == 3 ? Toast('!') : Toast('!');
// }
if(this.navToTownServiceList.includes(this.$props.datas.type))
return this.navTo(`/subpkg/townTask/townTask?task_id=${this.$props.datas?.id}&type_value=${this.taskRoleTypeList[0]}`);
if(this.navToTownMarketList.includes(this.$props.datas.type))
return this.navTo(`/subpkg/townTask/townTask?task_id=${this.$props.datas?.id}&type_value=${this.taskRoleTypeList[1]}`);
if(this.navToVillageList.includes(this.$props.datas.type))
return this.navTo(`/subpkg/townTask/townTask?task_id=${this.$props.datas?.id}&type_value=${this.taskRoleTypeList[1]}`);
if (this.navToTownServiceList.includes(this.$props.datas.type))
return this.navTo(
`/subpkg/townTask/townTask?task_id=${this.$props.datas?.id}&type_value=${this.taskRoleTypeList[0]}`
);
if (this.navToTownMarketList.includes(this.$props.datas.type))
return this.navTo(
`/subpkg/townTask/townTask?task_id=${this.$props.datas?.id}&type_value=${this.taskRoleTypeList[1]}`
);
if (this.navToVillageList.includes(this.$props.datas.type))
return this.navTo(
`/subpkg/townTask/townTask?task_id=${this.$props.datas?.id}&type_value=${this.taskRoleTypeList[1]}`
);
switch (this.$props.datas.type) {
case 31:
if (this.$store.state.app.userInfo.admin_id) this.navTo(
@ -169,7 +174,9 @@
case 33:
let is_show = true;
if (uni.$u.timeFormat(Date.now(), 'yyyy-mm-dd') != this.$props.datas?.end_time) is_show = false;
this.navTo(`/subpkg/blockTransaction/blockTransaction?task_id=${this.$props.datas?.id}&is_show=${is_show}`);
this.navTo(
`/subpkg/blockTransaction/blockTransaction?task_id=${this.$props.datas?.id}&is_show=${is_show}`
);
break;
case 34:
this.navTo(`/subpkg/otherTask/otherTask?task_id=${this.$props.datas?.id}`);
@ -181,7 +188,9 @@
this.navTo(`/subpkg/townTask/serviceTask4?task_id=${this.$props.datas?.id}`);
break;
case 60:
this.navTo(`/subpkg/townTask/marketTask10?task_id=${this.$props.datas?.id}&stage=${this.$props.datas?.stage}`);
this.navTo(
`/subpkg/townTask/marketTask10?task_id=${this.$props.datas?.id}&stage=${this.$props.datas?.stage}`
);
break;
case 67:
this.navTo(`/subpkg/townTask/villageTask6?task_id=${this.$props.datas?.id}`);
@ -189,13 +198,16 @@
case 69:
this.navTo(`/subpkg/townTask/villageTask6?task_id=${this.$props.datas?.id}`);
break;
case 76:
this.navTo(`/subpkg/townTask/gatherRecords?task_id=${this.$props.datas?.id}`);
break;
default:
this.navTo('');
break;
}
},
//
townService(type){
townService(type) {
return this.townServiceList.includes(type);
},
isTimeInRange() {

View File

@ -886,6 +886,24 @@
"navigationBarTextStyle": "white"
}
}, {
"path": "townTask/townGather",
"style": {
"navigationBarTitleText": "养殖信息收集",
"enablePullDownRefresh": false,
"navigationBarBackgroundColor": "#0122C7",
"navigationBarTextStyle": "white"
}
}, {
"path": "townTask/gatherRecords",
"style": {
"navigationBarTitleText": "养殖信息收集",
"enablePullDownRefresh": false,
"navigationBarBackgroundColor": "#0122C7",
"navigationBarTextStyle": "white"
}
}, {
"path": "complaint/complaint",
"style": {

View File

@ -62,12 +62,16 @@
通知时间:&nbsp;&nbsp;{{goodsDetil.logistics.create_time}}
</view>
<view class="pro_list">
<view class="goods">
<text>
商品信息
</text>
<view class="goods">
<view class="goods_tit" v-for="(item,index) in goodsDetil.product">
<text style="flex: 8;">{{item.goods_name}}</text>
<view class="goods-tit" style="align-items: center;"
v-for="(item,index) in goodsDetil.product" :key="index">
<text style="flex: 6;">{{item.goods_name}}</text>
<u--image style="flex: 2;" :showLoading="true" :src="item.goods_pic" width="100rpx"
height="100rpx" @click="click"></u--image>
<text style="flex: 2;">X{{item.product_num}}{{item.goods_unit}}</text>
</view>
</view>
@ -78,6 +82,8 @@
<text>请详细核对订单信息</text>
<text style="color: #0122C7;">共计{{goodsDetil.product_count}}件商品</text>
</view>
</view>
<view class="">
</view>
@ -443,9 +449,10 @@
flex: 8;
margin: 0;
.goods_tit {
.goods-tit {
margin: 0;
display: flex;
justify-content: space-around;
}

View File

@ -79,6 +79,9 @@
<view>
<view class="goods_tit" v-for="(item,index) in goodsDetil.product">
<text style="width: 60vw;margin: 0;padding: 0;">{{item.goods_name}}</text>
<!-- <u--image style="flex: 2;" :showLoading="true" :src="item.goods_pic" width="100rpx"
height="100rpx" @click="click"></u--image> -->
<text>X{{item.product_num}}{{item.goods_unit}}</text>
</view>
</view>
@ -204,12 +207,16 @@
</view>
<view class="pro_list">
<view>
<text style="color: #999;width: 15vw;">
商品信息
</text>
<view>
<view class="goods_tit" v-for="(item,index) in goodsDetil.product">
<view class="goods_tit" style="align-items: center;"
v-for="(item,index) in goodsDetil.product">
<text style="width: 60vw;margin: 0;padding: 0;">{{item.goods_name}}</text>
<u--image style="flex: 2;" :showLoading="true" :src="item.goods_pic" width="100rpx"
height="100rpx" @click="click"></u--image>
<text>X{{item.product_num}}{{item.goods_unit}}</text>
</view>
</view>

View File

@ -4,39 +4,25 @@
<!-- <u-navbar @leftClick="leftClick" bgColor="rgba(0,0,0,0)"
leftIconColor=" #fff" :autoBack="false">
</u-navbar> -->
<view
class="home_header"
:class="!ApproveList.length > 0 ? 'home_header_no_data' : ''"
>
<view
style="
<view class="home_header" :class="!ApproveList.length > 0 ? 'home_header_no_data' : ''">
<view style="
position: absolute;
bottom: 0;
left: 0;
overflow: hidden;
border-radius: 0 0 30rpx 30rpx;
"
>
<hx-lottie
:options="options"
ref="lottie"
style="
">
<hx-lottie :options="options" ref="lottie" style="
width: 100vw;
height: 440rpx;
transform: scale(1.2);
background-color: #0122c7;
"
/>
" />
</view>
<!-- #ifdef APP-PLUS||H5 -->
<view style="height: var(--status-bar-height)"></view>
<view v-if="uniMP" style="height: 44px">
<u-icon
name="arrow-left"
color="#fff"
size="20"
@click="leftClick"
></u-icon>
<u-icon name="arrow-left" color="#fff" size="20" @click="leftClick"></u-icon>
</view>
<view v-else style="height: 30rpx"></view>
<!-- <view v-if="uniMP" style="height: 44px;"></view> -->
@ -50,46 +36,30 @@
</view>
<view class="head_img">
<view class="img_box">
<u--image
:showLoading="true"
width="131.43rpx"
height="131.43rpx"
class="img_box_img"
:src="myOaInfo.avatar || '../../static/img/public/avatar.png'"
shape="circle"
></u--image>
<u--image :showLoading="true" width="131.43rpx" height="131.43rpx" class="img_box_img"
:src="myOaInfo.avatar || '../../static/img/public/avatar.png'" shape="circle"></u--image>
</view>
<text class="head_text">工作证: {{ myOaInfo.nickname }}</text>
<text class="head_text" style="flex-shrink: 0"
>身份: {{ myOaInfo.admin_id ? "管理员" : "普通用户" }}</text
>
<text class="head_text" style="flex-shrink: 0">身份: {{ myOaInfo.admin_id ? "管理员" : "普通用户" }}</text>
</view>
</view>
<!-- 占位 -->
<view style="height: 150rpx"></view>
<view
class="backlog"
:class="!ApproveList.length > 0 ? 'backlog_no_data' : ''"
>
<view class="backlog" :class="!ApproveList.length > 0 ? 'backlog_no_data' : ''">
<view class="head_title flex_a_c_j_sb">
<view class="title">公告列表</view>
<view class="flex_a_c" @click="navTo('/subpkg/noticeList/noticeList')"
>更多
<view class="flex_a_c" @click="navTo('/subpkg/noticeList/noticeList')">更多
<view class="iconfont icon-you">
<uni-icons type="forward"></uni-icons>
</view>
</view>
</view>
<block v-if="ApproveList.length > 0">
<view
class="backlog_item flex_a_c_j_sb"
v-for="(item, index) in ApproveList.slice(0, 2)"
:key="index"
@click="clickNotice(item.id)"
>
<view class="backlog_item flex_a_c_j_sb" v-for="(item, index) in ApproveList.slice(0, 2)"
:key="index" @click="clickNotice(item.id)">
<view class="text">
<text class="text_time">{{
item.create_time.substring(0, 10).replace(/-/g, ".")
@ -97,23 +67,20 @@
{{ item.title }}
</view>
<i class="iconfont icon-you"
><uni-icons type="forward"></uni-icons
></i>
<i class="iconfont icon-you"><uni-icons type="forward"></uni-icons></i>
</view>
</block>
<view v-else class="backlog_no flex_a_c_j_sb">
<view class="text">暂无更多消息</view>
<i class="iconfont icon-you"
><uni-icons type="forward"></uni-icons
></i>
<i class="iconfont icon-you"><uni-icons type="forward"></uni-icons></i>
</view>
</view>
</view>
<!-- 片区经理聊天 -->
<view class="chat" @click="navTo('/subpkg/chatMang/index')" style="margin-top: 130rpx;">
<view class="chat-l">
<u--image shape="circle" :showLoading="true" :src="managerInfo.manager_avatar" width="91rpx" height="91rpx"></u--image>
<u--image shape="circle" :showLoading="true" :src="managerInfo.manager_avatar" width="91rpx"
height="91rpx"></u--image>
<view class="" style="margin-left: 40rpx;">
{{managerInfo.manager_name}}
</view>
@ -144,11 +111,7 @@
<view class="fast_track">
<block v-for="(item, index) in oaHomeData" :key="item.id">
<view class="track_item" @click="navTwo(item.paths, index)">
<image
:src="item.icon"
mode="aspectFit"
style="width: 77rpx;height: 77rpx;"
>
<image :src="item.icon" mode="aspectFit" style="width: 77rpx;height: 77rpx;">
</image>
<view class="title">{{ item.name }}</view>
</view>
@ -158,8 +121,7 @@
<view class="my_task">
<view class="task_title flex_a_c_j_sb">
<view class="title">配送信息</view>
<view class="flex_a_c" @click="goOrderList"
>更多
<view class="flex_a_c" @click="goOrderList">更多
<view class="iconfont icon-you">
<uni-icons type="forward"></uni-icons>
</view>
@ -168,20 +130,14 @@
<view v-if="orderList.length > 0">
<globalPopup ref="globalPopup"></globalPopup>
<logistiBriefCard
v-for="(item, index) in orderList"
:key="index"
:goodsInfo="item"
>
<logistiBriefCard v-for="(item, index) in orderList" :key="index" :goodsInfo="item">
</logistiBriefCard>
<u-loadmore :status="status" />
</view>
<view v-else class="no_task">
<view class="title">暂无配送信息</view>
<view class="tips" v-if="!$store.state.app.token"
>登录后查看配送信息详情</view
>
<view class="tips" v-if="!$store.state.app.token">登录后查看配送信息详情</view>
</view>
<!-- <view class="head_title flex_a_c_j_sb">
<view class="">我的任务</view>
@ -220,51 +176,51 @@
</template>
<script>
import logistiBriefCard from "@/components/logistiComptent/logistiCard/logistiBriefCard.vue";
import globalPopup from "@/components/GlobalPopup/GlobalPopup.vue";
import {
import logistiBriefCard from "@/components/logistiComptent/logistiCard/logistiBriefCard.vue";
import globalPopup from "@/components/GlobalPopup/GlobalPopup.vue";
import {
getList
} from "@/api/logistics.js";
import {
} from "@/api/logistics.js";
import {
Toast
} from "@/libs/uniApi.js";
import {
} from "@/libs/uniApi.js";
import {
oaHomeData
} from "@/static/server/server.js";
import {
} from "@/static/server/server.js";
import {
noticeList
} from "@/api/notice.js";
import {
} from "@/api/notice.js";
import {
getAreaManagerApi
} from "@/api/bussness.js"
// import tabbar from '../components/tabbar'
import {
// import tabbar from '../components/tabbar'
import {
getIndexListAPI,
getTaskListAPI,
getMyTaskListAPI,
getApproveListAPI,
getUserIndexAPI,
} from "@/api/oaApi.js";
import {
} from "@/api/oaApi.js";
import {
mapState
} from 'vuex';
import bj from "@/static/animation/home.json"
import {
} from 'vuex';
import bj from "@/static/animation/home.json"
import {
userInfo
} from "@/api/oaUser.js"
//#ifdef APP-PLUS
var jpushModule = uni.requireNativePlugin("JG-JPush");
// #endif
export default {
} from "@/api/oaUser.js"
//#ifdef APP-PLUS
var jpushModule = uni.requireNativePlugin("JG-JPush");
// #endif
export default {
components: {
// tabbar
logistiBriefCard,
globalPopup,
},
data () {
data() {
return {
brange:0,
brange: 0,
options: {
data: '',
},
@ -272,7 +228,7 @@ export default {
page_num: 1,
flag: false,
uniMP: false,
managerInfo:{},
managerInfo: {},
id: "",
is_captain: 0,
notArr: [],
@ -313,15 +269,15 @@ export default {
showOaHomeData: false, //
};
},
async onLoad () {
async onLoad() {
await this.$onLaunched;
this.is_captain = JSON.parse(uni.getStorageSync("USER_INFO")||'{}')?.is_captain
this.is_captain = JSON.parse(uni.getStorageSync("USER_INFO") || '{}')?.is_captain
this.options.data = bj;
//#ifdef APP-PLUS
let that = this;
jpushModule.addNotificationListener(function (result) {
jpushModule.addNotificationListener(function(result) {
if (!that.notArr.includes(result.messageID)) {
// that.$refs.globalPopup.showPopu();
that.getOrderList();
@ -331,7 +287,7 @@ export default {
});
// #endif
},
onReachBottom () {
onReachBottom() {
if (this.flag) return
let that = this
this.status = "loading"
@ -352,16 +308,18 @@ export default {
}
})
},
async onShow () {
async onShow() {
// uni.navigateTo({
// url:'/subpkg/chatMang/index'
// }
// this.getUserIndex()
// this.getIndexList()
let user_id= JSON.parse( uni.getStorageSync("USER_INFO")).id
getAreaManagerApi({user_id}).then(res=>{
console.log(res.data)
this.managerInfo=res.data
let user_id = JSON.parse(uni.getStorageSync("USER_INFO")).id
getAreaManagerApi({
user_id
}).then(res => {
// console.log(res.data)
this.managerInfo = res.data
})
await this.$onLaunched;
if (uni.getStorageSync('uniMP')) this.uniMP = true;
@ -408,7 +366,7 @@ export default {
},
watch: {
'$store.state.app.token': {
handler: function (n, o) {
handler: function(n, o) {
userInfo().then(({
data
}) => {
@ -422,7 +380,7 @@ export default {
'$store.state.config.config.menu': {
immediate: true,
deep: true,
handler: function (n, o) {
handler: function(n, o) {
const route = '/pages/oaHome/oaHome';
let arr = [];
n.forEach((item) => {
@ -442,10 +400,10 @@ export default {
},
methods: {
//
noticeFn () {
noticeFn() {
jpushModule.addNotificationListener(res => {
const audioContext = uni.createInnerAudioContext()
if(res.content.includes('')){
if (res.content.includes('')) {
audioContext.src = '/static/mp3/im.wav'
audioContext.play()
uni.vibrateLong();
@ -461,14 +419,14 @@ export default {
console.log("index的监听")
})
},
leftClick (e) {
leftClick(e) {
console.log("发送给宿主")
uni.sendHostEvent('closeApp', e, (ret) => {
//
console.log('关闭应用' + JSON.stringify(ret));
});
},
async getOrderList () {
async getOrderList() {
this.id = JSON.parse(uni.getStorageSync("USER_INFO")).id || "";
let res = await getList({
user_id: this.id,
@ -477,18 +435,18 @@ export default {
});
this.orderList = res.data.data;
},
goOrderList () {
goOrderList() {
uni.navigateTo({
url: "/pages/logistics/index",
});
},
initUserInfo (data = null) {
initUserInfo(data = null) {
if (data) return this.myOaInfo = data;
this.$store.state.app.userInfo ?
(this.myOaInfo = this.$store.state.app.userInfo) :
(this.myOaInfo.avatar = "");
},
initOaHomeDada () {
initOaHomeDada() {
if (this.$store.state.app.userInfo.admin_id == 0) {
//
let arr = oaHomeData.filter((item) => !item.admin); //
@ -512,7 +470,7 @@ export default {
this.oaHomeData.splice(this.oaHomeData.length - 1, 1);
}
},
async getApproveList () {
async getApproveList() {
const res = await noticeList({
keyword: "",
page_no: 1,
@ -520,7 +478,7 @@ export default {
});
this.ApproveList = res.data.lists;
},
async getIndexList () {
async getIndexList() {
const {
project,
task
@ -536,19 +494,19 @@ export default {
this.assessData[7].num = task.count_lv + "%";
this.myTaskList = task.list;
},
async getMyTask () {
async getMyTask() {
let data = {
page: this.page,
limit: 10,
};
const res = getMyTaskListAPI(data);
},
naviTaskDetails (id) {
naviTaskDetails(id) {
uni.navigateTo({
url: `/pages/views/task_details?id=${id}`,
});
},
navTo (url) {
navTo(url) {
if (url) {
uni.showLoading({
title: '加载中',
@ -556,16 +514,16 @@ export default {
});
uni.navigateTo({
url: url,
success () {
success() {
uni.hideLoading()
},
fail () {
fail() {
uni.switchTab({
url: url,
success () {
success() {
uni.hideLoading()
},
fail () {
fail() {
uni.hideLoading()
}
});
@ -573,7 +531,7 @@ export default {
})
} else Toast('暂未开放')
},
navTwo (url, key) {
navTwo(url, key) {
// let role_id = this.$store.state.app?.userInfo?.admin?.role_id || null;
// var arr = [3, 6];
@ -586,13 +544,13 @@ export default {
this.navTo(url);
},
//
clickNotice (e) {
clickNotice(e) {
uni.navigateTo({
url: `/pages/oaNews/oaNews?id=${e}`,
});
},
// ,
showToask () {
showToask() {
if (!this.$store.state.app.token) {
this.assessData = this.assessData.map((item) => {
item.num = "*";
@ -606,17 +564,17 @@ export default {
});
}
},
login () {
login() {
uni.navigateTo({
url: "/pages/oaLogin/oaLogin",
});
},
async getUserIndex () {
async getUserIndex() {
const res = await getUserIndexAPI();
this.myOaInfo = res;
},
},
async onPullDownRefresh () {
async onPullDownRefresh() {
uni.sendHostEvent('test', '测试', (ret) => {
// uni.showModal({
// title:'',
@ -629,21 +587,21 @@ export default {
// this.getIndexList()
uni.stopPullDownRefresh();
},
};
};
</script>
<style lang="scss">
.oa_home {
.oa_home {
padding-bottom: 100rpx;
}
}
.header_bg {
.header_bg {
position: absolute;
width: 100%;
// z-index: -1;
}
}
.home_header {
.home_header {
position: relative;
padding: 28rpx;
// height: 607.02rpx;
@ -815,13 +773,13 @@ export default {
.backlog_no_data {
bottom: -70rpx;
}
}
}
.home_header_no_data {
.home_header_no_data {
margin-bottom: 93.33rpx;
}
}
.fast_track {
.fast_track {
width: 694rpx;
// height: 331rpx;
display: flex;
@ -845,9 +803,9 @@ export default {
margin-top: 14.04rpx;
}
}
}
}
.my_task {
.my_task {
width: 694.74rpx;
margin: 0 auto;
// margin-top: 31.58rpx;
@ -960,9 +918,9 @@ export default {
font-size: 24.56rpx;
}
}
}
}
.no_login {
.no_login {
position: fixed;
left: 0;
bottom: 0;
@ -1000,26 +958,29 @@ export default {
align-items: center;
}
}
}
.chat{
}
.chat {
margin-top: 1000px;
// margin-top: 2000rpx;
width: 694.74rpx;
margin: 0 auto;
background-color: white;
border-radius: 12px;
padding:20rpx;
padding: 20rpx;
// padding-top: 10rpx;
padding-right: 24rpx;
display: flex;
justify-content: space-between;
align-items: center;
.chat-l{
.chat-l {
display: flex;
align-items: center;
}
}
.brange{
}
.brange {
color: white;
background-color: red;
width: 40rpx;
@ -1028,5 +989,5 @@ export default {
font-size: 12px;
text-align: center;
lighting-color: 40rpx;
}
}
</style>

View File

@ -1,8 +1,8 @@
<template>
<view class="all_box">
<block v-if="skeleton">
<u-skeleton :loading="skeleton" :animate="true" title rows="2" rows-width="100%"
rowsHeight="40" v-for="i in 3" :key="i" style="padding: 28rpx;">
<u-skeleton :loading="skeleton" :animate="true" title rows="2" rows-width="100%" rowsHeight="40"
v-for="i in 3" :key="i" style="padding: 28rpx;">
</u-skeleton>
</block>
<block v-else>
@ -10,6 +10,7 @@
<view v-else class="task_list">
<!-- <taskCard class="task_card" v-for="item in 10" :key="item"></taskCard> -->
<task-item :datas="item" v-for="item in list" :key="item.id"></task-item>
</view>
</block>
<!-- <u-loadmore v-else :status="loadConfig.status" :loading-text="loadConfig.loadingText"
@ -18,18 +19,24 @@
</template>
<script>
import { getTaskListApi } from '@/api/oa'
import { Toast } from '@/libs/uniApi.js'
import {
getTaskListApi
} from '@/api/oa'
import {
Toast
} from '@/libs/uniApi.js'
import taskItem from "@/components/task/taskItem.vue"
import { taskLists } from "@/api/task.js"
import {
taskLists
} from "@/api/task.js"
export default {
components:{
components: {
taskItem
},
data() {
return {
skeleton: false,
loadConfig:{
loadConfig: {
page: 1,
limit: 15,
lastpage: '',
@ -51,26 +58,31 @@
uni.$on('initOaTask', this.loadList);
},
methods: {
async loadList(){
let res = await taskLists({limit: 15, page: 1});
async loadList() {
let res = await taskLists({
limit: 15,
page: 1
});
this.list = res.data;
this.skeleton = false;
}
},
onPullDownRefresh() {
this.loadList();
this.$u.sleep(500).then(()=>{uni.stopPullDownRefresh()});
},
onReachBottom() {
this.$u.sleep(500).then(() => {
uni.stopPullDownRefresh()
});
},
onReachBottom() {},
}
</script>
<style lang="scss" scoped>
.task_list{
.task_list {
padding-top: 28rpx;
}
.loading{
.loading {
padding: 28rpx;
margin-top: 28rpx;
}

View File

@ -172,7 +172,7 @@
</view>
</view>
<!-- 镇街公司 -->
<view v-if='company_type==16'>
<view v-if='company_type==41'>
<view class="info">
<text>可监管车辆数量 {{datas.monitor_num}}</text>
@ -397,6 +397,8 @@
res.data.apply.length >= 2 ? this.applicationList = res.data.apply : this.applicationList =
res.data.apply.slice(0, 2)
this.dataList = res.data.car_list
this.showLoading = false
})
}

View File

@ -19,29 +19,44 @@
</view>
</view>
</view>
<view class="deposit-list">
<view class="deposit-list" style="padding-top: 30px;">
<view class="card" v-for="(item, index) in list">
<view class="item"><view>创建时间:</view><view class="text">{{item.create_time}}</view></view>
<view class="item"><view>充值金额:</view><view class="text green">{{item.deposit}}</view></view>
<view class="item" @click="previewVoucher(item.voucher)"><view>充值凭证:</view><view class="text blue">查看凭证</view></view>
<view class="item">
<view>创建时间:</view>
<view class="text" style="color: red;">{{item.create_time}}</view>
</view>
<view class="item">
<view>充值金额:</view>
<view class="text " style="color: red;">{{item.deposit}}</view>
</view>
<view class="item" @click="previewVoucher(item.voucher)">
<view>充值凭证:</view>
<view class="text blue">查看凭证</view>
</view>
</view>
<u-empty v-if="list.length==0&&loadConfig.status=='nomore'" icon="/static/img/empty/data.png" text="没有数据"></u-empty>
</view>
<u-empty v-if="list.length==0&&loadConfig.status=='nomore'" icon="/static/img/empty/data.png"
text="没有数据"></u-empty>
<u-loadmore v-else :status="loadConfig.status" :loading-text="loadConfig.loadingText"
:loadmore-text="loadConfig.loadmoreText" :nomore-text="loadConfig.nomoreText" />
</view>
</template>
<script>
import { Toast } from '@/libs/uniApi.js'
import { getPartyACompany, getDepositRechargeTransferVoucherList } from "@/api/company.js"
import {
Toast
} from '@/libs/uniApi.js'
import {
getPartyACompany,
getDepositRechargeTransferVoucherList
} from "@/api/company.js"
export default {
data() {
return {
partyA: {
id:"",
company_name:"",
qualification:{
id: "",
company_name: "",
qualification: {
corporate_account: ""
}
},
@ -58,7 +73,7 @@
}
},
//
onNavigationBarButtonTap(res){
onNavigationBarButtonTap(res) {
if (res.index === 0) {
uni.navigateTo({
url: '/subpkg/topUpList/topUpList'
@ -73,17 +88,17 @@
this.loadList()
},
methods: {
async loadPartyACompany(){
async loadPartyACompany() {
let res = await getPartyACompany();
if(res.data.qualification){
try{
if (res.data.qualification) {
try {
res.data.qualification = JSON.parse(res.data.qualification);
}catch(e){
} catch (e) {
console.log(e);
}
}
this.partyA = res.data;
if(!this.partyA.qualification.corporate_account)this.partyA.qualification.corporate_account="";
if (!this.partyA.qualification.corporate_account) this.partyA.qualification.corporate_account = "";
},
async initLoad() {
this.loadConfig.page = 1;
@ -91,7 +106,7 @@
this.list = [];
await this.loadList();
},
async loadList(){
async loadList() {
if (this.loadConfig.status == "nomore") return;
this.loadConfig.status = "loading";
let res = await getDepositRechargeTransferVoucherList({
@ -106,12 +121,12 @@
}
this.list = [...this.list, ...res.data?.data]
},
previewVoucher(str=""){
if(str.substring(str.length-4, str.length)=='.pdf'){ // PDFPDF
previewVoucher(str = "") {
if (str.substring(str.length - 4, str.length) == '.pdf') { // PDFPDF
uni.navigateTo({
url: `/subpkg/pdfView/pdfView?url=${str}`
})
}else {
} else {
uni.previewImage({
urls: [str],
longPressActions: {
@ -152,8 +167,8 @@
}
},
onPullDownRefresh() {
this.initLoad().then(()=>{
setTimeout(()=>{
this.initLoad().then(() => {
setTimeout(() => {
uni.stopPullDownRefresh()
}, 500)
})
@ -211,7 +226,8 @@
font-size: 32rpx;
font-weight: 400;
color: #333333;
text:nth-child(1){
text:nth-child(1) {
flex-shrink: 0;
margin-right: 18rpx;
}
@ -219,10 +235,11 @@
}
}
.deposit-list{
.deposit-list {
display: flex;
flex-direction: column;
align-items: center;
.card {
width: 694rpx;
min-height: 180rpx;
@ -236,21 +253,21 @@
flex-direction: column;
justify-content: space-around;
.item{
.item {
font-size: 28rpx;
display: flex;
justify-content: left;
.text{
.text {
margin-left: 12rpx;
color: #999;
}
.green{
.green {
color: #4cd964;
}
.blue{
.blue {
color: #0122c7;
}
}

View File

@ -0,0 +1,230 @@
<template>
<view class="personnel_list">
<u-tabs style="background-color: #0022C7;" :list="tabLists" @click="changeTypeCurrent" lineColor='white'
lineWidth='100' inactiveStyle='color:white' activeStyle="color:white"></u-tabs>
<view class="" style="height: 20rpx;">
</view>
<view class="card" v-for="(item,index) in gatherList" :key="item.id" v-if="page==1&&item.planting"
@click="navgo(`/subpkg/townTask/townGather?type=plant&task_id=${task_id}&index=${index}`)">
<view class="card_head">
<view class="">
养植信息
</view>
<view class="">
点击查看
</view>
</view>
<view class="card_content">
<view class="" style="margin-bottom: 20rpx;">
法人姓名: {{item.planting[0].entityName}}
</view>
<view class="">
联系电话: {{item.planting[0].phone}}
</view>
</view>
</view>
<view class="card" v-for="(item,index) in gatherList" :key="index" v-if="page==2&&item.supply"
@click="navgo(`/subpkg/townTask/townGather?type=supply&task_id=${task_id}&index=${index}`)">
<view class="card_head">
<view class="">
批发商信息
</view>
<view class="">
点击查看
</view>
</view>
<view class="card_content">
<view class="" style="margin-bottom: 20rpx;">
店主姓名: {{item.supply[0].storeName}}
</view>
<view class="">
联系电话: {{item.supply[0].shopkeeperPhone}}
</view>
</view>
</view>
<!-- <u-popup :show="show" @close="close" :round="10" mode="center" @open="open">
<view style="padding: 20rpx;">
<u-button type="primary" @click="navgo(`/subpkg/townTask/townGather?type=plant&task_id=${task_id}`)"
style="margin-bottom: 20rpx;" color="#0122C7" text="养殖基地信息"></u-button>
<u-button type="primary" @click="navgo(`/subpkg/townTask/townGather?type=supply&task_id=${task_id}`)"
text="批发商信息" color="#0122C7"></u-button>
</view>
</u-popup> -->
<mybtn text="新建信息收集" @click="creatFn">
</mybtn>
</view>
</template>
<script>
import mybtn from "@/components/mybtn/mybtn.vue"
import {
townMasterTask3List
} from "@/api/task.js"
export default {
data() {
return {
show: false,
gatherList: [],
page: 1,
task_id: "",
tabLists: [{
name: '镇种养殖基地信息收集表',
id: 1
}, {
name: '镇批发商信息收集表',
id: 2
}, ],
}
},
onShow() {
townMasterTask3List({
id: this.task_id
}).then(res => {
this.gatherList = res.data.template_info.extend.purchase_sales_info
})
},
onLoad(option) {
this.task_id = option.task_id
townMasterTask3List({
id: option.task_id
}).then(res => {
this.gatherList = res.data.template_info.extend.purchase_sales_info
})
// townTask3List()
},
methods: {
// open() {
// this.show = true
// },
// close() {
// this.show = false
// },
creatFn() {
if (this.page == 1) {
this.navgo(`/subpkg/townTask/townGather?type=plant&task_id=${this.task_id}`)
} else {
this.navgo(`/subpkg/townTask/townGather?type=supply&task_id=${this.task_id}`)
}
},
navgo(url) {
this.show = false
uni.navigateTo({
url
})
},
changeTypeCurrent(e) {
this.page = e.id
// if(e.)
}
}
}
</script>
<style lang="scss">
.new_btn {
position: fixed;
bottom: 28rpx;
left: 50%;
transform: translate(-50%);
margin-top: 32rpx;
// margin-bottom: 40rpx;
width: 694rpx;
height: 84rpx;
background: $theme-oa-color;
border-radius: 42rpx 42rpx 42rpx 42rpx;
color: #fff;
line-height: 80rpx;
text-align: center;
}
.personnel_list {
margin-bottom: 130rpx;
.card {
margin: 0 auto;
margin-bottom: 28rpx;
width: 694rpx;
background: #ffffff;
border-radius: 30rpx;
opacity: 1;
overflow: hidden;
// box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.6);
.card_head {
padding: 28rpx;
background-color: $theme-oa-color;
color: white;
height: 100rpx;
display: flex;
justify-content: space-between;
align-items: center;
}
.card_content {
padding: 28rpx;
.left {
text-align: center;
// padding: 15rpx 25rpx;
padding-top: 20rpx;
width: 160rpx;
// background-color: $theme-oa-color;
color: white;
// border-radius: 40rpx;
.cir {
width: 120rpx;
height: 120rpx;
background-color: #ffffff;
margin-left: 25rpx;
// border-radius: 120rpx;
position: relative;
}
}
.right {
display: flex;
flex-direction: column;
justify-content: space-between;
view {
text:nth-child(2) {
margin-left: 20rpx;
}
}
}
}
.u_avatar {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
}
}
</style>

View File

@ -13,7 +13,8 @@
<view class="file">
<view class="file_item" v-for="(item, index) in study_photo" :key="'file'+index">
<image class="image" :src="item" @click="priview(index)"></image>
<image v-if="taskInfo.status==2" class="del" src="/static/icons/delete.png" @click.stop="deleteFile(index)">
<image v-if="taskInfo.status==2" class="del" src="/static/icons/delete.png"
@click.stop="deleteFile(index)">
</image>
</view>
<view v-if="taskInfo.status==2" class="file_btn" @click="chooseFile">
@ -27,11 +28,12 @@
<view class="file">
<view v-if="sign_in_table" class="file_item">
<image class="image" :src="sign_in_table" @click="priviewOne(index)"></image>
<image v-if="taskInfo.status==2 && other.is_commit==0" class="del" src="/static/icons/delete.png"
@click.stop="deleteFile(index, 'sign_in_table')">
<image v-if="taskInfo.status==2 && other.is_commit==0" class="del"
src="/static/icons/delete.png" @click.stop="deleteFile(index, 'sign_in_table')">
</image>
</view>
<view v-if="taskInfo.status==2 && other.is_commit==0 && !sign_in_table" class="file_btn" @click="chooseOneFile">
<view v-if="taskInfo.status==2 && other.is_commit==0 && !sign_in_table" class="file_btn"
@click="chooseOneFile">
<image src="/static/icons/plus.png"></image>
</view>
<view class="file_empty"></view>
@ -45,8 +47,10 @@
style="font-size: 28rpx;background-color: #eee;min-height: 100px;padding-bottom: 50rpx;"></u--textarea>
</view>
<mybtn v-if="taskInfo.status==2" text="确认提交" @click="$u.throttle(submit, 1500)"></mybtn>
<mybtn v-else-if="taskInfo.status==3" text="已完成" :my_btn_disabled="true" @click="showToast('任务已完成')"></mybtn>
<mybtn v-else-if="taskInfo.status==5" text="已关闭" :my_btn_disabled="true" @click="showToast('任务已关闭!')"></mybtn>
<mybtn v-else-if="taskInfo.status==3" text="已完成" :my_btn_disabled="true" @click="showToast('任务已完成')">
</mybtn>
<mybtn v-else-if="taskInfo.status==5" text="已关闭" :my_btn_disabled="true" @click="showToast('任务已关闭!')">
</mybtn>
<!-- <mybtn v-else-if="approve_status==3" text="已驳回,请重新提交" @click="toUpdate"></mybtn> -->
<mybtn v-else text="已提交,请等待审核" :my_btn_disabled="true" @click="showToast('请耐心等待审核结果')"></mybtn>
</block>
@ -57,8 +61,13 @@
import {
upLoadImage,
} from "@/api/file.js";
import { Toast } from "../../libs/uniApi";
import { townTaskDetails, serviceTask4Commit } from "@/api/task.js"
import {
Toast
} from "../../libs/uniApi";
import {
townTaskDetails,
serviceTask4Commit
} from "@/api/task.js"
export default {
data() {
return {
@ -89,7 +98,8 @@
computed: {
//
placeholderLength() {
if (this.taskInfo.status!=2) return this.study_photo.length % 3 == 0 ? 0 : 3 - this.study_photo.length % 3;
if (this.taskInfo.status != 2) return this.study_photo.length % 3 == 0 ? 0 : 3 - this.study_photo.length %
3;
return (this.study_photo.length + 1) % 3 == 0 ? 0 : 3 - (this.study_photo.length + 1) % 3;
},
},
@ -102,7 +112,8 @@
this.taskInfo = res.data;
this.sign_in_table = this.taskInfo?.extend?.town_task_type_4?.sign_in_table;
this.study_content = this.taskInfo?.extend?.town_task_type_4?.study_content;
this.study_photo = JSON.parse(JSON.stringify(this.taskInfo?.extend?.town_task_type_4?.study_photo || []));
this.study_photo = JSON.parse(JSON.stringify(this.taskInfo?.extend?.town_task_type_4?.study_photo ||
[]));
this.skeleton = false;
},
//
@ -119,7 +130,7 @@
this.other.is_commit = 1;
// this.taskInfo.approve_status = 1;
Toast('提交成功');
this.$u.sleep(500).then(()=>{
this.$u.sleep(500).then(() => {
uni.navigateBack()
})
},
@ -268,7 +279,7 @@
}
}
.loading{
.loading {
padding: 28rpx;
}
}

View File

@ -0,0 +1,689 @@
<template>
<view class="content" v-if="flag">
<view class="tit">
<text v-if="page">养殖信息</text>
<text v-else>镇批发商信息收集表</text>
</view>
<!-- 镇种养殖基地信息收集表 -->
<view class="card" v-if="page">
<u--form labelPosition="left" :model="formData" :rules="rules" ref="breedingForm">
<u-form-item labelWidth="auto" label="法人姓名" required prop="entityName" borderBottom>
<u--input :readonly="readonly" v-model="formData.entityName" placeholder="请输入法人姓名"></u--input>
</u-form-item>
<u-form-item labelWidth="auto" label="联系方式" required prop="phone" borderBottom>
<u--input :readonly="readonly" v-model="formData.phone" placeholder="请输入联系方式"
type="number"></u--input>
</u-form-item>
<u-form-item labelWidth="auto" label="员工人数" borderBottom>
<u--input :readonly="readonly" v-model="formData.employee" placeholder="请输入员工人数"></u--input>
</u-form-item>
<u-form-item labelWidth="auto" label="耕地总面积" borderBottom>
<u--input :readonly="readonly" v-model="formData.arableLand" placeholder="请输入员工人数"></u--input>
</u-form-item>
<view class="">
<u-form-item labelWidth="auto" labelPosition="top" label="土地规划" borderBottom>
<u-radio-group :disabled="readonly" v-model="formData.breeding_company" style="margin: 16rpx;">
<view class="" style="display: flex;justify-content: space-between;flex-wrap: wrap;">
<u-radio :customStyle="{marginRight: '16px',overflow: 'auto',marginBottom:'16rpx'}"
v-for="(item, index) in [{value:'0',label:'自己种'},{value:'1',label:'出租'},{value:'2',label:'代种养'},{value:'3',label:'租更多地扩大种殖'}]"
:key="index" :label="item.label" :name="item.value">
</u-radio>
</view>
</u-radio-group>
</u-form-item>
</view>
<u-form-item labelWidth="auto" label="有无养殖培训" borderBottom>
<u-radio-group :disabled="readonly" v-model="formData.breeding_training" style="margin: 16rpx;">
<u-radio :customStyle="{marginRight: '16px'}"
v-for="(item, index) in [{value:'1',label:'有'},{value:'0',label:'无'}]" :key="index"
:label="item.label" :name="item.value">
</u-radio>
</u-radio-group>
</u-form-item>
<u-form-item labelWidth="auto" label="现代化程度(%)" borderBottom>
<u--input :readonly="readonly" v-model="formData.modernization" placeholder="请输入现代化程度(%)"
type="number" maxlength="3"></u--input>
</u-form-item>
<picker :range="breedingTypeList" range-key="name" :disabled="readonly" mode="selector"
@change="changeBreeding">
<u-form-item labelWidth="auto" label="种养殖类型" borderBottom>
<u--input :value="breedingName" style="pointer-events: none;" placeholder="请选择养殖类型" disabled
disabledColor="#fff"></u--input>
<u-icon slot="right" name="arrow-right"></u-icon>
</u-form-item>
</picker>
<u-form-item labelWidth="auto" label="面积" borderBottom>
<u--input :readonly="readonly" v-model="formData.area" placeholder="请输入面积"></u--input>
</u-form-item>
<u-form-item labelWidth="auto" label="农资农具使用情况" borderBottom>
<u--input :readonly="readonly" v-model="formData.farm_tools" placeholder="请输入面积"></u--input>
</u-form-item>
<u-form-item labelWidth="auto" label="是否生态养殖" borderBottom>
<u-radio-group :disabled="readonly" v-model="formData.ecological_farming" style="margin: 16rpx;">
<u-radio :customStyle="{marginRight: '16px'}"
v-for="(item, index) in [{value:'1',label:'是'},{value:'0',label:'否'}]" :key="index"
:label="item.label" :name="item.value">
</u-radio>
</u-radio-group>
</u-form-item>
<picker mode="date" @change="changeDate" :disabled="readonly" :data-value="'breeding_begin_time'">
<u-form-item labelWidth="auto" label="种植开始时间" borderBottom>
<u--input :value="formData.breeding_begin_time" style="pointer-events: none;"
placeholder="请选择养殖开始时间" disabled disabledColor="#fff"></u--input>
<u-icon slot="right" name="arrow-right"></u-icon>
</u-form-item>
</picker>
<picker mode="date" @change="changeDate" :disabled="readonly" :data-value="'breeding_time'">
<u-form-item labelWidth="auto" label="成熟时间" borderBottom>
<u--input :value="formData.breeding_time" style="pointer-events: none;" placeholder="请选择养殖开始时间"
disabled disabledColor="#fff"></u--input>
<u-icon slot="right" name="arrow-right"></u-icon>
</u-form-item>
</picker>
<picker mode="date" @change="changeDate" :disabled="readonly" :data-value="'mature_time'">
<u-form-item labelWidth="auto" label="上市时间" borderBottom>
<u--input :value="formData.mature_time" style="pointer-events: none;" placeholder="请选择上市时间"
disabled disabledColor="#fff"></u--input>
<u-icon slot="right" name="arrow-right"></u-icon>
</u-form-item>
</picker>
<u-form-item labelWidth="auto" label="产量(斤)" borderBottom>
<u--input :readonly="readonly" v-model="formData.yield" placeholder="请输入产量(斤)"
type="number"></u--input>
</u-form-item>
<u-form-item labelWidth="auto" label="预售卖价格(元/500g)" borderBottom>
<u--input :readonly="readonly" v-model="formData.pre_price" placeholder="请输入预售卖价格"></u--input>
</u-form-item>
<u-form-item labelWidth="auto" label="预计收益(元)" borderBottom>
<u--input :readonly="readonly" v-model="formData.estimated_income" placeholder="请输入预计收益(元)"
type="number"></u--input>
</u-form-item>
<u-form-item labelWidth="auto" label="销售渠道" borderBottom>
<u-radio-group :disabled="readonly" v-model="formData.salesChannels" style="margin: 16rpx;">
<u-radio :customStyle="{marginRight: '16px'}"
v-for="(item, index) in [{value:'1',label:'自销'},{value:'0',label:'定点'}]" :key="index"
:label="item.label" :name="item.value">
</u-radio>
</u-radio-group>
</u-form-item>
<u-form-item labelWidth="auto" label="有无加工仓储" borderBottom>
<u-radio-group :disabled="readonly" v-model="formData.processing_storage" style="margin: 16rpx;">
<u-radio :customStyle="{marginRight: '16px'}"
v-for="(item, index) in [{value:'1',label:'有'},{value:'0',label:'无'}]" :key="index"
:label="item.label" :name="item.value">
</u-radio>
</u-radio-group>
</u-form-item>
<u-form-item labelWidth="auto" label="有无宣传推广" borderBottom>
<u-radio-group :disabled="readonly" v-model="formData.promote" style="margin: 16rpx;">
<u-radio :customStyle="{marginRight: '16px'}"
v-for="(item, index) in [{value:'1',label:'有'},{value:'0',label:'无'}]" :key="index"
:label="item.label" :name="item.value">
</u-radio>
</u-radio-group>
</u-form-item>
<u-form-item labelWidth="auto" label="有无运输" borderBottom>
<u-radio-group :disabled="readonly" v-model="formData.transportation" style="margin: 16rpx;">
<u-radio :customStyle="{marginRight: '16px'}"
v-for="(item, index) in [{value:'1',label:'有'},{value:'0',label:'无'}]" :key="index"
:label="item.label" :name="item.value">
</u-radio>
</u-radio-group>
</u-form-item>
<u-form-item labelWidth="auto" label="是否有扩大经营需求" borderBottom>
<u-radio-group :disabled="readonly" v-model="formData.isExpandOperations" style="margin: 16rpx;">
<u-radio :customStyle="{marginRight: '16px'}"
v-for="(item, index) in [{value:'1',label:'是'},{value:'0',label:'否'}]" :key="index"
:label="item.label" :name="item.value">
</u-radio>
</u-radio-group>
</u-form-item>
<u-form-item labelWidth="auto" labelPosition="top" label="种养殖述求" borderBottom>
<u--textarea :disabled="readonly" v-model="formData.request" autoHeight placeholder="请输入您的述求"
border="surround" count></u--textarea>
</u-form-item>
<u-form-item labelWidth="auto" label="是否有政策补贴" borderBottom>
<u-radio-group :disabled="readonly" v-model="formData.isPolicySubsidies" style="margin: 16rpx;">
<u-radio :customStyle="{marginRight: '16px'}"
v-for="(item, index) in [{value:'1',label:'有'},{value:'0',label:'无'}]" :key="index"
:label="item.label" :name="item.value">
</u-radio>
</u-radio-group>
</u-form-item>
<u-form-item labelWidth="auto" label="有无公益拍卖品" borderBottom>
<u-radio-group :disabled="readonly" v-model="formData.isLots" style="margin: 16rpx;">
<u-radio :customStyle="{marginRight: '16px'}"
v-for="(item, index) in [{value:'1',label:'有'},{value:'0',label:'无'}]" :key="index"
:label="item.label" :name="item.value">
</u-radio>
</u-radio-group>
</u-form-item>
<u-form-item labelWidth="auto" label="有无需求的公益拍卖品" borderBottom>
<u-radio-group :disabled="readonly" v-model="formData.isNeedLots" style="margin: 16rpx;">
<u-radio :customStyle="{marginRight: '16px'}"
v-for="(item, index) in [{value:'1',label:'有'},{value:'0',label:'无'}]" :key="index"
:label="item.label" :name="item.value">
</u-radio>
</u-radio-group>
</u-form-item>
<u-form-item labelWidth="auto" labelPosition="top" label="家庭情况说明" borderBottom>
<u--textarea :disabled="readonly" v-model="formData.family" autoHeight placeholder="请输入"
border="surround" count></u--textarea>
</u-form-item>
<u-form-item labelWidth="auto" labelPosition="top" label="家庭总述求" borderBottom>
<u--textarea :disabled="readonly" v-model="formData.familyNotes" autoHeight placeholder="请输入"
border="surround" count></u--textarea>
</u-form-item>
<u-button v-if="!readonly" type="primary" text="提交" @click="confirm1" color="#0122C7"></u-button>
</u--form>
</view>
<!-- 镇批发商信息收集表 -->
<view class="card" v-show='!page'>
<u--form labelPosition="left" :model="formData1" :rules="rules1" ref="breedingForm1">
<u-form-item labelWidth="auto" label="店铺名称" required prop="storeName" borderBottom>
<u--input :readonly="readonly" v-model="formData1.storeName" placeholder="请输入店铺名称"></u--input>
</u-form-item>
<u-form-item labelWidth="auto" label="经营类型" required prop="type" borderBottom>
<u--input :readonly="readonly" v-model="formData1.type" placeholder="请输入经营类型"></u--input>
</u-form-item>
<u-form-item labelWidth="auto" label="店主姓名" required prop="shopkeeperName" borderBottom>
<u--input :readonly="readonly" v-model="formData1.shopkeeperName" placeholder="请输入店主姓名"></u--input>
</u-form-item>
<u-form-item labelWidth="auto" label="店主性别" required prop="arableLand" borderBottom>
<u-radio-group :disabled="readonly" v-model="formData1.shopkeeperSex" style="margin: 16rpx;">
<u-radio :customStyle="{marginRight: '16px'}"
v-for="(item, index) in [{value:'1',label:'男'},{value:'0',label:'女'}]" :key="index"
:label="item.label" :name="item.value">
</u-radio>
</u-radio-group>
</u-form-item>
<u-form-item labelWidth="auto" label="店主年龄" required prop="shopkeeperAge" borderBottom>
<u--input :readonly="readonly" type='number' v-model="formData1.shopkeeperAge"
placeholder="请输入店主姓名"></u--input>
</u-form-item>
<u-form-item labelWidth="auto" label="联系方式" required prop="shopkeeperPhone" borderBottom>
<u--input :readonly="readonly" type='number' v-model="formData1.shopkeeperPhone"
placeholder="请输入联系方式"></u--input>
</u-form-item>
<u-form-item labelWidth="auto" label="店铺地址" borderBottom>
<u--input :readonly="readonly" v-model="formData1.address" placeholder="请输入地址"></u--input>
</u-form-item>
<u-form-item labelWidth="auto" label="面积" borderBottom>
<u--input :readonly="readonly" type='number' v-model="formData1.area"
placeholder="请输入地址"></u--input>
</u-form-item>
<u-form-item labelWidth="auto" label="经营年限" borderBottom>
<u--input :readonly="readonly" type='number' v-model="formData1.storeAge"
placeholder="请输入经营年限"></u--input>
</u-form-item>
<u-form-item labelWidth="auto" label="人数" borderBottom>
<u--input :readonly="readonly" type='number' v-model="formData1.Number"
placeholder="请输入人数"></u--input>
</u-form-item>
<u-form-item labelWidth="auto" label="店铺规模" required prop="storeScale" borderBottom>
<u-radio-group :disabled="readonly" v-model="formData1.storeScale" style="margin: 16rpx;">
<u-radio :customStyle="{marginRight: '16px'}"
v-for="(item, index) in [{value:'0',label:'批发'},{value:'1',label:'零售'},{value:'2',label:'独家经营'}]"
:key="index" :label="item.label" :name="item.value">
</u-radio>
</u-radio-group>
</u-form-item>
<u-form-item labelWidth="auto" label="店铺规模排名" required prop="storeRanking" borderBottom>
<u-radio-group :disabled="readonly" v-model="formData1.storeRanking" style="margin: 16rpx;">
<u-radio :customStyle="{marginRight: '16px'}"
v-for="(item, index) in [{value:'0',label:'前3'},{value:'1',label:'居中'},{value:'2',label:'小规模'}]"
:key="index" :label="item.label" :name="item.value">
</u-radio>
</u-radio-group>
</u-form-item>
<u-form-item labelWidth="auto" label="店铺影响力" required prop="Influence" borderBottom>
<u-radio-group :disabled="readonly" v-model="formData1.Influence" style="margin: 16rpx;">
<u-radio :customStyle="{marginRight: '16px'}"
v-for="(item, index) in [{value:'0',label:'大'},{value:'1',label:'中'},{value:'2',label:'小'}]"
:key="index" :label="item.label" :name="item.value">
</u-radio>
</u-radio-group>
</u-form-item>
<u-form-item labelWidth="auto" labelPosition="top" label="店铺年营收" required prop="revenue" borderBottom>
<u-radio-group :disabled="readonly" v-model="formData1.revenue" style="margin: 16rpx;">
<u-radio :customStyle="{marginRight: '16px',}"
v-for="(item, index) in [{value:'0',label:'10万以下'},{value:'1',label:'10-30万'},{value:'2',label:'30万以上'}]"
:key="index" :label="item.label" :name="item.value">
</u-radio>
</u-radio-group>
</u-form-item>
<u-form-item labelWidth="auto" label="店铺产权" required prop="propertyRights" borderBottom>
<u-radio-group :disabled="readonly" v-model="formData1.propertyRights" style="margin: 16rpx;">
<u-radio :customStyle="{marginRight: '16px'}"
v-for="(item, index) in [{value:'0',label:'自有'},{value:'1',label:'租赁'}]" :key="index"
:label="item.label" :name="item.value">
</u-radio>
</u-radio-group>
</u-form-item>
<u-form-item labelWidth="auto" label="店铺归属" required prop="ascription" borderBottom>
<u-radio-group :disabled="readonly" v-model="formData1.ascription" style="margin: 16rpx;">
<u-radio :customStyle="{marginRight: '16px',}"
v-for="(item, index) in [{value:'0',label:'私有'},{value:'1',label:'合伙'},{value:'2',label:'加盟'},{value:'3',label:'国有'},]"
:key="index" :label="item.label" :name="item.value">
</u-radio>
</u-radio-group>
</u-form-item>
<u-form-item labelWidth="auto" label="店铺进货渠道" borderBottom>
<u--input :readonly="readonly" type='number' v-model="formData1.incomingChannels"
placeholder="请输入进货渠道"></u--input>
</u-form-item>
<u-form-item labelWidth="auto" label="有无仓储" borderBottom>
<u-radio-group :disabled="readonly" v-model="formData1.isWarehousing" style="margin: 16rpx;">
<u-radio :customStyle="{marginRight: '16px'}"
v-for="(item, index) in [{value:'1',label:'有'},{value:'0',label:'无'}]" :key="index"
:label="item.label" :name="item.value">
</u-radio>
</u-radio-group>
</u-form-item>
<u-form-item labelWidth="auto" label="有无冻库" borderBottom>
<u-radio-group :disabled="readonly" v-model="formData1.isColdStorage" style="margin: 16rpx;">
<u-radio :customStyle="{marginRight: '16px'}"
v-for="(item, index) in [{value:'1',label:'有'},{value:'0',label:'无'}]" :key="index"
:label="item.label" :name="item.value">
</u-radio>
</u-radio-group>
</u-form-item>
<u-form-item labelWidth="auto" label="有无入驻其他平台" borderBottom>
<u-radio-group :disabled="readonly" v-model="formData1.isSettled" style="margin: 16rpx;">
<u-radio :customStyle="{marginRight: '16px'}"
v-for="(item, index) in [{value:'1',label:'有'},{value:'0',label:'无'}]" :key="index"
:label="item.label" :name="item.value">
</u-radio>
</u-radio-group>
</u-form-item>
<u-form-item labelWidth="auto" label="现代文化程度" borderBottom>
<u--input :readonly="readonly" v-model="formData1.Education" placeholder="请输入文化程度"></u--input>
</u-form-item>
<u-form-item labelWidth="auto" label="有无宣传推广" borderBottom>
<u-radio-group :disabled="readonly" v-model="formData1.isPublicize" style="margin: 16rpx;">
<u-radio :customStyle="{marginRight: '16px'}"
v-for="(item, index) in [{value:'1',label:'有'},{value:'0',label:'无'}]" :key="index"
:label="item.label" :name="item.value">
</u-radio>
</u-radio-group>
</u-form-item>
<u-form-item labelWidth="auto" label="有无运输" borderBottom>
<u-radio-group :disabled="readonly" v-model="formData1.isTransport" style="margin: 16rpx;">
<u-radio :customStyle="{marginRight: '16px'}"
v-for="(item, index) in [{value:'1',label:'有'},{value:'0',label:'无'}]" :key="index"
:label="item.label" :name="item.value">
</u-radio>
</u-radio-group>
</u-form-item>
<u-form-item labelWidth="auto" label="主要供给明细" borderBottom>
<u--input :readonly="readonly" v-model="formData1.supply" placeholder="请输入供给明细"></u--input>
</u-form-item>
<u-form-item labelWidth="auto" labelPosition="top" label="店铺述求" required prop="notes" borderBottom>
<u--textarea :disabled="readonly" v-model="formData1.notes" autoHeight placeholder="请输入"
border="surround" count></u--textarea>
</u-form-item>
<u-form-item labelWidth="auto" labelPosition="top" label="综合描述与分析" required prop="description"
borderBottom>
<u--textarea :disabled="readonly" v-model="formData1.description" autoHeight placeholder="请输入"
border="surround" count></u--textarea>
</u-form-item>
<view class="" style="height: 20rpx;">
</view>
<u-button v-if="!readonly" type="primary" text="提交" @click="confirm" color="#0122C7"></u-button>
</u--form>
</view>
</view>
<view class="" v-else>
<u-loading-page></u-loading-page>
</view>
</template>
<script>
import {
townMasterTask3Commit,
townMasterTask3List
} from "@/api/task.js"
export default {
props: {
datas: {
type: Object,
default: null
},
update_time: {
type: String,
default: null
}
},
data() {
return {
flag: false,
page: 1,
taskId: "",
readonly: false,
landPlanList: ['自己养', '出租', '代养', '租更多地扩大养殖'],
breedingTypeList: [{
id: 1,
name: "水产"
},
{
id: 2,
name: "禽类"
},
{
id: 3,
name: "大型动物"
},
],
formData: {
"entityName": "",
phone: "",
employee: "",
arableLand: "",
"breeding_training": 1, //
"breeding_type": "", //
"area": "", //
breeding_begin_time: "",
"breeding_time": "", //
"mature_time": "", //
"yield": "", //
salesChannels: "",
isExpandOperations: "", //
request: "", //
isPolicySubsidies: "", //
isLots: "", //
isNeedLots: "", //
family: "",
familyNotes: "",
"farm_tools": "", //使
"ecological_farming": "", //
"modernization": "", //
"processing_storage": "", //
"promote": "", //广
"transportation": "", //
},
formData1: {
storeName: "",
type: "",
shopkeeperName: "",
shopkeeperSex: "",
shopkeeperAge: "",
shopkeeperPhone: "",
address: "",
area: "",
storeAge: "",
Number: "",
storeScale: "",
storeRanking: "",
Influence: "",
revenue: "",
propertyRights: "",
ascription: "",
incomingChannels: "",
isWarehousing: "",
isColdStorage: "",
isSettled: "",
Education: "",
isPublicize: "",
isTransport: "",
supply: "",
notes: "",
description: ""
},
rules: {
},
rules1: {
}
}
},
onLoad(option) {
this.taskId = option.task_id
if (option.type == 'supply') this.page = 0
if (option.index) {
townMasterTask3List({
id: option.task_id
}).then(res => {
this.readonly = true
this.flag = true
if (option.type == 'supply') {
this.formData1 = res.data.template_info.extend.purchase_sales_info[option.index]?.supply[0]
} else {
this.formData = res.data.template_info.extend.purchase_sales_info[option.index]?.planting[
0]
}
})
}
// }
this.flag = true
},
created() {
this.initRules();
},
computed: {
breedingName() {
return this.breedingTypeList.find((item) => item.id == this.formData.breeding_type)?.name;
}
},
methods: {
//
initRules() {
let arr = Object.keys(this.formData);
let arr1 = Object.keys(this.formData1);
let white = ['demand', 'policy_subsidies'];
arr = arr.filter(item => {
return !white.includes(item);
})
arr1 = arr1.filter(item => {
return !white.includes(item);
})
arr.forEach(key => {
this.rules[key] = {
validator: (rule, value, callback) => {
this.$refs.breedingForm.clearValidate(rule.field);
value.trim() !== '' ? callback() : callback('不能为空');
},
trigger: ['change', 'blur']
}
if (key == 'phone') {
console.log("phone")
this.rules[key] = [{
required: true,
message: '请输入手机号',
trigger: ['change', 'blur'],
},
{
validator: (rule, value, callback) => {
return uni.$u.test.mobile(value);
},
message: '手机号码不正确',
trigger: ['blur'],
}
]
}
})
arr1.forEach(key => {
this.rules1[key] = {
validator: (rule, value, callback) => {
this.$refs.breedingForm1.clearValidate(rule.field);
value.trim() !== '' ? callback() : callback('不能为空');
},
trigger: ['change', 'blur']
}
if (key == 'shopkeeperPhone') {
this.rules1[key] = [{
required: true,
message: '请输入手机号',
trigger: ['change', 'blur'],
},
{
validator: (rule, value, callback) => {
return uni.$u.test.mobile(value);
},
message: '手机号码不正确',
trigger: ['blur'],
}
]
}
})
},
//
async validate() {
return await this.$refs.breedingForm.validate();
},
async validate1() {
return await this.$refs.breedingForm1.validate();
},
//
changeBreeding(e) {
// let index = e.currentTarget.dataset.index;
this.formData.breeding_type = this.breedingTypeList[e.detail.value].id;
},
//
changeDate(e) {
let data = e.currentTarget.dataset;
this.formData[data.value] = e.detail.value;
},
async commit() {
if (this.page) {
await townMasterTask3Commit({
id: Number(this.taskId),
purchase_sales_info: {
planting: [{
...this.formData
}],
}
})
setTimeout(() => {
uni.navigateBack()
}, 1000)
} else {
await townMasterTask3Commit({
id: Number(this.taskId),
purchase_sales_info: {
supply: [{
...this.formData1
}],
}
})
setTimeout(() => {
uni.navigateBack()
}, 1000)
}
},
async nextFormFn() {
await this.validate()
this.page = 0
},
async confirm1() {
await this.validate()
this.commit()
},
async confirm() {
await this.validate1()
this.commit()
}
},
}
</script>
<style lang="scss">
.card {
background-color: #fff;
margin: 28rpx;
padding: 28rpx;
margin-top: 0;
padding-top: 0;
border-radius: 0 0 14rpx 14rpx;
}
.tit {
margin: 28rpx 28rpx 0 28rpx;
padding: 28rpx 28rpx 0 28rpx;
border-radius: 14rpx 14rpx 0 0;
background-color: $theme-oa-color;
color: white;
height: 100rpx;
display: flex;
justify-content: space-between;
}
.title {
font-weight: 500;
font-size: 34rpx;
&::before {
width: 8rpx;
height: 26rpx;
border-radius: 4rpx;
background-color: #0122c7;
content: "";
display: inline-block;
margin-right: 8rpx;
}
}
.delete {
margin: 22rpx 0;
// margin-bottom: 40rpx;
width: 100%;
height: 64rpx;
line-height: 64rpx;
background: #f56c6c;
border-radius: 14rpx;
font-size: 28rpx;
color: #fff;
text-align: center;
}
.plus {
margin: 22rpx 0;
// margin-bottom: 40rpx;
width: 100%;
height: 64rpx;
line-height: 64rpx;
background: $theme-oa-color;
border-radius: 14rpx;
font-size: 28rpx;
color: #fff;
text-align: center;
}
</style>