|
@@ -33,6 +33,7 @@
|
|
<!-- <el-option key="persongroup" value="persongroup" :label="i18n['userTask.assignType.persongroup']" /> -->
|
|
<!-- <el-option key="persongroup" value="persongroup" :label="i18n['userTask.assignType.persongroup']" /> -->
|
|
<el-option key="department" value="department" :label="i18n['userTask.assignType.department']" />
|
|
<el-option key="department" value="department" :label="i18n['userTask.assignType.department']" />
|
|
<el-option key="variable" value="variable" :label="i18n['userTask.assignType.variable']" />
|
|
<el-option key="variable" value="variable" :label="i18n['userTask.assignType.variable']" />
|
|
|
|
+ <el-option key="post" value="post" :label="i18n['userTask.assignType.post']" />
|
|
</el-select>
|
|
</el-select>
|
|
</div>
|
|
</div>
|
|
<div v-if="model.assignType === 'person'" class="panelRow">
|
|
<div v-if="model.assignType === 'person'" class="panelRow">
|
|
@@ -80,7 +81,7 @@
|
|
</div> -->
|
|
</div> -->
|
|
<div v-else-if="model.assignType === 'department'" class="panelRow">
|
|
<div v-else-if="model.assignType === 'department'" class="panelRow">
|
|
<div><span style="color: red">*</span> {{ i18n['userTask.assignType.department.title'] }}:</div>
|
|
<div><span style="color: red">*</span> {{ i18n['userTask.assignType.department.title'] }}:</div>
|
|
- <el-select
|
|
|
|
|
|
+ <!-- <el-select
|
|
size="small"
|
|
size="small"
|
|
style="width:90%; font-size:12px"
|
|
style="width:90%; font-size:12px"
|
|
:placeholder="i18n['userTask.assignType.department.placeholder']"
|
|
:placeholder="i18n['userTask.assignType.department.placeholder']"
|
|
@@ -91,7 +92,18 @@
|
|
@change="(e) => { onChange('assignValue', e); getPersons(e) }"
|
|
@change="(e) => { onChange('assignValue', e); getPersons(e) }"
|
|
>
|
|
>
|
|
<el-option v-for="department in departments" :key="department.deptId" :label="department.deptName" :value="department.deptId" />
|
|
<el-option v-for="department in departments" :key="department.deptId" :label="department.deptName" :value="department.deptId" />
|
|
- </el-select>
|
|
|
|
|
|
+ </el-select> -->
|
|
|
|
+ <treeselect
|
|
|
|
+ :value="model.assignValue"
|
|
|
|
+ size="small"
|
|
|
|
+ style="width:90%; font-size:12px"
|
|
|
|
+ :options="departments"
|
|
|
|
+ :normalizer="normalizer"
|
|
|
|
+ :multiple="true"
|
|
|
|
+ :is-disabled="readOnly"
|
|
|
|
+ :placeholder="i18n['userTask.assignType.department.placeholder']"
|
|
|
|
+ @input="(e) => { onChange('assignValue', e); getPersons(e) }"
|
|
|
|
+ />
|
|
</div>
|
|
</div>
|
|
<div v-else-if="model.assignType === 'variable'" class="panelRow">
|
|
<div v-else-if="model.assignType === 'variable'" class="panelRow">
|
|
<div><span style="color: red">*</span> {{ i18n['userTask.assignType.variable.title'] }}:</div>
|
|
<div><span style="color: red">*</span> {{ i18n['userTask.assignType.variable.title'] }}:</div>
|
|
@@ -108,6 +120,21 @@
|
|
<el-option v-for="(item, index) in variableOptions" :key="index" :label="item.label" :value="item.value" />
|
|
<el-option v-for="(item, index) in variableOptions" :key="index" :label="item.label" :value="item.value" />
|
|
</el-select>
|
|
</el-select>
|
|
</div>
|
|
</div>
|
|
|
|
+ <div v-else-if="model.assignType === 'post'" class="panelRow">
|
|
|
|
+ <div><span style="color: red">*</span> {{ i18n['userTask.assignType.post.title'] }}:</div>
|
|
|
|
+ <el-select
|
|
|
|
+ v-model.number="model.assignValue"
|
|
|
|
+ size="small"
|
|
|
|
+ style="width:90%; font-size:12px"
|
|
|
|
+ :placeholder="i18n['userTask.assignType.post.placeholder']"
|
|
|
|
+ :disabled="readOnly"
|
|
|
|
+ :multiple="true"
|
|
|
|
+ :filterable="true"
|
|
|
|
+ @change="(e) => { onChange('assignValue', e); getPersons(e) }"
|
|
|
|
+ >
|
|
|
|
+ <el-option v-for="(item, index) in postOptions" :key="index" :label="item.postName" :value="item.postId" />
|
|
|
|
+ </el-select>
|
|
|
|
+ </div>
|
|
<div class="panelRow">
|
|
<div class="panelRow">
|
|
<el-checkbox
|
|
<el-checkbox
|
|
size="small"
|
|
size="small"
|
|
@@ -120,7 +147,7 @@
|
|
:value="model.isCounterSign"
|
|
:value="model.isCounterSign"
|
|
@change="(e) => { onChange('isCounterSign', e); initCounterSign(e) }"
|
|
@change="(e) => { onChange('isCounterSign', e); initCounterSign(e) }"
|
|
>{{ i18n['userTask.counterSign'] }}</el-checkbox>
|
|
>{{ i18n['userTask.counterSign'] }}</el-checkbox>
|
|
- <el-checkbox
|
|
|
|
|
|
+ <!-- <el-checkbox
|
|
size="small"
|
|
size="small"
|
|
:disabled="
|
|
:disabled="
|
|
model.assignValue===undefined||
|
|
model.assignValue===undefined||
|
|
@@ -130,7 +157,7 @@
|
|
readOnly"
|
|
readOnly"
|
|
:value="model.activeOrder"
|
|
:value="model.activeOrder"
|
|
@change="(value) => onChange('activeOrder', value)"
|
|
@change="(value) => onChange('activeOrder', value)"
|
|
- >{{ i18n['userTask.activeOrder'] }}</el-checkbox>
|
|
|
|
|
|
+ >{{ i18n['userTask.activeOrder'] }}</el-checkbox> -->
|
|
<el-checkbox
|
|
<el-checkbox
|
|
v-if="(model.assignType === 'role' || model.assignType === 'department') &&
|
|
v-if="(model.assignType === 'role' || model.assignType === 'department') &&
|
|
model.assignValue!==undefined &&
|
|
model.assignValue!==undefined &&
|
|
@@ -157,11 +184,14 @@
|
|
<script>
|
|
<script>
|
|
import DefaultDetail from './DefaultDetail'
|
|
import DefaultDetail from './DefaultDetail'
|
|
import NodeDetail from './NodeDetail'
|
|
import NodeDetail from './NodeDetail'
|
|
|
|
+import Treeselect from '@riophae/vue-treeselect'
|
|
|
|
+import '@riophae/vue-treeselect/dist/vue-treeselect.css'
|
|
export default {
|
|
export default {
|
|
inject: ['i18n'],
|
|
inject: ['i18n'],
|
|
components: {
|
|
components: {
|
|
DefaultDetail,
|
|
DefaultDetail,
|
|
- NodeDetail
|
|
|
|
|
|
+ NodeDetail,
|
|
|
|
+ Treeselect
|
|
},
|
|
},
|
|
props: {
|
|
props: {
|
|
model: {
|
|
model: {
|
|
@@ -184,6 +214,10 @@ export default {
|
|
type: Array,
|
|
type: Array,
|
|
default: () => ([])
|
|
default: () => ([])
|
|
},
|
|
},
|
|
|
|
+ postOptions: {
|
|
|
|
+ type: Array,
|
|
|
|
+ default: () => ([])
|
|
|
|
+ },
|
|
tasks: {
|
|
tasks: {
|
|
type: Array,
|
|
type: Array,
|
|
default: () => ([])
|
|
default: () => ([])
|
|
@@ -222,6 +256,17 @@ export default {
|
|
}
|
|
}
|
|
},
|
|
},
|
|
methods: {
|
|
methods: {
|
|
|
|
+ /** 转换菜单数据结构 */
|
|
|
|
+ normalizer(node) {
|
|
|
|
+ if (node.children && !node.children.length) {
|
|
|
|
+ delete node.children
|
|
|
|
+ }
|
|
|
|
+ return {
|
|
|
|
+ id: node.deptId,
|
|
|
|
+ label: node.deptName,
|
|
|
|
+ children: node.children
|
|
|
|
+ }
|
|
|
|
+ },
|
|
getPersons(e) {
|
|
getPersons(e) {
|
|
if (e === undefined || e === null || e.length <= 1) {
|
|
if (e === undefined || e === null || e.length <= 1) {
|
|
this.onChange('activeOrder', false)
|
|
this.onChange('activeOrder', false)
|