|
@@ -6,72 +6,93 @@
|
|
|
|
|
|
<template>
|
|
|
<div class="waitAuitMatters">
|
|
|
- <!-- 搜索 -->
|
|
|
- <Row>
|
|
|
- <Col span="6">
|
|
|
- <Input placeholder="请输入昵称进行搜索" v-model="searchFilter.nickName" @on-change="getData">
|
|
|
- </Input>
|
|
|
+ <!-- 按商品号搜索 -->
|
|
|
+ <Row :gutter="10">
|
|
|
+ <Col span="5">
|
|
|
+ <Input placeholder="请输入商品名称" v-model="searchFilter.itemName" clearable/>
|
|
|
</Col>
|
|
|
- </Row>
|
|
|
- <br>
|
|
|
- <br>
|
|
|
- <Row type="flex" align="middle" justify="end">
|
|
|
- <Col span="3">
|
|
|
- <Button long @click="addUser">
|
|
|
- 新增用户
|
|
|
- </Button>
|
|
|
+ <Col span="4">
|
|
|
+ <DatePicker type="date" placeholder="到达时间开始日期"
|
|
|
+ format="yyyy-MM-dd"
|
|
|
+ confirm
|
|
|
+ v-model="searchFilter.startTime"
|
|
|
+ @on-change="changeStartTime"/>
|
|
|
+ </Col>
|
|
|
+ <Col>-</Col>
|
|
|
+ <Col span="4">
|
|
|
+ <DatePicker type="date" placeholder="到达时间 截止日期"
|
|
|
+ format="yyyy-MM-dd"
|
|
|
+ confirm v-model="searchFilter.endTime"
|
|
|
+ @on-change="changeEndTime"
|
|
|
+ />
|
|
|
+ </Col>
|
|
|
+ <Col span="6">
|
|
|
+ <Button type="primary" icon="ios-search" @click="searchItem">商品搜索</Button>
|
|
|
</Col>
|
|
|
</Row>
|
|
|
- <br>
|
|
|
+ <br />
|
|
|
<!-- 数据展示 -->
|
|
|
- <el-table :data="userList.data" v-loading="dataLoading">
|
|
|
- <el-table-column label="用户名" min-width="40" align="center">
|
|
|
+ <el-table class="el-table" :data="itemList" v-loading="dataloading" v-if="itemList.length>0">
|
|
|
+ <el-table-column label="商品名称" width="130" align="center">
|
|
|
+ <template #default="scope">
|
|
|
+ <a @click="viewItem(scope.row.id)">{{scope.row.itemName || '无名称'}}</a>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="分类" min-width="180">
|
|
|
+ <template #default="scope">
|
|
|
+ {{ scope.row.classifyOne}}/{{scope.row.classifyTwo}}/{{scope.row.classifyThree}}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="审批商品状态" >
|
|
|
+ <template #default="scope">
|
|
|
+ <span v-if="scope.row.auditStatus">
|
|
|
+ {{ auditstatus(scope.row.auditStatus)}}
|
|
|
+ </span>
|
|
|
+ <span v-else>待审核</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="商品类型" width="120">
|
|
|
<template #default="scope">
|
|
|
<span>
|
|
|
- {{scope.row.userName ||'无'}}
|
|
|
+ {{shoptypeCode(scope.row.typeCode)}}
|
|
|
</span>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="昵称" min-width="80" align="center">
|
|
|
+ <el-table-column label="当前环节" width="120">
|
|
|
<template #default="scope">
|
|
|
<span>
|
|
|
- {{scope.row.nickName ||'无'}}
|
|
|
+ {{auditType(scope.row.auditType ) }}
|
|
|
</span>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
-
|
|
|
- <el-table-column label="操作" fixed="right" align="center">
|
|
|
+ <el-table-column label="到达时间" width="150">
|
|
|
+ <template #default="scope">
|
|
|
+ <span>
|
|
|
+ {{formatData(scope.row.startTime )}}
|
|
|
+ </span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="操作" fixed="right" width="130">
|
|
|
<template #default="scope">
|
|
|
<!--按钮-->
|
|
|
- <Button type="warning" size="small" @click.native="$jump('/1001030500?id='+scope.row.id+'&nickName='+scope.row.nickName)">用户分配</Button>
|
|
|
- <Button type="primary" size="small" @click.native="editUserModel(scope.row)">修改</Button>
|
|
|
- <Button type="error" size="small" @click.native="delBtn(scope.row.id)">删除</Button>
|
|
|
+ <Button type="primary" size="small" @click="checkCurrent(scope.row.auditGroup)">查看审批流程</Button>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
|
<!-- 分页 -->
|
|
|
<div style="margin: 10px;overflow: hidden">
|
|
|
- <div style="float: right;">
|
|
|
- <Page show-elevator :total="parseInt(userList.total)" :page-size="userList.limit" :current="current" @on-change="changePage"></Page>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <!-- 修改用户信息 -->
|
|
|
- <Modal v-model="showEdit" :title="modelTitle" :ok-text="editSub" @on-ok="submit('editUser')" @on-cancel="$refs['editUser'].resetFields()">
|
|
|
- <Form ref="editUser" :model="itemForm" :rules="itemValidator" :label-width="80">
|
|
|
- <Form-item label="用户名" prop="userName">
|
|
|
- <Input v-model="itemForm.userName" :disabled="isEdit" placeholder="请输入用户名"></Input>
|
|
|
- </Form-item>
|
|
|
- <Form-item label="昵称" prop="nickName">
|
|
|
- <Input v-model="itemForm.nickName" placeholder="请输入昵称"></Input>
|
|
|
- </Form-item>
|
|
|
- <Form-item label="密码" prop="password">
|
|
|
- <Input v-model="itemForm.password" placeholder="请输入密码"></Input>
|
|
|
- </Form-item>
|
|
|
- </Form>
|
|
|
- <div slot="footer">
|
|
|
- <Button type="primary" @click="saveUser">保存</Button>
|
|
|
- <Button @click="reset('editUser')" style="margin-left: 8px">重置</Button>
|
|
|
+ <div style="float: right;">
|
|
|
+ <Page show-elevator :total="parseInt(totalNum)" :page-size="searchFilter.limit" :current.sync="current" @on-change="changePage"></Page>
|
|
|
</div>
|
|
|
+ </div>
|
|
|
+ <!-- 审批历史 -->
|
|
|
+ <Modal v-model="offModel" title="审批详情">
|
|
|
+ <audit-process :historyAndNowFlow="historyAndNowFlow" :displayBtn="false"></audit-process>
|
|
|
+ <template #footer>
|
|
|
+ <div style="text-align:center;">
|
|
|
+ <Button @click="offModel = false">关闭页面</Button>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
</Modal>
|
|
|
</div>
|
|
|
</template>
|
|
@@ -80,139 +101,123 @@
|
|
|
import { defineComponent, onMounted, ref ,reactive,getCurrentInstance} from 'vue'
|
|
|
import {manager} from '@/request/api'
|
|
|
import { Message,Modal } from 'view-ui-plus'
|
|
|
+import { useRoute } from 'vue-router'
|
|
|
+import { auditstatus,shoptypeCode,auditType} from '@/utils/system/filters'
|
|
|
+import moment from 'moment'
|
|
|
+import auditProcess from '@/components/auditProcess/auditprocess'
|
|
|
|
|
|
export default defineComponent({
|
|
|
components:{
|
|
|
-
|
|
|
+ auditProcess
|
|
|
},
|
|
|
setup() {
|
|
|
let {proxy} = getCurrentInstance();
|
|
|
const token = localStorage.aynUserToken
|
|
|
|
|
|
- let isEdit = ref(false) //是否为修改用户
|
|
|
- let showEdit = ref(false) //是否显示 新建/修改用户 弹窗
|
|
|
- let modelTitle = ref('') //新建/修改用户 弹窗的标题
|
|
|
- let editSub = ref('') //新建/修改弹窗 提交按钮文字
|
|
|
- let itemForm = reactive({
|
|
|
- id: '',
|
|
|
- userName: '',
|
|
|
- nickName: '',
|
|
|
- password: '',
|
|
|
- })
|
|
|
- let addUserInfo = reactive({})
|
|
|
- let itemValidator = { //第一步内容验证
|
|
|
- userName: [{
|
|
|
- required: true,
|
|
|
- message: ' ',
|
|
|
- trigger: 'blur'
|
|
|
- }],
|
|
|
- nickName: [{
|
|
|
- required: true,
|
|
|
- message: ' ',
|
|
|
- trigger: 'blur'
|
|
|
- }],
|
|
|
- password: [{
|
|
|
- required: true,
|
|
|
- message: ' ',
|
|
|
- trigger: 'blur'
|
|
|
- }],
|
|
|
-
|
|
|
- }
|
|
|
- let dataLoading = ref(false)
|
|
|
- let userList = ref({}) //管理人员列表
|
|
|
- let current = ref(1) //当前页码
|
|
|
- let searchFilter = reactive({
|
|
|
- nickName: '', //昵称
|
|
|
- offset: 0, //偏移量
|
|
|
+ let route = useRoute()
|
|
|
+ let mohuloading = ref(false) //模糊搜索加载
|
|
|
+ let pageName = ref('')
|
|
|
+ let shopList = ref([]) //供应商列表
|
|
|
+ let itemList = ref([])
|
|
|
+ let totalNum = ref(0) //商品数据
|
|
|
+ let dataloading = ref(false) //是否在加载中
|
|
|
+ let current =ref(1) //当前页码
|
|
|
+ let searchFilter = ref({
|
|
|
+ startTime: '',
|
|
|
+ endTime:'',
|
|
|
+ itemName:'',
|
|
|
+ offset: 0,
|
|
|
+ limit:10
|
|
|
})
|
|
|
+ let offModel = ref(false) //查看弹框
|
|
|
+ let detailData = ref('')
|
|
|
+ let historyAndNowFlow = ref([])
|
|
|
+ let waitAuditDetailData = ref({})
|
|
|
|
|
|
|
|
|
-
|
|
|
- //获取广告数据
|
|
|
- function getData(){
|
|
|
- dataLoading.value = true;
|
|
|
- manager.GetUserList({
|
|
|
- ...searchFilter
|
|
|
- }).then((res) => {
|
|
|
- if(res.code == '101') {
|
|
|
- userList.value = res
|
|
|
- }else {
|
|
|
- this.$Message.error(res.message)
|
|
|
+ function viewItem(id){
|
|
|
+ // $open('shop/index.html#/item','itemId='+scope.row.id)
|
|
|
+ let env = process.env.NODE_ENV
|
|
|
+ if (env === 'development') {
|
|
|
+ window.open('http://test.aiyangniu.net/dist/views/shop/index.html#/item?itemId='+id)
|
|
|
+ }
|
|
|
+
|
|
|
+ if(env === 'testing'){
|
|
|
+ window.open('http://test.aiyangniu.net/dist/views/shop/index.html#/item?itemId='+id)
|
|
|
+ }
|
|
|
+ if(env === 'production'){
|
|
|
+ window.open('https://shop.aiyangniu.cn/dist/views/shop/index.html#/item?itemId='+id)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //获取商品数据
|
|
|
+ async function getData(){
|
|
|
+ itemList.value = []
|
|
|
+ dataloading.value = true;
|
|
|
+ await manager.getAwaitAuditProcess({
|
|
|
+ ...searchFilter.value
|
|
|
+ }).then(res =>{
|
|
|
+ if (res.code==101) {
|
|
|
+ itemList.value = res.data || []
|
|
|
+ totalNum.value = res.total || 0
|
|
|
+ }else{
|
|
|
+ Message.error(res.message)
|
|
|
}
|
|
|
- }).catch((err) => {
|
|
|
- this.$Message.error(err)
|
|
|
})
|
|
|
- dataLoading.value = false;
|
|
|
+ dataloading.value = false;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
//更改页码
|
|
|
function changePage (page) {
|
|
|
- let userlist = userList.value
|
|
|
- if(userlist.limit){
|
|
|
- searchFilter.offset = (page -1) * userlist.limit //更新偏移量
|
|
|
+ let itemlist = itemList.value
|
|
|
+ if(itemlist.limit){
|
|
|
+ searchFilter.value.offset = (page -1) * itemlist.limit //更新偏移量
|
|
|
current.value = page //切换当前页码
|
|
|
- getData() //获取广告数据
|
|
|
+ getData() //获取商品数据
|
|
|
}
|
|
|
+ searchFilter.value.offset = (page - 1) * searchFilter.value.limit
|
|
|
+ console.log(current.value)
|
|
|
+ getData()
|
|
|
}
|
|
|
|
|
|
- //显示新增用户
|
|
|
- function addUser() {
|
|
|
- this.$refs['editUser'].resetFields()
|
|
|
- isEdit.value = false //新增用户
|
|
|
- editSub.value = '提交'
|
|
|
- modelTitle.value = '新增用户'
|
|
|
- itemForm = Object.assign(itemForm, {
|
|
|
- userName: '',
|
|
|
- nickName: '',
|
|
|
- password: '',
|
|
|
- })
|
|
|
- showEdit.value = true //显示弹窗
|
|
|
+ /*=====搜索商品功能=====*/
|
|
|
+ function searchItem(){
|
|
|
+ getData()
|
|
|
}
|
|
|
- //显示修改用户
|
|
|
- function editUserModel(data) {
|
|
|
- this.$refs['editUser'].resetFields()
|
|
|
- isEdit.value = true //修改用户
|
|
|
- editSub.value = '保存'
|
|
|
- modelTitle.value = '修改用户'
|
|
|
- itemForm = _.cloneDeep(data) //需要修改的用户
|
|
|
- showEdit.value = true //显示弹窗
|
|
|
+
|
|
|
+ //更改开始时间
|
|
|
+ function changeStartTime(time){
|
|
|
+ searchFilter.value.startTime = time
|
|
|
+ }
|
|
|
+ //更改截止时间
|
|
|
+ function changeEndTime(time){
|
|
|
+ searchFilter.value.endTime = time
|
|
|
}
|
|
|
|
|
|
- //保存用户
|
|
|
- function saveUser() {
|
|
|
- this.$refs['editUser'].validate(async(valid) => {
|
|
|
- if (valid) { //验证成功
|
|
|
- if(!isEdit.value){ //判断是否是新增,还是修改,如果是新增的话,则传到用一个对象保存数据,传参不同
|
|
|
- addUserInfo = {}
|
|
|
- addUserInfo.userName = itemForm.userName ? itemForm.userName : ''
|
|
|
- addUserInfo.nickName = itemForm.nickName ? itemForm.nickName : ''
|
|
|
- addUserInfo.password = itemForm.password ? itemForm.password : ''
|
|
|
- }else{
|
|
|
- addUserInfo = {}
|
|
|
- }
|
|
|
- let save = isEdit.value ? await manager.UpdateUser(itemForm) : await manager.AddNewUser(addUserInfo) //修改和保存调用不同接口
|
|
|
- if (save.code === 101) {
|
|
|
- // this.editUser = save.data //获取新增用户的属性
|
|
|
- this.$Message.success(save.message) //保存后提示的消息
|
|
|
- getData() //更新用户列表数据
|
|
|
- showEdit.value = false
|
|
|
- } else {
|
|
|
- this.$Message.error(save.message)
|
|
|
- }
|
|
|
- } else { //验证失败
|
|
|
- this.$Message.error('提交失败!')
|
|
|
+ // 查看审批流信息
|
|
|
+ async function checkCurrent(auditGroupId){
|
|
|
+ offModel.value = true
|
|
|
+ // 获取历史及当前的流信息
|
|
|
+ await manager.histoicAuditList({auditGroup:auditGroupId}).then((res)=>{
|
|
|
+ if(res.code === 101){
|
|
|
+ historyAndNowFlow.value = res.data || []
|
|
|
}
|
|
|
})
|
|
|
}
|
|
|
|
|
|
+ // 格式化日期
|
|
|
+ function formatData(date) {
|
|
|
+ return moment(date).format("YYYY-MM-DD hh:mm:ss");
|
|
|
+ }
|
|
|
|
|
|
onMounted(()=>{
|
|
|
- getData()
|
|
|
+ pageName.value = route.meta.nameEN
|
|
|
+ getData() //获取商品数据
|
|
|
})
|
|
|
|
|
|
return {
|
|
|
- isEdit,showEdit,modelTitle,editSub,itemForm,addUserInfo,itemValidator,dataLoading,userList,current,searchFilter,
|
|
|
- getData,changePage,addUser,editUserModel,saveUser
|
|
|
+ mohuloading,pageName,shopList,totalNum,itemList,dataloading,current,searchFilter,offModel,detailData,historyAndNowFlow,waitAuditDetailData,auditstatus,shoptypeCode,auditType,
|
|
|
+ viewItem,getData,changePage,searchItem,changeStartTime,changeEndTime,checkCurrent,formatData
|
|
|
}
|
|
|
},
|
|
|
})
|
|
@@ -221,5 +226,90 @@ export default defineComponent({
|
|
|
<style lang="scss" scoped>
|
|
|
.waitAuitMatters{
|
|
|
padding: 1em;
|
|
|
+ .el-table{
|
|
|
+ width: 100%;
|
|
|
+ font-size: 12px;
|
|
|
+ }
|
|
|
+ .ivu-modal-mask{
|
|
|
+ background-color: rgba(55, 55, 55, 0.1);
|
|
|
+ }
|
|
|
+ .track-rcol{
|
|
|
+ border: 1px solid #eee;
|
|
|
+ }
|
|
|
+ .deliverNum{
|
|
|
+ color: red;
|
|
|
+ text-align: center;
|
|
|
+ padding-top: 20px;
|
|
|
+ }
|
|
|
+ .track-list{
|
|
|
+ margin: 20px;
|
|
|
+ padding-left: 5px;
|
|
|
+ position: relative;
|
|
|
+ }
|
|
|
+ .track-list li{
|
|
|
+ position: relative;
|
|
|
+ padding: 9px 0 0 25px;
|
|
|
+ line-height: 18px;
|
|
|
+ border-left: 1px solid #d9d9d9;
|
|
|
+ color: #999;
|
|
|
+ }
|
|
|
+ .track-list li.first{
|
|
|
+ color: red;
|
|
|
+ padding-top: 0;
|
|
|
+ border-left-color: #fff;
|
|
|
+ }
|
|
|
+ .track-list li .node-icon{
|
|
|
+ position: absolute;
|
|
|
+ left: -6px;
|
|
|
+ top: 50%;
|
|
|
+ width: 11px;
|
|
|
+ height: 11px;
|
|
|
+ background: url(../../../assets/images/order-icons.png) -21px -72px no-repeat;
|
|
|
+ }
|
|
|
+ .track-list li.first .node-icon{
|
|
|
+ background-position:0 -72px;
|
|
|
+ }
|
|
|
+ .track-list li .time{
|
|
|
+ margin-right: 20px;
|
|
|
+ position: relative;
|
|
|
+ top: 4px;
|
|
|
+ display: inline-block;
|
|
|
+ vertical-align: middle;
|
|
|
+ }
|
|
|
+ .track-list li .txt{
|
|
|
+ max-width: 600px;
|
|
|
+ position: relative;
|
|
|
+ top: 4px;
|
|
|
+ display: inline-block;
|
|
|
+ vertical-align: middle;
|
|
|
+ }
|
|
|
+ .track-list li.first .time{
|
|
|
+ margin-right: 20px;
|
|
|
+ }
|
|
|
+ .track-list li.first .txt{
|
|
|
+ max-width: 600px;
|
|
|
+ }
|
|
|
+ .content{
|
|
|
+ margin-top: 3em;
|
|
|
+ color: #000;
|
|
|
+ .updatetime{
|
|
|
+ font-size: 14px;
|
|
|
+ color:#666;
|
|
|
+ }
|
|
|
+ .head-style{
|
|
|
+ background-color: #e8f2ff;
|
|
|
+ border: 1px solid #999;
|
|
|
+ padding: 0.8em 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .tab-style{
|
|
|
+ width: 100%;
|
|
|
+ border-collapse: collapse;
|
|
|
+ }
|
|
|
+ .tab-style>tr>td{
|
|
|
+ border: 1px solid #999;
|
|
|
+ padding: 0.2em 0.2em;
|
|
|
+ font-size: 13px;
|
|
|
+ }
|
|
|
}
|
|
|
</style>
|