Commit 9102337f by yangzhi

工单(急急急)

parent e8f8a26b
import axios from './axios'
export function getOrderTree() {
return axios.get('platform/platformWorkOrder/saas/findStateGroupList')
return axios.get(
'platform/platformWorkOrder/saas/findStateGroupList',
)
}
export function workConfirmed(id) {
return axios.post('platform/platformWorkOrder/confirmed', {
id: id,
})
return axios.post(
'platform/platformWorkOrder/confirmed',
{
id: id,
},
)
}
export function workAssigned(id, user) {
......@@ -44,5 +49,35 @@ export function replyTocustomer(id, msg) {
}
export function getOrderType() {
return axios.get('platform/platformWorkOrder/orderTypeList')
return axios.get(
'platform/platformWorkOrder/orderTypeList',
)
}
export function resume(id) {
return axios.post('platform/platformWorkOrder/resume', {
id: id,
})
}
export function pause(id) {
return axios.post('platform/platformWorkOrder/pause', {
id: id,
})
}
export function reject(id) {
return axios.post('platform/platformWorkOrder/reject', {
id: id,
})
}
export function closeForPending(id) {
return axios.post(
'platform/platformWorkOrder/closeForPending',
{
id: id,
},
)
}
export function getInfo(id) {
return axios.get(
'platform/platformWorkOrder/get?id=' + id,
)
}
......@@ -75,6 +75,10 @@
>
<el-option label="菜单" :value="0"></el-option>
<el-option label="按钮" :value="1"></el-option>
<el-option
label="左边栏"
:value="2"
></el-option>
</el-select>
</el-form-item>
<el-form-item
......@@ -213,8 +217,12 @@ export default {
label: '类型',
key: 'type',
width: '',
render: (item) =>
item.type === 1 ? '按钮' : '菜单',
render: item =>
item.type === 0
? '菜单'
: item.type === 1
? '按钮'
: '左边栏',
},
{ label: '路径名称', key: 'path', width: '' },
{ label: '路径地址', key: 'route', width: '' },
......@@ -224,10 +232,10 @@ export default {
label: '启动状态',
key: 'url',
width: '',
render: (item) => (
render: item => (
<el-checkbox
value={item.enable}
onChange={(v) => this.enableChange(item, v)}
onChange={v => this.enableChange(item, v)}
label=""
></el-checkbox>
),
......@@ -239,7 +247,7 @@ export default {
key: '',
width: '',
align: 'left',
render: (item) => (
render: item => (
<div>
<el-button
size="mini"
......
......@@ -47,7 +47,7 @@
label="工单模块"
v-if="
editForm.orderType === 'BUG' ||
editForm.orderType === 'DEMAND'
editForm.orderType === 'DEMAND'
"
>
<el-cascader
......@@ -85,7 +85,22 @@
placeholder="工单标题"
></el-input>
</el-form-item>
<el-form-item label="优先级" prop="priorityStatus">
<el-select
style="width: 164px"
filterable
v-model="editForm.priorityStatus"
placeholder="请选择"
>
<el-option
v-for="(priorityStatus,
index) in priorityStatusList"
:key="index"
:value="priorityStatus.value"
:label="priorityStatus.name"
></el-option>
</el-select>
</el-form-item>
<br />
<v-editor
height="400px"
......@@ -94,8 +109,18 @@
v-model="editForm.content"
filename="files"
></v-editor>
<br />
<br />
<el-form-item label="备注" prop="remark">
<el-input
style="width: 720px"
type="textarea"
:rows="8"
v-model="editForm.remark"
placeholder="备注"
></el-input>
</el-form-item>
</el-form>
<span slot="footer">
<el-button
size="mini"
......@@ -122,8 +147,22 @@ export default {
},
data() {
return {
priorityStatusList: [
{
value: 1,
name: '低',
},
{
value: 2,
name: '中',
},
{
value: 3,
name: '高',
},
],
pickerOption: {
disabledDate: (time) => {
disabledDate: time => {
return time.getTime() < Date.now() - 8.64e7
},
},
......@@ -140,6 +179,10 @@ export default {
type: Boolean,
default: false,
},
editFlag: {
type: Boolean,
default: false,
},
isEdit: {
type: Boolean,
default: false,
......@@ -163,10 +206,13 @@ export default {
})
}
},
editFlag() {
this.getMode(this.editForm.orderType)
},
},
methods: {
onSubmit() {
this.$refs.editForm.validate((v) => {
this.$refs.editForm.validate(v => {
if (!this.editForm.content) {
return this.$message.warning('请输入工单内容')
}
......@@ -178,7 +224,7 @@ export default {
url = 'platform/platformWorkOrder/add'
}
delete this.editForm.createTime
axios.post(url, this.editForm).then((res) => {
axios.post(url, this.editForm).then(res => {
this.$message.success(res.message)
this.$emit('onSubmit')
......@@ -189,7 +235,7 @@ export default {
getMode(code) {
if (code === 'BUG' || code === 'DEMAND') {
if (this.technologyList.length === 0) {
axios.get('sysSaasMenu/getAllMenus').then((res) => {
axios.get('sysSaasMenu/getAllMenus').then(res => {
this.technologyList = delChildren(res.data)
const otherList = { id: -1, name: '其他任务' }
this.technologyList.push(otherList)
......@@ -213,7 +259,7 @@ export default {
onChangeType(v) {
const foundItem = this.findRecursive(
this.technologyList,
(e) => e.id === v,
e => e.id === v,
)
this.$emit('onChangeModule', foundItem)
},
......
......@@ -109,10 +109,28 @@
></el-option>
</el-select>
</el-form-item>
<el-form-item label="优先级">
<el-select
style="width: 120px"
filterable
clearable
v-model="searchForm.priorityStatus"
placeholder="请选择"
>
<el-option
v-for="(priorityStatus,
index) in priorityStatusList"
:key="index"
:value="priorityStatus.value"
:label="priorityStatus.name"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="沟通状态">
<el-select
v-model="searchForm.sign"
placeholder="请选择"
style="width: 120px"
clearable
>
<el-option
......@@ -250,6 +268,16 @@
{{ detail.orderStatusTxt }}
</span>
</p>
<p class="item">
<span class="label">优先级</span>
<span class="value">
{{
handlePriorityStatus(
detail.priorityStatus,
)
}}
</span>
</p>
<p
class="item"
style="width: 100%; display: flex"
......@@ -261,6 +289,17 @@
v-html="detail.content"
></span>
</p>
<p
class="item"
style="width: 100%; display: flex"
>
<span class="label">备注</span>
<span
style="flex: 1; display: inline-block;padding:0 3%"
class="value"
v-html="detail.remark"
></span>
</p>
</div>
<div
style="padding: 5px; overflow: auto"
......@@ -362,6 +401,7 @@
:editForm="editForm"
:orderTypes="orderTypes"
:isEdit="isEdit"
:editFlag="editFlag"
ref="edit"
></edit>
<!-- 指派 -->
......@@ -448,6 +488,11 @@ import {
completeWorkOrder,
replyTocustomer,
getOrderType,
resume,
pause,
reject,
closeForPending,
getInfo,
} from '@/common/api/order'
import { getSystemUserList } from '@/common/api/system'
import { mapState } from 'vuex'
......@@ -457,7 +502,10 @@ import startWork from '@/assets/work/start.png'
import archiveWork from '@/assets/work/archive.png'
import completeWork from '@/assets/work/complete.png'
import rejectWork from '@/assets/work/reject.png'
import pauseWork from '@/assets/work/pause.png'
import resumetWork from '@/assets/work/resume.png'
import closetWork from '@/assets/work/close.png'
import updateWork from '@/assets/work/update.png'
export default {
name: 'task_center',
mixins: [pagination],
......@@ -468,11 +516,21 @@ export default {
},
data() {
const userInfo = localStorage.getItem('user')
let employeeId
if (userInfo) {
employeeId = JSON.parse(userInfo).employeeId
}
return {
priorityStatusList: [
{
value: 1,
name: '低',
},
{
value: 2,
name: '中',
},
{
value: 3,
name: '高',
},
],
loading: false,
detailLoading: false,
user: [],
......@@ -495,13 +553,13 @@ export default {
prop: 'createTime',
},
isEdit: false,
editFlag: false,
sourceData: [],
currentRowId: '',
editForm: {},
commentsVisible: false,
detail: {},
detailVisible: false,
employeeId,
taskTypes: [],
treeData: [],
defaultProps: {
......@@ -529,7 +587,6 @@ export default {
computed: {
...mapState(['deptStaff']),
tableColumns() {
// const employeeId = this.employeeId
return [
{
label: '工单标题',
......@@ -582,6 +639,20 @@ export default {
width: 80,
},
{
label: '优先级',
key: 'priorityStatus',
width: 80,
render: item => {
if (item.priorityStatus) {
return this.priorityStatusList.find(v => {
return v.value === item.priorityStatus
}).name
} else {
return ''
}
},
},
{
label: '描述',
key: 'content',
render: item => {
......@@ -621,10 +692,21 @@ export default {
{
label: '操作',
fixed: 'right',
width: 80,
width: 120,
align: 'center',
render: item => (
<span>
{item.orderStatus === 'PRE_HANDLING' &&
item.fromUser === this.userInfo.id && (
<span title="修改" class="icon-view">
<img
width="24"
height="24"
src={updateWork}
onClick={() => this.update(item)}
/>
</span>
)}
{
<span
title="详情"
......@@ -646,18 +728,39 @@ export default {
/>
</span>
)}
{item.orderStatus === 'TO_BE_CONFIRMED' && (
<span title="开始" class="icon-view">
{item.orderStatus === 'IN_PROGRESS' && (
<span title="暂停" class="icon-view">
<img
width="24"
height="24"
src={pauseWork}
onClick={() => this.pause(item)}
/>
</span>
)}
{item.orderStatus === 'PAUSEING' && (
<span title="恢复" class="icon-view">
<img
width="24"
height="24"
src={startWork}
onClick={() =>
this.startWorkOrder(item)
}
src={resumetWork}
onClick={() => this.resume(item)}
/>
</span>
)}
{item.orderStatus === 'TO_BE_CONFIRMED' &&
item.leaders === this.userInfo.id && (
<span title="开始" class="icon-view">
<img
width="24"
height="24"
src={startWork}
onClick={() =>
this.startWorkOrder(item)
}
/>
</span>
)}
{item.orderStatus === 'CLOSED' && (
<span title="归档" class="icon-view">
<img
......@@ -678,7 +781,20 @@ export default {
/>
</span>
)}
{item.orderStatus === 'IN_COMPLETE' && (
{item.orderStatus === 'PRE_HANDLING' && (
<span title="关闭" class="icon-view">
<img
width="24"
height="24"
src={closetWork}
onClick={() => this.close(item)}
/>
</span>
)}
{(item.orderStatus === 'TO_BE_ASSIGN' ||
item.orderStatus === 'TO_BE_CONFIRMED' ||
item.orderStatus === 'IN_PROGRESS' ||
item.orderStatus === 'IN_COMPLETE') && (
<span title="驳回" class="icon-view">
<img
width="24"
......@@ -695,16 +811,41 @@ export default {
},
},
methods: {
handlePriorityStatus(data) {
if (data) {
return this.priorityStatusList.find(v => {
return v.value === data
}).name
} else {
return ''
}
},
addData() {
this.editForm = JSON.parse(
JSON.stringify(this.cloneForm),
)
this.isEdit = false
// this.editForm = { taskAcceptanceUser: this.employeeId }
this.editDialog = true
this.$refs.editForm &&
this.$refs.editForm.resetFields()
},
update(v) {
getInfo(v.id).then(res => {
if (res.code === 200) {
this.editForm = JSON.parse(
JSON.stringify(res.data),
)
this.editForm.module = Number(
this.editForm.module,
)
this.editFlag = !this.editFlag
this.isEdit = true
this.editDialog = true
this.$refs.editForm &&
this.$refs.editForm.resetFields()
}
})
},
onChangeModule(item) {
this.$set(this.editForm, 'moduleName', item.name)
},
......@@ -918,12 +1059,61 @@ export default {
console.error(e)
}
},
async reject() {
async close(v) {
try {
this.$confirm('确定关闭吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}).then(() => {
closeForPending(v.id).then(res => {
if (res.code === 200) {
this.$message.success('已关闭')
this.getlist()
this.getOrderTree()
}
})
})
} catch {}
},
async resume(v) {
try {
const res = await resume(v.id)
if (res.code === 200) {
this.$message.success('已恢复')
this.getlist()
this.getOrderTree()
}
} catch (e) {
console.error(e)
}
},
async pause(v) {
try {
const res = await pause(v.id)
if (res.code === 200) {
this.$message.success('已暂停')
this.getlist()
this.getOrderTree()
}
} catch (e) {
console.error(e)
}
},
reject(v) {
try {
await this.$confirm('确定驳回吗?', '提示', {
this.$confirm('确定驳回吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}).then(() => {
reject(v.id).then(res => {
if (res.code === 200) {
this.$message.success('已驳回')
this.getlist()
this.getOrderTree()
}
})
})
} catch {}
},
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment