Merge branch 'main' of http://106.15.139.36:30000/bestunion/Otsuka-APP
This commit is contained in:
commit
9c257f0363
11
api/AccountPriceFinallReview.js
Normal file
11
api/AccountPriceFinallReview.js
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 查询账期价格复审主列表
|
||||||
|
export const getPriceFinallReviewList = (data, query) => {
|
||||||
|
return request({
|
||||||
|
method: 'post',
|
||||||
|
url: '/bussiness/baseusercredithistory/credit-period-repeatedly-review-list',
|
||||||
|
data,
|
||||||
|
params: query,
|
||||||
|
})
|
||||||
|
}
|
||||||
76
api/AccountPricePreliminaryRreview.js
Normal file
76
api/AccountPricePreliminaryRreview.js
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 获取账期价格初审列表
|
||||||
|
export const getPricePreliminaryReviewList = (data, query) => {
|
||||||
|
return request({
|
||||||
|
method: 'post',
|
||||||
|
url: '/bussiness/baseusercredithistory/credit-period-initial-review-list',
|
||||||
|
data,
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 根据 ID 获取账期价格初审详情
|
||||||
|
export const getPricePreliminaryReviewDetail = (query) => {
|
||||||
|
return request({
|
||||||
|
method: 'get',
|
||||||
|
url: '/bussiness/baseusercredithistory/get-creditline-creditperiod',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取账期审核/额度审核列表(两个列表一个接口)
|
||||||
|
export const getLastPaymentAndQuotaList = (data, query) => {
|
||||||
|
return request({
|
||||||
|
method: 'post',
|
||||||
|
url: '/bussiness/baseusercredithistory/goods-credit-period-initial-review-list',
|
||||||
|
params: query,
|
||||||
|
data: data,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 账期终审/额度终审的回退(两个列表一个接口)
|
||||||
|
export const putBackDataLastPaymentOrQuota = (data) => {
|
||||||
|
return request({
|
||||||
|
method: 'put',
|
||||||
|
url: '/bussiness/baseusercredithistory/goods-credit-period-repeatedly-review-back',
|
||||||
|
data,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 额度终审 (副总监初审)
|
||||||
|
export const directorLastReviewQuota = (query) => {
|
||||||
|
return request({
|
||||||
|
method: 'put',
|
||||||
|
url: '/bussiness/baseusercredithistory/goods-credit-limit-repeatedly-review',
|
||||||
|
params: query,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 价格审核列表
|
||||||
|
export const getPriceChangeReviewList = (data, query) => {
|
||||||
|
return request({
|
||||||
|
method: 'post',
|
||||||
|
url: '/bussiness/baseusercredithistory/goods-credit-line-initial-review-list',
|
||||||
|
params: query,
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 价格审核 的回退
|
||||||
|
export const putBackDataPrice = (data) => {
|
||||||
|
return request({
|
||||||
|
method: 'put',
|
||||||
|
url: '/bussiness/businessgoods/goods-credit-line-initial-review-back',
|
||||||
|
data,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 价格审核(副总监初审)
|
||||||
|
export const directorReviewPrice = (query) => {
|
||||||
|
return request({
|
||||||
|
method: 'put',
|
||||||
|
url: 'bussiness/businessgoods/goods-credit-line-initial-review',
|
||||||
|
params: query,
|
||||||
|
})
|
||||||
|
}
|
||||||
9
api/area.js
Normal file
9
api/area.js
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 获取地域列表
|
||||||
|
export const getAreaList = () => {
|
||||||
|
return request({
|
||||||
|
method: 'get',
|
||||||
|
url: '/system/dept/regionals',
|
||||||
|
})
|
||||||
|
}
|
||||||
11
api/order.js
Normal file
11
api/order.js
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
import request from "../utils/request";
|
||||||
|
|
||||||
|
// 订单综合查询列表内部用户
|
||||||
|
export const getReportOrderQuery = (data, query) => {
|
||||||
|
return request({
|
||||||
|
method: 'post',
|
||||||
|
url: '/report/stock/ReportOrderQuery',
|
||||||
|
data: data,
|
||||||
|
params: query,
|
||||||
|
})
|
||||||
|
}
|
||||||
@ -1,7 +1,7 @@
|
|||||||
import request from '@/utils/request'
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
|
||||||
export function listsalemain(data,query) {
|
export function listsalemain(data, query) {
|
||||||
return request({
|
return request({
|
||||||
url: '/bussiness/salemain/list',
|
url: '/bussiness/salemain/list',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
@ -21,16 +21,17 @@ export function productListWithUserId() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 查询s生产单位列表
|
// 查询s生产单位列表
|
||||||
export function listproductList(data,query) {
|
export function listproductList(data, query) {
|
||||||
return request({
|
return request({
|
||||||
url: '/system/dept/productList',
|
url: '/system/dept/productList',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
data:data,
|
data: data,
|
||||||
params: query
|
params: query
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// 新建销售订单时候的商品列表
|
// 新建销售订单时候的商品列表
|
||||||
export function listsaleBusGoodsList(data,query) {
|
export function listsaleBusGoodsList(data, query) {
|
||||||
return request({
|
return request({
|
||||||
url: '/bussiness/businessgoods/saleBusGoodsList',
|
url: '/bussiness/businessgoods/saleBusGoodsList',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
@ -39,6 +40,7 @@ export function listsaleBusGoodsList(data,query) {
|
|||||||
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询剩余额度
|
// 查询剩余额度
|
||||||
export function getsalemaincheckAmount(queryParams) {
|
export function getsalemaincheckAmount(queryParams) {
|
||||||
return request({
|
return request({
|
||||||
@ -47,6 +49,7 @@ export function getsalemaincheckAmount(queryParams) {
|
|||||||
// isEncrypt: false
|
// isEncrypt: false
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取当前商业用户票扣列表
|
// 获取当前商业用户票扣列表
|
||||||
// 相当于补差
|
// 相当于补差
|
||||||
export function salemainpiAoKouList(data) {
|
export function salemainpiAoKouList(data) {
|
||||||
@ -57,6 +60,7 @@ export function salemainpiAoKouList(data) {
|
|||||||
isEncrypt: false
|
isEncrypt: false
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// 新增
|
// 新增
|
||||||
export function addsalemain(data) {
|
export function addsalemain(data) {
|
||||||
return request({
|
return request({
|
||||||
@ -85,6 +89,7 @@ export function salemainDetail(salemainId) {
|
|||||||
// isEncrypt: false
|
// isEncrypt: false
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// 商务经理审批时获取详情,下面的商品列表
|
// 商务经理审批时获取详情,下面的商品列表
|
||||||
export function businessManagerReviewGoodsList(salemainId) {
|
export function businessManagerReviewGoodsList(salemainId) {
|
||||||
return request({
|
return request({
|
||||||
@ -98,14 +103,13 @@ export function businessManagerReviewGoodsList(salemainId) {
|
|||||||
// 删除
|
// 删除
|
||||||
export function delsalemain(id) {
|
export function delsalemain(id) {
|
||||||
return request({
|
return request({
|
||||||
url: '/bussiness/salemain/remove?ids=' +id,
|
url: '/bussiness/salemain/remove?ids=' + id,
|
||||||
method: 'post',
|
method: 'post',
|
||||||
// isEncrypt: false
|
// isEncrypt: false
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 订单详情中,查询商业用户详细--收货地址
|
// 订单详情中,查询商业用户详细--收货地址
|
||||||
export function BaseuserBusinessUserDetail(BaseuserBusinessUserId) {
|
export function BaseuserBusinessUserDetail(BaseuserBusinessUserId) {
|
||||||
return request({
|
return request({
|
||||||
@ -125,11 +129,11 @@ export function getSaleDisDetail(saleid) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 销售订单操作日志
|
// 销售订单操作日志
|
||||||
export function salemainlogList(data,query) {
|
export function salemainlogList(data, query) {
|
||||||
return request({
|
return request({
|
||||||
url: '/bussiness/salemainlog/list',
|
url: '/bussiness/salemainlog/list',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data:data,
|
data: data,
|
||||||
params: query,
|
params: query,
|
||||||
isEncrypt: false
|
isEncrypt: false
|
||||||
})
|
})
|
||||||
@ -144,15 +148,11 @@ export function getInvoiceList(saleid) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 获取商业公司列表
|
// 获取商业公司列表
|
||||||
export function getBusinessList(data) {
|
export const getBusinessCompanyList = (data) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/system/user/list_business',
|
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data:data,
|
url: '/system/user/list_business',
|
||||||
isEncrypt: false
|
data
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
36
components/Area.vue
Normal file
36
components/Area.vue
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
<template>
|
||||||
|
<uni-data-select
|
||||||
|
v-model="modelValue"
|
||||||
|
:localdata="options"
|
||||||
|
v-bind="omit($attrs,['change'])"
|
||||||
|
placeholder="请选择地域"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import {defineModel, defineOptions, defineProps, getCurrentInstance, onMounted, ref} from 'vue'
|
||||||
|
import {omit} from "radash";
|
||||||
|
import UniDataSelect from "../uni_modules/uni-data-select/components/uni-data-select/uni-data-select.vue";
|
||||||
|
import {getAreaList} from "../api/area";
|
||||||
|
|
||||||
|
defineOptions({
|
||||||
|
name: "Area",
|
||||||
|
inheritAttrs: false
|
||||||
|
})
|
||||||
|
|
||||||
|
const modelValue = defineModel()
|
||||||
|
const props = defineProps([])
|
||||||
|
const {proxy} = getCurrentInstance()
|
||||||
|
|
||||||
|
const options = ref([])
|
||||||
|
|
||||||
|
onMounted(async () => {
|
||||||
|
const {data} = await getAreaList()
|
||||||
|
options.value = data.sort((a, b) => {
|
||||||
|
return a.deptName.localeCompare(b.deptName, 'zh-CN');
|
||||||
|
}).map(i => ({
|
||||||
|
value: i.deptId,
|
||||||
|
text: i.deptName
|
||||||
|
}))
|
||||||
|
})
|
||||||
|
</script>
|
||||||
66
components/BusinessCompany.vue
Normal file
66
components/BusinessCompany.vue
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
<template>
|
||||||
|
<uni-data-select
|
||||||
|
v-model="modelValue"
|
||||||
|
:localdata="options"
|
||||||
|
placeholder="请选择商业公司"
|
||||||
|
v-bind="omit($attrs,['change'])"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import {defineModel, defineOptions, defineProps, getCurrentInstance, nextTick, onMounted, ref, watch} from 'vue'
|
||||||
|
import {omit} from "radash";
|
||||||
|
import {getBusinessCompanyList} from "../api/orderManager";
|
||||||
|
|
||||||
|
defineOptions({
|
||||||
|
name: "BusinessCompany",
|
||||||
|
inheritAttrs: false
|
||||||
|
})
|
||||||
|
|
||||||
|
const modelValue = defineModel()
|
||||||
|
// default: type = all_name
|
||||||
|
/**
|
||||||
|
* type:
|
||||||
|
* all_name = 显示所有名称
|
||||||
|
* id = value 值是 ID
|
||||||
|
*/
|
||||||
|
const props = defineProps({
|
||||||
|
type: {
|
||||||
|
type: String,
|
||||||
|
default: 'all_name'
|
||||||
|
},
|
||||||
|
areaId: {
|
||||||
|
type: Number,
|
||||||
|
default: 0
|
||||||
|
}
|
||||||
|
})
|
||||||
|
const {proxy} = getCurrentInstance()
|
||||||
|
|
||||||
|
const options = ref([])
|
||||||
|
|
||||||
|
const handleQuery = async () => {
|
||||||
|
const {data} = await getBusinessCompanyList({
|
||||||
|
isUnit: 0,
|
||||||
|
queryParam: {
|
||||||
|
areaId: props.areaId
|
||||||
|
}
|
||||||
|
})
|
||||||
|
options.value = data.map(item => {
|
||||||
|
return {
|
||||||
|
value: props.type === 'id' ? item.userid : item.businessname,
|
||||||
|
text: item.businessname
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
onMounted(async () => {
|
||||||
|
await nextTick()
|
||||||
|
await handleQuery()
|
||||||
|
})
|
||||||
|
|
||||||
|
watch(() => props.areaId, async (newValue) => {
|
||||||
|
if (newValue) {
|
||||||
|
await handleQuery()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
</script>
|
||||||
21
pages.json
21
pages.json
@ -156,6 +156,27 @@
|
|||||||
"props": true
|
"props": true
|
||||||
// 开启 props 传参
|
// 开启 props 传参
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/work/OrderSearchQuery/index",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "订单综合查询",
|
||||||
|
"props": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/work/AccountPricePreliminaryRreview/index",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "账期价格初审",
|
||||||
|
"props": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/work/AccountPriceFinallReview/index",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "账期价格复审",
|
||||||
|
"props": true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"tabBar": {
|
"tabBar": {
|
||||||
|
|||||||
302
pages/login.vue
302
pages/login.vue
@ -1,231 +1,197 @@
|
|||||||
<template>
|
<template>
|
||||||
<view class="normal-login-container">
|
<view class="normal-login-container">
|
||||||
<view class="logo-content align-center justify-center flex">
|
<view class="logo-content align-center justify-center flex">
|
||||||
<image style="width: 100rpx;height: 100rpx;" :src="globalConfig.appInfo.logo" mode="widthFix">
|
<image :src="globalConfig.appInfo.logo" mode="widthFix" style="width: 100rpx;height: 100rpx;">
|
||||||
</image>
|
</image>
|
||||||
<text class="title">大冢APS Ultra管理平台</text>
|
<text class="title">大冢APS Ultra管理平台</text>
|
||||||
</view>
|
|
||||||
<view class="login-form-content">
|
|
||||||
<view class="input-item flex align-center">
|
|
||||||
<view class="iconfont icon-user icon"></view>
|
|
||||||
<input v-model="loginForm.username" class="input" type="text" placeholder="请输入账号" maxlength="30" />
|
|
||||||
</view>
|
|
||||||
<view class="input-item flex align-center">
|
|
||||||
<view class="iconfont icon-password icon"></view>
|
|
||||||
<input v-model="loginForm.password" :type="passwordVisible ? 'text' : 'password'" class="input" placeholder="请输入密码" maxlength="20" />
|
|
||||||
<view class="password-eye" @click="togglePasswordVisible">
|
|
||||||
<uni-icons :type="passwordVisible ? 'eye-slash' : 'eye'" size="20" color="#999"></uni-icons>
|
|
||||||
</view>
|
</view>
|
||||||
</view>
|
<view class="login-form-content">
|
||||||
<view class="input-item flex align-center" style="width: 60%;margin: 0px;" v-if="captchaEnabled">
|
<view class="input-item flex align-center">
|
||||||
<view class="iconfont icon-code icon"></view>
|
<view class="iconfont icon-user icon"></view>
|
||||||
<input v-model="loginForm.code" type="number" class="input" placeholder="请输入验证码" maxlength="4" />
|
<input v-model="loginForm.username" class="input" maxlength="30" placeholder="请输入账号" type="text"/>
|
||||||
<view class="login-code">
|
</view>
|
||||||
<image :src="codeUrl" @click="getCode" class="login-code-img"></image>
|
<view class="input-item flex align-center">
|
||||||
|
<view class="iconfont icon-password icon"></view>
|
||||||
|
<input v-model="loginForm.password" class="input" maxlength="20" placeholder="请输入密码"
|
||||||
|
type="password"/>
|
||||||
|
</view>
|
||||||
|
<view v-if="captchaEnabled" class="input-item flex align-center" style="width: 60%;margin: 0px;">
|
||||||
|
<view class="iconfont icon-code icon"></view>
|
||||||
|
<input v-model="loginForm.code" class="input" maxlength="4" placeholder="请输入验证码" type="number"/>
|
||||||
|
<view class="login-code">
|
||||||
|
<image :src="codeUrl" class="login-code-img" @click="getCode"></image>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="action-btn">
|
||||||
|
<button class="login-btn cu-btn block bg-blue lg round" @click="handleLogin">登录</button>
|
||||||
|
</view>
|
||||||
|
<view v-if="register" class="reg text-center">
|
||||||
|
<text class="text-grey1">没有账号?</text>
|
||||||
|
<text class="text-blue" @click="handleUserRegister">立即注册</text>
|
||||||
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
|
||||||
<view class="action-btn">
|
|
||||||
<button @click="handleLogin" class="login-btn cu-btn block bg-blue lg round">登录</button>
|
|
||||||
</view>
|
|
||||||
<view class="reg text-center" v-if="register">
|
|
||||||
<text class="text-grey1">没有账号?</text>
|
|
||||||
<text @click="handleUserRegister" class="text-blue">立即注册</text>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref, getCurrentInstance } from "vue"
|
import {getCurrentInstance, ref} from "vue"
|
||||||
import { onLoad } from "@dcloudio/uni-app"
|
import {onLoad} from "@dcloudio/uni-app"
|
||||||
import { getToken } from '@/utils/auth'
|
import {getToken} from '@/utils/auth'
|
||||||
import { getCodeImg } from '@/api/login'
|
import {getCodeImg} from '@/api/login'
|
||||||
import { useConfigStore, useUserStore } from '@/store'
|
import {useConfigStore, useUserStore} from '@/store'
|
||||||
|
|
||||||
const { proxy } = getCurrentInstance()
|
const {proxy} = getCurrentInstance()
|
||||||
const globalConfig = useConfigStore().config
|
const globalConfig = useConfigStore().config
|
||||||
const codeUrl = ref("")
|
const codeUrl = ref("")
|
||||||
// 验证码开关
|
// 验证码开关
|
||||||
const captchaEnabled = ref(true)
|
const captchaEnabled = ref(true)
|
||||||
// 用户注册开关
|
// 用户注册开关
|
||||||
const register = ref(false)
|
const register = ref(false)
|
||||||
// 密码可见性
|
const loginForm = ref({
|
||||||
const passwordVisible = ref(false)
|
|
||||||
|
|
||||||
const loginForm = ref({
|
|
||||||
username: "admin",
|
username: "admin",
|
||||||
password: "admin123",
|
password: "admin123",
|
||||||
code: "",
|
code: "",
|
||||||
uuid: ""
|
uuid: ""
|
||||||
})
|
})
|
||||||
|
|
||||||
// 切换密码可见性
|
// 用户注册
|
||||||
function togglePasswordVisible() {
|
function handleUserRegister() {
|
||||||
passwordVisible.value = !passwordVisible.value
|
|
||||||
}
|
|
||||||
|
|
||||||
// 用户注册
|
|
||||||
function handleUserRegister() {
|
|
||||||
proxy.$tab.redirectTo(`/pages/register`)
|
proxy.$tab.redirectTo(`/pages/register`)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取图形验证码
|
// 获取图形验证码
|
||||||
function getCode() {
|
function getCode() {
|
||||||
getCodeImg().then(res => {
|
getCodeImg().then(res => {
|
||||||
captchaEnabled.value = res.captchaEnabled === undefined ? true : res.captchaEnabled
|
captchaEnabled.value = res.captchaEnabled === undefined ? true : res.captchaEnabled
|
||||||
if (captchaEnabled.value) {
|
if (captchaEnabled.value) {
|
||||||
codeUrl.value = 'data:image/gif;base64,' + res.img
|
codeUrl.value = 'data:image/gif;base64,' + res.img
|
||||||
loginForm.value.uuid = res.uuid
|
loginForm.value.uuid = res.uuid
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// 登录方法
|
// 登录方法
|
||||||
async function handleLogin() {
|
async function handleLogin() {
|
||||||
if (loginForm.value.username === "") {
|
if (loginForm.value.username === "") {
|
||||||
proxy.$modal.msgError("请输入账号")
|
proxy.$modal.msgError("请输入账号")
|
||||||
} else if (loginForm.value.password === "") {
|
} else if (loginForm.value.password === "") {
|
||||||
proxy.$modal.msgError("请输入密码")
|
proxy.$modal.msgError("请输入密码")
|
||||||
} else if (loginForm.value.code === "" && captchaEnabled.value) {
|
} else if (loginForm.value.code === "" && captchaEnabled.value) {
|
||||||
proxy.$modal.msgError("请输入验证码")
|
proxy.$modal.msgError("请输入验证码")
|
||||||
} else {
|
} else {
|
||||||
proxy.$modal.loading("登录中,请耐心等待...")
|
proxy.$modal.loading("登录中,请耐心等待...")
|
||||||
pwdLogin()
|
pwdLogin()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 密码登录
|
// 密码登录
|
||||||
async function pwdLogin() {
|
async function pwdLogin() {
|
||||||
useUserStore().login(loginForm.value).then(() => {
|
useUserStore().login(loginForm.value).then(() => {
|
||||||
proxy.$modal.closeLoading()
|
proxy.$modal.closeLoading()
|
||||||
loginSuccess()
|
loginSuccess()
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
if (captchaEnabled.value) {
|
if (captchaEnabled.value) {
|
||||||
getCode()
|
getCode()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// 登录成功后,处理函数
|
// 登录成功后,处理函数
|
||||||
function loginSuccess(result) {
|
function loginSuccess(result) {
|
||||||
// 设置用户信息
|
// 设置用户信息
|
||||||
useUserStore().getInfo().then(res => {
|
useUserStore().getInfo().then(res => {
|
||||||
proxy.$tab.reLaunch('/pages/work/index')
|
proxy.$tab.reLaunch('/pages/index')
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
onLoad(() => {
|
onLoad(() => {
|
||||||
//#ifdef H5
|
//#ifdef H5
|
||||||
if (getToken()) {
|
if (getToken()) {
|
||||||
proxy.$tab.reLaunch('/pages/index')
|
proxy.$tab.reLaunch('/pages/index')
|
||||||
}
|
}
|
||||||
//#endif
|
//#endif
|
||||||
})
|
})
|
||||||
|
|
||||||
getCode()
|
getCode()
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
page {
|
page {
|
||||||
background-color: #ffffff;
|
background-color: #ffffff;
|
||||||
}
|
}
|
||||||
|
|
||||||
.normal-login-container {
|
.normal-login-container {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|
||||||
.logo-content {
|
.logo-content {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
font-size: 21px;
|
font-size: 21px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
padding-top: 15%;
|
padding-top: 15%;
|
||||||
|
|
||||||
image {
|
image {
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.title {
|
.title {
|
||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.login-form-content {
|
.login-form-content {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
margin: 20px auto;
|
|
||||||
margin-top: 15%;
|
|
||||||
width: 80%;
|
|
||||||
|
|
||||||
.input-item {
|
|
||||||
margin: 20px auto;
|
margin: 20px auto;
|
||||||
background-color: #f5f6f7;
|
margin-top: 15%;
|
||||||
height: 45px;
|
width: 80%;
|
||||||
border-radius: 20px;
|
|
||||||
position: relative;
|
.input-item {
|
||||||
|
margin: 20px auto;
|
||||||
|
background-color: #f5f6f7;
|
||||||
|
height: 45px;
|
||||||
|
border-radius: 20px;
|
||||||
|
|
||||||
|
.icon {
|
||||||
|
font-size: 38rpx;
|
||||||
|
margin-left: 10px;
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
|
||||||
|
.input {
|
||||||
|
width: 100%;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 20px;
|
||||||
|
text-align: left;
|
||||||
|
padding-left: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
.icon {
|
|
||||||
font-size: 38rpx;
|
|
||||||
margin-left: 10px;
|
|
||||||
color: #999;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.input {
|
.login-btn {
|
||||||
width: 100%;
|
margin-top: 40px;
|
||||||
font-size: 14px;
|
height: 45px;
|
||||||
line-height: 20px;
|
|
||||||
text-align: left;
|
|
||||||
padding-left: 15px;
|
|
||||||
padding-right: 45px; /* 为眼睛图标留出更多空间 */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.password-eye {
|
.reg {
|
||||||
position: absolute;
|
margin-top: 15px;
|
||||||
right: 15px;
|
|
||||||
top: 50%;
|
|
||||||
transform: translateY(-50%);
|
|
||||||
z-index: 10;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
width: 30px;
|
|
||||||
height: 30px;
|
|
||||||
|
|
||||||
/* 增加点击区域 */
|
|
||||||
&::after {
|
|
||||||
content: '';
|
|
||||||
position: absolute;
|
|
||||||
top: -10px;
|
|
||||||
left: -10px;
|
|
||||||
right: -10px;
|
|
||||||
bottom: -10px;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
.login-btn {
|
.xieyi {
|
||||||
margin-top: 40px;
|
color: #333;
|
||||||
height: 45px;
|
margin-top: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.reg {
|
.login-code {
|
||||||
margin-top: 15px;
|
height: 38px;
|
||||||
}
|
float: right;
|
||||||
|
|
||||||
.xieyi {
|
.login-code-img {
|
||||||
color: #333;
|
height: 38px;
|
||||||
margin-top: 20px;
|
position: absolute;
|
||||||
}
|
margin-left: 10px;
|
||||||
|
width: 200rpx;
|
||||||
.login-code {
|
}
|
||||||
height: 38px;
|
|
||||||
float: right;
|
|
||||||
|
|
||||||
.login-code-img {
|
|
||||||
height: 38px;
|
|
||||||
position: absolute;
|
|
||||||
margin-left: 10px;
|
|
||||||
width: 200rpx;
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
@ -1,191 +1,192 @@
|
|||||||
<template>
|
<template>
|
||||||
<view class="mine-container" :style="{height: `${windowHeight}px`}">
|
<view :style="{height: `${windowHeight}px`}" class="mine-container">
|
||||||
<!--顶部个人信息栏-->
|
<!--顶部个人信息栏-->
|
||||||
<view class="header-section">
|
<view class="header-section">
|
||||||
<view class="flex padding justify-between">
|
<view class="flex padding justify-between">
|
||||||
<view class="flex align-center">
|
<view class="flex align-center">
|
||||||
<view v-if="!avatar" class="cu-avatar xl round bg-white">
|
<view v-if="!avatar" class="cu-avatar xl round bg-white">
|
||||||
<view class="iconfont icon-people text-gray icon"></view>
|
<view class="iconfont icon-people text-gray icon"></view>
|
||||||
</view>
|
</view>
|
||||||
<image v-if="avatar" @click="handleToAvatar" :src="avatar" class="cu-avatar xl round" mode="widthFix">
|
<image v-if="avatar" :src="avatar" class="cu-avatar xl round" mode="widthFix"
|
||||||
</image>
|
@click="handleToAvatar">
|
||||||
<view v-if="!name" @click="handleToLogin" class="login-tip">
|
</image>
|
||||||
点击登录
|
<view v-if="!name" class="login-tip" @click="handleToLogin">
|
||||||
</view>
|
点击登录
|
||||||
<view v-if="name" @click="handleToInfo" class="user-info">
|
</view>
|
||||||
<view class="u_title">
|
<view v-if="name" class="user-info" @click="handleToInfo">
|
||||||
用户名:{{ name }}
|
<view class="u_title">
|
||||||
|
用户名:{{ name }}
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="flex align-center" @click="handleToInfo">
|
||||||
|
<text>个人信息</text>
|
||||||
|
<view class="iconfont icon-right"></view>
|
||||||
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
|
||||||
</view>
|
</view>
|
||||||
<view @click="handleToInfo" class="flex align-center">
|
|
||||||
<text>个人信息</text>
|
<view class="content-section">
|
||||||
<view class="iconfont icon-right"></view>
|
<view class="mine-actions grid col-4 text-center">
|
||||||
|
<view class="action-item" @click="handleJiaoLiuQun">
|
||||||
|
<view class="iconfont icon-friendfill text-pink icon"></view>
|
||||||
|
<text class="text">交流群</text>
|
||||||
|
</view>
|
||||||
|
<view class="action-item" @click="handleBuilding">
|
||||||
|
<view class="iconfont icon-service text-blue icon"></view>
|
||||||
|
<text class="text">在线客服</text>
|
||||||
|
</view>
|
||||||
|
<view class="action-item" @click="handleBuilding">
|
||||||
|
<view class="iconfont icon-community text-mauve icon"></view>
|
||||||
|
<text class="text">反馈社区</text>
|
||||||
|
</view>
|
||||||
|
<view class="action-item" @click="handleBuilding">
|
||||||
|
<view class="iconfont icon-dianzan text-green icon"></view>
|
||||||
|
<text class="text">点赞我们</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="menu-list">
|
||||||
|
<view class="list-cell list-cell-arrow" @click="handleToEditInfo">
|
||||||
|
<view class="menu-item-box">
|
||||||
|
<view class="iconfont icon-user menu-icon"></view>
|
||||||
|
<view>编辑资料</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="list-cell list-cell-arrow" @click="handleHelp">
|
||||||
|
<view class="menu-item-box">
|
||||||
|
<view class="iconfont icon-help menu-icon"></view>
|
||||||
|
<view>常见问题</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="list-cell list-cell-arrow" @click="handleAbout">
|
||||||
|
<view class="menu-item-box">
|
||||||
|
<view class="iconfont icon-aixin menu-icon"></view>
|
||||||
|
<view>关于我们</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="list-cell list-cell-arrow" @click="handleToSetting">
|
||||||
|
<view class="menu-item-box">
|
||||||
|
<view class="iconfont icon-setting menu-icon"></view>
|
||||||
|
<view>应用设置</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
</view>
|
</view>
|
||||||
</view>
|
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view class="content-section">
|
|
||||||
<!-- <view class="mine-actions grid col-4 text-center">
|
|
||||||
<view class="action-item" @click="handleJiaoLiuQun">
|
|
||||||
<view class="iconfont icon-friendfill text-pink icon"></view>
|
|
||||||
<text class="text">交流群</text>
|
|
||||||
</view>
|
|
||||||
<view class="action-item" @click="handleBuilding">
|
|
||||||
<view class="iconfont icon-service text-blue icon"></view>
|
|
||||||
<text class="text">在线客服</text>
|
|
||||||
</view>
|
|
||||||
<view class="action-item" @click="handleBuilding">
|
|
||||||
<view class="iconfont icon-community text-mauve icon"></view>
|
|
||||||
<text class="text">反馈社区</text>
|
|
||||||
</view>
|
|
||||||
<view class="action-item" @click="handleBuilding">
|
|
||||||
<view class="iconfont icon-dianzan text-green icon"></view>
|
|
||||||
<text class="text">点赞我们</text>
|
|
||||||
</view>
|
|
||||||
</view> -->
|
|
||||||
|
|
||||||
<view class="menu-list">
|
|
||||||
<view class="list-cell list-cell-arrow" @click="handleToEditInfo">
|
|
||||||
<view class="menu-item-box">
|
|
||||||
<view class="iconfont icon-user menu-icon"></view>
|
|
||||||
<view>编辑资料</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
<!-- <view class="list-cell list-cell-arrow" @click="handleHelp">
|
|
||||||
<view class="menu-item-box">
|
|
||||||
<view class="iconfont icon-help menu-icon"></view>
|
|
||||||
<view>常见问题</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
<view class="list-cell list-cell-arrow" @click="handleAbout">
|
|
||||||
<view class="menu-item-box">
|
|
||||||
<view class="iconfont icon-aixin menu-icon"></view>
|
|
||||||
<view>关于我们</view>
|
|
||||||
</view>
|
|
||||||
</view> -->
|
|
||||||
<view class="list-cell list-cell-arrow" @click="handleToSetting">
|
|
||||||
<view class="menu-item-box">
|
|
||||||
<view class="iconfont icon-setting menu-icon"></view>
|
|
||||||
<view>应用设置</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { useUserStore } from '@/store'
|
import {useUserStore} from '@/store'
|
||||||
import { computed , getCurrentInstance } from "vue"
|
import {computed, getCurrentInstance} from "vue"
|
||||||
|
|
||||||
const { proxy } = getCurrentInstance()
|
const {proxy} = getCurrentInstance()
|
||||||
const name = useUserStore().name
|
const name = useUserStore().name
|
||||||
const avatar = computed(() => useUserStore().avatar)
|
const avatar = computed(() => useUserStore().avatar)
|
||||||
const windowHeight = computed(() => uni.getSystemInfoSync().windowHeight - 50)
|
const windowHeight = computed(() => uni.getSystemInfoSync().windowHeight - 50)
|
||||||
|
|
||||||
function handleToInfo() {
|
function handleToInfo() {
|
||||||
proxy.$tab.navigateTo('/pages/mine/info/index')
|
proxy.$tab.navigateTo('/pages/mine/info/index')
|
||||||
}
|
}
|
||||||
|
|
||||||
function handleToEditInfo() {
|
function handleToEditInfo() {
|
||||||
proxy.$tab.navigateTo('/pages/mine/info/edit')
|
proxy.$tab.navigateTo('/pages/mine/info/edit')
|
||||||
}
|
}
|
||||||
|
|
||||||
function handleToSetting() {
|
function handleToSetting() {
|
||||||
proxy.$tab.navigateTo('/pages/mine/setting/index')
|
proxy.$tab.navigateTo('/pages/mine/setting/index')
|
||||||
}
|
}
|
||||||
|
|
||||||
function handleToLogin() {
|
function handleToLogin() {
|
||||||
proxy.$tab.reLaunch('/pages/login')
|
proxy.$tab.reLaunch('/pages/login')
|
||||||
}
|
}
|
||||||
|
|
||||||
function handleToAvatar() {
|
function handleToAvatar() {
|
||||||
proxy.$modal.showToast('模块建设中~')
|
|
||||||
// proxy.$tab.navigateTo('/pages/mine/avatar/index')
|
|
||||||
}
|
|
||||||
|
|
||||||
function handleHelp() {
|
|
||||||
proxy.$modal.showToast('模块建设中~')
|
|
||||||
// proxy.$tab.navigateTo('/pages/mine/help/index')
|
|
||||||
}
|
|
||||||
|
|
||||||
function handleAbout() {
|
|
||||||
proxy.$modal.showToast('模块建设中~')
|
|
||||||
// proxy.$tab.navigateTo('/pages/mine/about/index')
|
|
||||||
}
|
|
||||||
|
|
||||||
function handleJiaoLiuQun() {
|
|
||||||
proxy.$modal.showToast('模块建设中~')
|
|
||||||
// proxy.$modal.showToast('QQ群:①133713780(满)、②146013835(满)、③189091635')
|
|
||||||
}
|
|
||||||
|
|
||||||
function handleBuilding() {
|
|
||||||
proxy.$modal.showToast('模块建设中~')
|
proxy.$modal.showToast('模块建设中~')
|
||||||
}
|
// proxy.$tab.navigateTo('/pages/mine/avatar/index')
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleHelp() {
|
||||||
|
proxy.$modal.showToast('模块建设中~')
|
||||||
|
// proxy.$tab.navigateTo('/pages/mine/help/index')
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleAbout() {
|
||||||
|
proxy.$modal.showToast('模块建设中~')
|
||||||
|
// proxy.$tab.navigateTo('/pages/mine/about/index')
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleJiaoLiuQun() {
|
||||||
|
proxy.$modal.showToast('模块建设中~')
|
||||||
|
// proxy.$modal.showToast('QQ群:①133713780(满)、②146013835(满)、③189091635')
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleBuilding() {
|
||||||
|
proxy.$modal.showToast('模块建设中~')
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
page {
|
page {
|
||||||
background-color: #f5f6f7;
|
background-color: #f5f6f7;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mine-container {
|
.mine-container {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
|
||||||
|
|
||||||
.header-section {
|
.header-section {
|
||||||
padding: 15px 15px 45px 15px;
|
padding: 15px 15px 45px 15px;
|
||||||
background-color: #3c96f3;
|
background-color: #3c96f3;
|
||||||
color: white;
|
color: white;
|
||||||
|
|
||||||
.login-tip {
|
.login-tip {
|
||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
}
|
|
||||||
|
|
||||||
.cu-avatar {
|
|
||||||
border: 2px solid #eaeaea;
|
|
||||||
|
|
||||||
.icon {
|
|
||||||
font-size: 40px;
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
.user-info {
|
.cu-avatar {
|
||||||
margin-left: 15px;
|
border: 2px solid #eaeaea;
|
||||||
|
|
||||||
.u_title {
|
.icon {
|
||||||
font-size: 18px;
|
font-size: 40px;
|
||||||
line-height: 30px;
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.user-info {
|
||||||
|
margin-left: 15px;
|
||||||
|
|
||||||
|
.u_title {
|
||||||
|
font-size: 18px;
|
||||||
|
line-height: 30px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.content-section {
|
.content-section {
|
||||||
position: relative;
|
position: relative;
|
||||||
top: -50px;
|
top: -50px;
|
||||||
|
|
||||||
.mine-actions {
|
.mine-actions {
|
||||||
margin: 15px 15px;
|
margin: 15px 15px;
|
||||||
padding: 20px 0px;
|
padding: 20px 0px;
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
background-color: white;
|
background-color: white;
|
||||||
|
|
||||||
.action-item {
|
.action-item {
|
||||||
.icon {
|
.icon {
|
||||||
font-size: 28px;
|
font-size: 28px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.text {
|
.text {
|
||||||
display: block;
|
display: block;
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
margin: 8px 0px;
|
margin: 8px 0px;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<view class="container">
|
<view class="container">
|
||||||
<uni-list>
|
<uni-list>
|
||||||
<uni-list-item showExtraIcon="true" :extraIcon="{type: 'person-filled'}" title="昵称" :rightText="user.nickName" />
|
<uni-list-item showExtraIcon="true" :extraIcon="{type: 'person-filled'}" title="昵称" :rightText="user.userName" />
|
||||||
<uni-list-item showExtraIcon="true" :extraIcon="{type: 'phone-filled'}" title="手机号码" :rightText="user.phonenumber" />
|
<uni-list-item showExtraIcon="true" :extraIcon="{type: 'phone-filled'}" title="手机号码" :rightText="user.phonenumber" />
|
||||||
<uni-list-item showExtraIcon="true" :extraIcon="{type: 'email-filled'}" title="邮箱" :rightText="user.email" />
|
<uni-list-item showExtraIcon="true" :extraIcon="{type: 'email-filled'}" title="邮箱" :rightText="user.email" />
|
||||||
<uni-list-item showExtraIcon="true" :extraIcon="{type: 'auth-filled'}" title="岗位" :rightText="postGroup" />
|
<uni-list-item showExtraIcon="true" :extraIcon="{type: 'auth-filled'}" title="岗位" :rightText="postGroup" />
|
||||||
|
|||||||
88
pages/work/AccountPriceFinallReview/index.vue
Normal file
88
pages/work/AccountPriceFinallReview/index.vue
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
<template>
|
||||||
|
<view class="container">
|
||||||
|
<MBCard>
|
||||||
|
<uni-forms ref="baseForm" :modelValue="queryParams">
|
||||||
|
<uni-forms-item label="大区">
|
||||||
|
<LargeArea v-model="queryParams.bigAreaId" @change="handleQuery"/>
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="地域">
|
||||||
|
<Area v-model="queryParams.deptId" @change="handleQuery"/>
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="商业公司">
|
||||||
|
<BusinessCompany
|
||||||
|
v-model="queryParams.businessName"
|
||||||
|
@change="handleQuery"
|
||||||
|
/>
|
||||||
|
</uni-forms-item>
|
||||||
|
</uni-forms>
|
||||||
|
</MBCard>
|
||||||
|
|
||||||
|
<uni-table ref="table" :loading="loading" emptyText="暂无更多数据" stripe>
|
||||||
|
<uni-tr>
|
||||||
|
<uni-th align="center" width="50">序号</uni-th>
|
||||||
|
<uni-th align="left" width="200">公司名称</uni-th>
|
||||||
|
<uni-th align="left" width="50">地域</uni-th>
|
||||||
|
<uni-th width="100">账期终审</uni-th>
|
||||||
|
<uni-th width="100">额度终审</uni-th>
|
||||||
|
<uni-th width="100">价格终审</uni-th>
|
||||||
|
</uni-tr>
|
||||||
|
<uni-tr v-for="(item, index) in tableData" :key="index">
|
||||||
|
<uni-td align="center">{{ index + 1 }}</uni-td>
|
||||||
|
<uni-td>{{ item.userName }}</uni-td>
|
||||||
|
<uni-td>{{ item.areaName }}</uni-td>
|
||||||
|
<uni-td>
|
||||||
|
<view v-if="item.creditPeriod > 0">
|
||||||
|
<button class="uni-button" size="mini" type="submit">编辑</button>
|
||||||
|
</view>
|
||||||
|
</uni-td>
|
||||||
|
<uni-td>
|
||||||
|
<view v-if="item.creditLimit > 0">
|
||||||
|
<button class="uni-button" size="mini" type="submit">编辑</button>
|
||||||
|
</view>
|
||||||
|
</uni-td>
|
||||||
|
<uni-td>
|
||||||
|
<view v-if="item.price > 0">
|
||||||
|
<button class="uni-button" size="mini" type="submit">编辑</button>
|
||||||
|
</view>
|
||||||
|
</uni-td>
|
||||||
|
</uni-tr>
|
||||||
|
</uni-table>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import {defineOptions, onMounted, ref} from "vue"
|
||||||
|
import Area from "../../../components/Area.vue";
|
||||||
|
import MBCard from "../../../components/MB/MBCard.vue";
|
||||||
|
import UniFormsItem from "../../../uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.vue";
|
||||||
|
import BusinessCompany from "../../../components/BusinessCompany.vue";
|
||||||
|
import UniForms from "../../../uni_modules/uni-forms/components/uni-forms/uni-forms.vue";
|
||||||
|
import LargeArea from "../../../components/LargeArea/LargeArea.vue";
|
||||||
|
import {getPriceFinallReviewList} from "../../../api/AccountPriceFinallReview";
|
||||||
|
|
||||||
|
defineOptions({
|
||||||
|
name: "AccountPriceFinallReview"
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
const loading = ref(true)
|
||||||
|
const queryParams = ref({})
|
||||||
|
const tableData = ref([])
|
||||||
|
const total = ref(0)
|
||||||
|
const paging = ref({
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 100,
|
||||||
|
})
|
||||||
|
|
||||||
|
const handleQuery = async () => {
|
||||||
|
const data = await getPriceFinallReviewList(queryParams.value, paging.value)
|
||||||
|
tableData.value = data.rows
|
||||||
|
total.value = data.total
|
||||||
|
loading.value = false
|
||||||
|
}
|
||||||
|
|
||||||
|
onMounted(async () => {
|
||||||
|
await handleQuery()
|
||||||
|
})
|
||||||
|
</script>
|
||||||
@ -0,0 +1,107 @@
|
|||||||
|
<template>
|
||||||
|
<uni-drawer ref="drawerContainerRef" :width="width" mode="right">
|
||||||
|
|
||||||
|
<uni-nav-bar
|
||||||
|
:border="false"
|
||||||
|
:fixed="true"
|
||||||
|
left-icon="left"
|
||||||
|
status-bar
|
||||||
|
title="账期审核"
|
||||||
|
@clickLeft="hideDrawer"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<uni-collapse ref="collapse">
|
||||||
|
<uni-collapse-item
|
||||||
|
v-for="row in tableData"
|
||||||
|
:key="row.creditHistId"
|
||||||
|
:title="row.shortName"
|
||||||
|
open
|
||||||
|
>
|
||||||
|
<view class="padding">
|
||||||
|
<view class="context">
|
||||||
|
<view class="label">
|
||||||
|
<text>货主:</text>
|
||||||
|
<text>{{ row.companyName }}</text>
|
||||||
|
</view>
|
||||||
|
<view class="label">
|
||||||
|
<text>状态:</text>
|
||||||
|
<text>{{ row.state }}</text>
|
||||||
|
</view>
|
||||||
|
<view class="label">
|
||||||
|
<text>老账期:</text>
|
||||||
|
<text>{{ row.oldCreditPeriod }}</text>
|
||||||
|
</view>
|
||||||
|
<view class="label">
|
||||||
|
<text>新账期:</text>
|
||||||
|
<text>{{ row.creditPeriod }}</text>
|
||||||
|
</view>
|
||||||
|
<view class="label">
|
||||||
|
<text>申请日期:</text>
|
||||||
|
<text>{{ row.addDate }}</text>
|
||||||
|
</view>
|
||||||
|
<view class="label">
|
||||||
|
<text></text>
|
||||||
|
<button class="mini-btn" size="mini" type="primary" @click="handleReview(row)">查看</button>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</uni-collapse-item>
|
||||||
|
</uni-collapse>
|
||||||
|
</uni-drawer>
|
||||||
|
<AccountPeriodReview ref="AccountPeriodReviewRef" @refresh="handleQuery"/>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import {defineExpose, ref} from 'vue'
|
||||||
|
import {getLastPaymentAndQuotaList} from "../../../../api/AccountPricePreliminaryRreview.js";
|
||||||
|
import AccountPeriodReview from "./components/AccountPeriodReview.vue";
|
||||||
|
|
||||||
|
// 账期审核
|
||||||
|
|
||||||
|
defineOptions({
|
||||||
|
name: 'AccountPeriod'
|
||||||
|
})
|
||||||
|
|
||||||
|
const width = ref(document.documentElement.clientWidth || document.body.clientWidth)
|
||||||
|
const id = ref('')
|
||||||
|
const queryParams = ref({})
|
||||||
|
const drawerContainerRef = ref()
|
||||||
|
const AccountPeriodReviewRef = ref()
|
||||||
|
|
||||||
|
const tableData = ref([])
|
||||||
|
const total = ref()
|
||||||
|
const paging = ref({
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 100,
|
||||||
|
})
|
||||||
|
|
||||||
|
const handleQuery = async () => {
|
||||||
|
uni.showLoading({
|
||||||
|
title: '加载中'
|
||||||
|
});
|
||||||
|
const {rows, total:count} = await getLastPaymentAndQuotaList(queryParams.value, paging.value)
|
||||||
|
tableData.value = rows
|
||||||
|
total.value = count
|
||||||
|
uni.hideLoading()
|
||||||
|
}
|
||||||
|
|
||||||
|
const openDrawer = async (item) => {
|
||||||
|
drawerContainerRef.value.open()
|
||||||
|
queryParams.value = {
|
||||||
|
userId: item.userId,
|
||||||
|
type: 0
|
||||||
|
}
|
||||||
|
await handleQuery()
|
||||||
|
}
|
||||||
|
|
||||||
|
defineExpose({openDrawer})
|
||||||
|
|
||||||
|
const hideDrawer = () => {
|
||||||
|
drawerContainerRef.value.close()
|
||||||
|
}
|
||||||
|
|
||||||
|
const handleReview = (data) => {
|
||||||
|
AccountPeriodReviewRef.value.openDrawer(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
@ -0,0 +1,106 @@
|
|||||||
|
<template>
|
||||||
|
<uni-drawer ref="drawerContainerRef" :width="width" mode="right">
|
||||||
|
|
||||||
|
<uni-nav-bar
|
||||||
|
:border="false"
|
||||||
|
:fixed="true"
|
||||||
|
left-icon="left"
|
||||||
|
status-bar
|
||||||
|
title="额度审核"
|
||||||
|
@clickLeft="hideDrawer"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<uni-collapse ref="collapse">
|
||||||
|
<uni-collapse-item
|
||||||
|
v-for="row in tableData"
|
||||||
|
:key="row.creditHistId"
|
||||||
|
:title="row.shortName"
|
||||||
|
open
|
||||||
|
>
|
||||||
|
<view class="padding">
|
||||||
|
<view class="context">
|
||||||
|
<view class="label">
|
||||||
|
<text>货主:</text>
|
||||||
|
<text>{{ row.companyName }}</text>
|
||||||
|
</view>
|
||||||
|
<view class="label">
|
||||||
|
<text>状态:</text>
|
||||||
|
<text>{{ row.state }}</text>
|
||||||
|
</view>
|
||||||
|
<view class="label">
|
||||||
|
<text>老额度(万元) :</text>
|
||||||
|
<text>{{ row.oldCreditLine }}</text>
|
||||||
|
</view>
|
||||||
|
<view class="label">
|
||||||
|
<text>新额度(万元):</text>
|
||||||
|
<text>{{ row.creditLine }}</text>
|
||||||
|
</view>
|
||||||
|
<view class="label">
|
||||||
|
<text>申请日期:</text>
|
||||||
|
<text>{{ row.addDate }}</text>
|
||||||
|
</view>
|
||||||
|
<view class="label">
|
||||||
|
<text></text>
|
||||||
|
<button class="mini-btn" size="mini" type="primary" @click="handleReview(row)">查看</button>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</uni-collapse-item>
|
||||||
|
</uni-collapse>
|
||||||
|
</uni-drawer>
|
||||||
|
<CreditLimitReview ref="CreditLimitReviewRef" @refresh="handleQuery"/>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import {defineExpose, defineOptions, ref} from 'vue'
|
||||||
|
import {getLastPaymentAndQuotaList} from "../../../../api/AccountPricePreliminaryRreview.js";
|
||||||
|
import CreditLimitReview from "./components/CreditLimitReview.vue";
|
||||||
|
|
||||||
|
// 额度审核
|
||||||
|
|
||||||
|
|
||||||
|
defineOptions({
|
||||||
|
name: "CreditLimit"
|
||||||
|
})
|
||||||
|
|
||||||
|
const width = ref(document.documentElement.clientWidth || document.body.clientWidth)
|
||||||
|
const queryParams = ref({})
|
||||||
|
const tableData = ref([])
|
||||||
|
const total = ref()
|
||||||
|
const paging = ref({
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 100,
|
||||||
|
})
|
||||||
|
|
||||||
|
const drawerContainerRef = ref()
|
||||||
|
const CreditLimitReviewRef = ref()
|
||||||
|
|
||||||
|
const handleQuery = async () => {
|
||||||
|
uni.showLoading({
|
||||||
|
title: '加载中'
|
||||||
|
});
|
||||||
|
const {rows, total: count} = await getLastPaymentAndQuotaList(queryParams.value, paging.value)
|
||||||
|
tableData.value = rows
|
||||||
|
total.value = count
|
||||||
|
uni.hideLoading()
|
||||||
|
}
|
||||||
|
|
||||||
|
const openDrawer = async (item) => {
|
||||||
|
drawerContainerRef.value.open()
|
||||||
|
queryParams.value = {
|
||||||
|
userId: item.userId,
|
||||||
|
type: 1
|
||||||
|
}
|
||||||
|
await handleQuery()
|
||||||
|
}
|
||||||
|
|
||||||
|
defineExpose({openDrawer})
|
||||||
|
|
||||||
|
const hideDrawer = () => {
|
||||||
|
drawerContainerRef.value.close()
|
||||||
|
}
|
||||||
|
|
||||||
|
const handleReview = (data) => {
|
||||||
|
CreditLimitReviewRef.value.openDrawer(data)
|
||||||
|
}
|
||||||
|
</script>
|
||||||
115
pages/work/AccountPricePreliminaryRreview/children/Price.vue
Normal file
115
pages/work/AccountPricePreliminaryRreview/children/Price.vue
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
<template>
|
||||||
|
<uni-drawer ref="drawerContainerRef" :width="width" mode="right">
|
||||||
|
|
||||||
|
<uni-nav-bar
|
||||||
|
:border="false"
|
||||||
|
:fixed="true"
|
||||||
|
left-icon="left"
|
||||||
|
status-bar
|
||||||
|
title="价格审核"
|
||||||
|
@clickLeft="hideDrawer"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<uni-collapse ref="collapse">
|
||||||
|
<uni-collapse-item
|
||||||
|
v-for="row in tableData"
|
||||||
|
:key="row.creditHistId"
|
||||||
|
:title="`商品名称: ${row.shortName}`"
|
||||||
|
open
|
||||||
|
>
|
||||||
|
<view class="padding">
|
||||||
|
<view class="context">
|
||||||
|
<view class="label">
|
||||||
|
<text>发货仓库:</text>
|
||||||
|
<text>{{ row.warehouseName }}</text>
|
||||||
|
</view>
|
||||||
|
<view class="label">
|
||||||
|
<text>新考核价(元,含税):</text>
|
||||||
|
<text>{{ row.checkPrice }}</text>
|
||||||
|
</view>
|
||||||
|
<view class="label">
|
||||||
|
<text>新开票价(元,含税):</text>
|
||||||
|
<text>{{ row.invoicePrice }}</text>
|
||||||
|
</view>
|
||||||
|
<view class="label">
|
||||||
|
<text>原考核价(元,无税):</text>
|
||||||
|
<text>{{ row.oldCheckPrice }}</text>
|
||||||
|
</view>
|
||||||
|
<view class="label">
|
||||||
|
<text>原开票价(元,无税):</text>
|
||||||
|
<text>{{ row.oldInvoicePrice }}</text>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
|
||||||
|
<view class="label">
|
||||||
|
<text>状态:</text>
|
||||||
|
<text>{{ row.state }}</text>
|
||||||
|
</view>
|
||||||
|
<view class="label">
|
||||||
|
<text>更新日期:</text>
|
||||||
|
<text>{{ row.updateTime }}</text>
|
||||||
|
</view>
|
||||||
|
<view class="label">
|
||||||
|
<text></text>
|
||||||
|
<button class="mini-btn" size="mini" type="primary" @click="handleReview(row)">查看</button>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</uni-collapse-item>
|
||||||
|
</uni-collapse>
|
||||||
|
</uni-drawer>
|
||||||
|
<PriceReview ref="PriceReviewRef" @refresh="handleQuery"/>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import {defineExpose, defineOptions, ref} from 'vue'
|
||||||
|
import {getPriceChangeReviewList} from '../../../../api/AccountPricePreliminaryRreview.js'
|
||||||
|
import PriceReview from "./components/PriceReview.vue";
|
||||||
|
|
||||||
|
// 价格审核
|
||||||
|
|
||||||
|
defineOptions({
|
||||||
|
name: "Price"
|
||||||
|
})
|
||||||
|
|
||||||
|
const width = ref(document.documentElement.clientWidth || document.body.clientWidth)
|
||||||
|
const queryParams = ref({})
|
||||||
|
const tableData = ref([])
|
||||||
|
const total = ref()
|
||||||
|
const paging = ref({
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 100,
|
||||||
|
})
|
||||||
|
|
||||||
|
const drawerContainerRef = ref()
|
||||||
|
const PriceReviewRef = ref()
|
||||||
|
|
||||||
|
const handleQuery = async () => {
|
||||||
|
uni.showLoading({
|
||||||
|
title: '加载中'
|
||||||
|
});
|
||||||
|
const {rows, total: count} = await getPriceChangeReviewList(queryParams.value, paging.value)
|
||||||
|
tableData.value = rows
|
||||||
|
total.value = count
|
||||||
|
uni.hideLoading()
|
||||||
|
}
|
||||||
|
|
||||||
|
const openDrawer = async (item) => {
|
||||||
|
drawerContainerRef.value.open()
|
||||||
|
queryParams.value = {
|
||||||
|
userId: item.userId,
|
||||||
|
type: 1
|
||||||
|
}
|
||||||
|
await handleQuery()
|
||||||
|
}
|
||||||
|
|
||||||
|
defineExpose({openDrawer})
|
||||||
|
|
||||||
|
const hideDrawer = () => {
|
||||||
|
drawerContainerRef.value.close()
|
||||||
|
}
|
||||||
|
|
||||||
|
const handleReview = (data) => {
|
||||||
|
PriceReviewRef.value.openDrawer(data)
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@ -0,0 +1,154 @@
|
|||||||
|
<template>
|
||||||
|
<uni-drawer ref="drawerContainerRef" :width="width" mode="right">
|
||||||
|
|
||||||
|
<uni-nav-bar
|
||||||
|
:border="false"
|
||||||
|
:fixed="true"
|
||||||
|
left-icon="left"
|
||||||
|
status-bar
|
||||||
|
title="账期审核"
|
||||||
|
@clickLeft="hideDrawer"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<view class="padding">
|
||||||
|
<uni-section :subTitle="queryParams.userName" title="商业公司名称:" type="line"/>
|
||||||
|
<uni-section :subTitle="queryParams.companyName" title="货主:" type="line"/>
|
||||||
|
<uni-section
|
||||||
|
:subTitle="`${queryParams.creditPeriod} - 现有信用账期:${queryParams.oldCreditPeriod}`"
|
||||||
|
:title="`${onCompanySelect(queryParams.companyId)}:`"
|
||||||
|
type="line"
|
||||||
|
/>
|
||||||
|
<uni-section :subTitle="queryParams.remark" title="备注:" type="line"/>
|
||||||
|
<uni-section class="margin-bottom" title="回退原因:" type="line">
|
||||||
|
<uni-easyinput v-model="queryParams.backReasonCredit" placeholder="请输入回退内容"/>
|
||||||
|
</uni-section>
|
||||||
|
|
||||||
|
<view class="flex">
|
||||||
|
<button class="mini-btn" size="mini" type="primary" @click="handleBack">回退</button>
|
||||||
|
<button class="mini-btn" size="mini" type="default" @click="handleSubmit">初审通过</button>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</uni-drawer>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import {defineEmits, defineExpose, ref} from 'vue'
|
||||||
|
import {putBackDataLastPaymentOrQuota} from "../../../../../api/AccountPricePreliminaryRreview";
|
||||||
|
|
||||||
|
// 账期审核
|
||||||
|
|
||||||
|
defineOptions({
|
||||||
|
name: 'AccountPeriodReview'
|
||||||
|
})
|
||||||
|
|
||||||
|
const emit = defineEmits(['refresh'])
|
||||||
|
|
||||||
|
const width = ref(document.documentElement.clientWidth || document.body.clientWidth)
|
||||||
|
const queryParams = ref({})
|
||||||
|
const drawerContainerRef = ref()
|
||||||
|
|
||||||
|
const tableData = ref([])
|
||||||
|
const total = ref(0)
|
||||||
|
const paging = ref({
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 100,
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
// 选择公司后 获取该公司的标题进行显示
|
||||||
|
const onCompanySelect = (type) => {
|
||||||
|
switch (type) {
|
||||||
|
case '1':
|
||||||
|
return 'ZOP信用期限(天)'
|
||||||
|
case '2':
|
||||||
|
return 'GOP信用期限(天)'
|
||||||
|
case '3':
|
||||||
|
return 'LOP信用期限(天)'
|
||||||
|
case '4':
|
||||||
|
return 'HOP信用期限(天)'
|
||||||
|
default:
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const openDrawer = async (data) => {
|
||||||
|
drawerContainerRef.value.open()
|
||||||
|
queryParams.value = data
|
||||||
|
}
|
||||||
|
|
||||||
|
defineExpose({openDrawer})
|
||||||
|
|
||||||
|
const hideDrawer = () => {
|
||||||
|
drawerContainerRef.value.close()
|
||||||
|
}
|
||||||
|
|
||||||
|
const handleBack = () => {
|
||||||
|
if (!queryParams.value.backReasonCredit) {
|
||||||
|
return uni.showToast({
|
||||||
|
title: '请填写回退内容',
|
||||||
|
icon: 'none',
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
uni.showModal({
|
||||||
|
title: '提示',
|
||||||
|
content: '您确定是否要回退记录?',
|
||||||
|
success: async function (res) {
|
||||||
|
if (res.confirm) {
|
||||||
|
|
||||||
|
uni.showLoading({
|
||||||
|
title: '加载中'
|
||||||
|
});
|
||||||
|
|
||||||
|
await putBackDataLastPaymentOrQuota({
|
||||||
|
creditHistId: queryParams.value.creditHistId,
|
||||||
|
});
|
||||||
|
|
||||||
|
uni.showToast({
|
||||||
|
title: '操作成功',
|
||||||
|
icon: 'none',
|
||||||
|
duration: 2000
|
||||||
|
});
|
||||||
|
|
||||||
|
uni.hideLoading()
|
||||||
|
|
||||||
|
hideDrawer()
|
||||||
|
emit('refresh')
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const handleSubmit = () => {
|
||||||
|
uni.showModal({
|
||||||
|
title: '提示',
|
||||||
|
content: '您确认要进行审核通过吗?',
|
||||||
|
success: async function (res) {
|
||||||
|
if (res.confirm) {
|
||||||
|
uni.showLoading({
|
||||||
|
title: '加载中'
|
||||||
|
});
|
||||||
|
|
||||||
|
await directorLastReviewPayment({
|
||||||
|
creditHistId: queryParams.value.creditHistId
|
||||||
|
})
|
||||||
|
|
||||||
|
uni.showToast({
|
||||||
|
title: '操作成功',
|
||||||
|
icon: 'none',
|
||||||
|
duration: 2000
|
||||||
|
});
|
||||||
|
|
||||||
|
uni.hideLoading()
|
||||||
|
|
||||||
|
hideDrawer()
|
||||||
|
emit('refresh')
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@ -0,0 +1,156 @@
|
|||||||
|
<template>
|
||||||
|
<uni-drawer ref="drawerContainerRef" :width="width" mode="right">
|
||||||
|
|
||||||
|
<uni-nav-bar
|
||||||
|
:border="false"
|
||||||
|
:fixed="true"
|
||||||
|
left-icon="left"
|
||||||
|
status-bar
|
||||||
|
title="额度审核"
|
||||||
|
@clickLeft="hideDrawer"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<view class="padding">
|
||||||
|
<uni-section :subTitle="queryParams.userName" title="商业公司名称:" type="line"/>
|
||||||
|
<uni-section :subTitle="queryParams.companyName" title="货主:" type="line"/>
|
||||||
|
<uni-section
|
||||||
|
:subTitle="`${queryParams.creditLine} - 现有信用账期:${queryParams.oldCreditLine || 0}`"
|
||||||
|
:title="`${onCompanySelect(queryParams.companyId)}:`"
|
||||||
|
type="line"
|
||||||
|
/>
|
||||||
|
<uni-section :subTitle="queryParams.remark" title="备注:" type="line"/>
|
||||||
|
<uni-section class="margin-bottom" title="回退原因:" type="line">
|
||||||
|
<uni-easyinput v-model="queryParams.backReasonCredit" placeholder="请输入回退内容"/>
|
||||||
|
</uni-section>
|
||||||
|
|
||||||
|
<view class="flex">
|
||||||
|
<button class="mini-btn" size="mini" type="primary" @click="handleBack">回退</button>
|
||||||
|
<button class="mini-btn" size="mini" type="default" @click="handleSubmit">额度终审</button>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</uni-drawer>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import {defineEmits, defineExpose, defineOptions, ref} from 'vue'
|
||||||
|
import {
|
||||||
|
directorLastReviewQuota,
|
||||||
|
putBackDataLastPaymentOrQuota
|
||||||
|
} from "../../../../../api/AccountPricePreliminaryRreview";
|
||||||
|
|
||||||
|
// 额度审核
|
||||||
|
|
||||||
|
defineOptions({
|
||||||
|
name: 'CreditLimitReview'
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
const emit = defineEmits(['refresh'])
|
||||||
|
|
||||||
|
const width = ref(document.documentElement.clientWidth || document.body.clientWidth)
|
||||||
|
const queryParams = ref({})
|
||||||
|
const drawerContainerRef = ref()
|
||||||
|
|
||||||
|
const tableData = ref([])
|
||||||
|
const total = ref(0)
|
||||||
|
const paging = ref({
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 100,
|
||||||
|
})
|
||||||
|
|
||||||
|
// 选择公司后 获取该公司的标题进行显示
|
||||||
|
const onCompanySelect = (type) => {
|
||||||
|
switch (type) {
|
||||||
|
case '1':
|
||||||
|
return 'ZOP信用期限(万元)'
|
||||||
|
case '2':
|
||||||
|
return 'GOP信用期限(万元)'
|
||||||
|
case '3':
|
||||||
|
return 'LOP信用期限(万元)'
|
||||||
|
case '4':
|
||||||
|
return 'HOP信用期限(万元)'
|
||||||
|
default:
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const openDrawer = (data) => {
|
||||||
|
drawerContainerRef.value.open()
|
||||||
|
queryParams.value = data
|
||||||
|
}
|
||||||
|
defineExpose({openDrawer})
|
||||||
|
|
||||||
|
const hideDrawer = () => {
|
||||||
|
drawerContainerRef.value.close()
|
||||||
|
}
|
||||||
|
|
||||||
|
const handleBack = () => {
|
||||||
|
if (!queryParams.value.backReasonCredit) {
|
||||||
|
return uni.showToast({
|
||||||
|
title: '请填写回退内容',
|
||||||
|
icon: 'none',
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
uni.showModal({
|
||||||
|
title: '提示',
|
||||||
|
content: '您确定是否要回退记录?',
|
||||||
|
success: async function (res) {
|
||||||
|
if (res.confirm) {
|
||||||
|
|
||||||
|
uni.showLoading({
|
||||||
|
title: '加载中'
|
||||||
|
});
|
||||||
|
|
||||||
|
await putBackDataLastPaymentOrQuota({
|
||||||
|
creditHistId: queryParams.value.creditHistId,
|
||||||
|
});
|
||||||
|
|
||||||
|
uni.showToast({
|
||||||
|
title: '操作成功',
|
||||||
|
icon: 'none',
|
||||||
|
duration: 2000
|
||||||
|
});
|
||||||
|
|
||||||
|
uni.hideLoading()
|
||||||
|
|
||||||
|
hideDrawer()
|
||||||
|
emit('refresh')
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const handleSubmit = () => {
|
||||||
|
uni.showModal({
|
||||||
|
title: '提示',
|
||||||
|
content: '您确认要进行审核通过吗?',
|
||||||
|
success: async function (res) {
|
||||||
|
if (res.confirm) {
|
||||||
|
uni.showLoading({
|
||||||
|
title: '加载中'
|
||||||
|
});
|
||||||
|
|
||||||
|
await directorLastReviewQuota({
|
||||||
|
creditHistId: queryParams.value.creditHistId
|
||||||
|
})
|
||||||
|
|
||||||
|
uni.showToast({
|
||||||
|
title: '操作成功',
|
||||||
|
icon: 'none',
|
||||||
|
duration: 2000
|
||||||
|
});
|
||||||
|
|
||||||
|
uni.hideLoading()
|
||||||
|
|
||||||
|
hideDrawer()
|
||||||
|
emit('refresh')
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@ -0,0 +1,169 @@
|
|||||||
|
<template>
|
||||||
|
<uni-drawer ref="drawerContainerRef" :width="width" mode="right">
|
||||||
|
|
||||||
|
<uni-nav-bar
|
||||||
|
:border="false"
|
||||||
|
:fixed="true"
|
||||||
|
left-icon="left"
|
||||||
|
status-bar
|
||||||
|
title="价格审核"
|
||||||
|
@clickLeft="hideDrawer"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<view class="padding">
|
||||||
|
<uni-section :subTitle="queryParams.cbusinessname" title="商业公司名称:" type="line"/>
|
||||||
|
<uni-section :subTitle="queryParams.goodsName" title="商品:" type="line"/>
|
||||||
|
<uni-section :subTitle="queryParams.warehouseName" title="发货仓库:" type="line"/>
|
||||||
|
<uni-section :subTitle="queryParams.execDate" title="新价格执行日期:" type="line"/>
|
||||||
|
<uni-section :subTitle="`${queryParams.checkPrice} - 原考核价(元,含税):${queryParams.oldCheckPrice ?? 0}`"
|
||||||
|
title="考核价(元,含税):" type="line"/>
|
||||||
|
<uni-section :subTitle="`${queryParams.invoicePrice} - 原销售价(元,含税):${queryParams.oldInvoicePrice ?? 0}`"
|
||||||
|
title="销售价(元,含税):" type="line"/>
|
||||||
|
<uni-section :subTitle="`${queryParams.middlePrice} - 原中标价(元,含税):${queryParams.oldMiddlePrice ?? 0}`"
|
||||||
|
title="中标价(元,含税):" type="line"/>
|
||||||
|
<uni-section :subTitle="queryParams.taxRate" title="税率:" type="line"/>
|
||||||
|
<uni-section :subTitle="queryParams.taxLessPrice" title="销售价(元,无税):" type="line"/>
|
||||||
|
<uni-section :subTitle="queryParams.remark" title="备注:" type="line"/>
|
||||||
|
|
||||||
|
<uni-section class="margin-bottom" title="回退原因:" type="line">
|
||||||
|
<uni-easyinput v-model="queryParams.backReasonCredit" placeholder="请输入回退内容"/>
|
||||||
|
</uni-section>
|
||||||
|
|
||||||
|
<view class="flex">
|
||||||
|
<button class="mini-btn" size="mini" type="primary" @click="handleBack">回退</button>
|
||||||
|
<button class="mini-btn" size="mini" type="default" @click="handleSubmit">额度终审</button>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</uni-drawer>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import {defineEmits, defineExpose, defineOptions, ref} from 'vue'
|
||||||
|
import {
|
||||||
|
directorLastReviewQuota,
|
||||||
|
directorReviewPrice,
|
||||||
|
putBackDataLastPaymentOrQuota,
|
||||||
|
putBackDataPrice
|
||||||
|
} from "../../../../../api/AccountPricePreliminaryRreview";
|
||||||
|
|
||||||
|
// 价格审核
|
||||||
|
|
||||||
|
defineOptions({
|
||||||
|
name: 'PriceReview'
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
const emit = defineEmits(['refresh'])
|
||||||
|
|
||||||
|
const width = ref(document.documentElement.clientWidth || document.body.clientWidth)
|
||||||
|
const queryParams = ref({})
|
||||||
|
const drawerContainerRef = ref()
|
||||||
|
|
||||||
|
const tableData = ref([])
|
||||||
|
const total = ref(0)
|
||||||
|
const paging = ref({
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 100,
|
||||||
|
})
|
||||||
|
|
||||||
|
// 选择公司后 获取该公司的标题进行显示
|
||||||
|
const onCompanySelect = (type) => {
|
||||||
|
switch (type) {
|
||||||
|
case '1':
|
||||||
|
return 'ZOP信用期限(万元)'
|
||||||
|
case '2':
|
||||||
|
return 'GOP信用期限(万元)'
|
||||||
|
case '3':
|
||||||
|
return 'LOP信用期限(万元)'
|
||||||
|
case '4':
|
||||||
|
return 'HOP信用期限(万元)'
|
||||||
|
default:
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const openDrawer = (data) => {
|
||||||
|
drawerContainerRef.value.open()
|
||||||
|
queryParams.value = {
|
||||||
|
...data,
|
||||||
|
cbusinessname: data.userName
|
||||||
|
}
|
||||||
|
}
|
||||||
|
defineExpose({openDrawer})
|
||||||
|
|
||||||
|
const hideDrawer = () => {
|
||||||
|
drawerContainerRef.value.close()
|
||||||
|
}
|
||||||
|
|
||||||
|
const handleBack = () => {
|
||||||
|
if (!queryParams.value.backReasonCredit) {
|
||||||
|
return uni.showToast({
|
||||||
|
title: '请填写回退内容',
|
||||||
|
icon: 'none',
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
uni.showModal({
|
||||||
|
title: '提示',
|
||||||
|
content: '您确定是否要回退记录?',
|
||||||
|
success: async function (res) {
|
||||||
|
if (res.confirm) {
|
||||||
|
|
||||||
|
uni.showLoading({
|
||||||
|
title: '加载中'
|
||||||
|
});
|
||||||
|
|
||||||
|
await putBackDataPrice({
|
||||||
|
backReasonCredit: queryParams.value.backReasonCredit,
|
||||||
|
businessGoodsHistId: queryParams.value.businessGoodsHistId,
|
||||||
|
});
|
||||||
|
|
||||||
|
uni.showToast({
|
||||||
|
title: '操作成功',
|
||||||
|
icon: 'none',
|
||||||
|
duration: 2000
|
||||||
|
});
|
||||||
|
|
||||||
|
uni.hideLoading()
|
||||||
|
|
||||||
|
hideDrawer()
|
||||||
|
emit('refresh')
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
const handleSubmit = () => {
|
||||||
|
uni.showModal({
|
||||||
|
title: '提示',
|
||||||
|
content: '您确认要进行审核通过吗?',
|
||||||
|
success: async function (res) {
|
||||||
|
if (res.confirm) {
|
||||||
|
uni.showLoading({
|
||||||
|
title: '加载中'
|
||||||
|
});
|
||||||
|
|
||||||
|
await directorReviewPrice({
|
||||||
|
businessGoodsHistId: queryParams.value.businessGoodsHistId
|
||||||
|
})
|
||||||
|
|
||||||
|
uni.showToast({
|
||||||
|
title: '操作成功',
|
||||||
|
icon: 'none',
|
||||||
|
duration: 2000
|
||||||
|
});
|
||||||
|
|
||||||
|
uni.hideLoading()
|
||||||
|
|
||||||
|
hideDrawer()
|
||||||
|
emit('refresh')
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
</script>
|
||||||
129
pages/work/AccountPricePreliminaryRreview/index.vue
Normal file
129
pages/work/AccountPricePreliminaryRreview/index.vue
Normal file
@ -0,0 +1,129 @@
|
|||||||
|
<template>
|
||||||
|
<view class="container">
|
||||||
|
<MBCard>
|
||||||
|
<uni-forms ref="baseForm" :modelValue="queryParams">
|
||||||
|
<uni-forms-item label="地域">
|
||||||
|
<Area v-model="queryParams.deptId" @change="handleQuery"/>
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="商业公司">
|
||||||
|
<BusinessCompany
|
||||||
|
v-model="queryParams.businessName"
|
||||||
|
@change="handleQuery"
|
||||||
|
/>
|
||||||
|
</uni-forms-item>
|
||||||
|
</uni-forms>
|
||||||
|
</MBCard>
|
||||||
|
|
||||||
|
<uni-table ref="table" :loading="loading" emptyText="暂无更多数据" stripe>
|
||||||
|
<uni-tr>
|
||||||
|
<uni-th align="center" width="50">序号</uni-th>
|
||||||
|
<uni-th align="left" width="180">公司名称</uni-th>
|
||||||
|
<uni-th align="left" width="50">地域</uni-th>
|
||||||
|
<uni-th width="100">账期审核</uni-th>
|
||||||
|
<uni-th width="100">额度审核</uni-th>
|
||||||
|
<uni-th width="100">价格审核</uni-th>
|
||||||
|
</uni-tr>
|
||||||
|
<uni-tr v-for="(item, index) in tableData" :key="index">
|
||||||
|
<uni-td>{{ index + 1 }}</uni-td>
|
||||||
|
<uni-td>{{ item.userName }}</uni-td>
|
||||||
|
<uni-td>{{ item.areaName }}</uni-td>
|
||||||
|
<uni-td>
|
||||||
|
<view v-if="item.zhangqi > 0">
|
||||||
|
<button
|
||||||
|
class="uni-button"
|
||||||
|
size="mini"
|
||||||
|
type="submit"
|
||||||
|
@click="handleShowAccountPeriod(item)"
|
||||||
|
>编辑
|
||||||
|
</button>
|
||||||
|
</view>
|
||||||
|
</uni-td>
|
||||||
|
<uni-td>
|
||||||
|
<view v-if="item.edu > 0">
|
||||||
|
<button
|
||||||
|
class="uni-button"
|
||||||
|
size="mini"
|
||||||
|
type="submit"
|
||||||
|
@click="handleShowCreditLimit(item)"
|
||||||
|
>编辑
|
||||||
|
</button>
|
||||||
|
</view>
|
||||||
|
</uni-td>
|
||||||
|
<uni-td>
|
||||||
|
<view v-if="item.bg > 0">
|
||||||
|
<button
|
||||||
|
class="uni-button"
|
||||||
|
size="mini"
|
||||||
|
type="submit"
|
||||||
|
@click="handleShowPrice(item)"
|
||||||
|
>编辑
|
||||||
|
</button>
|
||||||
|
</view>
|
||||||
|
</uni-td>
|
||||||
|
</uni-tr>
|
||||||
|
</uni-table>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- 账期审核 -->
|
||||||
|
<AccountPeriod ref="AccountPeriodRef"/>
|
||||||
|
<!-- 额度审核 -->
|
||||||
|
<CreditLimit ref="CreditLimitRef"/>
|
||||||
|
<!-- 价格审核 -->
|
||||||
|
<Price ref="PriceRef"/>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import {defineOptions, onMounted, ref} from "vue"
|
||||||
|
import Area from "../../../components/Area.vue";
|
||||||
|
import MBCard from "../../../components/MB/MBCard.vue";
|
||||||
|
import UniFormsItem from "../../../uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.vue";
|
||||||
|
import BusinessCompany from "../../../components/BusinessCompany.vue";
|
||||||
|
import UniForms from "../../../uni_modules/uni-forms/components/uni-forms/uni-forms.vue";
|
||||||
|
import {getPricePreliminaryReviewList} from "../../../api/AccountPricePreliminaryRreview";
|
||||||
|
import AccountPeriod from "./children/AccountPeriod.vue";
|
||||||
|
import CreditLimit from "./children/CreditLimit.vue";
|
||||||
|
import Price from "./children/Price.vue";
|
||||||
|
|
||||||
|
defineOptions({
|
||||||
|
name: "AccountPricePreliminaryRreview"
|
||||||
|
})
|
||||||
|
|
||||||
|
const loading = ref(true)
|
||||||
|
const queryParams = ref({})
|
||||||
|
const tableData = ref([])
|
||||||
|
const total = ref(0)
|
||||||
|
const paging = ref({
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 100,
|
||||||
|
})
|
||||||
|
|
||||||
|
const AccountPeriodRef = ref()
|
||||||
|
const CreditLimitRef = ref()
|
||||||
|
const PriceRef = ref()
|
||||||
|
|
||||||
|
const handleQuery = async () => {
|
||||||
|
const data = await getPricePreliminaryReviewList(queryParams.value, paging.value)
|
||||||
|
tableData.value = data.rows
|
||||||
|
total.value = data.total
|
||||||
|
loading.value = false
|
||||||
|
}
|
||||||
|
|
||||||
|
onMounted(async () => {
|
||||||
|
await handleQuery()
|
||||||
|
})
|
||||||
|
|
||||||
|
const handleShowAccountPeriod = (item) => {
|
||||||
|
AccountPeriodRef.value.openDrawer(item)
|
||||||
|
}
|
||||||
|
|
||||||
|
const handleShowCreditLimit = (item) => {
|
||||||
|
CreditLimitRef.value.openDrawer(item)
|
||||||
|
}
|
||||||
|
|
||||||
|
const handleShowPrice = (item) => {
|
||||||
|
PriceRef.value.openDrawer(item)
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@ -28,15 +28,12 @@
|
|||||||
@confirm="getTableData"/>
|
@confirm="getTableData"/>
|
||||||
</uni-forms-item>
|
</uni-forms-item>
|
||||||
<uni-forms-item label="商业公司" v-if="userType === '00'" >
|
<uni-forms-item label="商业公司" v-if="userType === '00'" >
|
||||||
<uni-data-select
|
<!-- <input-->
|
||||||
v-model="queryParams.userid"
|
<!-- v-model="queryParams.businessCompany"-->
|
||||||
placeholder="请输入商业公司"
|
<!-- class="uni-input custom-input"-->
|
||||||
:clear="true"
|
<!-- placeholder="请输入商业公司"-->
|
||||||
:localdata="businessCompanyList"
|
<!-- @confirm="getTableData"/>-->
|
||||||
text-field="value"
|
<BusinessCompany v-model="queryParams.businessCompany" @change="getTableData"/>
|
||||||
value-field="label"
|
|
||||||
@change="getTableData"
|
|
||||||
></uni-data-select>
|
|
||||||
</uni-forms-item>
|
</uni-forms-item>
|
||||||
</uni-forms>
|
</uni-forms>
|
||||||
<button
|
<button
|
||||||
@ -50,7 +47,7 @@
|
|||||||
|
|
||||||
<MBLoading v-if="loading"/>
|
<MBLoading v-if="loading"/>
|
||||||
<view v-else>
|
<view v-else>
|
||||||
<ListItem :items="tableData" @refresh="getTableData" :order-type-list="orderTypeList" :user-type="userType" />
|
<ListItem :items="tableData" @refresh="getTableData" />
|
||||||
<MBPagination
|
<MBPagination
|
||||||
v-if="total > 0"
|
v-if="total > 0"
|
||||||
v-model:limit="paging.pageSize"
|
v-model:limit="paging.pageSize"
|
||||||
@ -63,7 +60,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import {listproductList, listsalemain,getBusinessList} from "../../../api/orderManager/index.js"
|
import {listproductList, listsalemain} from "../../../api/orderManager/index.js"
|
||||||
import {computed, getCurrentInstance, onMounted, ref} from "vue"
|
import {computed, getCurrentInstance, onMounted, ref} from "vue"
|
||||||
import {getDicts} from "../../../api/system/dict/data.js"
|
import {getDicts} from "../../../api/system/dict/data.js"
|
||||||
import {useOrderManagerStore} from "../../../store/modules/orderManager.js"
|
import {useOrderManagerStore} from "../../../store/modules/orderManager.js"
|
||||||
@ -73,6 +70,7 @@ import MBPagination from "../../../components/MB/MBPagination.vue";
|
|||||||
import MBLoading from "../../../components/MB/MBLoading.vue";
|
import MBLoading from "../../../components/MB/MBLoading.vue";
|
||||||
import ListItem from "./ListItem.vue";
|
import ListItem from "./ListItem.vue";
|
||||||
import { getUserProfile } from "@/api/system/user"
|
import { getUserProfile } from "@/api/system/user"
|
||||||
|
import BusinessCompany from "../../../components/BusinessCompany.vue";
|
||||||
|
|
||||||
|
|
||||||
const userType = ref()
|
const userType = ref()
|
||||||
@ -104,7 +102,7 @@ const queryParams = ref({
|
|||||||
|
|
||||||
const stateList = ref([])
|
const stateList = ref([])
|
||||||
const companyOptions = ref([])
|
const companyOptions = ref([])
|
||||||
const businessCompanyList = ref([])
|
|
||||||
// 合同数据
|
// 合同数据
|
||||||
const tableData = ref([])
|
const tableData = ref([])
|
||||||
|
|
||||||
@ -114,7 +112,6 @@ onMounted(async () => {
|
|||||||
loading.value = true
|
loading.value = true
|
||||||
await getDictData()
|
await getDictData()
|
||||||
await getDeptLists()
|
await getDeptLists()
|
||||||
await getBussinessLists()
|
|
||||||
await getUser()
|
await getUser()
|
||||||
await getTableData()
|
await getTableData()
|
||||||
} finally {
|
} finally {
|
||||||
@ -166,7 +163,7 @@ const getTableData = async () => {
|
|||||||
loading.value = false
|
loading.value = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 获取货主
|
|
||||||
const getDeptLists = async () => {
|
const getDeptLists = async () => {
|
||||||
try {
|
try {
|
||||||
const res = await listproductList()
|
const res = await listproductList()
|
||||||
@ -180,38 +177,7 @@ const getDeptLists = async () => {
|
|||||||
console.error('获取部门列表失败:', error)
|
console.error('获取部门列表失败:', error)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 获取所有商业公司
|
|
||||||
const getBussinessLists = async () => {
|
|
||||||
try {
|
|
||||||
const res = await getBusinessList({
|
|
||||||
isUnit: 0,
|
|
||||||
queryParam:{
|
|
||||||
areaId: 0,
|
|
||||||
}
|
|
||||||
})
|
|
||||||
businessCompanyList.value = res.data.map(item => {
|
|
||||||
return {
|
|
||||||
value: item.userid,
|
|
||||||
text: item.businessname
|
|
||||||
}
|
|
||||||
})
|
|
||||||
} catch (error) {
|
|
||||||
console.error('获取商业公司列表失败:', error)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// 添加一个新变量来存储选中的文本
|
|
||||||
const selectedCompanyText = ref('')
|
|
||||||
|
|
||||||
// 处理公司选择
|
|
||||||
const handleCompanySelect = (text) => {
|
|
||||||
selectedCompanyText.value = text
|
|
||||||
|
|
||||||
// 找到对应的公司ID
|
|
||||||
const company = businessCompanyList.value.find(item => item.text === text)
|
|
||||||
queryParams.value.userid = company ? company.value : ''
|
|
||||||
|
|
||||||
getTableData()
|
|
||||||
}
|
|
||||||
// 筛选合同
|
// 筛选合同
|
||||||
function filtertableData(e) {
|
function filtertableData(e) {
|
||||||
console.log("筛选条件变化:", e)
|
console.log("筛选条件变化:", e)
|
||||||
|
|||||||
63
pages/work/OrderSearchQuery/ListItem.vue
Normal file
63
pages/work/OrderSearchQuery/ListItem.vue
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
<template>
|
||||||
|
<uni-card
|
||||||
|
v-for="(item,index) in items"
|
||||||
|
:key="item.saleid"
|
||||||
|
:class="index % 2 === 0 ? 'card-even' : 'card-odd'"
|
||||||
|
:extra="item.contractcode"
|
||||||
|
:title="item.user_name"
|
||||||
|
style="margin: 0;margin-bottom: 20px"
|
||||||
|
@click="handleDetail(item)"
|
||||||
|
>
|
||||||
|
<view class="context">
|
||||||
|
<view class="label">
|
||||||
|
<text>货主:</text>
|
||||||
|
<text>{{ item.companyname }}</text>
|
||||||
|
</view>
|
||||||
|
<view class="label">
|
||||||
|
<text>发货仓库:</text>
|
||||||
|
<text>{{ item.warehousename }}</text>
|
||||||
|
</view>
|
||||||
|
<view class="label">
|
||||||
|
<text>订单金额:</text>
|
||||||
|
<text>{{ formatPrice(item.contractmoney) }}</text>
|
||||||
|
</view>
|
||||||
|
<view class="label">
|
||||||
|
<text>补差金额:</text>
|
||||||
|
<text>{{ formatPrice(item.piaokou) }}</text>
|
||||||
|
</view>
|
||||||
|
<view class="label">
|
||||||
|
<text>制单日期:</text>
|
||||||
|
<text>{{ item.addDate }}</text>
|
||||||
|
</view>
|
||||||
|
<view class="label">
|
||||||
|
<text>执行日期:</text>
|
||||||
|
<text>{{ item.execDate }}</text>
|
||||||
|
</view>
|
||||||
|
<view class="label">
|
||||||
|
<text>支付方式:</text>
|
||||||
|
<text>{{ item.ispaynow }}</text>
|
||||||
|
</view>
|
||||||
|
<view class="label">
|
||||||
|
<text>状态:</text>
|
||||||
|
<text>{{ item.stateText }}</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</uni-card>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import {defineOptions, defineProps, getCurrentInstance} from 'vue'
|
||||||
|
import UniCard from "../../../uni_modules/uni-card/components/uni-card/uni-card.vue";
|
||||||
|
import {formatPrice} from "../../../utils/utils";
|
||||||
|
|
||||||
|
defineOptions({
|
||||||
|
name: "ListItem"
|
||||||
|
})
|
||||||
|
|
||||||
|
const {proxy} = getCurrentInstance()
|
||||||
|
const props = defineProps(['items'])
|
||||||
|
const handleDetail = (raw) => {
|
||||||
|
// proxy.$tab.navigateTo(`/pages/work/FinancialApproval/OrderDetail?id=${raw.saleid}`)
|
||||||
|
}
|
||||||
|
</script>
|
||||||
81
pages/work/OrderSearchQuery/index.vue
Normal file
81
pages/work/OrderSearchQuery/index.vue
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
<template>
|
||||||
|
<view class="container">
|
||||||
|
<MBCard>
|
||||||
|
<uni-forms ref="baseForm" :modelValue="queryParams">
|
||||||
|
<uni-forms-item label="合同编号">
|
||||||
|
<uni-easyinput
|
||||||
|
v-model="queryParams.contractCode"
|
||||||
|
errorMessage
|
||||||
|
placeholder="请输入合同编号"
|
||||||
|
trim="all"
|
||||||
|
@input="handleQuery"
|
||||||
|
/>
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="地域">
|
||||||
|
<Area v-model="queryParams.areaId" @change="handleQuery"/>
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="商业公司">
|
||||||
|
<BusinessCompany v-model="queryParams.params.userId" :areaId="queryParams.areaId"
|
||||||
|
@change="handleQuery"/>
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="货主">
|
||||||
|
<ProductionUnit v-model="queryParams.companyId" @change="handleQuery"/>
|
||||||
|
</uni-forms-item>
|
||||||
|
</uni-forms>
|
||||||
|
</MBCard>
|
||||||
|
|
||||||
|
|
||||||
|
<MBLoading v-if="loading"/>
|
||||||
|
<view v-else>
|
||||||
|
<ListItem v-if="tableData.length > 0" :items="tableData"/>
|
||||||
|
<MBPagination
|
||||||
|
v-if="total > 0"
|
||||||
|
v-model:limit="paging.pageSize"
|
||||||
|
v-model:page="paging.pageNum"
|
||||||
|
:total="total"
|
||||||
|
@pagination="handleQuery"
|
||||||
|
/>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import MBCard from "../../../components/MB/MBCard.vue";
|
||||||
|
import ProductionUnit from "../../../components/ProductionUnit/ProductionUnit.vue";
|
||||||
|
import UniForms from "../../../uni_modules/uni-forms/components/uni-forms/uni-forms.vue";
|
||||||
|
import UniFormsItem from "../../../uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.vue";
|
||||||
|
import {onMounted, ref} from 'vue'
|
||||||
|
import BusinessCompany from "../../../components/BusinessCompany.vue";
|
||||||
|
import Area from "../../../components/Area.vue";
|
||||||
|
import MBLoading from "../../../components/MB/MBLoading.vue";
|
||||||
|
import MBPagination from "../../../components/MB/MBPagination.vue";
|
||||||
|
import ListItem from "./ListItem.vue";
|
||||||
|
import {getReportOrderQuery} from "../../../api/order";
|
||||||
|
|
||||||
|
const queryParams = ref({
|
||||||
|
params: {}
|
||||||
|
})
|
||||||
|
|
||||||
|
const loading = ref(true)
|
||||||
|
const total = ref(0)
|
||||||
|
const paging = ref({
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 20,
|
||||||
|
isAsc: 'descending',
|
||||||
|
orderByColumn: 'adddate'
|
||||||
|
})
|
||||||
|
const tableData = ref([])
|
||||||
|
|
||||||
|
const handleQuery = async () => {
|
||||||
|
loading.value = true
|
||||||
|
const data = await getReportOrderQuery(queryParams.value, paging.value)
|
||||||
|
total.value = data.total
|
||||||
|
tableData.value = data.rows
|
||||||
|
loading.value = false
|
||||||
|
}
|
||||||
|
|
||||||
|
onMounted(async () => {
|
||||||
|
await handleQuery()
|
||||||
|
})
|
||||||
|
|
||||||
|
</script>
|
||||||
@ -39,6 +39,29 @@
|
|||||||
<text class="text">商务审批</text>
|
<text class="text">商务审批</text>
|
||||||
</view>
|
</view>
|
||||||
</uni-grid-item>
|
</uni-grid-item>
|
||||||
|
<uni-grid-item @click="gotoOrderSearchQuery">
|
||||||
|
<view class="grid-item-box">
|
||||||
|
<uni-icons size="30" type="person-filled"></uni-icons>
|
||||||
|
<text class="text">订单综合查询</text>
|
||||||
|
</view>
|
||||||
|
</uni-grid-item>
|
||||||
|
</uni-grid>
|
||||||
|
</view>
|
||||||
|
<uni-section title="开户管理" type="line" />
|
||||||
|
<view class="grid-body">
|
||||||
|
<uni-grid :column="4" :showBorder="false" @change="changeGrid">
|
||||||
|
<uni-grid-item @click="navigateTo('/pages/work/AccountPricePreliminaryRreview/index')">
|
||||||
|
<view class="grid-item-box">
|
||||||
|
<uni-icons size="30" type="person-filled"></uni-icons>
|
||||||
|
<text class="text">账期价格初审</text>
|
||||||
|
</view>
|
||||||
|
</uni-grid-item>
|
||||||
|
<uni-grid-item @click="navigateTo('/pages/work/AccountPriceFinallReview/index')">
|
||||||
|
<view class="grid-item-box">
|
||||||
|
<uni-icons size="30" type="person-filled"></uni-icons>
|
||||||
|
<text class="text">账期价格复审</text>
|
||||||
|
</view>
|
||||||
|
</uni-grid-item>
|
||||||
</uni-grid>
|
</uni-grid>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
@ -100,6 +123,7 @@
|
|||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import {getCurrentInstance, ref} from "vue"
|
import {getCurrentInstance, ref} from "vue"
|
||||||
|
import {navigateTo} from "../../utils/utils";
|
||||||
|
|
||||||
const {proxy} = getCurrentInstance()
|
const {proxy} = getCurrentInstance()
|
||||||
const current = ref(0)
|
const current = ref(0)
|
||||||
@ -143,6 +167,12 @@ const gotoOrderManager = () => {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const gotoOrderSearchQuery = () => {
|
||||||
|
uni.navigateTo({
|
||||||
|
url: '/pages/work/OrderSearchQuery/index'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 79 KiB |
BIN
static/images/profile.png
Normal file
BIN
static/images/profile.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 52 KiB |
@ -1,117 +1,125 @@
|
|||||||
import { defineStore } from 'pinia'
|
import {defineStore} from 'pinia'
|
||||||
import { ref } from 'vue'
|
import {ref} from 'vue'
|
||||||
import config from '@/config'
|
import config from '@/config'
|
||||||
import storage from '@/utils/storage'
|
import storage from '@/utils/storage'
|
||||||
import constant from '@/utils/constant'
|
import constant from '@/utils/constant'
|
||||||
import { isHttp, isEmpty } from "@/utils/validate"
|
import {isEmpty, isHttp} from "@/utils/validate"
|
||||||
import { getInfo, login, logout } from '@/api/login'
|
import {getInfo, login, logout} from '@/api/login'
|
||||||
import { getToken, removeToken, setToken } from '@/utils/auth'
|
import {getToken, removeToken, setToken} from '@/utils/auth'
|
||||||
import defAva from '@/static/images/profile.jpg'
|
import defAva from '@/static/images/profile.png'
|
||||||
|
|
||||||
const baseUrl = config.baseUrl
|
const baseUrl = config.baseUrl
|
||||||
|
|
||||||
export const useUserStore = defineStore('user', () => {
|
export const useUserStore = defineStore('user', () => {
|
||||||
const token = ref(getToken())
|
const token = ref(getToken())
|
||||||
const id = ref(storage.get(constant.id))
|
const id = ref(storage.get(constant.id))
|
||||||
const name = ref(storage.get(constant.name))
|
const name = ref(storage.get(constant.name))
|
||||||
const avatar = ref(storage.get(constant.avatar))
|
const avatar = ref(storage.get(constant.avatar))
|
||||||
const roles = ref(storage.get(constant.roles))
|
const roles = ref(storage.get(constant.roles))
|
||||||
const permissions = ref(storage.get(constant.permissions))
|
const permissions = ref(storage.get(constant.permissions))
|
||||||
|
const userInfo = ref(storage.get(constant.userInfo))
|
||||||
|
|
||||||
const SET_TOKEN = (val) => {
|
const SET_TOKEN = (val) => {
|
||||||
token.value = val
|
token.value = val
|
||||||
}
|
}
|
||||||
const SET_ID = (val) => {
|
const SET_ID = (val) => {
|
||||||
id.value = val
|
id.value = val
|
||||||
storage.set(constant.id, val)
|
storage.set(constant.id, val)
|
||||||
}
|
}
|
||||||
const SET_NAME = (val) => {
|
const SET_NAME = (val) => {
|
||||||
name.value = val
|
name.value = val
|
||||||
storage.set(constant.name, val)
|
storage.set(constant.name, val)
|
||||||
}
|
}
|
||||||
const SET_AVATAR = (val) => {
|
const SET_AVATAR = (val) => {
|
||||||
avatar.value = val
|
avatar.value = val
|
||||||
storage.set(constant.avatar, val)
|
storage.set(constant.avatar, val)
|
||||||
}
|
}
|
||||||
const SET_ROLES = (val) => {
|
const SET_ROLES = (val) => {
|
||||||
roles.value = val
|
roles.value = val
|
||||||
storage.set(constant.roles, val)
|
storage.set(constant.roles, val)
|
||||||
}
|
}
|
||||||
const SET_PERMISSIONS = (val) => {
|
const SET_PERMISSIONS = (val) => {
|
||||||
permissions.value = val
|
permissions.value = val
|
||||||
storage.set(constant.permissions, val)
|
storage.set(constant.permissions, val)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 登录
|
const SET_USER_INFO = (val) => {
|
||||||
const loginAction = (userInfo) => {
|
userInfo.value = val
|
||||||
const username = userInfo.username.trim()
|
storage.set(constant.userInfo, val)
|
||||||
const password = userInfo.password
|
}
|
||||||
const code = userInfo.code
|
|
||||||
const uuid = userInfo.uuid
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
login(username, password, code, uuid).then(res => {
|
|
||||||
setToken(res.token)
|
|
||||||
SET_TOKEN(res.token)
|
|
||||||
resolve()
|
|
||||||
}).catch(error => {
|
|
||||||
reject(error)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获取用户信息
|
// 登录
|
||||||
const getInfoAction = () => {
|
const loginAction = (userInfo) => {
|
||||||
return new Promise((resolve, reject) => {
|
const username = userInfo.username.trim()
|
||||||
getInfo().then(res => {
|
const password = userInfo.password
|
||||||
const user = res.user
|
const code = userInfo.code
|
||||||
let avatar = user.avatar || ""
|
const uuid = userInfo.uuid
|
||||||
if (!isHttp(avatar)) {
|
return new Promise((resolve, reject) => {
|
||||||
avatar = (isEmpty(avatar)) ? defAva : baseUrl + avatar
|
login(username, password, code, uuid).then(res => {
|
||||||
}
|
setToken(res.token)
|
||||||
const userid = (isEmpty(user) || isEmpty(user.userId)) ? "" : user.userId
|
SET_TOKEN(res.token)
|
||||||
const username = (isEmpty(user) || isEmpty(user.userName)) ? "" : user.userName
|
resolve()
|
||||||
if (res.roles && res.roles.length > 0) {
|
}).catch(error => {
|
||||||
SET_ROLES(res.roles)
|
reject(error)
|
||||||
SET_PERMISSIONS(res.permissions)
|
})
|
||||||
} else {
|
})
|
||||||
SET_ROLES(['ROLE_DEFAULT'])
|
}
|
||||||
}
|
|
||||||
SET_ID(userid)
|
|
||||||
SET_NAME(username)
|
|
||||||
SET_AVATAR(avatar)
|
|
||||||
resolve(res)
|
|
||||||
}).catch(error => {
|
|
||||||
reject(error)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// 退出系统
|
// 获取用户信息
|
||||||
const logOutAction = () => {
|
const getInfoAction = () => {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
logout(token.value).then(() => {
|
getInfo().then(res => {
|
||||||
SET_TOKEN('')
|
const user = res.user
|
||||||
SET_ROLES([])
|
let avatar = user.avatar || ""
|
||||||
SET_PERMISSIONS([])
|
if (!isHttp(avatar)) {
|
||||||
removeToken()
|
avatar = (isEmpty(avatar)) ? defAva : baseUrl + avatar
|
||||||
storage.clean()
|
}
|
||||||
resolve()
|
const userid = (isEmpty(user) || isEmpty(user.userId)) ? "" : user.userId
|
||||||
}).catch(error => {
|
const username = (isEmpty(user) || isEmpty(user.userName)) ? "" : user.userName
|
||||||
reject(error)
|
if (res.roles && res.roles.length > 0) {
|
||||||
})
|
SET_ROLES(res.roles)
|
||||||
})
|
SET_PERMISSIONS(res.permissions)
|
||||||
}
|
} else {
|
||||||
|
SET_ROLES(['ROLE_DEFAULT'])
|
||||||
|
}
|
||||||
|
SET_ID(userid)
|
||||||
|
SET_NAME(username)
|
||||||
|
SET_AVATAR(avatar)
|
||||||
|
SET_USER_INFO(user)
|
||||||
|
resolve(res)
|
||||||
|
}).catch(error => {
|
||||||
|
reject(error)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
// 退出系统
|
||||||
token,
|
const logOutAction = () => {
|
||||||
id,
|
return new Promise((resolve, reject) => {
|
||||||
name,
|
logout(token.value).then(() => {
|
||||||
avatar,
|
SET_TOKEN('')
|
||||||
roles,
|
SET_ROLES([])
|
||||||
permissions,
|
SET_PERMISSIONS([])
|
||||||
SET_AVATAR,
|
removeToken()
|
||||||
login: loginAction,
|
storage.clean()
|
||||||
getInfo: getInfoAction,
|
resolve()
|
||||||
logOut: logOutAction
|
}).catch(error => {
|
||||||
}
|
reject(error)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
token,
|
||||||
|
id,
|
||||||
|
name,
|
||||||
|
avatar,
|
||||||
|
roles,
|
||||||
|
permissions,
|
||||||
|
userInfo,
|
||||||
|
SET_AVATAR,
|
||||||
|
login: loginAction,
|
||||||
|
getInfo: getInfoAction,
|
||||||
|
logOut: logOutAction
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@ -1,9 +1,10 @@
|
|||||||
const constant = {
|
const constant = {
|
||||||
avatar: 'user_avatar',
|
avatar: 'user_avatar',
|
||||||
id: 'user_id',
|
id: 'user_id',
|
||||||
name: 'user_name',
|
name: 'user_name',
|
||||||
roles: 'user_roles',
|
roles: 'user_roles',
|
||||||
permissions: 'user_permissions'
|
permissions: 'user_permissions',
|
||||||
}
|
userInfo: 'userInfo'
|
||||||
|
}
|
||||||
|
|
||||||
export default constant
|
export default constant
|
||||||
|
|||||||
1212
utils/utils.js
1212
utils/utils.js
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user