master
xy 2 years ago
parent 74280076b4
commit b777572112

@ -1,10 +1,11 @@
import request from "@/utils/request"; import request from "@/utils/request";
export function getContract(params){ export function getContract(params,noloading = false){
return request({ return request({
method:'get', method:'get',
url:'/api/admin/contract/index', url:'/api/admin/contract/index',
params params,
noloading
}) })
} }
@ -48,10 +49,11 @@ export function checkContractName(params){
}) })
} }
export function updateStatus(params){ export function updateStatus(params,noloading = true){
return request({ return request({
method:'get', method:'get',
url:'api/admin/oa/update-contract', url:'api/admin/oa/update-contract',
params params,
noloading
}) })
} }

@ -15,7 +15,7 @@ export function getOutDetail({ tbname,out_caigou_id,out_contract_id,out_pay_id,o
}) })
} }
export function httpCurl({ tbname,out_caigou_id,out_contract_id,out_pay_id,out_zhaobiao_id }) { export function httpCurl({ tbname,out_caigou_id,out_contract_id,out_pay_id,out_zhaobiao_id },noloading = true) {
return request({ return request({
method: 'post', method: 'post',
url: '/api/admin/other/http-curl', url: '/api/admin/other/http-curl',
@ -29,6 +29,7 @@ export function httpCurl({ tbname,out_caigou_id,out_contract_id,out_pay_id,out_z
out_pay_id, out_pay_id,
out_zhaobiao_id out_zhaobiao_id
} }
} },
noloading
}) })
} }

@ -0,0 +1,225 @@
<script>
export default {
props:{
},
data() {
return {
isShowSelector:false,
width:300,
left:0,
}
},
methods: {
initStyle(){
const header = document.querySelector('.v-header').getBoundingClientRect()
this.width = header.width
const select = document.querySelector('.xy-selectors').getBoundingClientRect()
this.left = select.left - header.left
this.$forceUpdate()
},
showSelector(){
this.isShowSelector =! this.isShowSelector
},
renderAdd(){
return (<Button
class="xy-selectors-btn__item"
type='primary'
on={{
['click']:()=>this.$emit('add')
}}>
新增
</Button>)
}
},
mounted() {
this.initStyle()
window.onresize = this.initStyle
},
destroyed() {
window.onresize = null
},
render(h) {
let {isShowSelector,showSelector,$scopedSlots} = this
return (
<div class="xy-selectors">
<div v-show={isShowSelector} style={{'width':'100vw','height':'100vh','position':'fixed','top':0,'left':0,'z-index':1}} on={{['click']:()=>this.isShowSelector = false}}></div>
<Button
icon='md-arrow-dropdown'
ghost={isShowSelector}
class={isShowSelector ? 'xy-selectors-btn__item xy-selectors-btn__select xy-selectors-btn-active__select' : 'xy-selectors-btn__item xy-selectors-btn__select"'}
type='primary'
on={{
['click']:() => showSelector()
}}>
高级搜索
</Button>
<transition
enter-active-class="scale-enter"
leave-to-class="scale-leave">
<div class="xy-selectors-card" style={{'width':`${this.width}px`,'left':`-${this.left}px`}} v-show={isShowSelector}>
<Icon
type="md-close"
size={24}
class="xy-selectors-card__close"
on={{['click']:()=> {
this.isShowSelector = false
}}}/>
<div class="xy-selectors-card-content">
{$scopedSlots?.selected ? $scopedSlots?.selected() : ''}
{$scopedSlots?.default ? $scopedSlots?.default() : ''}
</div>
<div class="xy-selectors-card-btn">
<Button
class="xy-selectors-card-btn__item"
type="primary"
ghost={true}
on={{['click']:()=>{this.$emit('reset')}}}>重置</Button>
<Button
class="xy-selectors-card-btn__item"
type="primary"
on={{['click']:()=>{
this.$emit('search')
this.isShowSelector = false
}}}>搜索</Button>
</div>
</div>
</transition>
</div>
)
}
}
</script>
<style lang="scss">
.xy-selectors{
&__item{
display: flex;
align-items: center;
padding: 8px 20px;
&--name{
width: 100px;
margin-right: 20px;
}
}
}
</style>
<style scoped lang="scss">
@import "../../styles/variables";
.xy-selectors{
position: relative;
&-btn{
//display: flex;
//justify-content: flex-start;
//align-items: center;
&__item{
//margin-right: 10px;
}
&__select{
}
&-active__select{
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
border-bottom: none;
box-shadow: 0 2px 10px 1px $primaryColor;
position: relative;
&::after{
content:'';
height: 12px;
background: linear-gradient(to top,rgba(235,238,244,0.98) 40%,#0000 80%,#0000);
z-index: 5;
position: absolute;
bottom: -4px;
left: 0;
right: 0;
}
}
}
&-card{
//width: 100%;
background: rgba(239,242,250,0.95);
border-radius: 0 4px 4px 4px;
border: $primaryColor solid 1px;
box-shadow: 0 4px 10px 1px $primaryColor;
z-index: 4;
position: absolute;
&__close{
cursor: pointer;
position: absolute;
top: 6px;
right: 14px;
}
&-content{
min-height: 50px;
max-height: 400px;
overflow: scroll;
padding: 36px 0 44px 8px;
&::-webkit-scrollbar-thumb{
background: $primaryColor;
}
}
&-btn{
width: 100%;
display: flex;
justify-content: space-evenly;
background: rgba(239,242,250,0.95);
position: absolute;
bottom: 0;
&__item{
width: 120px;
margin: 10px 0px;
}
}
}
}
.scale-enter{
transform-origin: 0 0%;
animation: scale-enter 0.5s cubic-bezier(0.250, 0.460, 0.450, 0.940) both;
}
@keyframes scale-enter {
from{
transform: scaleY(0);
opacity: 0;
}
to{
transform: scaleY(1);
opacity: 1;
}
}
.scale-leave{
transform-origin: 0 0%;
animation: scale-leave 0.5s cubic-bezier(0.250, 0.460, 0.450, 0.940) both;
}
@keyframes scale-leave {
from{
transform: scaleY(1);
opacity: 1;
}
to{
transform: scaleY(0);
opacity: 0;
}
}
</style>

@ -40,7 +40,8 @@ import xyTable from "@/components/XyTable"
Vue.component('xy-table',xyTable) Vue.component('xy-table',xyTable)
import xyDialog from "@/components/XyDialog" import xyDialog from "@/components/XyDialog"
Vue.component('xy-dialog',xyDialog) Vue.component('xy-dialog',xyDialog)
import xySelectors from "@/components/XySelectors"
Vue.component('xy-selectors',xySelectors)
Vue.config.productionTip = false Vue.config.productionTip = false
import moment from 'moment' import moment from 'moment'

@ -3,7 +3,7 @@
@import './transition.scss'; @import './transition.scss';
@import './element-ui.scss'; @import './element-ui.scss';
@import './sidebar.scss'; @import './sidebar.scss';
$primaryColor: #338de3;
body { body {
height: 100%; height: 100%;
-moz-osx-font-smoothing: grayscale; -moz-osx-font-smoothing: grayscale;

@ -19,12 +19,13 @@
/> />
</span> </span>
</div> </div>
<xy-selectors style="margin-left: 10px;" @search="getContracts" @reset="reset">
<div> <div class="select-content">
<div>
<span style="padding: 0 6px; word-break: keep-all" <span style="padding: 0 6px; word-break: keep-all"
>服务商/供应商</span >服务商/供应商</span
> >
<span> <span>
<Input <Input
v-model="select.supply" v-model="select.supply"
clearable clearable
@ -32,12 +33,12 @@
style="width: 200px" style="width: 200px"
/> />
</span> </span>
</div> </div>
<div> <div>
<span style="padding: 0 6px; word-break: keep-all">预算计划</span> <span style="padding: 0 6px; word-break: keep-all">预算计划</span>
<span> <span>
<Input <Input
v-model="select.plan_name" v-model="select.plan_name"
clearable clearable
@ -47,10 +48,10 @@
@on-clear="clearSelectForSearch" @on-clear="clearSelectForSearch"
/> />
</span> </span>
</div> </div>
<div> <div>
<span style="padding: 0 6px; word-break: keep-all">签订年份</span> <span style="padding: 0 6px; word-break: keep-all">签订年份</span>
<span> <span>
<DatePicker <DatePicker
:value="select.year" :value="select.year"
placeholder="选择年份" placeholder="选择年份"
@ -60,10 +61,10 @@
@on-change="(e) => (select.year = e)" @on-change="(e) => (select.year = e)"
></DatePicker> ></DatePicker>
</span> </span>
</div> </div>
<div> <div>
<span style="padding: 0 6px; word-break: keep-all">创建日期</span> <span style="padding: 0 6px; word-break: keep-all">创建日期</span>
<span> <span>
<DatePicker <DatePicker
v-model="select.showDatePicker" v-model="select.showDatePicker"
clearable clearable
@ -74,194 +75,196 @@
@on-change="datePick" @on-change="datePick"
></DatePicker> ></DatePicker>
</span> </span>
</div> </div>
<div> <div>
<span style="padding: 0 6px; word-break: keep-all"> 项目类型 </span> <span style="padding: 0 6px; word-break: keep-all"> 项目类型 </span>
<Select <Select
v-model="select.type" v-model="select.type"
clearable clearable
placeholder="请选择项目类型" placeholder="请选择项目类型"
style="width: 140px" style="width: 140px"
> >
<Option <Option
v-for="item in type" v-for="item in type"
:key="item.value" :key="item.value"
:value="item.value" :value="item.value"
>{{ item.label }}</Option >{{ item.label }}</Option
> >
</Select> </Select>
</div> </div>
<div> <div>
<span style="padding: 0 6px; word-break: keep-all"> 业务科室 </span> <span style="padding: 0 6px; word-break: keep-all"> 业务科室 </span>
<el-select <el-select
v-model="select.department_id" v-model="select.department_id"
clearable clearable
placeholder="业务科室选择" placeholder="业务科室选择"
size="small" size="small"
style="width: 120px" style="width: 120px"
> >
<el-option <el-option
v-for="item in departments" v-for="item in departments"
:key="item.id" :key="item.id"
:label="item.name" :label="item.name"
:value="item.id" :value="item.id"
> >
</el-option> </el-option>
</el-select> </el-select>
</div> </div>
<div> <div>
<span style="padding: 0 6px; word-break: keep-all"> 采购形式 </span> <span style="padding: 0 6px; word-break: keep-all"> 采购形式 </span>
<Select <Select
v-model="select.purchase_type_id" v-model="select.purchase_type_id"
clearable clearable
placeholder="请选择采购形式" placeholder="请选择采购形式"
style="width: 140px" style="width: 140px"
> >
<Option <Option
v-for="item in purchaseType" v-for="item in purchaseType"
:key="item.id" :key="item.id"
:value="item.id" :value="item.id"
>{{ item.value }}</Option >{{ item.value }}</Option
> >
</Select> </Select>
</div> </div>
<div> <div>
<span style="padding: 0 6px; word-break: keep-all"> 采购方式 </span> <span style="padding: 0 6px; word-break: keep-all"> 采购方式 </span>
<Select <Select
v-model="select.purchase_way_id" v-model="select.purchase_way_id"
clearable clearable
placeholder="请选择采购方式" placeholder="请选择采购方式"
style="width: 200px" style="width: 200px"
> >
<Option <Option
v-for="item in purchaseWay" v-for="item in purchaseWay"
:key="item.id" :key="item.id"
:value="item.id" :value="item.id"
>{{ item.value }}</Option >{{ item.value }}</Option
> >
</Select> </Select>
</div> </div>
<div> <div>
<span style="padding: 0 6px; word-break: keep-all"> 预算金额 </span> <span style="padding: 0 6px; word-break: keep-all"> 预算金额 </span>
<el-input-number <el-input-number
size="small" size="small"
:controls="false" :controls="false"
v-model="select.start_plan_price" v-model="select.start_plan_price"
:min="0" :min="0"
placeholder="最小金额" placeholder="最小金额"
style="width: 100px" style="width: 100px"
/> />
<span style="padding: 0 5px">-</span> <span style="padding: 0 5px">-</span>
<el-input-number <el-input-number
size="small" size="small"
:controls="false" :controls="false"
v-model="select.end_plan_price" v-model="select.end_plan_price"
:min="0" :min="0"
placeholder="最大金额" placeholder="最大金额"
style="width: 100px" style="width: 100px"
/> />
</div> </div>
<div> <div>
<span style="padding: 0 6px; word-break: keep-all"> 合同状态 </span> <span style="padding: 0 6px; word-break: keep-all"> 合同状态 </span>
<Select <Select
v-model="select.status" v-model="select.status"
clearable clearable
placeholder="请选择" placeholder="请选择"
style="width: 100px" style="width: 100px"
> >
<Option <Option
v-for="item in [ v-for="item in [
{ label: '待签订', value: 1 }, { label: '待签订', value: 1 },
{ label: '已签订', value: 2 }, { label: '已签订', value: 2 },
]" ]"
:key="item.value" :key="item.value"
:value="item.value" :value="item.value"
>{{ item.label }} >{{ item.label }}
</Option> </Option>
</Select> </Select>
</div> </div>
<div> <div>
<span style="padding: 0 6px; word-break: keep-all"> <span style="padding: 0 6px; word-break: keep-all">
招标流程状态 招标流程状态
</span> </span>
<Select <Select
v-model="select.invite_status" v-model="select.invite_status"
clearable clearable
placeholder="请选择" placeholder="请选择"
style="width: 100px" style="width: 100px"
> >
<Option <Option
v-for="item in options" v-for="item in options"
:key="item.value" :key="item.value"
:value="item.value" :value="item.value"
>{{ item.label }} >{{ item.label }}
</Option> </Option>
</Select> </Select>
</div> </div>
<div> <div>
<span style="padding: 0 6px; word-break: keep-all"> <span style="padding: 0 6px; word-break: keep-all">
采购流程状态 采购流程状态
</span> </span>
<Select <Select
v-model="select.purchase_status" v-model="select.purchase_status"
clearable clearable
placeholder="请选择" placeholder="请选择"
style="width: 100px" style="width: 100px"
> >
<Option <Option
v-for="item in options" v-for="item in options"
:key="item.value" :key="item.value"
:value="item.value" :value="item.value"
>{{ item.label }} >{{ item.label }}
</Option> </Option>
</Select> </Select>
</div> </div>
<div> <div>
<span style="padding: 0 6px; word-break: keep-all"> <span style="padding: 0 6px; word-break: keep-all">
合同会签状态 合同会签状态
</span> </span>
<Select <Select
v-model="select.join_status" v-model="select.join_status"
clearable clearable
placeholder="请选择" placeholder="请选择"
style="width: 100px" style="width: 100px"
> >
<Option <Option
v-for="item in options" v-for="item in options"
:key="item.value" :key="item.value"
:value="item.value" :value="item.value"
>{{ item.label }} >{{ item.label }}
</Option> </Option>
</Select> </Select>
</div> </div>
<div> <div>
<span style="padding: 0 6px; word-break: keep-all"> <span style="padding: 0 6px; word-break: keep-all">
请示流程状态 请示流程状态
</span> </span>
<Select <Select
v-model="select.req_status" v-model="select.req_status"
clearable clearable
placeholder="请选择" placeholder="请选择"
style="width: 100px" style="width: 100px"
> >
<Option <Option
v-for="item in options" v-for="item in options"
:key="item.value" :key="item.value"
:value="item.value" :value="item.value"
>{{ item.label }} >{{ item.label }}
</Option> </Option>
</Select> </Select>
</div> </div>
</div>
</xy-selectors>
<Button <Button
style="margin-left: 10px" style="margin-left: 10px"
@ -272,28 +275,6 @@
<Button style="margin-left: 10px" type="primary" @click="getContracts" <Button style="margin-left: 10px" type="primary" @click="getContracts"
>查询</Button >查询</Button
> >
<Button
ghost
style="margin-left: 10px"
type="primary"
@click="
select = {
showDatePicker: '',
ageIndex: 1,
startDate: '',
endDate: '',
type: '',
department: '',
purchaseModality: '',
purchaseMethods: '',
priceMin: null,
priceMax: null,
status: '',
}
"
>
重置
</Button>
<Button type="primary" @click="toExport()" style="margin-left: 10px" <Button type="primary" @click="toExport()" style="margin-left: 10px"
>导出</Button >导出</Button
> >
@ -1072,7 +1053,7 @@ import { getparameter } from "@/api/system/dictionary";
import { listdeptNoAuth } from "@/api/system/department"; import { listdeptNoAuth } from "@/api/system/department";
import { getBudget } from "@/api/budget/budget"; import { getBudget } from "@/api/budget/budget";
import { getOatoken } from "@/api/oatoken"; import { getOatoken } from "@/api/oatoken";
import { parseTime, resetSelect } from "@/utils"; import { deepCopy, parseTime, resetSelect } from '@/utils'
import { Message } from "element-ui"; import { Message } from "element-ui";
import { getInfo } from "@/api/user.js"; import { getInfo } from "@/api/user.js";
import { getToken } from "@/utils/auth"; import { getToken } from "@/utils/auth";
@ -1222,8 +1203,25 @@ export default {
department_id: "", department_id: "",
purchaseModality: "", purchaseModality: "",
purchaseMethods: "", purchaseMethods: "",
priceMin: null, status: "",
priceMax: null, year: "",
plan_id: "",
outcome_type: 1,
plan_name: "请选择预算计划",
start_plan_price: undefined,
end_plan_price: undefined,
},
selectCopy: {
keyword: "",
showDatePicker: "",
pageIndex: 1,
pageSize: 10,
startDate: "",
endDate: "",
type: "",
department_id: "",
purchaseModality: "",
purchaseMethods: "",
status: "", status: "",
year: "", year: "",
plan_id: "", plan_id: "",
@ -1833,6 +1831,9 @@ export default {
}; };
}, },
methods: { methods: {
reset () {
this.select = deepCopy(this.selectCopy)
},
toExport() { toExport() {
this.select.is_export = 1; this.select.is_export = 1;
this.getContracts(true); this.getContracts(true);
@ -2254,13 +2255,13 @@ export default {
this.getContracts(); this.getContracts();
}, },
// //
async getContracts(is_export) { async getContracts(is_export,noloading=false) {
const res = await getContract({ const res = await getContract({
page_size: this.select.pageSize, page_size: this.select.pageSize,
page: this.select.pageIndex, page: this.select.pageIndex,
is_auth: 1, is_auth: 1,
...this.select, ...this.select,
}); },noloading);
let tokens = getToken(); let tokens = getToken();
if (is_export && this.select.is_export == 1) { if (is_export && this.select.is_export == 1) {
@ -2576,8 +2577,8 @@ export default {
flow_type: flowTypeMap.get(this.nowContract.tbname), flow_type: flowTypeMap.get(this.nowContract.tbname),
out_contract_id: this.nowContract.id, out_contract_id: this.nowContract.id,
status: getStatus(res.flow?.current_step), status: getStatus(res.flow?.current_step),
}); },true);
await this.getContracts(); await this.getContracts(false,true);
} }
}; };
}, },
@ -2652,4 +2653,20 @@ export default {
content: "(元)"; content: "(元)";
} }
} }
.select-content {
display: flex;
flex-wrap: wrap;
& > div {
flex-basis: 45%;
margin: 5px;
& > span:nth-child(1) {
display: inline-block;
width: 140px;
}
}
}
</style> </style>

@ -10,158 +10,163 @@
<Input v-model="select.keyword" clearable placeholder="关键字搜索" style="width: 200px" /> <Input v-model="select.keyword" clearable placeholder="关键字搜索" style="width: 200px" />
</span> </span>
</div> </div>
<div> <xy-selectors style="margin-left: 10px;" @search="getContracts" @reset="reset">
<span style="padding: 0 6px;word-break: keep-all;">服务商/供应商</span> <div class="select-content">
<span> <div>
<span style="padding: 0 6px;word-break: keep-all;">服务商/供应商</span>
<span>
<Input v-model="select.supply" clearable placeholder="请输入服务商/供应商" style="width: 200px" /> <Input v-model="select.supply" clearable placeholder="请输入服务商/供应商" style="width: 200px" />
</span> </span>
</div> </div>
<div v-if="type!=1"> <div v-if="type!=1">
<span style="padding: 0 6px;word-break: keep-all;">预算计划</span> <span style="padding: 0 6px;word-break: keep-all;">预算计划</span>
<span> <span>
<Input v-model="select.plan_name" clearable placeholder="请选择预算计划" @on-focus="showPlanForSearch" <Input v-model="select.plan_name" clearable placeholder="请选择预算计划" @on-focus="showPlanForSearch"
style="width: 200px" @on-clear="clearSelectForSearch" /> style="width: 200px" @on-clear="clearSelectForSearch" />
</span> </span>
</div> </div>
<div v-if="type!=1"> <div v-if="type!=1">
<span style="padding: 0 6px;word-break: keep-all;">签订年份</span> <span style="padding: 0 6px;word-break: keep-all;">签订年份</span>
<span> <span>
<DatePicker :value="select.year" placeholder="选择年份" placement="bottom" style="width: 90px;" type="year" <DatePicker :value="select.year" placeholder="选择年份" placement="bottom" style="width: 90px;" type="year"
@on-change="(e)=>select.year = e"></DatePicker> @on-change="(e)=>select.year = e"></DatePicker>
</span> </span>
</div> </div>
<div v-if="type!=1"> <div v-if="type!=1">
<span style="padding: 0 6px;word-break: keep-all;">创建日期</span> <span style="padding: 0 6px;word-break: keep-all;">创建日期</span>
<span> <span>
<DatePicker v-model="select.showDatePicker" clearable placeholder="请选择日期" placement="bottom-start" <DatePicker v-model="select.showDatePicker" clearable placeholder="请选择日期" placement="bottom-start"
style="width: 200px" type="daterange" @on-change="datePick"></DatePicker> style="width: 200px" type="daterange" @on-change="datePick"></DatePicker>
</span> </span>
</div> </div>
<div v-if="type==1"> <div v-if="type==1">
<span style="padding: 0 6px;word-break: keep-all;">保函有效期</span> <span style="padding: 0 6px;word-break: keep-all;">保函有效期</span>
<span> <span>
<DatePicker v-model="select.showDatePickerBao" clearable placeholder="请选择日期" placement="bottom-start" <DatePicker v-model="select.showDatePickerBao" clearable placeholder="请选择日期" placement="bottom-start"
style="width: 200px" type="daterange" @on-change="datePickBao"></DatePicker> style="width: 200px" type="daterange" @on-change="datePickBao"></DatePicker>
</span> </span>
</div> </div>
<div v-if="type==1"> <div v-if="type==1">
<span style="padding: 0 6px;word-break: keep-all;"> <span style="padding: 0 6px;word-break: keep-all;">
保函金额 保函金额
</span> </span>
<InputNumber v-model="select.start_assurance_money" :min="0" placeholder="最小金额" style="width: 100px;" /> <InputNumber v-model="select.start_assurance_money" :min="0" placeholder="最小金额" style="width: 100px;" />
<span style="padding: 0 5px;">-</span> <span style="padding: 0 5px;">-</span>
<InputNumber v-model="select.end_assurance_money" :min="0" placeholder="最大金额" style="width: 100px;" /> <InputNumber v-model="select.end_assurance_money" :min="0" placeholder="最大金额" style="width: 100px;" />
</div> </div>
<div> <div>
<span style="padding: 0 6px;word-break: keep-all;"> <span style="padding: 0 6px;word-break: keep-all;">
项目类型 项目类型
</span> </span>
<Select v-model="select.type" clearable placeholder="请选择项目类型" style="width:140px;"> <Select v-model="select.type" clearable placeholder="请选择项目类型" style="width:140px;">
<Option v-for="item in types" :key="item.value" :value="item.value">{{ item.label }}</Option> <Option v-for="item in types" :key="item.value" :value="item.value">{{ item.label }}</Option>
</Select> </Select>
</div> </div>
<div> <div>
<span style="padding: 0 6px;word-break: keep-all;"> <span style="padding: 0 6px;word-break: keep-all;">
业务科室 业务科室
</span> </span>
<el-select v-model="select.department_id" clearable placeholder="业务科室选择" size="small" style="width: 120px;"> <el-select v-model="select.department_id" clearable placeholder="业务科室选择" size="small" style="width: 120px;">
<el-option v-for="item in departments" :key="item.id" :label="item.name" :value="item.id"> <el-option v-for="item in departments" :key="item.id" :label="item.name" :value="item.id">
</el-option> </el-option>
</el-select> </el-select>
</div> </div>
<div v-if="type!=1"> <div v-if="type!=1">
<span style="padding: 0 6px;word-break: keep-all;"> <span style="padding: 0 6px;word-break: keep-all;">
采购形式 采购形式
</span> </span>
<Select v-model="select.purchase_type_id" clearable placeholder="请选择采购形式" style="width:140px;"> <Select v-model="select.purchase_type_id" clearable placeholder="请选择采购形式" style="width:140px;">
<Option v-for="item in purchaseType" :key="item.id" :value="item.id">{{ item.value }}</Option> <Option v-for="item in purchaseType" :key="item.id" :value="item.id">{{ item.value }}</Option>
</Select> </Select>
</div> </div>
<div v-if="type!=1"> <div v-if="type!=1">
<span style="padding: 0 6px;word-break: keep-all;"> <span style="padding: 0 6px;word-break: keep-all;">
采购方式 采购方式
</span> </span>
<Select v-model="select.purchase_way_id" clearable placeholder="请选择采购方式" style="width:200px;"> <Select v-model="select.purchase_way_id" clearable placeholder="请选择采购方式" style="width:200px;">
<Option v-for="item in purchaseWay" :key="item.id" :value="item.id">{{ item.value }}</Option> <Option v-for="item in purchaseWay" :key="item.id" :value="item.id">{{ item.value }}</Option>
</Select> </Select>
</div> </div>
<div v-if="type!=1"> <div v-if="type!=1">
<span style="padding: 0 6px;word-break: keep-all;"> <span style="padding: 0 6px;word-break: keep-all;">
预算金额 预算金额
</span> </span>
<InputNumber v-model="select.start_plan_price" :min="0" placeholder="最小金额" style="width: 100px;" /> <InputNumber v-model="select.start_plan_price" :min="0" placeholder="最小金额" style="width: 100px;" />
<span style="padding: 0 5px;">-</span> <span style="padding: 0 5px;">-</span>
<InputNumber v-model="select.end_plan_price" :min="0" placeholder="最大金额" style="width: 100px;" /> <InputNumber v-model="select.end_plan_price" :min="0" placeholder="最大金额" style="width: 100px;" />
</div> </div>
<div v-if="type!=1"> <div v-if="type!=1">
<span style="padding: 0 6px;word-break: keep-all;"> <span style="padding: 0 6px;word-break: keep-all;">
合同状态 合同状态
</span> </span>
<Select v-model="select.status" clearable placeholder="请选择" style="width:100px;"> <Select v-model="select.status" clearable placeholder="请选择" style="width:100px;">
<Option v-for="item in [{label:'',value:1},{label:'',value:2}]" :key="item.value" <Option v-for="item in [{label:'',value:1},{label:'',value:2}]" :key="item.value"
:value="item.value">{{ item.label }} :value="item.value">{{ item.label }}
</Option> </Option>
</Select> </Select>
</div> </div>
<div> <div>
<span style="padding: 0 6px;word-break: keep-all;"> <span style="padding: 0 6px;word-break: keep-all;">
履约保函状态 履约保函状态
</span> </span>
<Select v-model="select.assurance_status" clearable placeholder="请选择" style="width:100px;"> <Select v-model="select.assurance_status" clearable placeholder="请选择" style="width:100px;">
<Option v-for="item in [{label:'',value:0},{label:'',value:1}]" :key="item.value" <Option v-for="item in [{label:'',value:0},{label:'',value:1}]" :key="item.value"
:value="item.value">{{ item.label }} :value="item.value">{{ item.label }}
</Option> </Option>
</Select> </Select>
</div> </div>
<div v-if="type!=1"> <div v-if="type!=1">
<span style="padding: 0 6px;word-break: keep-all;"> <span style="padding: 0 6px;word-break: keep-all;">
招标流程状态 招标流程状态
</span> </span>
<Select v-model="select.invite_status" clearable placeholder="请选择" style="width:100px;"> <Select v-model="select.invite_status" clearable placeholder="请选择" style="width:100px;">
<Option v-for="item in options" :key="item.value" :value="item.value">{{ item.label }} <Option v-for="item in options" :key="item.value" :value="item.value">{{ item.label }}
</Option> </Option>
</Select> </Select>
</div> </div>
<div v-if="type!=1"> <div v-if="type!=1">
<span style="padding: 0 6px;word-break: keep-all;"> <span style="padding: 0 6px;word-break: keep-all;">
采购流程状态 采购流程状态
</span> </span>
<Select v-model="select.purchase_status" clearable placeholder="请选择" style="width:100px;"> <Select v-model="select.purchase_status" clearable placeholder="请选择" style="width:100px;">
<Option v-for="item in options" :key="item.value" :value="item.value">{{ item.label }} <Option v-for="item in options" :key="item.value" :value="item.value">{{ item.label }}
</Option> </Option>
</Select> </Select>
</div> </div>
<div v-if="type!=1"> <div v-if="type!=1">
<span style="padding: 0 6px;word-break: keep-all;"> <span style="padding: 0 6px;word-break: keep-all;">
合同会签状态 合同会签状态
</span> </span>
<Select v-model="select.join_status" clearable placeholder="请选择" style="width:100px;"> <Select v-model="select.join_status" clearable placeholder="请选择" style="width:100px;">
<Option v-for="item in options" :key="item.value" :value="item.value">{{ item.label }} <Option v-for="item in options" :key="item.value" :value="item.value">{{ item.label }}
</Option> </Option>
</Select> </Select>
</div> </div>
<div v-if="type!=1"> <div v-if="type!=1">
<span style="padding: 0 6px;word-break: keep-all;"> <span style="padding: 0 6px;word-break: keep-all;">
请示流程状态 请示流程状态
</span> </span>
<Select v-model="select.req_status" clearable placeholder="请选择" style="width:100px;"> <Select v-model="select.req_status" clearable placeholder="请选择" style="width:100px;">
<Option v-for="item in options" :key="item.value" :value="item.value">{{ item.label }} <Option v-for="item in options" :key="item.value" :value="item.value">{{ item.label }}
</Option> </Option>
</Select> </Select>
</div> </div>
</div>
</xy-selectors>
<Button style="margin-left: 10px" type="primary" @click="searchContracts"></Button> <Button style="margin-left: 10px" type="primary" @click="searchContracts"></Button>
<Button ghost style="margin-left: 10px" type="primary" <Button ghost style="margin-left: 10px" type="primary"
@ -403,7 +408,7 @@
getOatoken getOatoken
} from "@/api/oatoken" } from "@/api/oatoken"
import { import {
parseTime parseTime,deepCopy
} from "@/utils" } from "@/utils"
import { import {
Message Message
@ -475,8 +480,29 @@
department_id: "", department_id: "",
purchaseModality: "", purchaseModality: "",
purchaseMethods: "", purchaseMethods: "",
priceMin: null, status: "",
priceMax: null, year: "",
plan_id: "",
plan_name: "请选择预算计划",
start_plan_price: null,
end_plan_price: null,
assurance_status: 0,
start_assurance_money: null,
end_assurance_money: null,
showDatePickerBao: "",
start_assurance_expire: "",
end_assurance_expire: ""
},
selectCopy: {
keyword: '',
showDatePicker: '',
pageIndex: 1,
startDate: "",
endDate: "",
type: "",
department_id: "",
purchaseModality: "",
purchaseMethods: "",
status: "", status: "",
year: "", year: "",
plan_id: "", plan_id: "",
@ -1011,6 +1037,9 @@
} }
}, },
methods: { methods: {
reset () {
this.select = deepCopy(this.selectCopy)
},
searchContracts() { searchContracts() {
this.select.pageIndex = 1; this.select.pageIndex = 1;
this.getContracts(); this.getContracts();
@ -1617,4 +1646,20 @@
content: '(元)' content: '(元)'
} }
} }
.select-content {
display: flex;
flex-wrap: wrap;
& > div {
flex-basis: 45%;
margin: 5px;
& > span:nth-child(1) {
display: inline-block;
width: 140px;
}
}
}
</style> </style>

@ -28,7 +28,7 @@ module.exports = {
publicPath: '/admin/', publicPath: '/admin/',
outputDir: '/Users/liuxiangyu/Work/h-huanjingjiance/app/hjjc-workbench-service/public/admin', outputDir: '/Users/liuxiangyu/Work/h-huanjingjiance/app/hjjc-workbench-service/public/admin',
assetsDir: 'static', assetsDir: 'static',
lintOnSave: process.env.NODE_ENV === 'development', lintOnSave: false,
productionSourceMap: false, productionSourceMap: false,
css: { css: {
loaderOptions: { // 向 CSS 相关的 loader 传递选项 loaderOptions: { // 向 CSS 相关的 loader 传递选项

Loading…
Cancel
Save