提交 f0c45f14 authored 作者: 刘旭's avatar 刘旭

上传最新代码

上级 3c1e38ad
......@@ -15,6 +15,10 @@
{
"openVueDevtools" : true,
"type" : "uni-app:h5"
},
{
"playground" : "custom",
"type" : "uni-app:app-android"
}
]
}
{
"extends": [
"development"
]
}
\ No newline at end of file
export const ApiUrl: string = 'http://192.168.0.90/ndr'
// export const ApiUrl = 'http://192.168.0.242/k3Cloud'
export const corp_id: string = 'wwe94781e7973de14c' // 企业id
// export const ApiUrl = 'http://192.168.0.242:89/k3Cloud'
// export const corp_id: string = 'wwe94781e7973de14c' // 企业id
// export const corp_id: string = 'wwdc9c13d0a3ace384' // 客户企业id
export const redirect_uri: string = 'qyex' // 重定向路径
export const agentid: string = '-_fg5_i0F3c1sJtK1r00JLRpq_3aTYD9dbEve8_VznA'// 企业应用id
// export const redirect_uri: string = 'qyex' // 重定向路径
// export const agentid: string = '-_fg5_i0F3c1sJtK1r00JLRpq_3aTYD9dbEve8_VznA'// 企业应用id
// export const agentid: string = 'xcQbgs-h6I1Fys_YzV-p6b-fJJJ9iyT3HRTJsSnMnaQ' // 客户企业应用id
\ No newline at end of file
{
"pages": [
{
"path": "pages/login/index",
"style": {
"navigationBarTitleText": "登录"
}
},
{
"path": "pages/index/index",
"style": {
"navigationBarTitleText": "项目登记"
......
<template>
<div class='edit-container'>
<formList ref="formListRef" :select-list="selectList" />
<view class="button">
<button size="mini" @tap="onSave">保存</button>
</view>
......@@ -9,7 +8,7 @@
</template>
<script setup lang='ts'>
import { ref } from 'vue'
import { nextTick, ref } from 'vue'
import { onLoad } from '@dcloudio/uni-app';
import { ApiUrl } from '@/config';
import formList from './formList.vue';
......@@ -22,11 +21,15 @@ onLoad((options: any) => {
let option = JSON.parse(options.row)
fid.value = option.FID
initSelect()
setTimeout(() => {
formListRef.value.formData.number = option.FNUMBER
formListRef.value.formData.Hours = option.F_LQKJ_WORKTIME
nextTick(() => {
formListRef.value.formData = {
number: option.FNUMBER,
Hours: option.F_LQKJ_WORKTIME,
workContent: option.F_LQKJ_WORKCONATAINER
}
// formListRef.value.selectNumberData.fname = option.FNAME
formListRef.value.initRules()
}, 100);
});
})
......@@ -42,13 +45,25 @@ const initSelect = () => {
uni.hideLoading()
const { data } = res
if (data.code == 200) {
data.data.map((item: any, i: number) => {
if (i <= 10) selectList.value.push({
data.data.map((item: any) => {
selectList.value.push({
text: item.fname,
value: item.fnumber
})
})
} else {
uni.showToast({
title: data.msg,
icon: 'none'
})
}
},
fail() {
uni.hideLoading()
uni.showToast({
title: '请在内网使用',
icon: 'none'
})
}
})
}
......@@ -59,32 +74,60 @@ const onSave = () => {
title: '工时数不大于8',
icon: 'none'
})
if (res.Hours <= 0) return uni.showToast({
title: '填写工时数需大于0',
icon: 'none'
})
let data = {
parmeters: {
NeedUpDateFields: [
"F_LQKJ_FITEM", "F_LQKJ_WORKTIME", "F_LQKJ_FDEPARTMENT", "F_LQKJ_Date2", "F_LQKJ_WORKCONTAINER", "F_LQKJ_FNAME"
"F_LQKJ_FITEM", "F_LQKJ_DATE2", "F_LQKJ_WORKTIME", "F_LQKJ_FNAME", 'F_LQKJ_WORKCONATAINER'
],
Model: {
"FID": fid.value,
"F_LQKJ_FITEM": {
"FNumber": res.number
FID: fid.value,
F_LQKJ_FITEM: {
FNumber: res.number
},
"F_LQKJ_WORKTIME": res.Hours,
F_LQKJ_WORKTIME: Number(res.Hours),
F_LQKJ_FNAME: {
FName: localStorage.getItem('Name')
},
F_LQKJ_WORKCONATAINER: res.workContent
}
}
}
uni.showLoading({
title: '加载中',
mask: true
})
uni.request({
url: ApiUrl + '/LQKJ.K3.NDR.WebApiBusinessServicePlugIn.WebApi.ExecuteCmdEdit,LQKJ.K3.NDR.WebApiBusinessServicePlugIn.common.kdsvc',
method: 'POST',
data,
success(res: any) {
uni.hideLoading()
const { data } = res
if (data.code == 200) {
uni.showToast({
title: '保存成功',
icon: 'none'
})
setTimeout(() => {
uni.navigateBack({ delta: 1 })
}, 500);
} else {
uni.showToast({
title: data.msg,
icon: 'none'
})
}
},
fail() {
uni.hideLoading()
uni.showToast({
title: '请在内网使用',
icon: 'none'
})
}
})
......
......@@ -3,31 +3,24 @@
<view class="form-title">{{ placeholder }}</view>
<view class="line" />
<uni-forms ref="formRef" :modelValue="formData" :rules="rules" label-width="10">
<uni-forms-item name="number" @tap="handleClick">
<!-- <uni-data-select v-model="formData.number" :localdata="selectList" clear placeholder="项目编号" /> -->
<uni-easyinput type="text" v-model="formData.number" placeholder="项目编号" :inputBorder="false"
:clearable="false" disabled placeholderStyle="color: rgba(0, 0, 0, 0.9); font-size: 28rpx;" />
<view class="line" />
</uni-forms-item>
<!-- <uni-forms-item name="employeeNumber">
<uni-easyinput v-model="formData.employeeNumber" type="text" placeholder="员工编号" :inputBorder="false"
:clearable="false" placeholderStyle="color: rgba(0, 0, 0, 0.9); font-size: 28rpx" />
<view class="line" />
</uni-forms-item>
<uni-forms-item name="departmentNo">
<uni-easyinput v-model="formData.departmentNo" type="text" placeholder="部门编号" :inputBorder="false"
:clearable="false" placeholderStyle="color: rgba(0, 0, 0, 0.9); font-size: 28rpx" />
<view class="line" />
</uni-forms-item> -->
<view style="width: 100%; display: flex; justify-content: center; align-items: center;">
<uni-forms-item name="number" @tap="handleClick">
<uni-easyinput type="text" v-model="formData.number" placeholder="项目编号" :inputBorder="false"
:clearable="false" disabled placeholderStyle="color: rgba(0, 0, 0, 0.9); font-size: 28rpx;" />
</uni-forms-item>
<uni-icons v-show="formData.number" type="clear" size="22" color="#ccc" @tap="clear" />
</view>
<view class="line" />
<uni-forms-item name="Hours">
<uni-easyinput type="number" v-model="formData.Hours" placeholder="工时数" :inputBorder="false"
:clearable="false" placeholderStyle="color: rgba(0, 0, 0, 0.9); font-size: 28rpx" />
<view class="line" />
</uni-forms-item>
<!-- <uni-forms-item name="workContent">
<uni-forms-item name="workContent">
<uni-easyinput type="textarea" v-model="formData.workContent" placeholder="工作内容" :inputBorder="false"
:clearable="false" placeholderStyle="color: rgba(0, 0, 0, 0.9); font-size: 28rpx" />
</uni-forms-item> -->
<view class="line" />
</uni-forms-item>
</uni-forms>
</view>
<popup ref="popupRef" v-model="formData.number" :selectList="selectList" @input-value="inputValue" />
......@@ -35,7 +28,7 @@
</template>
<script setup lang='ts'>
import { ref, reactive } from 'vue'
import { nextTick, ref, watch } from 'vue'
import { ApiUrl } from '@/config';
import popup from './popup.vue';
......@@ -45,12 +38,10 @@ const props = defineProps({
},
})
const formData = reactive({
const formData = ref({
number: '',
Hours: '',
workContent: '',
employeeNumber: '',
departmentNo: ''
workContent: ''
})
const rules = ref({
......@@ -60,46 +51,53 @@ const rules = ref({
errorMessage: '请选择项目编号',
}]
},
Hours: {
rules: [{
required: true,
errorMessage: '请输入工时数',
}]
},
workContent: {
rules: [{
required: true,
errorMessage: '请输入工作内容',
errorMessage: '请选择工作内容',
}]
},
employeeNumber: {
Hours: {
rules: [{
required: true,
errorMessage: '请输入员工名',
}]
errorMessage: '请输入工时数',
},
// {
// minimum: 1,
// errorMessage: '工时数需要大于0',
// }
]
},
departmentNo: {
rules: [{
required: true,
errorMessage: '请输入部门名',
}]
}
})
const formRef = ref()
const popupRef = ref()
const selectList = ref([] as any)
// const selectNumberData = ref({
// fname: '',
// fnumber: ''
// })
const range = [
{ value: 3, text: "篮球" },
{ value: 1, text: "足球" },
{ value: 2, text: "游泳" },
]
// watch(() => selectNumberData.value, (newVal: any) => {
// formData.value.number = newVal.fnumber
// }, { deep: true })
const initRules = () => {
formRef.value?.setRules(rules.value)
}
const reset = () => {
formData.value = {
number: '',
Hours: '',
workContent: ''
}
// selectNumberData.value = {
// fname: '',
// fnumber: ''
// }
}
const submit = () => {
let p = new Promise((resolve: any, reject: any) => {
formRef.value?.validate().then((res: any) => {
......@@ -114,6 +112,17 @@ const submit = () => {
const handleClick = () => {
initSelect()
popupRef.value.open()
const height = localStorage.getItem('windowHeight')
nextTick(() => popupRef.value.windowHeight = Number(height) * 0.8 * 0.9)
// console.log(popupRef.value.windowHeight, 'windowHeight');
}
const clear = () => {
formData.value.number = ''
// selectNumberData.value = {
// fname: '',
// fnumber: ''
// }
}
const inputValue = (value: string) => {
......@@ -126,12 +135,7 @@ const initSelect = (FName?: string) => {
mask: true
});
uni.request({
// #ifdef MP-WEIXIN
url: 'http://192.168.0.90/ndr/LQKJ.K3.NDR.WebApiBusinessServicePlugIn.WebApi.ExecuteCmdSelect,LQKJ.K3.NDR.WebApiBusinessServicePlugIn.common.kdsvc',
// #endif
// #ifdef H5
url: ApiUrl + '/LQKJ.K3.NDR.WebApiBusinessServicePlugIn.WebApi.ExecuteCmdSelect,LQKJ.K3.NDR.WebApiBusinessServicePlugIn.common.kdsvc',
// #endif
method: 'POST',
data: { FName },
success(res: any) {
......@@ -139,22 +143,24 @@ const initSelect = (FName?: string) => {
const { data } = res
if (data.code == 200) {
selectList.value = data.data
// data.data.map((item: any, i: number) => {
// if (i <= 10) selectList.value.push({
// text: item.fname,
// value: item.fnumber
// })
// })
// console.log(selectList.value);
}
},
fail() {
uni.hideLoading()
uni.showToast({
title: '请在内网使用',
icon: 'none'
})
}
})
}
defineExpose({
formData,
// selectNumberData,
initRules,
submit
submit,
reset
})
</script>
......@@ -189,6 +195,10 @@ defineExpose({
font-size: 28rpx
}
.item-container>>>.is-direction-left {
width: 100%;
}
.item-container>>>.uni-icons {
/* display: none; */
}
......
<template>
<wyb-popup ref="popupRef" type="bottom" height="800" width="500" radius="4" :showCloseIcon="true">
<view class="popup-content">
<uni-easyinput suffixIcon="search" v-model="inputValue" placeholder="左侧图标" @iconClick="iconClick" />
<scroll-view scroll-y="true" v-if="selectList.length !== 0">
<uni-list>
<uni-list-item v-for="(item, i) in selectList" :key="i" :title="item.fname"
<uni-easyinput suffixIcon="search" v-model="inputValue" placeholder="项目编号" @iconClick="iconClick" />
<view style="margin-bottom: 20px; box-sizing: border-box; overflow-y: scroll;"
:style="{ 'height': windowHeight + 'px' }">
<!-- <scroll-view scroll-y="true" > -->
<uni-list v-if="selectList.length !== 0">
<uni-list-item v-for="(item, i) in selectList" :key="i" :title="item.fnumber"
@click="handleList(item.fnumber)" clickable />
</uni-list>
</scroll-view>
<view v-else class="loading">暂无数据</view>
<!-- </scroll-view> -->
<view v-else class="loading">暂无数据</view>
</view>
</view>
</wyb-popup>
</template>
......@@ -26,12 +29,14 @@ const props = defineProps({
})
const popupRef = ref()
const windowHeight = ref()
const emits = defineEmits(['inputValue', 'update:modelValue'])
const inputValue = ref()
const handleList = (value: string) => {
const handleList = (value: String) => {
console.log(value, 'value');
emits('update:modelValue', value)
popupRef.value?.hide()
}
......@@ -45,13 +50,16 @@ const iconClick = () => {
}
defineExpose({
open
open,
windowHeight
})
</script>
<style lang = "scss" scoped>
.popup-content {
box-sizing: border-box;
padding: 20rpx;
height: 100%;
.uni-easyinput {
width: 90%;
......
差异被折叠。
<template>
<view class="login-container">
<uni-easyinput placeholder="员工编号" v-model="ID" type="text" />
<button @tap="tapLogin" class="getCaptcha">登录</button>
</view>
</template>
<script setup lang="ts">
import { ref, onMounted } from 'vue'
import { ApiUrl } from '@/config';
const ID = ref()
let tapLogin = () => {
if (!ID.value) return uni.showToast({
title: '员工编号不能为空',
icon: 'none'
})
login()
};
const login = () => {
uni.request({
url: ApiUrl + '/LQKJ.K3.NDR.WebApiBusinessServicePlugIn.WebApi.Login,LQKJ.K3.NDR.WebApiBusinessServicePlugIn.common.kdsvc',
data: { ID: ID.value },
timeout: 10000,
method: 'POST',
success: ({ data: res }: any) => {
if (res.code === 200) {
uni.reLaunch({
url: '/pages/index/index',
success() {
localStorage.setItem("ID", ID.value)
localStorage.setItem("Name", res.data[0].FNAME)
}
})
} else {
uni.showToast({
title: res.msg,
icon: 'none'
})
}
},
fail: (error) => {
uni.showToast({
title: '请在内网使用',
icon: 'none'
})
}
})
}
onMounted(() => {
ID.value = localStorage.getItem('ID')
if (ID.value) login()
})
</script>
<style lang="scss" scoped>
.login-container {
margin: 400rpx auto;
padding: 40rpx;
.getCaptcha {
width: 400rpx;
background-color: rgb(253, 243, 208);
color: #ccc;
border: none;
font-size: 30rpx;
margin-top: 60rpx;
&::after {
border: none;
}
}
}
</style>
......@@ -2,8 +2,12 @@
<view class="card" v-for="(item, index) in list" :key="item.FID">
<view class="query-item">
<view class="item">
<text>项目名称:</text>
<text>{{ item.FNAME }}</text>
<text>项目编号:</text>
<text>{{ item.FNUMBER }}</text>
</view>
<view class="item">
<text>工作内容:</text>
<text>{{ item.F_LQKJ_WORKCONATAINER }}</text>
</view>
<view class="item">
<text>工时:</text>
......@@ -15,19 +19,29 @@
</view>
<view class="item">
<text>审核状态:</text>
<!-- <uni-tag v-if="item.F_LQKJ_BILLSTATUS == 'A'" text="创建" type="default" size="small" :circle="true" />
<uni-tag v-else-if="item.F_LQKJ_BILLSTATUS == 'B'" text="审核中" type="primary" size="small"
:circle="true" />
<uni-tag v-else-if="item.F_LQKJ_BILLSTATUS == 'C'" text="已审核" type="success" size="small"
:circle="true" />
<uni-tag v-else text="重新审核" type="warning" size="small" :circle="true" /> -->
<uni-tag v-if="item.F_LQKJ_BILLSTATUS == 'C'" text="已审核" type="success" size="small" :circle="true" />
<uni-tag v-else text="未审核" size="small" :circle="true" />
<uni-tag v-else text="未审核" type="default" size="small" :circle="true" />
</view>
</view>
<view class="line" v-if="item.F_LQKJ_BILLSTATUS != 'C'" />
<view class="footer" v-if="item.F_LQKJ_BILLSTATUS != 'C'">
<view class="line" v-show="item.F_LQKJ_BILLSTATUS != 'C'" />
<view class="footer" v-show="item.F_LQKJ_BILLSTATUS != 'C'">
<!-- <view class="button success" @tap.stop="submitTo(item.FID)">提交</view>
<view class="button info" @tap.stop="cancel(item.FID)">撤销</view> -->
<view class="button" @tap.stop="edit(item)">修改</view>
</view>
</view>
<view v-show="!list" class="load-more">暂无数据</view>
</template>
<script setup lang='ts'>
import { ref } from 'vue'
import { onShow } from '@dcloudio/uni-app';
import { ApiUrl } from '@/config';
const list = ref()
......@@ -40,23 +54,108 @@ const init = () => {
uni.request({
url: ApiUrl + '/LQKJ.K3.NDR.WebApiBusinessServicePlugIn.WebApi.ExecuteCmdSelectName,LQKJ.K3.NDR.WebApiBusinessServicePlugIn.common.kdsvc',
method: 'POST',
data: { Name: localStorage.getItem('userId') },
data: { Name: localStorage.getItem('Name') },
success(res: any) {
uni.hideLoading()
const { data } = res
if (data.code == 200) {
list.value = data.data
}
} else uni.showToast({
title: data.msg,
icon: 'none'
})
},
fail() {
uni.hideLoading()
uni.showToast({
title: '请在内网使用',
icon: 'none'
})
}
})
}
init()
const edit = (row: number) => {
onShow(() => init())
const edit = (row: any) => {
uni.navigateTo({
url: '/pages/index/components/edit?row=' + encodeURIComponent(JSON.stringify(row))
})
}
const submitTo = (id: number) => {
uni.showLoading({
title: '加载中',
mask: true
})
uni.request({
url: ApiUrl + '/LQKJ.K3.NDR.WebApiBusinessServicePlugIn.WebApi.Submit,LQKJ.K3.NDR.WebApiBusinessServicePlugIn.common.kdsvc',
method: 'POST',
data: {
parmeters: {
ids: id
}
},
success(res: any) {
uni.hideLoading()
const { data } = res
if (data.code == 200) uni.showToast({
title: '提交成功',
icon: 'none',
success() {
init()
}
})
else uni.showToast({
title: data.msg,
icon: 'none'
})
},
fail() {
uni.hideLoading()
uni.showToast({
title: '请在内网使用',
icon: 'none'
})
}
})
}
const cancel = (id: number) => {
uni.showLoading({
title: '加载中',
mask: true
})
uni.request({
url: ApiUrl + '/LQKJ.K3.NDR.WebApiBusinessServicePlugIn.WebApi.Revocation,LQKJ.K3.NDR.WebApiBusinessServicePlugIn.common.kdsvc',
method: 'POST',
data: {
parmeters: {
ids: id
}
},
success(res: any) {
uni.hideLoading()
const { data } = res
if (data.code == 200) uni.showToast({
title: '撤销成功',
icon: 'none',
success() {
init()
}
})
else uni.showToast({
title: data.msg,
icon: 'none'
})
},
fail() {
uni.hideLoading()
uni.showToast({
title: '请在内网使用',
icon: 'none'
})
}
})
}
</script>
<style lang="scss" scoped>
......@@ -101,7 +200,7 @@ const edit = (row: number) => {
.button {
width: 60rpx;
text-align: center;
border: 1px solid rgba(0, 0, 0, .2);
border: 1px solid #2979ff;
border-radius: 6rpx;
padding: 6rpx 20rpx;
font-size: 24rpx;
......@@ -109,6 +208,23 @@ const edit = (row: number) => {
background-color: #007aff;
color: #fff;
}
.info {
color: #606266;
border-color: #c0c4cc;
background-color: #fff;
}
.success {
border-color: #19be6b;
background-color: #19be6b;
}
}
}
.load-more {
margin: 100rpx auto;
text-align: center;
color: rgba(204, 204, 204, 0.9);
}
</style>
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论