|
@@ -0,0 +1,514 @@
|
|
|
+<template>
|
|
|
+ <div>
|
|
|
+ <el-button size="mini" type="text" @click="onEdit">编 辑</el-button>
|
|
|
+ <el-drawer title="月预测设置" :visible.sync="dialogVisible" size="600px" direction="rtl"
|
|
|
+ :show-close="false" append-to-body @close="onClose">
|
|
|
+ <div class="drawer__panel">
|
|
|
+ <el-row :gutter="20">
|
|
|
+ <el-form :model="form" :rules="rules" ref="form" label-width="120px" label-position="right" size="mini">
|
|
|
+ <el-col :span="24">
|
|
|
+ <el-form-item label="开始时间:" prop="start">
|
|
|
+ <el-select v-model="form.start" placeholder="请选择" style="width: 100%" clearable>
|
|
|
+ <el-option
|
|
|
+ v-for="item in selectDay"
|
|
|
+ :key="item"
|
|
|
+ :label="item"
|
|
|
+ :value="item">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="24">
|
|
|
+ <el-form-item label="结束时间:" prop="end">
|
|
|
+ <el-select v-model="form.end" placeholder="请选择" style="width: 100%" clearable>
|
|
|
+ <el-option
|
|
|
+ v-for="item in selectDay"
|
|
|
+ :key="item"
|
|
|
+ :label="item"
|
|
|
+ :value="item">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="24">
|
|
|
+ <el-form-item label="预测周期:" prop="periodpoint">
|
|
|
+ <el-select v-model="form.periodpoint" placeholder="请选择" style="width: 100%" multiple clearable>
|
|
|
+ <el-option
|
|
|
+ v-for="item in selectCycle"
|
|
|
+ :key="item.value"
|
|
|
+ :label="item.label"
|
|
|
+ :value="item.value">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="24">
|
|
|
+ <el-form-item label="预测人员:" prop="enterprisename">
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="24" :offset="2">
|
|
|
+ <div class="normal-title inline-16" style="font-size:14px;margin-right:10px" >部门</div>
|
|
|
+ <addDepartment class="inline-16" style="margin-bottom: 10px" @selectDepartment="selectDepartmentFun" ></addDepartment>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="24" :offset="2">
|
|
|
+ <el-table
|
|
|
+ ref="table"
|
|
|
+ :data="depData"
|
|
|
+ style="width: 90%"
|
|
|
+ height="200px"
|
|
|
+ size="mini"
|
|
|
+ border>
|
|
|
+ <el-table-column
|
|
|
+ prop="depno"
|
|
|
+ label="编号">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="depname"
|
|
|
+ label="部门">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="parentname"
|
|
|
+ label="上级部门">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ label="操作">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-button type="text" size="mini" @click="delDepartment(scope.row)">删 除</el-button>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="24" :offset="2" style="margin-top: 20px">
|
|
|
+ <div class="normal-title inline-16" style="font-size:14px;margin-right:10px" >组织内指定人员</div>
|
|
|
+ <addPeople :hrids="form.sales" class="inline-16" style="margin-bottom: 10px" @selectPeople="selectPeople" ></addPeople>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="24" :offset="2">
|
|
|
+ <el-table
|
|
|
+ ref="table"
|
|
|
+ :data="personData"
|
|
|
+ style="width: 90%"
|
|
|
+ height="200px"
|
|
|
+ size="mini"
|
|
|
+ border>
|
|
|
+ <el-table-column
|
|
|
+ prop="hrcode"
|
|
|
+ label="编号">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="name"
|
|
|
+ label="姓名">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="depname"
|
|
|
+ label="部门">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="position"
|
|
|
+ label="职位">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ label="操作">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-button type="text" size="mini" @click="delPerson(scope.row)">删 除</el-button>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="24" style="margin-top: 20px">
|
|
|
+ <el-form-item label="角色:" prop="enterprisename">
|
|
|
+ <el-select v-model="form.roles" placeholder="请选择" style="width: 100%" multiple clearable>
|
|
|
+ <el-option
|
|
|
+ v-for="item in listRole"
|
|
|
+ :key="item.roleid"
|
|
|
+ :label="item.remarks"
|
|
|
+ :value="item.roleid">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="24">
|
|
|
+ <el-form-item label="状态:" prop="enterprisename" style="margin: 10px 0px 0px 0px">
|
|
|
+ <el-radio v-model="form.status" label="开启">开启</el-radio>
|
|
|
+ <el-radio v-model="form.status" label="关闭">关闭</el-radio>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-form>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+ <div class="fixed__btn__panel">
|
|
|
+ <el-button size="small" @click="onClose" class="normal-btn-width inline-16">取 消</el-button>
|
|
|
+ <el-button size="small" type="primary" @click="onsubmit" class="normal-btn-width">确 定</el-button>
|
|
|
+ </div>
|
|
|
+ </el-drawer>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import addDepartment from './addDepartment'
|
|
|
+import addPeople from './addPeople'
|
|
|
+export default {
|
|
|
+ name: "edit",
|
|
|
+ props:["data"],
|
|
|
+ components:{addDepartment,addPeople},
|
|
|
+ data() {
|
|
|
+ var startTime = (rule,value,callback) => {
|
|
|
+ if (value === ''){
|
|
|
+ callback(new Error('请选择开始时间'))
|
|
|
+ }else {
|
|
|
+ if (this.form.end !== ''){
|
|
|
+ if (this.form.start > this.form.end){
|
|
|
+ callback(new Error('开始时间不能大于结束时间'))
|
|
|
+ }else {
|
|
|
+ callback()
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ callback()
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ var endtTime = (rule,value,callback) => {
|
|
|
+ if (value === ''){
|
|
|
+ callback(new Error('请选择开始时间'))
|
|
|
+ }else {
|
|
|
+ if (this.form.start !== ''){
|
|
|
+ if (this.form.start > this.form.end){
|
|
|
+ callback(new Error('结束时间不能小于开始时间'))
|
|
|
+ }else {
|
|
|
+ callback()
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ callback()
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return {
|
|
|
+ dialogVisible:false,
|
|
|
+ visiblePerson:false,
|
|
|
+ departmentids:[],
|
|
|
+ deplist:[],
|
|
|
+ depData:[],
|
|
|
+ personData:[],
|
|
|
+ listRole:[],
|
|
|
+ listPerson:[],
|
|
|
+ checkPerson:[],
|
|
|
+ roleShow:false,
|
|
|
+ depShow:false,
|
|
|
+ personShow:false,
|
|
|
+ checkRole:[],
|
|
|
+ roleName:[],
|
|
|
+ form:{
|
|
|
+ "sa_salesforecastmodelid": '',
|
|
|
+ "remarks": "",
|
|
|
+ "periodpoint": [],
|
|
|
+ "taskdays":[],
|
|
|
+ "sales":[],
|
|
|
+ "roles":[],
|
|
|
+ "departments":[],
|
|
|
+ "status":"",
|
|
|
+ "start":'',
|
|
|
+ "end":'',
|
|
|
+ },
|
|
|
+ rules:{
|
|
|
+ end:[
|
|
|
+ { required: true, validator:endtTime, trigger: 'change'},
|
|
|
+ ],
|
|
|
+ periodpoint:[
|
|
|
+ { required: true, message: '请选择预测周期', trigger: 'change'},
|
|
|
+ ],
|
|
|
+ start:[
|
|
|
+ { required: true, validator:startTime, trigger: 'change'},
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ selectDay:[],
|
|
|
+ selectCycle:[
|
|
|
+ {
|
|
|
+ value:'本月',
|
|
|
+ label:'本月'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ value:'次月',
|
|
|
+ label:'次月'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ value:'次次月',
|
|
|
+ label:'次次月'
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ param:{
|
|
|
+ "id": "20230705144104",
|
|
|
+ "content": {
|
|
|
+ "sa_salesforecastmodelid":''
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ methods:{
|
|
|
+ /*获取已选部门数据*/
|
|
|
+ async queryDepartment(){
|
|
|
+ this.departmentids = []
|
|
|
+ const res = await this.$api.requested({
|
|
|
+ "id": "20230705144404",
|
|
|
+ "content": {
|
|
|
+ "sa_salesforecastmodelid":this.data.sa_salesforecastmodelid,
|
|
|
+ "where":{
|
|
|
+ "condition":""
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ this.depData = res.data
|
|
|
+ console.log(this.depData,'已选部门')
|
|
|
+ this.form.departments = this.depData.map(item=>item.departmentid)
|
|
|
+ },
|
|
|
+ /*获取已选组织内人员*/
|
|
|
+ async queryPerson(){
|
|
|
+ this.hrids = []
|
|
|
+ const res = await this.$api.requested({
|
|
|
+ "id": "20230705144204",
|
|
|
+ "content": {
|
|
|
+ "sa_salesforecastmodelid":this.data.sa_salesforecastmodelid,
|
|
|
+ "where":{
|
|
|
+ "condition":""
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ console.log(res.data,'人员')
|
|
|
+ this.personData = res.data
|
|
|
+ this.form.sales = res.data.map(item=>item.hrid)
|
|
|
+ },
|
|
|
+ /*获取已选角色*/
|
|
|
+ async queryRole(){
|
|
|
+ const res = await this.$api.requested({
|
|
|
+ "id": "20230705144304",
|
|
|
+ "content": {
|
|
|
+ "sa_salesforecastmodelid":this.data.sa_salesforecastmodelid,
|
|
|
+ "where":{
|
|
|
+ "condition":""
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ console.log(res.data,'角色')
|
|
|
+ this.form.roles = res.data.map(item=>item.roleid)
|
|
|
+ },
|
|
|
+ /*获取所有部门*/
|
|
|
+ async departmentList(){
|
|
|
+ const res = await this.$api.requested({
|
|
|
+ "classname": "webmanage.department.department",
|
|
|
+ "method": "querydepartment",
|
|
|
+ "content": {
|
|
|
+ }
|
|
|
+ })
|
|
|
+ console.log(res.data,'所有部门')
|
|
|
+ this.personList(res.data[0].departmentid)
|
|
|
+ this.deplist = this.createMenu(res.data)
|
|
|
+ },
|
|
|
+ createMenu (array) {
|
|
|
+ var that = this
|
|
|
+ let arr = []
|
|
|
+ function convertToElementTree(node) {
|
|
|
+ // 新节点
|
|
|
+ if (node.subdep.length === 0){
|
|
|
+ var elNode = {
|
|
|
+ label: node["depname"],
|
|
|
+ parentid:node['parentid'],
|
|
|
+ parentname:node['parentname'],
|
|
|
+ departmentid:node["departmentid"],
|
|
|
+ value:node["departmentid"],
|
|
|
+ remarks:node["remarks"],
|
|
|
+ isused:node["isused"],
|
|
|
+ changedate:node['changedate'],
|
|
|
+ changeby:node['changeby'],
|
|
|
+ createdate:node['createdate'],
|
|
|
+ createby:node['createby'],
|
|
|
+ depno:node['depno'],
|
|
|
+ disabled:that.pageOnlyRead,
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ var elNode = {
|
|
|
+ label: node["depname"],
|
|
|
+ parentid:node['parentid'],
|
|
|
+ parentname:node['parentname'],
|
|
|
+ departmentid:node["departmentid"],
|
|
|
+ value:node["departmentid"],
|
|
|
+ remarks:node["remarks"],
|
|
|
+ isused:node["isused"],
|
|
|
+ changedate:node['changedate'],
|
|
|
+ changeby:node['changeby'],
|
|
|
+ createdate:node['createdate'],
|
|
|
+ createby:node['createby'],
|
|
|
+ depno:node['depno'],
|
|
|
+ disabled:that.pageOnlyRead,
|
|
|
+ children: []
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (node.subdep && node.subdep.length > 0) {
|
|
|
+ // 如果存在子节点
|
|
|
+ for (var index = 0; index < node.subdep.length; index++) {
|
|
|
+ // 遍历子节点, 把每个子节点看做一颗独立的树, 传入递归构造子树, 并把结果放回到新node的children中
|
|
|
+ elNode.children.push(convertToElementTree(node.subdep[index]));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return elNode;
|
|
|
+ }
|
|
|
+ array.forEach((element) => {
|
|
|
+ arr.push(convertToElementTree(element))
|
|
|
+ });
|
|
|
+ return arr
|
|
|
+ },
|
|
|
+ /*获取所有人员*/
|
|
|
+ async personList(id){
|
|
|
+ const res = await this.$api.requested({
|
|
|
+ "id": "20221102090303",
|
|
|
+ "content": {
|
|
|
+ "pageNumber": 1,
|
|
|
+ "pageSize": 9999,
|
|
|
+ "departmentids":[id],
|
|
|
+ "containssub":1,
|
|
|
+ "where": {
|
|
|
+ "condition": ""
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ console.log(res.data,'所有人员')
|
|
|
+ this.listPerson = res.data
|
|
|
+ },
|
|
|
+ /*获取所有权限*/
|
|
|
+ async roleList(){
|
|
|
+ const res = await this.$api.requested({
|
|
|
+ "id": "20221101131902",
|
|
|
+ "content": {
|
|
|
+ "pageNumber": 1,
|
|
|
+ "pageSize": 100,
|
|
|
+ "where": {
|
|
|
+ "condition": ""
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ console.log(res.data,'角色')
|
|
|
+ this.listRole = res.data
|
|
|
+ },
|
|
|
+ onEdit(){
|
|
|
+ console.log(this.data,'数据')
|
|
|
+ this.dialogVisible = true
|
|
|
+ this.daySet()
|
|
|
+ this.queryData()
|
|
|
+ this.departmentList()
|
|
|
+ this.roleList()
|
|
|
+ this.queryDepartment()
|
|
|
+ this.queryPerson()
|
|
|
+ this.queryRole()
|
|
|
+ },
|
|
|
+ daySet(){
|
|
|
+ let date = new Date()
|
|
|
+ let month = date.getMonth() + 1
|
|
|
+ this.selectDay = []
|
|
|
+ if (month === 1 || month === 3 || month === 5 || month === 7 || month === 8 || month === 10 || month === 12){
|
|
|
+ for (var i=0;i<30;i++){
|
|
|
+ this.selectDay[i] = i + 1
|
|
|
+ }
|
|
|
+ }else if (month === 4 || month === 6 || month === 9 || month === 11 ){
|
|
|
+ for (var i=0;i<29;i++){
|
|
|
+ this.selectDay[i] = i + 1
|
|
|
+ }
|
|
|
+ }else if (month === 2){
|
|
|
+ let year = date.getFullYear()
|
|
|
+ if ((year % 4 === 0 && year % 100 !==0) || (year % 100 === 0 && year % 400 === 0)){
|
|
|
+ for (var i=0;i<28;i++){
|
|
|
+ this.selectDay[i] = i + 1
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ for (var i=0;i<27;i++){
|
|
|
+ this.selectDay[i] = i + 1
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ async queryData(){
|
|
|
+ this.param.content.sa_salesforecastmodelid = this.data.sa_salesforecastmodelid
|
|
|
+ const res = await this.$api.requested(this.param)
|
|
|
+ this.form = Object.assign({},this.form,res.data)
|
|
|
+ this.form.periodpoint = JSON.parse(this.form.periodpoint)
|
|
|
+ this.form.taskdays = JSON.parse(this.form.taskdays)
|
|
|
+ this.form.start = this.form.taskdays[0]
|
|
|
+ this.form.end = this.form.taskdays[1]
|
|
|
+ console.log(this.form,'form表单数据')
|
|
|
+ },
|
|
|
+ selectDepartmentFun(val){
|
|
|
+ console.log(val)
|
|
|
+ let addDep = []
|
|
|
+ addDep = val.map(item=>item.departmentid)
|
|
|
+ this.form.departments = this.form.departments.concat(addDep)
|
|
|
+ console.log(this.form)
|
|
|
+ this.onList(2)
|
|
|
+ },
|
|
|
+ delDepartment(row){
|
|
|
+ for (var i=0;i<this.form.departments.length;i++){
|
|
|
+ if (this.form.departments[i] === row.departmentid){
|
|
|
+ this.form.departments.splice(i,1)
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ this.onList(2)
|
|
|
+ },
|
|
|
+ delPerson(row){
|
|
|
+ for (var i=0;i<this.form.sales.length;i++){
|
|
|
+ if (this.form.sales[i] === row.hrid){
|
|
|
+ this.form.sales.splice(i,1)
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ this.onList(1)
|
|
|
+ },
|
|
|
+ selectPeople(val){
|
|
|
+ console.log(val,'需要添加的人员')
|
|
|
+ let addPerson = []
|
|
|
+ addPerson = val.map(item=>item.hrid)
|
|
|
+ this.form.sales = this.form.sales.concat(addPerson)
|
|
|
+ console.log(this.form.sales,'人员信息112')
|
|
|
+ this.onList(1)
|
|
|
+ },
|
|
|
+ onList(id){
|
|
|
+ this.form.taskdays = [this.form.start,this.form.end]
|
|
|
+ this.$refs.form.validate(async (valid)=>{
|
|
|
+ if (!valid) return false
|
|
|
+ const res = await this.$api.requested({
|
|
|
+ "id": 20230705143904,
|
|
|
+ "content": this.form
|
|
|
+ })
|
|
|
+ if (id === 1){
|
|
|
+ this.queryPerson()
|
|
|
+ }else {
|
|
|
+ this.queryDepartment()
|
|
|
+ }
|
|
|
+
|
|
|
+ })
|
|
|
+ },
|
|
|
+ async onsubmit(){
|
|
|
+ this.form.taskdays = [this.form.start,this.form.end]
|
|
|
+ this.$refs.form.validate(async (valid)=>{
|
|
|
+ if (!valid) return false
|
|
|
+ const res = await this.$api.requested({
|
|
|
+ "id": 20230705143904,
|
|
|
+ "content": this.form
|
|
|
+ })
|
|
|
+ this.tool.showMessage(res,()=>{
|
|
|
+ this.dialogVisible = false
|
|
|
+ this.$emit('onEdit')
|
|
|
+ })
|
|
|
+
|
|
|
+ })
|
|
|
+
|
|
|
+ },
|
|
|
+ onClose(){
|
|
|
+ this.dialogVisible = false
|
|
|
+ this.$emit('onEdit')
|
|
|
+ }
|
|
|
+ },
|
|
|
+ mounted() {
|
|
|
+
|
|
|
+ }
|
|
|
+}
|
|
|
+</script>
|
|
|
+
|
|
|
+<style scoped>
|
|
|
+
|
|
|
+</style>
|