|
@@ -1,235 +1,107 @@
|
|
|
<template>
|
|
<template>
|
|
|
<div>
|
|
<div>
|
|
|
- <el-drawer
|
|
|
|
|
- v-model="drawer"
|
|
|
|
|
- :title="props.drawerTitle"
|
|
|
|
|
- size="918"
|
|
|
|
|
- @close="handleClose"
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <el-drawer v-model="drawer" :title="props.drawerTitle" size="918" @close="handleClose">
|
|
|
<div class="item-title"><span></span> 当报价信息满足以下条件时</div>
|
|
<div class="item-title"><span></span> 当报价信息满足以下条件时</div>
|
|
|
- <el-form
|
|
|
|
|
- ref="formRef"
|
|
|
|
|
- :model="formData"
|
|
|
|
|
- label-width="auto"
|
|
|
|
|
- class="demo-dynamic"
|
|
|
|
|
- :rules="formRules"
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <el-form ref="formRef" :model="formData" label-width="auto" class="demo-dynamic" :rules="formRules">
|
|
|
<!-- 多组条件容器(组之间是"或者"关系) -->
|
|
<!-- 多组条件容器(组之间是"或者"关系) -->
|
|
|
<div class="condition-container">
|
|
<div class="condition-container">
|
|
|
- <div
|
|
|
|
|
- v-for="(group, groupIndex) in formData.conditionGroups"
|
|
|
|
|
- :key="group.groupKey"
|
|
|
|
|
- class="condition-group"
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <div v-for="(group, groupIndex) in formData.conditionGroups" :key="group.groupKey" class="condition-group">
|
|
|
<!-- 组内条件行(行之间是"并且"关系) -->
|
|
<!-- 组内条件行(行之间是"并且"关系) -->
|
|
|
- <el-form-item
|
|
|
|
|
- v-for="(domain, rowIndex) in group.actions"
|
|
|
|
|
- :key="domain.key"
|
|
|
|
|
- :prop="`conditionGroups.${groupIndex}.actions.${rowIndex}`"
|
|
|
|
|
- :error="domain.errorMsg"
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <el-form-item v-for="(domain, rowIndex) in group.actions" :key="domain.key"
|
|
|
|
|
+ :prop="`conditionGroups.${groupIndex}.actions.${rowIndex}`" :error="domain.errorMsg">
|
|
|
<div class="condition-row">
|
|
<div class="condition-row">
|
|
|
<!-- 1. 条件类型选择框 -->
|
|
<!-- 1. 条件类型选择框 -->
|
|
|
- <el-select
|
|
|
|
|
- v-model="domain.attrCode"
|
|
|
|
|
- placeholder="选择条件"
|
|
|
|
|
- style="width: 341px"
|
|
|
|
|
- @change="handleConditionChange(domain)"
|
|
|
|
|
- clearable
|
|
|
|
|
- >
|
|
|
|
|
- <el-option
|
|
|
|
|
- v-for="item in dispatchList"
|
|
|
|
|
- :key="item.attrCode"
|
|
|
|
|
- :label="item.attrName"
|
|
|
|
|
- :value="item.attrCode"
|
|
|
|
|
- />
|
|
|
|
|
|
|
+ <el-select v-model="domain.attrCode" placeholder="选择条件" style="width: 341px"
|
|
|
|
|
+ @change="handleConditionChange(domain)" clearable>
|
|
|
|
|
+ <el-option v-for="item in dispatchList" :key="item.attrCode" :label="item.attrName"
|
|
|
|
|
+ :value="item.attrCode" />
|
|
|
</el-select>
|
|
</el-select>
|
|
|
|
|
|
|
|
<!-- 2. 运算符选择框 -->
|
|
<!-- 2. 运算符选择框 -->
|
|
|
- <el-select
|
|
|
|
|
- v-model="domain.operator"
|
|
|
|
|
- placeholder="选择运算符"
|
|
|
|
|
- style="width: 100px"
|
|
|
|
|
- :disabled="!domain.attrCode"
|
|
|
|
|
- clearable
|
|
|
|
|
- @change="handleOperatorChange(domain)"
|
|
|
|
|
- >
|
|
|
|
|
- <el-option
|
|
|
|
|
- v-for="item in getOperations(domain.attrCode)"
|
|
|
|
|
- :key="item.value"
|
|
|
|
|
- :label="item.label"
|
|
|
|
|
- :value="item.value"
|
|
|
|
|
- />
|
|
|
|
|
|
|
+ <el-select v-model="domain.operator" placeholder="选择运算符" style="width: 100px"
|
|
|
|
|
+ :disabled="!domain.attrCode" clearable @change="handleOperatorChange(domain)">
|
|
|
|
|
+ <el-option v-for="item in getOperations(domain.attrCode)" :key="item.value" :label="item.label"
|
|
|
|
|
+ :value="item.value" />
|
|
|
</el-select>
|
|
</el-select>
|
|
|
|
|
|
|
|
<!-- 3. 值输入区域(动态切换) -->
|
|
<!-- 3. 值输入区域(动态切换) -->
|
|
|
<!-- 单选按钮组 -->
|
|
<!-- 单选按钮组 -->
|
|
|
- <el-radio-group
|
|
|
|
|
- v-model="domain.min"
|
|
|
|
|
- v-if="getConditionType(domain.attrCode) === 'radio'"
|
|
|
|
|
- >
|
|
|
|
|
- <el-radio
|
|
|
|
|
- :value="item.id+''"
|
|
|
|
|
- size="large"
|
|
|
|
|
- v-for="item in getOptions(domain.attrCode)"
|
|
|
|
|
- :key="item.id+''"
|
|
|
|
|
- >{{ item.name }}</el-radio
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <el-radio-group v-model="domain.min" v-if="getConditionType(domain.attrCode) === 'radio'">
|
|
|
|
|
+ <el-radio :value="item.id + ''" size="large" v-for="item in getOptions(domain.attrCode)"
|
|
|
|
|
+ :key="item.id + ''">{{ item.name }}</el-radio>
|
|
|
</el-radio-group>
|
|
</el-radio-group>
|
|
|
|
|
|
|
|
<!-- 多选下拉 -->
|
|
<!-- 多选下拉 -->
|
|
|
- <el-select
|
|
|
|
|
- v-model="domain.minArray"
|
|
|
|
|
- placeholder="选择值"
|
|
|
|
|
- multiple
|
|
|
|
|
- style="width: 341px"
|
|
|
|
|
- v-if="getConditionType(domain.attrCode) === 'checkbox'"
|
|
|
|
|
- :disabled="!domain.operator"
|
|
|
|
|
- clearable
|
|
|
|
|
- >
|
|
|
|
|
- <el-option
|
|
|
|
|
- v-for="item in getOptions(domain.attrCode)"
|
|
|
|
|
- :key="item.id"
|
|
|
|
|
- :label="item.name"
|
|
|
|
|
- :value="item.id"
|
|
|
|
|
- />
|
|
|
|
|
|
|
+ <el-select v-model="domain.minArray" placeholder="选择值" multiple style="width: 341px"
|
|
|
|
|
+ v-if="getConditionType(domain.attrCode) === 'checkbox'" :disabled="!domain.operator" clearable>
|
|
|
|
|
+ <el-option v-for="item in getOptions(domain.attrCode)" :key="item.id" :label="item.name"
|
|
|
|
|
+ :value="item.id" />
|
|
|
</el-select>
|
|
</el-select>
|
|
|
|
|
|
|
|
<!-- 单选下拉 -->
|
|
<!-- 单选下拉 -->
|
|
|
- <el-select
|
|
|
|
|
- v-model="domain.max"
|
|
|
|
|
- placeholder="选择值"
|
|
|
|
|
- style="width: 341px"
|
|
|
|
|
- v-if="getConditionType(domain.attrCode) === 'select'"
|
|
|
|
|
- :disabled="!domain.operator"
|
|
|
|
|
- clearable
|
|
|
|
|
- >
|
|
|
|
|
- <el-option
|
|
|
|
|
- v-for="item in getOptions(domain.attrCode)"
|
|
|
|
|
- :key="item.code"
|
|
|
|
|
- :label="item.name"
|
|
|
|
|
- :value="item.code"
|
|
|
|
|
- />
|
|
|
|
|
|
|
+ <el-select v-model="domain.max" placeholder="选择值" style="width: 341px" multiple
|
|
|
|
|
+ v-if="getConditionType(domain.attrCode) === 'select'" :disabled="!domain.operator" clearable>
|
|
|
|
|
+ <el-option v-for="item in getOptions(domain.attrCode)" :key="item.code" :label="item.name"
|
|
|
|
|
+ :value="item.code" />
|
|
|
</el-select>
|
|
</el-select>
|
|
|
|
|
|
|
|
<!-- 数值输入 -->
|
|
<!-- 数值输入 -->
|
|
|
- <el-input
|
|
|
|
|
- v-model="domain.min"
|
|
|
|
|
- placeholder="输入数值"
|
|
|
|
|
- type="number"
|
|
|
|
|
- style="width: 341px"
|
|
|
|
|
- v-if="
|
|
|
|
|
- getConditionType(domain.attrCode) === 'inputNumber' &&
|
|
|
|
|
- domain.operator !== '1'
|
|
|
|
|
- "
|
|
|
|
|
- :disabled="!domain.operator"
|
|
|
|
|
- clearable
|
|
|
|
|
- />
|
|
|
|
|
|
|
+ <el-input v-model="domain.min" placeholder="输入数值" type="number" style="width: 341px" v-if="
|
|
|
|
|
+ getConditionType(domain.attrCode) === 'inputNumber' &&
|
|
|
|
|
+ domain.operator !== '1'
|
|
|
|
|
+ " :disabled="!domain.operator" clearable />
|
|
|
<!-- 数值输入范围 -->
|
|
<!-- 数值输入范围 -->
|
|
|
- <div
|
|
|
|
|
- v-if="
|
|
|
|
|
- getConditionType(domain.attrCode) === 'inputNumber' &&
|
|
|
|
|
- domain.operator == '1'
|
|
|
|
|
- "
|
|
|
|
|
- >
|
|
|
|
|
- <el-input-number
|
|
|
|
|
- v-model="domain.min"
|
|
|
|
|
- :disabled="!domain.operator"
|
|
|
|
|
- style="width: 160px"
|
|
|
|
|
- ></el-input-number>
|
|
|
|
|
|
|
+ <div v-if="
|
|
|
|
|
+ getConditionType(domain.attrCode) === 'inputNumber' &&
|
|
|
|
|
+ domain.operator == '1'
|
|
|
|
|
+ ">
|
|
|
|
|
+ <el-input-number v-model="domain.min" :disabled="!domain.operator"
|
|
|
|
|
+ style="width: 160px"></el-input-number>
|
|
|
至
|
|
至
|
|
|
- <el-input-number
|
|
|
|
|
- v-model="domain.max"
|
|
|
|
|
- :disabled="!domain.operator"
|
|
|
|
|
- style="width: 170px"
|
|
|
|
|
- ></el-input-number>
|
|
|
|
|
|
|
+ <el-input-number v-model="domain.max" :disabled="!domain.operator"
|
|
|
|
|
+ style="width: 170px"></el-input-number>
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
<!-- 标签输入 -->
|
|
<!-- 标签输入 -->
|
|
|
- <el-input-tag
|
|
|
|
|
- v-model="domain.minArray"
|
|
|
|
|
- style="width: 341px"
|
|
|
|
|
- v-if="getConditionType(domain.attrCode) === 'inputTag'"
|
|
|
|
|
- :disabled="!domain.operator"
|
|
|
|
|
- placeholder="输入内容后按回车键隔开"
|
|
|
|
|
- />
|
|
|
|
|
|
|
+ <el-input-tag v-model="domain.minArray" style="width: 341px"
|
|
|
|
|
+ v-if="getConditionType(domain.attrCode) === 'inputTag'" :disabled="!domain.operator"
|
|
|
|
|
+ placeholder="输入内容后按回车键隔开" />
|
|
|
|
|
|
|
|
<!-- 日期选择 -->
|
|
<!-- 日期选择 -->
|
|
|
- <el-date-picker
|
|
|
|
|
- v-model="domain.max"
|
|
|
|
|
- type="date"
|
|
|
|
|
- placeholder="选择日期"
|
|
|
|
|
- style="width: 341px"
|
|
|
|
|
- v-if="
|
|
|
|
|
- getConditionType(domain.attrCode) === 'datetime' &&
|
|
|
|
|
- domain.operator !== '1'
|
|
|
|
|
- "
|
|
|
|
|
- :disabled="!domain.operator"
|
|
|
|
|
- clearable
|
|
|
|
|
- />
|
|
|
|
|
|
|
+ <el-date-picker v-model="domain.max" type="date" placeholder="选择日期" style="width: 341px" v-if="
|
|
|
|
|
+ getConditionType(domain.attrCode) === 'datetime' &&
|
|
|
|
|
+ domain.operator !== '1'
|
|
|
|
|
+ " :disabled="!domain.operator" clearable />
|
|
|
|
|
|
|
|
<!-- 日期范围选择 -->
|
|
<!-- 日期范围选择 -->
|
|
|
- <div
|
|
|
|
|
- v-if="
|
|
|
|
|
- getConditionType(domain.attrCode) === 'datetime' &&
|
|
|
|
|
- domain.operator == '1'
|
|
|
|
|
- "
|
|
|
|
|
- >
|
|
|
|
|
- <el-date-picker
|
|
|
|
|
- v-model="domain.min"
|
|
|
|
|
- :disabled="!domain.operator"
|
|
|
|
|
- type="datetime"
|
|
|
|
|
- format="YYYY-MM-DD HH:mm:ss"
|
|
|
|
|
- value-format="YYYY-MM-DD HH:mm:ss"
|
|
|
|
|
- time-format="HH:mm:ss"
|
|
|
|
|
- placeholder="选择日期时间"
|
|
|
|
|
- style="width: 170px"
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <div v-if="
|
|
|
|
|
+ getConditionType(domain.attrCode) === 'datetime' &&
|
|
|
|
|
+ domain.operator == '1'
|
|
|
|
|
+ ">
|
|
|
|
|
+ <el-date-picker v-model="domain.min" :disabled="!domain.operator" type="datetime"
|
|
|
|
|
+ format="YYYY-MM-DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" time-format="HH:mm:ss"
|
|
|
|
|
+ placeholder="选择日期时间" style="width: 170px">
|
|
|
</el-date-picker>
|
|
</el-date-picker>
|
|
|
至
|
|
至
|
|
|
- <el-date-picker
|
|
|
|
|
- v-model="domain.max"
|
|
|
|
|
- :disabled="!domain.operator"
|
|
|
|
|
- type="datetime"
|
|
|
|
|
- format="YYYY-MM-DD HH:mm:ss"
|
|
|
|
|
- value-format="YYYY-MM-DD HH:mm:ss"
|
|
|
|
|
- time-format="HH:mm:ss"
|
|
|
|
|
- placeholder="选择日期时间"
|
|
|
|
|
- style="width: 170px"
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <el-date-picker v-model="domain.max" :disabled="!domain.operator" type="datetime"
|
|
|
|
|
+ format="YYYY-MM-DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" time-format="HH:mm:ss"
|
|
|
|
|
+ placeholder="选择日期时间" style="width: 170px">
|
|
|
</el-date-picker>
|
|
</el-date-picker>
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
<!-- 车牌级联选择 -->
|
|
<!-- 车牌级联选择 -->
|
|
|
- <el-cascader
|
|
|
|
|
- :options="getOptions(domain.attrCode)"
|
|
|
|
|
- :props="cascaderProps"
|
|
|
|
|
- v-model="domain.max"
|
|
|
|
|
- placeholder="选择车牌"
|
|
|
|
|
- clearable
|
|
|
|
|
- v-if="getConditionType(domain.attrCode) === 'plate'"
|
|
|
|
|
- style="width: 341px"
|
|
|
|
|
- :disabled="!domain.operator"
|
|
|
|
|
- />
|
|
|
|
|
|
|
+ <el-cascader :options="getOptions(domain.attrCode)" :props="cascaderProps" v-model="domain.max"
|
|
|
|
|
+ placeholder="选择车牌" clearable v-if="getConditionType(domain.attrCode) === 'plate'" style="width: 341px"
|
|
|
|
|
+ :disabled="!domain.operator" />
|
|
|
|
|
|
|
|
<!-- 4. 删除行按钮 -->
|
|
<!-- 4. 删除行按钮 -->
|
|
|
- <el-button
|
|
|
|
|
- type="text"
|
|
|
|
|
- :icon="Delete"
|
|
|
|
|
- size="small"
|
|
|
|
|
- style="color: #333333"
|
|
|
|
|
- @click="handleRemoveRow(groupIndex, rowIndex)"
|
|
|
|
|
- v-if="group.actions.length > 1"
|
|
|
|
|
- />
|
|
|
|
|
|
|
+ <el-button type="text" :icon="Delete" size="small" style="color: #333333"
|
|
|
|
|
+ @click="handleRemoveRow(groupIndex, rowIndex)" v-if="group.actions.length > 1" />
|
|
|
</div>
|
|
</div>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
|
|
|
<!-- 组内添加并且条件按钮 -->
|
|
<!-- 组内添加并且条件按钮 -->
|
|
|
- <el-button
|
|
|
|
|
- type="text"
|
|
|
|
|
- @click="handleAddRow(groupIndex)"
|
|
|
|
|
- class="add-condition-btn"
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <el-button type="text" @click="handleAddRow(groupIndex)" class="add-condition-btn">
|
|
|
+ 并且条件
|
|
+ 并且条件
|
|
|
</el-button>
|
|
</el-button>
|
|
|
</div>
|
|
</div>
|
|
@@ -246,104 +118,40 @@
|
|
|
<!-- 执行动作区域 -->
|
|
<!-- 执行动作区域 -->
|
|
|
<!-- 执行动作区域 -->
|
|
<!-- 执行动作区域 -->
|
|
|
<div class="item-title"><span></span> 将执行以下动作</div>
|
|
<div class="item-title"><span></span> 将执行以下动作</div>
|
|
|
- <el-form
|
|
|
|
|
- :model="formData"
|
|
|
|
|
- :rules="formRules"
|
|
|
|
|
- ref="formRef"
|
|
|
|
|
- class="action-form"
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <el-form :model="formData" :rules="formRules" ref="formRef" class="action-form">
|
|
|
<!-- 指定报价协议 -->
|
|
<!-- 指定报价协议 -->
|
|
|
- <el-form-item
|
|
|
|
|
- prop="formdata.actionJson[0].agreementId"
|
|
|
|
|
- class="form-item"
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <el-form-item prop="formdata.actionJson[0].agreementId" class="form-item">
|
|
|
<span>指定报价协议:</span>
|
|
<span>指定报价协议:</span>
|
|
|
- <el-select
|
|
|
|
|
- v-model="formData.actionJson[0].agreementId"
|
|
|
|
|
- placeholder="选择报价协议"
|
|
|
|
|
- style="width: 240px"
|
|
|
|
|
- clearable
|
|
|
|
|
- >
|
|
|
|
|
- <el-option
|
|
|
|
|
- v-for="item in agreementList"
|
|
|
|
|
- :key="item.id"
|
|
|
|
|
- :label="item.agreementName"
|
|
|
|
|
- :value="item.id"
|
|
|
|
|
- />
|
|
|
|
|
|
|
+ <el-select v-model="formData.actionJson[0].agreementId" placeholder="选择报价协议" style="width: 240px" clearable>
|
|
|
|
|
+ <el-option v-for="item in agreementList" :key="item.id" :label="item.agreementName" :value="item.id" />
|
|
|
</el-select>
|
|
</el-select>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
|
|
|
<!-- 对接人变更方式选择 -->
|
|
<!-- 对接人变更方式选择 -->
|
|
|
<el-form-item>
|
|
<el-form-item>
|
|
|
- <el-radio-group
|
|
|
|
|
- v-model="formData.actionJson[1].linkType"
|
|
|
|
|
- @change="handleTypeChange"
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <el-radio-group v-model="formData.actionJson[1].linkType" @change="handleTypeChange">
|
|
|
<!-- 手动输入对接人 -->
|
|
<!-- 手动输入对接人 -->
|
|
|
- <el-radio
|
|
|
|
|
- value="manual_input"
|
|
|
|
|
- size="large"
|
|
|
|
|
- style="margin: 20px 0; display: block"
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <el-radio value="manual_input" size="large" style="margin: 20px 0; display: block">
|
|
|
手动输入对接人信息:
|
|
手动输入对接人信息:
|
|
|
- <el-form-item
|
|
|
|
|
- prop="actionJson.name"
|
|
|
|
|
- style="display: inline-block; margin: 0 20px"
|
|
|
|
|
- >
|
|
|
|
|
- <el-input
|
|
|
|
|
- v-model="formData.actionJson[1].name"
|
|
|
|
|
- style="width: 327px"
|
|
|
|
|
- placeholder="变更后对接人姓名"
|
|
|
|
|
- :disabled="
|
|
|
|
|
- formData.actionJson[1].linkType === 'select_account'
|
|
|
|
|
- "
|
|
|
|
|
- clearable
|
|
|
|
|
- />
|
|
|
|
|
|
|
+ <el-form-item prop="actionJson.name" style="display: inline-block; margin: 0 20px">
|
|
|
|
|
+ <el-input v-model="formData.actionJson[1].name" style="width: 327px" placeholder="变更后对接人姓名" :disabled="formData.actionJson[1].linkType === 'select_account'
|
|
|
|
|
+ " clearable />
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
- <el-form-item
|
|
|
|
|
- prop="actionJson.phone"
|
|
|
|
|
- style="display: inline-block"
|
|
|
|
|
- >
|
|
|
|
|
- <el-input
|
|
|
|
|
- v-model="formData.actionJson[1].phone"
|
|
|
|
|
- style="width: 327px"
|
|
|
|
|
- type="number"
|
|
|
|
|
- placeholder="变更后对接人手机号"
|
|
|
|
|
- maxlength="11"
|
|
|
|
|
- @input="handlePhoneInput"
|
|
|
|
|
- :disabled="
|
|
|
|
|
- formData.actionJson[1].linkType === 'select_account'
|
|
|
|
|
- "
|
|
|
|
|
- clearable
|
|
|
|
|
- />
|
|
|
|
|
|
|
+ <el-form-item prop="actionJson.phone" style="display: inline-block">
|
|
|
|
|
+ <el-input v-model="formData.actionJson[1].phone" style="width: 327px" type="number"
|
|
|
|
|
+ placeholder="变更后对接人手机号" maxlength="11" @input="handlePhoneInput" :disabled="formData.actionJson[1].linkType === 'select_account'
|
|
|
|
|
+ " clearable />
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-radio>
|
|
</el-radio>
|
|
|
|
|
|
|
|
<!-- 选择保司账号 -->
|
|
<!-- 选择保司账号 -->
|
|
|
- <el-radio
|
|
|
|
|
- value="select_account"
|
|
|
|
|
- size="large"
|
|
|
|
|
- style="margin: 20px 0; display: block"
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <el-radio value="select_account" size="large" style="margin: 20px 0; display: block">
|
|
|
选择已有保司账号:
|
|
选择已有保司账号:
|
|
|
- <el-form-item
|
|
|
|
|
- prop="actionJson.accountId"
|
|
|
|
|
- style="display: inline-block; margin-left: 20px"
|
|
|
|
|
- >
|
|
|
|
|
- <el-select
|
|
|
|
|
- v-model="formData.actionJson[1].accountId"
|
|
|
|
|
- placeholder="选择变更后的保司账号"
|
|
|
|
|
- style="width: 662px"
|
|
|
|
|
- :disabled="formData.actionJson[1].linkType === 'manual_input'"
|
|
|
|
|
- clearable
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <el-form-item prop="actionJson.accountId" style="display: inline-block; margin-left: 20px">
|
|
|
|
|
+ <el-select v-model="formData.actionJson[1].accountId" placeholder="选择变更后的保司账号" style="width: 662px"
|
|
|
|
|
+ :disabled="formData.actionJson[1].linkType === 'manual_input'" clearable>
|
|
|
<!-- -->
|
|
<!-- -->
|
|
|
- <el-option
|
|
|
|
|
- v-for="item in accountList"
|
|
|
|
|
- :key="item.id"
|
|
|
|
|
- :label="item.username"
|
|
|
|
|
- :value="item.id"
|
|
|
|
|
- />
|
|
|
|
|
|
|
+ <el-option v-for="item in accountList" :key="item.id" :label="item.username" :value="item.id" />
|
|
|
</el-select>
|
|
</el-select>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-radio>
|
|
</el-radio>
|
|
@@ -511,9 +319,8 @@ const validateConditionGroups = (
|
|
|
// 3.1 多选/标签类型(依赖minArray)
|
|
// 3.1 多选/标签类型(依赖minArray)
|
|
|
if (["checkbox", "inputTag"].includes(attrType)) {
|
|
if (["checkbox", "inputTag"].includes(attrType)) {
|
|
|
if (!row.minArray || row.minArray.length === 0) {
|
|
if (!row.minArray || row.minArray.length === 0) {
|
|
|
- row.errorMsg = `请选择至少一个条件值(当前为${
|
|
|
|
|
- attrType === "checkbox" ? "多选" : "标签"
|
|
|
|
|
- }类型)`;
|
|
|
|
|
|
|
+ row.errorMsg = `请选择至少一个条件值(当前为${attrType === "checkbox" ? "多选" : "标签"
|
|
|
|
|
+ }类型)`;
|
|
|
return callback(new Error(row.errorMsg));
|
|
return callback(new Error(row.errorMsg));
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -536,11 +343,9 @@ const validateConditionGroups = (
|
|
|
? row.max
|
|
? row.max
|
|
|
: row.min;
|
|
: row.min;
|
|
|
if (targetVal === null || targetVal === "" || targetVal === undefined) {
|
|
if (targetVal === null || targetVal === "" || targetVal === undefined) {
|
|
|
- row.errorMsg = `请${
|
|
|
|
|
- attrType === "datetime" ? "选择" : "输入"
|
|
|
|
|
- }条件值(当前为${
|
|
|
|
|
- attrType === "select" ? "下拉选择" : "文本输入"
|
|
|
|
|
- }类型)`;
|
|
|
|
|
|
|
+ row.errorMsg = `请${attrType === "datetime" ? "选择" : "输入"
|
|
|
|
|
+ }条件值(当前为${attrType === "select" ? "下拉选择" : "文本输入"
|
|
|
|
|
+ }类型)`;
|
|
|
return callback(new Error(row.errorMsg));
|
|
return callback(new Error(row.errorMsg));
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -728,8 +533,8 @@ const handlePhoneInput = () => {
|
|
|
const getList = async () => {
|
|
const getList = async () => {
|
|
|
try {
|
|
try {
|
|
|
const res = await api.dispatchApi.listByParam({
|
|
const res = await api.dispatchApi.listByParam({
|
|
|
- scopeApplication: 'PROTOCOL_SCHEDULING',
|
|
|
|
|
- companyId: props.companyId
|
|
|
|
|
|
|
+ scopeApplication: 'PROTOCOL_SCHEDULING',
|
|
|
|
|
+ companyId: props.companyId
|
|
|
});
|
|
});
|
|
|
dispatchList.value = res.data;
|
|
dispatchList.value = res.data;
|
|
|
} catch (error) {
|
|
} catch (error) {
|
|
@@ -802,12 +607,12 @@ const submit = async () => {
|
|
|
},
|
|
},
|
|
|
},
|
|
},
|
|
|
];
|
|
];
|
|
|
- if(!actionJson[0].agreementId) {
|
|
|
|
|
- ElMessage({
|
|
|
|
|
- message: '请选择指定报价协议!',
|
|
|
|
|
- type: 'error'
|
|
|
|
|
- })
|
|
|
|
|
- return
|
|
|
|
|
|
|
+ if (!actionJson[0].agreementId) {
|
|
|
|
|
+ ElMessage({
|
|
|
|
|
+ message: '请选择指定报价协议!',
|
|
|
|
|
+ type: 'error'
|
|
|
|
|
+ })
|
|
|
|
|
+ return
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
const submitData = {
|
|
const submitData = {
|
|
@@ -816,8 +621,7 @@ const submit = async () => {
|
|
|
actions,
|
|
actions,
|
|
|
...(dispatchId.value && { dispatchId: dispatchId.value }), // 编辑时携带ID
|
|
...(dispatchId.value && { dispatchId: dispatchId.value }), // 编辑时携带ID
|
|
|
};
|
|
};
|
|
|
-
|
|
|
|
|
- const apiFunc = editType==="edit"
|
|
|
|
|
|
|
+ const apiFunc = editType === "edit"
|
|
|
? api.dispatchApi.updateAgreementDispatch
|
|
? api.dispatchApi.updateAgreementDispatch
|
|
|
: api.dispatchApi.addAgreementDispatch;
|
|
: api.dispatchApi.addAgreementDispatch;
|
|
|
// const apiFunc = api.dispatchApi.addAgreementDispatch;
|
|
// const apiFunc = api.dispatchApi.addAgreementDispatch;
|
|
@@ -849,6 +653,7 @@ const handleClose = () => {
|
|
|
// console.log(dictionaries.value);
|
|
// console.log(dictionaries.value);
|
|
|
// formData.value = props.editData;
|
|
// formData.value = props.editData;
|
|
|
// });
|
|
// });
|
|
|
|
|
+
|
|
|
onMounted(async () => {
|
|
onMounted(async () => {
|
|
|
// 1. 加载基础数据(条件类型、协议列表等)
|
|
// 1. 加载基础数据(条件类型、协议列表等)
|
|
|
await Promise.all([
|
|
await Promise.all([
|
|
@@ -856,6 +661,8 @@ onMounted(async () => {
|
|
|
getByCompanyId(), // 报价协议列表
|
|
getByCompanyId(), // 报价协议列表
|
|
|
getAccountList(), // 保司账号列表
|
|
getAccountList(), // 保司账号列表
|
|
|
]);
|
|
]);
|
|
|
|
|
+ regionLicenseNumber('0'),//车牌地区
|
|
|
|
|
+ regionLicenseNumber('14')//车牌号
|
|
|
dictionaries.value = await getDictItems({ dictCode: "dispatch_action" });
|
|
dictionaries.value = await getDictItems({ dictCode: "dispatch_action" });
|
|
|
|
|
|
|
|
// 2. 提取props参数
|
|
// 2. 提取props参数
|
|
@@ -883,9 +690,9 @@ onMounted(async () => {
|
|
|
// 条件组:根据editType动态赋值
|
|
// 条件组:根据editType动态赋值
|
|
|
conditionGroups: [] as ConditionGroup[],
|
|
conditionGroups: [] as ConditionGroup[],
|
|
|
};
|
|
};
|
|
|
- let isDefaultScene = false;
|
|
|
|
|
|
|
+ let isDefaultScene = false;
|
|
|
// 4. 新增场景:仅初始化conditionGroups为默认一组条件
|
|
// 4. 新增场景:仅初始化conditionGroups为默认一组条件
|
|
|
- if (!editType || editType === "add") {
|
|
|
|
|
|
|
+ if (!editType || editType === "add") {
|
|
|
isDefaultScene = true;
|
|
isDefaultScene = true;
|
|
|
console.log("[初始化] 进入场景:无editType或add"); // 新增日志
|
|
console.log("[初始化] 进入场景:无editType或add"); // 新增日志
|
|
|
|
|
|
|
@@ -959,8 +766,8 @@ onMounted(async () => {
|
|
|
const rawGroups = editData.groupedAttrLinks
|
|
const rawGroups = editData.groupedAttrLinks
|
|
|
? editData.groupedAttrLinks
|
|
? editData.groupedAttrLinks
|
|
|
: editData.attrLinks
|
|
: editData.attrLinks
|
|
|
- ? [editData.attrLinks]
|
|
|
|
|
- : [];
|
|
|
|
|
|
|
+ ? [editData.attrLinks]
|
|
|
|
|
+ : [];
|
|
|
|
|
|
|
|
baseFormData.conditionGroups = rawGroups.map(
|
|
baseFormData.conditionGroups = rawGroups.map(
|
|
|
(rawGroup: any[], groupIdx: number) => {
|
|
(rawGroup: any[], groupIdx: number) => {
|
|
@@ -1054,6 +861,33 @@ onMounted(async () => {
|
|
|
formData.value.conditionGroups.length
|
|
formData.value.conditionGroups.length
|
|
|
);
|
|
);
|
|
|
});
|
|
});
|
|
|
|
|
+const regionLicenseNumber = (value: string) => {
|
|
|
|
|
+ api.agreementApi.getAreaLicense(value).then((res: any) => {
|
|
|
|
|
+ if (res.code == '200') {
|
|
|
|
|
+ let data: any = [];
|
|
|
|
|
+ res.data.map((val: any) => {
|
|
|
|
|
+ data.push({
|
|
|
|
|
+ code: val.areaNumber,
|
|
|
|
|
+ name: val.license,
|
|
|
|
|
+ })
|
|
|
|
|
+ return val;
|
|
|
|
|
+ })
|
|
|
|
|
+ if(value == '14'){
|
|
|
|
|
+ const licenseNoItem = dispatchList.value.find((item: any) => item.attrCode == 'LicenseNo');
|
|
|
|
|
+ if (licenseNoItem) {
|
|
|
|
|
+ licenseNoItem.dictLabal = data;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ if(value == '0'){
|
|
|
|
|
+ const licenseAreaItem = dispatchList.value.find((item: any) => item.attrCode == 'LicenseArea');
|
|
|
|
|
+ if (licenseAreaItem) {
|
|
|
|
|
+ licenseAreaItem.dictLabal = data;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ } else {
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+}
|
|
|
</script>
|
|
</script>
|
|
|
|
|
|
|
|
<style scoped lang="scss">
|
|
<style scoped lang="scss">
|
|
@@ -1101,6 +935,7 @@ onMounted(async () => {
|
|
|
display: flex;
|
|
display: flex;
|
|
|
align-items: center;
|
|
align-items: center;
|
|
|
margin-bottom: 20px;
|
|
margin-bottom: 20px;
|
|
|
|
|
+
|
|
|
span {
|
|
span {
|
|
|
display: inline-block;
|
|
display: inline-block;
|
|
|
width: 4px;
|
|
width: 4px;
|
|
@@ -1110,14 +945,17 @@ onMounted(async () => {
|
|
|
margin-right: 8px;
|
|
margin-right: 8px;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.form-item {
|
|
.form-item {
|
|
|
display: flex;
|
|
display: flex;
|
|
|
align-items: center;
|
|
align-items: center;
|
|
|
|
|
+
|
|
|
span {
|
|
span {
|
|
|
font-size: 14px;
|
|
font-size: 14px;
|
|
|
margin-right: 10px;
|
|
margin-right: 10px;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.foot {
|
|
.foot {
|
|
|
display: flex;
|
|
display: flex;
|
|
|
justify-content: center;
|
|
justify-content: center;
|
|
@@ -1130,9 +968,11 @@ onMounted(async () => {
|
|
|
:deep(.main-container) {
|
|
:deep(.main-container) {
|
|
|
height: 100%;
|
|
height: 100%;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
:deep(.el-row) {
|
|
:deep(.el-row) {
|
|
|
height: 100%;
|
|
height: 100%;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
:deep(.el-drawer__header) {
|
|
:deep(.el-drawer__header) {
|
|
|
height: 48px;
|
|
height: 48px;
|
|
|
font-size: 20px;
|
|
font-size: 20px;
|
|
@@ -1141,6 +981,7 @@ onMounted(async () => {
|
|
|
margin-bottom: 24px;
|
|
margin-bottom: 24px;
|
|
|
padding-bottom: 20px;
|
|
padding-bottom: 20px;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
:deep(.el-drawer__body) {
|
|
:deep(.el-drawer__body) {
|
|
|
padding: 0 24px;
|
|
padding: 0 24px;
|
|
|
}
|
|
}
|