Commit 9102337f by yangzhi

工单(急急急)

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